Accelerated_Wireguard/fpga/prng/lfsr/vhdl/lfsr_package.vhd

958 lines
23 KiB
VHDL

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
package lfsr_package is
type number_of_taps_type is array(2 to 786) of natural;
type tap_position_type is array(2 to 786, 1 to 4) of natural;
constant number_of_taps : number_of_taps_type :=
(
2, 2, 2, 2, 2,
2, 4, 2, 2, 2,
4, 4, 4, 2, 4,
2, 2, 4, 2, 2,
2, 2, 4, 2, 4,
4, 2, 2, 4, 2,
4, 2, 4, 2, 2,
4, 4, 2, 4, 2,
4, 4, 4, 4, 4,
2, 4, 2, 4, 4,
2, 4, 4, 2, 4,
2, 2, 4, 2, 4,
4, 2, 4, 2, 4,
4, 2, 4, 4, 2,
4, 2, 4, 4, 4,
4, 4, 2, 4, 2,
4, 4, 2, 4, 4,
2, 4, 2, 4, 4,
4, 2, 2, 2, 4,
2, 2, 4, 2, 4,
4, 2, 4, 2, 2,
4, 2, 4, 4, 2,
4, 2, 4, 4, 4,
4, 2, 2, 4, 2,
4, 2, 2, 4, 4,
2, 4, 2, 2, 4,
2, 4, 2, 2, 4,
2, 4, 4, 2, 4,
2, 4, 4, 2, 4,
4, 2, 4, 2, 2,
4, 2, 4, 4, 4,
4, 4, 2, 4, 2,
4, 4, 4, 4, 4,
2, 4, 2, 2, 4,
2, 4, 2, 2, 4,
2, 2, 4, 4, 4,
4, 2, 4, 2, 4,
4, 4, 4, 4, 2,
4, 2, 2, 4, 4,
4, 2, 2, 4, 2,
2, 4, 4, 4, 4,
2, 4, 2, 4, 4,
2, 4, 4, 2, 4,
2, 2, 4, 4, 4,
4, 2, 4, 2, 4,
4, 4, 4, 4, 2,
4, 2, 2, 4, 2,
4, 4, 2, 4, 2,
4, 4, 4, 4, 4,
2, 4, 2, 2, 4,
2, 4, 4, 2, 4,
2, 2, 4, 4, 4,
4, 2, 4, 2, 2,
4, 2, 4, 2, 2,
4, 2, 2, 4, 4,
4, 2, 2, 4, 2,
2, 4, 2, 4, 2,
2, 4, 2, 4, 4,
2, 4, 2, 2, 4,
2, 4, 4, 2, 4,
2, 4, 4, 2, 4,
4, 4, 4, 4, 4,
4, 2, 2, 4, 2,
4, 4, 2, 4, 2,
2, 4, 4, 4, 4,
2, 4, 2, 4, 4,
2, 2, 4, 4, 4,
2, 4, 4, 4, 4,
2, 2, 4, 2, 4,
4, 4, 4, 2, 2,
4, 2, 4, 4, 4,
4, 4, 2, 4, 4,
2, 4, 2, 4, 2,
2, 4, 2, 2, 4,
4, 4, 4, 2, 4,
2, 2, 4, 2, 4,
2, 2, 4, 2, 2,
4, 4, 4, 2, 2,
4, 2, 2, 4, 2,
4, 4, 2, 4, 2,
4, 4, 2, 4, 2,
2, 4, 2, 4, 4,
2, 4, 4, 2, 4,
2, 4, 4, 4, 4,
2, 2, 4, 2, 4,
4, 2, 4, 4, 2,
4, 2, 4, 4, 2,
4, 2, 2, 4, 2,
4, 4, 4, 4, 2,
2, 4, 2, 2, 4,
4, 4, 4, 2, 4,
2, 2, 4, 2, 4,
2, 2, 4, 2, 4,
4, 4, 4, 2, 2,
4, 4, 2, 4, 2,
4, 2, 2, 4, 2,
4, 4, 2, 4, 4,
2, 4, 2, 2, 4,
4, 4, 2, 2, 4,
2, 4, 4, 4, 4,
4, 2, 4, 2, 2,
4, 2, 4, 4, 2,
4, 2, 4, 4, 4,
4, 2, 2, 4, 2,
4, 4, 2, 4, 4,
2, 4, 2, 4, 4,
2, 4, 4, 4, 4,
2, 4, 4, 2, 4,
4, 2, 4, 2, 4,
4, 4, 4, 2, 2,
4, 2, 4, 4, 2,
4, 4, 2, 4, 2,
4, 4, 2, 4, 2,
2, 4, 2, 2, 4,
4, 4, 2, 2, 4,
2, 4, 4, 4, 4,
2, 2, 4, 2, 4,
4, 2, 4, 2, 4,
4, 2, 2, 4, 4,
4, 4, 2, 4, 2,
4, 4, 4, 4, 4,
2, 4, 2, 2, 4,
4, 4, 4, 2, 4,
2, 4, 4, 4, 4,
2, 2, 4, 2, 4,
4, 2, 4, 4, 2,
4, 2, 2, 4, 4,
4, 4, 2, 4, 2,
2, 4, 4, 4, 2,
2, 4, 2, 2, 4,
2, 4, 4, 2, 4,
2, 2, 4, 4, 4,
2, 2, 4, 2, 4,
4, 4, 4, 2, 2,
4, 2, 4, 4, 2,
4, 4, 2, 4, 4,
4, 4, 4, 4, 2,
2, 4, 2, 4, 4,
2, 4, 4, 2, 4,
2, 2, 4, 4, 4,
2, 4, 4, 2, 4,
4, 2, 4, 4, 2,
4, 2, 2, 4, 2,
4, 4, 2, 4, 2,
2, 4, 4, 4, 2,
2, 4, 2, 2, 4,
4, 4, 4, 2, 4,
2, 2, 4, 2, 4,
4, 2, 4, 2, 2,
4, 4, 4, 4, 2,
4, 2, 2, 4, 2,
4, 4, 2, 4, 2,
2, 4, 4, 4, 4,
2, 4, 2, 4, 4,
2, 4, 2, 2, 4,
2, 2, 4, 4, 4,
2, 2, 4, 2, 4
);
constant tap_position : tap_position_type :=
(
( 2, 1, 0, 0),
( 3, 2, 0, 0),
( 4, 3, 0, 0),
( 5, 3, 0, 0),
( 6, 5, 0, 0),
( 7, 6, 0, 0),
( 8, 6, 5, 4),
( 9, 5, 0, 0),
( 10, 7, 0, 0),
( 11, 9, 0, 0),
( 12, 11, 8, 6),
( 13, 12, 10, 9),
( 14, 13, 11, 9),
( 15, 14, 0, 0),
( 16, 14, 13, 11),
( 17, 14, 0, 0),
( 18, 11, 0, 0),
( 19, 18, 17, 14),
( 20, 17, 0, 0),
( 21, 19, 0, 0),
( 22, 21, 0, 0),
( 23, 18, 0, 0),
( 24, 23, 21, 20),
( 25, 22, 0, 0),
( 26, 25, 24, 20),
( 27, 26, 25, 22),
( 28, 25, 0, 0),
( 29, 27, 0, 0),
( 30, 29, 26, 24),
( 31, 28, 0, 0),
( 32, 30, 26, 25),
( 33, 20, 0, 0),
( 34, 31, 30, 26),
( 35, 33, 0, 0),
( 36, 25, 0, 0),
( 37, 36, 33, 31),
( 38, 37, 33, 32),
( 39, 35, 0, 0),
( 40, 37, 36, 35),
( 41, 38, 0, 0),
( 42, 40, 37, 35),
( 43, 42, 38, 37),
( 44, 42, 39, 38),
( 45, 44, 42, 41),
( 46, 40, 39, 38),
( 47, 42, 0, 0),
( 48, 44, 41, 39),
( 49, 40, 0, 0),
( 50, 48, 47, 46),
( 51, 50, 48, 45),
( 52, 49, 0, 0),
( 53, 52, 51, 47),
( 54, 51, 48, 46),
( 55, 31, 0, 0),
( 56, 54, 52, 49),
( 57, 50, 0, 0),
( 58, 39, 0, 0),
( 59, 57, 55, 52),
( 60, 59, 0, 0),
( 61, 60, 59, 56),
( 62, 59, 57, 56),
( 63, 62, 0, 0),
( 64, 63, 61, 60),
( 65, 47, 0, 0),
( 66, 60, 58, 57),
( 67, 66, 65, 62),
( 68, 59, 0, 0),
( 69, 67, 64, 63),
( 70, 69, 67, 65),
( 71, 65, 0, 0),
( 72, 69, 63, 62),
( 73, 48, 0, 0),
( 74, 71, 70, 67),
( 75, 74, 72, 69),
( 76, 74, 72, 71),
( 77, 75, 72, 71),
( 78, 77, 76, 71),
( 79, 70, 0, 0),
( 80, 78, 76, 71),
( 81, 77, 0, 0),
( 82, 78, 76, 73),
( 83, 81, 79, 76),
( 84, 71, 0, 0),
( 85, 84, 83, 77),
( 86, 84, 81, 80),
( 87, 74, 0, 0),
( 88, 80, 79, 77),
( 89, 51, 0, 0),
( 90, 88, 87, 85),
( 91, 90, 86, 83),
( 92, 90, 87, 86),
( 93, 91, 0, 0),
( 94, 73, 0, 0),
( 95, 84, 0, 0),
( 96, 90, 87, 86),
( 97, 91, 0, 0),
( 98, 87, 0, 0),
( 99, 95, 94, 92),
(100, 63, 0, 0),
(101, 100, 95, 94),
(102, 99, 97, 96),
(103, 94, 0, 0),
(104, 103, 94, 93),
(105, 89, 0, 0),
(106, 91, 0, 0),
(107, 105, 99, 98),
(108, 77, 0, 0),
(109, 107, 105, 104),
(110, 109, 106, 104),
(111, 101, 0, 0),
(112, 108, 106, 101),
(113, 104, 0, 0),
(114, 113, 112, 103),
(115, 110, 108, 107),
(116, 114, 111, 110),
(117, 116, 115, 112),
(118, 85, 0, 0),
(119, 111, 0, 0),
(120, 118, 114, 111),
(121, 103, 0, 0),
(122, 121, 120, 116),
(123, 121, 0, 0),
(124, 87, 0, 0),
(125, 120, 119, 118),
(126, 124, 122, 119),
(127, 126, 0, 0),
(128, 127, 126, 121),
(129, 124, 0, 0),
(130, 127, 0, 0),
(131, 129, 128, 123),
(132, 103, 0, 0),
(133, 131, 125, 124),
(134, 77, 0, 0),
(135, 124, 0, 0),
(136, 134, 133, 128),
(137, 116, 0, 0),
(138, 137, 131, 130),
(139, 136, 134, 131),
(140, 111, 0, 0),
(141, 140, 135, 128),
(142, 121, 0, 0),
(143, 141, 140, 138),
(144, 142, 140, 137),
(145, 93, 0, 0),
(146, 144, 143, 141),
(147, 145, 143, 136),
(148, 121, 0, 0),
(149, 142, 140, 139),
(150, 97, 0, 0),
(151, 148, 0, 0),
(152, 150, 149, 146),
(153, 152, 0, 0),
(154, 153, 149, 145),
(155, 151, 150, 148),
(156, 153, 151, 147),
(157, 155, 152, 151),
(158, 153, 152, 150),
(159, 128, 0, 0),
(160, 158, 157, 155),
(161, 143, 0, 0),
(162, 158, 155, 154),
(163, 160, 157, 156),
(164, 159, 158, 152),
(165, 162, 157, 156),
(166, 164, 163, 156),
(167, 161, 0, 0),
(168, 162, 159, 152),
(169, 135, 0, 0),
(170, 147, 0, 0),
(171, 169, 166, 165),
(172, 165, 0, 0),
(173, 171, 168, 165),
(174, 161, 0, 0),
(175, 169, 0, 0),
(176, 167, 165, 164),
(177, 169, 0, 0),
(178, 91, 0, 0),
(179, 178, 177, 175),
(180, 173, 170, 168),
(181, 180, 175, 174),
(182, 181, 176, 174),
(183, 127, 0, 0),
(184, 177, 176, 175),
(185, 161, 0, 0),
(186, 180, 178, 177),
(187, 182, 181, 180),
(188, 186, 183, 182),
(189, 187, 184, 183),
(190, 188, 184, 177),
(191, 182, 0, 0),
(192, 190, 178, 177),
(193, 178, 0, 0),
(194, 107, 0, 0),
(195, 193, 192, 187),
(196, 194, 187, 185),
(197, 195, 193, 188),
(198, 133, 0, 0),
(199, 165, 0, 0),
(200, 198, 197, 195),
(201, 187, 0, 0),
(202, 147, 0, 0),
(203, 202, 196, 195),
(204, 201, 200, 194),
(205, 203, 200, 196),
(206, 201, 197, 196),
(207, 164, 0, 0),
(208, 207, 205, 199),
(209, 203, 0, 0),
(210, 207, 206, 198),
(211, 203, 201, 200),
(212, 107, 0, 0),
(213, 211, 208, 207),
(214, 213, 211, 209),
(215, 192, 0, 0),
(216, 215, 213, 209),
(217, 172, 0, 0),
(218, 207, 0, 0),
(219, 218, 215, 211),
(220, 211, 210, 208),
(221, 219, 215, 213),
(222, 220, 217, 214),
(223, 190, 0, 0),
(224, 222, 217, 212),
(225, 193, 0, 0),
(226, 223, 219, 216),
(227, 223, 218, 217),
(228, 226, 217, 216),
(229, 228, 225, 219),
(230, 224, 223, 222),
(231, 205, 0, 0),
(232, 228, 223, 221),
(233, 159, 0, 0),
(234, 203, 0, 0),
(235, 234, 229, 226),
(236, 231, 0, 0),
(237, 236, 233, 230),
(238, 237, 236, 233),
(239, 203, 0, 0),
(240, 237, 235, 232),
(241, 171, 0, 0),
(242, 241, 236, 231),
(243, 242, 238, 235),
(244, 243, 240, 235),
(245, 244, 241, 239),
(246, 245, 244, 235),
(247, 165, 0, 0),
(248, 238, 234, 233),
(249, 163, 0, 0),
(250, 147, 0, 0),
(251, 249, 247, 244),
(252, 185, 0, 0),
(253, 252, 247, 246),
(254, 253, 252, 247),
(255, 203, 0, 0),
(256, 254, 251, 246),
(257, 245, 0, 0),
(258, 175, 0, 0),
(259, 257, 253, 249),
(260, 253, 252, 250),
(261, 257, 255, 254),
(262, 258, 254, 253),
(263, 170, 0, 0),
(264, 263, 255, 254),
(265, 223, 0, 0),
(266, 219, 0, 0),
(267, 264, 261, 259),
(268, 243, 0, 0),
(269, 268, 263, 262),
(270, 217, 0, 0),
(271, 213, 0, 0),
(272, 270, 266, 263),
(273, 250, 0, 0),
(274, 207, 0, 0),
(275, 266, 265, 264),
(276, 275, 273, 270),
(277, 274, 271, 265),
(278, 273, 0, 0),
(279, 274, 0, 0),
(280, 278, 275, 271),
(281, 188, 0, 0),
(282, 247, 0, 0),
(283, 278, 276, 271),
(284, 165, 0, 0),
(285, 280, 278, 275),
(286, 217, 0, 0),
(287, 216, 0, 0),
(288, 287, 278, 277),
(289, 268, 0, 0),
(290, 288, 287, 285),
(291, 286, 280, 279),
(292, 195, 0, 0),
(293, 292, 287, 282),
(294, 233, 0, 0),
(295, 247, 0, 0),
(296, 292, 287, 285),
(297, 292, 0, 0),
(298, 294, 290, 287),
(299, 295, 293, 288),
(300, 293, 0, 0),
(301, 299, 296, 292),
(302, 261, 0, 0),
(303, 297, 291, 290),
(304, 303, 302, 293),
(305, 203, 0, 0),
(306, 305, 303, 299),
(307, 305, 303, 299),
(308, 306, 299, 293),
(309, 307, 302, 299),
(310, 309, 305, 302),
(311, 308, 306, 304),
(312, 307, 302, 301),
(313, 234, 0, 0),
(314, 299, 0, 0),
(315, 314, 306, 305),
(316, 181, 0, 0),
(317, 315, 313, 310),
(318, 313, 312, 310),
(319, 283, 0, 0),
(320, 319, 317, 316),
(321, 290, 0, 0),
(322, 255, 0, 0),
(323, 322, 320, 313),
(324, 321, 320, 318),
(325, 323, 320, 315),
(326, 325, 323, 316),
(327, 293, 0, 0),
(328, 323, 321, 319),
(329, 279, 0, 0),
(330, 328, 323, 322),
(331, 329, 325, 321),
(332, 209, 0, 0),
(333, 331, 0, 0),
(334, 333, 330, 327),
(335, 333, 328, 325),
(336, 335, 332, 329),
(337, 282, 0, 0),
(338, 336, 335, 332),
(339, 332, 329, 323),
(340, 337, 336, 329),
(341, 336, 330, 327),
(342, 217, 0, 0),
(343, 268, 0, 0),
(344, 338, 334, 333),
(345, 323, 0, 0),
(346, 344, 339, 335),
(347, 344, 337, 336),
(348, 344, 341, 340),
(349, 347, 344, 343),
(350, 297, 0, 0),
(351, 317, 0, 0),
(352, 346, 341, 339),
(353, 284, 0, 0),
(354, 349, 341, 340),
(355, 354, 350, 349),
(356, 349, 347, 346),
(357, 355, 347, 346),
(358, 351, 350, 344),
(359, 291, 0, 0),
(360, 359, 335, 334),
(361, 360, 357, 354),
(362, 299, 0, 0),
(363, 362, 356, 355),
(364, 297, 0, 0),
(365, 360, 359, 356),
(366, 337, 0, 0),
(367, 346, 0, 0),
(368, 361, 359, 351),
(369, 278, 0, 0),
(370, 231, 0, 0),
(371, 369, 368, 363),
(372, 369, 365, 357),
(373, 371, 366, 365),
(374, 369, 368, 366),
(375, 359, 0, 0),
(376, 371, 369, 368),
(377, 336, 0, 0),
(378, 335, 0, 0),
(379, 375, 370, 369),
(380, 333, 0, 0),
(381, 380, 379, 376),
(382, 301, 0, 0),
(383, 293, 0, 0),
(384, 378, 369, 368),
(385, 379, 0, 0),
(386, 303, 0, 0),
(387, 385, 379, 378),
(388, 387, 385, 374),
(389, 384, 380, 379),
(390, 301, 0, 0),
(391, 363, 0, 0),
(392, 386, 382, 379),
(393, 386, 0, 0),
(394, 259, 0, 0),
(395, 390, 389, 384),
(396, 371, 0, 0),
(397, 392, 387, 385),
(398, 393, 392, 384),
(399, 313, 0, 0),
(400, 398, 397, 395),
(401, 249, 0, 0),
(402, 399, 398, 393),
(403, 398, 395, 394),
(404, 215, 0, 0),
(405, 398, 397, 388),
(406, 249, 0, 0),
(407, 336, 0, 0),
(408, 407, 403, 401),
(409, 322, 0, 0),
(410, 407, 406, 400),
(411, 408, 401, 399),
(412, 265, 0, 0),
(413, 407, 406, 403),
(414, 405, 401, 398),
(415, 313, 0, 0),
(416, 414, 411, 407),
(417, 310, 0, 0),
(418, 417, 415, 403),
(419, 415, 414, 404),
(420, 412, 410, 407),
(421, 419, 417, 416),
(422, 273, 0, 0),
(423, 398, 0, 0),
(424, 422, 417, 415),
(425, 413, 0, 0),
(426, 415, 414, 412),
(427, 422, 421, 416),
(428, 323, 0, 0),
(429, 422, 421, 419),
(430, 419, 417, 415),
(431, 311, 0, 0),
(432, 429, 428, 419),
(433, 400, 0, 0),
(434, 429, 423, 422),
(435, 430, 426, 423),
(436, 271, 0, 0),
(437, 436, 435, 431),
(438, 373, 0, 0),
(439, 390, 0, 0),
(440, 439, 437, 436),
(441, 410, 0, 0),
(442, 440, 437, 435),
(443, 442, 437, 433),
(444, 435, 432, 431),
(445, 441, 439, 438),
(446, 341, 0, 0),
(447, 374, 0, 0),
(448, 444, 442, 437),
(449, 315, 0, 0),
(450, 371, 0, 0),
(451, 450, 441, 435),
(452, 448, 447, 446),
(453, 449, 447, 438),
(454, 449, 445, 444),
(455, 417, 0, 0),
(456, 454, 445, 433),
(457, 441, 0, 0),
(458, 255, 0, 0),
(459, 457, 454, 447),
(460, 399, 0, 0),
(461, 460, 455, 454),
(462, 389, 0, 0),
(463, 370, 0, 0),
(464, 460, 455, 441),
(465, 406, 0, 0),
(466, 460, 455, 452),
(467, 466, 461, 456),
(468, 464, 459, 453),
(469, 467, 464, 460),
(470, 321, 0, 0),
(471, 470, 0, 0),
(472, 470, 469, 461),
(473, 470, 467, 465),
(474, 283, 0, 0),
(475, 471, 467, 466),
(476, 461, 0, 0),
(477, 470, 462, 461),
(478, 357, 0, 0),
(479, 375, 0, 0),
(480, 473, 467, 464),
(481, 343, 0, 0),
(482, 477, 476, 473),
(483, 479, 477, 474),
(484, 379, 0, 0),
(485, 479, 469, 468),
(486, 481, 478, 472),
(487, 393, 0, 0),
(488, 487, 485, 484),
(489, 406, 0, 0),
(490, 271, 0, 0),
(491, 488, 485, 480),
(492, 491, 485, 484),
(493, 490, 488, 483),
(494, 357, 0, 0),
(495, 419, 0, 0),
(496, 494, 491, 480),
(497, 419, 0, 0),
(498, 495, 489, 487),
(499, 494, 493, 488),
(500, 499, 494, 490),
(501, 499, 497, 496),
(502, 498, 497, 494),
(503, 500, 0, 0),
(504, 502, 490, 483),
(505, 349, 0, 0),
(506, 411, 0, 0),
(507, 504, 501, 494),
(508, 399, 0, 0),
(509, 506, 502, 501),
(510, 501, 500, 498),
(511, 501, 0, 0),
(512, 510, 507, 504),
(513, 428, 0, 0),
(514, 511, 509, 507),
(515, 511, 508, 501),
(516, 514, 511, 509),
(517, 515, 507, 505),
(518, 485, 0, 0),
(519, 440, 0, 0),
(520, 509, 507, 503),
(521, 489, 0, 0),
(522, 518, 509, 507),
(523, 521, 517, 510),
(524, 357, 0, 0),
(525, 524, 521, 519),
(526, 525, 521, 517),
(527, 480, 0, 0),
(528, 526, 522, 517),
(529, 487, 0, 0),
(530, 527, 523, 520),
(531, 529, 525, 519),
(532, 531, 0, 0),
(533, 531, 530, 529),
(534, 533, 529, 527),
(535, 533, 529, 527),
(536, 533, 531, 529),
(537, 443, 0, 0),
(538, 537, 536, 533),
(539, 535, 534, 529),
(540, 361, 0, 0),
(541, 537, 531, 528),
(542, 540, 539, 533),
(543, 527, 0, 0),
(544, 538, 535, 531),
(545, 423, 0, 0),
(546, 545, 544, 538),
(547, 543, 540, 534),
(548, 545, 543, 538),
(549, 546, 545, 533),
(550, 357, 0, 0),
(551, 416, 0, 0),
(552, 550, 547, 532),
(553, 514, 0, 0),
(554, 551, 546, 543),
(555, 551, 546, 545),
(556, 403, 0, 0),
(557, 552, 551, 550),
(558, 553, 549, 544),
(559, 525, 0, 0),
(560, 554, 551, 549),
(561, 490, 0, 0),
(562, 560, 558, 551),
(563, 561, 554, 549),
(564, 401, 0, 0),
(565, 564, 559, 554),
(566, 413, 0, 0),
(567, 424, 0, 0),
(568, 558, 557, 551),
(569, 492, 0, 0),
(570, 503, 0, 0),
(571, 569, 566, 561),
(572, 571, 564, 560),
(573, 569, 567, 563),
(574, 561, 0, 0),
(575, 429, 0, 0),
(576, 573, 572, 563),
(577, 552, 0, 0),
(578, 562, 556, 555),
(579, 572, 570, 567),
(580, 579, 576, 574),
(581, 575, 574, 568),
(582, 497, 0, 0),
(583, 453, 0, 0),
(584, 581, 571, 570),
(585, 464, 0, 0),
(586, 584, 581, 579),
(587, 586, 581, 576),
(588, 437, 0, 0),
(589, 586, 585, 579),
(590, 497, 0, 0),
(591, 587, 585, 582),
(592, 591, 573, 568),
(593, 507, 0, 0),
(594, 575, 0, 0),
(595, 594, 593, 586),
(596, 592, 591, 590),
(597, 588, 585, 583),
(598, 597, 592, 591),
(599, 569, 0, 0),
(600, 599, 590, 589),
(601, 400, 0, 0),
(602, 596, 594, 591),
(603, 600, 599, 597),
(604, 600, 598, 589),
(605, 600, 598, 595),
(606, 602, 599, 591),
(607, 502, 0, 0),
(608, 606, 602, 585),
(609, 578, 0, 0),
(610, 483, 0, 0),
(611, 609, 607, 601),
(612, 607, 602, 598),
(613, 609, 603, 594),
(614, 613, 612, 607),
(615, 404, 0, 0),
(616, 614, 602, 597),
(617, 417, 0, 0),
(618, 615, 604, 598),
(619, 614, 611, 610),
(620, 619, 618, 611),
(621, 616, 615, 609),
(622, 325, 0, 0),
(623, 555, 0, 0),
(624, 617, 615, 612),
(625, 492, 0, 0),
(626, 623, 621, 613),
(627, 622, 617, 613),
(628, 405, 0, 0),
(629, 627, 624, 623),
(630, 628, 626, 623),
(631, 324, 0, 0),
(632, 629, 619, 613),
(633, 532, 0, 0),
(634, 319, 0, 0),
(635, 631, 625, 621),
(636, 632, 628, 623),
(637, 636, 628, 623),
(638, 637, 633, 632),
(639, 623, 0, 0),
(640, 638, 637, 626),
(641, 630, 0, 0),
(642, 523, 0, 0),
(643, 641, 640, 632),
(644, 634, 633, 632),
(645, 641, 637, 634),
(646, 397, 0, 0),
(647, 642, 0, 0),
(648, 647, 626, 625),
(649, 612, 0, 0),
(650, 647, 0, 0),
(651, 646, 638, 637),
(652, 559, 0, 0),
(653, 646, 645, 643),
(654, 649, 643, 640),
(655, 567, 0, 0),
(656, 646, 638, 637),
(657, 619, 0, 0),
(658, 603, 0, 0),
(659, 657, 655, 644),
(660, 657, 656, 648),
(661, 657, 650, 649),
(662, 365, 0, 0),
(663, 406, 0, 0),
(664, 662, 660, 649),
(665, 632, 0, 0),
(666, 664, 659, 656),
(667, 664, 660, 649),
(668, 658, 656, 651),
(669, 667, 665, 664),
(670, 517, 0, 0),
(671, 656, 0, 0),
(672, 667, 666, 661),
(673, 645, 0, 0),
(674, 671, 665, 660),
(675, 674, 672, 669),
(676, 435, 0, 0),
(677, 674, 673, 669),
(678, 675, 673, 663),
(679, 613, 0, 0),
(680, 679, 650, 645),
(681, 678, 672, 670),
(682, 681, 679, 675),
(683, 682, 677, 672),
(684, 681, 671, 666),
(685, 684, 682, 681),
(686, 489, 0, 0),
(687, 674, 0, 0),
(688, 682, 674, 669),
(689, 675, 0, 0),
(690, 687, 683, 680),
(691, 689, 685, 678),
(692, 393, 0, 0),
(693, 691, 685, 678),
(694, 691, 681, 677),
(695, 483, 0, 0),
(696, 694, 686, 673),
(697, 430, 0, 0),
(698, 483, 0, 0),
(699, 698, 689, 684),
(700, 698, 695, 694),
(701, 699, 697, 685),
(702, 665, 0, 0),
(703, 702, 696, 691),
(704, 701, 699, 692),
(705, 686, 0, 0),
(706, 697, 695, 692),
(707, 702, 699, 692),
(708, 421, 0, 0),
(709, 708, 706, 705),
(710, 709, 696, 695),
(711, 619, 0, 0),
(712, 709, 708, 707),
(713, 672, 0, 0),
(714, 691, 0, 0),
(715, 714, 711, 708),
(716, 533, 0, 0),
(717, 716, 710, 701),
(718, 717, 716, 713),
(719, 569, 0, 0),
(720, 718, 712, 709),
(721, 712, 0, 0),
(722, 491, 0, 0),
(723, 717, 710, 707),
(724, 719, 716, 711),
(725, 720, 719, 716),
(726, 721, 0, 0),
(727, 547, 0, 0),
(728, 726, 725, 724),
(729, 671, 0, 0),
(730, 583, 0, 0),
(731, 729, 725, 723),
(732, 729, 728, 725),
(733, 731, 726, 725),
(734, 724, 721, 720),
(735, 691, 0, 0),
(736, 730, 728, 723),
(737, 732, 0, 0),
(738, 391, 0, 0),
(739, 731, 723, 721),
(740, 587, 0, 0),
(741, 738, 733, 732),
(742, 741, 738, 730),
(743, 653, 0, 0),
(744, 743, 733, 731),
(745, 487, 0, 0),
(746, 395, 0, 0),
(747, 743, 741, 737),
(748, 744, 743, 733),
(749, 748, 743, 742),
(750, 746, 741, 734),
(751, 733, 0, 0),
(752, 749, 732, 731),
(753, 595, 0, 0),
(754, 735, 0, 0),
(755, 754, 745, 743),
(756, 407, 0, 0),
(757, 756, 751, 750),
(758, 757, 746, 741),
(759, 661, 0, 0),
(760, 757, 747, 734),
(761, 758, 0, 0),
(762, 679, 0, 0),
(763, 754, 749, 747),
(764, 761, 759, 758),
(765, 760, 755, 754),
(766, 757, 747, 744),
(767, 599, 0, 0),
(768, 764, 751, 749),
(769, 649, 0, 0),
(770, 768, 765, 756),
(771, 765, 756, 754),
(772, 765, 0, 0),
(773, 767, 765, 763),
(774, 589, 0, 0),
(775, 408, 0, 0),
(776, 773, 764, 759),
(777, 748, 0, 0),
(778, 403, 0, 0),
(779, 776, 771, 769),
(780, 775, 772, 764),
(781, 779, 765, 764),
(782, 453, 0, 0),
(783, 715, 0, 0),
(784, 778, 775, 771),
(785, 693, 0, 0),
(786, 782, 780, 771)
);
end package;