diff options
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | script/BuildLangModelLogs/LangHebrewModel.log | 526 | ||||
-rw-r--r-- | script/charsets/ibm862.py | 71 | ||||
-rw-r--r-- | script/langs/he.py | 2 | ||||
-rw-r--r-- | src/LangModels/LangHebrewModel.cpp | 304 | ||||
-rw-r--r-- | src/nsSBCSGroupProber.cpp | 298 | ||||
-rw-r--r-- | src/nsSBCSGroupProber.h | 2 | ||||
-rw-r--r-- | src/nsSBCharSetProber.h | 1 |
8 files changed, 661 insertions, 544 deletions
@@ -83,6 +83,7 @@ uchardet started as a C language binding of the original C++ implementation of t * UTF-8 * ISO-8859-8 * WINDOWS-1255 + * IBM862 * Hindi * UTF-8 * Hungarian: diff --git a/script/BuildLangModelLogs/LangHebrewModel.log b/script/BuildLangModelLogs/LangHebrewModel.log index 7d77ed5..fac1fe9 100644 --- a/script/BuildLangModelLogs/LangHebrewModel.log +++ b/script/BuildLangModelLogs/LangHebrewModel.log @@ -1,287 +1,285 @@ = Logs of language model for Hebrew (he) = - Generated by BuildLangModel.py -- Started: 2022-12-14 23:51:45.820761 +- Started: 2022-12-15 15:23:40.722736 - Maximum depth: 4 - Max number of pages: 200 == Parsed pages == יהדות_בוקרשט (revision 35182799) -22 במרץ (revision 34452506) -אלכסנדר איפסילנטי (הנכד) (revision 34666729) -1812 (revision 25165786) -ולאכים (revision 34292795) -לאזאר שינאנו (revision 28852393) -1857 (revision 26643435) -פסח (revision 35070750) -אירופה (revision 35154728) -אוסטרו-הונגריה (revision 35232497) -1918 (revision 34819769) -טרנסילבניה (revision 34937962) -גאלאץ (revision 35110599) -5 במרץ (revision 34881550) -4 בנובמבר (revision 34653109) -י' באדר (revision 34929200) -צ'כוסלובקיה (revision 35018067) -1813 (revision 35224967) -מונטניה (revision 32867963) -איחוד הנסיכויות הרומניות (revision 34573782) -ורסאי (revision 33228948) -התעמלות (revision 33465424) -גסטה הונגרורום (revision 34050008) -ערב פסח (revision 34567652) -נס (revision 35036327) +בית כלא (revision 35227881) +יעקב אלמולי (revision 35001208) +טודור ולדימירסקו (revision 29886791) +בלקן (revision 33993972) +גזירות ת"ח ת"ט (revision 34763839) +סילביו ברוקאן (revision 29510407) +1912 (revision 33159662) +צבא (revision 34619941) +שיטת ספריית הקונגרס (revision 30163525) +מרסל ינקו (revision 34359400) +פנקס הקהילות (revision 34615712) +יעקב פסנתיר (revision 33120540) +בוקרשט (revision 35173617) +יהדות לוב (revision 34775645) +מדרג (revision 34420008) קובץ בקרה משולב (revision 34980719) -דימיטריוס איפסילנטי (revision 30504939) -אפריקה (revision 35211326) -דנובה (revision 35092661) -אוקראינה (revision 35229535) -גיבור לאומי (revision 34626677) -2022 (revision 35212298) -בית הבסבורג (revision 35149190) -הספרייה הלאומית של יוון (revision 34171107) -חנינה (revision 34701982) -קיבוץ (revision 35167035) -ט"ו באייר (revision 33760929) -פלנדריה (revision 33811227) -978 (revision 34219188) -קרואטיה (revision 35208639) -28 בדצמבר (revision 35110007) -ספטאר (revision 19132086) -מצבות (revision 35144605) -אתונה (revision 35225868) -המפלגה הרפובליקנית (revision 35075441) -ויקישיתוף (revision 34805938) -23 בדצמבר (revision 35039131) -האימפריה הביזנטית (revision 35036469) -אוסטריה (revision 35099816) -כ"ו בסיוון (revision 34929226) -בית עלמין (revision 34251157) -24 במרץ (revision 34871871) -הספרייה הלאומית של שוודיה (revision 33961967) -פיימונטה (revision 32640611) -אנציקלופדיה בריטניקה (revision 35145787) -קרן ויקימדיה (revision 35175443) -קונרד פון הצנדורף (revision 34979858) -STS-3 (revision 35050894) -אלברט בגר (revision 34720226) -ראש השנה (revision 35059458) -ספרות (revision 35203120) -קרואטית (revision 32668378) -WorldCat (revision 34980710) -המאה ה-11 (revision 34809813) -1910-1919 (revision 35049268) -אנדריי הקדוש (revision 34598498) -מיכאיל השני (revision 34445805) -קולונל (revision 34566784) -ז' באייר (revision 33760918) -כ"ג בתשרי (revision 34235305) -אזור זמן (revision 35002518) -13 ביוני (revision 35157854) +צבא קבע (revision 34044374) +עברית (revision 35171043) +2003 (revision 34884225) +תומאס ג'פרסון (revision 35144907) +אפגניסטן (revision 35015482) +טנק (revision 34805353) +21 באפריל (revision 34869840) רומנית (revision 35154129) -סורבון (revision 34389722) -סגן-אלוף (revision 35196592) -מורש (revision 32633346) -אוניברסיטת לייפציג (revision 34568149) -5 בדצמבר (revision 35190389) -ולשים (revision 34848696) -הספרייה הלאומית של לטביה (revision 34633898) -תנור מיקרוגל (revision 34792045) -יאשי (revision 34273547) -אלבה יוליה (revision 33226243) -יוון העתיקה (revision 35186156) -ימי הביניים (revision 35195331) -2016 (revision 33649777) -סרבית (revision 32666563) -א' בתשרי (revision 35012340) -גרמניה (revision 35193278) -1946 (revision 34549625) -צי הים השחור (revision 34799823) -13 באוגוסט (revision 35146746) -קולוניאליזם (revision 35161793) -רקדן (revision 34022227) -פינלנד (revision 35217495) -יין (revision 35158494) -הלוח העברי (revision 35191477) -כ"ט באייר (revision 34566795) -איכר (revision 35209785) -יואניס קפודיסטריאס (revision 32537246) -28 בספטמבר (revision 34764952) -22 ביוני (revision 35068229) -נצרות אורתודוקסית (revision 35181856) -חבל ארץ (revision 34910269) -שובבי"ם (revision 33243828) -צפצפה (revision 34734441) -אינגמר ברגמן (revision 34902789) -הספרייה הלאומית של צרפת (revision 34954915) -1877 (revision 27881506) -ו' בטבת (revision 34968733) -ממלכת הונגריה (revision 34874665) -מדינת זלצבורג (revision 33184168) -13 באפריל (revision 35224094) -85 (revision 30174062) -רומניה (revision 35063882) -רש"י (revision 35059927) -טימישוארה (revision 35029927) -15 בפברואר (revision 35158681) +מערב אירופה (revision 35029137) +פינסק (revision 34882043) +בית סוהר גבעון (revision 34787725) +הקהילה היהודית הספרדית בבוקרשט (revision 32942838) +קומוניזם (revision 34968105) +אנרגיה (revision 35140939) +ספריית הוותיקן (revision 32639141) +לאו רומני (revision 34364476) +תותח (revision 35035899) +כ' בסיוון (revision 34741740) +Union List of Artist Names (revision 34992334) +בנימין גלאי (revision 33202928) +חיל הנדסה (revision 33949573) +25 באוגוסט (revision 34821302) +אנה טיכו (revision 34831809) +חייל (revision 35206828) +הלאמה (revision 34453859) +קלוויניסט (revision 34763753) +רפואה (revision 35157098) +תלמוד תורה (revision 35216490) +23 בינואר (revision 35038971) +מלחמת העולם הראשונה (revision 35191080) +כוחות מילואים (revision 32714547) +גרמנית (revision 35085309) +אוטודידקט (revision 34614272) +דיוויזיית מתנדבים 1, טודור ולדימירסקו (revision 28599203) +זית (revision 35159584) +יהדות רומניה (revision 34919407) +צבי לוקר (revision 34639828) +WorldCat (revision 34980710) +ספרי יזכור (revision 34570622) +דת (revision 35160267) +גזירות תתנ"ו (revision 34939752) +פרו (revision 35228614) +הארץ (revision 35234211) הספרייה הלאומית (revision 35173909) -פולנית (revision 35067795) -אנשלוס (revision 34458944) -כ"ד באב (revision 34889013) -דומיטיאנוס (revision 35185961) -קונסטנטין איפסילנטי (revision 31063233) -הלוח הקראי (revision 33599480) -פניני הלכה (revision 34937953) -כ"ז באדר (revision 33868660) -23 באפריל (revision 35127136) -ניו יורק (revision 35216514) -הארכיון הלאומי של ארצות הברית (revision 33086492) -הספרייה הלאומית של הולנד (revision 34603407) -ארומנים (revision 35094875) -1935 (revision 34549609) -1988 (revision 32747522) -ויליאם מרסי (revision 32555101) -26 ביולי (revision 34638841) -דלמטיה (revision 32779937) -מצרים (revision 35232714) -19 במרץ (revision 34288440) -10 באוגוסט (revision 35202828) -קרחון (revision 33190499) -לגיון הכבוד (revision 32631175) -מועצת האיחוד האירופי (revision 34940586) -ים מרמרה (revision 34966060) -ארמית (revision 35199208) -פלוישט (revision 33480182) +בויאר (revision 34292683) +נפוליאון בונפרטה (revision 35212132) +העולם השלישי (revision 34866022) +פנדורים (revision 22519224) +קושטא (revision 34914083) +תענית ציבור (revision 35122402) +י"ט באייר (revision 33760934) +דוד רובינגר (revision 34618241) +1886 (revision 30398678) +9 במרץ (revision 35039056) +1855 (revision 34224046) +מרד הלגיונרים ופרעות בוקרשט (revision 35067329) +1966 (revision 34533574) +יווני (revision 34012584) +אוניברסיטת בוקרשט (revision 35188136) +בוסניה והרצגובינה (revision 35162864) +נצרות (revision 35210877) +כלא שש (revision 35057829) +אלפרד מנספלד (revision 35050837) +אות (revision 34005221) +י"א באייר (revision 34914962) +5 באפריל (revision 35157784) +ישראל (revision 35213935) +קיילצה (revision 33935006) +לותרני (revision 35064164) +יום ראשון (revision 34281448) +יהדות איטליה (revision 35198843) +פרס דיזנגוף (revision 34534024) +ה' בסיוון (revision 34566809) +ח' בטבת (revision 35079706) +האימפריה הרומית (revision 35119178) +שגריר (revision 34965857) +דן מכמן (revision 34522541) +הספרייה הלאומית של צרפת (revision 34954915) +דן ריזינגר (revision 34757254) +אסטרטגיה צבאית (revision 35069854) +אביבה ברושי (revision 35050673) +טורקית (revision 34730801) +11 במאי (revision 34445764) +רב (revision 35062888) +וולוז'ין (revision 35024306) +ולאכיה (revision 33077945) +יהדות הולנד (revision 33771623) +אנגלית (revision 35222539) +אוסטרליה (revision 35084368) +חוק (revision 35117792) +נצרות אורתודוקסית (revision 35181856) +שבתאות (revision 35118251) +הספרייה הלאומית של צ'כיה (revision 34679038) +שימוש הוגן (revision 34698539) +המאה ה-19 (revision 35228599) +אולטניה (revision 35181527) +תולדות עם ישראל (revision 35227911) +1999 (revision 34550725) +טוגאי ביי (revision 29009639) +בית הדין העממי (רומניה) (revision 29292417) +יהדות (revision 35238551) +מוסלמים (revision 35186931) +סלובניה (revision 34076843) +1944 (revision 33848050) +VIAF (revision 34992335) +יחיאל שמי (revision 35169033) +משפחת אוסטרוגסקי (revision 27522789) +בוהמיה (revision 34774081) +גולאג (revision 33926313) +משה מוקדי (revision 33579655) +קרן ויקימדיה (revision 35175443) +ב' באלול (revision 33761030) +רגולציה (revision 35168860) +הקהילה היהודית הספרדית ברומניה (revision 32942827) +הרתעה (אסטרטגיה) (revision 34184585) +נובוגרודק (revision 34333750) +מודל צבא העם (revision 34762715) +מלחמת העולם השנייה (revision 35218209) +חשוון (revision 35214064) +1875 (revision 25165857) +ליידי בירד ג'ונסון (revision 35156176) +הספרייה הלאומית של ספרד (revision 34172052) +רבנים (revision 16968274) +בית סוהר מגידו (revision 33202574) +גליציה (revision 34740074) +יהדות בלארוס (revision 34770618) +יהודים (revision 35220685) +עמירם תמרי (revision 33235872) +יהדות ליטא (revision 35062246) +עלייה לרגל (revision 34764674) +המועצה לישראל יפה (revision 34627430) +יום שישי (revision 34737763) +ג'מייקה (revision 35022818) +למ"ד (revision 34438979) +שיעה (revision 35141725) +1987 (revision 32747521) +שיטפון (revision 34831666) +פרסית (revision 35135705) +קניין רוחני (revision 34598306) +תסריטאי (revision 34389192) +גשם (revision 35214991) +קצין (revision 35189304) +שמואל וודניצקי (revision 33250304) +בית חיים (revision 35213536) +אליעזר פאפו (revision 34907056) +יצחק דנציגר (revision 35163501) +ירמיהו (revision 35170413) +אלכסנדר סוורוס (revision 34549496) +יוליסס סימפסון גרנט (revision 35099753) +אלפבית עברי (revision 35167195) +יום השבת (revision 32714481) +ספרד (revision 35240234) +קרואטיה (revision 35208639) +יום כיפור קטן (revision 34566029) +דתיים לאומיים (revision 35191810) +לוניניץ (revision 34618951) +מנצ'וריה (revision 35213350) +ולנטיניאנוס הראשון (revision 35183518) מערכת התיעוד האוניברסיטאית (צרפת) (revision 34033122) -ט"ז בתשרי (revision 34975870) -תשרי (revision 35214048) -2015 (revision 33078518) -1 בספטמבר (revision 34604999) -רועה צאן (revision 35190455) -מסחר (revision 35199982) -לילה טרטיקוב (revision 34247187) -נסיכות מולדובה (revision 34307667) -שפות קלטיות (revision 32669163) -2 במרץ (revision 34881461) -אביר (revision 35210360) -יוחנן בן זבדי (revision 34992438) -טומס לייטרסדורף (revision 34885446) -לשון סגי נהור (revision 33284044) -רפורמציה (revision 34057367) -רומאני (שפה) (revision 32668582) -גרוסגלוקנר (revision 33563588) -בירגיט אנטונסן (revision 30296687) -ועידת ניקיאה (revision 32627552) -סרט קולנוע (revision 35150502) -הונגרית (revision 35067792) -המנון אוסטריה (revision 35025960) -אדוארד טיצ'נר (revision 30414251) -823 (revision 34214879) -אנו (פרובינציה) (revision 34152356) -שוקולד (revision 35227942) -24 בפברואר (revision 35197344) -אוצר דינים ומנהגים (revision 29520131) -מלחמת העצמאות (revision 35192826) -כ"ח בתשרי (revision 33760633) -1910 (revision 25165898) -טורפים (revision 35208149) -ו' בתשרי (revision 33760609) -ישיבת פוניבז' לצעירים (revision 35205466) -12 במאי (revision 35141724) -בולגריה (revision 35214066) -דאקיה (revision 35210657) -איטליה (revision 35204156) -אריה ניר הוצאה לאור (revision 35013765) -אוניברסיטת שטרסבורג (revision 34977931) -משרד המסחר והתעשייה (revision 35216585) -1836 (revision 25165811) -חסידות זידיטשוב (revision 35178483) -בקר הבית (revision 35234239) -פסיכיאטר (revision 34428172) -י"ב באייר (revision 34444494) -יהדות גרמניה (revision 34989399) +מוזיאון תל אביב (revision 34779076) +חוזה פריז (1783) (revision 34280442) +דיקטטורה (revision 34987941) ++ (revision 34951817) +יוני (revision 33963139) +כ"ג בסיוון (revision 34929216) +דרג דיפלומטי (revision 33574252) +אנציקלופדיה בריטניקה (revision 35145787) +וגטיוס (revision 33391266) +מהרי"ל (revision 34613180) +מוזיאון סטדלייק (revision 33770681) +ספרייה דיגיטלית (revision 34044215) +עיצור שפתי-שיני, אפי (revision 34158419) +פסנתרן (revision 34558921) +צבא אוסטרליה (revision 34306538) +בוואריה (revision 35069866) == End of Parsed pages == -- Wikipedia parsing ended at: 2022-12-14 23:55:24.013499 +- Wikipedia parsing ended at: 2022-12-15 15:27:25.018656 -80 characters appeared 1484111 times. +94 characters appeared 1622917 times. Most Frequent characters: -[ 0] Char י: 12.060486041812236 % -[ 1] Char ו: 11.073026208956069 % -[ 2] Char ה: 8.602254144063348 % -[ 3] Char ר: 6.503556674669213 % -[ 4] Char ל: 6.033106688111603 % -[ 5] Char ב: 5.481800215752056 % -[ 6] Char ת: 5.432208237793534 % -[ 7] Char מ: 5.147728168580382 % -[ 8] Char א: 4.6662951760346765 % -[ 9] Char ש: 4.158988108032351 % -[10] Char נ: 3.8866365116894896 % -[11] Char ם: 2.7109832081293113 % -[12] Char ד: 2.617054923789393 % -[13] Char ע: 2.4286593118708772 % -[14] Char ק: 2.396788380383947 % -[15] Char פ: 2.263846841644594 % -[16] Char ח: 2.159339833745589 % -[17] Char ס: 2.0885230282640586 % -[18] Char כ: 1.8159019103018574 % -[19] Char ט: 1.6087745458392262 % -[20] Char ג: 1.4954407049068432 % -[21] Char צ: 1.2486262819964276 % -[22] Char ן: 1.2011230965877888 % -[23] Char ז: 0.8258142416571267 % -[24] Char ך: 0.3579920908880805 % -[25] Char ף: 0.19762672738090342 % -[26] Char ץ: 0.1861046781541273 % -[27] Char e: 0.1302463225459551 % -[28] Char a: 0.12243019558510111 % -[29] Char i: 0.11131242878733463 % -[30] Char r: 0.08961593843048128 % -[31] Char n: 0.08665120061774355 % -[32] Char o: 0.07634199867799646 % -[33] Char t: 0.07108632710087048 % -[34] Char l: 0.06502209066572515 % -[35] Char s: 0.06151830961430783 % -[36] Char u: 0.05019840160203651 % -[37] Char c: 0.039350156423609825 % -[38] Char d: 0.035576853752852716 % -[39] Char m: 0.03463352808516344 % -[40] Char h: 0.023583141692231916 % -[41] Char g: 0.02250505521487274 % -[42] Char C: 0.01866437213928069 % -[43] Char v: 0.017653666066756463 % -[44] Char p: 0.017653666066756463 % -[45] Char A: 0.01610391675555265 % -[46] Char S: 0.016036536350717702 % -[47] Char b: 0.01576701473137791 % -[48] Char I: 0.01563225392170801 % -[49] Char y: 0.013880363395999356 % -[50] Char T: 0.013476080966989665 % -[51] Char B: 0.013273939752484821 % -[52] Char D: 0.013273939752484821 % -[53] Char M: 0.013004418133145026 % -[54] Char k: 0.012734896513805235 % -[55] Char f: 0.012397994489630491 % -[56] Char P: 0.010039680320407302 % -[57] Char E: 0.009770158701067507 % -[58] Char G: 0.009500637081727714 % -[59] Char L: 0.009365876272057818 % -[60] Char N: 0.00929849586722287 % -[61] Char R: 0.008422550604368542 % -[62] Char F: 0.0070075621028346255 % -[63] Char z: 0.006940181697999678 % +[ 0] Char י: 11.931047613648756 % +[ 1] Char ו: 11.230395639456608 % +[ 2] Char ה: 8.702909637399818 % +[ 3] Char ר: 6.166673958064399 % +[ 4] Char ל: 6.0917471441854385 % +[ 5] Char ת: 5.755007803849488 % +[ 6] Char ב: 5.319434080732409 % +[ 7] Char מ: 5.124476482777616 % +[ 8] Char א: 4.594258363181851 % +[ 9] Char ש: 4.086160906565154 % +[10] Char נ: 3.7032700994567187 % +[11] Char ם: 2.782397374603877 % +[12] Char ד: 2.615537331853693 % +[13] Char ע: 2.5096785602714125 % +[14] Char ק: 2.2712806631515967 % +[15] Char פ: 2.233139464310251 % +[16] Char ח: 2.124939229794253 % +[17] Char ס: 2.0344232021723845 % +[18] Char כ: 1.8796401787645332 % +[19] Char ט: 1.596261546339092 % +[20] Char ג: 1.5693347226013405 % +[21] Char צ: 1.2939663581070382 % +[22] Char ן: 1.2081948737982287 % +[23] Char ז: 0.8376275558146227 % +[24] Char ך: 0.3550397216863216 % +[25] Char ף: 0.2127034222945474 % +[26] Char e: 0.16427211003396971 % +[27] Char ץ: 0.15817198291717938 % +[28] Char a: 0.14005645390368085 % +[29] Char i: 0.12958148814757625 % +[30] Char n: 0.10296275163794574 % +[31] Char r: 0.10246981207295258 % +[32] Char t: 0.08983823572000293 % +[33] Char o: 0.08287546436447459 % +[34] Char s: 0.08238252479948142 % +[35] Char l: 0.06894992165341789 % +[36] Char u: 0.052744533454267835 % +[37] Char c: 0.04947880883618817 % +[38] Char d: 0.0451039701968739 % +[39] Char h: 0.04196148047004252 % +[40] Char m: 0.03327342063703812 % +[41] Char g: 0.023414629337174975 % +[42] Char p: 0.023291394445926684 % +[43] Char y: 0.0219358106421955 % +[44] Char b: 0.020025669827847016 % +[45] Char C: 0.01990243493659873 % +[46] Char A: 0.017930676676626102 % +[47] Char B: 0.017437737111632944 % +[48] Char I: 0.017437737111632944 % +[49] Char k: 0.017437737111632944 % +[50] Char v: 0.016390240536022484 % +[51] Char f: 0.01632862309039834 % +[52] Char S: 0.015958918416653468 % +[53] Char M: 0.014418482276049855 % +[54] Char D: 0.013432603146063538 % +[55] Char T: 0.013186133363566959 % +[56] Char L: 0.012754811244197948 % +[57] Char P: 0.012508341461701369 % +[58] Char R: 0.010906287875473607 % +[59] Char E: 0.010598200647352883 % +[60] Char z: 0.010536583201728738 % +[61] Char w: 0.010474965756104595 % +[62] Char N: 0.009304234289245846 % +[63] Char G: 0.0086880598330044 % -The first 64 characters have an accumulated ratio of 0.9994865613151579. -The first 5 characters have an accumulated ratio of 0.44272429757612475. -All characters whose order is over 21 have an accumulated ratio of 0.04068630985148685. +The first 64 characters have an accumulated ratio of 0.9992796920606537. +The first 5 characters have an accumulated ratio of 0.4412277399275502. +All characters whose order is over 22 have an accumulated ratio of 0.031037939709794155. -1571 sequences found. +1640 sequences found. -First 663 (typical positive ratio): 0.9950033744779837 -Next 339 (1002-663): 0.003997985590807662 -Rest: 0.0009986399312086336 +First 688 (typical positive ratio): 0.9950129360753337 +Next 328 (1016-688): 0.0039909002477918065 +Rest: 0.0009961636768744953 -- Processing end: 2022-12-14 23:55:24.184437 +- Processing end: 2022-12-15 15:27:25.183725 diff --git a/script/charsets/ibm862.py b/script/charsets/ibm862.py new file mode 100644 index 0000000..762aa57 --- /dev/null +++ b/script/charsets/ibm862.py @@ -0,0 +1,71 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# ##### BEGIN LICENSE BLOCK ##### +# Version: MPL 1.1/GPL 2.0/LGPL 2.1 +# +# The contents of this file are subject to the Mozilla Public License Version +# 1.1 (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# http://www.mozilla.org/MPL/ +# +# Software distributed under the License is distributed on an "AS IS" basis, +# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +# for the specific language governing rights and limitations under the +# License. +# +# The Original Code is Mozilla Universal charset detector code. +# +# The Initial Developer of the Original Code is +# Netscape Communications Corporation. +# Portions created by the Initial Developer are Copyright (C) 2001 +# the Initial Developer. All Rights Reserved. +# +# Contributor(s): +# Jehan <jehan@girinstud.io> +# +# Alternatively, the contents of this file may be used under the terms of +# either the GNU General Public License Version 2 or later (the "GPL"), or +# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +# in which case the provisions of the GPL or the LGPL are applicable instead +# of those above. If you wish to allow use of your version of this file only +# under the terms of either the GPL or the LGPL, and not to allow others to +# use your version of this file under the terms of the MPL, indicate your +# decision by deleting the provisions above and replace them with the notice +# and other provisions required by the GPL or the LGPL. If you do not delete +# the provisions above, a recipient may use your version of this file under +# the terms of any one of the MPL, the GPL or the LGPL. +# +# ##### END LICENSE BLOCK ##### + +from codepoints import * + +name = 'IBM862' +aliases = ['CP862', 'OEM 862 (Hebrew)', 'MS-DOS Hebrew'] + +language = \ +{ + 'complete': [ 'he' ], + 'incomplete': [] +} + +# X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 XA XB XC XD XE XF # +charmap = \ +[ + CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,RET,CTR,CTR,RET,CTR,CTR, # 0X + CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR, # 1X + SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, # 2X + NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,SYM,SYM,SYM,SYM,SYM,SYM, # 3X + SYM,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET, # 4X + LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,SYM,SYM,SYM,SYM,SYM, # 5X + SYM,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET, # 6X + LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,SYM,SYM,SYM,SYM,CTR, # 7X + LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET, # 8X + LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,SYM,SYM,SYM,SYM,LET, # 9X + LET,LET,LET,LET,LET,LET,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, # AX + SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, # BX + SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, # CX + SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, # DX + LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,LET,SYM,LET,LET,SYM, # EX + SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, # FX +] diff --git a/script/langs/he.py b/script/langs/he.py index 23713cc..1aa77be 100644 --- a/script/langs/he.py +++ b/script/langs/he.py @@ -49,7 +49,7 @@ name = 'Hebrew' code = 'he' use_ascii = False # The charsets we want to support and create data for. -charsets = ['ISO-8859-8', 'WINDOWS-1255'] +charsets = ['ISO-8859-8', 'WINDOWS-1255', 'IBM862'] ## Optional Properties ## diff --git a/src/LangModels/LangHebrewModel.cpp b/src/LangModels/LangHebrewModel.cpp index 33b857e..91327ec 100644 --- a/src/LangModels/LangHebrewModel.cpp +++ b/src/LangModels/LangHebrewModel.cpp @@ -42,7 +42,7 @@ /** * Generated by BuildLangModel.py - * On: 2022-12-14 23:55:24.014547 + * On: 2022-12-15 15:27:25.018997 **/ /* Character Mapping Table: @@ -68,18 +68,18 @@ static const unsigned char Iso_8859_8_CharToOrderMap[] = CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR, /* 1X */ SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* 2X */ NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,SYM,SYM,SYM,SYM,SYM,SYM, /* 3X */ - SYM, 45, 51, 42, 52, 57, 62, 58, 67, 48, 72, 70, 59, 53, 60, 64, /* 4X */ - 56, 78, 61, 46, 50, 65, 66, 69, 76, 74, 77,SYM,SYM,SYM,SYM,SYM, /* 5X */ - SYM, 28, 47, 37, 38, 27, 55, 41, 40, 29, 73, 54, 34, 39, 31, 32, /* 6X */ - 44, 75, 30, 35, 33, 36, 43, 68, 71, 49, 63,SYM,SYM,SYM,SYM,CTR, /* 7X */ + SYM, 46, 47, 45, 54, 59, 66, 63, 69, 48, 67, 72, 56, 53, 62, 68, /* 4X */ + 57, 80, 58, 52, 55, 64, 65, 70, 74, 73, 77,SYM,SYM,SYM,SYM,SYM, /* 5X */ + SYM, 28, 44, 37, 38, 26, 51, 41, 39, 29, 75, 49, 35, 40, 30, 33, /* 6X */ + 42, 76, 31, 34, 32, 36, 50, 61, 71, 43, 60,SYM,SYM,SYM,SYM,CTR, /* 7X */ CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR, /* 8X */ CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR, /* 9X */ SYM,CTR,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* AX */ - SYM,SYM,SYM,SYM,SYM, 80,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,CTR, /* BX */ + SYM,SYM,SYM,SYM,SYM, 94,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,CTR, /* BX */ CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR, /* CX */ CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,SYM, /* DX */ - 8, 5, 20, 12, 2, 1, 23, 16, 19, 0, 24, 18, 4, 11, 7, 22, /* EX */ - 10, 17, 13, 25, 15, 26, 21, 14, 3, 9, 6,CTR,CTR,SYM,SYM,CTR, /* FX */ + 8, 6, 20, 12, 2, 1, 23, 16, 19, 0, 24, 18, 4, 11, 7, 22, /* EX */ + 10, 17, 13, 25, 15, 27, 21, 14, 3, 9, 5,CTR,CTR,SYM,SYM,CTR, /* FX */ }; /*X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 XA XB XC XD XE XF */ @@ -89,173 +89,194 @@ static const unsigned char Windows_1255_CharToOrderMap[] = CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR, /* 1X */ SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* 2X */ NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,SYM,SYM,SYM,SYM,SYM,SYM, /* 3X */ - SYM, 45, 51, 42, 52, 57, 62, 58, 67, 48, 72, 70, 59, 53, 60, 64, /* 4X */ - 56, 78, 61, 46, 50, 65, 66, 69, 76, 74, 77,SYM,SYM,SYM,SYM,SYM, /* 5X */ - SYM, 28, 47, 37, 38, 27, 55, 41, 40, 29, 73, 54, 34, 39, 31, 32, /* 6X */ - 44, 75, 30, 35, 33, 36, 43, 68, 71, 49, 63,SYM,SYM,SYM,SYM,CTR, /* 7X */ - SYM,CTR,SYM, 81,SYM,SYM,SYM,SYM, 82,SYM,CTR,SYM,CTR,CTR,CTR,CTR, /* 8X */ + SYM, 46, 47, 45, 54, 59, 66, 63, 69, 48, 67, 72, 56, 53, 62, 68, /* 4X */ + 57, 80, 58, 52, 55, 64, 65, 70, 74, 73, 77,SYM,SYM,SYM,SYM,SYM, /* 5X */ + SYM, 28, 44, 37, 38, 26, 51, 41, 39, 29, 75, 49, 35, 40, 30, 33, /* 6X */ + 42, 76, 31, 34, 32, 36, 50, 61, 71, 43, 60,SYM,SYM,SYM,SYM,CTR, /* 7X */ + SYM,CTR,SYM, 95,SYM,SYM,SYM,SYM, 96,SYM,CTR,SYM,CTR,CTR,CTR,CTR, /* 8X */ CTR,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,CTR,SYM,CTR,CTR,CTR,CTR, /* 9X */ - SYM,SYM,SYM,SYM, 83,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* AX */ - SYM,SYM,SYM,SYM,SYM, 84,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* BX */ + SYM,SYM,SYM,SYM, 97,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* AX */ + SYM,SYM,SYM,SYM,SYM, 98,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* BX */ SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* CX */ - SYM,SYM,SYM,SYM, 85, 86, 79,SYM,SYM,CTR,CTR,CTR,CTR,CTR,CTR,CTR, /* DX */ - 8, 5, 20, 12, 2, 1, 23, 16, 19, 0, 24, 18, 4, 11, 7, 22, /* EX */ - 10, 17, 13, 25, 15, 26, 21, 14, 3, 9, 6,CTR,CTR,SYM,SYM,CTR, /* FX */ + SYM,SYM,SYM,SYM, 99,100, 88,SYM,SYM,CTR,CTR,CTR,CTR,CTR,CTR,CTR, /* DX */ + 8, 6, 20, 12, 2, 1, 23, 16, 19, 0, 24, 18, 4, 11, 7, 22, /* EX */ + 10, 17, 13, 25, 15, 27, 21, 14, 3, 9, 5,CTR,CTR,SYM,SYM,CTR, /* FX */ +}; +/*X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 XA XB XC XD XE XF */ + +static const unsigned char Ibm862_CharToOrderMap[] = +{ + CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,RET,CTR,CTR,RET,CTR,CTR, /* 0X */ + CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR,CTR, /* 1X */ + SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* 2X */ + NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,NUM,SYM,SYM,SYM,SYM,SYM,SYM, /* 3X */ + SYM, 46, 47, 45, 54, 59, 66, 63, 69, 48, 67, 72, 56, 53, 62, 68, /* 4X */ + 57, 80, 58, 52, 55, 64, 65, 70, 74, 73, 77,SYM,SYM,SYM,SYM,SYM, /* 5X */ + SYM, 28, 44, 37, 38, 26, 51, 41, 39, 29, 75, 49, 35, 40, 30, 33, /* 6X */ + 42, 76, 31, 34, 32, 36, 50, 61, 71, 43, 60,SYM,SYM,SYM,SYM,CTR, /* 7X */ + 8, 6, 20, 12, 2, 1, 23, 16, 19, 0, 24, 18, 4, 11, 7, 22, /* 8X */ + 10, 17, 13, 25, 15, 27, 21, 14, 3, 9, 5,SYM,SYM,SYM,SYM,101, /* 9X */ + 81, 86, 78, 89, 82,102,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* AX */ + SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* BX */ + SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* CX */ + SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* DX */ + 83, 79,103, 90, 92, 84,104, 85,105, 91,106, 93,SYM,107, 87,SYM, /* EX */ + SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM,SYM, /* FX */ }; /*X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 XA XB XC XD XE XF */ static const int Unicode_Char_size = 64; static const unsigned int Unicode_CharOrder[] = { - 65, 45, 66, 51, 67, 42, 68, 52, 69, 57, 70, 62, 71, 58, 73, 48, - 76, 59, 77, 53, 78, 60, 80, 56, 82, 61, 83, 46, 84, 50, 97, 28, - 98, 47, 99, 37, 100, 38, 101, 27, 102, 55, 103, 41, 104, 40, 105, 29, - 107, 54, 108, 34, 109, 39, 110, 31, 111, 32, 112, 44, 114, 30, 115, 35, - 116, 33, 117, 36, 118, 43, 121, 49, 122, 63, 1488, 8, 1489, 5,1490, 20, + 65, 46, 66, 47, 67, 45, 68, 54, 69, 59, 71, 63, 73, 48, 76, 56, + 77, 53, 78, 62, 80, 57, 82, 58, 83, 52, 84, 55, 97, 28, 98, 44, + 99, 37, 100, 38, 101, 26, 102, 51, 103, 41, 104, 39, 105, 29, 107, 49, + 108, 35, 109, 40, 110, 30, 111, 33, 112, 42, 114, 31, 115, 34, 116, 32, + 117, 36, 118, 50, 119, 61, 121, 43, 122, 60, 1488, 8, 1489, 6,1490, 20, 1491, 12, 1492, 2, 1493, 1, 1494, 23, 1495, 16, 1496, 19, 1497, 0,1498, 24, 1499, 18, 1500, 4, 1501, 11, 1502, 7, 1503, 22, 1504, 10, 1505, 17,1506, 13, - 1507, 25, 1508, 15, 1509, 26, 1510, 21, 1511, 14, 1512, 3, 1513, 9,1514, 6, + 1507, 25, 1508, 15, 1509, 27, 1510, 21, 1511, 14, 1512, 3, 1513, 9,1514, 5, }; /* Model Table: - * Total considered sequences: 1571 / 4096 - * - Positive sequences: first 663 (0.9950033744779837) - * - Probable sequences: next 339 (1002-663) (0.003997985590807662) - * - Neutral sequences: last 3094 (0.0009986399312086336) - * - Negative sequences: 2525 (off-ratio) + * Total considered sequences: 1640 / 4096 + * - Positive sequences: first 688 (0.9950129360753337) + * - Probable sequences: next 328 (1016-688) (0.0039909002477918065) + * - Neutral sequences: last 3080 (0.0009961636768744953) + * - Negative sequences: 2456 (off-ratio) * Negative sequences: TODO */ static const PRUint8 HebrewLangModel[] = { - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,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,1,0,0,0,0,0,0,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,1,3,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,0,0,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,0,3,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,0,0,3,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,2,3,0,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,3,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,0,0,0,0,0, + 3,3,3,3,3,3,3,3,2,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,0,2,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,2,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,0,2,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,1,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,0,0,0,0,0, + 1,0,2,1,1,1,1,1,1,0,1,0,1,1,0,1,0,1,0,1,1,1,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 1,0,1,1,1,2,1,2,2,1,1,0,0,1,1,1,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,0,1,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,0,0,0,0,0,0, + 3,3,3,3,3,3,3,3,2,3,3,3,3,1,3,3,0,3,3,3,3,3,3,3,2,1,0,3,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,2,3,3,3,3,0,3,3,0,3,3,3,3,3,3,3,1,1,3,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,2,1,3,0,2,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,3,3,0,3,2,0,0,0,0,0, + 3,3,3,3,3,3,3,2,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,3,3,2,0,3,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,3,1,3,3,3,3,3,3,3,0,2,0,3,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,3,3,0,3,3,0,3,3,3,3,3,3,3,0,2,3,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,2,3,1,3,3,0,1,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,3,3,3,3,2,3,1,3,3,0,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,0,1,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,3,3,3,2,1,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,3,3,3,3,3,1,0,2,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,0,0,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,2,2,3,3,3,3,3,3,3,3,2,3,2,0,2,1,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,0,3,3,1,3,3,0,3,0,1,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,3,3,3,3,3,1,3,2,3,0,3,3,1,3,3,0,3,1,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,0,0,3,3,3,2,0,0,2,0,2,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,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,3,3,1,1,3,3,3,2,1,1,2,2,0,0,0,0,0, + 1,0,1,0,1,0,2,1,1,0,1,0,0,1,0,0,1,1,1,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0, - 1,0,1,0,1,1,0,1,2,0,1,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0, + 3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,2,2,2,3,1,3,3,3,2,1,2,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,0,0,0,0,0,0,0,0,0,0,0,0, - 3,3,3,3,3,3,3,3,3,1,3,3,3,3,3,2,2,2,3,1,3,3,3,2,2,3,1,0,0,0,0,0, + 0,0,0,0,0,0,0,0,1,0,0,1,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,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, - 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,0,0,0,0,0,0, + 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,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,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,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,3,3,3,3, + 3,2,3,3,3,3,3,2,3,2,2,2,3,0,0,0,0,2,2,2,0,2,0,0,0,0,0,0,2,3,1,0, + 0,0,0,0,0,0,0,1,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,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,0,0,0,0, - 0,0,1,0,0,1,0,1,1,0,1,0,0,1,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, - 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,3,3,3, - 2,3,3,3,2,3,3,3,2,3,0,2,2,0,0,2,0,2,0,1,0,2,2,2,0,0,0,0,1,0,0,2, - 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,0,3,1,3,3,3, - 1,3,3,3,3,3,3,3,2,3,0,3,2,0,1,2,0,2,0,0,0,1,2,2,0,0,0,0,0,0,0,2, - 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,2,3,3, - 3,3,3,3,3,3,3,3,1,3,0,3,2,0,0,3,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,2, - 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,0,3,3,3,2,2, - 3,3,2,3,3,2,3,2,1,3,1,2,1,0,0,2,0,2,0,0,0,1,2,2,0,0,0,1,0,0,0,2, - 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,0,3,3,3,2,3, - 3,3,1,3,3,3,3,1,1,3,0,1,0,0,1,2,0,2,0,0,0,0,2,2,0,0,0,0,0,0,1,1, - 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,0,2,2,2,3,3, - 3,3,3,3,3,3,2,3,1,3,0,3,3,0,0,2,0,2,2,0,0,1,2,3,0,0,0,0,0,0,0,1, - 0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,1, - 3,3,2,3,3,1,1,1,3,0,0,1,1,0,0,0,0,3,0,0,0,0,1,0,0,0,0,0,0,0,0,2, - 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,0,3,3,3,0,1, - 3,3,3,2,3,1,2,2,0,2,0,2,2,0,0,2,0,2,0,0,0,1,1,2,0,0,0,0,0,0,0,1, - 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,0,3,2,3,2,1, - 2,3,2,3,2,3,1,2,2,2,0,2,2,0,0,2,0,2,0,0,0,0,2,1,0,0,0,0,0,0,0,2, - 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,0,3,2,2,3,3, - 2,3,3,3,1,2,2,3,0,2,0,2,2,0,0,2,0,0,0,0,0,0,1,1,0,1,0,0,0,0,0,1, - 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,0,3,3,3,2,0, - 3,3,2,1,3,2,1,0,3,0,0,0,0,0,0,0,0,2,0,1,0,0,2,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,0,0,0,0,0,0,0,0,0,0,3,3,3,2,1, - 2,1,1,2,2,1,1,2,0,1,1,0,0,0,0,1,2,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1, - 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,0,3,3,3,1,2, - 3,1,1,1,2,1,1,2,1,0,0,0,2,0,0,2,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,2,1, - 2,2,2,1,1,0,0,1,0,0,1,0,0,0,0,1,0,1,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,3,3,3,2,2, - 2,1,2,2,2,0,1,1,2,1,0,1,0,0,0,0,0,2,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,2,3,2,2,0, - 3,0,2,0,2,0,0,0,2,0,2,0,0,1,1,0,2,1,0,1,2,1,0,0,1,1,0,1,1,1,1,1, - 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,0,3,3,3,2,0, - 2,0,1,1,1,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,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,0,0,3,3,2,2,0, - 2,2,2,2,3,0,0,1,2,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1, - 0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,1,2,2, - 0,1,2,1,2,1,1,1,1,2,2,1,1,1,1,1,1,0,2,1,1,0,1,2,1,0,0,2,2,2,1,1, - 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,0,2,2,2,0,0, - 2,2,1,0,2,2,0,1,1,0,1,1,2,2,1,0,1,1,2,0,0,0,1,1,1,1,1,1,0,0,1,1, - 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,0,3,2,2,2,0, - 2,0,2,1,3,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,1,2,0,1,2, - 1,1,1,2,1,0,0,1,0,0,2,0,1,2,2,0,2,0,2,1,1,1,0,0,1,1,1,1,1,1,2,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,0,0,2,2,1,1,2, - 1,2,2,2,2,2,0,2,0,1,0,1,0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0,1,1, - 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,0,2,1,2,3,0, - 2,0,0,0,1,0,0,0,3,0,2,0,0,1,2,0,2,1,1,1,0,1,0,0,0,2,0,0,0,1,0,1, - 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,0,2,2,2,2,1, - 2,0,2,0,2,0,0,0,1,0,1,0,0,2,1,0,2,1,1,1,1,1,0,0,0,1,1,0,2,1,1,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,0,0,2,3,2,1,0, - 2,0,0,0,2,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,0,1,0,0,1,1,0,0,1,1,1,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,0,0,2,3,2,0,0, - 2,0,0,0,2,0,0,0,0,0,1,0,0,2,1,0,1,1,1,0,1,0,0,0,1,1,0,1,0,0,0,0, - 0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,2,2,2,1, - 2,2,1,2,2,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,0, - 2,2,2,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,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,0,0,0,0,0,0,0,0,0,2,2,1,2,0, - 2,0,2,1,1,0,0,0,1,0,1,0,0,1,1,0,1,0,0,0,1,0,0,0,1,1,0,1,1,0,1,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,0,0,0,1,1,2,2, - 0,1,2,1,2,1,1,1,0,1,2,1,0,1,1,1,1,0,1,0,1,1,0,1,1,0,1,1,1,1,1,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,0,0,2,2,1,2,0, - 2,0,1,0,1,0,0,0,1,0,0,0,0,1,1,0,1,2,0,1,1,1,0,0,1,1,0,1,2,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,0,0,0,0,2,2,2,0,0, - 2,1,0,0,1,0,0,0,0,0,1,0,0,1,1,0,2,0,1,1,0,0,0,0,1,1,0,1,0,1,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,0,0,0,2,2,1,0,0, - 2,0,0,0,0,0,0,0,0,0,1,0,0,2,1,0,2,0,1,2,2,1,0,0,0,1,0,0,1,0,1,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,0,0,2,2,0,1,0, - 2,0,0,0,1,0,0,0,1,0,1,0,0,2,0,0,1,1,1,1,1,1,0,0,0,2,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,0,0,0,0,0,0,0,2,2,2,2,0, - 2,0,2,0,1,0,0,0,0,0,1,0,0,1,1,0,1,0,0,1,1,0,0,0,1,0,1,1,0,1,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,0,0,0,2,2,2,1,0, - 2,1,0,1,1,0,1,0,0,0,0,1,1,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 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,2,0,1,3,3,3, + 3,1,3,3,3,3,3,2,3,3,2,3,3,0,0,0,0,2,3,2,1,0,0,0,0,0,1,0,2,2,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,0,0,3,0,3,2,3,3, + 3,3,3,3,3,3,3,1,3,3,2,1,3,0,0,1,0,2,3,2,0,0,0,0,0,0,0,0,2,1,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,0,0,3,0,3,3,3,2, + 3,3,3,2,3,3,3,2,1,3,0,2,2,0,0,0,0,3,1,2,0,0,0,0,0,0,0,0,2,1,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,0,0,3,0,3,3,2,2, + 3,3,3,2,3,2,3,1,2,3,2,3,2,0,1,0,0,3,2,2,0,0,1,0,0,0,0,0,2,1,0,0, + 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,3,0,3,3,1,3, + 2,3,3,2,3,1,1,3,1,1,0,3,1,0,0,0,0,1,1,1,0,0,1,0,0,0,0,0,2,1,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,0,0,1,0,2,2,3,3, + 3,3,3,3,3,3,2,2,3,2,3,1,2,1,0,1,0,3,2,3,0,1,0,1,0,0,0,0,2,2,1,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,0,3,0,3,3,1,2, + 3,3,3,2,2,3,1,3,1,1,3,2,1,0,0,0,0,2,1,1,0,0,0,0,0,0,0,0,1,1,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,0,0,3,0,3,3,2,1, + 3,3,2,3,3,2,2,1,2,1,1,2,1,0,0,0,0,2,1,2,0,0,1,0,0,0,0,0,1,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,0,0,0,2,0,2,2,3,3, + 3,1,3,3,1,3,3,1,3,2,2,1,2,0,0,0,0,2,1,2,0,0,0,1,0,0,0,1,1,1,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,0,0,3,0,3,3,0,2, + 3,3,1,2,3,2,0,3,1,0,0,2,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,1,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,0,0,0,3,0,3,3,1,2, + 1,2,2,1,2,1,1,0,1,1,0,2,1,1,0,0,1,0,1,1,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,0,0,0,0,0,0,0,0,0,0,0,0,3,0,3,3,2,2, + 2,3,2,2,3,0,1,1,2,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,2,0,1, + 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,3,0,3,3,2,0, + 1,2,1,1,2,1,1,0,2,0,2,1,2,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,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,0,0,3,0,3,2,1,2, + 1,2,2,2,2,0,0,2,1,1,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,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,0,0,3,0,3,2,0,2, + 2,3,1,3,2,0,0,2,0,0,2,1,0,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,1,0,2,1,2,1, + 2,1,3,3,1,2,1,0,1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,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,0,0,0,3,0,3,2,1,3, + 1,2,2,3,2,0,1,0,0,0,0,1,2,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,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,0,0,2,0,3,2,0,2, + 0,3,0,1,2,0,0,2,0,0,0,0,0,2,1,1,2,0,1,0,1,0,2,1,1,1,1,0,1,0,1,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,0,1,0,0,1,2,2, + 2,0,2,2,2,1,1,1,2,1,1,0,2,1,1,1,1,0,2,1,2,1,1,2,1,1,2,0,0,1,2,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,0,2,0,2,2,1,3, + 0,3,0,1,2,0,1,0,0,0,0,1,0,2,1,1,1,0,0,0,1,1,1,1,0,1,1,1,0,0,2,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,0,0,0,2,0,2,0, + 1,1,2,1,1,2,0,0,1,1,0,0,0,1,2,1,2,0,0,0,2,2,1,1,1,2,1,1,1,0,0,1, + 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,3,0,2,2,1,2, + 2,2,3,1,1,1,0,1,0,1,0,2,1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,1,0,0, + 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,2,3,1,2, + 0,2,1,1,1,0,0,0,0,0,0,1,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,2,0,2, + 2,2,1,1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,1,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,0,0,0,2,0,2,2,0,0, + 2,2,0,1,2,3,0,2,1,0,2,1,0,1,1,1,1,1,0,2,1,0,1,2,0,1,1,1,1,1,1,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,0,2,0,3,2,0,1, + 0,2,0,0,2,1,0,0,0,0,0,1,0,0,2,1,1,0,0,0,0,1,1,0,1,1,1,1,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,0,0,0,0,2,0,2,2,0,2, + 0,2,0,0,2,0,0,0,1,0,0,1,0,1,1,0,1,0,0,0,1,1,1,0,0,1,1,1,0,0,1,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,0,2,0,2,2,0,2, + 0,2,1,0,2,0,0,3,0,0,0,1,0,1,1,1,2,0,1,0,2,1,0,0,0,1,0,1,1,1,0,1, + 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,2,0,3,2,0,0, + 0,2,0,0,1,0,0,0,0,0,0,1,0,2,1,0,3,0,0,0,1,0,0,0,1,1,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,0,0,0,0,0,0,2,0,2,2,0,3, + 0,2,2,2,2,0,0,1,0,0,0,0,0,1,2,1,1,0,0,1,1,0,1,0,1,1,1,1,0,0,2,1, + 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,3,0,2,1,0,0, + 0,2,0,0,2,0,0,1,0,0,0,0,0,1,2,1,2,0,0,0,0,0,1,1,0,1,0,1,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,0,0,0,0,0,0,1,2,2,1, + 0,0,2,1,2,1,2,0,1,1,1,0,1,2,1,0,1,0,2,1,2,1,1,1,0,1,1,1,0,0,1,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,0,3,0,2,3,0,0, + 1,1,0,1,1,0,0,1,1,0,1,0,1,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,1,2,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,0,0,2,0,2,3,1,1, + 0,2,2,0,1,0,0,0,0,0,0,0,0,0,0,2,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,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,1,0,0, + 0,2,0,0,1,0,0,0,0,0,0,0,0,1,2,1,1,0,0,0,0,0,2,1,1,1,0,1,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,0,0,0,0,2,0,2,2,0,3, + 0,2,0,1,1,0,0,1,0,0,0,1,0,0,0,1,1,0,0,0,1,1,1,0,0,0,0,1,1,0,2,0, }; @@ -264,7 +285,7 @@ const SequenceModel Iso_8859_8HebrewModel = Iso_8859_8_CharToOrderMap, HebrewLangModel, 64, - (float)0.9990013600687914, + (float)0.9990038363231255, PR_FALSE, "ISO-8859-8", "he" @@ -275,12 +296,23 @@ const SequenceModel Windows_1255HebrewModel = Windows_1255_CharToOrderMap, HebrewLangModel, 64, - (float)0.9990013600687914, + (float)0.9990038363231255, PR_FALSE, "WINDOWS-1255", "he" }; +const SequenceModel Ibm862HebrewModel = +{ + Ibm862_CharToOrderMap, + HebrewLangModel, + 64, + (float)0.9990038363231255, + PR_FALSE, + "IBM862", + "he" +}; + const LanguageModel HebrewModel = { "he", @@ -289,7 +321,7 @@ const LanguageModel HebrewModel = HebrewLangModel, 64, 5, - (float)0.44272429757612475, - 21, - (float)0.04068630985148685, + (float)0.4412277399275502, + 22, + (float)0.031037939709794155, }; diff --git a/src/nsSBCSGroupProber.cpp b/src/nsSBCSGroupProber.cpp index ef8da36..04b8c67 100644 --- a/src/nsSBCSGroupProber.cpp +++ b/src/nsSBCSGroupProber.cpp @@ -46,159 +46,173 @@ nsSBCSGroupProber::nsSBCSGroupProber() { - mProbers[0] = new nsSingleByteCharSetProber(&Win1251RussianModel); - mProbers[1] = new nsSingleByteCharSetProber(&Koi8rRussianModel); - mProbers[2] = new nsSingleByteCharSetProber(&Latin5RussianModel); - mProbers[3] = new nsSingleByteCharSetProber(&MacCyrillicRussianModel); - mProbers[4] = new nsSingleByteCharSetProber(&Ibm866RussianModel); - mProbers[5] = new nsSingleByteCharSetProber(&Ibm855RussianModel); - - mProbers[6] = new nsSingleByteCharSetProber(&Iso_8859_7GreekModel); - mProbers[7] = new nsSingleByteCharSetProber(&Windows_1253GreekModel); - - mProbers[8] = new nsSingleByteCharSetProber(&Latin5BulgarianModel); - mProbers[9] = new nsSingleByteCharSetProber(&Win1251BulgarianModel); - nsHebrewProber *hebprober = new nsHebrewProber(); - // Notice: Any change in these indexes - 10,11,12 must be reflected - // in the code below as well. - mProbers[10] = hebprober; - mProbers[11] = new nsSingleByteCharSetProber(&Windows_1255HebrewModel, PR_FALSE, hebprober); // Logical Hebrew - mProbers[12] = new nsSingleByteCharSetProber(&Windows_1255HebrewModel, PR_TRUE, hebprober); // Visual Hebrew + PRUint32 heb_prober_idx; + PRUint32 n = 0; + + mProbers[n++] = new nsSingleByteCharSetProber(&Win1251RussianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Koi8rRussianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Latin5RussianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&MacCyrillicRussianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Ibm866RussianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Ibm855RussianModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_7GreekModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1253GreekModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Latin5BulgarianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Win1251BulgarianModel); + + heb_prober_idx = n; + mProbers[n++] = hebprober; + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1255HebrewModel, PR_FALSE, hebprober); // Logical Hebrew + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1255HebrewModel, PR_TRUE, hebprober); // Visual Hebrew // Tell the Hebrew prober about the logical and visual probers - if (mProbers[10] && mProbers[11] && mProbers[12]) // all are not null + if (mProbers[heb_prober_idx] && mProbers[heb_prober_idx + 1] && mProbers[heb_prober_idx + 2]) // all are not null { - hebprober->SetModelProbers(mProbers[11], mProbers[12]); + hebprober->SetModelProbers(mProbers[heb_prober_idx + 1], mProbers[heb_prober_idx + 2]); } else // One or more is null. avoid any Hebrew probing, null them all { - for (PRUint32 i = 10; i <= 12; ++i) + for (PRUint32 i = heb_prober_idx; i <= heb_prober_idx + 2; ++i) { delete mProbers[i]; mProbers[i] = 0; } } - - mProbers[13] = new nsSingleByteCharSetProber(&Tis_620ThaiModel); - mProbers[14] = new nsSingleByteCharSetProber(&Iso_8859_11ThaiModel); - - mProbers[15] = new nsSingleByteCharSetProber(&Iso_8859_1FrenchModel); - mProbers[16] = new nsSingleByteCharSetProber(&Iso_8859_15FrenchModel); - mProbers[17] = new nsSingleByteCharSetProber(&Windows_1252FrenchModel); - - mProbers[18] = new nsSingleByteCharSetProber(&Iso_8859_1SpanishModel); - mProbers[19] = new nsSingleByteCharSetProber(&Iso_8859_15SpanishModel); - mProbers[20] = new nsSingleByteCharSetProber(&Windows_1252SpanishModel); - - mProbers[21] = new nsSingleByteCharSetProber(&Iso_8859_2HungarianModel); - mProbers[22] = new nsSingleByteCharSetProber(&Windows_1250HungarianModel); - - mProbers[23] = new nsSingleByteCharSetProber(&Iso_8859_1GermanModel); - mProbers[24] = new nsSingleByteCharSetProber(&Windows_1252GermanModel); - - mProbers[25] = new nsSingleByteCharSetProber(&Iso_8859_3EsperantoModel); - - mProbers[26] = new nsSingleByteCharSetProber(&Iso_8859_3TurkishModel); - mProbers[27] = new nsSingleByteCharSetProber(&Iso_8859_9TurkishModel); - - mProbers[28] = new nsSingleByteCharSetProber(&Iso_8859_6ArabicModel); - mProbers[29] = new nsSingleByteCharSetProber(&Windows_1256ArabicModel); - - mProbers[30] = new nsSingleByteCharSetProber(&VisciiVietnameseModel); - mProbers[31] = new nsSingleByteCharSetProber(&Windows_1258VietnameseModel); - - mProbers[32] = new nsSingleByteCharSetProber(&Iso_8859_15DanishModel); - mProbers[33] = new nsSingleByteCharSetProber(&Iso_8859_1DanishModel); - mProbers[34] = new nsSingleByteCharSetProber(&Windows_1252DanishModel); - mProbers[35] = new nsSingleByteCharSetProber(&Ibm865DanishModel); - - mProbers[36] = new nsSingleByteCharSetProber(&Iso_8859_13LithuanianModel); - mProbers[37] = new nsSingleByteCharSetProber(&Iso_8859_10LithuanianModel); - mProbers[38] = new nsSingleByteCharSetProber(&Iso_8859_4LithuanianModel); - - mProbers[39] = new nsSingleByteCharSetProber(&Iso_8859_13LatvianModel); - mProbers[40] = new nsSingleByteCharSetProber(&Iso_8859_10LatvianModel); - mProbers[41] = new nsSingleByteCharSetProber(&Iso_8859_4LatvianModel); - - mProbers[42] = new nsSingleByteCharSetProber(&Iso_8859_1PortugueseModel); - mProbers[43] = new nsSingleByteCharSetProber(&Iso_8859_9PortugueseModel); - mProbers[44] = new nsSingleByteCharSetProber(&Iso_8859_15PortugueseModel); - mProbers[45] = new nsSingleByteCharSetProber(&Windows_1252PortugueseModel); - - mProbers[46] = new nsSingleByteCharSetProber(&Iso_8859_3MalteseModel); - - mProbers[47] = new nsSingleByteCharSetProber(&Windows_1250CzechModel); - mProbers[48] = new nsSingleByteCharSetProber(&Iso_8859_2CzechModel); - mProbers[49] = new nsSingleByteCharSetProber(&Mac_CentraleuropeCzechModel); - mProbers[50] = new nsSingleByteCharSetProber(&Ibm852CzechModel); - - mProbers[51] = new nsSingleByteCharSetProber(&Windows_1250SlovakModel); - mProbers[52] = new nsSingleByteCharSetProber(&Iso_8859_2SlovakModel); - mProbers[53] = new nsSingleByteCharSetProber(&Mac_CentraleuropeSlovakModel); - mProbers[54] = new nsSingleByteCharSetProber(&Ibm852SlovakModel); - - mProbers[55] = new nsSingleByteCharSetProber(&Windows_1250PolishModel); - mProbers[56] = new nsSingleByteCharSetProber(&Iso_8859_2PolishModel); - mProbers[57] = new nsSingleByteCharSetProber(&Iso_8859_13PolishModel); - mProbers[58] = new nsSingleByteCharSetProber(&Iso_8859_16PolishModel); - mProbers[59] = new nsSingleByteCharSetProber(&Mac_CentraleuropePolishModel); - mProbers[60] = new nsSingleByteCharSetProber(&Ibm852PolishModel); - - mProbers[61] = new nsSingleByteCharSetProber(&Iso_8859_1FinnishModel); - mProbers[62] = new nsSingleByteCharSetProber(&Iso_8859_4FinnishModel); - mProbers[63] = new nsSingleByteCharSetProber(&Iso_8859_9FinnishModel); - mProbers[64] = new nsSingleByteCharSetProber(&Iso_8859_13FinnishModel); - mProbers[65] = new nsSingleByteCharSetProber(&Iso_8859_15FinnishModel); - mProbers[66] = new nsSingleByteCharSetProber(&Windows_1252FinnishModel); - - mProbers[67] = new nsSingleByteCharSetProber(&Iso_8859_1ItalianModel); - mProbers[68] = new nsSingleByteCharSetProber(&Iso_8859_3ItalianModel); - mProbers[69] = new nsSingleByteCharSetProber(&Iso_8859_9ItalianModel); - mProbers[70] = new nsSingleByteCharSetProber(&Iso_8859_15ItalianModel); - mProbers[71] = new nsSingleByteCharSetProber(&Windows_1252ItalianModel); - - mProbers[72] = new nsSingleByteCharSetProber(&Windows_1250CroatianModel); - mProbers[73] = new nsSingleByteCharSetProber(&Iso_8859_2CroatianModel); - mProbers[74] = new nsSingleByteCharSetProber(&Iso_8859_13CroatianModel); - mProbers[75] = new nsSingleByteCharSetProber(&Iso_8859_16CroatianModel); - mProbers[76] = new nsSingleByteCharSetProber(&Mac_CentraleuropeCroatianModel); - mProbers[77] = new nsSingleByteCharSetProber(&Ibm852CroatianModel); - - mProbers[78] = new nsSingleByteCharSetProber(&Windows_1252EstonianModel); - mProbers[79] = new nsSingleByteCharSetProber(&Windows_1257EstonianModel); - mProbers[80] = new nsSingleByteCharSetProber(&Iso_8859_4EstonianModel); - mProbers[81] = new nsSingleByteCharSetProber(&Iso_8859_13EstonianModel); - mProbers[82] = new nsSingleByteCharSetProber(&Iso_8859_15EstonianModel); - - mProbers[83] = new nsSingleByteCharSetProber(&Iso_8859_1IrishModel); - mProbers[84] = new nsSingleByteCharSetProber(&Iso_8859_9IrishModel); - mProbers[85] = new nsSingleByteCharSetProber(&Iso_8859_15IrishModel); - mProbers[86] = new nsSingleByteCharSetProber(&Windows_1252IrishModel); - - mProbers[87] = new nsSingleByteCharSetProber(&Windows_1250RomanianModel); - mProbers[88] = new nsSingleByteCharSetProber(&Iso_8859_2RomanianModel); - mProbers[89] = new nsSingleByteCharSetProber(&Iso_8859_16RomanianModel); - mProbers[90] = new nsSingleByteCharSetProber(&Ibm852RomanianModel); - - mProbers[91] = new nsSingleByteCharSetProber(&Windows_1250SloveneModel); - mProbers[92] = new nsSingleByteCharSetProber(&Iso_8859_2SloveneModel); - mProbers[93] = new nsSingleByteCharSetProber(&Iso_8859_16SloveneModel); - mProbers[94] = new nsSingleByteCharSetProber(&Mac_CentraleuropeSloveneModel); - mProbers[95] = new nsSingleByteCharSetProber(&Ibm852SloveneModel); - - mProbers[96] = new nsSingleByteCharSetProber(&Iso_8859_1SwedishModel); - mProbers[97] = new nsSingleByteCharSetProber(&Iso_8859_4SwedishModel); - mProbers[98] = new nsSingleByteCharSetProber(&Iso_8859_9SwedishModel); - mProbers[99] = new nsSingleByteCharSetProber(&Iso_8859_15SwedishModel); - mProbers[100] = new nsSingleByteCharSetProber(&Windows_1252SwedishModel); - - mProbers[101] = new nsSingleByteCharSetProber(&Iso_8859_15NorwegianModel); - mProbers[102] = new nsSingleByteCharSetProber(&Iso_8859_1NorwegianModel); - mProbers[103] = new nsSingleByteCharSetProber(&Windows_1252NorwegianModel); - mProbers[104] = new nsSingleByteCharSetProber(&Ibm865NorwegianModel); - - mProbers[105] = new nsSingleByteCharSetProber(&Iso_8859_1EnglishModel); - mProbers[106] = new nsSingleByteCharSetProber(&Windows_1252EnglishModel); + /* XXX: I should verify a bit more closely the Hebrew case. It doesn't look to + * me like the additional data handling in nsHebrewProber is really needed + * ("Final letter analysis for logical-visual decision"). + * For this new support of Hebrew with IBM-862, aka CP862, I just directly use + * the direct model (in 2 modes, reversed or not, so that it handles both the + * logical and visual hebrew cases (Wikipedia says: "Hebrew text encoded using + * code page 862 was usually stored in visual order; nevertheless, a few DOS + * applications, notably a word processor named EinsteinWriter, stored Hebrew + * in logical order.") + */ + mProbers[n++] = new nsSingleByteCharSetProber(&Ibm862HebrewModel, PR_FALSE, NULL); // Logical Hebrew + mProbers[n++] = new nsSingleByteCharSetProber(&Ibm862HebrewModel, PR_TRUE, NULL); // Visual Hebrew + + mProbers[n++] = new nsSingleByteCharSetProber(&Tis_620ThaiModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_11ThaiModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_1FrenchModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_15FrenchModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1252FrenchModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_1SpanishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_15SpanishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1252SpanishModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_2HungarianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1250HungarianModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_1GermanModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1252GermanModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_3EsperantoModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_3TurkishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_9TurkishModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_6ArabicModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1256ArabicModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&VisciiVietnameseModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1258VietnameseModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_15DanishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_1DanishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1252DanishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Ibm865DanishModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_13LithuanianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_10LithuanianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_4LithuanianModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_13LatvianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_10LatvianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_4LatvianModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_1PortugueseModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_9PortugueseModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_15PortugueseModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1252PortugueseModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_3MalteseModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1250CzechModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_2CzechModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Mac_CentraleuropeCzechModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Ibm852CzechModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1250SlovakModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_2SlovakModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Mac_CentraleuropeSlovakModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Ibm852SlovakModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1250PolishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_2PolishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_13PolishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_16PolishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Mac_CentraleuropePolishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Ibm852PolishModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_1FinnishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_4FinnishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_9FinnishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_13FinnishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_15FinnishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1252FinnishModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_1ItalianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_3ItalianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_9ItalianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_15ItalianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1252ItalianModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1250CroatianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_2CroatianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_13CroatianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_16CroatianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Mac_CentraleuropeCroatianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Ibm852CroatianModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1252EstonianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1257EstonianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_4EstonianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_13EstonianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_15EstonianModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_1IrishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_9IrishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_15IrishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1252IrishModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1250RomanianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_2RomanianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_16RomanianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Ibm852RomanianModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1250SloveneModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_2SloveneModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_16SloveneModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Mac_CentraleuropeSloveneModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Ibm852SloveneModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_1SwedishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_4SwedishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_9SwedishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_15SwedishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1252SwedishModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_15NorwegianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_1NorwegianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1252NorwegianModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Ibm865NorwegianModel); + + mProbers[n++] = new nsSingleByteCharSetProber(&Iso_8859_1EnglishModel); + mProbers[n++] = new nsSingleByteCharSetProber(&Windows_1252EnglishModel); Reset(); } diff --git a/src/nsSBCSGroupProber.h b/src/nsSBCSGroupProber.h index 1c473f2..57102a0 100644 --- a/src/nsSBCSGroupProber.h +++ b/src/nsSBCSGroupProber.h @@ -40,7 +40,7 @@ #define nsSBCSGroupProber_h__ -#define NUM_OF_SBCS_PROBERS 107 +#define NUM_OF_SBCS_PROBERS 109 class nsCharSetProber; class nsSBCSGroupProber: public nsCharSetProber { diff --git a/src/nsSBCharSetProber.h b/src/nsSBCharSetProber.h index 2fad476..bccb9e1 100644 --- a/src/nsSBCharSetProber.h +++ b/src/nsSBCharSetProber.h @@ -151,6 +151,7 @@ extern const SequenceModel Iso_8859_2HungarianModel; extern const SequenceModel Windows_1250HungarianModel; extern const SequenceModel Windows_1255HebrewModel; +extern const SequenceModel Ibm862HebrewModel; extern const SequenceModel Tis_620ThaiModel; extern const SequenceModel Iso_8859_11ThaiModel; |