493 lines
37 KiB
Go
493 lines
37 KiB
Go
package calendar
|
||
|
||
import (
|
||
"errors"
|
||
"fmt"
|
||
"strings"
|
||
"time"
|
||
)
|
||
|
||
var ERR_NIANHAO_NOT_FOUND = errors.New("ERROR:未找到对应的年号")
|
||
|
||
func getHanQingCals() []uint32 {
|
||
return []uint32{
|
||
2865769984, 1431610368, 3310368000, 1788881408, 2874351360, 2865771008, 1431316224, 1789500416, 1520447232, 2866160640, 2862626304, 3578800896, 1521262848, 1436562432, 2863671296, 1431477760, 3041931264, 1436558848, 2863700480, 2862624000, 3042255360, 2907714816, 1432365568, 2863374080, 1788883456, 2907711232, 1432984576, 1431318272, 2863506432, 1520449280, 2865769216, 1432101120, 1431319552, 1520445696, 2874318080, 2863673344, 1431315968, 1520999168, 1453337856, 2863964672, 2862626048, 3578800640, 1454087936, 1432367616, 2862622464, 3578928128, 2907713024, 1437475840, 1431320320, 2862623744, 2907971584, 2874159872, 1431316736, 2863308288, 1788882944, 2874156288, 1431902976, 1431318016, 1789731328, 1453339904, 2865768960, 1431511040, 3578802432, 1453336320, 2865863680, 2862624512, 3579192064, 3041932800, 1436560384, 2863407360, 2862625536, 3041929216, 1437212160, 1432367360, 2862621952, 3041958400, 2874158336, 1433215744, 1431319808, 1788881408, 2907905792, 2865771008, 1431316224, 1789500416, 1520447232, 2866160640, 2863674880, 1431317504, 1521262848, 1436562432, 2863671296, 1431477760, 3041931264, 1453336064, 2863700480, 2862624000, 3042255360, 2907714816, 1432365568, 2863374080, 2862625280, 2907711232, 1432984576, 1431318272, 2863506432, 1520449280, 2874157824, 1432101120, 1431319552, 1520445696, 2874318080, 2863673344, 1431315968, 1789434624, 1453337856, 2863964672, 2862626048, 3578800640, 1454087936, 1436561920, 2862622464, 3578928128, 2907713024, 1437475840, 1431320320, 2862623744, 3042189312, 2874159872, 1431316736, 2863308288, 1788882944, 2874156288, 1432951552, 1431318016, 1789731328, 1453339904, 2865768960, 1431511040, 3578802432, 1520445184, 2865863680, 2862624512, 3579192064, 3041932800, 1436560384, 2863931648, 2862625536, 3041929216, 1437212160, 1432367360, 2862621952, 3041958400, 2907712768, 1433215744, 1431319808, 1788881408, 2907905792, 2865771008, 1431316224, 2863242240, 1520447232, 2866160640, 2863674880, 1431317504, 1521262848, 1453339648, 2863671296, 1431477760, 3041931264, 1453336064, 2863700480, 2862624000, 3579126272, 2907714816, 1432365568, 2863374080, 2862625280, 2907711232, 1437178880, 1431318272, 2863506432, 1520449280, 2874157824, 1432101120, 1431319552, 1788881152, 2874318080, 2863673344, 1431315968, 1788910336, 2862623744, 3042255104, 2874160128, 1432365568, 2863373824, 1788883200, 2907710976, 1432984576, 1431318016, 1789764352, 1520449024, 2865769216, 1432100864, 1431319296, 1520445440, 2865929472, 2863673088, 1431315712, 1520998912, 1453337856, 2863964416, 2862625792, 3041929472, 1454087936, 1432367360, 2862622208, 3578927872, 2907713024, 1433281280, 1431320064, 2862623488, 2907971584, 2874159616, 1431316480, 2863308032, 1520447488, 2874156032, 1431902720, 1431317760, 1789731328, 1453339648, 2863671552, 1431510784, 3578802432, 1453336064, 2865863424, 2862624256, 3579192064, 2907714816, 1436560128, 2863407104, 2862625536, 3041928960, 1437211904, 1431318528, 2862621952, 3041958144, 2874158080, 1433215488, 1431319808, 1788881152, 2874351104, 2865770752, 1431316224, 1789500160, 1453338112, 2866160384, 2862626304, 3578800640, 1521262592, 1436562176, 2862622720, 3578960896, 3041931008, 1436558592, 2863700480, 2862623744, 3042255104, 2874160128, 1432365568, 2863373824, 1788883200, 2907710976, 1432984576, 1431318016, 1789764352, 1520449024, 2865769216, 1432100864, 1431319296, 1520445440, 2865929472, 2863673088, 1431315712, 1520998912, 1453337856, 2863964416, 2862625792, 3041929472, 1454087936, 1432367360, 2862622208, 3578927872, 2907713024, 1433281280, 1431320064, 2862623488, 2907971584, 2874159616, 1431316480, 2863308032, 1520447488, 2874156032, 1431902720, 1431317760, 1789731328, 1453339648, 2863671552, 1431510784, 3578802432, 1453336064, 2865863424, 2862624256, 3579192064, 2907714816, 1436560128, 2863407104, 2862625536, 3041928960, 1437211904, 1431318528, 2862621952, 3041958144, 2874158080, 1433215488, 1431319808, 1788881152, 2874351104, 2865770752, 1431316224, 1789500160, 1453338112, 2866160384, 2862626304, 3578800640, 1521262592, 1436562176, 2862622720, 3578960896, 3041931008, 1436558592, 2863700480, 3041929984, 1454186752, 1432368128, 2862622976, 3042123008, 2907713536, 1432364544, 2863241984, 1788882176, 2908103168, 2865771776, 1431317248, 1789697792, 1453339136, 2865768192, 1431477504, 3578801664, 1453335552, 2865797376, 2862623744, 3579125760, 2907714304, 1436559616, 2863373824, 2862624768, 2907710720, 1437178624, 1431318016, 2863505920, 1520448768, 2874157568, 1432100864, 1431319040, 1520445184, 2874317824, 2863673088, 1431315456, 1520998656, 1453337600, 2863964416, 2862625536, 3578800128, 1454087680, 1432367360, 2862621952, 3042056704, 2907712768, 1433281280, 1431319808, 1788881408, 2907971328, 2865771008, 1431316224, 1789565952, 1520447232, 2865767424, 1431378176, 3578800896, 1521295616, 1436562432, 2862622720, 3578993920, 3041931264, 1436558848, 2863241728, 2862624000, 3042320896, 2874160384, 1431316992, 2863406848, 1788883456, 2874156800, 1431968768, 1431318272, 1788879872, 2874185984, 2862623488, 3042254848, 3578802944, 1453336832, 2863897856, 2862624768, 3578799360, 1453955840, 1432366336, 2863505920, 2862626048, 2907712000, 1433149184, 1431319040, 2862622464, 2907872256, 2865769984, 1431315456, 2863175936, 1520446464, 2866094080, 2863674112, 1431316736, 1521196544, 1436561408, 2863670528, 1431444224, 3041930496, 1437475328, 1432368384, 2862623232, 3042189056, 2874159360, 1432364800, 2863307776, 1788882688, 2874155776, 1432951040, 1431317504, 1789731072, 1453339392, 2865768448, 1431510528, 3578802176, 1453335808, 2865863168, 2862624000, 3579191808, 2907714560, 1436559872, 2863406848, 2862625280, 2907710976, 1437211648, 1431318272, 2862621696, 2907740160, 2865769216, 1432166656, 1431319552, 1520445440, 2865995008, 2863673344, 1431315968, 1521064448, 1436560640, 2864062976, 2862626048, 3041929472, 1437376256, 1432367616, 2862622464, 3042089728, 2874158592, 1432364032, 2863175936, 1788881664, 2874482688, 2865771264, 1431316736, 1789631744, 1453338624, 2865767680, 1431411456, 3578801152, 1454219776, 1436562688, 2862623232, 3579059712, 2907713792, 1436559104, 2863307776, 2862624256, 2907710208, 1437145344, 1431317504, 2863472640, 1520448256, 2874157056, 1432034816, 1431318528, 1520444672, 2874251776, 2863672576, 1431708160, 3041932288, 1453337088, 2863931136, 2862625024, 3041928704, 1453988864, 1432366848, 2862621440, 3041957888, 2907712256, 1433215232, 1431319296, 2862622720, 2907905280, 2865770496, 1431315712, 1789499904, 1520446720, 2866160128, 2862625792, 3578800384, 1521262336, 1436561920, 2862622208, 3578960640, 3041930752, 1436558336, 2863306752, 2862623488, 3041927168, 1437144576, 1431316480, 2863471872, 1788882944, 2874156288, 1432033792, 1431317760, 1788879360, 2874251008, 2863671552, 1431707392, 3041931520, 1453336320, 2863962880, 2862624256, 3041927936, 1454020864, 1432365824, 2862620672, 3041957120, 2907711488, 1433246976, 1431318528, 1788880128, 2907937280, 2865769472, 1431314944, 1789499136, 1520445952, 2866159104, 2862625024, 3578799616, 1521261568, 1436560896, 2862621440, 3578959872, 3041929984, 1436557312, 2863174912, 2862622720, 3042254080, 2874158848, 1431315712, 2863372800, 1788882176, 2874155264, 1431967488, 1431316992, 1789796096, 1453338880, 2863670784, 1431575552, 3578801664, 1453335296, 2863831040, 2862623488, 3578798080, 1453921536, 1432365056, 2863471872, 2862624768, 2907710464, 1433082368, 1431317760, 2862621184, 2907805184, 2865768704, 1431707392, 3578802432, 1520444928, 2866027264, 2862624256, 3578798848, 1521129472, 1436560128, 2862620672, 3578860800, 3041928960, 1437408512, 1431318528, 2862621952, 3042121984, 2874158080, 1431314944, 2863240960, 1788881152, 2874547712, 2863673600, 1431316224, 1789696768, 1453338112, 2863670016, 1431476480, 3578800640, 1453334528, 2863699200, 2862622720, 3579124736, 2907713280, 1432364288, 2863372800, 2862623744, 2907709696, 1432983296, 1431316992, 2863504896, 1520447744, 2865767936, 1432099840, 1431318016, 1520444160, 2865928192, 2863672064, 1431314432, 1521030400, 1436559360, 2863996160, 2862624512, 3041928192, 1437276672, 1432366336, 2862620928, 3042055680, 2874157312, 1433280256, 1431318784, 1788880384, 2874415872, 2865769984, 1431315200, 1789564928, 1453337344, 2865766400, 1431377152, 3578799872, 1454218496, 1436561408, 2862621696, 3579025664, 2907712512, 1436557824, 2863240704, 2865768704, 1431707392, 3578802432, 1520444928, 2866092800, 2862624256, 3578798848, 1433049088, 1431317248, 1788878848, 2874184960, 2865768192, 1431641344, 3578801920, 1453335808, 2865993984, 2862623744, 3578798336, 1453954816, 1436559616, 2863504896, 2862625024, 2907710976, 1437375232, 1431318016, 2862621440, 2907871232, 2874157568, 1431314432, 3312522496, 2773493760, 3534560256, 2996842240, 3578799104, 1454086656, 1436560384, 2781880576, 1255773952, 1236281856, 2833128960, 2773496064, 2862622208, 3042188032, 2907712768, 1302340352, 2782009344, 2775591680, 1387274240, 2763592960, 1689266176, 1789730048, 1520447232, 2874156032, 1265834496, 1256205568, 1453334784, 2863764992, 2862622976, 3042319872, 2907713536, 1432364544, 2863438592, 1788882432, 2907709952, 1433049088, 1431317248, 1788878848, 2907739136, 2865768192, 1431641344, 3578801920, 1520444416, 2865993984, 2862623744, 3578798336, 1521063424, 2840602880, 3031309824, 1788883200, 2875204864, 1437899520, 1265643008, 1164977152, 1387960320, 1387277056, 1766858752, 1789498624, 1520445184, 2874514432, 2530225920, 1256203520, 2775816448, 2765106176, 3530563840, 1498584832, 3041929216, 1453334016, 2865795840, 2513446400, 1257020160, 1236282880, 2765103872, 3530201088, 2862623232, 3041926912, 1453921536, 765470720, 2514820096, 2507157248, 1236280576, 2763758080, 1689267200, 1787830528, 2907837952, 1800415488, 727719424, 2511377152, 2473600512, 1237097472, 1248865792, 1766859520, 1788549120, 1520446208, 1792024320, 1265177856, 1256204288, 2775981312, 2463117056, 3396346880, 1420532224, 3030395904, 3113230336, 1532139008, 2530224384, 653139712, 1238380800, 2731550208, 2993462016, 1766862336, 2862621184, 2907903744, 2875206144, 1437605888, 1236899072, 628107264, 1387633920, 3533713152, 3931120384, 1831606528, 1520446464, 2874155264, 2511476224, 2472552704, 3379568128, 1689326592, 3567265024, 3931445760, 3578801408, 1520444160, 2865960704, 2799708672, 2464161792, 2775160064, 2773493504, 3534593024, 1788882688, 3041928192, 1454119168, 1439706112, 634397184, 2463766272, 1389373696, 2840600064, 3030946560, 2862622208, 3042253312, 2874158336, 1268785920, 2779977728, 2742036992, 1383079936, 1689883904, 1429219328, 1789238272, 3667930624, 2605720576, 728504832, 1256205312, 2774540544, 3518666240, 1231038976, 3568311552, 1519424256, 3600819456, 1456806656, 1439706368, 634397440, 2733283328, 2463116032, 2840600320, 3567916032, 2904565504, 3047562240, 2879401472, 1437606912, 1237064192, 1164979456, 1387274496, 2841286144, 1766861056, 1788878336, 2907738624, 2875204864, 1265965824, 1256205824, 2775589376, 1387468800, 3533711872, 3931119360, 1789498368, 1522542336, 2876120064, 383791104, 2329945088, 3312720128, 2841652224, 3567264000, 3646067968, 3041929216, 1453334016, 2865795840, 2781881600, 2463963904, 1387277824, 2832212736, 3568015104, 2996840960, 3041926912, 1453954304, 1302341376, 2780175360, 2775592704, 1387275520, 2830866688, 1697655808, 1788879104, 2874316288, 2874157056, 1264590336, 2775618304, 2775590400, 1366596352, 3511692544, 3576701440, 1788581888, 1453337088, 1523588864, 1265210624, 1256204288, 2733480960, 2731552512, 3511690240, 3568015616, 3038784256, 3047170048, 1456608768, 1437608192, 1238375936, 2765689600, 2729453056, 2858228480, 1783639296, 2904564224, 3043170048, 2875206144, 1437605632, 1169790208, 1164978176, 1656102144, 3568315904, 1783636992, 1789663488, 1520446464, 2875203584, 1399461376, 2464164096, 3311410688, 3567849984, 3567265024, 3646233088, 3041930496, 1453335040, 2865993472, 2781882880, 1389371392, 2841220096, 2840602368, 3534593024, 2862624512, 3041927936, 1437374720, 1268788224, 2511347968, 1387959808, 1236281600, 2830114304, 2996343552, 1788880128, 2908035584, 1800416512, 727720704, 2775783168, 2742036992, 1366302720, 1756501248, 3576702464, 1519787008, 3600821760, 1456481280, 720115968, 1256205312, 2732597504, 3513423360, 3377473536, 3575651584, 3666940416, 3047171328, 1456806400, 1437609216, 1171268352, 2732267520, 2729454080, 2840600320, 3031045120, 1830823680, 2909149952, 2875207168, 1437606912, 1169955328, 1164979200, 1387274496, 1767020032, 3914344448, 1788878080, 2907738624, 2875204864, 1399167744, 3401591808, 3848282368, 3534460672, 3533711872, 3645906432, 1521062912, 1453336320, 2799049728, 2513448448, 1255154688, 2765854976, 2765106176, 2992644096, 3042088192, 3041929216, 1436556800, 2513474048, 2511348992, 1253874432, 1236282880, 2763006464, 2862323456, 1788881408, 2907709184, 1302959104, 727721728, 2507545600, 2742038272, 1366303744, 1689524480, 3568315136, 1519395072, 1800574208, 1456482304, 719330816, 2473661184, 2732598528, 3379370496, 2840603904, 3567264256, 3667105280, 3047172352, 1456480000, 718902528, 634398464, 2464029696, 2461019904, 2840601600, 3031209984, 2896177920, 2907709440, 1437767168, 1269835776, 632299008, 2461602560, 1387275776, 1767709184, 1498426624, 1788879360, 2874382080, 2875205888, 1264590592, 2775684096, 2775590656, 1387666432, 3533712896, 3578798848, 1521260800, 1453337344, 2530222080, 1256887808, 1255155968, 2765102336, 3530101248, 2992645376, 3042253312, 2907712512, 899686912, 2513639168, 2511350272, 1236279040, 2765755392, 2763007744, 2858294272, 1788882432, 1833968384, 766286080, 726674432, 2473598976, 1232246272, 3379570688, 1689263616, 1783697920, 3666879488, 1800739328, 1456483584, 652222976, 2473793280, 2464164352, 3378519808, 3567915776, 3567265280, 3600161536, 2912955904, 1456481024, 651991296, 634399744, 2461016320, 2841285888, 2840602624, 3030392064, 3041956352, 2908759040, 1437964800, 1269837056, 632300288, 1388025600, 1387276800, 1766858496, 1789498368, 1788880384, 2874546944, 2808098304, 1264591872, 2775848960, 2774543104, 3529515008, 3912406272, 3578799872, 1520442624, 2874249728, 2530223360, 1257085440, 1238379776, 2765103616, 3530266368, 2857380096, 3041926656, 1453986816, 899688192, 2513443584, 1255706880, 1236280320, 2763823360, 1689266944, 2857377792, 3041596672, 1800415232, 765467904, 2511409664, 2473600256, 1232476928, 3379571712, 1689264640, 1783895808, 3662686464, 1530928640, 2875855616, 719333120, 2464160768, 3379630080, 3378520832, 3568080896, 3567266560, 3595575040, 1521161472, 1439705088, 651173376, 2464748032, 2461017344, 2841451008, 2840603904, 3030393088, 3042186752, 2907711744, 1437605632, 632951808, 628107008, 1387273216, 2841153792, 1766859520, 1789696000, 1520446208, 2874155008, 1265276160, 1264592896, 2775588096, 1383174912, 3529516032, 3912603904, 3578801152, 1520443904, 2605979136, 2530224384, 1256201984, 2766803968, 2765104640, 3528465152, 3643346944, 3040879360, 3601667840, 765471488, 2513444864, 1255872000, 1236281344, 2763005184, 2992247296, 1783637248, 3039664384, 1799367680, 2875203840, 2511607552, 2473601280, 1232084736, 1689916416, 1420830464, 1784027904, 3662687488, 1522541312, 2876053504, 652225280, 2464161792, 3379762432, 3378522112, 3567262720, 3662745856, 3578799104, 1454217728, 1437608960, 634397184, 2464913152, 2456824320, 2840600064, 3567948544, 3030394368, 3041925888, 1453887488, 1303388928, 632592640, 2775591680, 1387274240, 2841318656, 1766860800, 1788878080, 2907803904, 2874156032, 1265474048, 1256205568, 2775589120, 1383307008, 3529517312, 3912244736, 1789563648, 1520444928, 2605718272, 1265176832, 1256203008, 2767001600, 2765105920, 3529515008, 3576370176, 3038783232, 3600817152, 1456542208, 2513445888, 1239292416, 1236282624, 2763006464, 2858161664, 1783638272, 3040878080, 3047297792, 2875204864, 2511346432, 1236865280, 1232086016, 1690081280, 1420831488, 1783635968, 1831572736, 1522542336, 2875202560, 2473693696, 2464163072, 3379960064, 3378523136, 3567264000, 3662943744, 3041929216, 1453334016, 2866451200, 634398464, 2464160512, 3378057216, 2840601344, 3568080896, 2996840960, 3041926912, 1454085376, 1302341632, 2779782144, 1387926016, 1387275520, 2839419392, 1764764672, 1788879104, 2907969024, 2874157312, 1264590336, 2775716608, 2775590400, 1383078912, 1764823040, 3845136896, 1822234624, 1453337344, 1531977472, 1265308928, 1256204288, 2766150912, 3530166528, 3529516032, 3576535296, 3038784512, 3063947264, 1456772608, 1433413888, 1238376192, 2765787904, 2763007488, 2857376512, 3039334400, 3038781952, 3046446848, 2875206144, 2511347712, 1236997376, 1232087040, 1689263360, 2857996800, 1783636992, 1798150400, 1522543616, 2875203840, 720115200, 1239427328, 2765102592, 3529151232, 2991596800, 3038779904, 3666939648, 3047170560, 2513770240, 2511350272, 1236279296, 2763724032, 2763007744, 2857376768, 3039432960, 1832920064, 2909149184, 2875206400, 2473599232, 1239160576, 1232087296, 1689263616, 1783796480, 3662685440, 1520441856, 2875232000, 2799706624, 2465044480, 2464164352, 3378519808, 3568014336, 3567265536, 3578796800, 1521062144, 1453335552, 2798655744, 2464714240, 2461016320, 2774275584, 2840602880, 2996837632, 3042087424, 2907710720, 1302338304, 2781908736, 2775589376, 1388091392, 1383082752, 1764761344, 1788580864, 1788880640, 2874153984, 1269403904, 1264591872, 2792757504, 2732600320, 3512737792, 3912504576, 3567265792, 3667926272, 1532137984, 1456481536, 1256200960, 2733182976, 2731549184, 3512538880, 2857380352, 3038781184, 3601044224, 2912953856, 1439702016, 1238995456, 1169171456, 2729449728, 3512241664, 2857378048, 3039597824, 1797269504, 2908757248, 1437766400, 2473600256, 1164974848, 2730070016, 1387275008, 1783961344, 3645909248, 1520443136, 2875429888, 2799707648, 1390418944, 3312554240, 2774541312, 3534592000, 3533712128, 3578798080, 1521260032, 1453336576, 2798656768, 1391104768, 1387275776, 2832210432, 3534294784, 2996838912, 3042252544, 2907711744, 1302339328, 2782073856, 2775590656, 1370496000, 2830766336, 1697653760, 1788745984, 1520446208, 2874155008, 732730880, 727722240, 2742033664, 1366463232, 3512739072, 3836746240, 1787924224, 3667927296, 1532335872, 1456482816, 719331072, 2733347840, 2731550464, 3511688192, 3567915008, 3038782208, 3063289856, 2912955136, 1439703040, 635213312, 1169172736, 2729451008, 2841285120, 2840601856, 3038779904, 3041955584, 2875203840, 1437996800, 1265641984, 1164976128, 1388024832, 1387276032, 1766857728, 1823084800, 1520444160, 2874546176, 2799708928, 1256202496, 2775848192, 2774542336, 3533708544, 3914535424, 3578799104, 1453332992, 2865827584, 2513445376, 1257084672, 1236281856, 2765102848, 3530265600, 2996839936, 3041925888, 1453986048, 765469696, 2511345664, 1253608960, 1236279552, 2763822592, 1689266176, 1787829504, 2907902464, 1800414464, 727718400, 2507214592, 2473599488, 1232443392, 3378522368, 3836747264, 1788056576, 3667928576, 1523587840, 728338688, 652223488, 2464160000, 3379105024, 3377471488, 3568080128, 3030394880, 3062897664, 1456673280, 1437607168, 634395392, 2463698688, 2461016576, 2841450240, 1766861312, 1956650496, 3042185984, 2875205120, 1404050432, 632951040, 628106240, 1387272448, 2841153024, 1766858752, 1789695232, 1520445440, 2874154240, 1265275392, 1256203520, 2742032896, 1383174144, 3533709568, 3646264832, 3041929472, 1453334272, 2530448128, 2513446400, 1256201216, 2765754624, 2765103872, 3528464384, 3578825984, 3041927168, 1454150912, 765470720, 2511346944, 1236964096, 1232086272, 2763004416, 2992246528, 1787830784, 2908100096, 1531980032, 727719680, 2507412480, 2465211904, 1232083968, 1689391360, 3567264512, 3931510528, 3599772160, 1456480256, 728569344, 652224512, 2464161024, 3379237376, 3377472768, 3567261952, 3662745088, 3046121728, 1456871168, 1437608192, 634396416, 2463863808, 2461017856, 2840599296, 3031076864, 1822434048, 2907707392, 1437633792, 1269833728, 633116160, 628107520, 1387273472, 2840793600, 3914343424, 1788877312, 2907803136, 2874155264, 1265473280, 1256204800, 2775588352, 1382781952, 3529516544, 3645905664, 1521127424, 1453335296, 2530220032, 1256787456, 1256202240, 2765952256, 2765105152, 3528465664, 3578466560, 3041928192, 899684864, 2513506048, 2511347968, 1237194496, 1232087552, 2763005696, 2992378624, 1783637504, 1832917760, 2913603584, 727720704, 2473596928, 1232672768, 1232087808, 1689558784, 3567268096, 3931121152, 1800084480, 1456483840, 727720960, 2465306880, 2464164864, 3379404800, 2840605440, 3567265792, 3662945536, 3041931008, 1454384384, 651827968, 634400256, 2463113728, 3378059008, 2840603136, 3031211776, 1788883200, 2907710976, 1437277184, 1269837568, 632300544, 1387895040, 1387277312, 2840961280, 3914347008, 1788880896, 2907970816, 2605723648, 1264592128, 2775718400, 2767203584, 1382032128, 3912308224, 3578800384, 1521295104, 1453339136, 2530223616, 1256922112, 1239428864, 2765104128, 3530168320, 3528469248, 3576537088, 3040883456, 3047171840, 2513706240, 2511351808, 1236280832, 2763659776, 2763009280, 2857378304, 3039336192, 1832921344, 2913836544, 727724544, 2473600768, 1232804864, 1232088832, 1689265152, 1783765248, 3662686720, 1797267456, 2875266304, 2875205632, 2473270528, 2464165888, 3378521344, 3567950336, 3567266816, 3662684416, 1521063680, 1453337088, 2798886400, 2781884672, 2463115008, 2841320448, 2840604160, 3030393600, 3042056192, 2907712256, 1436557312, 2781943040, 2779785216, 1388027392, 1387278336, 1764762880, 1957337600, 1788882176, 2907709696, 1302959872, 1264593408, 2775850752, 2766156032, 3529516544, 3912440576, 3575655936, 3667927552, 1800542208, 1456483072, 1256202496, 2766771456, 2765105152, 3529219328, 2991599616, 3575653376, 3600980224, 3047173120, 1439703552, 1255773952, 1236281856, 2763759360, 2763010560, 2857379584, 3039501312, 1830825728, 2912953344, 1437735168, 2473602048, 1232085504, 1689884416, 1689266432, 1783864832, 3662688256, 1520444928, 2875365888, 2866818304, 2464162560, 3379664896, 3378522624, 3568049920, 3567268352, 3578799872, 1521163264, 1453338368, 2798658560, 1391073792, 1389374464, 2840600832, 3567883776, 3030395136, 3042155776, 2907713536, 1436558848, 2782042880, 2779786496, 1387275008, 2830768128, 1764764416, 1788649216, 1788883456, 2874156800, 1303059712, 1264594688, 2775589888, 1366432256, 3512740864, 3912245248, 1787926016, 3667929088, 1532206592, 1456484352, 1256203776, 2766838528, 2731552256, 3511689728, 3576305408, 3038784000, 3600064256, 2912956672, 1439704832, 719002880, 1169174528, 2729452544, 2975504640, 2840603648, 3038781696, 3046184192, 2908760064, 1437834752, 1399861504, 1164977664, 1656396544, 1387277824, 1766859520, 1823053568, 1520445952, 2874482432, 2798662144, 1256204032, 2775784448, 2774544128, 3533710336, 3914504192, 3578800896, 1520443648, 2874250752, 2798659584, 1256955392, 1253060864, 2832213504, 3534395904, 2996841728, 3041927680, 1453987840, 1302342144, 2513444608, 1253643520, 1236281344, 2830834688, 1689267968, 1787831296, 3042056448, 1800416256, 731914752, 2511410944, 2473601536, 1366499072, 3512742144, 3836749312, 1787993088, 3666881792, 1531978496, 728340736, 719334400, 2732597248, 3513324800, 3377473536, 3567983872, 3038785280, 3062899712, 1456609792, 1439706368, 634397184, 2732168960, 2729454080, 2841353984, 2840604928, 3030394368, 3042089728, 2907713024, 1437606656, 632953088, 628108288, 1388093696, 1387279104, 1766860800, 1823153408, 1520447488, 2874156032, 1399462400, 1256205568, 2775589376, 1386845952, 3533711616, 3914571264, 3578802432, 1520444928, 2865928960, 2513448448, 1256203264, 2774145024, 2765105920, 3529252864, 2995794688, 3041928960, 1454087424, 765472768, 2513446144, 1253743104, 1236282624, 2763006464, 2992215808, 1787832576, 2907446784, 1800417536, 727721728, 2511510272, 2473602560, 1232086016, 1689393408, 3835701760, 3931447040, 3666883072, 1523591168, 728440064, 719335424, 2464163072, 3379206656, 3377474560, 3567264000, 3662779904, 3062900992, 1456709120, 1437610240, 634398464, 2463800320, 2461019648, 2840601344, 3567917056, 3030395648, 3041926912, 1453921536, 1437607936, 633019904, 628109312, 1387275520, 2840762880, 3914345472, 1788879104, 2907805184, 2874157312, 1265377024, 1256206848, 2775590656, 1382718720, 3529518848, 3645907712, 1789532416, 1453337600, 2597331200, 1256789504, 1256204544, 2765823488, 2765107456,
|
||
}
|
||
}
|
||
|
||
// 处理公元-105-1912年间的农历
|
||
// 返回:农历年,农历月,农历月干支(闰月从上月),农历日,是否闰月,农历日期字符串
|
||
func rapidLunarHan2Qing(year, month, day int, diff int, options func() map[int]uint32) (int, int, string, int, bool, string) {
|
||
useGoto := false
|
||
beijingTime := time.FixedZone("CST", 8*3600)
|
||
recalc:
|
||
idx := year + 105
|
||
magic := getHanQingCals()[idx]
|
||
if options != nil {
|
||
if v, ok := options()[year]; ok {
|
||
magic = v
|
||
}
|
||
}
|
||
springDays := int8((magic >> 7)) >> 1
|
||
if springDays>>6 == 1 {
|
||
springDays = -(springDays << 2 >> 2)
|
||
}
|
||
springDate := time.Date(year-1, 12, 31, 0, 0, 0, 0, beijingTime).AddDate(0, 0, int(springDays))
|
||
if !useGoto && (int(springDate.Month()) > month || ((int(springDate.Month()) == month) && springDate.Day() > day)) {
|
||
year--
|
||
useGoto = true
|
||
goto recalc
|
||
}
|
||
calcYear := year
|
||
if useGoto {
|
||
calcYear++
|
||
}
|
||
target := time.Date(calcYear, time.Month(month), day, 0, 0, 0, 0, time.Local)
|
||
diffDay := int(target.Sub(springDate).Hours() / 24)
|
||
//go语言在; 1582年10月4日前,使用的是逆推格里高利历,与实际使用的儒略历有所不同,主要体现在百年闰年计算上!
|
||
//儒略历修正
|
||
if springDate.Year()%100 == 0 && springDate.Year()%400 != 0 && springDate.Year() < 1582 && (target.Month() >= 3 || (target.Year() > springDate.Year())) {
|
||
diffDay++
|
||
}
|
||
//儒略历转格里高历修正
|
||
if calcYear == 1582 && ((month == 10 && day >= 15) || month > 10) {
|
||
diffDay -= 10
|
||
}
|
||
if calcYear == 1583 && month == 1 && day <= 23 {
|
||
diffDay -= 10
|
||
}
|
||
lunarMonth := 1
|
||
totalDay := 0
|
||
isLeap := false
|
||
leapMonth := int(uint8(magic>>15) & 0xF)
|
||
for i := 0; i < 13; i++ {
|
||
var dayofLunar = 29
|
||
if uint8(magic>>(31-i))&1 == 1 {
|
||
dayofLunar++
|
||
}
|
||
if totalDay+dayofLunar > diffDay {
|
||
lday := diffDay - totalDay + 1
|
||
|
||
format := formatLunarDateString(lunarMonth, lday, isLeap, diff)
|
||
ganzhiOfMonth := commonGanZhiOfMonth(year, lunarMonth)
|
||
|
||
if diff == 255 {
|
||
diff = 2
|
||
}
|
||
if diff != 0 {
|
||
lunarMonth += diff
|
||
if lunarMonth > 12 {
|
||
lunarMonth -= 12
|
||
year++
|
||
}
|
||
}
|
||
return year, lunarMonth, ganzhiOfMonth, lday, isLeap, format
|
||
}
|
||
totalDay += dayofLunar
|
||
lunarMonth++
|
||
if lunarMonth-leapMonth == 1 && !isLeap {
|
||
isLeap = true
|
||
lunarMonth--
|
||
} else {
|
||
isLeap = false
|
||
}
|
||
}
|
||
return 0, 0, "", 0, false, "无法获取农历信息"
|
||
}
|
||
|
||
func rapidSolarHan2Qing(year, month, day int, isLeap bool, diff int, options func() map[int]uint32) time.Time {
|
||
useGoto := false
|
||
beijingTime := time.FixedZone("CST", 8*3600)
|
||
recalc:
|
||
idx := year + 105
|
||
magic := getHanQingCals()[idx]
|
||
if options != nil {
|
||
if v, ok := options()[year]; ok {
|
||
magic = v
|
||
}
|
||
}
|
||
springDays := int8((magic >> 7)) >> 1
|
||
if springDays>>6 == 1 {
|
||
springDays = -(springDays << 2 >> 2)
|
||
}
|
||
springDate := time.Date(year-1, 12, 31, 0, 0, 0, 0, beijingTime).AddDate(0, 0, int(springDays))
|
||
if diff == 255 {
|
||
diff = 2
|
||
}
|
||
if diff > 0 && !useGoto {
|
||
month = month - diff
|
||
if month <= 0 {
|
||
month += 12
|
||
year--
|
||
useGoto = true
|
||
goto recalc
|
||
}
|
||
}
|
||
|
||
lunarMonth := 1
|
||
totalDay := 0
|
||
leap := false
|
||
leapMonth := int(uint8(magic>>15) & 0xF)
|
||
for i := 0; i < 13; i++ {
|
||
if lunarMonth == month && isLeap == leap {
|
||
target := springDate.AddDate(0, 0, totalDay+day-1)
|
||
if target.Year() == 1582 && ((target.Month() == 10 && target.Day() > 4) || target.Month() > 10) {
|
||
target = target.AddDate(0, 0, 10)
|
||
}
|
||
//go语言在; 1582年10月4日前,使用的是逆推格里高利历,与实际使用的儒略历有所不同,主要体现在百年闰年计算上!
|
||
//儒略历修正
|
||
if springDate.Year()%100 == 0 && springDate.Year()%400 != 0 && springDate.Year() < 1582 && (target.Month() >= 3 || (target.Year() > springDate.Year())) {
|
||
target = target.AddDate(0, 0, -1)
|
||
}
|
||
return target
|
||
}
|
||
var dayofLunar = 29
|
||
if uint8(magic>>(31-i))&1 == 1 {
|
||
dayofLunar++
|
||
}
|
||
totalDay += dayofLunar
|
||
lunarMonth++
|
||
if lunarMonth-leapMonth == 1 && !leap {
|
||
leap = true
|
||
lunarMonth--
|
||
} else {
|
||
leap = false
|
||
}
|
||
}
|
||
return time.Time{}
|
||
}
|
||
|
||
func yearDiff(year, month, day int) int {
|
||
// 王莽改制,公元9年-22年,建丑为正月
|
||
// 注意,公元23年恢复建寅为正月,但是当年还是新朝地皇四年,如果在新朝的角度,当年还是建丑为正月!
|
||
if year == 9 && month == 1 && day < 15 {
|
||
return 0
|
||
}
|
||
if year == 23 && month == 12 && day == 31 {
|
||
return 0
|
||
}
|
||
if year >= 9 && year <= 23 {
|
||
return 1
|
||
}
|
||
//魏明帝改制,公元237年-240年,建丑为正月
|
||
if year == 237 && month > 4 {
|
||
return 1
|
||
}
|
||
if year == 237 && month == 4 && day >= 12 {
|
||
return 1
|
||
}
|
||
if year > 237 && year < 240 {
|
||
return 1
|
||
}
|
||
if year == 240 && month == 1 && day < 12 {
|
||
return 1
|
||
}
|
||
//武则天改制,公元690年-700年,建子为正月
|
||
if year == 689 && month == 12 && day >= 18 {
|
||
return 255
|
||
}
|
||
if year >= 690 && year < 700 {
|
||
return 255
|
||
}
|
||
if year == 700 && (month < 12 || month == 12 && day <= 14) {
|
||
return 255
|
||
}
|
||
//唐肃宗改制,公元761-762年,建寅为正月
|
||
if year == 761 && month == 12 && day >= 2 {
|
||
return 2
|
||
}
|
||
if year == 762 && month < 4 {
|
||
return 2
|
||
}
|
||
if year == 762 && month == 4 && day < 29 {
|
||
return 2
|
||
}
|
||
return 0
|
||
}
|
||
|
||
func yearDiffLunar(year, month, day int) int {
|
||
// 王莽改制,公元9年-22年,建丑为正月
|
||
// 注意,公元23年恢复建寅为正月,但是当年还是新朝地皇四年,如果在新朝的角度,当年还是建丑为正月!
|
||
if year >= 9 && year <= 23 {
|
||
return 1
|
||
}
|
||
//魏明帝改制,公元237年-240年,建丑为正月
|
||
if year == 237 && month >= 4 {
|
||
return 1
|
||
}
|
||
if year > 237 && year < 240 {
|
||
return 1
|
||
}
|
||
|
||
//武则天改制,公元690年-700年,建子为正月
|
||
if year >= 690 && year < 700 {
|
||
return 255
|
||
}
|
||
//有两个12月
|
||
if year == 700 && month != 11 {
|
||
return 255
|
||
}
|
||
//唐肃宗改制,公元761-762年,建寅为正月
|
||
if year == 762 && month <= 5 {
|
||
return 2
|
||
}
|
||
return 0
|
||
}
|
||
|
||
func formatLunarDateString(lunarMonth, lunarDay int, isLeap bool, diff int) string {
|
||
monthNames := []string{"十", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "冬", "腊"}
|
||
dayNames := []string{"十", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十"}
|
||
dayPrefixes := []string{"初", "十", "廿", "三"}
|
||
switch diff {
|
||
case 1:
|
||
monthNames = []string{"十", "二", "三", "四", "五", "六", "七", "八", "九", "十", "冬", "腊", "正"}
|
||
case 2:
|
||
monthNames = []string{"十", "三", "四", "五", "六", "七", "八", "九", "十", "冬", "腊", "正", "二"}
|
||
case 3:
|
||
monthNames = []string{"十", "四", "五", "六", "七", "八", "九", "十", "冬", "腊", "正", "二", "三"}
|
||
case 255:
|
||
//武则天改制,将冬月成为正月,正月改为一月
|
||
monthNames = []string{"十", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "正", "腊"}
|
||
}
|
||
var dateString string
|
||
|
||
if isLeap {
|
||
dateString += "闰"
|
||
}
|
||
dateString += monthNames[lunarMonth] + "月"
|
||
|
||
if lunarDay == 20 {
|
||
dateString += "二十"
|
||
} else if lunarDay == 10 {
|
||
dateString += "初十"
|
||
} else {
|
||
dateString += dayPrefixes[lunarDay/10] + dayNames[lunarDay%10]
|
||
}
|
||
|
||
return dateString
|
||
}
|
||
|
||
func innerSolarToLunarHanQing(date time.Time) Time {
|
||
year := date.Year()
|
||
month := int(date.Month())
|
||
day := date.Day()
|
||
yeardiff := yearDiff(year, month, day)
|
||
lyear, lmonth, ganzhiMonth, lday, isLeap, ldesc := rapidLunarHan2Qing(year, month, day, yeardiff, nil)
|
||
var eras []EraDesc
|
||
if lyear >= -103 && lyear <= 220 {
|
||
eras = innerEras(lyear, hanEras)
|
||
} else if lyear >= 221 && lyear <= 617 {
|
||
eras = innerEras(lyear, weiJinNanBeiChaoEras)
|
||
} else if lyear >= 618 && lyear <= 907 {
|
||
eras = innerEras(lyear, tangEras)
|
||
} else if lyear > 907 && lyear < 1368 {
|
||
eras = innerEras(lyear, wudaiSongYuanEras)
|
||
} else if lyear <= 1912 {
|
||
eras = innerEras(lyear, mingQingEras)
|
||
}
|
||
ldate := LunarTime{
|
||
solarDate: date,
|
||
year: lyear,
|
||
month: lmonth,
|
||
day: lday,
|
||
leap: isLeap,
|
||
desc: ldesc,
|
||
eras: eras,
|
||
ganzhiMonth: ganzhiMonth,
|
||
comment: "",
|
||
}
|
||
var otherLunars []LunarTime
|
||
//王莽特殊处理
|
||
if lyear == 23 {
|
||
liuxiu := ldate.eras[len(ldate.eras)-1:]
|
||
ldate.eras = ldate.eras[:1]
|
||
if month > 2 || (month == 2 && day >= 10) {
|
||
lyear, lmonth, ganzhiMonth, lday, isLeap, ldesc = rapidLunarHan2Qing(year, month, day, 0, nil)
|
||
otherLunars = append(otherLunars, LunarTime{
|
||
solarDate: date,
|
||
year: lyear,
|
||
month: lmonth,
|
||
day: lday,
|
||
leap: isLeap,
|
||
desc: ldesc,
|
||
eras: liuxiu,
|
||
ganzhiMonth: ganzhiMonth,
|
||
comment: "",
|
||
})
|
||
}
|
||
}
|
||
|
||
result := Time{
|
||
solarTime: date,
|
||
lunars: append([]LunarTime{ldate}, otherLunars...),
|
||
}
|
||
//三国时期
|
||
if year >= 220 && year <= 280 {
|
||
return innerSolarToLunarSanGuo(result)
|
||
}
|
||
//南北朝时期
|
||
if year >= 384 && year <= 589 {
|
||
return innerSolarToLunarNanBeiChao(result)
|
||
}
|
||
//五代十国辽金元
|
||
if year >= 947 && year <= 1279 {
|
||
return innerSolarToLunarLiaoJinYuan(result)
|
||
}
|
||
if year > 1644 && year < 1884 {
|
||
return innerSolarToLunarNanMing(result)
|
||
}
|
||
return result
|
||
}
|
||
|
||
func innerParseLunar(lunar string) ([]time.Time, error) {
|
||
date, err := parseChineseDate(lunar)
|
||
if err != nil {
|
||
return []time.Time{}, err
|
||
}
|
||
if date.year != 0 && date.comment == "" {
|
||
if date.year < -103 || date.year > 3000 {
|
||
return nil, fmt.Errorf("年份超出范围")
|
||
}
|
||
if date.year <= 1912 {
|
||
d := rapidSolarHan2Qing(date.year, date.month, date.day, date.leap, yearDiffLunar(date.year, date.month, date.day), nil)
|
||
return []time.Time{d}, nil
|
||
}
|
||
if date.year < 2400 {
|
||
dates := rapidSolarModern(date.year, date.month, date.day, date.leap)
|
||
return []time.Time{dates}, nil
|
||
}
|
||
dates := Solar(date.year, date.month, date.day, date.leap, 8.0)
|
||
return []time.Time{dates}, nil
|
||
}
|
||
|
||
data, err := innerLunar2SolarHanQing(date, nianHaoMap, nil)
|
||
if err != nil && err != ERR_NIANHAO_NOT_FOUND {
|
||
return data, err
|
||
}
|
||
if tmp, err := innerLunar2SolarHanQing(date, shuEraMap, shuCals); err == nil {
|
||
data = append(data, tmp...)
|
||
}
|
||
if tmp, err := innerLunar2SolarHanQing(date, wuEraMap, wuCals); err == nil {
|
||
data = append(data, tmp...)
|
||
}
|
||
if tmp, err := innerLunar2SolarHanQing(date, houQinEraMap, houQinCals); err == nil {
|
||
data = append(data, tmp...)
|
||
}
|
||
if tmp, err := innerLunar2SolarHanQing(date, weiZhouSuiEraMap, weiZhouSuiCals); err == nil {
|
||
data = append(data, tmp...)
|
||
}
|
||
if tmp, err := innerLunar2SolarHanQing(date, beiLiangEraMap, beiLiangCals); err == nil {
|
||
data = append(data, tmp...)
|
||
}
|
||
if tmp, err := innerLunar2SolarHanQing(date, dongWeiBeiQiEraMap, dongWeiBeiQiCals); err == nil {
|
||
data = append(data, tmp...)
|
||
}
|
||
if tmp, err := innerLunar2SolarHanQing(date, liaoJinYuanEraMap, liaoJinYuanCals); err == nil {
|
||
data = append(data, tmp...)
|
||
}
|
||
if tmp, err := innerLunar2SolarHanQing(date, nanMingEraMap, nanMingCals); err == nil {
|
||
data = append(data, tmp...)
|
||
}
|
||
return data, nil
|
||
}
|
||
|
||
func innerLunar2SolarHanQing(data LunarTime, nianHaoMap func() map[string][][]int, options func() map[int]uint32) ([]time.Time, error) {
|
||
isGanZhiDay := false
|
||
var tgIdx, dzIdex int
|
||
if data.ganzhiMonth != "" && data.day == 0 {
|
||
//日干支求解,先计算此月的初一,然后根据日干支求解
|
||
isGanZhiDay = true
|
||
data.day = 1
|
||
for idx, v := range tiangan {
|
||
if strings.HasPrefix(data.ganzhiMonth, v) {
|
||
tgIdx = idx
|
||
break
|
||
}
|
||
}
|
||
for idx, v := range dizhi {
|
||
if strings.HasSuffix(data.ganzhiMonth, v) {
|
||
dzIdex = idx
|
||
break
|
||
}
|
||
}
|
||
}
|
||
years := nianHaoMap()[data.comment]
|
||
if len(years) == 0 {
|
||
return []time.Time{}, ERR_NIANHAO_NOT_FOUND
|
||
}
|
||
var res []time.Time
|
||
for _, y := range years {
|
||
if y[1]-y[0]+1 < data.year {
|
||
continue
|
||
}
|
||
year := y[0] + data.year - 1
|
||
diff := yearDiffLunar(year, data.month, data.day)
|
||
//diff!=0且option!=nil时,只有三国时期存在,此时因为蜀汉和吴国都没有改制,所以不进行处理
|
||
if options != nil {
|
||
diff = 0
|
||
}
|
||
if diff == 255 {
|
||
if year == 700 && data.month == 12 {
|
||
res = append(res, rapidSolarHan2Qing(year, data.month, data.day, data.leap, 0, options))
|
||
}
|
||
data.month = data.month + 2
|
||
if data.month > 12 {
|
||
data.month = data.month - 12
|
||
}
|
||
if data.month == 3 && strings.Contains(data.desc, "正月") {
|
||
data.month = 1
|
||
}
|
||
}
|
||
if year == 23 && data.comment == "更始" {
|
||
diff = 0
|
||
}
|
||
res = append(res, rapidSolarHan2Qing(year, data.month, data.day, data.leap, diff, options))
|
||
//当年两个12月
|
||
if year == 239 && data.month == 12 {
|
||
res = append(res, rapidSolarHan2Qing(year, data.month, data.day, data.leap, 0, options))
|
||
}
|
||
//当年两个4月,5月
|
||
if year == 762 && (data.month == 4 || data.month == 5) {
|
||
res = append(res, rapidSolarHan2Qing(year, data.month, data.day, data.leap, 0, options))
|
||
}
|
||
}
|
||
var realRes []time.Time
|
||
for _, v := range res {
|
||
if v.IsZero() {
|
||
continue
|
||
}
|
||
if !isGanZhiDay {
|
||
realRes = append(realRes, v)
|
||
continue
|
||
}
|
||
//干支日求解
|
||
curTgIdx, curDzIdx := ganZhiOfDayIndex(v)
|
||
tgDiff := (tgIdx - curTgIdx + 10) % 10
|
||
dzDiff := (dzIdex - curDzIdx + 12) % 12
|
||
delta := (dzDiff - tgDiff + 12) % 12
|
||
delta2 := delta / 2
|
||
k := (delta2 * 5) % 6
|
||
d := tgDiff + 10*k
|
||
if d < 0 {
|
||
d += 60
|
||
}
|
||
if d > 30 {
|
||
continue
|
||
}
|
||
oldv := v
|
||
v = v.Add(time.Duration(d) * 24 * time.Hour)
|
||
if v.Year()%100 == 0 && v.Year()%400 != 0 && v.Month() >= 3 && v.Year() < 1582 {
|
||
if oldv.Month() < 3 {
|
||
v = v.AddDate(0, 0, 1)
|
||
}
|
||
}
|
||
if oldv.Year() == 1582 && ((oldv.Month() == 10 && oldv.Day() <= 4) || oldv.Month() < 10) {
|
||
if v.Month() > 10 || (v.Month() == 10 && v.Day() > 4) {
|
||
v = v.AddDate(0, 0, 10)
|
||
}
|
||
}
|
||
realRes = append(realRes, v)
|
||
}
|
||
return realRes, nil
|
||
}
|