1 /* ***********************************************************************
2  * QR-code version information database
3  */
4 #[derive(Copy, Clone, Debug)]
5 pub struct RSParameters {
6     /// Small block size
7     pub bs: usize,
8     /// Small data words
9     pub dw: usize,
10     /// Number of small blocks
11     pub ns: usize,
12 }
13 
14 #[derive(Copy, Clone, Debug)]
15 pub struct VersionInfo {
16     pub data_bytes: usize,
17     /// Alignment pattern information
18     pub apat: [usize; 7],
19     pub ecc: [RSParameters; 4],
20 }
21 
22 pub const VERSION_DATA_BASE: [VersionInfo; 41] = [
23     VersionInfo {
24         data_bytes: 0,
25         apat: [0; 7],
26         ecc: [RSParameters {
27             bs: 0,
28             dw: 0,
29             ns: 0,
30         }; 4],
31     },
32     VersionInfo {
33         data_bytes: 26,
34         apat: [0, 0, 0, 0, 0, 0, 0],
35         ecc: [
36             RSParameters {
37                 bs: 26,
38                 dw: 16,
39                 ns: 1,
40             },
41             RSParameters {
42                 bs: 26,
43                 dw: 19,
44                 ns: 1,
45             },
46             RSParameters {
47                 bs: 26,
48                 dw: 9,
49                 ns: 1,
50             },
51             RSParameters {
52                 bs: 26,
53                 dw: 13,
54                 ns: 1,
55             },
56         ],
57     },
58     VersionInfo {
59         data_bytes: 44,
60         apat: [6, 18, 0, 0, 0, 0, 0],
61         ecc: [
62             RSParameters {
63                 bs: 44,
64                 dw: 28,
65                 ns: 1,
66             },
67             RSParameters {
68                 bs: 44,
69                 dw: 34,
70                 ns: 1,
71             },
72             RSParameters {
73                 bs: 44,
74                 dw: 16,
75                 ns: 1,
76             },
77             RSParameters {
78                 bs: 44,
79                 dw: 22,
80                 ns: 1,
81             },
82         ],
83     },
84     VersionInfo {
85         data_bytes: 70,
86         apat: [6, 22, 0, 0, 0, 0, 0],
87         ecc: [
88             RSParameters {
89                 bs: 70,
90                 dw: 44,
91                 ns: 1,
92             },
93             RSParameters {
94                 bs: 70,
95                 dw: 55,
96                 ns: 1,
97             },
98             RSParameters {
99                 bs: 35,
100                 dw: 13,
101                 ns: 2,
102             },
103             RSParameters {
104                 bs: 35,
105                 dw: 17,
106                 ns: 2,
107             },
108         ],
109     },
110     VersionInfo {
111         data_bytes: 100,
112         apat: [6, 26, 0, 0, 0, 0, 0],
113         ecc: [
114             RSParameters {
115                 bs: 50,
116                 dw: 32,
117                 ns: 2,
118             },
119             RSParameters {
120                 bs: 100,
121                 dw: 80,
122                 ns: 1,
123             },
124             RSParameters {
125                 bs: 25,
126                 dw: 9,
127                 ns: 4,
128             },
129             RSParameters {
130                 bs: 50,
131                 dw: 24,
132                 ns: 2,
133             },
134         ],
135     },
136     VersionInfo {
137         data_bytes: 134,
138         apat: [6, 30, 0, 0, 0, 0, 0],
139         ecc: [
140             RSParameters {
141                 bs: 67,
142                 dw: 43,
143                 ns: 2,
144             },
145             RSParameters {
146                 bs: 134,
147                 dw: 108,
148                 ns: 1,
149             },
150             RSParameters {
151                 bs: 33,
152                 dw: 11,
153                 ns: 2,
154             },
155             RSParameters {
156                 bs: 33,
157                 dw: 15,
158                 ns: 2,
159             },
160         ],
161     },
162     VersionInfo {
163         data_bytes: 172,
164         apat: [6, 34, 0, 0, 0, 0, 0],
165         ecc: [
166             RSParameters {
167                 bs: 43,
168                 dw: 27,
169                 ns: 4,
170             },
171             RSParameters {
172                 bs: 86,
173                 dw: 68,
174                 ns: 2,
175             },
176             RSParameters {
177                 bs: 43,
178                 dw: 15,
179                 ns: 4,
180             },
181             RSParameters {
182                 bs: 43,
183                 dw: 19,
184                 ns: 4,
185             },
186         ],
187     },
188     VersionInfo {
189         data_bytes: 196,
190         apat: [6, 22, 38, 0, 0, 0, 0],
191         ecc: [
192             RSParameters {
193                 bs: 49,
194                 dw: 31,
195                 ns: 4,
196             },
197             RSParameters {
198                 bs: 98,
199                 dw: 78,
200                 ns: 2,
201             },
202             RSParameters {
203                 bs: 39,
204                 dw: 13,
205                 ns: 4,
206             },
207             RSParameters {
208                 bs: 32,
209                 dw: 14,
210                 ns: 2,
211             },
212         ],
213     },
214     VersionInfo {
215         data_bytes: 242,
216         apat: [6, 24, 42, 0, 0, 0, 0],
217         ecc: [
218             RSParameters {
219                 bs: 60,
220                 dw: 38,
221                 ns: 2,
222             },
223             RSParameters {
224                 bs: 121,
225                 dw: 97,
226                 ns: 2,
227             },
228             RSParameters {
229                 bs: 40,
230                 dw: 14,
231                 ns: 4,
232             },
233             RSParameters {
234                 bs: 40,
235                 dw: 18,
236                 ns: 4,
237             },
238         ],
239     },
240     VersionInfo {
241         data_bytes: 292,
242         apat: [6, 26, 46, 0, 0, 0, 0],
243         ecc: [
244             RSParameters {
245                 bs: 58,
246                 dw: 36,
247                 ns: 3,
248             },
249             RSParameters {
250                 bs: 146,
251                 dw: 116,
252                 ns: 2,
253             },
254             RSParameters {
255                 bs: 36,
256                 dw: 12,
257                 ns: 4,
258             },
259             RSParameters {
260                 bs: 36,
261                 dw: 16,
262                 ns: 4,
263             },
264         ],
265     },
266     VersionInfo {
267         data_bytes: 346,
268         apat: [6, 28, 50, 0, 0, 0, 0],
269         ecc: [
270             RSParameters {
271                 bs: 69,
272                 dw: 43,
273                 ns: 4,
274             },
275             RSParameters {
276                 bs: 86,
277                 dw: 68,
278                 ns: 2,
279             },
280             RSParameters {
281                 bs: 43,
282                 dw: 15,
283                 ns: 6,
284             },
285             RSParameters {
286                 bs: 43,
287                 dw: 19,
288                 ns: 6,
289             },
290         ],
291     },
292     VersionInfo {
293         data_bytes: 404,
294         apat: [6, 30, 54, 0, 0, 0, 0],
295         ecc: [
296             RSParameters {
297                 bs: 80,
298                 dw: 50,
299                 ns: 1,
300             },
301             RSParameters {
302                 bs: 101,
303                 dw: 81,
304                 ns: 4,
305             },
306             RSParameters {
307                 bs: 36,
308                 dw: 12,
309                 ns: 3,
310             },
311             RSParameters {
312                 bs: 50,
313                 dw: 22,
314                 ns: 4,
315             },
316         ],
317     },
318     VersionInfo {
319         data_bytes: 466,
320         apat: [6, 32, 58, 0, 0, 0, 0],
321         ecc: [
322             RSParameters {
323                 bs: 58,
324                 dw: 36,
325                 ns: 6,
326             },
327             RSParameters {
328                 bs: 116,
329                 dw: 92,
330                 ns: 2,
331             },
332             RSParameters {
333                 bs: 42,
334                 dw: 14,
335                 ns: 7,
336             },
337             RSParameters {
338                 bs: 46,
339                 dw: 20,
340                 ns: 4,
341             },
342         ],
343     },
344     VersionInfo {
345         data_bytes: 532,
346         apat: [6, 34, 62, 0, 0, 0, 0],
347         ecc: [
348             RSParameters {
349                 bs: 59,
350                 dw: 37,
351                 ns: 8,
352             },
353             RSParameters {
354                 bs: 133,
355                 dw: 107,
356                 ns: 4,
357             },
358             RSParameters {
359                 bs: 33,
360                 dw: 11,
361                 ns: 12,
362             },
363             RSParameters {
364                 bs: 44,
365                 dw: 20,
366                 ns: 8,
367             },
368         ],
369     },
370     VersionInfo {
371         data_bytes: 581,
372         apat: [6, 26, 46, 66, 0, 0, 0],
373         ecc: [
374             RSParameters {
375                 bs: 64,
376                 dw: 40,
377                 ns: 4,
378             },
379             RSParameters {
380                 bs: 145,
381                 dw: 115,
382                 ns: 3,
383             },
384             RSParameters {
385                 bs: 36,
386                 dw: 12,
387                 ns: 11,
388             },
389             RSParameters {
390                 bs: 36,
391                 dw: 16,
392                 ns: 11,
393             },
394         ],
395     },
396     VersionInfo {
397         data_bytes: 655,
398         apat: [6, 26, 48, 70, 0, 0, 0],
399         ecc: [
400             RSParameters {
401                 bs: 65,
402                 dw: 41,
403                 ns: 5,
404             },
405             RSParameters {
406                 bs: 109,
407                 dw: 87,
408                 ns: 5,
409             },
410             RSParameters {
411                 bs: 36,
412                 dw: 12,
413                 ns: 11,
414             },
415             RSParameters {
416                 bs: 54,
417                 dw: 24,
418                 ns: 5,
419             },
420         ],
421     },
422     VersionInfo {
423         data_bytes: 733,
424         apat: [6, 26, 50, 74, 0, 0, 0],
425         ecc: [
426             RSParameters {
427                 bs: 73,
428                 dw: 45,
429                 ns: 7,
430             },
431             RSParameters {
432                 bs: 122,
433                 dw: 98,
434                 ns: 5,
435             },
436             RSParameters {
437                 bs: 45,
438                 dw: 15,
439                 ns: 3,
440             },
441             RSParameters {
442                 bs: 43,
443                 dw: 19,
444                 ns: 15,
445             },
446         ],
447     },
448     VersionInfo {
449         data_bytes: 815,
450         apat: [6, 30, 54, 78, 0, 0, 0],
451         ecc: [
452             RSParameters {
453                 bs: 74,
454                 dw: 46,
455                 ns: 10,
456             },
457             RSParameters {
458                 bs: 135,
459                 dw: 107,
460                 ns: 1,
461             },
462             RSParameters {
463                 bs: 42,
464                 dw: 14,
465                 ns: 2,
466             },
467             RSParameters {
468                 bs: 50,
469                 dw: 22,
470                 ns: 1,
471             },
472         ],
473     },
474     VersionInfo {
475         data_bytes: 901,
476         apat: [6, 30, 56, 82, 0, 0, 0],
477         ecc: [
478             RSParameters {
479                 bs: 69,
480                 dw: 43,
481                 ns: 9,
482             },
483             RSParameters {
484                 bs: 150,
485                 dw: 120,
486                 ns: 5,
487             },
488             RSParameters {
489                 bs: 42,
490                 dw: 14,
491                 ns: 2,
492             },
493             RSParameters {
494                 bs: 50,
495                 dw: 22,
496                 ns: 17,
497             },
498         ],
499     },
500     VersionInfo {
501         data_bytes: 991,
502         apat: [6, 30, 58, 86, 0, 0, 0],
503         ecc: [
504             RSParameters {
505                 bs: 70,
506                 dw: 44,
507                 ns: 3,
508             },
509             RSParameters {
510                 bs: 141,
511                 dw: 113,
512                 ns: 3,
513             },
514             RSParameters {
515                 bs: 39,
516                 dw: 13,
517                 ns: 9,
518             },
519             RSParameters {
520                 bs: 47,
521                 dw: 21,
522                 ns: 17,
523             },
524         ],
525     },
526     VersionInfo {
527         data_bytes: 1085,
528         apat: [6, 34, 62, 90, 0, 0, 0],
529         ecc: [
530             RSParameters {
531                 bs: 67,
532                 dw: 41,
533                 ns: 3,
534             },
535             RSParameters {
536                 bs: 135,
537                 dw: 107,
538                 ns: 3,
539             },
540             RSParameters {
541                 bs: 43,
542                 dw: 15,
543                 ns: 15,
544             },
545             RSParameters {
546                 bs: 54,
547                 dw: 24,
548                 ns: 15,
549             },
550         ],
551     },
552     VersionInfo {
553         data_bytes: 1156,
554         apat: [6, 28, 50, 72, 92, 0, 0],
555         ecc: [
556             RSParameters {
557                 bs: 68,
558                 dw: 42,
559                 ns: 17,
560             },
561             RSParameters {
562                 bs: 144,
563                 dw: 116,
564                 ns: 4,
565             },
566             RSParameters {
567                 bs: 46,
568                 dw: 16,
569                 ns: 19,
570             },
571             RSParameters {
572                 bs: 50,
573                 dw: 22,
574                 ns: 17,
575             },
576         ],
577     },
578     VersionInfo {
579         data_bytes: 1258,
580         apat: [6, 26, 50, 74, 98, 0, 0],
581         ecc: [
582             RSParameters {
583                 bs: 74,
584                 dw: 46,
585                 ns: 17,
586             },
587             RSParameters {
588                 bs: 139,
589                 dw: 111,
590                 ns: 2,
591             },
592             RSParameters {
593                 bs: 37,
594                 dw: 13,
595                 ns: 34,
596             },
597             RSParameters {
598                 bs: 54,
599                 dw: 24,
600                 ns: 7,
601             },
602         ],
603     },
604     VersionInfo {
605         data_bytes: 1364,
606         apat: [6, 30, 54, 78, 102, 0, 0],
607         ecc: [
608             RSParameters {
609                 bs: 75,
610                 dw: 47,
611                 ns: 4,
612             },
613             RSParameters {
614                 bs: 151,
615                 dw: 121,
616                 ns: 4,
617             },
618             RSParameters {
619                 bs: 45,
620                 dw: 15,
621                 ns: 16,
622             },
623             RSParameters {
624                 bs: 54,
625                 dw: 24,
626                 ns: 11,
627             },
628         ],
629     },
630     VersionInfo {
631         data_bytes: 1474,
632         apat: [6, 28, 54, 80, 106, 0, 0],
633         ecc: [
634             RSParameters {
635                 bs: 73,
636                 dw: 45,
637                 ns: 6,
638             },
639             RSParameters {
640                 bs: 147,
641                 dw: 117,
642                 ns: 6,
643             },
644             RSParameters {
645                 bs: 46,
646                 dw: 16,
647                 ns: 30,
648             },
649             RSParameters {
650                 bs: 54,
651                 dw: 24,
652                 ns: 11,
653             },
654         ],
655     },
656     VersionInfo {
657         data_bytes: 1588,
658         apat: [6, 32, 58, 84, 110, 0, 0],
659         ecc: [
660             RSParameters {
661                 bs: 75,
662                 dw: 47,
663                 ns: 8,
664             },
665             RSParameters {
666                 bs: 132,
667                 dw: 106,
668                 ns: 8,
669             },
670             RSParameters {
671                 bs: 45,
672                 dw: 15,
673                 ns: 22,
674             },
675             RSParameters {
676                 bs: 54,
677                 dw: 24,
678                 ns: 7,
679             },
680         ],
681     },
682     VersionInfo {
683         data_bytes: 1706,
684         apat: [6, 30, 58, 86, 114, 0, 0],
685         ecc: [
686             RSParameters {
687                 bs: 74,
688                 dw: 46,
689                 ns: 19,
690             },
691             RSParameters {
692                 bs: 142,
693                 dw: 114,
694                 ns: 10,
695             },
696             RSParameters {
697                 bs: 46,
698                 dw: 16,
699                 ns: 33,
700             },
701             RSParameters {
702                 bs: 50,
703                 dw: 22,
704                 ns: 28,
705             },
706         ],
707     },
708     VersionInfo {
709         data_bytes: 1828,
710         apat: [6, 34, 62, 90, 118, 0, 0],
711         ecc: [
712             RSParameters {
713                 bs: 73,
714                 dw: 45,
715                 ns: 22,
716             },
717             RSParameters {
718                 bs: 152,
719                 dw: 122,
720                 ns: 8,
721             },
722             RSParameters {
723                 bs: 45,
724                 dw: 15,
725                 ns: 12,
726             },
727             RSParameters {
728                 bs: 53,
729                 dw: 23,
730                 ns: 8,
731             },
732         ],
733     },
734     VersionInfo {
735         data_bytes: 1921,
736         apat: [6, 26, 50, 74, 98, 122, 0],
737         ecc: [
738             RSParameters {
739                 bs: 73,
740                 dw: 45,
741                 ns: 3,
742             },
743             RSParameters {
744                 bs: 147,
745                 dw: 117,
746                 ns: 3,
747             },
748             RSParameters {
749                 bs: 45,
750                 dw: 15,
751                 ns: 11,
752             },
753             RSParameters {
754                 bs: 54,
755                 dw: 24,
756                 ns: 4,
757             },
758         ],
759     },
760     VersionInfo {
761         data_bytes: 2051,
762         apat: [6, 30, 54, 78, 102, 126, 0],
763         ecc: [
764             RSParameters {
765                 bs: 73,
766                 dw: 45,
767                 ns: 21,
768             },
769             RSParameters {
770                 bs: 146,
771                 dw: 116,
772                 ns: 7,
773             },
774             RSParameters {
775                 bs: 45,
776                 dw: 15,
777                 ns: 19,
778             },
779             RSParameters {
780                 bs: 53,
781                 dw: 23,
782                 ns: 1,
783             },
784         ],
785     },
786     VersionInfo {
787         data_bytes: 2185,
788         apat: [6, 26, 52, 78, 104, 130, 0],
789         ecc: [
790             RSParameters {
791                 bs: 75,
792                 dw: 47,
793                 ns: 19,
794             },
795             RSParameters {
796                 bs: 145,
797                 dw: 115,
798                 ns: 5,
799             },
800             RSParameters {
801                 bs: 45,
802                 dw: 15,
803                 ns: 23,
804             },
805             RSParameters {
806                 bs: 54,
807                 dw: 24,
808                 ns: 15,
809             },
810         ],
811     },
812     VersionInfo {
813         data_bytes: 2323,
814         apat: [6, 30, 56, 82, 108, 134, 0],
815         ecc: [
816             RSParameters {
817                 bs: 74,
818                 dw: 46,
819                 ns: 2,
820             },
821             RSParameters {
822                 bs: 145,
823                 dw: 115,
824                 ns: 13,
825             },
826             RSParameters {
827                 bs: 45,
828                 dw: 15,
829                 ns: 23,
830             },
831             RSParameters {
832                 bs: 54,
833                 dw: 24,
834                 ns: 42,
835             },
836         ],
837     },
838     VersionInfo {
839         data_bytes: 2465,
840         apat: [6, 34, 60, 86, 112, 138, 0],
841         ecc: [
842             RSParameters {
843                 bs: 74,
844                 dw: 46,
845                 ns: 10,
846             },
847             RSParameters {
848                 bs: 145,
849                 dw: 115,
850                 ns: 17,
851             },
852             RSParameters {
853                 bs: 45,
854                 dw: 15,
855                 ns: 19,
856             },
857             RSParameters {
858                 bs: 54,
859                 dw: 24,
860                 ns: 10,
861             },
862         ],
863     },
864     VersionInfo {
865         data_bytes: 2611,
866         apat: [6, 30, 58, 86, 114, 142, 0],
867         ecc: [
868             RSParameters {
869                 bs: 74,
870                 dw: 46,
871                 ns: 14,
872             },
873             RSParameters {
874                 bs: 145,
875                 dw: 115,
876                 ns: 17,
877             },
878             RSParameters {
879                 bs: 45,
880                 dw: 15,
881                 ns: 11,
882             },
883             RSParameters {
884                 bs: 54,
885                 dw: 24,
886                 ns: 29,
887             },
888         ],
889     },
890     VersionInfo {
891         data_bytes: 2761,
892         apat: [6, 34, 62, 90, 118, 146, 0],
893         ecc: [
894             RSParameters {
895                 bs: 74,
896                 dw: 46,
897                 ns: 14,
898             },
899             RSParameters {
900                 bs: 145,
901                 dw: 115,
902                 ns: 13,
903             },
904             RSParameters {
905                 bs: 46,
906                 dw: 16,
907                 ns: 59,
908             },
909             RSParameters {
910                 bs: 54,
911                 dw: 24,
912                 ns: 44,
913             },
914         ],
915     },
916     VersionInfo {
917         data_bytes: 2876,
918         apat: [6, 30, 54, 78, 102, 126, 150],
919         ecc: [
920             RSParameters {
921                 bs: 75,
922                 dw: 47,
923                 ns: 12,
924             },
925             RSParameters {
926                 bs: 151,
927                 dw: 121,
928                 ns: 12,
929             },
930             RSParameters {
931                 bs: 45,
932                 dw: 15,
933                 ns: 22,
934             },
935             RSParameters {
936                 bs: 54,
937                 dw: 24,
938                 ns: 39,
939             },
940         ],
941     },
942     VersionInfo {
943         data_bytes: 3034,
944         apat: [6, 24, 50, 76, 102, 128, 154],
945         ecc: [
946             RSParameters {
947                 bs: 75,
948                 dw: 47,
949                 ns: 6,
950             },
951             RSParameters {
952                 bs: 151,
953                 dw: 121,
954                 ns: 6,
955             },
956             RSParameters {
957                 bs: 45,
958                 dw: 15,
959                 ns: 2,
960             },
961             RSParameters {
962                 bs: 54,
963                 dw: 24,
964                 ns: 46,
965             },
966         ],
967     },
968     VersionInfo {
969         data_bytes: 3196,
970         apat: [6, 28, 54, 80, 106, 132, 158],
971         ecc: [
972             RSParameters {
973                 bs: 74,
974                 dw: 46,
975                 ns: 29,
976             },
977             RSParameters {
978                 bs: 152,
979                 dw: 122,
980                 ns: 17,
981             },
982             RSParameters {
983                 bs: 45,
984                 dw: 15,
985                 ns: 24,
986             },
987             RSParameters {
988                 bs: 54,
989                 dw: 24,
990                 ns: 49,
991             },
992         ],
993     },
994     VersionInfo {
995         data_bytes: 3362,
996         apat: [6, 32, 58, 84, 110, 136, 162],
997         ecc: [
998             RSParameters {
999                 bs: 74,
1000                 dw: 46,
1001                 ns: 13,
1002             },
1003             RSParameters {
1004                 bs: 152,
1005                 dw: 122,
1006                 ns: 4,
1007             },
1008             RSParameters {
1009                 bs: 45,
1010                 dw: 15,
1011                 ns: 42,
1012             },
1013             RSParameters {
1014                 bs: 54,
1015                 dw: 24,
1016                 ns: 48,
1017             },
1018         ],
1019     },
1020     VersionInfo {
1021         data_bytes: 3532,
1022         apat: [6, 26, 54, 82, 110, 138, 166],
1023         ecc: [
1024             RSParameters {
1025                 bs: 75,
1026                 dw: 47,
1027                 ns: 40,
1028             },
1029             RSParameters {
1030                 bs: 147,
1031                 dw: 117,
1032                 ns: 20,
1033             },
1034             RSParameters {
1035                 bs: 45,
1036                 dw: 15,
1037                 ns: 10,
1038             },
1039             RSParameters {
1040                 bs: 54,
1041                 dw: 24,
1042                 ns: 43,
1043             },
1044         ],
1045     },
1046     VersionInfo {
1047         data_bytes: 3706,
1048         apat: [6, 30, 58, 86, 114, 142, 170],
1049         ecc: [
1050             RSParameters {
1051                 bs: 75,
1052                 dw: 47,
1053                 ns: 18,
1054             },
1055             RSParameters {
1056                 bs: 148,
1057                 dw: 118,
1058                 ns: 19,
1059             },
1060             RSParameters {
1061                 bs: 45,
1062                 dw: 15,
1063                 ns: 20,
1064             },
1065             RSParameters {
1066                 bs: 54,
1067                 dw: 24,
1068                 ns: 34,
1069             },
1070         ],
1071     },
1072 ];
1073