pub(crate) const KBI_NODES: usize = 18;
pub(crate) const KBI_PRICE_ORDER: usize = 9;
pub(crate) const KBI_PRICE_POINTS: usize = 9;
pub(crate) const KBI_BOUNDARY_ORDER: usize = 6;
pub(crate) const KBI_BOUNDARY_POINTS: usize = 108;
pub(crate) const KBI_DATA_BITS: u32 = 40;
pub(crate) const KBI_GRADING: i64 = 2199023255552;
pub(crate) const KBI_PRICE_POWER: i64 = 2473901162496;
pub(crate) const KBI_DATA_SHA256: [u8; 32] = [
0x6c, 0x0e, 0x78, 0x57, 0x66, 0x9b, 0x99, 0x13, 0x77, 0x0d, 0xe4, 0x5d, 0xa3, 0x2d, 0x5c, 0xfd,
0xeb, 0x1d, 0x89, 0xfa, 0xf7, 0x8e, 0x7b, 0xcd, 0xad, 0x55, 0xd3, 0xee, 0x27, 0xa2, 0x18, 0xca,
];
pub(crate) const KBI_TIME_FRACTION: [i64; 19] = [
0,
3393554407,
13574217627,
30541989660,
54296870507,
84838860168,
122167958642,
166284165929,
217187482030,
274877906944,
339355440672,
410620083213,
488671834567,
573510694735,
665136663716,
763549741511,
868749928119,
980737223541,
1099511627776,
];
pub(crate) const KBI_BOUNDARY_Y_SQUARED_OVER_NODES_SQUARED: [i64; 6] = [
3868963, 97377263, 491811503, 1301578694, 2341227290, 3168254992,
];
pub(crate) const KBI_BOUNDARY_LAG_FRACTION: [i64; 108] = [
3868963,
97377263,
491811503,
1301578694,
2341227290,
3168254992,
15475852,
389509052,
1967246014,
5206314776,
9364909161,
12673019968,
34820667,
876395367,
4426303531,
11714208245,
21071045612,
28514294928,
61903407,
1558036208,
7868984055,
20825259102,
37459636644,
50692079872,
96724074,
2434431576,
12295287586,
32539467347,
58530682256,
79206374801,
139282667,
3505581469,
17705214123,
46856832980,
84284182448,
114057179713,
189579185,
4771485888,
24098763668,
63777356000,
114720137221,
155244494609,
247613630,
6232144834,
31475936219,
83301036409,
149838546575,
202768319489,
313386000,
7887558305,
39836731777,
105427874205,
189639410509,
256628654354,
386896297,
9737726303,
49181150343,
130157869388,
234122729023,
316825499202,
468144519,
11782648827,
59509191914,
157491021960,
283288502118,
383358854035,
557130667,
14022325876,
70820856493,
187427331919,
337136729794,
456228718851,
653854742,
16456757452,
83116144079,
219966799267,
395667412050,
535435093651,
758316742,
19085943554,
96395054671,
255109424001,
458880548886,
620977978436,
870516668,
21909884182,
110657588271,
292855206124,
526776140303,
712857373205,
990454520,
24928579335,
125903744877,
333204145635,
599354186300,
811073277957,
1118130298,
28142029015,
142133524490,
376156242533,
676614686878,
915625692694,
1253544002,
31550233221,
159346927110,
421711496819,
758557642036,
1026514617415,
];
pub(crate) const KBI_BOUNDARY_INV_SQRT_LAG_FRACTION: [i64; 108] = [
586141475703460,
116834460633587,
51987675387183,
31956891225870,
23827471071624,
20482816576932,
293070737851730,
58417230316793,
25993837693592,
15978445612935,
11913735535812,
10241408288466,
195380491901153,
38944820211196,
17329225129061,
10652297075290,
7942490357208,
6827605525644,
146535368925865,
29208615158397,
12996918846796,
7989222806467,
5956867767906,
5120704144233,
117228295140692,
23366892126717,
10397535077437,
6391378245174,
4765494214325,
4096563315386,
97690245950577,
19472410105598,
8664612564531,
5326148537645,
3971245178604,
3413802762822,
83734496529066,
16690637233370,
7426810769598,
4565270175124,
3403924438804,
2926116653847,
73267684462932,
14604307579198,
6498459423398,
3994611403234,
2978433883953,
2560352072116,
65126830633718,
12981606737065,
5776408376354,
3550765691763,
2647496785736,
2275868508548,
58614147570346,
11683446063359,
5198767538718,
3195689122587,
2382747107162,
2048281657693,
53285588700315,
10621314603053,
4726152307926,
2905171929625,
2166133733784,
1862074234267,
48845122975288,
9736205052799,
4332306282265,
2663074268822,
1985622589302,
1706901381411,
45087805823343,
8987266202584,
3999051952860,
2458222401990,
1832882390125,
1575601275149,
41867248264533,
8345318616685,
3713405384799,
2282635087562,
1701962219402,
1463058326924,
39076098380231,
7788964042239,
3465845025812,
2130459415058,
1588498071442,
1365521105129,
36633842231466,
7302153789599,
3249229711699,
1997305701617,
1489216941977,
1280176036058,
34478910335498,
6872615331387,
3058098552187,
1879817130934,
1401615945390,
1204871563349,
32563415316859,
6490803368533,
2888204188177,
1775382845882,
1323748392868,
1137934254274,
];
pub(crate) const KBI_BOUNDARY_REGULAR_WEIGHT: [i64; 108] = [
19631078,
207384580,
604495021,
983396373,
1016879446,
561767908,
78524312,
829538321,
2417980085,
3933585494,
4067517783,
2247071632,
176679702,
1866461222,
5440455191,
8850567361,
9151915012,
5055911173,
314097248,
3318153284,
9671920340,
15734341974,
16270071132,
8988286530,
490776950,
5184614506,
15112375531,
24584909335,
25421986144,
14044197703,
706718808,
7465844889,
21761820764,
35402269443,
36607660047,
20223644692,
961922821,
10161844432,
29620256040,
48186422297,
49827092841,
27526627497,
1256388991,
13272613136,
38687681359,
62937367898,
65080284528,
35953146119,
1590117317,
16798151000,
48964096720,
79655106246,
82367235105,
45503200557,
1963107799,
20738458025,
60449502123,
98339637340,
101687944574,
56176790811,
2375360436,
25093534210,
73143897569,
118990961182,
123042412935,
67973916881,
2826875230,
29863379555,
87047283057,
141609077770,
146430640187,
80894578767,
3317652180,
35047994062,
102159658588,
166193987105,
171852626331,
94938776470,
3847691285,
40647377728,
118481024161,
192745689187,
199308371366,
110106509989,
4416992547,
46661530555,
136011379776,
221264184016,
228797875293,
126397779324,
5025555964,
53090452543,
154750725435,
251749471592,
260321138111,
143812584475,
5673381538,
59934143691,
174699061135,
284201551914,
293878159820,
162350925442,
6360469268,
67192604000,
195856386878,
318620424983,
329468940421,
182012802226,
];
pub(crate) const KBI_BOUNDARY_SINGULAR_WEIGHT: [i64; 108] = [
10465181750,
22036752468,
28582045103,
28582045103,
22036752468,
10465181750,
20930363499,
44073504936,
57164090207,
57164090207,
44073504936,
20930363499,
31395545249,
66110257404,
85746135310,
85746135310,
66110257404,
31395545249,
41860726999,
88147009871,
114328180414,
114328180414,
88147009871,
41860726999,
52325908748,
110183762339,
142910225517,
142910225517,
110183762339,
52325908748,
62791090498,
132220514807,
171492270620,
171492270620,
132220514807,
62791090498,
73256272248,
154257267275,
200074315724,
200074315724,
154257267275,
73256272248,
83721453997,
176294019743,
228656360827,
228656360827,
176294019743,
83721453997,
94186635747,
198330772211,
257238405931,
257238405931,
198330772211,
94186635747,
104651817497,
220367524678,
285820451034,
285820451034,
220367524678,
104651817497,
115116999246,
242404277146,
314402496137,
314402496137,
242404277146,
115116999246,
125582180996,
264441029614,
342984541241,
342984541241,
264441029614,
125582180996,
136047362745,
286477782082,
371566586344,
371566586344,
286477782082,
136047362745,
146512544495,
308514534550,
400148631448,
400148631448,
308514534550,
146512544495,
156977726245,
330551287018,
428730676551,
428730676551,
330551287018,
156977726245,
167442907994,
352588039486,
457312721654,
457312721654,
352588039486,
167442907994,
177908089744,
374624791953,
485894766758,
485894766758,
374624791953,
177908089744,
188373271494,
396661544421,
514476811861,
514476811861,
396661544421,
188373271494,
];
pub(crate) const KBI_BOUNDARY_LEFT: [u8; 108] = [
0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 2, 2, 2, 2, 1, 0, 3, 3, 3, 3, 2, 1, 4, 4, 4, 3, 2, 1, 5, 5,
5, 4, 3, 1, 6, 6, 6, 5, 3, 1, 7, 7, 7, 6, 4, 2, 8, 8, 8, 7, 5, 2, 9, 9, 9, 7, 5, 2, 10, 10, 10,
8, 6, 2, 11, 11, 11, 9, 6, 3, 12, 12, 12, 10, 7, 3, 13, 13, 12, 10, 7, 3, 14, 14, 13, 11, 8, 3,
15, 15, 14, 12, 8, 4, 16, 16, 15, 13, 9, 4, 17, 17, 16, 14, 10, 4,
];
pub(crate) const KBI_BOUNDARY_FRACTION: [i64; 108] = [
1098258083774,
1067961394555,
940164700666,
677800130957,
340953985740,
72997010361,
1097840235774,
1057444650147,
887049058296,
537229632018,
88101438395,
291988041445,
1097255248573,
1042721207977,
812687158978,
340430933502,
656358081295,
656973093252,
1096646384344,
1027396808984,
735290080096,
135599635048,
211443452148,
22813512668,
1096029561105,
1011872091050,
656881274693,
1007056946278,
825160626480,
241804543752,
1095409120134,
996256319051,
578012593598,
756513185561,
339819833809,
509460248410,
1094786731154,
980591517941,
498896287131,
520401429319,
973020093041,
825780626642,
1094163173369,
964897299364,
419631405441,
292060752410,
469874338106,
54752430404,
1093538859297,
949184045956,
340270386841,
68382723101,
11771104596,
302942265632,
1092914027767,
933457768716,
260843590356,
926929555647,
600691625420,
580330905005,
1092288826623,
917722188738,
181369809667,
685004215775,
128693359587,
886918348522,
1091663352287,
901979732824,
101861301523,
449619842526,
731919642050,
87994977435,
1091037670324,
886232051199,
22326400514,
218907588294,
249676921938,
348698585868,
1090411826875,
870480305131,
1037704277233,
1090364899525,
863394096271,
630258482976,
1089785855349,
854725335540,
952577502065,
846266195848,
373288389052,
932674668758,
1089159780536,
838967766334,
868202907809,
607486365013,
995028010108,
121672067564,
1088533621216,
823208070170,
784434911062,
372843435278,
498697896267,
389327772222,
1087907391875,
807446611669,
701163221370,
141481496071,
24663266773,
673205034738,
];
pub(crate) const KBI_BOUNDARY_CANDIDATE_LOG_FACTOR: [i64; 108] = [
1253544002,
31550233221,
159346927110,
421711496819,
758557642036,
1026514617415,
1671392002,
42066977629,
212462569480,
562281995758,
1011410189381,
1099511627776,
2256379203,
56790419799,
286824468798,
759080694274,
1099511627776,
1099511627776,
2865243432,
72114818792,
364221547680,
963911992728,
1099511627776,
1099511627776,
3482066671,
87639536726,
442630353083,
1099511627776,
1099511627776,
1099511627776,
4102507642,
103255308725,
521499034178,
1099511627776,
1099511627776,
1099511627776,
4724896622,
118920109835,
600615340645,
1099511627776,
1099511627776,
1099511627776,
5348454407,
134614328412,
679880222335,
1099511627776,
1099511627776,
1099511627776,
5972768479,
150327581820,
759241240935,
1099511627776,
1099511627776,
1099511627776,
6597600009,
166053859060,
838668037420,
1099511627776,
1099511627776,
1099511627776,
7222801153,
181789439038,
918141818109,
1099511627776,
1099511627776,
1099511627776,
7848275489,
197531894952,
997650326253,
1099511627776,
1099511627776,
1099511627776,
8473957452,
213279576577,
1077185227262,
1099511627776,
1099511627776,
1099511627776,
9099800901,
229031322645,
1099511627776,
1099511627776,
1099511627776,
1099511627776,
9725772427,
244786292236,
1099511627776,
1099511627776,
1099511627776,
1099511627776,
10351847240,
260543861442,
1099511627776,
1099511627776,
1099511627776,
1099511627776,
10978006560,
276303557606,
1099511627776,
1099511627776,
1099511627776,
1099511627776,
11604235901,
292065016107,
1099511627776,
1099511627776,
1099511627776,
1099511627776,
];
pub(crate) const KBI_BOUNDARY_CANDIDATE_COEFFICIENT_FACTOR: [i64; 108] = [
1098258083774,
1067961394555,
940164700666,
677800130957,
340953985740,
72997010361,
1097840235774,
1057444650147,
887049058296,
537229632018,
88101438395,
0,
1097255248573,
1042721207977,
812687158978,
340430933502,
0,
0,
1096646384344,
1027396808984,
735290080096,
135599635048,
0,
0,
1096029561105,
1011872091050,
656881274693,
0,
0,
0,
1095409120134,
996256319051,
578012593598,
0,
0,
0,
1094786731154,
980591517941,
498896287131,
0,
0,
0,
1094163173369,
964897299364,
419631405441,
0,
0,
0,
1093538859297,
949184045956,
340270386841,
0,
0,
0,
1092914027767,
933457768716,
260843590356,
0,
0,
0,
1092288826623,
917722188738,
181369809667,
0,
0,
0,
1091663352287,
901979732824,
101861301523,
0,
0,
0,
1091037670324,
886232051199,
22326400514,
0,
0,
0,
1090411826875,
870480305131,
0,
0,
0,
0,
1089785855349,
854725335540,
0,
0,
0,
0,
1089159780536,
838967766334,
0,
0,
0,
0,
1088533621216,
823208070170,
0,
0,
0,
0,
1087907391875,
807446611669,
0,
0,
0,
0,
];
pub(crate) const KBI_PRICE_LAG_FRACTION: [i64; 9] = [
98983856,
3954536877,
27245432200,
95696489876,
231143846582,
434827818873,
678085804436,
907010709850,
1060518766035,
];
pub(crate) const KBI_PRICE_SQRT_LAG_FRACTION: [i64; 9] = [
10432348767,
65939815580,
173079951201,
324375404980,
504128304111,
691446485949,
863460031853,
998633477306,
1079839207813,
];
pub(crate) const KBI_PRICE_INV_SQRT_LAG_FRACTION: [i64; 9] = [
115882419830159,
18333776171206,
6984782530981,
3726934289882,
2398051864490,
1748401133249,
1400094706203,
1210580104800,
1119542438233,
];
pub(crate) const KBI_PRICE_WEIGHT: [i64; 9] = [
978624494,
9783366968,
41448869744,
98943969971,
171544782720,
232245144455,
246579048600,
197750390593,
100237430232,
];
pub(crate) const KBI_PRICE_BOUNDARY_LEFT: [u8; 9] = [17, 17, 17, 17, 15, 13, 11, 7, 3];
pub(crate) const KBI_PRICE_BOUNDARY_FRACTION: [i64; 9] = [
1098595320079,
1062903914972,
847296769694,
213635550067,
1095517576044,
1094077370015,
152219991360,
566281843138,
391154650588,
];
pub(crate) const KBI_NORMAL_HERMITE_A: [i64; 48] = [
-141786139, -135213803, -122574266, -104823726, -83268699, -59432183, -34904252, -11195755,
10387853, 28839592, 43503524, 54085500, 60626266, 63445413, 63067035, 60138512, 55352683,
49381321, 42824839, 36180118, 29825722, 24021862, 18921343, 14587412, 11014732, 8150403,
5912833, 4207221, 2937148, 2012402, 1353547, 893922, 579801, 369394, 231205, 142189, 85931,
51039, 29796, 17099, 9646, 5350, 2918, 1565, 825, 428, 218, 109,
];
pub(crate) const KBI_NORMAL_HERMITE_B: [i64; 48] = [
-666830,
-427307358,
-834081786,
-1202706851,
-1517791940,
-1767895006,
-1946173254,
-2050581925,
-2083631124,
-2051762043,
-1964443091,
-1833108617,
-1670066762,
-1487489954,
-1296575876,
-1106933683,
-926215716,
-759983991,
-611776939,
-483327125,
-374875119,
-285527038,
-213611392,
-157002294,
-113388412,
-80478474,
-56143383,
-38501521,
-25957605,
-17206828,
-11215644,
-7189007,
-4531748,
-2809588,
-1713268,
-1027630,
-606315,
-351909,
-200932,
-112869,
-62376,
-33915,
-18143,
-9550,
-4946,
-2521,
-1264,
-624,
];
pub(crate) const KBI_NORMAL_HERMITE_C: [i64; 48] = [
54830209514,
54403517438,
53143261314,
51107374945,
48387490064,
45102100088,
41388013527,
37390954264,
33256203149,
29120104461,
25103099148,
21304723540,
17800762805,
14642508077,
11857864408,
9453913763,
7420461935,
5734088551,
4362264532,
3267185172,
2409071276,
1748798202,
1249809714,
879350960,
609108608,
415375981,
278870242,
184321974,
119940596,
76836831,
48460382,
30089735,
18393486,
11069395,
6558399,
3825481,
2196789,
1241952,
691250,
378774,
204333,
108521,
56741,
29208,
14802,
7385,
3627,
1754,
];
pub(crate) const KBI_NORMAL_HERMITE_D: [i64; 48] = [
549755813888,
604443570434,
658284566711,
710471171974,
760271016341,
807057445767,
850332218666,
889739154687,
925068331271,
956251291149,
983348473157,
1006530632739,
1026056333162,
1042247655470,
1055466119005,
1066090474573,
1074497593166,
1081047192067,
1086070677948,
1089863990381,
1092684028546,
1094748050424,
1096235343451,
1097290463116,
1098027399194,
1098534134122,
1098877182032,
1099105821724,
1099255849399,
1099352769538,
1099414411943,
1099453010228,
1099476804877,
1099491246417,
1099499875618,
1099504951955,
1099507891995,
1099509568400,
1099510509481,
1099511029595,
1099511312599,
1099511464203,
1099511544159,
1099511585674,
1099511606897,
1099511617578,
1099511622870,
1099511625451,
];