diff --git a/mono/metadata/ChangeLog b/mono/metadata/ChangeLog index 9a32ca3c28abb..1bac45552b2d0 100644 --- a/mono/metadata/ChangeLog +++ b/mono/metadata/ChangeLog @@ -1,3 +1,8 @@ +2008-05-27 Eyal Alaluf + + * number-formatter.h: Fix tables to avoid arithemtic overflow in + Double.ToString as exposed by Bug #383531. + 2008-05-26 Zoltan Varga * number-formatter.h: Make some tables static. diff --git a/mono/metadata/number-formatter.h b/mono/metadata/number-formatter.h index b79a163275023..0c9274b2dbb8b 100644 --- a/mono/metadata/number-formatter.h +++ b/mono/metadata/number-formatter.h @@ -2,7 +2,7 @@ #define _MONO_METADATA_NUMBER_FORMATTER_H_ 1 static const guint64 Formatter_MantissaBitsTable [] = { - 4556951262222748432ULL, 9113902524445496865ULL, 18227805048890993730ULL, + 4556951262222748432ULL, 9113902524445496865ULL, 1822780504889099373ULL, 3645561009778198746ULL, 7291122019556397492ULL, 14582244039112794984ULL, 2916448807822558996ULL, 5832897615645117993ULL, 11665795231290235987ULL, 2333159046258047197ULL, 4666318092516094394ULL, 9332636185032188789ULL, @@ -68,7 +68,7 @@ static const guint64 Formatter_MantissaBitsTable [] = { 3575555834521367442ULL, 7151111669042734884ULL, 14302223338085469768ULL, 2860444667617093953ULL, 5720889335234187907ULL, 11441778670468375814ULL, 2288355734093675162ULL, 4576711468187350325ULL, 9153422936374700651ULL, - 18306845872749401303ULL, 3661369174549880260ULL, 7322738349099760521ULL, + 1830684587274940130ULL, 3661369174549880260ULL, 7322738349099760521ULL, 14645476698199521043ULL, 2929095339639904208ULL, 5858190679279808417ULL, 11716381358559616834ULL, 2343276271711923366ULL, 4686552543423846733ULL, 9373105086847693467ULL, 1874621017369538693ULL, 3749242034739077387ULL, @@ -99,7 +99,7 @@ static const guint64 Formatter_MantissaBitsTable [] = { 3541058984203561811ULL, 7082117968407123623ULL, 14164235936814247246ULL, 2832847187362849449ULL, 5665694374725698898ULL, 11331388749451397797ULL, 2266277749890279559ULL, 4532555499780559119ULL, 9065110999561118238ULL, - 18130221999122236476ULL, 3626044399824447295ULL, 7252088799648894590ULL, + 1813022199912223647ULL, 3626044399824447295ULL, 7252088799648894590ULL, 14504177599297789180ULL, 2900835519859557836ULL, 5801671039719115672ULL, 11603342079438231344ULL, 2320668415887646268ULL, 4641336831775292537ULL, 9282673663550585075ULL, 1856534732710117015ULL, 3713069465420234030ULL, @@ -133,7 +133,7 @@ static const guint64 Formatter_MantissaBitsTable [] = { 17955302187076837701ULL, 3591060437415367540ULL, 7182120874830735080ULL, 14364241749661470161ULL, 2872848349932294032ULL, 5745696699864588064ULL, 11491393399729176129ULL, 2298278679945835225ULL, 4596557359891670451ULL, - 9193114719783340903ULL, 18386229439566681806ULL, 3677245887913336361ULL, + 9193114719783340903ULL, 1838622943956668180ULL, 3677245887913336361ULL, 7354491775826672722ULL, 14708983551653345445ULL, 2941796710330669089ULL, 5883593420661338178ULL, 11767186841322676356ULL, 2353437368264535271ULL, 4706874736529070542ULL, 9413749473058141084ULL, 1882749894611628216ULL, @@ -164,7 +164,7 @@ static const guint64 Formatter_MantissaBitsTable [] = { 17782069995880619867ULL, 3556413999176123973ULL, 7112827998352247947ULL, 14225655996704495894ULL, 2845131199340899178ULL, 5690262398681798357ULL, 11380524797363596715ULL, 2276104959472719343ULL, 4552209918945438686ULL, - 9104419837890877372ULL, 18208839675781754744ULL, 3641767935156350948ULL, + 9104419837890877372ULL, 1820883967578175474ULL, 3641767935156350948ULL, 7283535870312701897ULL, 14567071740625403795ULL, 2913414348125080759ULL, 5826828696250161518ULL, 11653657392500323036ULL, 2330731478500064607ULL, 4661462957000129214ULL, 9322925914000258429ULL, 1864585182800051685ULL, @@ -229,7 +229,7 @@ static const guint64 Formatter_MantissaBitsTable [] = { 8929588994392773298ULL, 17859177988785546597ULL, 3571835597757109319ULL, 7143671195514218638ULL, 14287342391028437277ULL, 2857468478205687455ULL, 5714936956411374911ULL, 11429873912822749822ULL, 2285974782564549964ULL, - 4571949565129099928ULL, 9143899130258199857ULL, 18287798260516399715ULL, + 4571949565129099928ULL, 9143899130258199857ULL, 1828779826051639971ULL, 3657559652103279943ULL, 7315119304206559886ULL, 14630238608413119772ULL, 2926047721682623954ULL, 5852095443365247908ULL, 11704190886730495817ULL, 2340838177346099163ULL, 4681676354692198327ULL, 9363352709384396654ULL, @@ -260,7 +260,7 @@ static const guint64 Formatter_MantissaBitsTable [] = { 8843436600416711296ULL, 17686873200833422592ULL, 3537374640166684518ULL, 7074749280333369037ULL, 14149498560666738074ULL, 2829899712133347614ULL, 5659799424266695229ULL, 11319598848533390459ULL, 2263919769706678091ULL, - 4527839539413356183ULL, 9055679078826712367ULL, 18111358157653424735ULL, + 4527839539413356183ULL, 9055679078826712367ULL, 1811135815765342473ULL, 3622271631530684947ULL, 7244543263061369894ULL, 14489086526122739788ULL, 2897817305224547957ULL, 5795634610449095915ULL, 11591269220898191830ULL, 2318253844179638366ULL, 4636507688359276732ULL, 9273015376718553464ULL, @@ -295,7 +295,7 @@ static const guint64 Formatter_MantissaBitsTable [] = { 3587324068671531701ULL, 7174648137343063403ULL, 14349296274686126806ULL, 2869859254937225361ULL, 5739718509874450722ULL, 11479437019748901445ULL, 2295887403949780289ULL, 4591774807899560578ULL, 9183549615799121156ULL, - 18367099231598242312ULL, 3673419846319648462ULL, 7346839692639296924ULL, + 1836709923159824231ULL, 3673419846319648462ULL, 7346839692639296924ULL, 14693679385278593849ULL, 2938735877055718769ULL, 5877471754111437539ULL, 11754943508222875079ULL, 2350988701644575015ULL, 4701977403289150031ULL, 9403954806578300063ULL, 1880790961315660012ULL, 3761581922631320025ULL, @@ -326,7 +326,7 @@ static const guint64 Formatter_MantissaBitsTable [] = { 3552713678800500929ULL, 7105427357601001858ULL, 14210854715202003717ULL, 2842170943040400743ULL, 5684341886080801486ULL, 11368683772161602973ULL, 2273736754432320594ULL, 4547473508864641189ULL, 9094947017729282379ULL, - 18189894035458564758ULL, 3637978807091712951ULL, 7275957614183425903ULL, + 1818989403545856475ULL, 3637978807091712951ULL, 7275957614183425903ULL, 14551915228366851806ULL, 2910383045673370361ULL, 5820766091346740722ULL, 11641532182693481445ULL, 2328306436538696289ULL, 4656612873077392578ULL, 9313225746154785156ULL, 1862645149230957031ULL, 3725290298461914062ULL, @@ -391,7 +391,7 @@ static const guint64 Formatter_MantissaBitsTable [] = { 17840596158824498513ULL, 3568119231764899702ULL, 7136238463529799405ULL, 14272476927059598810ULL, 2854495385411919762ULL, 5708990770823839524ULL, 11417981541647679048ULL, 2283596308329535809ULL, 4567192616659071619ULL, - 9134385233318143238ULL, 18268770466636286477ULL, 3653754093327257295ULL, + 9134385233318143238ULL, 1826877046663628647ULL, 3653754093327257295ULL, 7307508186654514591ULL, 14615016373309029182ULL, 2923003274661805836ULL, 5846006549323611672ULL, 11692013098647223345ULL, 2338402619729444669ULL, 4676805239458889338ULL, 9353610478917778676ULL, 1870722095783555735ULL, @@ -456,7 +456,7 @@ static const guint64 Formatter_MantissaBitsTable [] = { 8958978968711216842ULL, 17917957937422433684ULL, 3583591587484486736ULL, 7167183174968973473ULL, 14334366349937946947ULL, 2866873269987589389ULL, 5733746539975178779ULL, 11467493079950357558ULL, 2293498615990071511ULL, - 4586997231980143023ULL, 9173994463960286046ULL, 18347988927920572092ULL, + 4586997231980143023ULL, 9173994463960286046ULL, 1834798892792057209ULL, 3669597785584114418ULL, 7339195571168228837ULL, 14678391142336457674ULL, 2935678228467291534ULL, 5871356456934583069ULL, 11742712913869166139ULL, 2348542582773833227ULL, 4697085165547666455ULL, 9394170331095332911ULL, @@ -487,7 +487,7 @@ static const guint64 Formatter_MantissaBitsTable [] = { 8872543021186607550ULL, 17745086042373215101ULL, 3549017208474643020ULL, 7098034416949286040ULL, 14196068833898572081ULL, 2839213766779714416ULL, 5678427533559428832ULL, 11356855067118857664ULL, 2271371013423771532ULL, - 4542742026847543065ULL, 9085484053695086131ULL, 18170968107390172263ULL, + 4542742026847543065ULL, 9085484053695086131ULL, 1817096810739017226ULL, 3634193621478034452ULL, 7268387242956068905ULL, 14536774485912137810ULL, 2907354897182427562ULL, 5814709794364855124ULL, 11629419588729710248ULL, 2325883917745942049ULL, 4651767835491884099ULL, 9303535670983768199ULL, @@ -522,7 +522,7 @@ static const guint64 Formatter_MantissaBitsTable [] = { 3599131035634557106ULL, 7198262071269114212ULL, 14396524142538228424ULL, 2879304828507645684ULL, 5758609657015291369ULL, 11517219314030582739ULL, 2303443862806116547ULL, 4606887725612233095ULL, 9213775451224466191ULL, - 18427550902448932383ULL, 3685510180489786476ULL, 7371020360979572953ULL, + 1842755090244893238ULL, 3685510180489786476ULL, 7371020360979572953ULL, 14742040721959145907ULL, 2948408144391829181ULL, 5896816288783658362ULL, 11793632577567316725ULL, 2358726515513463345ULL, 4717453031026926690ULL, 9434906062053853380ULL, 1886981212410770676ULL, 3773962424821541352ULL, @@ -553,7 +553,7 @@ static const guint64 Formatter_MantissaBitsTable [] = { 3564406732517340014ULL, 7128813465034680029ULL, 14257626930069360058ULL, 2851525386013872011ULL, 5703050772027744023ULL, 11406101544055488046ULL, 2281220308811097609ULL, 4562440617622195218ULL, 9124881235244390437ULL, - 18249762470488780874ULL, 3649952494097756174ULL, 7299904988195512349ULL, + 1824976247048878087ULL, 3649952494097756174ULL, 7299904988195512349ULL, 14599809976391024699ULL, 2919961995278204939ULL, 5839923990556409879ULL, 11679847981112819759ULL, 2335969596222563951ULL, 4671939192445127903ULL, 9343878384890255807ULL, 1868775676978051161ULL, 3737551353956102323ULL, @@ -618,7 +618,7 @@ static const guint64 Formatter_MantissaBitsTable [] = { 17899314949046850752ULL, 3579862989809370150ULL, 7159725979618740301ULL, 14319451959237480602ULL, 2863890391847496120ULL, 5727780783694992240ULL, 11455561567389984481ULL, 2291112313477996896ULL, 4582224626955993792ULL, - 9164449253911987585ULL, 18328898507823975170ULL, 3665779701564795034ULL, + 9164449253911987585ULL, 1832889850782397517ULL, 3665779701564795034ULL, 7331559403129590068ULL, 14663118806259180136ULL, 2932623761251836027ULL, 5865247522503672054ULL, 11730495045007344109ULL, 2346099009001468821ULL, 4692198018002937643ULL, 9384396036005875287ULL, 1876879207201175057ULL, @@ -683,12 +683,12 @@ static const guint64 Formatter_MantissaBitsTable [] = { 8988465674311579538ULL, 17976931348623159077ULL, 3595386269724631815ULL, 7190772539449263630ULL, 14381545078898527261ULL, 2876309015779705452ULL, 5752618031559410904ULL, 11505236063118821809ULL, 2301047212623764361ULL, - 4602094425247528723ULL, 9204188850495057447ULL, 18408377700990114895ULL, + 4602094425247528723ULL, 9204188850495057447ULL, 1840837770099011489ULL, 3681675540198022979ULL, 7363351080396045958ULL, }; static const gint32 Formatter_TensExponentTable [] = { - -323, -323, -323, -322, -322, -322, -321, -321, -321, -320, -320, -320, + -323, -323, -322, -322, -322, -322, -321, -321, -321, -320, -320, -320, -319, -319, -319, -319, -318, -318, -318, -317, -317, -317, -316, -316, -316, -316, -315, -315, -315, -314, -314, -314, -313, -313, -313, -313, -312, -312, -312, -311, -311, -311, -310, -310, -310, -310, -309, -309, @@ -704,7 +704,7 @@ static const gint32 Formatter_TensExponentTable [] = { -276, -276, -276, -275, -275, -275, -274, -274, -274, -273, -273, -273, -273, -272, -272, -272, -271, -271, -271, -270, -270, -270, -270, -269, -269, -269, -268, -268, -268, -267, -267, -267, -267, -266, -266, -266, - -265, -265, -265, -264, -264, -264, -264, -263, -263, -263, -262, -262, + -265, -265, -265, -264, -264, -264, -263, -263, -263, -263, -262, -262, -262, -261, -261, -261, -260, -260, -260, -260, -259, -259, -259, -258, -258, -258, -257, -257, -257, -257, -256, -256, -256, -255, -255, -255, -254, -254, -254, -254, -253, -253, -253, -252, -252, -252, -251, -251, @@ -712,7 +712,7 @@ static const gint32 Formatter_TensExponentTable [] = { -247, -247, -247, -246, -246, -246, -245, -245, -245, -245, -244, -244, -244, -243, -243, -243, -242, -242, -242, -242, -241, -241, -241, -240, -240, -240, -239, -239, -239, -239, -238, -238, -238, -237, -237, -237, - -236, -236, -236, -236, -235, -235, -235, -234, -234, -234, -233, -233, + -236, -236, -236, -235, -235, -235, -235, -234, -234, -234, -233, -233, -233, -232, -232, -232, -232, -231, -231, -231, -230, -230, -230, -229, -229, -229, -229, -228, -228, -228, -227, -227, -227, -226, -226, -226, -226, -225, -225, -225, -224, -224, -224, -223, -223, -223, -223, -222, @@ -720,7 +720,7 @@ static const gint32 Formatter_TensExponentTable [] = { -218, -218, -218, -217, -217, -217, -217, -216, -216, -216, -215, -215, -215, -214, -214, -214, -214, -213, -213, -213, -212, -212, -212, -211, -211, -211, -211, -210, -210, -210, -209, -209, -209, -208, -208, -208, - -208, -207, -207, -207, -206, -206, -206, -205, -205, -205, -205, -204, + -208, -207, -207, -207, -206, -206, -206, -205, -205, -205, -204, -204, -204, -204, -203, -203, -203, -202, -202, -202, -201, -201, -201, -201, -200, -200, -200, -199, -199, -199, -198, -198, -198, -198, -197, -197, -197, -196, -196, -196, -195, -195, -195, -195, -194, -194, -194, -193, @@ -728,7 +728,7 @@ static const gint32 Formatter_TensExponentTable [] = { -189, -189, -189, -189, -188, -188, -188, -187, -187, -187, -186, -186, -186, -186, -185, -185, -185, -184, -184, -184, -183, -183, -183, -183, -182, -182, -182, -181, -181, -181, -180, -180, -180, -180, -179, -179, - -179, -178, -178, -178, -177, -177, -177, -177, -176, -176, -176, -175, + -179, -178, -178, -178, -177, -177, -177, -176, -176, -176, -176, -175, -175, -175, -174, -174, -174, -173, -173, -173, -173, -172, -172, -172, -171, -171, -171, -170, -170, -170, -170, -169, -169, -169, -168, -168, -168, -167, -167, -167, -167, -166, -166, -166, -165, -165, -165, -164, @@ -744,7 +744,7 @@ static const gint32 Formatter_TensExponentTable [] = { -132, -131, -131, -131, -130, -130, -130, -130, -129, -129, -129, -128, -128, -128, -127, -127, -127, -127, -126, -126, -126, -125, -125, -125, -124, -124, -124, -124, -123, -123, -123, -122, -122, -122, -121, -121, - -121, -121, -120, -120, -120, -119, -119, -119, -118, -118, -118, -118, + -121, -121, -120, -120, -120, -119, -119, -119, -118, -118, -118, -117, -117, -117, -117, -116, -116, -116, -115, -115, -115, -114, -114, -114, -114, -113, -113, -113, -112, -112, -112, -111, -111, -111, -111, -110, -110, -110, -109, -109, -109, -108, -108, -108, -108, -107, -107, -107, @@ -752,7 +752,7 @@ static const gint32 Formatter_TensExponentTable [] = { -103, -102, -102, -102, -102, -101, -101, -101, -100, -100, -100, -99, -99, -99, -99, -98, -98, -98, -97, -97, -97, -96, -96, -96, -96, -95, -95, -95, -94, -94, -94, -93, -93, -93, -93, -92, - -92, -92, -91, -91, -91, -90, -90, -90, -90, -89, -89, -89, + -92, -92, -91, -91, -91, -90, -90, -90, -89, -89, -89, -89, -88, -88, -88, -87, -87, -87, -86, -86, -86, -86, -85, -85, -85, -84, -84, -84, -83, -83, -83, -83, -82, -82, -82, -81, -81, -81, -80, -80, -80, -80, -79, -79, -79, -78, -78, -78, @@ -761,7 +761,7 @@ static const gint32 Formatter_TensExponentTable [] = { -70, -70, -70, -69, -69, -69, -68, -68, -68, -68, -67, -67, -67, -66, -66, -66, -65, -65, -65, -65, -64, -64, -64, -63, -63, -63, -62, -62, -62, -62, -61, -61, -61, -60, -60, -60, - -59, -59, -59, -59, -58, -58, -58, -57, -57, -57, -56, -56, + -59, -59, -59, -58, -58, -58, -58, -57, -57, -57, -56, -56, -56, -55, -55, -55, -55, -54, -54, -54, -53, -53, -53, -52, -52, -52, -52, -51, -51, -51, -50, -50, -50, -49, -49, -49, -49, -48, -48, -48, -47, -47, -47, -46, -46, -46, -46, -45, @@ -769,7 +769,7 @@ static const gint32 Formatter_TensExponentTable [] = { -41, -41, -41, -40, -40, -40, -40, -39, -39, -39, -38, -38, -38, -37, -37, -37, -37, -36, -36, -36, -35, -35, -35, -34, -34, -34, -34, -33, -33, -33, -32, -32, -32, -31, -31, -31, - -31, -30, -30, -30, -29, -29, -29, -28, -28, -28, -27, -27, + -30, -30, -30, -30, -29, -29, -29, -28, -28, -28, -27, -27, -27, -27, -26, -26, -26, -25, -25, -25, -24, -24, -24, -24, -23, -23, -23, -22, -22, -22, -21, -21, -21, -21, -20, -20, -20, -19, -19, -19, -18, -18, -18, -18, -17, -17, -17, -16, @@ -785,7 +785,7 @@ static const gint32 Formatter_TensExponentTable [] = { 16, 17, 17, 17, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 27, 27, - 27, 28, 28, 28, 28, 29, 29, 29, 30, 30, 30, 31, + 27, 28, 28, 28, 29, 29, 29, 29, 30, 30, 30, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 34, 34, 34, 35, 35, 35, 35, 36, 36, 36, 37, 37, 37, 38, 38, 38, 38, 39, 39, 39, 40, 40, 40, 41, 41, 41, 41, @@ -801,7 +801,7 @@ static const gint32 Formatter_TensExponentTable [] = { 74, 75, 75, 75, 75, 76, 76, 76, 77, 77, 77, 78, 78, 78, 78, 79, 79, 79, 80, 80, 80, 81, 81, 81, 81, 82, 82, 82, 83, 83, 83, 84, 84, 84, 84, 85, - 85, 85, 86, 86, 86, 87, 87, 87, 87, 88, 88, 88, + 85, 85, 86, 86, 86, 87, 87, 87, 88, 88, 88, 88, 89, 89, 89, 90, 90, 90, 91, 91, 91, 91, 92, 92, 92, 93, 93, 93, 94, 94, 94, 94, 95, 95, 95, 96, 96, 96, 97, 97, 97, 97, 98, 98, 98, 99, 99, 99, @@ -809,7 +809,7 @@ static const gint32 Formatter_TensExponentTable [] = { 103, 103, 104, 104, 104, 105, 105, 105, 106, 106, 106, 106, 107, 107, 107, 108, 108, 108, 109, 109, 109, 109, 110, 110, 110, 111, 111, 111, 112, 112, 112, 112, 113, 113, 113, 114, - 114, 114, 115, 115, 115, 115, 116, 116, 116, 117, 117, 117, + 114, 114, 115, 115, 115, 116, 116, 116, 116, 117, 117, 117, 118, 118, 118, 119, 119, 119, 119, 120, 120, 120, 121, 121, 121, 122, 122, 122, 122, 123, 123, 123, 124, 124, 124, 125, 125, 125, 125, 126, 126, 126, 127, 127, 127, 128, 128, 128, @@ -818,14 +818,14 @@ static const gint32 Formatter_TensExponentTable [] = { 136, 136, 136, 137, 137, 137, 137, 138, 138, 138, 139, 139, 139, 140, 140, 140, 140, 141, 141, 141, 142, 142, 142, 143, 143, 143, 143, 144, 144, 144, 145, 145, 145, 146, 146, 146, - 146, 147, 147, 147, 148, 148, 148, 149, 149, 149, 150, 150, + 147, 147, 147, 147, 148, 148, 148, 149, 149, 149, 150, 150, 150, 150, 151, 151, 151, 152, 152, 152, 153, 153, 153, 153, 154, 154, 154, 155, 155, 155, 156, 156, 156, 156, 157, 157, 157, 158, 158, 158, 159, 159, 159, 159, 160, 160, 160, 161, 161, 161, 162, 162, 162, 162, 163, 163, 163, 164, 164, 164, 165, 165, 165, 165, 166, 166, 166, 167, 167, 167, 168, 168, 168, 168, 169, 169, 169, 170, 170, 170, 171, 171, 171, 171, - 172, 172, 172, 173, 173, 173, 174, 174, 174, 174, 175, 175, + 172, 172, 172, 173, 173, 173, 174, 174, 174, 175, 175, 175, 175, 176, 176, 176, 177, 177, 177, 178, 178, 178, 178, 179, 179, 179, 180, 180, 180, 181, 181, 181, 181, 182, 182, 182, 183, 183, 183, 184, 184, 184, 184, 185, 185, 185, 186, 186, @@ -842,7 +842,7 @@ static const gint32 Formatter_TensExponentTable [] = { 222, 223, 223, 223, 224, 224, 224, 224, 225, 225, 225, 226, 226, 226, 227, 227, 227, 227, 228, 228, 228, 229, 229, 229, 230, 230, 230, 230, 231, 231, 231, 232, 232, 232, 233, 233, - 233, 233, 234, 234, 234, 235, 235, 235, 236, 236, 236, 237, + 233, 234, 234, 234, 234, 235, 235, 235, 236, 236, 236, 237, 237, 237, 237, 238, 238, 238, 239, 239, 239, 240, 240, 240, 240, 241, 241, 241, 242, 242, 242, 243, 243, 243, 243, 244, 244, 244, 245, 245, 245, 246, 246, 246, 246, 247, 247, 247, @@ -858,7 +858,7 @@ static const gint32 Formatter_TensExponentTable [] = { 280, 280, 281, 281, 281, 282, 282, 282, 283, 283, 283, 283, 284, 284, 284, 285, 285, 285, 286, 286, 286, 286, 287, 287, 287, 288, 288, 288, 289, 289, 289, 289, 290, 290, 290, 291, - 291, 291, 292, 292, 292, 292, 293, 293, + 291, 291, 292, 292, 292, 293, 293, 293, }; static const gunichar2 Formatter_DigitLowerTable [] = {