Skip to main content

anyxml_encoding/
ebcdic.rs

1use crate::{DecodeError, Decoder, EncodeError, Encoder};
2
3macro_rules! impl_ebcdic_encoder_and_decoder {
4    ( $name:ident, $namelit:literal, $encoder:ident, $decoder:ident, $etable:ident, $dtable:ident ) => {
5        pub const $name: &str = $namelit;
6        #[allow(non_camel_case_types)]
7        pub struct $encoder;
8        impl Encoder for $encoder {
9            fn name(&self) -> &'static str {
10                $name
11            }
12
13            fn encode(
14                &mut self,
15                src: &str,
16                dst: &mut [u8],
17                finish: bool,
18            ) -> Result<(usize, usize), EncodeError> {
19                if src.is_empty() {
20                    return if finish {
21                        Ok((0, 0))
22                    } else {
23                        Err(EncodeError::InputIsEmpty)
24                    };
25                }
26
27                if dst.is_empty() {
28                    return Err(EncodeError::OutputTooShort);
29                }
30
31                let (mut read, mut write) = (0, 0);
32                for c in src.chars() {
33                    let b = c as u32;
34                    read += c.len_utf8();
35                    let pos = $etable
36                        .binary_search_by_key(&b, |k| k.0 as u32)
37                        .map_err(|_| EncodeError::Unmappable { read, write, c })?;
38                    dst[write] = $etable[pos].1;
39                    write += 1;
40                    if write == dst.len() {
41                        break;
42                    }
43                }
44                Ok((read, write))
45            }
46        }
47
48        #[allow(non_camel_case_types)]
49        pub struct $decoder;
50        impl Decoder for $decoder {
51            fn name(&self) -> &'static str {
52                $name
53            }
54
55            fn decode(
56                &mut self,
57                src: &[u8],
58                dst: &mut String,
59                finish: bool,
60            ) -> Result<(usize, usize), DecodeError> {
61                if src.is_empty() {
62                    return if finish {
63                        Ok((0, 0))
64                    } else {
65                        Err(DecodeError::InputIsEmpty)
66                    };
67                }
68                let len = dst.capacity() - dst.len();
69                if len < 4 {
70                    return Err(DecodeError::OutputTooShort);
71                }
72
73                let (mut read, mut write) = (0, 0);
74                for &b in src {
75                    let c = $dtable[b as usize];
76                    let l = c.len_utf8();
77                    if write + l > len {
78                        break;
79                    }
80                    read += 1;
81                    if c == char::REPLACEMENT_CHARACTER {
82                        return Err(DecodeError::Malformed {
83                            read,
84                            write,
85                            length: 1,
86                            offset: 0,
87                        });
88                    }
89                    dst.push(c);
90                    write += l;
91                }
92                Ok((read, write))
93            }
94        }
95    };
96}
97
98// The IBMxxx table is based on information from the CDRA Repository published by IBM.
99// According to RFC1345, there is supposed to be a character set named EBCDIC-xxx, but
100// it appears to be somewhat lacking in control characters. Since we cannot reach the
101// source presented in RFC1345, we only support IBMxxx, which has a reliable source of
102// information.
103
104impl_ebcdic_encoder_and_decoder!(
105    IBM037,
106    "IBM037",
107    IBM037Encoder,
108    IBM037Decoder,
109    IBM_37_ENCODE_TABLE,
110    IBM_37_DECODE_TABLE
111);
112const IBM_37_DECODE_TABLE: [char; 256] = [
113    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
114    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
115    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
116    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
117    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
118    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
119    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
120    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
121    '\u{a2}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{7c}', '\u{26}', '\u{e9}', '\u{ea}',
122    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{21}', '\u{24}',
123    '\u{2a}', '\u{29}', '\u{3b}', '\u{ac}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
124    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
125    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
126    '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
127    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
128    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
129    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
130    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{7e}', '\u{73}', '\u{74}',
131    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
132    '\u{dd}', '\u{de}', '\u{ae}', '\u{5e}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
133    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{5b}', '\u{5d}', '\u{af}', '\u{a8}', '\u{b4}',
134    '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
135    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
136    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
137    '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
138    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
139    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
140    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
141    '\u{da}', '\u{9f}',
142];
143const IBM_37_ENCODE_TABLE: &[(u16, u8)] = &[
144    (0, 0),
145    (1, 1),
146    (2, 2),
147    (3, 3),
148    (4, 55),
149    (5, 45),
150    (6, 46),
151    (7, 47),
152    (8, 22),
153    (9, 5),
154    (10, 37),
155    (11, 11),
156    (12, 12),
157    (13, 13),
158    (14, 14),
159    (15, 15),
160    (16, 16),
161    (17, 17),
162    (18, 18),
163    (19, 19),
164    (20, 60),
165    (21, 61),
166    (22, 50),
167    (23, 38),
168    (24, 24),
169    (25, 25),
170    (26, 63),
171    (27, 39),
172    (28, 28),
173    (29, 29),
174    (30, 30),
175    (31, 31),
176    (32, 64),
177    (33, 90),
178    (34, 127),
179    (35, 123),
180    (36, 91),
181    (37, 108),
182    (38, 80),
183    (39, 125),
184    (40, 77),
185    (41, 93),
186    (42, 92),
187    (43, 78),
188    (44, 107),
189    (45, 96),
190    (46, 75),
191    (47, 97),
192    (48, 240),
193    (49, 241),
194    (50, 242),
195    (51, 243),
196    (52, 244),
197    (53, 245),
198    (54, 246),
199    (55, 247),
200    (56, 248),
201    (57, 249),
202    (58, 122),
203    (59, 94),
204    (60, 76),
205    (61, 126),
206    (62, 110),
207    (63, 111),
208    (64, 124),
209    (65, 193),
210    (66, 194),
211    (67, 195),
212    (68, 196),
213    (69, 197),
214    (70, 198),
215    (71, 199),
216    (72, 200),
217    (73, 201),
218    (74, 209),
219    (75, 210),
220    (76, 211),
221    (77, 212),
222    (78, 213),
223    (79, 214),
224    (80, 215),
225    (81, 216),
226    (82, 217),
227    (83, 226),
228    (84, 227),
229    (85, 228),
230    (86, 229),
231    (87, 230),
232    (88, 231),
233    (89, 232),
234    (90, 233),
235    (91, 186),
236    (92, 224),
237    (93, 187),
238    (94, 176),
239    (95, 109),
240    (96, 121),
241    (97, 129),
242    (98, 130),
243    (99, 131),
244    (100, 132),
245    (101, 133),
246    (102, 134),
247    (103, 135),
248    (104, 136),
249    (105, 137),
250    (106, 145),
251    (107, 146),
252    (108, 147),
253    (109, 148),
254    (110, 149),
255    (111, 150),
256    (112, 151),
257    (113, 152),
258    (114, 153),
259    (115, 162),
260    (116, 163),
261    (117, 164),
262    (118, 165),
263    (119, 166),
264    (120, 167),
265    (121, 168),
266    (122, 169),
267    (123, 192),
268    (124, 79),
269    (125, 208),
270    (126, 161),
271    (127, 7),
272    (128, 32),
273    (129, 33),
274    (130, 34),
275    (131, 35),
276    (132, 36),
277    (133, 21),
278    (134, 6),
279    (135, 23),
280    (136, 40),
281    (137, 41),
282    (138, 42),
283    (139, 43),
284    (140, 44),
285    (141, 9),
286    (142, 10),
287    (143, 27),
288    (144, 48),
289    (145, 49),
290    (146, 26),
291    (147, 51),
292    (148, 52),
293    (149, 53),
294    (150, 54),
295    (151, 8),
296    (152, 56),
297    (153, 57),
298    (154, 58),
299    (155, 59),
300    (156, 4),
301    (157, 20),
302    (158, 62),
303    (159, 255),
304    (160, 65),
305    (161, 170),
306    (162, 74),
307    (163, 177),
308    (164, 159),
309    (165, 178),
310    (166, 106),
311    (167, 181),
312    (168, 189),
313    (169, 180),
314    (170, 154),
315    (171, 138),
316    (172, 95),
317    (173, 202),
318    (174, 175),
319    (175, 188),
320    (176, 144),
321    (177, 143),
322    (178, 234),
323    (179, 250),
324    (180, 190),
325    (181, 160),
326    (182, 182),
327    (183, 179),
328    (184, 157),
329    (185, 218),
330    (186, 155),
331    (187, 139),
332    (188, 183),
333    (189, 184),
334    (190, 185),
335    (191, 171),
336    (192, 100),
337    (193, 101),
338    (194, 98),
339    (195, 102),
340    (196, 99),
341    (197, 103),
342    (198, 158),
343    (199, 104),
344    (200, 116),
345    (201, 113),
346    (202, 114),
347    (203, 115),
348    (204, 120),
349    (205, 117),
350    (206, 118),
351    (207, 119),
352    (208, 172),
353    (209, 105),
354    (210, 237),
355    (211, 238),
356    (212, 235),
357    (213, 239),
358    (214, 236),
359    (215, 191),
360    (216, 128),
361    (217, 253),
362    (218, 254),
363    (219, 251),
364    (220, 252),
365    (221, 173),
366    (222, 174),
367    (223, 89),
368    (224, 68),
369    (225, 69),
370    (226, 66),
371    (227, 70),
372    (228, 67),
373    (229, 71),
374    (230, 156),
375    (231, 72),
376    (232, 84),
377    (233, 81),
378    (234, 82),
379    (235, 83),
380    (236, 88),
381    (237, 85),
382    (238, 86),
383    (239, 87),
384    (240, 140),
385    (241, 73),
386    (242, 205),
387    (243, 206),
388    (244, 203),
389    (245, 207),
390    (246, 204),
391    (247, 225),
392    (248, 112),
393    (249, 221),
394    (250, 222),
395    (251, 219),
396    (252, 220),
397    (253, 141),
398    (254, 142),
399    (255, 223),
400];
401
402impl_ebcdic_encoder_and_decoder!(
403    IBM273,
404    "IBM273",
405    IBM273Encoder,
406    IBM273Decoder,
407    IBM_273_ENCODE_TABLE,
408    IBM_273_DECODE_TABLE
409);
410const IBM_273_DECODE_TABLE: [char; 256] = [
411    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
412    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
413    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
414    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
415    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
416    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
417    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
418    '\u{a0}', '\u{e2}', '\u{7b}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
419    '\u{c4}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
420    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{7e}', '\u{dc}', '\u{24}',
421    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{5b}', '\u{c0}',
422    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f6}', '\u{2c}', '\u{25}', '\u{5f}',
423    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
424    '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{a7}', '\u{27}', '\u{3d}', '\u{22}',
425    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
426    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
427    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
428    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{df}', '\u{73}', '\u{74}',
429    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
430    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{40}',
431    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
432    '\u{d7}', '\u{e4}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
433    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{a6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{fc}',
434    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
435    '\u{b9}', '\u{fb}', '\u{7d}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{d6}', '\u{f7}', '\u{53}',
436    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
437    '\u{5c}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
438    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{5d}', '\u{d9}',
439    '\u{da}', '\u{9f}',
440];
441const IBM_273_ENCODE_TABLE: &[(u16, u8)] = &[
442    (0, 0),
443    (1, 1),
444    (2, 2),
445    (3, 3),
446    (4, 55),
447    (5, 45),
448    (6, 46),
449    (7, 47),
450    (8, 22),
451    (9, 5),
452    (10, 37),
453    (11, 11),
454    (12, 12),
455    (13, 13),
456    (14, 14),
457    (15, 15),
458    (16, 16),
459    (17, 17),
460    (18, 18),
461    (19, 19),
462    (20, 60),
463    (21, 61),
464    (22, 50),
465    (23, 38),
466    (24, 24),
467    (25, 25),
468    (26, 63),
469    (27, 39),
470    (28, 28),
471    (29, 29),
472    (30, 30),
473    (31, 31),
474    (32, 64),
475    (33, 79),
476    (34, 127),
477    (35, 123),
478    (36, 91),
479    (37, 108),
480    (38, 80),
481    (39, 125),
482    (40, 77),
483    (41, 93),
484    (42, 92),
485    (43, 78),
486    (44, 107),
487    (45, 96),
488    (46, 75),
489    (47, 97),
490    (48, 240),
491    (49, 241),
492    (50, 242),
493    (51, 243),
494    (52, 244),
495    (53, 245),
496    (54, 246),
497    (55, 247),
498    (56, 248),
499    (57, 249),
500    (58, 122),
501    (59, 94),
502    (60, 76),
503    (61, 126),
504    (62, 110),
505    (63, 111),
506    (64, 181),
507    (65, 193),
508    (66, 194),
509    (67, 195),
510    (68, 196),
511    (69, 197),
512    (70, 198),
513    (71, 199),
514    (72, 200),
515    (73, 201),
516    (74, 209),
517    (75, 210),
518    (76, 211),
519    (77, 212),
520    (78, 213),
521    (79, 214),
522    (80, 215),
523    (81, 216),
524    (82, 217),
525    (83, 226),
526    (84, 227),
527    (85, 228),
528    (86, 229),
529    (87, 230),
530    (88, 231),
531    (89, 232),
532    (90, 233),
533    (91, 99),
534    (92, 236),
535    (93, 252),
536    (94, 95),
537    (95, 109),
538    (96, 121),
539    (97, 129),
540    (98, 130),
541    (99, 131),
542    (100, 132),
543    (101, 133),
544    (102, 134),
545    (103, 135),
546    (104, 136),
547    (105, 137),
548    (106, 145),
549    (107, 146),
550    (108, 147),
551    (109, 148),
552    (110, 149),
553    (111, 150),
554    (112, 151),
555    (113, 152),
556    (114, 153),
557    (115, 162),
558    (116, 163),
559    (117, 164),
560    (118, 165),
561    (119, 166),
562    (120, 167),
563    (121, 168),
564    (122, 169),
565    (123, 67),
566    (124, 187),
567    (125, 220),
568    (126, 89),
569    (127, 7),
570    (128, 32),
571    (129, 33),
572    (130, 34),
573    (131, 35),
574    (132, 36),
575    (133, 21),
576    (134, 6),
577    (135, 23),
578    (136, 40),
579    (137, 41),
580    (138, 42),
581    (139, 43),
582    (140, 44),
583    (141, 9),
584    (142, 10),
585    (143, 27),
586    (144, 48),
587    (145, 49),
588    (146, 26),
589    (147, 51),
590    (148, 52),
591    (149, 53),
592    (150, 54),
593    (151, 8),
594    (152, 56),
595    (153, 57),
596    (154, 58),
597    (155, 59),
598    (156, 4),
599    (157, 20),
600    (158, 62),
601    (159, 255),
602    (160, 65),
603    (161, 170),
604    (162, 176),
605    (163, 177),
606    (164, 159),
607    (165, 178),
608    (166, 204),
609    (167, 124),
610    (168, 189),
611    (169, 180),
612    (170, 154),
613    (171, 138),
614    (172, 186),
615    (173, 202),
616    (174, 175),
617    (175, 188),
618    (176, 144),
619    (177, 143),
620    (178, 234),
621    (179, 250),
622    (180, 190),
623    (181, 160),
624    (182, 182),
625    (183, 179),
626    (184, 157),
627    (185, 218),
628    (186, 155),
629    (187, 139),
630    (188, 183),
631    (189, 184),
632    (190, 185),
633    (191, 171),
634    (192, 100),
635    (193, 101),
636    (194, 98),
637    (195, 102),
638    (196, 74),
639    (197, 103),
640    (198, 158),
641    (199, 104),
642    (200, 116),
643    (201, 113),
644    (202, 114),
645    (203, 115),
646    (204, 120),
647    (205, 117),
648    (206, 118),
649    (207, 119),
650    (208, 172),
651    (209, 105),
652    (210, 237),
653    (211, 238),
654    (212, 235),
655    (213, 239),
656    (214, 224),
657    (215, 191),
658    (216, 128),
659    (217, 253),
660    (218, 254),
661    (219, 251),
662    (220, 90),
663    (221, 173),
664    (222, 174),
665    (223, 161),
666    (224, 68),
667    (225, 69),
668    (226, 66),
669    (227, 70),
670    (228, 192),
671    (229, 71),
672    (230, 156),
673    (231, 72),
674    (232, 84),
675    (233, 81),
676    (234, 82),
677    (235, 83),
678    (236, 88),
679    (237, 85),
680    (238, 86),
681    (239, 87),
682    (240, 140),
683    (241, 73),
684    (242, 205),
685    (243, 206),
686    (244, 203),
687    (245, 207),
688    (246, 106),
689    (247, 225),
690    (248, 112),
691    (249, 221),
692    (250, 222),
693    (251, 219),
694    (252, 208),
695    (253, 141),
696    (254, 142),
697    (255, 223),
698];
699
700impl_ebcdic_encoder_and_decoder!(
701    IBM274,
702    "IBM274",
703    IBM274Encoder,
704    IBM274Decoder,
705    IBM_274_ENCODE_TABLE,
706    IBM_274_DECODE_TABLE
707);
708const IBM_274_DECODE_TABLE: [char; 256] = [
709    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
710    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
711    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
712    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
713    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
714    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
715    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
716    '\u{a0}', '\u{e2}', '\u{e4}', '\u{40}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{5c}', '\u{f1}',
717    '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{7b}', '\u{ea}',
718    '\u{eb}', '\u{7d}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{5d}', '\u{24}',
719    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
720    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f9}', '\u{2c}', '\u{25}', '\u{5f}',
721    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
722    '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{e0}', '\u{27}', '\u{3d}', '\u{22}',
723    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
724    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
725    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
726    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{a8}', '\u{73}', '\u{74}',
727    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
728    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
729    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{7e}', '\u{b4}',
730    '\u{d7}', '\u{e9}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
731    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e8}',
732    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
733    '\u{b9}', '\u{fb}', '\u{fc}', '\u{a6}', '\u{fa}', '\u{ff}', '\u{e7}', '\u{f7}', '\u{53}',
734    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
735    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
736    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
737    '\u{da}', '\u{9f}',
738];
739const IBM_274_ENCODE_TABLE: &[(u16, u8)] = &[
740    (0, 0),
741    (1, 1),
742    (2, 2),
743    (3, 3),
744    (4, 55),
745    (5, 45),
746    (6, 46),
747    (7, 47),
748    (8, 22),
749    (9, 5),
750    (10, 37),
751    (11, 11),
752    (12, 12),
753    (13, 13),
754    (14, 14),
755    (15, 15),
756    (16, 16),
757    (17, 17),
758    (18, 18),
759    (19, 19),
760    (20, 60),
761    (21, 61),
762    (22, 50),
763    (23, 38),
764    (24, 24),
765    (25, 25),
766    (26, 63),
767    (27, 39),
768    (28, 28),
769    (29, 29),
770    (30, 30),
771    (31, 31),
772    (32, 64),
773    (33, 79),
774    (34, 127),
775    (35, 123),
776    (36, 91),
777    (37, 108),
778    (38, 80),
779    (39, 125),
780    (40, 77),
781    (41, 93),
782    (42, 92),
783    (43, 78),
784    (44, 107),
785    (45, 96),
786    (46, 75),
787    (47, 97),
788    (48, 240),
789    (49, 241),
790    (50, 242),
791    (51, 243),
792    (52, 244),
793    (53, 245),
794    (54, 246),
795    (55, 247),
796    (56, 248),
797    (57, 249),
798    (58, 122),
799    (59, 94),
800    (60, 76),
801    (61, 126),
802    (62, 110),
803    (63, 111),
804    (64, 68),
805    (65, 193),
806    (66, 194),
807    (67, 195),
808    (68, 196),
809    (69, 197),
810    (70, 198),
811    (71, 199),
812    (72, 200),
813    (73, 201),
814    (74, 209),
815    (75, 210),
816    (76, 211),
817    (77, 212),
818    (78, 213),
819    (79, 214),
820    (80, 215),
821    (81, 216),
822    (82, 217),
823    (83, 226),
824    (84, 227),
825    (85, 228),
826    (86, 229),
827    (87, 230),
828    (88, 231),
829    (89, 232),
830    (90, 233),
831    (91, 74),
832    (92, 72),
833    (93, 90),
834    (94, 95),
835    (95, 109),
836    (96, 121),
837    (97, 129),
838    (98, 130),
839    (99, 131),
840    (100, 132),
841    (101, 133),
842    (102, 134),
843    (103, 135),
844    (104, 136),
845    (105, 137),
846    (106, 145),
847    (107, 146),
848    (108, 147),
849    (109, 148),
850    (110, 149),
851    (111, 150),
852    (112, 151),
853    (113, 152),
854    (114, 153),
855    (115, 162),
856    (116, 163),
857    (117, 164),
858    (118, 165),
859    (119, 166),
860    (120, 167),
861    (121, 168),
862    (122, 169),
863    (123, 81),
864    (124, 187),
865    (125, 84),
866    (126, 189),
867    (127, 7),
868    (128, 32),
869    (129, 33),
870    (130, 34),
871    (131, 35),
872    (132, 36),
873    (133, 21),
874    (134, 6),
875    (135, 23),
876    (136, 40),
877    (137, 41),
878    (138, 42),
879    (139, 43),
880    (140, 44),
881    (141, 9),
882    (142, 10),
883    (143, 27),
884    (144, 48),
885    (145, 49),
886    (146, 26),
887    (147, 51),
888    (148, 52),
889    (149, 53),
890    (150, 54),
891    (151, 8),
892    (152, 56),
893    (153, 57),
894    (154, 58),
895    (155, 59),
896    (156, 4),
897    (157, 20),
898    (158, 62),
899    (159, 255),
900    (160, 65),
901    (161, 170),
902    (162, 176),
903    (163, 177),
904    (164, 159),
905    (165, 178),
906    (166, 221),
907    (167, 181),
908    (168, 161),
909    (169, 180),
910    (170, 154),
911    (171, 138),
912    (172, 186),
913    (173, 202),
914    (174, 175),
915    (175, 188),
916    (176, 144),
917    (177, 143),
918    (178, 234),
919    (179, 250),
920    (180, 190),
921    (181, 160),
922    (182, 182),
923    (183, 179),
924    (184, 157),
925    (185, 218),
926    (186, 155),
927    (187, 139),
928    (188, 183),
929    (189, 184),
930    (190, 185),
931    (191, 171),
932    (192, 100),
933    (193, 101),
934    (194, 98),
935    (195, 102),
936    (196, 99),
937    (197, 103),
938    (198, 158),
939    (199, 104),
940    (200, 116),
941    (201, 113),
942    (202, 114),
943    (203, 115),
944    (204, 120),
945    (205, 117),
946    (206, 118),
947    (207, 119),
948    (208, 172),
949    (209, 105),
950    (210, 237),
951    (211, 238),
952    (212, 235),
953    (213, 239),
954    (214, 236),
955    (215, 191),
956    (216, 128),
957    (217, 253),
958    (218, 254),
959    (219, 251),
960    (220, 252),
961    (221, 173),
962    (222, 174),
963    (223, 89),
964    (224, 124),
965    (225, 69),
966    (226, 66),
967    (227, 70),
968    (228, 67),
969    (229, 71),
970    (230, 156),
971    (231, 224),
972    (232, 208),
973    (233, 192),
974    (234, 82),
975    (235, 83),
976    (236, 88),
977    (237, 85),
978    (238, 86),
979    (239, 87),
980    (240, 140),
981    (241, 73),
982    (242, 205),
983    (243, 206),
984    (244, 203),
985    (245, 207),
986    (246, 204),
987    (247, 225),
988    (248, 112),
989    (249, 106),
990    (250, 222),
991    (251, 219),
992    (252, 220),
993    (253, 141),
994    (254, 142),
995    (255, 223),
996];
997
998impl_ebcdic_encoder_and_decoder!(
999    IBM275,
1000    "IBM275",
1001    IBM275Encoder,
1002    IBM275Decoder,
1003    IBM_275_ENCODE_TABLE,
1004    IBM_275_DECODE_TABLE
1005);
1006const IBM_275_DECODE_TABLE: [char; 256] = [
1007    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1008    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1009    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1010    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1011    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1012    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1013    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1014    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{60}', '\u{e5}', '\u{a6}', '\u{f1}',
1015    '\u{c9}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{7d}', '\u{ea}',
1016    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{24}', '\u{c7}',
1017    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
1018    '\u{c1}', '\u{40}', '\u{c5}', '\u{5d}', '\u{d1}', '\u{e7}', '\u{2c}', '\u{25}', '\u{5f}',
1019    '\u{3e}', '\u{3f}', '\u{f8}', '\u{5b}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1020    '\u{cf}', '\u{cc}', '\u{e3}', '\u{3a}', '\u{d5}', '\u{c3}', '\u{27}', '\u{3d}', '\u{22}',
1021    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1022    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
1023    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1024    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{7e}', '\u{73}', '\u{74}',
1025    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1026    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
1027    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1028    '\u{d7}', '\u{f5}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1029    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{7b}', '\u{e9}',
1030    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1031    '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
1032    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1033    '\u{d6}', '\u{d2}', '\u{d3}', '\u{23}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1034    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1035    '\u{da}', '\u{9f}',
1036];
1037const IBM_275_ENCODE_TABLE: &[(u16, u8)] = &[
1038    (0, 0),
1039    (1, 1),
1040    (2, 2),
1041    (3, 3),
1042    (4, 55),
1043    (5, 45),
1044    (6, 46),
1045    (7, 47),
1046    (8, 22),
1047    (9, 5),
1048    (10, 37),
1049    (11, 11),
1050    (12, 12),
1051    (13, 13),
1052    (14, 14),
1053    (15, 15),
1054    (16, 16),
1055    (17, 17),
1056    (18, 18),
1057    (19, 19),
1058    (20, 60),
1059    (21, 61),
1060    (22, 50),
1061    (23, 38),
1062    (24, 24),
1063    (25, 25),
1064    (26, 63),
1065    (27, 39),
1066    (28, 28),
1067    (29, 29),
1068    (30, 30),
1069    (31, 31),
1070    (32, 64),
1071    (33, 79),
1072    (34, 127),
1073    (35, 239),
1074    (36, 90),
1075    (37, 108),
1076    (38, 80),
1077    (39, 125),
1078    (40, 77),
1079    (41, 93),
1080    (42, 92),
1081    (43, 78),
1082    (44, 107),
1083    (45, 96),
1084    (46, 75),
1085    (47, 97),
1086    (48, 240),
1087    (49, 241),
1088    (50, 242),
1089    (51, 243),
1090    (52, 244),
1091    (53, 245),
1092    (54, 246),
1093    (55, 247),
1094    (56, 248),
1095    (57, 249),
1096    (58, 122),
1097    (59, 94),
1098    (60, 76),
1099    (61, 126),
1100    (62, 110),
1101    (63, 111),
1102    (64, 102),
1103    (65, 193),
1104    (66, 194),
1105    (67, 195),
1106    (68, 196),
1107    (69, 197),
1108    (70, 198),
1109    (71, 199),
1110    (72, 200),
1111    (73, 201),
1112    (74, 209),
1113    (75, 210),
1114    (76, 211),
1115    (77, 212),
1116    (78, 213),
1117    (79, 214),
1118    (80, 215),
1119    (81, 216),
1120    (82, 217),
1121    (83, 226),
1122    (84, 227),
1123    (85, 228),
1124    (86, 229),
1125    (87, 230),
1126    (88, 231),
1127    (89, 232),
1128    (90, 233),
1129    (91, 113),
1130    (92, 224),
1131    (93, 104),
1132    (94, 95),
1133    (95, 109),
1134    (96, 70),
1135    (97, 129),
1136    (98, 130),
1137    (99, 131),
1138    (100, 132),
1139    (101, 133),
1140    (102, 134),
1141    (103, 135),
1142    (104, 136),
1143    (105, 137),
1144    (106, 145),
1145    (107, 146),
1146    (108, 147),
1147    (109, 148),
1148    (110, 149),
1149    (111, 150),
1150    (112, 151),
1151    (113, 152),
1152    (114, 153),
1153    (115, 162),
1154    (116, 163),
1155    (117, 164),
1156    (118, 165),
1157    (119, 166),
1158    (120, 167),
1159    (121, 168),
1160    (122, 169),
1161    (123, 207),
1162    (124, 187),
1163    (125, 81),
1164    (126, 161),
1165    (127, 7),
1166    (128, 32),
1167    (129, 33),
1168    (130, 34),
1169    (131, 35),
1170    (132, 36),
1171    (133, 21),
1172    (134, 6),
1173    (135, 23),
1174    (136, 40),
1175    (137, 41),
1176    (138, 42),
1177    (139, 43),
1178    (140, 44),
1179    (141, 9),
1180    (142, 10),
1181    (143, 27),
1182    (144, 48),
1183    (145, 49),
1184    (146, 26),
1185    (147, 51),
1186    (148, 52),
1187    (149, 53),
1188    (150, 54),
1189    (151, 8),
1190    (152, 56),
1191    (153, 57),
1192    (154, 58),
1193    (155, 59),
1194    (156, 4),
1195    (157, 20),
1196    (158, 62),
1197    (159, 255),
1198    (160, 65),
1199    (161, 170),
1200    (162, 176),
1201    (163, 177),
1202    (164, 159),
1203    (165, 178),
1204    (166, 72),
1205    (167, 181),
1206    (168, 189),
1207    (169, 180),
1208    (170, 154),
1209    (171, 138),
1210    (172, 186),
1211    (173, 202),
1212    (174, 175),
1213    (175, 188),
1214    (176, 144),
1215    (177, 143),
1216    (178, 234),
1217    (179, 250),
1218    (180, 190),
1219    (181, 160),
1220    (182, 182),
1221    (183, 179),
1222    (184, 157),
1223    (185, 218),
1224    (186, 155),
1225    (187, 139),
1226    (188, 183),
1227    (189, 184),
1228    (190, 185),
1229    (191, 171),
1230    (192, 100),
1231    (193, 101),
1232    (194, 98),
1233    (195, 124),
1234    (196, 99),
1235    (197, 103),
1236    (198, 158),
1237    (199, 91),
1238    (200, 116),
1239    (201, 74),
1240    (202, 114),
1241    (203, 115),
1242    (204, 120),
1243    (205, 117),
1244    (206, 118),
1245    (207, 119),
1246    (208, 172),
1247    (209, 105),
1248    (210, 237),
1249    (211, 238),
1250    (212, 235),
1251    (213, 123),
1252    (214, 236),
1253    (215, 191),
1254    (216, 128),
1255    (217, 253),
1256    (218, 254),
1257    (219, 251),
1258    (220, 252),
1259    (221, 173),
1260    (222, 174),
1261    (223, 89),
1262    (224, 68),
1263    (225, 69),
1264    (226, 66),
1265    (227, 121),
1266    (228, 67),
1267    (229, 71),
1268    (230, 156),
1269    (231, 106),
1270    (232, 84),
1271    (233, 208),
1272    (234, 82),
1273    (235, 83),
1274    (236, 88),
1275    (237, 85),
1276    (238, 86),
1277    (239, 87),
1278    (240, 140),
1279    (241, 73),
1280    (242, 205),
1281    (243, 206),
1282    (244, 203),
1283    (245, 192),
1284    (246, 204),
1285    (247, 225),
1286    (248, 112),
1287    (249, 221),
1288    (250, 222),
1289    (251, 219),
1290    (252, 220),
1291    (253, 141),
1292    (254, 142),
1293    (255, 223),
1294];
1295
1296impl_ebcdic_encoder_and_decoder!(
1297    IBM277,
1298    "IBM277",
1299    IBM277Encoder,
1300    IBM277Decoder,
1301    IBM_277_ENCODE_TABLE,
1302    IBM_277_DECODE_TABLE
1303);
1304const IBM_277_DECODE_TABLE: [char; 256] = [
1305    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1306    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1307    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1308    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1309    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1310    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1311    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1312    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{7d}', '\u{e7}', '\u{f1}',
1313    '\u{23}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
1314    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{a4}', '\u{c5}',
1315    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
1316    '\u{c1}', '\u{c3}', '\u{24}', '\u{c7}', '\u{d1}', '\u{f8}', '\u{2c}', '\u{25}', '\u{5f}',
1317    '\u{3e}', '\u{3f}', '\u{a6}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1318    '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{c6}', '\u{d8}', '\u{27}', '\u{3d}', '\u{22}',
1319    '\u{40}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1320    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
1321    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1322    '\u{ba}', '\u{7b}', '\u{b8}', '\u{5b}', '\u{5d}', '\u{b5}', '\u{fc}', '\u{73}', '\u{74}',
1323    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1324    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
1325    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1326    '\u{d7}', '\u{e6}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1327    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e5}',
1328    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1329    '\u{b9}', '\u{fb}', '\u{7e}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
1330    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1331    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1332    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1333    '\u{da}', '\u{9f}',
1334];
1335const IBM_277_ENCODE_TABLE: &[(u16, u8)] = &[
1336    (0, 0),
1337    (1, 1),
1338    (2, 2),
1339    (3, 3),
1340    (4, 55),
1341    (5, 45),
1342    (6, 46),
1343    (7, 47),
1344    (8, 22),
1345    (9, 5),
1346    (10, 37),
1347    (11, 11),
1348    (12, 12),
1349    (13, 13),
1350    (14, 14),
1351    (15, 15),
1352    (16, 16),
1353    (17, 17),
1354    (18, 18),
1355    (19, 19),
1356    (20, 60),
1357    (21, 61),
1358    (22, 50),
1359    (23, 38),
1360    (24, 24),
1361    (25, 25),
1362    (26, 63),
1363    (27, 39),
1364    (28, 28),
1365    (29, 29),
1366    (30, 30),
1367    (31, 31),
1368    (32, 64),
1369    (33, 79),
1370    (34, 127),
1371    (35, 74),
1372    (36, 103),
1373    (37, 108),
1374    (38, 80),
1375    (39, 125),
1376    (40, 77),
1377    (41, 93),
1378    (42, 92),
1379    (43, 78),
1380    (44, 107),
1381    (45, 96),
1382    (46, 75),
1383    (47, 97),
1384    (48, 240),
1385    (49, 241),
1386    (50, 242),
1387    (51, 243),
1388    (52, 244),
1389    (53, 245),
1390    (54, 246),
1391    (55, 247),
1392    (56, 248),
1393    (57, 249),
1394    (58, 122),
1395    (59, 94),
1396    (60, 76),
1397    (61, 126),
1398    (62, 110),
1399    (63, 111),
1400    (64, 128),
1401    (65, 193),
1402    (66, 194),
1403    (67, 195),
1404    (68, 196),
1405    (69, 197),
1406    (70, 198),
1407    (71, 199),
1408    (72, 200),
1409    (73, 201),
1410    (74, 209),
1411    (75, 210),
1412    (76, 211),
1413    (77, 212),
1414    (78, 213),
1415    (79, 214),
1416    (80, 215),
1417    (81, 216),
1418    (82, 217),
1419    (83, 226),
1420    (84, 227),
1421    (85, 228),
1422    (86, 229),
1423    (87, 230),
1424    (88, 231),
1425    (89, 232),
1426    (90, 233),
1427    (91, 158),
1428    (92, 224),
1429    (93, 159),
1430    (94, 95),
1431    (95, 109),
1432    (96, 121),
1433    (97, 129),
1434    (98, 130),
1435    (99, 131),
1436    (100, 132),
1437    (101, 133),
1438    (102, 134),
1439    (103, 135),
1440    (104, 136),
1441    (105, 137),
1442    (106, 145),
1443    (107, 146),
1444    (108, 147),
1445    (109, 148),
1446    (110, 149),
1447    (111, 150),
1448    (112, 151),
1449    (113, 152),
1450    (114, 153),
1451    (115, 162),
1452    (116, 163),
1453    (117, 164),
1454    (118, 165),
1455    (119, 166),
1456    (120, 167),
1457    (121, 168),
1458    (122, 169),
1459    (123, 156),
1460    (124, 187),
1461    (125, 71),
1462    (126, 220),
1463    (127, 7),
1464    (128, 32),
1465    (129, 33),
1466    (130, 34),
1467    (131, 35),
1468    (132, 36),
1469    (133, 21),
1470    (134, 6),
1471    (135, 23),
1472    (136, 40),
1473    (137, 41),
1474    (138, 42),
1475    (139, 43),
1476    (140, 44),
1477    (141, 9),
1478    (142, 10),
1479    (143, 27),
1480    (144, 48),
1481    (145, 49),
1482    (146, 26),
1483    (147, 51),
1484    (148, 52),
1485    (149, 53),
1486    (150, 54),
1487    (151, 8),
1488    (152, 56),
1489    (153, 57),
1490    (154, 58),
1491    (155, 59),
1492    (156, 4),
1493    (157, 20),
1494    (158, 62),
1495    (159, 255),
1496    (160, 65),
1497    (161, 170),
1498    (162, 176),
1499    (163, 177),
1500    (164, 90),
1501    (165, 178),
1502    (166, 112),
1503    (167, 181),
1504    (168, 189),
1505    (169, 180),
1506    (170, 154),
1507    (171, 138),
1508    (172, 186),
1509    (173, 202),
1510    (174, 175),
1511    (175, 188),
1512    (176, 144),
1513    (177, 143),
1514    (178, 234),
1515    (179, 250),
1516    (180, 190),
1517    (181, 160),
1518    (182, 182),
1519    (183, 179),
1520    (184, 157),
1521    (185, 218),
1522    (186, 155),
1523    (187, 139),
1524    (188, 183),
1525    (189, 184),
1526    (190, 185),
1527    (191, 171),
1528    (192, 100),
1529    (193, 101),
1530    (194, 98),
1531    (195, 102),
1532    (196, 99),
1533    (197, 91),
1534    (198, 123),
1535    (199, 104),
1536    (200, 116),
1537    (201, 113),
1538    (202, 114),
1539    (203, 115),
1540    (204, 120),
1541    (205, 117),
1542    (206, 118),
1543    (207, 119),
1544    (208, 172),
1545    (209, 105),
1546    (210, 237),
1547    (211, 238),
1548    (212, 235),
1549    (213, 239),
1550    (214, 236),
1551    (215, 191),
1552    (216, 124),
1553    (217, 253),
1554    (218, 254),
1555    (219, 251),
1556    (220, 252),
1557    (221, 173),
1558    (222, 174),
1559    (223, 89),
1560    (224, 68),
1561    (225, 69),
1562    (226, 66),
1563    (227, 70),
1564    (228, 67),
1565    (229, 208),
1566    (230, 192),
1567    (231, 72),
1568    (232, 84),
1569    (233, 81),
1570    (234, 82),
1571    (235, 83),
1572    (236, 88),
1573    (237, 85),
1574    (238, 86),
1575    (239, 87),
1576    (240, 140),
1577    (241, 73),
1578    (242, 205),
1579    (243, 206),
1580    (244, 203),
1581    (245, 207),
1582    (246, 204),
1583    (247, 225),
1584    (248, 106),
1585    (249, 221),
1586    (250, 222),
1587    (251, 219),
1588    (252, 161),
1589    (253, 141),
1590    (254, 142),
1591    (255, 223),
1592];
1593
1594impl_ebcdic_encoder_and_decoder!(
1595    IBM278,
1596    "IBM278",
1597    IBM278Encoder,
1598    IBM278Decoder,
1599    IBM_278_ENCODE_TABLE,
1600    IBM_278_DECODE_TABLE
1601);
1602const IBM_278_DECODE_TABLE: [char; 256] = [
1603    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1604    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1605    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1606    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1607    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1608    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1609    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1610    '\u{a0}', '\u{e2}', '\u{7b}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{7d}', '\u{e7}', '\u{f1}',
1611    '\u{a7}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{60}', '\u{ea}',
1612    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{a4}', '\u{c5}',
1613    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{23}', '\u{c0}',
1614    '\u{c1}', '\u{c3}', '\u{24}', '\u{c7}', '\u{d1}', '\u{f6}', '\u{2c}', '\u{25}', '\u{5f}',
1615    '\u{3e}', '\u{3f}', '\u{f8}', '\u{5c}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1616    '\u{cf}', '\u{cc}', '\u{e9}', '\u{3a}', '\u{c4}', '\u{d6}', '\u{27}', '\u{3d}', '\u{22}',
1617    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1618    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
1619    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1620    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{5d}', '\u{b5}', '\u{fc}', '\u{73}', '\u{74}',
1621    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1622    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{5b}',
1623    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1624    '\u{d7}', '\u{e4}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1625    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{a6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e5}',
1626    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1627    '\u{b9}', '\u{fb}', '\u{7e}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{c9}', '\u{f7}', '\u{53}',
1628    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1629    '\u{40}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1630    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1631    '\u{da}', '\u{9f}',
1632];
1633const IBM_278_ENCODE_TABLE: &[(u16, u8)] = &[
1634    (0, 0),
1635    (1, 1),
1636    (2, 2),
1637    (3, 3),
1638    (4, 55),
1639    (5, 45),
1640    (6, 46),
1641    (7, 47),
1642    (8, 22),
1643    (9, 5),
1644    (10, 37),
1645    (11, 11),
1646    (12, 12),
1647    (13, 13),
1648    (14, 14),
1649    (15, 15),
1650    (16, 16),
1651    (17, 17),
1652    (18, 18),
1653    (19, 19),
1654    (20, 60),
1655    (21, 61),
1656    (22, 50),
1657    (23, 38),
1658    (24, 24),
1659    (25, 25),
1660    (26, 63),
1661    (27, 39),
1662    (28, 28),
1663    (29, 29),
1664    (30, 30),
1665    (31, 31),
1666    (32, 64),
1667    (33, 79),
1668    (34, 127),
1669    (35, 99),
1670    (36, 103),
1671    (37, 108),
1672    (38, 80),
1673    (39, 125),
1674    (40, 77),
1675    (41, 93),
1676    (42, 92),
1677    (43, 78),
1678    (44, 107),
1679    (45, 96),
1680    (46, 75),
1681    (47, 97),
1682    (48, 240),
1683    (49, 241),
1684    (50, 242),
1685    (51, 243),
1686    (52, 244),
1687    (53, 245),
1688    (54, 246),
1689    (55, 247),
1690    (56, 248),
1691    (57, 249),
1692    (58, 122),
1693    (59, 94),
1694    (60, 76),
1695    (61, 126),
1696    (62, 110),
1697    (63, 111),
1698    (64, 236),
1699    (65, 193),
1700    (66, 194),
1701    (67, 195),
1702    (68, 196),
1703    (69, 197),
1704    (70, 198),
1705    (71, 199),
1706    (72, 200),
1707    (73, 201),
1708    (74, 209),
1709    (75, 210),
1710    (76, 211),
1711    (77, 212),
1712    (78, 213),
1713    (79, 214),
1714    (80, 215),
1715    (81, 216),
1716    (82, 217),
1717    (83, 226),
1718    (84, 227),
1719    (85, 228),
1720    (86, 229),
1721    (87, 230),
1722    (88, 231),
1723    (89, 232),
1724    (90, 233),
1725    (91, 181),
1726    (92, 113),
1727    (93, 159),
1728    (94, 95),
1729    (95, 109),
1730    (96, 81),
1731    (97, 129),
1732    (98, 130),
1733    (99, 131),
1734    (100, 132),
1735    (101, 133),
1736    (102, 134),
1737    (103, 135),
1738    (104, 136),
1739    (105, 137),
1740    (106, 145),
1741    (107, 146),
1742    (108, 147),
1743    (109, 148),
1744    (110, 149),
1745    (111, 150),
1746    (112, 151),
1747    (113, 152),
1748    (114, 153),
1749    (115, 162),
1750    (116, 163),
1751    (117, 164),
1752    (118, 165),
1753    (119, 166),
1754    (120, 167),
1755    (121, 168),
1756    (122, 169),
1757    (123, 67),
1758    (124, 187),
1759    (125, 71),
1760    (126, 220),
1761    (127, 7),
1762    (128, 32),
1763    (129, 33),
1764    (130, 34),
1765    (131, 35),
1766    (132, 36),
1767    (133, 21),
1768    (134, 6),
1769    (135, 23),
1770    (136, 40),
1771    (137, 41),
1772    (138, 42),
1773    (139, 43),
1774    (140, 44),
1775    (141, 9),
1776    (142, 10),
1777    (143, 27),
1778    (144, 48),
1779    (145, 49),
1780    (146, 26),
1781    (147, 51),
1782    (148, 52),
1783    (149, 53),
1784    (150, 54),
1785    (151, 8),
1786    (152, 56),
1787    (153, 57),
1788    (154, 58),
1789    (155, 59),
1790    (156, 4),
1791    (157, 20),
1792    (158, 62),
1793    (159, 255),
1794    (160, 65),
1795    (161, 170),
1796    (162, 176),
1797    (163, 177),
1798    (164, 90),
1799    (165, 178),
1800    (166, 204),
1801    (167, 74),
1802    (168, 189),
1803    (169, 180),
1804    (170, 154),
1805    (171, 138),
1806    (172, 186),
1807    (173, 202),
1808    (174, 175),
1809    (175, 188),
1810    (176, 144),
1811    (177, 143),
1812    (178, 234),
1813    (179, 250),
1814    (180, 190),
1815    (181, 160),
1816    (182, 182),
1817    (183, 179),
1818    (184, 157),
1819    (185, 218),
1820    (186, 155),
1821    (187, 139),
1822    (188, 183),
1823    (189, 184),
1824    (190, 185),
1825    (191, 171),
1826    (192, 100),
1827    (193, 101),
1828    (194, 98),
1829    (195, 102),
1830    (196, 123),
1831    (197, 91),
1832    (198, 158),
1833    (199, 104),
1834    (200, 116),
1835    (201, 224),
1836    (202, 114),
1837    (203, 115),
1838    (204, 120),
1839    (205, 117),
1840    (206, 118),
1841    (207, 119),
1842    (208, 172),
1843    (209, 105),
1844    (210, 237),
1845    (211, 238),
1846    (212, 235),
1847    (213, 239),
1848    (214, 124),
1849    (215, 191),
1850    (216, 128),
1851    (217, 253),
1852    (218, 254),
1853    (219, 251),
1854    (220, 252),
1855    (221, 173),
1856    (222, 174),
1857    (223, 89),
1858    (224, 68),
1859    (225, 69),
1860    (226, 66),
1861    (227, 70),
1862    (228, 192),
1863    (229, 208),
1864    (230, 156),
1865    (231, 72),
1866    (232, 84),
1867    (233, 121),
1868    (234, 82),
1869    (235, 83),
1870    (236, 88),
1871    (237, 85),
1872    (238, 86),
1873    (239, 87),
1874    (240, 140),
1875    (241, 73),
1876    (242, 205),
1877    (243, 206),
1878    (244, 203),
1879    (245, 207),
1880    (246, 106),
1881    (247, 225),
1882    (248, 112),
1883    (249, 221),
1884    (250, 222),
1885    (251, 219),
1886    (252, 161),
1887    (253, 141),
1888    (254, 142),
1889    (255, 223),
1890];
1891
1892impl_ebcdic_encoder_and_decoder!(
1893    IBM280,
1894    "IBM280",
1895    IBM280Encoder,
1896    IBM280Decoder,
1897    IBM_280_ENCODE_TABLE,
1898    IBM_280_DECODE_TABLE
1899);
1900const IBM_280_DECODE_TABLE: [char; 256] = [
1901    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
1902    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
1903    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
1904    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
1905    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
1906    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
1907    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
1908    '\u{a0}', '\u{e2}', '\u{e4}', '\u{7b}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{5c}', '\u{f1}',
1909    '\u{b0}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{5d}', '\u{ea}',
1910    '\u{eb}', '\u{7d}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{7e}', '\u{df}', '\u{e9}', '\u{24}',
1911    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
1912    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f2}', '\u{2c}', '\u{25}', '\u{5f}',
1913    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
1914    '\u{cf}', '\u{cc}', '\u{f9}', '\u{3a}', '\u{a3}', '\u{a7}', '\u{27}', '\u{3d}', '\u{22}',
1915    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
1916    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{5b}', '\u{6a}',
1917    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
1918    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{ec}', '\u{73}', '\u{74}',
1919    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
1920    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{23}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{40}',
1921    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
1922    '\u{d7}', '\u{e0}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
1923    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{a6}', '\u{f3}', '\u{f5}', '\u{e8}',
1924    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
1925    '\u{b9}', '\u{fb}', '\u{fc}', '\u{60}', '\u{fa}', '\u{ff}', '\u{e7}', '\u{f7}', '\u{53}',
1926    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
1927    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
1928    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
1929    '\u{da}', '\u{9f}',
1930];
1931const IBM_280_ENCODE_TABLE: &[(u16, u8)] = &[
1932    (0, 0),
1933    (1, 1),
1934    (2, 2),
1935    (3, 3),
1936    (4, 55),
1937    (5, 45),
1938    (6, 46),
1939    (7, 47),
1940    (8, 22),
1941    (9, 5),
1942    (10, 37),
1943    (11, 11),
1944    (12, 12),
1945    (13, 13),
1946    (14, 14),
1947    (15, 15),
1948    (16, 16),
1949    (17, 17),
1950    (18, 18),
1951    (19, 19),
1952    (20, 60),
1953    (21, 61),
1954    (22, 50),
1955    (23, 38),
1956    (24, 24),
1957    (25, 25),
1958    (26, 63),
1959    (27, 39),
1960    (28, 28),
1961    (29, 29),
1962    (30, 30),
1963    (31, 31),
1964    (32, 64),
1965    (33, 79),
1966    (34, 127),
1967    (35, 177),
1968    (36, 91),
1969    (37, 108),
1970    (38, 80),
1971    (39, 125),
1972    (40, 77),
1973    (41, 93),
1974    (42, 92),
1975    (43, 78),
1976    (44, 107),
1977    (45, 96),
1978    (46, 75),
1979    (47, 97),
1980    (48, 240),
1981    (49, 241),
1982    (50, 242),
1983    (51, 243),
1984    (52, 244),
1985    (53, 245),
1986    (54, 246),
1987    (55, 247),
1988    (56, 248),
1989    (57, 249),
1990    (58, 122),
1991    (59, 94),
1992    (60, 76),
1993    (61, 126),
1994    (62, 110),
1995    (63, 111),
1996    (64, 181),
1997    (65, 193),
1998    (66, 194),
1999    (67, 195),
2000    (68, 196),
2001    (69, 197),
2002    (70, 198),
2003    (71, 199),
2004    (72, 200),
2005    (73, 201),
2006    (74, 209),
2007    (75, 210),
2008    (76, 211),
2009    (77, 212),
2010    (78, 213),
2011    (79, 214),
2012    (80, 215),
2013    (81, 216),
2014    (82, 217),
2015    (83, 226),
2016    (84, 227),
2017    (85, 228),
2018    (86, 229),
2019    (87, 230),
2020    (88, 231),
2021    (89, 232),
2022    (90, 233),
2023    (91, 144),
2024    (92, 72),
2025    (93, 81),
2026    (94, 95),
2027    (95, 109),
2028    (96, 221),
2029    (97, 129),
2030    (98, 130),
2031    (99, 131),
2032    (100, 132),
2033    (101, 133),
2034    (102, 134),
2035    (103, 135),
2036    (104, 136),
2037    (105, 137),
2038    (106, 145),
2039    (107, 146),
2040    (108, 147),
2041    (109, 148),
2042    (110, 149),
2043    (111, 150),
2044    (112, 151),
2045    (113, 152),
2046    (114, 153),
2047    (115, 162),
2048    (116, 163),
2049    (117, 164),
2050    (118, 165),
2051    (119, 166),
2052    (120, 167),
2053    (121, 168),
2054    (122, 169),
2055    (123, 68),
2056    (124, 187),
2057    (125, 84),
2058    (126, 88),
2059    (127, 7),
2060    (128, 32),
2061    (129, 33),
2062    (130, 34),
2063    (131, 35),
2064    (132, 36),
2065    (133, 21),
2066    (134, 6),
2067    (135, 23),
2068    (136, 40),
2069    (137, 41),
2070    (138, 42),
2071    (139, 43),
2072    (140, 44),
2073    (141, 9),
2074    (142, 10),
2075    (143, 27),
2076    (144, 48),
2077    (145, 49),
2078    (146, 26),
2079    (147, 51),
2080    (148, 52),
2081    (149, 53),
2082    (150, 54),
2083    (151, 8),
2084    (152, 56),
2085    (153, 57),
2086    (154, 58),
2087    (155, 59),
2088    (156, 4),
2089    (157, 20),
2090    (158, 62),
2091    (159, 255),
2092    (160, 65),
2093    (161, 170),
2094    (162, 176),
2095    (163, 123),
2096    (164, 159),
2097    (165, 178),
2098    (166, 205),
2099    (167, 124),
2100    (168, 189),
2101    (169, 180),
2102    (170, 154),
2103    (171, 138),
2104    (172, 186),
2105    (173, 202),
2106    (174, 175),
2107    (175, 188),
2108    (176, 74),
2109    (177, 143),
2110    (178, 234),
2111    (179, 250),
2112    (180, 190),
2113    (181, 160),
2114    (182, 182),
2115    (183, 179),
2116    (184, 157),
2117    (185, 218),
2118    (186, 155),
2119    (187, 139),
2120    (188, 183),
2121    (189, 184),
2122    (190, 185),
2123    (191, 171),
2124    (192, 100),
2125    (193, 101),
2126    (194, 98),
2127    (195, 102),
2128    (196, 99),
2129    (197, 103),
2130    (198, 158),
2131    (199, 104),
2132    (200, 116),
2133    (201, 113),
2134    (202, 114),
2135    (203, 115),
2136    (204, 120),
2137    (205, 117),
2138    (206, 118),
2139    (207, 119),
2140    (208, 172),
2141    (209, 105),
2142    (210, 237),
2143    (211, 238),
2144    (212, 235),
2145    (213, 239),
2146    (214, 236),
2147    (215, 191),
2148    (216, 128),
2149    (217, 253),
2150    (218, 254),
2151    (219, 251),
2152    (220, 252),
2153    (221, 173),
2154    (222, 174),
2155    (223, 89),
2156    (224, 192),
2157    (225, 69),
2158    (226, 66),
2159    (227, 70),
2160    (228, 67),
2161    (229, 71),
2162    (230, 156),
2163    (231, 224),
2164    (232, 208),
2165    (233, 90),
2166    (234, 82),
2167    (235, 83),
2168    (236, 161),
2169    (237, 85),
2170    (238, 86),
2171    (239, 87),
2172    (240, 140),
2173    (241, 73),
2174    (242, 106),
2175    (243, 206),
2176    (244, 203),
2177    (245, 207),
2178    (246, 204),
2179    (247, 225),
2180    (248, 112),
2181    (249, 121),
2182    (250, 222),
2183    (251, 219),
2184    (252, 220),
2185    (253, 141),
2186    (254, 142),
2187    (255, 223),
2188];
2189
2190impl_ebcdic_encoder_and_decoder!(
2191    IBM284,
2192    "IBM284",
2193    IBM284Encoder,
2194    IBM284Decoder,
2195    IBM_284_ENCODE_TABLE,
2196    IBM_284_DECODE_TABLE
2197);
2198const IBM_284_DECODE_TABLE: [char; 256] = [
2199    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
2200    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
2201    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
2202    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
2203    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
2204    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
2205    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
2206    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{a6}',
2207    '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{7c}', '\u{26}', '\u{e9}', '\u{ea}',
2208    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{5d}', '\u{24}',
2209    '\u{2a}', '\u{29}', '\u{3b}', '\u{ac}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
2210    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{23}', '\u{f1}', '\u{2c}', '\u{25}', '\u{5f}',
2211    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
2212    '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{d1}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
2213    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
2214    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
2215    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
2216    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{a8}', '\u{73}', '\u{74}',
2217    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
2218    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
2219    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{5e}', '\u{21}', '\u{af}', '\u{7e}', '\u{b4}',
2220    '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
2221    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
2222    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
2223    '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
2224    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
2225    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
2226    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
2227    '\u{da}', '\u{9f}',
2228];
2229const IBM_284_ENCODE_TABLE: &[(u16, u8)] = &[
2230    (0, 0),
2231    (1, 1),
2232    (2, 2),
2233    (3, 3),
2234    (4, 55),
2235    (5, 45),
2236    (6, 46),
2237    (7, 47),
2238    (8, 22),
2239    (9, 5),
2240    (10, 37),
2241    (11, 11),
2242    (12, 12),
2243    (13, 13),
2244    (14, 14),
2245    (15, 15),
2246    (16, 16),
2247    (17, 17),
2248    (18, 18),
2249    (19, 19),
2250    (20, 60),
2251    (21, 61),
2252    (22, 50),
2253    (23, 38),
2254    (24, 24),
2255    (25, 25),
2256    (26, 63),
2257    (27, 39),
2258    (28, 28),
2259    (29, 29),
2260    (30, 30),
2261    (31, 31),
2262    (32, 64),
2263    (33, 187),
2264    (34, 127),
2265    (35, 105),
2266    (36, 91),
2267    (37, 108),
2268    (38, 80),
2269    (39, 125),
2270    (40, 77),
2271    (41, 93),
2272    (42, 92),
2273    (43, 78),
2274    (44, 107),
2275    (45, 96),
2276    (46, 75),
2277    (47, 97),
2278    (48, 240),
2279    (49, 241),
2280    (50, 242),
2281    (51, 243),
2282    (52, 244),
2283    (53, 245),
2284    (54, 246),
2285    (55, 247),
2286    (56, 248),
2287    (57, 249),
2288    (58, 122),
2289    (59, 94),
2290    (60, 76),
2291    (61, 126),
2292    (62, 110),
2293    (63, 111),
2294    (64, 124),
2295    (65, 193),
2296    (66, 194),
2297    (67, 195),
2298    (68, 196),
2299    (69, 197),
2300    (70, 198),
2301    (71, 199),
2302    (72, 200),
2303    (73, 201),
2304    (74, 209),
2305    (75, 210),
2306    (76, 211),
2307    (77, 212),
2308    (78, 213),
2309    (79, 214),
2310    (80, 215),
2311    (81, 216),
2312    (82, 217),
2313    (83, 226),
2314    (84, 227),
2315    (85, 228),
2316    (86, 229),
2317    (87, 230),
2318    (88, 231),
2319    (89, 232),
2320    (90, 233),
2321    (91, 74),
2322    (92, 224),
2323    (93, 90),
2324    (94, 186),
2325    (95, 109),
2326    (96, 121),
2327    (97, 129),
2328    (98, 130),
2329    (99, 131),
2330    (100, 132),
2331    (101, 133),
2332    (102, 134),
2333    (103, 135),
2334    (104, 136),
2335    (105, 137),
2336    (106, 145),
2337    (107, 146),
2338    (108, 147),
2339    (109, 148),
2340    (110, 149),
2341    (111, 150),
2342    (112, 151),
2343    (113, 152),
2344    (114, 153),
2345    (115, 162),
2346    (116, 163),
2347    (117, 164),
2348    (118, 165),
2349    (119, 166),
2350    (120, 167),
2351    (121, 168),
2352    (122, 169),
2353    (123, 192),
2354    (124, 79),
2355    (125, 208),
2356    (126, 189),
2357    (127, 7),
2358    (128, 32),
2359    (129, 33),
2360    (130, 34),
2361    (131, 35),
2362    (132, 36),
2363    (133, 21),
2364    (134, 6),
2365    (135, 23),
2366    (136, 40),
2367    (137, 41),
2368    (138, 42),
2369    (139, 43),
2370    (140, 44),
2371    (141, 9),
2372    (142, 10),
2373    (143, 27),
2374    (144, 48),
2375    (145, 49),
2376    (146, 26),
2377    (147, 51),
2378    (148, 52),
2379    (149, 53),
2380    (150, 54),
2381    (151, 8),
2382    (152, 56),
2383    (153, 57),
2384    (154, 58),
2385    (155, 59),
2386    (156, 4),
2387    (157, 20),
2388    (158, 62),
2389    (159, 255),
2390    (160, 65),
2391    (161, 170),
2392    (162, 176),
2393    (163, 177),
2394    (164, 159),
2395    (165, 178),
2396    (166, 73),
2397    (167, 181),
2398    (168, 161),
2399    (169, 180),
2400    (170, 154),
2401    (171, 138),
2402    (172, 95),
2403    (173, 202),
2404    (174, 175),
2405    (175, 188),
2406    (176, 144),
2407    (177, 143),
2408    (178, 234),
2409    (179, 250),
2410    (180, 190),
2411    (181, 160),
2412    (182, 182),
2413    (183, 179),
2414    (184, 157),
2415    (185, 218),
2416    (186, 155),
2417    (187, 139),
2418    (188, 183),
2419    (189, 184),
2420    (190, 185),
2421    (191, 171),
2422    (192, 100),
2423    (193, 101),
2424    (194, 98),
2425    (195, 102),
2426    (196, 99),
2427    (197, 103),
2428    (198, 158),
2429    (199, 104),
2430    (200, 116),
2431    (201, 113),
2432    (202, 114),
2433    (203, 115),
2434    (204, 120),
2435    (205, 117),
2436    (206, 118),
2437    (207, 119),
2438    (208, 172),
2439    (209, 123),
2440    (210, 237),
2441    (211, 238),
2442    (212, 235),
2443    (213, 239),
2444    (214, 236),
2445    (215, 191),
2446    (216, 128),
2447    (217, 253),
2448    (218, 254),
2449    (219, 251),
2450    (220, 252),
2451    (221, 173),
2452    (222, 174),
2453    (223, 89),
2454    (224, 68),
2455    (225, 69),
2456    (226, 66),
2457    (227, 70),
2458    (228, 67),
2459    (229, 71),
2460    (230, 156),
2461    (231, 72),
2462    (232, 84),
2463    (233, 81),
2464    (234, 82),
2465    (235, 83),
2466    (236, 88),
2467    (237, 85),
2468    (238, 86),
2469    (239, 87),
2470    (240, 140),
2471    (241, 106),
2472    (242, 205),
2473    (243, 206),
2474    (244, 203),
2475    (245, 207),
2476    (246, 204),
2477    (247, 225),
2478    (248, 112),
2479    (249, 221),
2480    (250, 222),
2481    (251, 219),
2482    (252, 220),
2483    (253, 141),
2484    (254, 142),
2485    (255, 223),
2486];
2487
2488impl_ebcdic_encoder_and_decoder!(
2489    IBM285,
2490    "IBM285",
2491    IBM285Encoder,
2492    IBM285Decoder,
2493    IBM_285_ENCODE_TABLE,
2494    IBM_285_DECODE_TABLE
2495);
2496const IBM_285_DECODE_TABLE: [char; 256] = [
2497    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
2498    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
2499    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
2500    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
2501    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
2502    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
2503    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
2504    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
2505    '\u{24}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{7c}', '\u{26}', '\u{e9}', '\u{ea}',
2506    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{21}', '\u{a3}',
2507    '\u{2a}', '\u{29}', '\u{3b}', '\u{ac}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
2508    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
2509    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
2510    '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
2511    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
2512    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
2513    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
2514    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{af}', '\u{73}', '\u{74}',
2515    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
2516    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{5b}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
2517    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{5e}', '\u{5d}', '\u{7e}', '\u{a8}', '\u{b4}',
2518    '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
2519    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
2520    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
2521    '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
2522    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
2523    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
2524    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
2525    '\u{da}', '\u{9f}',
2526];
2527const IBM_285_ENCODE_TABLE: &[(u16, u8)] = &[
2528    (0, 0),
2529    (1, 1),
2530    (2, 2),
2531    (3, 3),
2532    (4, 55),
2533    (5, 45),
2534    (6, 46),
2535    (7, 47),
2536    (8, 22),
2537    (9, 5),
2538    (10, 37),
2539    (11, 11),
2540    (12, 12),
2541    (13, 13),
2542    (14, 14),
2543    (15, 15),
2544    (16, 16),
2545    (17, 17),
2546    (18, 18),
2547    (19, 19),
2548    (20, 60),
2549    (21, 61),
2550    (22, 50),
2551    (23, 38),
2552    (24, 24),
2553    (25, 25),
2554    (26, 63),
2555    (27, 39),
2556    (28, 28),
2557    (29, 29),
2558    (30, 30),
2559    (31, 31),
2560    (32, 64),
2561    (33, 90),
2562    (34, 127),
2563    (35, 123),
2564    (36, 74),
2565    (37, 108),
2566    (38, 80),
2567    (39, 125),
2568    (40, 77),
2569    (41, 93),
2570    (42, 92),
2571    (43, 78),
2572    (44, 107),
2573    (45, 96),
2574    (46, 75),
2575    (47, 97),
2576    (48, 240),
2577    (49, 241),
2578    (50, 242),
2579    (51, 243),
2580    (52, 244),
2581    (53, 245),
2582    (54, 246),
2583    (55, 247),
2584    (56, 248),
2585    (57, 249),
2586    (58, 122),
2587    (59, 94),
2588    (60, 76),
2589    (61, 126),
2590    (62, 110),
2591    (63, 111),
2592    (64, 124),
2593    (65, 193),
2594    (66, 194),
2595    (67, 195),
2596    (68, 196),
2597    (69, 197),
2598    (70, 198),
2599    (71, 199),
2600    (72, 200),
2601    (73, 201),
2602    (74, 209),
2603    (75, 210),
2604    (76, 211),
2605    (77, 212),
2606    (78, 213),
2607    (79, 214),
2608    (80, 215),
2609    (81, 216),
2610    (82, 217),
2611    (83, 226),
2612    (84, 227),
2613    (85, 228),
2614    (86, 229),
2615    (87, 230),
2616    (88, 231),
2617    (89, 232),
2618    (90, 233),
2619    (91, 177),
2620    (92, 224),
2621    (93, 187),
2622    (94, 186),
2623    (95, 109),
2624    (96, 121),
2625    (97, 129),
2626    (98, 130),
2627    (99, 131),
2628    (100, 132),
2629    (101, 133),
2630    (102, 134),
2631    (103, 135),
2632    (104, 136),
2633    (105, 137),
2634    (106, 145),
2635    (107, 146),
2636    (108, 147),
2637    (109, 148),
2638    (110, 149),
2639    (111, 150),
2640    (112, 151),
2641    (113, 152),
2642    (114, 153),
2643    (115, 162),
2644    (116, 163),
2645    (117, 164),
2646    (118, 165),
2647    (119, 166),
2648    (120, 167),
2649    (121, 168),
2650    (122, 169),
2651    (123, 192),
2652    (124, 79),
2653    (125, 208),
2654    (126, 188),
2655    (127, 7),
2656    (128, 32),
2657    (129, 33),
2658    (130, 34),
2659    (131, 35),
2660    (132, 36),
2661    (133, 21),
2662    (134, 6),
2663    (135, 23),
2664    (136, 40),
2665    (137, 41),
2666    (138, 42),
2667    (139, 43),
2668    (140, 44),
2669    (141, 9),
2670    (142, 10),
2671    (143, 27),
2672    (144, 48),
2673    (145, 49),
2674    (146, 26),
2675    (147, 51),
2676    (148, 52),
2677    (149, 53),
2678    (150, 54),
2679    (151, 8),
2680    (152, 56),
2681    (153, 57),
2682    (154, 58),
2683    (155, 59),
2684    (156, 4),
2685    (157, 20),
2686    (158, 62),
2687    (159, 255),
2688    (160, 65),
2689    (161, 170),
2690    (162, 176),
2691    (163, 91),
2692    (164, 159),
2693    (165, 178),
2694    (166, 106),
2695    (167, 181),
2696    (168, 189),
2697    (169, 180),
2698    (170, 154),
2699    (171, 138),
2700    (172, 95),
2701    (173, 202),
2702    (174, 175),
2703    (175, 161),
2704    (176, 144),
2705    (177, 143),
2706    (178, 234),
2707    (179, 250),
2708    (180, 190),
2709    (181, 160),
2710    (182, 182),
2711    (183, 179),
2712    (184, 157),
2713    (185, 218),
2714    (186, 155),
2715    (187, 139),
2716    (188, 183),
2717    (189, 184),
2718    (190, 185),
2719    (191, 171),
2720    (192, 100),
2721    (193, 101),
2722    (194, 98),
2723    (195, 102),
2724    (196, 99),
2725    (197, 103),
2726    (198, 158),
2727    (199, 104),
2728    (200, 116),
2729    (201, 113),
2730    (202, 114),
2731    (203, 115),
2732    (204, 120),
2733    (205, 117),
2734    (206, 118),
2735    (207, 119),
2736    (208, 172),
2737    (209, 105),
2738    (210, 237),
2739    (211, 238),
2740    (212, 235),
2741    (213, 239),
2742    (214, 236),
2743    (215, 191),
2744    (216, 128),
2745    (217, 253),
2746    (218, 254),
2747    (219, 251),
2748    (220, 252),
2749    (221, 173),
2750    (222, 174),
2751    (223, 89),
2752    (224, 68),
2753    (225, 69),
2754    (226, 66),
2755    (227, 70),
2756    (228, 67),
2757    (229, 71),
2758    (230, 156),
2759    (231, 72),
2760    (232, 84),
2761    (233, 81),
2762    (234, 82),
2763    (235, 83),
2764    (236, 88),
2765    (237, 85),
2766    (238, 86),
2767    (239, 87),
2768    (240, 140),
2769    (241, 73),
2770    (242, 205),
2771    (243, 206),
2772    (244, 203),
2773    (245, 207),
2774    (246, 204),
2775    (247, 225),
2776    (248, 112),
2777    (249, 221),
2778    (250, 222),
2779    (251, 219),
2780    (252, 220),
2781    (253, 141),
2782    (254, 142),
2783    (255, 223),
2784];
2785
2786impl_ebcdic_encoder_and_decoder!(
2787    IBM290,
2788    "IBM290",
2789    IBM290Encoder,
2790    IBM290Decoder,
2791    IBM_290_ENCODE_TABLE,
2792    IBM_290_DECODE_TABLE
2793);
2794const IBM_290_DECODE_TABLE: [char; 256] = [
2795    '\u{0}',
2796    '\u{1}',
2797    '\u{2}',
2798    '\u{3}',
2799    '\u{9c}',
2800    '\u{9}',
2801    '\u{86}',
2802    '\u{7f}',
2803    '\u{97}',
2804    '\u{8d}',
2805    '\u{8e}',
2806    '\u{b}',
2807    '\u{c}',
2808    '\u{d}',
2809    '\u{e}',
2810    '\u{f}',
2811    '\u{10}',
2812    '\u{11}',
2813    '\u{12}',
2814    '\u{13}',
2815    '\u{9d}',
2816    '\u{85}',
2817    '\u{8}',
2818    '\u{87}',
2819    '\u{18}',
2820    '\u{19}',
2821    '\u{92}',
2822    '\u{8f}',
2823    '\u{1c}',
2824    '\u{1d}',
2825    '\u{1e}',
2826    '\u{1f}',
2827    '\u{80}',
2828    '\u{81}',
2829    '\u{82}',
2830    '\u{83}',
2831    '\u{84}',
2832    '\u{a}',
2833    '\u{17}',
2834    '\u{1b}',
2835    '\u{88}',
2836    '\u{89}',
2837    '\u{8a}',
2838    '\u{8b}',
2839    '\u{8c}',
2840    '\u{5}',
2841    '\u{6}',
2842    '\u{7}',
2843    '\u{90}',
2844    '\u{91}',
2845    '\u{16}',
2846    '\u{93}',
2847    '\u{94}',
2848    '\u{95}',
2849    '\u{96}',
2850    '\u{4}',
2851    '\u{98}',
2852    '\u{99}',
2853    '\u{9a}',
2854    '\u{9b}',
2855    '\u{14}',
2856    '\u{15}',
2857    '\u{9e}',
2858    '\u{1a}',
2859    '\u{20}',
2860    '\u{ff61}',
2861    '\u{ff62}',
2862    '\u{ff63}',
2863    '\u{ff64}',
2864    '\u{ff65}',
2865    '\u{ff66}',
2866    '\u{ff67}',
2867    '\u{ff68}',
2868    '\u{ff69}',
2869    '\u{a3}',
2870    '\u{2e}',
2871    '\u{3c}',
2872    '\u{28}',
2873    '\u{2b}',
2874    '\u{7c}',
2875    '\u{26}',
2876    '\u{ff6a}',
2877    '\u{ff6b}',
2878    '\u{ff6c}',
2879    '\u{ff6d}',
2880    '\u{ff6e}',
2881    '\u{ff6f}',
2882    char::REPLACEMENT_CHARACTER,
2883    '\u{ff70}',
2884    char::REPLACEMENT_CHARACTER,
2885    '\u{21}',
2886    '\u{a5}',
2887    '\u{2a}',
2888    '\u{29}',
2889    '\u{3b}',
2890    '\u{ac}',
2891    '\u{2d}',
2892    '\u{2f}',
2893    '\u{61}',
2894    '\u{62}',
2895    '\u{63}',
2896    '\u{64}',
2897    '\u{65}',
2898    '\u{66}',
2899    '\u{67}',
2900    '\u{68}',
2901    char::REPLACEMENT_CHARACTER,
2902    '\u{2c}',
2903    '\u{25}',
2904    '\u{5f}',
2905    '\u{3e}',
2906    '\u{3f}',
2907    '\u{5b}',
2908    '\u{69}',
2909    '\u{6a}',
2910    '\u{6b}',
2911    '\u{6c}',
2912    '\u{6d}',
2913    '\u{6e}',
2914    '\u{6f}',
2915    '\u{70}',
2916    '\u{60}',
2917    '\u{3a}',
2918    '\u{23}',
2919    '\u{40}',
2920    '\u{27}',
2921    '\u{3d}',
2922    '\u{22}',
2923    '\u{5d}',
2924    '\u{ff71}',
2925    '\u{ff72}',
2926    '\u{ff73}',
2927    '\u{ff74}',
2928    '\u{ff75}',
2929    '\u{ff76}',
2930    '\u{ff77}',
2931    '\u{ff78}',
2932    '\u{ff79}',
2933    '\u{ff7a}',
2934    '\u{71}',
2935    '\u{ff7b}',
2936    '\u{ff7c}',
2937    '\u{ff7d}',
2938    '\u{ff7e}',
2939    '\u{ff7f}',
2940    '\u{ff80}',
2941    '\u{ff81}',
2942    '\u{ff82}',
2943    '\u{ff83}',
2944    '\u{ff84}',
2945    '\u{ff85}',
2946    '\u{ff86}',
2947    '\u{ff87}',
2948    '\u{ff88}',
2949    '\u{ff89}',
2950    '\u{72}',
2951    char::REPLACEMENT_CHARACTER,
2952    '\u{ff8a}',
2953    '\u{ff8b}',
2954    '\u{ff8c}',
2955    '\u{7e}',
2956    '\u{203e}',
2957    '\u{ff8d}',
2958    '\u{ff8e}',
2959    '\u{ff8f}',
2960    '\u{ff90}',
2961    '\u{ff91}',
2962    '\u{ff92}',
2963    '\u{ff93}',
2964    '\u{ff94}',
2965    '\u{ff95}',
2966    '\u{73}',
2967    '\u{ff96}',
2968    '\u{ff97}',
2969    '\u{ff98}',
2970    '\u{ff99}',
2971    '\u{5e}',
2972    '\u{a2}',
2973    '\u{5c}',
2974    '\u{74}',
2975    '\u{75}',
2976    '\u{76}',
2977    '\u{77}',
2978    '\u{78}',
2979    '\u{79}',
2980    '\u{7a}',
2981    '\u{ff9a}',
2982    '\u{ff9b}',
2983    '\u{ff9c}',
2984    '\u{ff9d}',
2985    '\u{ff9e}',
2986    '\u{ff9f}',
2987    '\u{7b}',
2988    '\u{41}',
2989    '\u{42}',
2990    '\u{43}',
2991    '\u{44}',
2992    '\u{45}',
2993    '\u{46}',
2994    '\u{47}',
2995    '\u{48}',
2996    '\u{49}',
2997    char::REPLACEMENT_CHARACTER,
2998    char::REPLACEMENT_CHARACTER,
2999    char::REPLACEMENT_CHARACTER,
3000    char::REPLACEMENT_CHARACTER,
3001    char::REPLACEMENT_CHARACTER,
3002    char::REPLACEMENT_CHARACTER,
3003    '\u{7d}',
3004    '\u{4a}',
3005    '\u{4b}',
3006    '\u{4c}',
3007    '\u{4d}',
3008    '\u{4e}',
3009    '\u{4f}',
3010    '\u{50}',
3011    '\u{51}',
3012    '\u{52}',
3013    char::REPLACEMENT_CHARACTER,
3014    char::REPLACEMENT_CHARACTER,
3015    char::REPLACEMENT_CHARACTER,
3016    char::REPLACEMENT_CHARACTER,
3017    char::REPLACEMENT_CHARACTER,
3018    char::REPLACEMENT_CHARACTER,
3019    '\u{24}',
3020    char::REPLACEMENT_CHARACTER,
3021    '\u{53}',
3022    '\u{54}',
3023    '\u{55}',
3024    '\u{56}',
3025    '\u{57}',
3026    '\u{58}',
3027    '\u{59}',
3028    '\u{5a}',
3029    char::REPLACEMENT_CHARACTER,
3030    char::REPLACEMENT_CHARACTER,
3031    char::REPLACEMENT_CHARACTER,
3032    char::REPLACEMENT_CHARACTER,
3033    char::REPLACEMENT_CHARACTER,
3034    char::REPLACEMENT_CHARACTER,
3035    '\u{30}',
3036    '\u{31}',
3037    '\u{32}',
3038    '\u{33}',
3039    '\u{34}',
3040    '\u{35}',
3041    '\u{36}',
3042    '\u{37}',
3043    '\u{38}',
3044    '\u{39}',
3045    char::REPLACEMENT_CHARACTER,
3046    char::REPLACEMENT_CHARACTER,
3047    char::REPLACEMENT_CHARACTER,
3048    char::REPLACEMENT_CHARACTER,
3049    char::REPLACEMENT_CHARACTER,
3050    '\u{9f}',
3051];
3052const IBM_290_ENCODE_TABLE: &[(u16, u8)] = &[
3053    (0, 0),
3054    (1, 1),
3055    (2, 2),
3056    (3, 3),
3057    (4, 55),
3058    (5, 45),
3059    (6, 46),
3060    (7, 47),
3061    (8, 22),
3062    (9, 5),
3063    (10, 37),
3064    (11, 11),
3065    (12, 12),
3066    (13, 13),
3067    (14, 14),
3068    (15, 15),
3069    (16, 16),
3070    (17, 17),
3071    (18, 18),
3072    (19, 19),
3073    (20, 60),
3074    (21, 61),
3075    (22, 50),
3076    (23, 38),
3077    (24, 24),
3078    (25, 25),
3079    (26, 63),
3080    (27, 39),
3081    (28, 28),
3082    (29, 29),
3083    (30, 30),
3084    (31, 31),
3085    (32, 64),
3086    (33, 90),
3087    (34, 127),
3088    (35, 123),
3089    (36, 224),
3090    (37, 108),
3091    (38, 80),
3092    (39, 125),
3093    (40, 77),
3094    (41, 93),
3095    (42, 92),
3096    (43, 78),
3097    (44, 107),
3098    (45, 96),
3099    (46, 75),
3100    (47, 97),
3101    (48, 240),
3102    (49, 241),
3103    (50, 242),
3104    (51, 243),
3105    (52, 244),
3106    (53, 245),
3107    (54, 246),
3108    (55, 247),
3109    (56, 248),
3110    (57, 249),
3111    (58, 122),
3112    (59, 94),
3113    (60, 76),
3114    (61, 126),
3115    (62, 110),
3116    (63, 111),
3117    (64, 124),
3118    (65, 193),
3119    (66, 194),
3120    (67, 195),
3121    (68, 196),
3122    (69, 197),
3123    (70, 198),
3124    (71, 199),
3125    (72, 200),
3126    (73, 201),
3127    (74, 209),
3128    (75, 210),
3129    (76, 211),
3130    (77, 212),
3131    (78, 213),
3132    (79, 214),
3133    (80, 215),
3134    (81, 216),
3135    (82, 217),
3136    (83, 226),
3137    (84, 227),
3138    (85, 228),
3139    (86, 229),
3140    (87, 230),
3141    (88, 231),
3142    (89, 232),
3143    (90, 233),
3144    (91, 112),
3145    (92, 178),
3146    (93, 128),
3147    (94, 176),
3148    (95, 109),
3149    (96, 121),
3150    (97, 98),
3151    (98, 99),
3152    (99, 100),
3153    (100, 101),
3154    (101, 102),
3155    (102, 103),
3156    (103, 104),
3157    (104, 105),
3158    (105, 113),
3159    (106, 114),
3160    (107, 115),
3161    (108, 116),
3162    (109, 117),
3163    (110, 118),
3164    (111, 119),
3165    (112, 120),
3166    (113, 139),
3167    (114, 155),
3168    (115, 171),
3169    (116, 179),
3170    (117, 180),
3171    (118, 181),
3172    (119, 182),
3173    (120, 183),
3174    (121, 184),
3175    (122, 185),
3176    (123, 192),
3177    (124, 79),
3178    (125, 208),
3179    (126, 160),
3180    (127, 7),
3181    (128, 32),
3182    (129, 33),
3183    (130, 34),
3184    (131, 35),
3185    (132, 36),
3186    (133, 21),
3187    (134, 6),
3188    (135, 23),
3189    (136, 40),
3190    (137, 41),
3191    (138, 42),
3192    (139, 43),
3193    (140, 44),
3194    (141, 9),
3195    (142, 10),
3196    (143, 27),
3197    (144, 48),
3198    (145, 49),
3199    (146, 26),
3200    (147, 51),
3201    (148, 52),
3202    (149, 53),
3203    (150, 54),
3204    (151, 8),
3205    (152, 56),
3206    (153, 57),
3207    (154, 58),
3208    (155, 59),
3209    (156, 4),
3210    (157, 20),
3211    (158, 62),
3212    (159, 255),
3213    (162, 177),
3214    (163, 74),
3215    (165, 91),
3216    (172, 95),
3217    (8254, 161),
3218    (65377, 65),
3219    (65378, 66),
3220    (65379, 67),
3221    (65380, 68),
3222    (65381, 69),
3223    (65382, 70),
3224    (65383, 71),
3225    (65384, 72),
3226    (65385, 73),
3227    (65386, 81),
3228    (65387, 82),
3229    (65388, 83),
3230    (65389, 84),
3231    (65390, 85),
3232    (65391, 86),
3233    (65392, 88),
3234    (65393, 129),
3235    (65394, 130),
3236    (65395, 131),
3237    (65396, 132),
3238    (65397, 133),
3239    (65398, 134),
3240    (65399, 135),
3241    (65400, 136),
3242    (65401, 137),
3243    (65402, 138),
3244    (65403, 140),
3245    (65404, 141),
3246    (65405, 142),
3247    (65406, 143),
3248    (65407, 144),
3249    (65408, 145),
3250    (65409, 146),
3251    (65410, 147),
3252    (65411, 148),
3253    (65412, 149),
3254    (65413, 150),
3255    (65414, 151),
3256    (65415, 152),
3257    (65416, 153),
3258    (65417, 154),
3259    (65418, 157),
3260    (65419, 158),
3261    (65420, 159),
3262    (65421, 162),
3263    (65422, 163),
3264    (65423, 164),
3265    (65424, 165),
3266    (65425, 166),
3267    (65426, 167),
3268    (65427, 168),
3269    (65428, 169),
3270    (65429, 170),
3271    (65430, 172),
3272    (65431, 173),
3273    (65432, 174),
3274    (65433, 175),
3275    (65434, 186),
3276    (65435, 187),
3277    (65436, 188),
3278    (65437, 189),
3279    (65438, 190),
3280    (65439, 191),
3281];
3282
3283impl_ebcdic_encoder_and_decoder!(
3284    IBM297,
3285    "IBM297",
3286    IBM297Encoder,
3287    IBM297Decoder,
3288    IBM_297_ENCODE_TABLE,
3289    IBM_297_DECODE_TABLE
3290);
3291const IBM_297_DECODE_TABLE: [char; 256] = [
3292    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
3293    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
3294    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
3295    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
3296    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
3297    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
3298    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
3299    '\u{a0}', '\u{e2}', '\u{e4}', '\u{40}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{5c}', '\u{f1}',
3300    '\u{b0}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{7b}', '\u{ea}',
3301    '\u{eb}', '\u{7d}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{a7}', '\u{24}',
3302    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
3303    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{f9}', '\u{2c}', '\u{25}', '\u{5f}',
3304    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
3305    '\u{cf}', '\u{cc}', '\u{b5}', '\u{3a}', '\u{a3}', '\u{e0}', '\u{27}', '\u{3d}', '\u{22}',
3306    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
3307    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{5b}', '\u{6a}',
3308    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
3309    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{60}', '\u{a8}', '\u{73}', '\u{74}',
3310    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
3311    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{23}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{5d}',
3312    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{7e}', '\u{b4}',
3313    '\u{d7}', '\u{e9}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
3314    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e8}',
3315    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
3316    '\u{b9}', '\u{fb}', '\u{fc}', '\u{a6}', '\u{fa}', '\u{ff}', '\u{e7}', '\u{f7}', '\u{53}',
3317    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
3318    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
3319    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
3320    '\u{da}', '\u{9f}',
3321];
3322const IBM_297_ENCODE_TABLE: &[(u16, u8)] = &[
3323    (0, 0),
3324    (1, 1),
3325    (2, 2),
3326    (3, 3),
3327    (4, 55),
3328    (5, 45),
3329    (6, 46),
3330    (7, 47),
3331    (8, 22),
3332    (9, 5),
3333    (10, 37),
3334    (11, 11),
3335    (12, 12),
3336    (13, 13),
3337    (14, 14),
3338    (15, 15),
3339    (16, 16),
3340    (17, 17),
3341    (18, 18),
3342    (19, 19),
3343    (20, 60),
3344    (21, 61),
3345    (22, 50),
3346    (23, 38),
3347    (24, 24),
3348    (25, 25),
3349    (26, 63),
3350    (27, 39),
3351    (28, 28),
3352    (29, 29),
3353    (30, 30),
3354    (31, 31),
3355    (32, 64),
3356    (33, 79),
3357    (34, 127),
3358    (35, 177),
3359    (36, 91),
3360    (37, 108),
3361    (38, 80),
3362    (39, 125),
3363    (40, 77),
3364    (41, 93),
3365    (42, 92),
3366    (43, 78),
3367    (44, 107),
3368    (45, 96),
3369    (46, 75),
3370    (47, 97),
3371    (48, 240),
3372    (49, 241),
3373    (50, 242),
3374    (51, 243),
3375    (52, 244),
3376    (53, 245),
3377    (54, 246),
3378    (55, 247),
3379    (56, 248),
3380    (57, 249),
3381    (58, 122),
3382    (59, 94),
3383    (60, 76),
3384    (61, 126),
3385    (62, 110),
3386    (63, 111),
3387    (64, 68),
3388    (65, 193),
3389    (66, 194),
3390    (67, 195),
3391    (68, 196),
3392    (69, 197),
3393    (70, 198),
3394    (71, 199),
3395    (72, 200),
3396    (73, 201),
3397    (74, 209),
3398    (75, 210),
3399    (76, 211),
3400    (77, 212),
3401    (78, 213),
3402    (79, 214),
3403    (80, 215),
3404    (81, 216),
3405    (82, 217),
3406    (83, 226),
3407    (84, 227),
3408    (85, 228),
3409    (86, 229),
3410    (87, 230),
3411    (88, 231),
3412    (89, 232),
3413    (90, 233),
3414    (91, 144),
3415    (92, 72),
3416    (93, 181),
3417    (94, 95),
3418    (95, 109),
3419    (96, 160),
3420    (97, 129),
3421    (98, 130),
3422    (99, 131),
3423    (100, 132),
3424    (101, 133),
3425    (102, 134),
3426    (103, 135),
3427    (104, 136),
3428    (105, 137),
3429    (106, 145),
3430    (107, 146),
3431    (108, 147),
3432    (109, 148),
3433    (110, 149),
3434    (111, 150),
3435    (112, 151),
3436    (113, 152),
3437    (114, 153),
3438    (115, 162),
3439    (116, 163),
3440    (117, 164),
3441    (118, 165),
3442    (119, 166),
3443    (120, 167),
3444    (121, 168),
3445    (122, 169),
3446    (123, 81),
3447    (124, 187),
3448    (125, 84),
3449    (126, 189),
3450    (127, 7),
3451    (128, 32),
3452    (129, 33),
3453    (130, 34),
3454    (131, 35),
3455    (132, 36),
3456    (133, 21),
3457    (134, 6),
3458    (135, 23),
3459    (136, 40),
3460    (137, 41),
3461    (138, 42),
3462    (139, 43),
3463    (140, 44),
3464    (141, 9),
3465    (142, 10),
3466    (143, 27),
3467    (144, 48),
3468    (145, 49),
3469    (146, 26),
3470    (147, 51),
3471    (148, 52),
3472    (149, 53),
3473    (150, 54),
3474    (151, 8),
3475    (152, 56),
3476    (153, 57),
3477    (154, 58),
3478    (155, 59),
3479    (156, 4),
3480    (157, 20),
3481    (158, 62),
3482    (159, 255),
3483    (160, 65),
3484    (161, 170),
3485    (162, 176),
3486    (163, 123),
3487    (164, 159),
3488    (165, 178),
3489    (166, 221),
3490    (167, 90),
3491    (168, 161),
3492    (169, 180),
3493    (170, 154),
3494    (171, 138),
3495    (172, 186),
3496    (173, 202),
3497    (174, 175),
3498    (175, 188),
3499    (176, 74),
3500    (177, 143),
3501    (178, 234),
3502    (179, 250),
3503    (180, 190),
3504    (181, 121),
3505    (182, 182),
3506    (183, 179),
3507    (184, 157),
3508    (185, 218),
3509    (186, 155),
3510    (187, 139),
3511    (188, 183),
3512    (189, 184),
3513    (190, 185),
3514    (191, 171),
3515    (192, 100),
3516    (193, 101),
3517    (194, 98),
3518    (195, 102),
3519    (196, 99),
3520    (197, 103),
3521    (198, 158),
3522    (199, 104),
3523    (200, 116),
3524    (201, 113),
3525    (202, 114),
3526    (203, 115),
3527    (204, 120),
3528    (205, 117),
3529    (206, 118),
3530    (207, 119),
3531    (208, 172),
3532    (209, 105),
3533    (210, 237),
3534    (211, 238),
3535    (212, 235),
3536    (213, 239),
3537    (214, 236),
3538    (215, 191),
3539    (216, 128),
3540    (217, 253),
3541    (218, 254),
3542    (219, 251),
3543    (220, 252),
3544    (221, 173),
3545    (222, 174),
3546    (223, 89),
3547    (224, 124),
3548    (225, 69),
3549    (226, 66),
3550    (227, 70),
3551    (228, 67),
3552    (229, 71),
3553    (230, 156),
3554    (231, 224),
3555    (232, 208),
3556    (233, 192),
3557    (234, 82),
3558    (235, 83),
3559    (236, 88),
3560    (237, 85),
3561    (238, 86),
3562    (239, 87),
3563    (240, 140),
3564    (241, 73),
3565    (242, 205),
3566    (243, 206),
3567    (244, 203),
3568    (245, 207),
3569    (246, 204),
3570    (247, 225),
3571    (248, 112),
3572    (249, 106),
3573    (250, 222),
3574    (251, 219),
3575    (252, 220),
3576    (253, 141),
3577    (254, 142),
3578    (255, 223),
3579];
3580
3581impl_ebcdic_encoder_and_decoder!(
3582    IBM420,
3583    "IBM420",
3584    IBM420Encoder,
3585    IBM420Decoder,
3586    IBM_420_ENCODE_TABLE,
3587    IBM_420_DECODE_TABLE
3588);
3589const IBM_420_DECODE_TABLE: [char; 256] = [
3590    '\u{0}',
3591    '\u{1}',
3592    '\u{2}',
3593    '\u{3}',
3594    '\u{9c}',
3595    '\u{9}',
3596    '\u{86}',
3597    '\u{7f}',
3598    '\u{97}',
3599    '\u{8d}',
3600    '\u{8e}',
3601    '\u{b}',
3602    '\u{c}',
3603    '\u{d}',
3604    '\u{e}',
3605    '\u{f}',
3606    '\u{10}',
3607    '\u{11}',
3608    '\u{12}',
3609    '\u{13}',
3610    '\u{9d}',
3611    '\u{85}',
3612    '\u{8}',
3613    '\u{87}',
3614    '\u{18}',
3615    '\u{19}',
3616    '\u{92}',
3617    '\u{8f}',
3618    '\u{1c}',
3619    '\u{1d}',
3620    '\u{1e}',
3621    '\u{1f}',
3622    '\u{80}',
3623    '\u{81}',
3624    '\u{82}',
3625    '\u{83}',
3626    '\u{84}',
3627    '\u{a}',
3628    '\u{17}',
3629    '\u{1b}',
3630    '\u{88}',
3631    '\u{89}',
3632    '\u{8a}',
3633    '\u{8b}',
3634    '\u{8c}',
3635    '\u{5}',
3636    '\u{6}',
3637    '\u{7}',
3638    '\u{90}',
3639    '\u{91}',
3640    '\u{16}',
3641    '\u{93}',
3642    '\u{94}',
3643    '\u{95}',
3644    '\u{96}',
3645    '\u{4}',
3646    '\u{98}',
3647    '\u{99}',
3648    '\u{9a}',
3649    '\u{9b}',
3650    '\u{14}',
3651    '\u{15}',
3652    '\u{9e}',
3653    '\u{1a}',
3654    '\u{20}',
3655    '\u{a0}',
3656    '\u{651}',
3657    '\u{fe7d}',
3658    '\u{640}',
3659    '\u{200b}',
3660    '\u{621}',
3661    '\u{622}',
3662    '\u{fe82}',
3663    '\u{623}',
3664    '\u{a2}',
3665    '\u{2e}',
3666    '\u{3c}',
3667    '\u{28}',
3668    '\u{2b}',
3669    '\u{7c}',
3670    '\u{26}',
3671    '\u{fe84}',
3672    '\u{624}',
3673    char::REPLACEMENT_CHARACTER,
3674    char::REPLACEMENT_CHARACTER,
3675    '\u{626}',
3676    '\u{627}',
3677    '\u{fe8e}',
3678    '\u{628}',
3679    '\u{fe91}',
3680    '\u{21}',
3681    '\u{24}',
3682    '\u{2a}',
3683    '\u{29}',
3684    '\u{3b}',
3685    '\u{ac}',
3686    '\u{2d}',
3687    '\u{2f}',
3688    '\u{629}',
3689    '\u{62a}',
3690    '\u{fe97}',
3691    '\u{62b}',
3692    '\u{fe9b}',
3693    '\u{62c}',
3694    '\u{fe9f}',
3695    '\u{62d}',
3696    '\u{a6}',
3697    '\u{2c}',
3698    '\u{25}',
3699    '\u{5f}',
3700    '\u{3e}',
3701    '\u{3f}',
3702    '\u{fea3}',
3703    '\u{62e}',
3704    '\u{fea7}',
3705    '\u{62f}',
3706    '\u{630}',
3707    '\u{631}',
3708    '\u{632}',
3709    '\u{633}',
3710    '\u{feb3}',
3711    '\u{60c}',
3712    '\u{3a}',
3713    '\u{23}',
3714    '\u{40}',
3715    '\u{27}',
3716    '\u{3d}',
3717    '\u{22}',
3718    '\u{634}',
3719    '\u{61}',
3720    '\u{62}',
3721    '\u{63}',
3722    '\u{64}',
3723    '\u{65}',
3724    '\u{66}',
3725    '\u{67}',
3726    '\u{68}',
3727    '\u{69}',
3728    '\u{feb7}',
3729    '\u{635}',
3730    '\u{febb}',
3731    '\u{636}',
3732    '\u{febf}',
3733    '\u{637}',
3734    '\u{638}',
3735    '\u{6a}',
3736    '\u{6b}',
3737    '\u{6c}',
3738    '\u{6d}',
3739    '\u{6e}',
3740    '\u{6f}',
3741    '\u{70}',
3742    '\u{71}',
3743    '\u{72}',
3744    '\u{639}',
3745    '\u{feca}',
3746    '\u{fecb}',
3747    '\u{fecc}',
3748    '\u{63a}',
3749    '\u{fece}',
3750    '\u{fecf}',
3751    '\u{f7}',
3752    '\u{73}',
3753    '\u{74}',
3754    '\u{75}',
3755    '\u{76}',
3756    '\u{77}',
3757    '\u{78}',
3758    '\u{79}',
3759    '\u{7a}',
3760    '\u{fed0}',
3761    '\u{641}',
3762    '\u{fed3}',
3763    '\u{642}',
3764    '\u{fed7}',
3765    '\u{643}',
3766    '\u{fedb}',
3767    '\u{644}',
3768    '\u{fef5}',
3769    '\u{fef6}',
3770    '\u{fef7}',
3771    '\u{fef8}',
3772    char::REPLACEMENT_CHARACTER,
3773    char::REPLACEMENT_CHARACTER,
3774    '\u{fefb}',
3775    '\u{fefc}',
3776    '\u{fedf}',
3777    '\u{645}',
3778    '\u{fee3}',
3779    '\u{646}',
3780    '\u{fee7}',
3781    '\u{647}',
3782    '\u{61b}',
3783    '\u{41}',
3784    '\u{42}',
3785    '\u{43}',
3786    '\u{44}',
3787    '\u{45}',
3788    '\u{46}',
3789    '\u{47}',
3790    '\u{48}',
3791    '\u{49}',
3792    '\u{ad}',
3793    '\u{feeb}',
3794    char::REPLACEMENT_CHARACTER,
3795    '\u{feec}',
3796    char::REPLACEMENT_CHARACTER,
3797    '\u{648}',
3798    '\u{61f}',
3799    '\u{4a}',
3800    '\u{4b}',
3801    '\u{4c}',
3802    '\u{4d}',
3803    '\u{4e}',
3804    '\u{4f}',
3805    '\u{50}',
3806    '\u{51}',
3807    '\u{52}',
3808    '\u{649}',
3809    '\u{fef0}',
3810    '\u{64a}',
3811    '\u{fef2}',
3812    '\u{fef3}',
3813    '\u{660}',
3814    '\u{d7}',
3815    char::REPLACEMENT_CHARACTER,
3816    '\u{53}',
3817    '\u{54}',
3818    '\u{55}',
3819    '\u{56}',
3820    '\u{57}',
3821    '\u{58}',
3822    '\u{59}',
3823    '\u{5a}',
3824    '\u{661}',
3825    '\u{662}',
3826    char::REPLACEMENT_CHARACTER,
3827    '\u{663}',
3828    '\u{664}',
3829    '\u{665}',
3830    '\u{30}',
3831    '\u{31}',
3832    '\u{32}',
3833    '\u{33}',
3834    '\u{34}',
3835    '\u{35}',
3836    '\u{36}',
3837    '\u{37}',
3838    '\u{38}',
3839    '\u{39}',
3840    char::REPLACEMENT_CHARACTER,
3841    '\u{666}',
3842    '\u{667}',
3843    '\u{668}',
3844    '\u{669}',
3845    '\u{9f}',
3846];
3847const IBM_420_ENCODE_TABLE: &[(u16, u8)] = &[
3848    (0, 0),
3849    (1, 1),
3850    (2, 2),
3851    (3, 3),
3852    (4, 55),
3853    (5, 45),
3854    (6, 46),
3855    (7, 47),
3856    (8, 22),
3857    (9, 5),
3858    (10, 37),
3859    (11, 11),
3860    (12, 12),
3861    (13, 13),
3862    (14, 14),
3863    (15, 15),
3864    (16, 16),
3865    (17, 17),
3866    (18, 18),
3867    (19, 19),
3868    (20, 60),
3869    (21, 61),
3870    (22, 50),
3871    (23, 38),
3872    (24, 24),
3873    (25, 25),
3874    (26, 63),
3875    (27, 39),
3876    (28, 28),
3877    (29, 29),
3878    (30, 30),
3879    (31, 31),
3880    (32, 64),
3881    (33, 90),
3882    (34, 127),
3883    (35, 123),
3884    (36, 91),
3885    (37, 108),
3886    (38, 80),
3887    (39, 125),
3888    (40, 77),
3889    (41, 93),
3890    (42, 92),
3891    (43, 78),
3892    (44, 107),
3893    (45, 96),
3894    (46, 75),
3895    (47, 97),
3896    (48, 240),
3897    (49, 241),
3898    (50, 242),
3899    (51, 243),
3900    (52, 244),
3901    (53, 245),
3902    (54, 246),
3903    (55, 247),
3904    (56, 248),
3905    (57, 249),
3906    (58, 122),
3907    (59, 94),
3908    (60, 76),
3909    (61, 126),
3910    (62, 110),
3911    (63, 111),
3912    (64, 124),
3913    (65, 193),
3914    (66, 194),
3915    (67, 195),
3916    (68, 196),
3917    (69, 197),
3918    (70, 198),
3919    (71, 199),
3920    (72, 200),
3921    (73, 201),
3922    (74, 209),
3923    (75, 210),
3924    (76, 211),
3925    (77, 212),
3926    (78, 213),
3927    (79, 214),
3928    (80, 215),
3929    (81, 216),
3930    (82, 217),
3931    (83, 226),
3932    (84, 227),
3933    (85, 228),
3934    (86, 229),
3935    (87, 230),
3936    (88, 231),
3937    (89, 232),
3938    (90, 233),
3939    (95, 109),
3940    (97, 129),
3941    (98, 130),
3942    (99, 131),
3943    (100, 132),
3944    (101, 133),
3945    (102, 134),
3946    (103, 135),
3947    (104, 136),
3948    (105, 137),
3949    (106, 145),
3950    (107, 146),
3951    (108, 147),
3952    (109, 148),
3953    (110, 149),
3954    (111, 150),
3955    (112, 151),
3956    (113, 152),
3957    (114, 153),
3958    (115, 162),
3959    (116, 163),
3960    (117, 164),
3961    (118, 165),
3962    (119, 166),
3963    (120, 167),
3964    (121, 168),
3965    (122, 169),
3966    (124, 79),
3967    (127, 7),
3968    (128, 32),
3969    (129, 33),
3970    (130, 34),
3971    (131, 35),
3972    (132, 36),
3973    (133, 21),
3974    (134, 6),
3975    (135, 23),
3976    (136, 40),
3977    (137, 41),
3978    (138, 42),
3979    (139, 43),
3980    (140, 44),
3981    (141, 9),
3982    (142, 10),
3983    (143, 27),
3984    (144, 48),
3985    (145, 49),
3986    (146, 26),
3987    (147, 51),
3988    (148, 52),
3989    (149, 53),
3990    (150, 54),
3991    (151, 8),
3992    (152, 56),
3993    (153, 57),
3994    (154, 58),
3995    (155, 59),
3996    (156, 4),
3997    (157, 20),
3998    (158, 62),
3999    (159, 255),
4000    (160, 65),
4001    (162, 74),
4002    (166, 106),
4003    (172, 95),
4004    (173, 202),
4005    (215, 224),
4006    (247, 161),
4007    (1548, 121),
4008    (1563, 192),
4009    (1567, 208),
4010    (1569, 70),
4011    (1570, 71),
4012    (1571, 73),
4013    (1572, 82),
4014    (1574, 85),
4015    (1575, 86),
4016    (1576, 88),
4017    (1577, 98),
4018    (1578, 99),
4019    (1579, 101),
4020    (1580, 103),
4021    (1581, 105),
4022    (1582, 113),
4023    (1583, 115),
4024    (1584, 116),
4025    (1585, 117),
4026    (1586, 118),
4027    (1587, 119),
4028    (1588, 128),
4029    (1589, 139),
4030    (1590, 141),
4031    (1591, 143),
4032    (1592, 144),
4033    (1593, 154),
4034    (1594, 158),
4035    (1600, 68),
4036    (1601, 171),
4037    (1602, 173),
4038    (1603, 175),
4039    (1604, 177),
4040    (1605, 187),
4041    (1606, 189),
4042    (1607, 191),
4043    (1608, 207),
4044    (1609, 218),
4045    (1610, 220),
4046    (1617, 66),
4047    (1632, 223),
4048    (1633, 234),
4049    (1634, 235),
4050    (1635, 237),
4051    (1636, 238),
4052    (1637, 239),
4053    (1638, 251),
4054    (1639, 252),
4055    (1640, 253),
4056    (1641, 254),
4057    (8203, 69),
4058    (65149, 67),
4059    (65154, 72),
4060    (65156, 81),
4061    (65166, 87),
4062    (65169, 89),
4063    (65175, 100),
4064    (65179, 102),
4065    (65183, 104),
4066    (65187, 112),
4067    (65191, 114),
4068    (65203, 120),
4069    (65207, 138),
4070    (65211, 140),
4071    (65215, 142),
4072    (65226, 155),
4073    (65227, 156),
4074    (65228, 157),
4075    (65230, 159),
4076    (65231, 160),
4077    (65232, 170),
4078    (65235, 172),
4079    (65239, 174),
4080    (65243, 176),
4081    (65247, 186),
4082    (65251, 188),
4083    (65255, 190),
4084    (65259, 203),
4085    (65260, 205),
4086    (65264, 219),
4087    (65266, 221),
4088    (65267, 222),
4089    (65269, 178),
4090    (65270, 179),
4091    (65271, 180),
4092    (65272, 181),
4093    (65275, 184),
4094    (65276, 185),
4095];
4096
4097impl_ebcdic_encoder_and_decoder!(
4098    IBM423,
4099    "IBM423",
4100    IBM423Encoder,
4101    IBM423Decoder,
4102    IBM_423_ENCODE_TABLE,
4103    IBM_423_DECODE_TABLE
4104);
4105const IBM_423_DECODE_TABLE: [char; 256] = [
4106    '\u{0}',
4107    '\u{1}',
4108    '\u{2}',
4109    '\u{3}',
4110    '\u{9c}',
4111    '\u{9}',
4112    '\u{86}',
4113    '\u{7f}',
4114    '\u{97}',
4115    '\u{8d}',
4116    '\u{8e}',
4117    '\u{b}',
4118    '\u{c}',
4119    '\u{d}',
4120    '\u{e}',
4121    '\u{f}',
4122    '\u{10}',
4123    '\u{11}',
4124    '\u{12}',
4125    '\u{13}',
4126    '\u{9d}',
4127    '\u{85}',
4128    '\u{8}',
4129    '\u{87}',
4130    '\u{18}',
4131    '\u{19}',
4132    '\u{92}',
4133    '\u{8f}',
4134    '\u{1c}',
4135    '\u{1d}',
4136    '\u{1e}',
4137    '\u{1f}',
4138    '\u{80}',
4139    '\u{81}',
4140    '\u{82}',
4141    '\u{83}',
4142    '\u{84}',
4143    '\u{a}',
4144    '\u{17}',
4145    '\u{1b}',
4146    '\u{88}',
4147    '\u{89}',
4148    '\u{8a}',
4149    '\u{8b}',
4150    '\u{8c}',
4151    '\u{5}',
4152    '\u{6}',
4153    '\u{7}',
4154    '\u{90}',
4155    '\u{91}',
4156    '\u{16}',
4157    '\u{93}',
4158    '\u{94}',
4159    '\u{95}',
4160    '\u{96}',
4161    '\u{4}',
4162    '\u{98}',
4163    '\u{99}',
4164    '\u{9a}',
4165    '\u{9b}',
4166    '\u{14}',
4167    '\u{15}',
4168    '\u{9e}',
4169    '\u{1a}',
4170    '\u{20}',
4171    '\u{391}',
4172    '\u{392}',
4173    '\u{393}',
4174    '\u{394}',
4175    '\u{395}',
4176    '\u{396}',
4177    '\u{397}',
4178    '\u{398}',
4179    '\u{399}',
4180    '\u{5b}',
4181    '\u{2e}',
4182    '\u{3c}',
4183    '\u{28}',
4184    '\u{2b}',
4185    '\u{21}',
4186    '\u{26}',
4187    '\u{39a}',
4188    '\u{39b}',
4189    '\u{39c}',
4190    '\u{39d}',
4191    '\u{39e}',
4192    '\u{39f}',
4193    '\u{3a0}',
4194    '\u{3a1}',
4195    '\u{3a3}',
4196    '\u{5d}',
4197    '\u{24}',
4198    '\u{2a}',
4199    '\u{29}',
4200    '\u{3b}',
4201    '\u{5e}',
4202    '\u{2d}',
4203    '\u{2f}',
4204    '\u{3a4}',
4205    '\u{3a5}',
4206    '\u{3a6}',
4207    '\u{3a7}',
4208    '\u{3a8}',
4209    '\u{3a9}',
4210    char::REPLACEMENT_CHARACTER,
4211    char::REPLACEMENT_CHARACTER,
4212    '\u{7c}',
4213    '\u{2c}',
4214    '\u{25}',
4215    '\u{5f}',
4216    '\u{3e}',
4217    '\u{3f}',
4218    char::REPLACEMENT_CHARACTER,
4219    '\u{386}',
4220    '\u{388}',
4221    '\u{389}',
4222    '\u{a0}',
4223    '\u{38a}',
4224    '\u{38c}',
4225    '\u{38e}',
4226    '\u{38f}',
4227    '\u{60}',
4228    '\u{3a}',
4229    '\u{a3}',
4230    '\u{a7}',
4231    '\u{27}',
4232    '\u{3d}',
4233    '\u{22}',
4234    '\u{c4}',
4235    '\u{61}',
4236    '\u{62}',
4237    '\u{63}',
4238    '\u{64}',
4239    '\u{65}',
4240    '\u{66}',
4241    '\u{67}',
4242    '\u{68}',
4243    '\u{69}',
4244    '\u{3b1}',
4245    '\u{3b2}',
4246    '\u{3b3}',
4247    '\u{3b4}',
4248    '\u{3b5}',
4249    '\u{3b6}',
4250    '\u{d6}',
4251    '\u{6a}',
4252    '\u{6b}',
4253    '\u{6c}',
4254    '\u{6d}',
4255    '\u{6e}',
4256    '\u{6f}',
4257    '\u{70}',
4258    '\u{71}',
4259    '\u{72}',
4260    '\u{3b7}',
4261    '\u{3b8}',
4262    '\u{3b9}',
4263    '\u{3ba}',
4264    '\u{3bb}',
4265    '\u{3bc}',
4266    '\u{dc}',
4267    '\u{a8}',
4268    '\u{73}',
4269    '\u{74}',
4270    '\u{75}',
4271    '\u{76}',
4272    '\u{77}',
4273    '\u{78}',
4274    '\u{79}',
4275    '\u{7a}',
4276    '\u{3bd}',
4277    '\u{3be}',
4278    '\u{3bf}',
4279    '\u{3c0}',
4280    '\u{3c1}',
4281    '\u{3c3}',
4282    char::REPLACEMENT_CHARACTER,
4283    '\u{3ac}',
4284    '\u{3ad}',
4285    '\u{3ae}',
4286    '\u{3ca}',
4287    '\u{3af}',
4288    '\u{3cc}',
4289    '\u{3cd}',
4290    '\u{3cb}',
4291    '\u{3ce}',
4292    '\u{3c2}',
4293    '\u{3c4}',
4294    '\u{3c5}',
4295    '\u{3c6}',
4296    '\u{3c7}',
4297    '\u{3c8}',
4298    '\u{b8}',
4299    '\u{41}',
4300    '\u{42}',
4301    '\u{43}',
4302    '\u{44}',
4303    '\u{45}',
4304    '\u{46}',
4305    '\u{47}',
4306    '\u{48}',
4307    '\u{49}',
4308    '\u{ad}',
4309    '\u{3c9}',
4310    '\u{e2}',
4311    '\u{e0}',
4312    '\u{e4}',
4313    '\u{ea}',
4314    '\u{b4}',
4315    '\u{4a}',
4316    '\u{4b}',
4317    '\u{4c}',
4318    '\u{4d}',
4319    '\u{4e}',
4320    '\u{4f}',
4321    '\u{50}',
4322    '\u{51}',
4323    '\u{52}',
4324    '\u{b1}',
4325    '\u{e9}',
4326    '\u{e8}',
4327    '\u{eb}',
4328    '\u{ee}',
4329    '\u{ef}',
4330    '\u{b0}',
4331    char::REPLACEMENT_CHARACTER,
4332    '\u{53}',
4333    '\u{54}',
4334    '\u{55}',
4335    '\u{56}',
4336    '\u{57}',
4337    '\u{58}',
4338    '\u{59}',
4339    '\u{5a}',
4340    '\u{bd}',
4341    '\u{f6}',
4342    '\u{f4}',
4343    '\u{fb}',
4344    '\u{f9}',
4345    '\u{fc}',
4346    '\u{30}',
4347    '\u{31}',
4348    '\u{32}',
4349    '\u{33}',
4350    '\u{34}',
4351    '\u{35}',
4352    '\u{36}',
4353    '\u{37}',
4354    '\u{38}',
4355    '\u{39}',
4356    '\u{ff}',
4357    '\u{e7}',
4358    '\u{c7}',
4359    char::REPLACEMENT_CHARACTER,
4360    char::REPLACEMENT_CHARACTER,
4361    '\u{9f}',
4362];
4363const IBM_423_ENCODE_TABLE: &[(u16, u8)] = &[
4364    (0, 0),
4365    (1, 1),
4366    (2, 2),
4367    (3, 3),
4368    (4, 55),
4369    (5, 45),
4370    (6, 46),
4371    (7, 47),
4372    (8, 22),
4373    (9, 5),
4374    (10, 37),
4375    (11, 11),
4376    (12, 12),
4377    (13, 13),
4378    (14, 14),
4379    (15, 15),
4380    (16, 16),
4381    (17, 17),
4382    (18, 18),
4383    (19, 19),
4384    (20, 60),
4385    (21, 61),
4386    (22, 50),
4387    (23, 38),
4388    (24, 24),
4389    (25, 25),
4390    (26, 63),
4391    (27, 39),
4392    (28, 28),
4393    (29, 29),
4394    (30, 30),
4395    (31, 31),
4396    (32, 64),
4397    (33, 79),
4398    (34, 127),
4399    (36, 91),
4400    (37, 108),
4401    (38, 80),
4402    (39, 125),
4403    (40, 77),
4404    (41, 93),
4405    (42, 92),
4406    (43, 78),
4407    (44, 107),
4408    (45, 96),
4409    (46, 75),
4410    (47, 97),
4411    (48, 240),
4412    (49, 241),
4413    (50, 242),
4414    (51, 243),
4415    (52, 244),
4416    (53, 245),
4417    (54, 246),
4418    (55, 247),
4419    (56, 248),
4420    (57, 249),
4421    (58, 122),
4422    (59, 94),
4423    (60, 76),
4424    (61, 126),
4425    (62, 110),
4426    (63, 111),
4427    (65, 193),
4428    (66, 194),
4429    (67, 195),
4430    (68, 196),
4431    (69, 197),
4432    (70, 198),
4433    (71, 199),
4434    (72, 200),
4435    (73, 201),
4436    (74, 209),
4437    (75, 210),
4438    (76, 211),
4439    (77, 212),
4440    (78, 213),
4441    (79, 214),
4442    (80, 215),
4443    (81, 216),
4444    (82, 217),
4445    (83, 226),
4446    (84, 227),
4447    (85, 228),
4448    (86, 229),
4449    (87, 230),
4450    (88, 231),
4451    (89, 232),
4452    (90, 233),
4453    (91, 74),
4454    (93, 90),
4455    (94, 95),
4456    (95, 109),
4457    (96, 121),
4458    (97, 129),
4459    (98, 130),
4460    (99, 131),
4461    (100, 132),
4462    (101, 133),
4463    (102, 134),
4464    (103, 135),
4465    (104, 136),
4466    (105, 137),
4467    (106, 145),
4468    (107, 146),
4469    (108, 147),
4470    (109, 148),
4471    (110, 149),
4472    (111, 150),
4473    (112, 151),
4474    (113, 152),
4475    (114, 153),
4476    (115, 162),
4477    (116, 163),
4478    (117, 164),
4479    (118, 165),
4480    (119, 166),
4481    (120, 167),
4482    (121, 168),
4483    (122, 169),
4484    (124, 106),
4485    (127, 7),
4486    (128, 32),
4487    (129, 33),
4488    (130, 34),
4489    (131, 35),
4490    (132, 36),
4491    (133, 21),
4492    (134, 6),
4493    (135, 23),
4494    (136, 40),
4495    (137, 41),
4496    (138, 42),
4497    (139, 43),
4498    (140, 44),
4499    (141, 9),
4500    (142, 10),
4501    (143, 27),
4502    (144, 48),
4503    (145, 49),
4504    (146, 26),
4505    (147, 51),
4506    (148, 52),
4507    (149, 53),
4508    (150, 54),
4509    (151, 8),
4510    (152, 56),
4511    (153, 57),
4512    (154, 58),
4513    (155, 59),
4514    (156, 4),
4515    (157, 20),
4516    (158, 62),
4517    (159, 255),
4518    (160, 116),
4519    (163, 123),
4520    (167, 124),
4521    (168, 161),
4522    (173, 202),
4523    (176, 224),
4524    (177, 218),
4525    (180, 208),
4526    (184, 192),
4527    (189, 234),
4528    (196, 128),
4529    (199, 252),
4530    (214, 144),
4531    (220, 160),
4532    (224, 205),
4533    (226, 204),
4534    (228, 206),
4535    (231, 251),
4536    (232, 220),
4537    (233, 219),
4538    (234, 207),
4539    (235, 221),
4540    (238, 222),
4541    (239, 223),
4542    (244, 236),
4543    (246, 235),
4544    (249, 238),
4545    (251, 237),
4546    (252, 239),
4547    (255, 250),
4548    (902, 113),
4549    (904, 114),
4550    (905, 115),
4551    (906, 117),
4552    (908, 118),
4553    (910, 119),
4554    (911, 120),
4555    (913, 65),
4556    (914, 66),
4557    (915, 67),
4558    (916, 68),
4559    (917, 69),
4560    (918, 70),
4561    (919, 71),
4562    (920, 72),
4563    (921, 73),
4564    (922, 81),
4565    (923, 82),
4566    (924, 83),
4567    (925, 84),
4568    (926, 85),
4569    (927, 86),
4570    (928, 87),
4571    (929, 88),
4572    (931, 89),
4573    (932, 98),
4574    (933, 99),
4575    (934, 100),
4576    (935, 101),
4577    (936, 102),
4578    (937, 103),
4579    (940, 177),
4580    (941, 178),
4581    (942, 179),
4582    (943, 181),
4583    (945, 138),
4584    (946, 139),
4585    (947, 140),
4586    (948, 141),
4587    (949, 142),
4588    (950, 143),
4589    (951, 154),
4590    (952, 155),
4591    (953, 156),
4592    (954, 157),
4593    (955, 158),
4594    (956, 159),
4595    (957, 170),
4596    (958, 171),
4597    (959, 172),
4598    (960, 173),
4599    (961, 174),
4600    (962, 186),
4601    (963, 175),
4602    (964, 187),
4603    (965, 188),
4604    (966, 189),
4605    (967, 190),
4606    (968, 191),
4607    (969, 203),
4608    (970, 180),
4609    (971, 184),
4610    (972, 182),
4611    (973, 183),
4612    (974, 185),
4613];
4614
4615impl_ebcdic_encoder_and_decoder!(
4616    IBM424,
4617    "IBM424",
4618    IBM424Encoder,
4619    IBM424Decoder,
4620    IBM_424_ENCODE_TABLE,
4621    IBM_424_DECODE_TABLE
4622);
4623const IBM_424_DECODE_TABLE: [char; 256] = [
4624    '\u{0}',
4625    '\u{1}',
4626    '\u{2}',
4627    '\u{3}',
4628    '\u{9c}',
4629    '\u{9}',
4630    '\u{86}',
4631    '\u{7f}',
4632    '\u{97}',
4633    '\u{8d}',
4634    '\u{8e}',
4635    '\u{b}',
4636    '\u{c}',
4637    '\u{d}',
4638    '\u{e}',
4639    '\u{f}',
4640    '\u{10}',
4641    '\u{11}',
4642    '\u{12}',
4643    '\u{13}',
4644    '\u{9d}',
4645    '\u{85}',
4646    '\u{8}',
4647    '\u{87}',
4648    '\u{18}',
4649    '\u{19}',
4650    '\u{92}',
4651    '\u{8f}',
4652    '\u{1c}',
4653    '\u{1d}',
4654    '\u{1e}',
4655    '\u{1f}',
4656    '\u{80}',
4657    '\u{81}',
4658    '\u{82}',
4659    '\u{83}',
4660    '\u{84}',
4661    '\u{a}',
4662    '\u{17}',
4663    '\u{1b}',
4664    '\u{88}',
4665    '\u{89}',
4666    '\u{8a}',
4667    '\u{8b}',
4668    '\u{8c}',
4669    '\u{5}',
4670    '\u{6}',
4671    '\u{7}',
4672    '\u{90}',
4673    '\u{91}',
4674    '\u{16}',
4675    '\u{93}',
4676    '\u{94}',
4677    '\u{95}',
4678    '\u{96}',
4679    '\u{4}',
4680    '\u{98}',
4681    '\u{99}',
4682    '\u{9a}',
4683    '\u{9b}',
4684    '\u{14}',
4685    '\u{15}',
4686    '\u{9e}',
4687    '\u{1a}',
4688    '\u{20}',
4689    '\u{5d0}',
4690    '\u{5d1}',
4691    '\u{5d2}',
4692    '\u{5d3}',
4693    '\u{5d4}',
4694    '\u{5d5}',
4695    '\u{5d6}',
4696    '\u{5d7}',
4697    '\u{5d8}',
4698    '\u{a2}',
4699    '\u{2e}',
4700    '\u{3c}',
4701    '\u{28}',
4702    '\u{2b}',
4703    '\u{7c}',
4704    '\u{26}',
4705    '\u{5d9}',
4706    '\u{5da}',
4707    '\u{5db}',
4708    '\u{5dc}',
4709    '\u{5dd}',
4710    '\u{5de}',
4711    '\u{5df}',
4712    '\u{5e0}',
4713    '\u{5e1}',
4714    '\u{21}',
4715    '\u{24}',
4716    '\u{2a}',
4717    '\u{29}',
4718    '\u{3b}',
4719    '\u{ac}',
4720    '\u{2d}',
4721    '\u{2f}',
4722    '\u{5e2}',
4723    '\u{5e3}',
4724    '\u{5e4}',
4725    '\u{5e5}',
4726    '\u{5e6}',
4727    '\u{5e7}',
4728    '\u{5e8}',
4729    '\u{5e9}',
4730    '\u{a6}',
4731    '\u{2c}',
4732    '\u{25}',
4733    '\u{5f}',
4734    '\u{3e}',
4735    '\u{3f}',
4736    char::REPLACEMENT_CHARACTER,
4737    '\u{5ea}',
4738    char::REPLACEMENT_CHARACTER,
4739    char::REPLACEMENT_CHARACTER,
4740    '\u{a0}',
4741    char::REPLACEMENT_CHARACTER,
4742    char::REPLACEMENT_CHARACTER,
4743    char::REPLACEMENT_CHARACTER,
4744    '\u{2017}',
4745    '\u{60}',
4746    '\u{3a}',
4747    '\u{23}',
4748    '\u{40}',
4749    '\u{27}',
4750    '\u{3d}',
4751    '\u{22}',
4752    char::REPLACEMENT_CHARACTER,
4753    '\u{61}',
4754    '\u{62}',
4755    '\u{63}',
4756    '\u{64}',
4757    '\u{65}',
4758    '\u{66}',
4759    '\u{67}',
4760    '\u{68}',
4761    '\u{69}',
4762    '\u{ab}',
4763    '\u{bb}',
4764    char::REPLACEMENT_CHARACTER,
4765    char::REPLACEMENT_CHARACTER,
4766    char::REPLACEMENT_CHARACTER,
4767    '\u{b1}',
4768    '\u{b0}',
4769    '\u{6a}',
4770    '\u{6b}',
4771    '\u{6c}',
4772    '\u{6d}',
4773    '\u{6e}',
4774    '\u{6f}',
4775    '\u{70}',
4776    '\u{71}',
4777    '\u{72}',
4778    char::REPLACEMENT_CHARACTER,
4779    char::REPLACEMENT_CHARACTER,
4780    char::REPLACEMENT_CHARACTER,
4781    '\u{b8}',
4782    char::REPLACEMENT_CHARACTER,
4783    '\u{a4}',
4784    '\u{b5}',
4785    '\u{7e}',
4786    '\u{73}',
4787    '\u{74}',
4788    '\u{75}',
4789    '\u{76}',
4790    '\u{77}',
4791    '\u{78}',
4792    '\u{79}',
4793    '\u{7a}',
4794    char::REPLACEMENT_CHARACTER,
4795    char::REPLACEMENT_CHARACTER,
4796    char::REPLACEMENT_CHARACTER,
4797    char::REPLACEMENT_CHARACTER,
4798    char::REPLACEMENT_CHARACTER,
4799    '\u{ae}',
4800    '\u{5e}',
4801    '\u{a3}',
4802    '\u{a5}',
4803    '\u{2022}',
4804    '\u{a9}',
4805    '\u{a7}',
4806    '\u{b6}',
4807    '\u{bc}',
4808    '\u{bd}',
4809    '\u{be}',
4810    '\u{5b}',
4811    '\u{5d}',
4812    '\u{203e}',
4813    '\u{a8}',
4814    '\u{b4}',
4815    '\u{d7}',
4816    '\u{7b}',
4817    '\u{41}',
4818    '\u{42}',
4819    '\u{43}',
4820    '\u{44}',
4821    '\u{45}',
4822    '\u{46}',
4823    '\u{47}',
4824    '\u{48}',
4825    '\u{49}',
4826    '\u{ad}',
4827    char::REPLACEMENT_CHARACTER,
4828    char::REPLACEMENT_CHARACTER,
4829    char::REPLACEMENT_CHARACTER,
4830    char::REPLACEMENT_CHARACTER,
4831    char::REPLACEMENT_CHARACTER,
4832    '\u{7d}',
4833    '\u{4a}',
4834    '\u{4b}',
4835    '\u{4c}',
4836    '\u{4d}',
4837    '\u{4e}',
4838    '\u{4f}',
4839    '\u{50}',
4840    '\u{51}',
4841    '\u{52}',
4842    '\u{b9}',
4843    char::REPLACEMENT_CHARACTER,
4844    char::REPLACEMENT_CHARACTER,
4845    char::REPLACEMENT_CHARACTER,
4846    char::REPLACEMENT_CHARACTER,
4847    char::REPLACEMENT_CHARACTER,
4848    '\u{5c}',
4849    '\u{f7}',
4850    '\u{53}',
4851    '\u{54}',
4852    '\u{55}',
4853    '\u{56}',
4854    '\u{57}',
4855    '\u{58}',
4856    '\u{59}',
4857    '\u{5a}',
4858    '\u{b2}',
4859    char::REPLACEMENT_CHARACTER,
4860    char::REPLACEMENT_CHARACTER,
4861    char::REPLACEMENT_CHARACTER,
4862    char::REPLACEMENT_CHARACTER,
4863    char::REPLACEMENT_CHARACTER,
4864    '\u{30}',
4865    '\u{31}',
4866    '\u{32}',
4867    '\u{33}',
4868    '\u{34}',
4869    '\u{35}',
4870    '\u{36}',
4871    '\u{37}',
4872    '\u{38}',
4873    '\u{39}',
4874    '\u{b3}',
4875    char::REPLACEMENT_CHARACTER,
4876    char::REPLACEMENT_CHARACTER,
4877    char::REPLACEMENT_CHARACTER,
4878    char::REPLACEMENT_CHARACTER,
4879    '\u{9f}',
4880];
4881const IBM_424_ENCODE_TABLE: &[(u16, u8)] = &[
4882    (0, 0),
4883    (1, 1),
4884    (2, 2),
4885    (3, 3),
4886    (4, 55),
4887    (5, 45),
4888    (6, 46),
4889    (7, 47),
4890    (8, 22),
4891    (9, 5),
4892    (10, 37),
4893    (11, 11),
4894    (12, 12),
4895    (13, 13),
4896    (14, 14),
4897    (15, 15),
4898    (16, 16),
4899    (17, 17),
4900    (18, 18),
4901    (19, 19),
4902    (20, 60),
4903    (21, 61),
4904    (22, 50),
4905    (23, 38),
4906    (24, 24),
4907    (25, 25),
4908    (26, 63),
4909    (27, 39),
4910    (28, 28),
4911    (29, 29),
4912    (30, 30),
4913    (31, 31),
4914    (32, 64),
4915    (33, 90),
4916    (34, 127),
4917    (35, 123),
4918    (36, 91),
4919    (37, 108),
4920    (38, 80),
4921    (39, 125),
4922    (40, 77),
4923    (41, 93),
4924    (42, 92),
4925    (43, 78),
4926    (44, 107),
4927    (45, 96),
4928    (46, 75),
4929    (47, 97),
4930    (48, 240),
4931    (49, 241),
4932    (50, 242),
4933    (51, 243),
4934    (52, 244),
4935    (53, 245),
4936    (54, 246),
4937    (55, 247),
4938    (56, 248),
4939    (57, 249),
4940    (58, 122),
4941    (59, 94),
4942    (60, 76),
4943    (61, 126),
4944    (62, 110),
4945    (63, 111),
4946    (64, 124),
4947    (65, 193),
4948    (66, 194),
4949    (67, 195),
4950    (68, 196),
4951    (69, 197),
4952    (70, 198),
4953    (71, 199),
4954    (72, 200),
4955    (73, 201),
4956    (74, 209),
4957    (75, 210),
4958    (76, 211),
4959    (77, 212),
4960    (78, 213),
4961    (79, 214),
4962    (80, 215),
4963    (81, 216),
4964    (82, 217),
4965    (83, 226),
4966    (84, 227),
4967    (85, 228),
4968    (86, 229),
4969    (87, 230),
4970    (88, 231),
4971    (89, 232),
4972    (90, 233),
4973    (91, 186),
4974    (92, 224),
4975    (93, 187),
4976    (94, 176),
4977    (95, 109),
4978    (96, 121),
4979    (97, 129),
4980    (98, 130),
4981    (99, 131),
4982    (100, 132),
4983    (101, 133),
4984    (102, 134),
4985    (103, 135),
4986    (104, 136),
4987    (105, 137),
4988    (106, 145),
4989    (107, 146),
4990    (108, 147),
4991    (109, 148),
4992    (110, 149),
4993    (111, 150),
4994    (112, 151),
4995    (113, 152),
4996    (114, 153),
4997    (115, 162),
4998    (116, 163),
4999    (117, 164),
5000    (118, 165),
5001    (119, 166),
5002    (120, 167),
5003    (121, 168),
5004    (122, 169),
5005    (123, 192),
5006    (124, 79),
5007    (125, 208),
5008    (126, 161),
5009    (127, 7),
5010    (128, 32),
5011    (129, 33),
5012    (130, 34),
5013    (131, 35),
5014    (132, 36),
5015    (133, 21),
5016    (134, 6),
5017    (135, 23),
5018    (136, 40),
5019    (137, 41),
5020    (138, 42),
5021    (139, 43),
5022    (140, 44),
5023    (141, 9),
5024    (142, 10),
5025    (143, 27),
5026    (144, 48),
5027    (145, 49),
5028    (146, 26),
5029    (147, 51),
5030    (148, 52),
5031    (149, 53),
5032    (150, 54),
5033    (151, 8),
5034    (152, 56),
5035    (153, 57),
5036    (154, 58),
5037    (155, 59),
5038    (156, 4),
5039    (157, 20),
5040    (158, 62),
5041    (159, 255),
5042    (160, 116),
5043    (162, 74),
5044    (163, 177),
5045    (164, 159),
5046    (165, 178),
5047    (166, 106),
5048    (167, 181),
5049    (168, 189),
5050    (169, 180),
5051    (171, 138),
5052    (172, 95),
5053    (173, 202),
5054    (174, 175),
5055    (176, 144),
5056    (177, 143),
5057    (178, 234),
5058    (179, 250),
5059    (180, 190),
5060    (181, 160),
5061    (182, 182),
5062    (184, 157),
5063    (185, 218),
5064    (187, 139),
5065    (188, 183),
5066    (189, 184),
5067    (190, 185),
5068    (215, 191),
5069    (247, 225),
5070    (1488, 65),
5071    (1489, 66),
5072    (1490, 67),
5073    (1491, 68),
5074    (1492, 69),
5075    (1493, 70),
5076    (1494, 71),
5077    (1495, 72),
5078    (1496, 73),
5079    (1497, 81),
5080    (1498, 82),
5081    (1499, 83),
5082    (1500, 84),
5083    (1501, 85),
5084    (1502, 86),
5085    (1503, 87),
5086    (1504, 88),
5087    (1505, 89),
5088    (1506, 98),
5089    (1507, 99),
5090    (1508, 100),
5091    (1509, 101),
5092    (1510, 102),
5093    (1511, 103),
5094    (1512, 104),
5095    (1513, 105),
5096    (1514, 113),
5097    (8215, 120),
5098    (8226, 179),
5099    (8254, 188),
5100];
5101
5102impl_ebcdic_encoder_and_decoder!(
5103    IBM437,
5104    "IBM437",
5105    IBM437Encoder,
5106    IBM437Decoder,
5107    IBM_437_ENCODE_TABLE,
5108    IBM_437_DECODE_TABLE
5109);
5110const IBM_437_DECODE_TABLE: [char; 256] = [
5111    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
5112    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
5113    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
5114    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
5115    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
5116    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
5117    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
5118    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
5119    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
5120    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
5121    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
5122    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
5123    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
5124    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
5125    '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
5126    '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{ec}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
5127    '\u{c6}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{fb}', '\u{f9}', '\u{ff}', '\u{d6}', '\u{dc}',
5128    '\u{a2}', '\u{a3}', '\u{a5}', '\u{20a7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
5129    '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
5130    '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
5131    '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
5132    '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
5133    '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
5134    '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
5135    '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
5136    '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
5137    '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
5138    '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
5139    '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
5140    '\u{b2}', '\u{25a0}', '\u{a0}',
5141];
5142const IBM_437_ENCODE_TABLE: &[(u16, u8)] = &[
5143    (0, 0),
5144    (1, 1),
5145    (2, 2),
5146    (3, 3),
5147    (4, 4),
5148    (5, 5),
5149    (6, 6),
5150    (7, 7),
5151    (8, 8),
5152    (9, 9),
5153    (10, 10),
5154    (11, 11),
5155    (12, 12),
5156    (13, 13),
5157    (14, 14),
5158    (15, 15),
5159    (16, 16),
5160    (17, 17),
5161    (18, 18),
5162    (19, 19),
5163    (20, 20),
5164    (21, 21),
5165    (22, 22),
5166    (23, 23),
5167    (24, 24),
5168    (25, 25),
5169    (26, 127),
5170    (27, 27),
5171    (28, 26),
5172    (29, 29),
5173    (30, 30),
5174    (31, 31),
5175    (32, 32),
5176    (33, 33),
5177    (34, 34),
5178    (35, 35),
5179    (36, 36),
5180    (37, 37),
5181    (38, 38),
5182    (39, 39),
5183    (40, 40),
5184    (41, 41),
5185    (42, 42),
5186    (43, 43),
5187    (44, 44),
5188    (45, 45),
5189    (46, 46),
5190    (47, 47),
5191    (48, 48),
5192    (49, 49),
5193    (50, 50),
5194    (51, 51),
5195    (52, 52),
5196    (53, 53),
5197    (54, 54),
5198    (55, 55),
5199    (56, 56),
5200    (57, 57),
5201    (58, 58),
5202    (59, 59),
5203    (60, 60),
5204    (61, 61),
5205    (62, 62),
5206    (63, 63),
5207    (64, 64),
5208    (65, 65),
5209    (66, 66),
5210    (67, 67),
5211    (68, 68),
5212    (69, 69),
5213    (70, 70),
5214    (71, 71),
5215    (72, 72),
5216    (73, 73),
5217    (74, 74),
5218    (75, 75),
5219    (76, 76),
5220    (77, 77),
5221    (78, 78),
5222    (79, 79),
5223    (80, 80),
5224    (81, 81),
5225    (82, 82),
5226    (83, 83),
5227    (84, 84),
5228    (85, 85),
5229    (86, 86),
5230    (87, 87),
5231    (88, 88),
5232    (89, 89),
5233    (90, 90),
5234    (91, 91),
5235    (92, 92),
5236    (93, 93),
5237    (94, 94),
5238    (95, 95),
5239    (96, 96),
5240    (97, 97),
5241    (98, 98),
5242    (99, 99),
5243    (100, 100),
5244    (101, 101),
5245    (102, 102),
5246    (103, 103),
5247    (104, 104),
5248    (105, 105),
5249    (106, 106),
5250    (107, 107),
5251    (108, 108),
5252    (109, 109),
5253    (110, 110),
5254    (111, 111),
5255    (112, 112),
5256    (113, 113),
5257    (114, 114),
5258    (115, 115),
5259    (116, 116),
5260    (117, 117),
5261    (118, 118),
5262    (119, 119),
5263    (120, 120),
5264    (121, 121),
5265    (122, 122),
5266    (123, 123),
5267    (124, 124),
5268    (125, 125),
5269    (126, 126),
5270    (127, 28),
5271    (160, 255),
5272    (161, 173),
5273    (162, 155),
5274    (163, 156),
5275    (165, 157),
5276    (170, 166),
5277    (171, 174),
5278    (172, 170),
5279    (176, 248),
5280    (177, 241),
5281    (178, 253),
5282    (183, 250),
5283    (186, 167),
5284    (187, 175),
5285    (188, 172),
5286    (189, 171),
5287    (191, 168),
5288    (196, 142),
5289    (197, 143),
5290    (198, 146),
5291    (199, 128),
5292    (201, 144),
5293    (209, 165),
5294    (214, 153),
5295    (220, 154),
5296    (223, 225),
5297    (224, 133),
5298    (225, 160),
5299    (226, 131),
5300    (228, 132),
5301    (229, 134),
5302    (230, 145),
5303    (231, 135),
5304    (232, 138),
5305    (233, 130),
5306    (234, 136),
5307    (235, 137),
5308    (236, 141),
5309    (237, 161),
5310    (238, 140),
5311    (239, 139),
5312    (241, 164),
5313    (242, 149),
5314    (243, 162),
5315    (244, 147),
5316    (246, 148),
5317    (247, 246),
5318    (249, 151),
5319    (250, 163),
5320    (251, 150),
5321    (252, 129),
5322    (255, 152),
5323    (402, 159),
5324    (915, 226),
5325    (920, 233),
5326    (931, 228),
5327    (934, 232),
5328    (937, 234),
5329    (945, 224),
5330    (948, 235),
5331    (949, 238),
5332    (956, 230),
5333    (960, 227),
5334    (963, 229),
5335    (964, 231),
5336    (966, 237),
5337    (8319, 252),
5338    (8359, 158),
5339    (8729, 249),
5340    (8730, 251),
5341    (8734, 236),
5342    (8745, 239),
5343    (8776, 247),
5344    (8801, 240),
5345    (8804, 243),
5346    (8805, 242),
5347    (8976, 169),
5348    (8992, 244),
5349    (8993, 245),
5350    (9472, 196),
5351    (9474, 179),
5352    (9484, 218),
5353    (9488, 191),
5354    (9492, 192),
5355    (9496, 217),
5356    (9500, 195),
5357    (9508, 180),
5358    (9516, 194),
5359    (9524, 193),
5360    (9532, 197),
5361    (9552, 205),
5362    (9553, 186),
5363    (9554, 213),
5364    (9555, 214),
5365    (9556, 201),
5366    (9557, 184),
5367    (9558, 183),
5368    (9559, 187),
5369    (9560, 212),
5370    (9561, 211),
5371    (9562, 200),
5372    (9563, 190),
5373    (9564, 189),
5374    (9565, 188),
5375    (9566, 198),
5376    (9567, 199),
5377    (9568, 204),
5378    (9569, 181),
5379    (9570, 182),
5380    (9571, 185),
5381    (9572, 209),
5382    (9573, 210),
5383    (9574, 203),
5384    (9575, 207),
5385    (9576, 208),
5386    (9577, 202),
5387    (9578, 216),
5388    (9579, 215),
5389    (9580, 206),
5390    (9600, 223),
5391    (9604, 220),
5392    (9608, 219),
5393    (9612, 221),
5394    (9616, 222),
5395    (9617, 176),
5396    (9618, 177),
5397    (9619, 178),
5398    (9632, 254),
5399];
5400
5401impl_ebcdic_encoder_and_decoder!(
5402    IBM500,
5403    "IBM500",
5404    IBM500Encoder,
5405    IBM500Decoder,
5406    IBM_500_ENCODE_TABLE,
5407    IBM_500_DECODE_TABLE
5408);
5409const IBM_500_DECODE_TABLE: [char; 256] = [
5410    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
5411    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
5412    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
5413    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
5414    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
5415    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
5416    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
5417    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
5418    '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
5419    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{5d}', '\u{24}',
5420    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
5421    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
5422    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
5423    '\u{cf}', '\u{cc}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
5424    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
5425    '\u{69}', '\u{ab}', '\u{bb}', '\u{f0}', '\u{fd}', '\u{fe}', '\u{b1}', '\u{b0}', '\u{6a}',
5426    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
5427    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{7e}', '\u{73}', '\u{74}',
5428    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{d0}',
5429    '\u{dd}', '\u{de}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
5430    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
5431    '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
5432    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{7d}',
5433    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
5434    '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{5c}', '\u{f7}', '\u{53}',
5435    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
5436    '\u{d6}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
5437    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
5438    '\u{da}', '\u{9f}',
5439];
5440const IBM_500_ENCODE_TABLE: &[(u16, u8)] = &[
5441    (0, 0),
5442    (1, 1),
5443    (2, 2),
5444    (3, 3),
5445    (4, 55),
5446    (5, 45),
5447    (6, 46),
5448    (7, 47),
5449    (8, 22),
5450    (9, 5),
5451    (10, 37),
5452    (11, 11),
5453    (12, 12),
5454    (13, 13),
5455    (14, 14),
5456    (15, 15),
5457    (16, 16),
5458    (17, 17),
5459    (18, 18),
5460    (19, 19),
5461    (20, 60),
5462    (21, 61),
5463    (22, 50),
5464    (23, 38),
5465    (24, 24),
5466    (25, 25),
5467    (26, 63),
5468    (27, 39),
5469    (28, 28),
5470    (29, 29),
5471    (30, 30),
5472    (31, 31),
5473    (32, 64),
5474    (33, 79),
5475    (34, 127),
5476    (35, 123),
5477    (36, 91),
5478    (37, 108),
5479    (38, 80),
5480    (39, 125),
5481    (40, 77),
5482    (41, 93),
5483    (42, 92),
5484    (43, 78),
5485    (44, 107),
5486    (45, 96),
5487    (46, 75),
5488    (47, 97),
5489    (48, 240),
5490    (49, 241),
5491    (50, 242),
5492    (51, 243),
5493    (52, 244),
5494    (53, 245),
5495    (54, 246),
5496    (55, 247),
5497    (56, 248),
5498    (57, 249),
5499    (58, 122),
5500    (59, 94),
5501    (60, 76),
5502    (61, 126),
5503    (62, 110),
5504    (63, 111),
5505    (64, 124),
5506    (65, 193),
5507    (66, 194),
5508    (67, 195),
5509    (68, 196),
5510    (69, 197),
5511    (70, 198),
5512    (71, 199),
5513    (72, 200),
5514    (73, 201),
5515    (74, 209),
5516    (75, 210),
5517    (76, 211),
5518    (77, 212),
5519    (78, 213),
5520    (79, 214),
5521    (80, 215),
5522    (81, 216),
5523    (82, 217),
5524    (83, 226),
5525    (84, 227),
5526    (85, 228),
5527    (86, 229),
5528    (87, 230),
5529    (88, 231),
5530    (89, 232),
5531    (90, 233),
5532    (91, 74),
5533    (92, 224),
5534    (93, 90),
5535    (94, 95),
5536    (95, 109),
5537    (96, 121),
5538    (97, 129),
5539    (98, 130),
5540    (99, 131),
5541    (100, 132),
5542    (101, 133),
5543    (102, 134),
5544    (103, 135),
5545    (104, 136),
5546    (105, 137),
5547    (106, 145),
5548    (107, 146),
5549    (108, 147),
5550    (109, 148),
5551    (110, 149),
5552    (111, 150),
5553    (112, 151),
5554    (113, 152),
5555    (114, 153),
5556    (115, 162),
5557    (116, 163),
5558    (117, 164),
5559    (118, 165),
5560    (119, 166),
5561    (120, 167),
5562    (121, 168),
5563    (122, 169),
5564    (123, 192),
5565    (124, 187),
5566    (125, 208),
5567    (126, 161),
5568    (127, 7),
5569    (128, 32),
5570    (129, 33),
5571    (130, 34),
5572    (131, 35),
5573    (132, 36),
5574    (133, 21),
5575    (134, 6),
5576    (135, 23),
5577    (136, 40),
5578    (137, 41),
5579    (138, 42),
5580    (139, 43),
5581    (140, 44),
5582    (141, 9),
5583    (142, 10),
5584    (143, 27),
5585    (144, 48),
5586    (145, 49),
5587    (146, 26),
5588    (147, 51),
5589    (148, 52),
5590    (149, 53),
5591    (150, 54),
5592    (151, 8),
5593    (152, 56),
5594    (153, 57),
5595    (154, 58),
5596    (155, 59),
5597    (156, 4),
5598    (157, 20),
5599    (158, 62),
5600    (159, 255),
5601    (160, 65),
5602    (161, 170),
5603    (162, 176),
5604    (163, 177),
5605    (164, 159),
5606    (165, 178),
5607    (166, 106),
5608    (167, 181),
5609    (168, 189),
5610    (169, 180),
5611    (170, 154),
5612    (171, 138),
5613    (172, 186),
5614    (173, 202),
5615    (174, 175),
5616    (175, 188),
5617    (176, 144),
5618    (177, 143),
5619    (178, 234),
5620    (179, 250),
5621    (180, 190),
5622    (181, 160),
5623    (182, 182),
5624    (183, 179),
5625    (184, 157),
5626    (185, 218),
5627    (186, 155),
5628    (187, 139),
5629    (188, 183),
5630    (189, 184),
5631    (190, 185),
5632    (191, 171),
5633    (192, 100),
5634    (193, 101),
5635    (194, 98),
5636    (195, 102),
5637    (196, 99),
5638    (197, 103),
5639    (198, 158),
5640    (199, 104),
5641    (200, 116),
5642    (201, 113),
5643    (202, 114),
5644    (203, 115),
5645    (204, 120),
5646    (205, 117),
5647    (206, 118),
5648    (207, 119),
5649    (208, 172),
5650    (209, 105),
5651    (210, 237),
5652    (211, 238),
5653    (212, 235),
5654    (213, 239),
5655    (214, 236),
5656    (215, 191),
5657    (216, 128),
5658    (217, 253),
5659    (218, 254),
5660    (219, 251),
5661    (220, 252),
5662    (221, 173),
5663    (222, 174),
5664    (223, 89),
5665    (224, 68),
5666    (225, 69),
5667    (226, 66),
5668    (227, 70),
5669    (228, 67),
5670    (229, 71),
5671    (230, 156),
5672    (231, 72),
5673    (232, 84),
5674    (233, 81),
5675    (234, 82),
5676    (235, 83),
5677    (236, 88),
5678    (237, 85),
5679    (238, 86),
5680    (239, 87),
5681    (240, 140),
5682    (241, 73),
5683    (242, 205),
5684    (243, 206),
5685    (244, 203),
5686    (245, 207),
5687    (246, 204),
5688    (247, 225),
5689    (248, 112),
5690    (249, 221),
5691    (250, 222),
5692    (251, 219),
5693    (252, 220),
5694    (253, 141),
5695    (254, 142),
5696    (255, 223),
5697];
5698
5699impl_ebcdic_encoder_and_decoder!(
5700    IBM850,
5701    "IBM850",
5702    IBM850Encoder,
5703    IBM850Decoder,
5704    IBM_850_ENCODE_TABLE,
5705    IBM_850_DECODE_TABLE
5706);
5707const IBM_850_DECODE_TABLE: [char; 256] = [
5708    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
5709    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
5710    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
5711    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
5712    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
5713    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
5714    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
5715    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
5716    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
5717    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
5718    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
5719    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
5720    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
5721    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
5722    '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
5723    '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{ec}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
5724    '\u{c6}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{fb}', '\u{f9}', '\u{ff}', '\u{d6}', '\u{dc}',
5725    '\u{f8}', '\u{a3}', '\u{d8}', '\u{d7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
5726    '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{ae}', '\u{ac}', '\u{bd}', '\u{bc}',
5727    '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
5728    '\u{c1}', '\u{c2}', '\u{c0}', '\u{a9}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
5729    '\u{a2}', '\u{a5}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
5730    '\u{253c}', '\u{e3}', '\u{c3}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
5731    '\u{2550}', '\u{256c}', '\u{a4}', '\u{f0}', '\u{d0}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{131}',
5732    '\u{cd}', '\u{ce}', '\u{cf}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}', '\u{a6}',
5733    '\u{cc}', '\u{2580}', '\u{d3}', '\u{df}', '\u{d4}', '\u{d2}', '\u{f5}', '\u{d5}', '\u{b5}',
5734    '\u{fe}', '\u{de}', '\u{da}', '\u{db}', '\u{d9}', '\u{fd}', '\u{dd}', '\u{af}', '\u{b4}',
5735    '\u{ad}', '\u{b1}', '\u{2017}', '\u{be}', '\u{b6}', '\u{a7}', '\u{f7}', '\u{b8}', '\u{b0}',
5736    '\u{a8}', '\u{b7}', '\u{b9}', '\u{b3}', '\u{b2}', '\u{25a0}', '\u{a0}',
5737];
5738const IBM_850_ENCODE_TABLE: &[(u16, u8)] = &[
5739    (0, 0),
5740    (1, 1),
5741    (2, 2),
5742    (3, 3),
5743    (4, 4),
5744    (5, 5),
5745    (6, 6),
5746    (7, 7),
5747    (8, 8),
5748    (9, 9),
5749    (10, 10),
5750    (11, 11),
5751    (12, 12),
5752    (13, 13),
5753    (14, 14),
5754    (15, 15),
5755    (16, 16),
5756    (17, 17),
5757    (18, 18),
5758    (19, 19),
5759    (20, 20),
5760    (21, 21),
5761    (22, 22),
5762    (23, 23),
5763    (24, 24),
5764    (25, 25),
5765    (26, 127),
5766    (27, 27),
5767    (28, 26),
5768    (29, 29),
5769    (30, 30),
5770    (31, 31),
5771    (32, 32),
5772    (33, 33),
5773    (34, 34),
5774    (35, 35),
5775    (36, 36),
5776    (37, 37),
5777    (38, 38),
5778    (39, 39),
5779    (40, 40),
5780    (41, 41),
5781    (42, 42),
5782    (43, 43),
5783    (44, 44),
5784    (45, 45),
5785    (46, 46),
5786    (47, 47),
5787    (48, 48),
5788    (49, 49),
5789    (50, 50),
5790    (51, 51),
5791    (52, 52),
5792    (53, 53),
5793    (54, 54),
5794    (55, 55),
5795    (56, 56),
5796    (57, 57),
5797    (58, 58),
5798    (59, 59),
5799    (60, 60),
5800    (61, 61),
5801    (62, 62),
5802    (63, 63),
5803    (64, 64),
5804    (65, 65),
5805    (66, 66),
5806    (67, 67),
5807    (68, 68),
5808    (69, 69),
5809    (70, 70),
5810    (71, 71),
5811    (72, 72),
5812    (73, 73),
5813    (74, 74),
5814    (75, 75),
5815    (76, 76),
5816    (77, 77),
5817    (78, 78),
5818    (79, 79),
5819    (80, 80),
5820    (81, 81),
5821    (82, 82),
5822    (83, 83),
5823    (84, 84),
5824    (85, 85),
5825    (86, 86),
5826    (87, 87),
5827    (88, 88),
5828    (89, 89),
5829    (90, 90),
5830    (91, 91),
5831    (92, 92),
5832    (93, 93),
5833    (94, 94),
5834    (95, 95),
5835    (96, 96),
5836    (97, 97),
5837    (98, 98),
5838    (99, 99),
5839    (100, 100),
5840    (101, 101),
5841    (102, 102),
5842    (103, 103),
5843    (104, 104),
5844    (105, 105),
5845    (106, 106),
5846    (107, 107),
5847    (108, 108),
5848    (109, 109),
5849    (110, 110),
5850    (111, 111),
5851    (112, 112),
5852    (113, 113),
5853    (114, 114),
5854    (115, 115),
5855    (116, 116),
5856    (117, 117),
5857    (118, 118),
5858    (119, 119),
5859    (120, 120),
5860    (121, 121),
5861    (122, 122),
5862    (123, 123),
5863    (124, 124),
5864    (125, 125),
5865    (126, 126),
5866    (127, 28),
5867    (160, 255),
5868    (161, 173),
5869    (162, 189),
5870    (163, 156),
5871    (164, 207),
5872    (165, 190),
5873    (166, 221),
5874    (167, 245),
5875    (168, 249),
5876    (169, 184),
5877    (170, 166),
5878    (171, 174),
5879    (172, 170),
5880    (173, 240),
5881    (174, 169),
5882    (175, 238),
5883    (176, 248),
5884    (177, 241),
5885    (178, 253),
5886    (179, 252),
5887    (180, 239),
5888    (181, 230),
5889    (182, 244),
5890    (183, 250),
5891    (184, 247),
5892    (185, 251),
5893    (186, 167),
5894    (187, 175),
5895    (188, 172),
5896    (189, 171),
5897    (190, 243),
5898    (191, 168),
5899    (192, 183),
5900    (193, 181),
5901    (194, 182),
5902    (195, 199),
5903    (196, 142),
5904    (197, 143),
5905    (198, 146),
5906    (199, 128),
5907    (200, 212),
5908    (201, 144),
5909    (202, 210),
5910    (203, 211),
5911    (204, 222),
5912    (205, 214),
5913    (206, 215),
5914    (207, 216),
5915    (208, 209),
5916    (209, 165),
5917    (210, 227),
5918    (211, 224),
5919    (212, 226),
5920    (213, 229),
5921    (214, 153),
5922    (215, 158),
5923    (216, 157),
5924    (217, 235),
5925    (218, 233),
5926    (219, 234),
5927    (220, 154),
5928    (221, 237),
5929    (222, 232),
5930    (223, 225),
5931    (224, 133),
5932    (225, 160),
5933    (226, 131),
5934    (227, 198),
5935    (228, 132),
5936    (229, 134),
5937    (230, 145),
5938    (231, 135),
5939    (232, 138),
5940    (233, 130),
5941    (234, 136),
5942    (235, 137),
5943    (236, 141),
5944    (237, 161),
5945    (238, 140),
5946    (239, 139),
5947    (240, 208),
5948    (241, 164),
5949    (242, 149),
5950    (243, 162),
5951    (244, 147),
5952    (245, 228),
5953    (246, 148),
5954    (247, 246),
5955    (248, 155),
5956    (249, 151),
5957    (250, 163),
5958    (251, 150),
5959    (252, 129),
5960    (253, 236),
5961    (254, 231),
5962    (255, 152),
5963    (305, 213),
5964    (402, 159),
5965    (8215, 242),
5966    (9472, 196),
5967    (9474, 179),
5968    (9484, 218),
5969    (9488, 191),
5970    (9492, 192),
5971    (9496, 217),
5972    (9500, 195),
5973    (9508, 180),
5974    (9516, 194),
5975    (9524, 193),
5976    (9532, 197),
5977    (9552, 205),
5978    (9553, 186),
5979    (9556, 201),
5980    (9559, 187),
5981    (9562, 200),
5982    (9565, 188),
5983    (9568, 204),
5984    (9571, 185),
5985    (9574, 203),
5986    (9577, 202),
5987    (9580, 206),
5988    (9600, 223),
5989    (9604, 220),
5990    (9608, 219),
5991    (9617, 176),
5992    (9618, 177),
5993    (9619, 178),
5994    (9632, 254),
5995];
5996
5997impl_ebcdic_encoder_and_decoder!(
5998    IBM851,
5999    "IBM851",
6000    IBM851Encoder,
6001    IBM851Decoder,
6002    IBM_851_ENCODE_TABLE,
6003    IBM_851_DECODE_TABLE
6004);
6005const IBM_851_DECODE_TABLE: [char; 256] = [
6006    '\u{0}',
6007    '\u{1}',
6008    '\u{2}',
6009    '\u{3}',
6010    '\u{4}',
6011    '\u{5}',
6012    '\u{6}',
6013    '\u{7}',
6014    '\u{8}',
6015    '\u{9}',
6016    '\u{a}',
6017    '\u{b}',
6018    '\u{c}',
6019    '\u{d}',
6020    '\u{e}',
6021    '\u{f}',
6022    '\u{10}',
6023    '\u{11}',
6024    '\u{12}',
6025    '\u{13}',
6026    '\u{14}',
6027    '\u{15}',
6028    '\u{16}',
6029    '\u{17}',
6030    '\u{18}',
6031    '\u{19}',
6032    '\u{1c}',
6033    '\u{1b}',
6034    '\u{7f}',
6035    '\u{1d}',
6036    '\u{1e}',
6037    '\u{1f}',
6038    '\u{20}',
6039    '\u{21}',
6040    '\u{22}',
6041    '\u{23}',
6042    '\u{24}',
6043    '\u{25}',
6044    '\u{26}',
6045    '\u{27}',
6046    '\u{28}',
6047    '\u{29}',
6048    '\u{2a}',
6049    '\u{2b}',
6050    '\u{2c}',
6051    '\u{2d}',
6052    '\u{2e}',
6053    '\u{2f}',
6054    '\u{30}',
6055    '\u{31}',
6056    '\u{32}',
6057    '\u{33}',
6058    '\u{34}',
6059    '\u{35}',
6060    '\u{36}',
6061    '\u{37}',
6062    '\u{38}',
6063    '\u{39}',
6064    '\u{3a}',
6065    '\u{3b}',
6066    '\u{3c}',
6067    '\u{3d}',
6068    '\u{3e}',
6069    '\u{3f}',
6070    '\u{40}',
6071    '\u{41}',
6072    '\u{42}',
6073    '\u{43}',
6074    '\u{44}',
6075    '\u{45}',
6076    '\u{46}',
6077    '\u{47}',
6078    '\u{48}',
6079    '\u{49}',
6080    '\u{4a}',
6081    '\u{4b}',
6082    '\u{4c}',
6083    '\u{4d}',
6084    '\u{4e}',
6085    '\u{4f}',
6086    '\u{50}',
6087    '\u{51}',
6088    '\u{52}',
6089    '\u{53}',
6090    '\u{54}',
6091    '\u{55}',
6092    '\u{56}',
6093    '\u{57}',
6094    '\u{58}',
6095    '\u{59}',
6096    '\u{5a}',
6097    '\u{5b}',
6098    '\u{5c}',
6099    '\u{5d}',
6100    '\u{5e}',
6101    '\u{5f}',
6102    '\u{60}',
6103    '\u{61}',
6104    '\u{62}',
6105    '\u{63}',
6106    '\u{64}',
6107    '\u{65}',
6108    '\u{66}',
6109    '\u{67}',
6110    '\u{68}',
6111    '\u{69}',
6112    '\u{6a}',
6113    '\u{6b}',
6114    '\u{6c}',
6115    '\u{6d}',
6116    '\u{6e}',
6117    '\u{6f}',
6118    '\u{70}',
6119    '\u{71}',
6120    '\u{72}',
6121    '\u{73}',
6122    '\u{74}',
6123    '\u{75}',
6124    '\u{76}',
6125    '\u{77}',
6126    '\u{78}',
6127    '\u{79}',
6128    '\u{7a}',
6129    '\u{7b}',
6130    '\u{7c}',
6131    '\u{7d}',
6132    '\u{7e}',
6133    '\u{1a}',
6134    '\u{c7}',
6135    '\u{fc}',
6136    '\u{e9}',
6137    '\u{e2}',
6138    '\u{e4}',
6139    '\u{e0}',
6140    '\u{386}',
6141    '\u{e7}',
6142    '\u{ea}',
6143    '\u{eb}',
6144    '\u{e8}',
6145    '\u{ef}',
6146    '\u{ee}',
6147    '\u{388}',
6148    '\u{c4}',
6149    '\u{389}',
6150    '\u{38a}',
6151    char::REPLACEMENT_CHARACTER,
6152    '\u{38c}',
6153    '\u{f4}',
6154    '\u{f6}',
6155    '\u{38e}',
6156    '\u{fb}',
6157    '\u{f9}',
6158    '\u{38f}',
6159    '\u{d6}',
6160    '\u{dc}',
6161    '\u{3ac}',
6162    '\u{a3}',
6163    '\u{3ad}',
6164    '\u{3ae}',
6165    '\u{3af}',
6166    '\u{3ca}',
6167    '\u{390}',
6168    '\u{3cc}',
6169    '\u{3cd}',
6170    '\u{391}',
6171    '\u{392}',
6172    '\u{393}',
6173    '\u{394}',
6174    '\u{395}',
6175    '\u{396}',
6176    '\u{397}',
6177    '\u{bd}',
6178    '\u{398}',
6179    '\u{399}',
6180    '\u{ab}',
6181    '\u{bb}',
6182    '\u{2591}',
6183    '\u{2592}',
6184    '\u{2593}',
6185    '\u{2502}',
6186    '\u{2524}',
6187    '\u{39a}',
6188    '\u{39b}',
6189    '\u{39c}',
6190    '\u{39d}',
6191    '\u{2563}',
6192    '\u{2551}',
6193    '\u{2557}',
6194    '\u{255d}',
6195    '\u{39e}',
6196    '\u{39f}',
6197    '\u{2510}',
6198    '\u{2514}',
6199    '\u{2534}',
6200    '\u{252c}',
6201    '\u{251c}',
6202    '\u{2500}',
6203    '\u{253c}',
6204    '\u{3a0}',
6205    '\u{3a1}',
6206    '\u{255a}',
6207    '\u{2554}',
6208    '\u{2569}',
6209    '\u{2566}',
6210    '\u{2560}',
6211    '\u{2550}',
6212    '\u{256c}',
6213    '\u{3a3}',
6214    '\u{3a4}',
6215    '\u{3a5}',
6216    '\u{3a6}',
6217    '\u{3a7}',
6218    '\u{3a8}',
6219    '\u{3a9}',
6220    '\u{3b1}',
6221    '\u{3b2}',
6222    '\u{3b3}',
6223    '\u{2518}',
6224    '\u{250c}',
6225    '\u{2588}',
6226    '\u{2584}',
6227    '\u{3b4}',
6228    '\u{3b5}',
6229    '\u{2580}',
6230    '\u{3b6}',
6231    '\u{3b7}',
6232    '\u{3b8}',
6233    '\u{3b9}',
6234    '\u{3ba}',
6235    '\u{3bb}',
6236    '\u{3bc}',
6237    '\u{3bd}',
6238    '\u{3be}',
6239    '\u{3bf}',
6240    '\u{3c0}',
6241    '\u{3c1}',
6242    '\u{3c3}',
6243    '\u{3c2}',
6244    '\u{3c4}',
6245    '\u{b4}',
6246    '\u{ad}',
6247    '\u{b1}',
6248    '\u{3c5}',
6249    '\u{3c6}',
6250    '\u{3c7}',
6251    '\u{a7}',
6252    '\u{3c8}',
6253    '\u{b8}',
6254    '\u{b0}',
6255    '\u{a8}',
6256    '\u{3c9}',
6257    '\u{3cb}',
6258    '\u{3b0}',
6259    '\u{3ce}',
6260    '\u{25a0}',
6261    '\u{a0}',
6262];
6263const IBM_851_ENCODE_TABLE: &[(u16, u8)] = &[
6264    (0, 0),
6265    (1, 1),
6266    (2, 2),
6267    (3, 3),
6268    (4, 4),
6269    (5, 5),
6270    (6, 6),
6271    (7, 7),
6272    (8, 8),
6273    (9, 9),
6274    (10, 10),
6275    (11, 11),
6276    (12, 12),
6277    (13, 13),
6278    (14, 14),
6279    (15, 15),
6280    (16, 16),
6281    (17, 17),
6282    (18, 18),
6283    (19, 19),
6284    (20, 20),
6285    (21, 21),
6286    (22, 22),
6287    (23, 23),
6288    (24, 24),
6289    (25, 25),
6290    (26, 127),
6291    (27, 27),
6292    (28, 26),
6293    (29, 29),
6294    (30, 30),
6295    (31, 31),
6296    (32, 32),
6297    (33, 33),
6298    (34, 34),
6299    (35, 35),
6300    (36, 36),
6301    (37, 37),
6302    (38, 38),
6303    (39, 39),
6304    (40, 40),
6305    (41, 41),
6306    (42, 42),
6307    (43, 43),
6308    (44, 44),
6309    (45, 45),
6310    (46, 46),
6311    (47, 47),
6312    (48, 48),
6313    (49, 49),
6314    (50, 50),
6315    (51, 51),
6316    (52, 52),
6317    (53, 53),
6318    (54, 54),
6319    (55, 55),
6320    (56, 56),
6321    (57, 57),
6322    (58, 58),
6323    (59, 59),
6324    (60, 60),
6325    (61, 61),
6326    (62, 62),
6327    (63, 63),
6328    (64, 64),
6329    (65, 65),
6330    (66, 66),
6331    (67, 67),
6332    (68, 68),
6333    (69, 69),
6334    (70, 70),
6335    (71, 71),
6336    (72, 72),
6337    (73, 73),
6338    (74, 74),
6339    (75, 75),
6340    (76, 76),
6341    (77, 77),
6342    (78, 78),
6343    (79, 79),
6344    (80, 80),
6345    (81, 81),
6346    (82, 82),
6347    (83, 83),
6348    (84, 84),
6349    (85, 85),
6350    (86, 86),
6351    (87, 87),
6352    (88, 88),
6353    (89, 89),
6354    (90, 90),
6355    (91, 91),
6356    (92, 92),
6357    (93, 93),
6358    (94, 94),
6359    (95, 95),
6360    (96, 96),
6361    (97, 97),
6362    (98, 98),
6363    (99, 99),
6364    (100, 100),
6365    (101, 101),
6366    (102, 102),
6367    (103, 103),
6368    (104, 104),
6369    (105, 105),
6370    (106, 106),
6371    (107, 107),
6372    (108, 108),
6373    (109, 109),
6374    (110, 110),
6375    (111, 111),
6376    (112, 112),
6377    (113, 113),
6378    (114, 114),
6379    (115, 115),
6380    (116, 116),
6381    (117, 117),
6382    (118, 118),
6383    (119, 119),
6384    (120, 120),
6385    (121, 121),
6386    (122, 122),
6387    (123, 123),
6388    (124, 124),
6389    (125, 125),
6390    (126, 126),
6391    (127, 28),
6392    (160, 255),
6393    (163, 156),
6394    (167, 245),
6395    (168, 249),
6396    (171, 174),
6397    (173, 240),
6398    (176, 248),
6399    (177, 241),
6400    (180, 239),
6401    (184, 247),
6402    (187, 175),
6403    (189, 171),
6404    (196, 142),
6405    (199, 128),
6406    (214, 153),
6407    (220, 154),
6408    (224, 133),
6409    (226, 131),
6410    (228, 132),
6411    (231, 135),
6412    (232, 138),
6413    (233, 130),
6414    (234, 136),
6415    (235, 137),
6416    (238, 140),
6417    (239, 139),
6418    (244, 147),
6419    (246, 148),
6420    (249, 151),
6421    (251, 150),
6422    (252, 129),
6423    (902, 134),
6424    (904, 141),
6425    (905, 143),
6426    (906, 144),
6427    (908, 146),
6428    (910, 149),
6429    (911, 152),
6430    (912, 161),
6431    (913, 164),
6432    (914, 165),
6433    (915, 166),
6434    (916, 167),
6435    (917, 168),
6436    (918, 169),
6437    (919, 170),
6438    (920, 172),
6439    (921, 173),
6440    (922, 181),
6441    (923, 182),
6442    (924, 183),
6443    (925, 184),
6444    (926, 189),
6445    (927, 190),
6446    (928, 198),
6447    (929, 199),
6448    (931, 207),
6449    (932, 208),
6450    (933, 209),
6451    (934, 210),
6452    (935, 211),
6453    (936, 212),
6454    (937, 213),
6455    (940, 155),
6456    (941, 157),
6457    (942, 158),
6458    (943, 159),
6459    (944, 252),
6460    (945, 214),
6461    (946, 215),
6462    (947, 216),
6463    (948, 221),
6464    (949, 222),
6465    (950, 224),
6466    (951, 225),
6467    (952, 226),
6468    (953, 227),
6469    (954, 228),
6470    (955, 229),
6471    (956, 230),
6472    (957, 231),
6473    (958, 232),
6474    (959, 233),
6475    (960, 234),
6476    (961, 235),
6477    (962, 237),
6478    (963, 236),
6479    (964, 238),
6480    (965, 242),
6481    (966, 243),
6482    (967, 244),
6483    (968, 246),
6484    (969, 250),
6485    (970, 160),
6486    (971, 251),
6487    (972, 162),
6488    (973, 163),
6489    (974, 253),
6490    (9472, 196),
6491    (9474, 179),
6492    (9484, 218),
6493    (9488, 191),
6494    (9492, 192),
6495    (9496, 217),
6496    (9500, 195),
6497    (9508, 180),
6498    (9516, 194),
6499    (9524, 193),
6500    (9532, 197),
6501    (9552, 205),
6502    (9553, 186),
6503    (9556, 201),
6504    (9559, 187),
6505    (9562, 200),
6506    (9565, 188),
6507    (9568, 204),
6508    (9571, 185),
6509    (9574, 203),
6510    (9577, 202),
6511    (9580, 206),
6512    (9600, 223),
6513    (9604, 220),
6514    (9608, 219),
6515    (9617, 176),
6516    (9618, 177),
6517    (9619, 178),
6518    (9632, 254),
6519];
6520
6521impl_ebcdic_encoder_and_decoder!(
6522    IBM852,
6523    "IBM852",
6524    IBM852Encoder,
6525    IBM852Decoder,
6526    IBM_852_ENCODE_TABLE,
6527    IBM_852_DECODE_TABLE
6528);
6529const IBM_852_DECODE_TABLE: [char; 256] = [
6530    '\u{0}',
6531    '\u{1}',
6532    '\u{2}',
6533    '\u{3}',
6534    '\u{4}',
6535    '\u{5}',
6536    '\u{6}',
6537    '\u{7}',
6538    '\u{8}',
6539    '\u{9}',
6540    '\u{a}',
6541    '\u{b}',
6542    '\u{c}',
6543    '\u{d}',
6544    '\u{e}',
6545    '\u{f}',
6546    '\u{10}',
6547    '\u{11}',
6548    '\u{12}',
6549    '\u{13}',
6550    '\u{14}',
6551    '\u{15}',
6552    '\u{16}',
6553    '\u{17}',
6554    '\u{18}',
6555    '\u{19}',
6556    '\u{1c}',
6557    '\u{1b}',
6558    '\u{7f}',
6559    '\u{1d}',
6560    '\u{1e}',
6561    '\u{1f}',
6562    '\u{20}',
6563    '\u{21}',
6564    '\u{22}',
6565    '\u{23}',
6566    '\u{24}',
6567    '\u{25}',
6568    '\u{26}',
6569    '\u{27}',
6570    '\u{28}',
6571    '\u{29}',
6572    '\u{2a}',
6573    '\u{2b}',
6574    '\u{2c}',
6575    '\u{2d}',
6576    '\u{2e}',
6577    '\u{2f}',
6578    '\u{30}',
6579    '\u{31}',
6580    '\u{32}',
6581    '\u{33}',
6582    '\u{34}',
6583    '\u{35}',
6584    '\u{36}',
6585    '\u{37}',
6586    '\u{38}',
6587    '\u{39}',
6588    '\u{3a}',
6589    '\u{3b}',
6590    '\u{3c}',
6591    '\u{3d}',
6592    '\u{3e}',
6593    '\u{3f}',
6594    '\u{40}',
6595    '\u{41}',
6596    '\u{42}',
6597    '\u{43}',
6598    '\u{44}',
6599    '\u{45}',
6600    '\u{46}',
6601    '\u{47}',
6602    '\u{48}',
6603    '\u{49}',
6604    '\u{4a}',
6605    '\u{4b}',
6606    '\u{4c}',
6607    '\u{4d}',
6608    '\u{4e}',
6609    '\u{4f}',
6610    '\u{50}',
6611    '\u{51}',
6612    '\u{52}',
6613    '\u{53}',
6614    '\u{54}',
6615    '\u{55}',
6616    '\u{56}',
6617    '\u{57}',
6618    '\u{58}',
6619    '\u{59}',
6620    '\u{5a}',
6621    '\u{5b}',
6622    '\u{5c}',
6623    '\u{5d}',
6624    '\u{5e}',
6625    '\u{5f}',
6626    '\u{60}',
6627    '\u{61}',
6628    '\u{62}',
6629    '\u{63}',
6630    '\u{64}',
6631    '\u{65}',
6632    '\u{66}',
6633    '\u{67}',
6634    '\u{68}',
6635    '\u{69}',
6636    '\u{6a}',
6637    '\u{6b}',
6638    '\u{6c}',
6639    '\u{6d}',
6640    '\u{6e}',
6641    '\u{6f}',
6642    '\u{70}',
6643    '\u{71}',
6644    '\u{72}',
6645    '\u{73}',
6646    '\u{74}',
6647    '\u{75}',
6648    '\u{76}',
6649    '\u{77}',
6650    '\u{78}',
6651    '\u{79}',
6652    '\u{7a}',
6653    '\u{7b}',
6654    '\u{7c}',
6655    '\u{7d}',
6656    '\u{7e}',
6657    '\u{1a}',
6658    '\u{c7}',
6659    '\u{fc}',
6660    '\u{e9}',
6661    '\u{e2}',
6662    '\u{e4}',
6663    '\u{16f}',
6664    '\u{107}',
6665    '\u{e7}',
6666    '\u{142}',
6667    '\u{eb}',
6668    '\u{150}',
6669    '\u{151}',
6670    '\u{ee}',
6671    '\u{179}',
6672    '\u{c4}',
6673    '\u{106}',
6674    '\u{c9}',
6675    '\u{139}',
6676    '\u{13a}',
6677    '\u{f4}',
6678    '\u{f6}',
6679    '\u{13d}',
6680    '\u{13e}',
6681    '\u{15a}',
6682    '\u{15b}',
6683    '\u{d6}',
6684    '\u{dc}',
6685    '\u{164}',
6686    '\u{165}',
6687    '\u{141}',
6688    '\u{d7}',
6689    '\u{10d}',
6690    '\u{e1}',
6691    '\u{ed}',
6692    '\u{f3}',
6693    '\u{fa}',
6694    '\u{104}',
6695    '\u{105}',
6696    '\u{17d}',
6697    '\u{17e}',
6698    '\u{118}',
6699    '\u{119}',
6700    char::REPLACEMENT_CHARACTER,
6701    '\u{17a}',
6702    '\u{10c}',
6703    '\u{15f}',
6704    '\u{ab}',
6705    '\u{bb}',
6706    '\u{2591}',
6707    '\u{2592}',
6708    '\u{2593}',
6709    '\u{2502}',
6710    '\u{2524}',
6711    '\u{c1}',
6712    '\u{c2}',
6713    '\u{11a}',
6714    '\u{15e}',
6715    '\u{2563}',
6716    '\u{2551}',
6717    '\u{2557}',
6718    '\u{255d}',
6719    '\u{17b}',
6720    '\u{17c}',
6721    '\u{2510}',
6722    '\u{2514}',
6723    '\u{2534}',
6724    '\u{252c}',
6725    '\u{251c}',
6726    '\u{2500}',
6727    '\u{253c}',
6728    '\u{102}',
6729    '\u{103}',
6730    '\u{255a}',
6731    '\u{2554}',
6732    '\u{2569}',
6733    '\u{2566}',
6734    '\u{2560}',
6735    '\u{2550}',
6736    '\u{256c}',
6737    '\u{a4}',
6738    '\u{111}',
6739    '\u{110}',
6740    '\u{10e}',
6741    '\u{cb}',
6742    '\u{10f}',
6743    '\u{147}',
6744    '\u{cd}',
6745    '\u{ce}',
6746    '\u{11b}',
6747    '\u{2518}',
6748    '\u{250c}',
6749    '\u{2588}',
6750    '\u{2584}',
6751    '\u{162}',
6752    '\u{16e}',
6753    '\u{2580}',
6754    '\u{d3}',
6755    '\u{df}',
6756    '\u{d4}',
6757    '\u{143}',
6758    '\u{144}',
6759    '\u{148}',
6760    '\u{160}',
6761    '\u{161}',
6762    '\u{154}',
6763    '\u{da}',
6764    '\u{155}',
6765    '\u{170}',
6766    '\u{fd}',
6767    '\u{dd}',
6768    '\u{163}',
6769    '\u{b4}',
6770    '\u{ad}',
6771    '\u{2dd}',
6772    '\u{2db}',
6773    '\u{2c7}',
6774    '\u{2d8}',
6775    '\u{a7}',
6776    '\u{f7}',
6777    '\u{b8}',
6778    '\u{b0}',
6779    '\u{a8}',
6780    '\u{2d9}',
6781    '\u{171}',
6782    '\u{158}',
6783    '\u{159}',
6784    '\u{25a0}',
6785    '\u{a0}',
6786];
6787const IBM_852_ENCODE_TABLE: &[(u16, u8)] = &[
6788    (0, 0),
6789    (1, 1),
6790    (2, 2),
6791    (3, 3),
6792    (4, 4),
6793    (5, 5),
6794    (6, 6),
6795    (7, 7),
6796    (8, 8),
6797    (9, 9),
6798    (10, 10),
6799    (11, 11),
6800    (12, 12),
6801    (13, 13),
6802    (14, 14),
6803    (15, 15),
6804    (16, 16),
6805    (17, 17),
6806    (18, 18),
6807    (19, 19),
6808    (20, 20),
6809    (21, 21),
6810    (22, 22),
6811    (23, 23),
6812    (24, 24),
6813    (25, 25),
6814    (26, 127),
6815    (27, 27),
6816    (28, 26),
6817    (29, 29),
6818    (30, 30),
6819    (31, 31),
6820    (32, 32),
6821    (33, 33),
6822    (34, 34),
6823    (35, 35),
6824    (36, 36),
6825    (37, 37),
6826    (38, 38),
6827    (39, 39),
6828    (40, 40),
6829    (41, 41),
6830    (42, 42),
6831    (43, 43),
6832    (44, 44),
6833    (45, 45),
6834    (46, 46),
6835    (47, 47),
6836    (48, 48),
6837    (49, 49),
6838    (50, 50),
6839    (51, 51),
6840    (52, 52),
6841    (53, 53),
6842    (54, 54),
6843    (55, 55),
6844    (56, 56),
6845    (57, 57),
6846    (58, 58),
6847    (59, 59),
6848    (60, 60),
6849    (61, 61),
6850    (62, 62),
6851    (63, 63),
6852    (64, 64),
6853    (65, 65),
6854    (66, 66),
6855    (67, 67),
6856    (68, 68),
6857    (69, 69),
6858    (70, 70),
6859    (71, 71),
6860    (72, 72),
6861    (73, 73),
6862    (74, 74),
6863    (75, 75),
6864    (76, 76),
6865    (77, 77),
6866    (78, 78),
6867    (79, 79),
6868    (80, 80),
6869    (81, 81),
6870    (82, 82),
6871    (83, 83),
6872    (84, 84),
6873    (85, 85),
6874    (86, 86),
6875    (87, 87),
6876    (88, 88),
6877    (89, 89),
6878    (90, 90),
6879    (91, 91),
6880    (92, 92),
6881    (93, 93),
6882    (94, 94),
6883    (95, 95),
6884    (96, 96),
6885    (97, 97),
6886    (98, 98),
6887    (99, 99),
6888    (100, 100),
6889    (101, 101),
6890    (102, 102),
6891    (103, 103),
6892    (104, 104),
6893    (105, 105),
6894    (106, 106),
6895    (107, 107),
6896    (108, 108),
6897    (109, 109),
6898    (110, 110),
6899    (111, 111),
6900    (112, 112),
6901    (113, 113),
6902    (114, 114),
6903    (115, 115),
6904    (116, 116),
6905    (117, 117),
6906    (118, 118),
6907    (119, 119),
6908    (120, 120),
6909    (121, 121),
6910    (122, 122),
6911    (123, 123),
6912    (124, 124),
6913    (125, 125),
6914    (126, 126),
6915    (127, 28),
6916    (160, 255),
6917    (164, 207),
6918    (167, 245),
6919    (168, 249),
6920    (171, 174),
6921    (173, 240),
6922    (176, 248),
6923    (180, 239),
6924    (184, 247),
6925    (187, 175),
6926    (193, 181),
6927    (194, 182),
6928    (196, 142),
6929    (199, 128),
6930    (201, 144),
6931    (203, 211),
6932    (205, 214),
6933    (206, 215),
6934    (211, 224),
6935    (212, 226),
6936    (214, 153),
6937    (215, 158),
6938    (218, 233),
6939    (220, 154),
6940    (221, 237),
6941    (223, 225),
6942    (225, 160),
6943    (226, 131),
6944    (228, 132),
6945    (231, 135),
6946    (233, 130),
6947    (235, 137),
6948    (237, 161),
6949    (238, 140),
6950    (243, 162),
6951    (244, 147),
6952    (246, 148),
6953    (247, 246),
6954    (250, 163),
6955    (252, 129),
6956    (253, 236),
6957    (258, 198),
6958    (259, 199),
6959    (260, 164),
6960    (261, 165),
6961    (262, 143),
6962    (263, 134),
6963    (268, 172),
6964    (269, 159),
6965    (270, 210),
6966    (271, 212),
6967    (272, 209),
6968    (273, 208),
6969    (280, 168),
6970    (281, 169),
6971    (282, 183),
6972    (283, 216),
6973    (313, 145),
6974    (314, 146),
6975    (317, 149),
6976    (318, 150),
6977    (321, 157),
6978    (322, 136),
6979    (323, 227),
6980    (324, 228),
6981    (327, 213),
6982    (328, 229),
6983    (336, 138),
6984    (337, 139),
6985    (340, 232),
6986    (341, 234),
6987    (344, 252),
6988    (345, 253),
6989    (346, 151),
6990    (347, 152),
6991    (350, 184),
6992    (351, 173),
6993    (352, 230),
6994    (353, 231),
6995    (354, 221),
6996    (355, 238),
6997    (356, 155),
6998    (357, 156),
6999    (366, 222),
7000    (367, 133),
7001    (368, 235),
7002    (369, 251),
7003    (377, 141),
7004    (378, 171),
7005    (379, 189),
7006    (380, 190),
7007    (381, 166),
7008    (382, 167),
7009    (711, 243),
7010    (728, 244),
7011    (729, 250),
7012    (731, 242),
7013    (733, 241),
7014    (9472, 196),
7015    (9474, 179),
7016    (9484, 218),
7017    (9488, 191),
7018    (9492, 192),
7019    (9496, 217),
7020    (9500, 195),
7021    (9508, 180),
7022    (9516, 194),
7023    (9524, 193),
7024    (9532, 197),
7025    (9552, 205),
7026    (9553, 186),
7027    (9556, 201),
7028    (9559, 187),
7029    (9562, 200),
7030    (9565, 188),
7031    (9568, 204),
7032    (9571, 185),
7033    (9574, 203),
7034    (9577, 202),
7035    (9580, 206),
7036    (9600, 223),
7037    (9604, 220),
7038    (9608, 219),
7039    (9617, 176),
7040    (9618, 177),
7041    (9619, 178),
7042    (9632, 254),
7043];
7044
7045impl_ebcdic_encoder_and_decoder!(
7046    IBM855,
7047    "IBM855",
7048    IBM855Encoder,
7049    IBM855Decoder,
7050    IBM_855_ENCODE_TABLE,
7051    IBM_855_DECODE_TABLE
7052);
7053const IBM_855_DECODE_TABLE: [char; 256] = [
7054    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
7055    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
7056    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
7057    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
7058    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
7059    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
7060    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
7061    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
7062    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
7063    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
7064    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
7065    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
7066    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
7067    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
7068    '\u{452}', '\u{402}', '\u{453}', '\u{403}', '\u{451}', '\u{401}', '\u{454}', '\u{404}',
7069    '\u{455}', '\u{405}', '\u{456}', '\u{406}', '\u{457}', '\u{407}', '\u{458}', '\u{408}',
7070    '\u{459}', '\u{409}', '\u{45a}', '\u{40a}', '\u{45b}', '\u{40b}', '\u{45c}', '\u{40c}',
7071    '\u{45e}', '\u{40e}', '\u{45f}', '\u{40f}', '\u{44e}', '\u{42e}', '\u{44a}', '\u{42a}',
7072    '\u{430}', '\u{410}', '\u{431}', '\u{411}', '\u{446}', '\u{426}', '\u{434}', '\u{414}',
7073    '\u{435}', '\u{415}', '\u{444}', '\u{424}', '\u{433}', '\u{413}', '\u{ab}', '\u{bb}',
7074    '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}', '\u{445}', '\u{425}', '\u{438}',
7075    '\u{418}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}', '\u{439}', '\u{419}', '\u{2510}',
7076    '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}', '\u{253c}', '\u{43a}', '\u{41a}',
7077    '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}', '\u{2550}', '\u{256c}', '\u{a4}',
7078    '\u{43b}', '\u{41b}', '\u{43c}', '\u{41c}', '\u{43d}', '\u{41d}', '\u{43e}', '\u{41e}',
7079    '\u{43f}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}', '\u{41f}', '\u{44f}', '\u{2580}',
7080    '\u{42f}', '\u{440}', '\u{420}', '\u{441}', '\u{421}', '\u{442}', '\u{422}', '\u{443}',
7081    '\u{423}', '\u{436}', '\u{416}', '\u{432}', '\u{412}', '\u{44c}', '\u{42c}', '\u{2116}',
7082    '\u{ad}', '\u{44b}', '\u{42b}', '\u{437}', '\u{417}', '\u{448}', '\u{428}', '\u{44d}',
7083    '\u{42d}', '\u{449}', '\u{429}', '\u{447}', '\u{427}', '\u{a7}', '\u{25a0}', '\u{a0}',
7084];
7085const IBM_855_ENCODE_TABLE: &[(u16, u8)] = &[
7086    (0, 0),
7087    (1, 1),
7088    (2, 2),
7089    (3, 3),
7090    (4, 4),
7091    (5, 5),
7092    (6, 6),
7093    (7, 7),
7094    (8, 8),
7095    (9, 9),
7096    (10, 10),
7097    (11, 11),
7098    (12, 12),
7099    (13, 13),
7100    (14, 14),
7101    (15, 15),
7102    (16, 16),
7103    (17, 17),
7104    (18, 18),
7105    (19, 19),
7106    (20, 20),
7107    (21, 21),
7108    (22, 22),
7109    (23, 23),
7110    (24, 24),
7111    (25, 25),
7112    (26, 127),
7113    (27, 27),
7114    (28, 26),
7115    (29, 29),
7116    (30, 30),
7117    (31, 31),
7118    (32, 32),
7119    (33, 33),
7120    (34, 34),
7121    (35, 35),
7122    (36, 36),
7123    (37, 37),
7124    (38, 38),
7125    (39, 39),
7126    (40, 40),
7127    (41, 41),
7128    (42, 42),
7129    (43, 43),
7130    (44, 44),
7131    (45, 45),
7132    (46, 46),
7133    (47, 47),
7134    (48, 48),
7135    (49, 49),
7136    (50, 50),
7137    (51, 51),
7138    (52, 52),
7139    (53, 53),
7140    (54, 54),
7141    (55, 55),
7142    (56, 56),
7143    (57, 57),
7144    (58, 58),
7145    (59, 59),
7146    (60, 60),
7147    (61, 61),
7148    (62, 62),
7149    (63, 63),
7150    (64, 64),
7151    (65, 65),
7152    (66, 66),
7153    (67, 67),
7154    (68, 68),
7155    (69, 69),
7156    (70, 70),
7157    (71, 71),
7158    (72, 72),
7159    (73, 73),
7160    (74, 74),
7161    (75, 75),
7162    (76, 76),
7163    (77, 77),
7164    (78, 78),
7165    (79, 79),
7166    (80, 80),
7167    (81, 81),
7168    (82, 82),
7169    (83, 83),
7170    (84, 84),
7171    (85, 85),
7172    (86, 86),
7173    (87, 87),
7174    (88, 88),
7175    (89, 89),
7176    (90, 90),
7177    (91, 91),
7178    (92, 92),
7179    (93, 93),
7180    (94, 94),
7181    (95, 95),
7182    (96, 96),
7183    (97, 97),
7184    (98, 98),
7185    (99, 99),
7186    (100, 100),
7187    (101, 101),
7188    (102, 102),
7189    (103, 103),
7190    (104, 104),
7191    (105, 105),
7192    (106, 106),
7193    (107, 107),
7194    (108, 108),
7195    (109, 109),
7196    (110, 110),
7197    (111, 111),
7198    (112, 112),
7199    (113, 113),
7200    (114, 114),
7201    (115, 115),
7202    (116, 116),
7203    (117, 117),
7204    (118, 118),
7205    (119, 119),
7206    (120, 120),
7207    (121, 121),
7208    (122, 122),
7209    (123, 123),
7210    (124, 124),
7211    (125, 125),
7212    (126, 126),
7213    (127, 28),
7214    (160, 255),
7215    (164, 207),
7216    (167, 253),
7217    (171, 174),
7218    (173, 240),
7219    (187, 175),
7220    (1025, 133),
7221    (1026, 129),
7222    (1027, 131),
7223    (1028, 135),
7224    (1029, 137),
7225    (1030, 139),
7226    (1031, 141),
7227    (1032, 143),
7228    (1033, 145),
7229    (1034, 147),
7230    (1035, 149),
7231    (1036, 151),
7232    (1038, 153),
7233    (1039, 155),
7234    (1040, 161),
7235    (1041, 163),
7236    (1042, 236),
7237    (1043, 173),
7238    (1044, 167),
7239    (1045, 169),
7240    (1046, 234),
7241    (1047, 244),
7242    (1048, 184),
7243    (1049, 190),
7244    (1050, 199),
7245    (1051, 209),
7246    (1052, 211),
7247    (1053, 213),
7248    (1054, 215),
7249    (1055, 221),
7250    (1056, 226),
7251    (1057, 228),
7252    (1058, 230),
7253    (1059, 232),
7254    (1060, 171),
7255    (1061, 182),
7256    (1062, 165),
7257    (1063, 252),
7258    (1064, 246),
7259    (1065, 250),
7260    (1066, 159),
7261    (1067, 242),
7262    (1068, 238),
7263    (1069, 248),
7264    (1070, 157),
7265    (1071, 224),
7266    (1072, 160),
7267    (1073, 162),
7268    (1074, 235),
7269    (1075, 172),
7270    (1076, 166),
7271    (1077, 168),
7272    (1078, 233),
7273    (1079, 243),
7274    (1080, 183),
7275    (1081, 189),
7276    (1082, 198),
7277    (1083, 208),
7278    (1084, 210),
7279    (1085, 212),
7280    (1086, 214),
7281    (1087, 216),
7282    (1088, 225),
7283    (1089, 227),
7284    (1090, 229),
7285    (1091, 231),
7286    (1092, 170),
7287    (1093, 181),
7288    (1094, 164),
7289    (1095, 251),
7290    (1096, 245),
7291    (1097, 249),
7292    (1098, 158),
7293    (1099, 241),
7294    (1100, 237),
7295    (1101, 247),
7296    (1102, 156),
7297    (1103, 222),
7298    (1105, 132),
7299    (1106, 128),
7300    (1107, 130),
7301    (1108, 134),
7302    (1109, 136),
7303    (1110, 138),
7304    (1111, 140),
7305    (1112, 142),
7306    (1113, 144),
7307    (1114, 146),
7308    (1115, 148),
7309    (1116, 150),
7310    (1118, 152),
7311    (1119, 154),
7312    (8470, 239),
7313    (9472, 196),
7314    (9474, 179),
7315    (9484, 218),
7316    (9488, 191),
7317    (9492, 192),
7318    (9496, 217),
7319    (9500, 195),
7320    (9508, 180),
7321    (9516, 194),
7322    (9524, 193),
7323    (9532, 197),
7324    (9552, 205),
7325    (9553, 186),
7326    (9556, 201),
7327    (9559, 187),
7328    (9562, 200),
7329    (9565, 188),
7330    (9568, 204),
7331    (9571, 185),
7332    (9574, 203),
7333    (9577, 202),
7334    (9580, 206),
7335    (9600, 223),
7336    (9604, 220),
7337    (9608, 219),
7338    (9617, 176),
7339    (9618, 177),
7340    (9619, 178),
7341    (9632, 254),
7342];
7343
7344impl_ebcdic_encoder_and_decoder!(
7345    IBM857,
7346    "IBM857",
7347    IBM857Encoder,
7348    IBM857Decoder,
7349    IBM_857_ENCODE_TABLE,
7350    IBM_857_DECODE_TABLE
7351);
7352const IBM_857_DECODE_TABLE: [char; 256] = [
7353    '\u{0}',
7354    '\u{1}',
7355    '\u{2}',
7356    '\u{3}',
7357    '\u{4}',
7358    '\u{5}',
7359    '\u{6}',
7360    '\u{7}',
7361    '\u{8}',
7362    '\u{9}',
7363    '\u{a}',
7364    '\u{b}',
7365    '\u{c}',
7366    '\u{d}',
7367    '\u{e}',
7368    '\u{f}',
7369    '\u{10}',
7370    '\u{11}',
7371    '\u{12}',
7372    '\u{13}',
7373    '\u{14}',
7374    '\u{15}',
7375    '\u{16}',
7376    '\u{17}',
7377    '\u{18}',
7378    '\u{19}',
7379    '\u{1c}',
7380    '\u{1b}',
7381    '\u{7f}',
7382    '\u{1d}',
7383    '\u{1e}',
7384    '\u{1f}',
7385    '\u{20}',
7386    '\u{21}',
7387    '\u{22}',
7388    '\u{23}',
7389    '\u{24}',
7390    '\u{25}',
7391    '\u{26}',
7392    '\u{27}',
7393    '\u{28}',
7394    '\u{29}',
7395    '\u{2a}',
7396    '\u{2b}',
7397    '\u{2c}',
7398    '\u{2d}',
7399    '\u{2e}',
7400    '\u{2f}',
7401    '\u{30}',
7402    '\u{31}',
7403    '\u{32}',
7404    '\u{33}',
7405    '\u{34}',
7406    '\u{35}',
7407    '\u{36}',
7408    '\u{37}',
7409    '\u{38}',
7410    '\u{39}',
7411    '\u{3a}',
7412    '\u{3b}',
7413    '\u{3c}',
7414    '\u{3d}',
7415    '\u{3e}',
7416    '\u{3f}',
7417    '\u{40}',
7418    '\u{41}',
7419    '\u{42}',
7420    '\u{43}',
7421    '\u{44}',
7422    '\u{45}',
7423    '\u{46}',
7424    '\u{47}',
7425    '\u{48}',
7426    '\u{49}',
7427    '\u{4a}',
7428    '\u{4b}',
7429    '\u{4c}',
7430    '\u{4d}',
7431    '\u{4e}',
7432    '\u{4f}',
7433    '\u{50}',
7434    '\u{51}',
7435    '\u{52}',
7436    '\u{53}',
7437    '\u{54}',
7438    '\u{55}',
7439    '\u{56}',
7440    '\u{57}',
7441    '\u{58}',
7442    '\u{59}',
7443    '\u{5a}',
7444    '\u{5b}',
7445    '\u{5c}',
7446    '\u{5d}',
7447    '\u{5e}',
7448    '\u{5f}',
7449    '\u{60}',
7450    '\u{61}',
7451    '\u{62}',
7452    '\u{63}',
7453    '\u{64}',
7454    '\u{65}',
7455    '\u{66}',
7456    '\u{67}',
7457    '\u{68}',
7458    '\u{69}',
7459    '\u{6a}',
7460    '\u{6b}',
7461    '\u{6c}',
7462    '\u{6d}',
7463    '\u{6e}',
7464    '\u{6f}',
7465    '\u{70}',
7466    '\u{71}',
7467    '\u{72}',
7468    '\u{73}',
7469    '\u{74}',
7470    '\u{75}',
7471    '\u{76}',
7472    '\u{77}',
7473    '\u{78}',
7474    '\u{79}',
7475    '\u{7a}',
7476    '\u{7b}',
7477    '\u{7c}',
7478    '\u{7d}',
7479    '\u{7e}',
7480    '\u{1a}',
7481    '\u{c7}',
7482    '\u{fc}',
7483    '\u{e9}',
7484    '\u{e2}',
7485    '\u{e4}',
7486    '\u{e0}',
7487    '\u{e5}',
7488    '\u{e7}',
7489    '\u{ea}',
7490    '\u{eb}',
7491    '\u{e8}',
7492    '\u{ef}',
7493    '\u{ee}',
7494    '\u{131}',
7495    '\u{c4}',
7496    '\u{c5}',
7497    '\u{c9}',
7498    '\u{e6}',
7499    '\u{c6}',
7500    '\u{f4}',
7501    '\u{f6}',
7502    '\u{f2}',
7503    '\u{fb}',
7504    '\u{f9}',
7505    '\u{130}',
7506    '\u{d6}',
7507    '\u{dc}',
7508    '\u{f8}',
7509    '\u{a3}',
7510    '\u{d8}',
7511    '\u{15e}',
7512    '\u{15f}',
7513    '\u{e1}',
7514    '\u{ed}',
7515    '\u{f3}',
7516    '\u{fa}',
7517    '\u{f1}',
7518    '\u{d1}',
7519    '\u{11e}',
7520    '\u{11f}',
7521    '\u{bf}',
7522    '\u{ae}',
7523    '\u{ac}',
7524    '\u{bd}',
7525    '\u{bc}',
7526    '\u{a1}',
7527    '\u{ab}',
7528    '\u{bb}',
7529    '\u{2591}',
7530    '\u{2592}',
7531    '\u{2593}',
7532    '\u{2502}',
7533    '\u{2524}',
7534    '\u{c1}',
7535    '\u{c2}',
7536    '\u{c0}',
7537    '\u{a9}',
7538    '\u{2563}',
7539    '\u{2551}',
7540    '\u{2557}',
7541    '\u{255d}',
7542    '\u{a2}',
7543    '\u{a5}',
7544    '\u{2510}',
7545    '\u{2514}',
7546    '\u{2534}',
7547    '\u{252c}',
7548    '\u{251c}',
7549    '\u{2500}',
7550    '\u{253c}',
7551    '\u{e3}',
7552    '\u{c3}',
7553    '\u{255a}',
7554    '\u{2554}',
7555    '\u{2569}',
7556    '\u{2566}',
7557    '\u{2560}',
7558    '\u{2550}',
7559    '\u{256c}',
7560    '\u{a4}',
7561    '\u{ba}',
7562    '\u{aa}',
7563    '\u{ca}',
7564    '\u{cb}',
7565    '\u{c8}',
7566    char::REPLACEMENT_CHARACTER,
7567    '\u{cd}',
7568    '\u{ce}',
7569    '\u{cf}',
7570    '\u{2518}',
7571    '\u{250c}',
7572    '\u{2588}',
7573    '\u{2584}',
7574    '\u{a6}',
7575    '\u{cc}',
7576    '\u{2580}',
7577    '\u{d3}',
7578    '\u{df}',
7579    '\u{d4}',
7580    '\u{d2}',
7581    '\u{f5}',
7582    '\u{d5}',
7583    '\u{b5}',
7584    char::REPLACEMENT_CHARACTER,
7585    '\u{d7}',
7586    '\u{da}',
7587    '\u{db}',
7588    '\u{d9}',
7589    '\u{ec}',
7590    '\u{ff}',
7591    '\u{af}',
7592    '\u{b4}',
7593    '\u{ad}',
7594    '\u{b1}',
7595    char::REPLACEMENT_CHARACTER,
7596    '\u{be}',
7597    '\u{b6}',
7598    '\u{a7}',
7599    '\u{f7}',
7600    '\u{b8}',
7601    '\u{b0}',
7602    '\u{a8}',
7603    '\u{b7}',
7604    '\u{b9}',
7605    '\u{b3}',
7606    '\u{b2}',
7607    '\u{25a0}',
7608    '\u{a0}',
7609];
7610const IBM_857_ENCODE_TABLE: &[(u16, u8)] = &[
7611    (0, 0),
7612    (1, 1),
7613    (2, 2),
7614    (3, 3),
7615    (4, 4),
7616    (5, 5),
7617    (6, 6),
7618    (7, 7),
7619    (8, 8),
7620    (9, 9),
7621    (10, 10),
7622    (11, 11),
7623    (12, 12),
7624    (13, 13),
7625    (14, 14),
7626    (15, 15),
7627    (16, 16),
7628    (17, 17),
7629    (18, 18),
7630    (19, 19),
7631    (20, 20),
7632    (21, 21),
7633    (22, 22),
7634    (23, 23),
7635    (24, 24),
7636    (25, 25),
7637    (26, 127),
7638    (27, 27),
7639    (28, 26),
7640    (29, 29),
7641    (30, 30),
7642    (31, 31),
7643    (32, 32),
7644    (33, 33),
7645    (34, 34),
7646    (35, 35),
7647    (36, 36),
7648    (37, 37),
7649    (38, 38),
7650    (39, 39),
7651    (40, 40),
7652    (41, 41),
7653    (42, 42),
7654    (43, 43),
7655    (44, 44),
7656    (45, 45),
7657    (46, 46),
7658    (47, 47),
7659    (48, 48),
7660    (49, 49),
7661    (50, 50),
7662    (51, 51),
7663    (52, 52),
7664    (53, 53),
7665    (54, 54),
7666    (55, 55),
7667    (56, 56),
7668    (57, 57),
7669    (58, 58),
7670    (59, 59),
7671    (60, 60),
7672    (61, 61),
7673    (62, 62),
7674    (63, 63),
7675    (64, 64),
7676    (65, 65),
7677    (66, 66),
7678    (67, 67),
7679    (68, 68),
7680    (69, 69),
7681    (70, 70),
7682    (71, 71),
7683    (72, 72),
7684    (73, 73),
7685    (74, 74),
7686    (75, 75),
7687    (76, 76),
7688    (77, 77),
7689    (78, 78),
7690    (79, 79),
7691    (80, 80),
7692    (81, 81),
7693    (82, 82),
7694    (83, 83),
7695    (84, 84),
7696    (85, 85),
7697    (86, 86),
7698    (87, 87),
7699    (88, 88),
7700    (89, 89),
7701    (90, 90),
7702    (91, 91),
7703    (92, 92),
7704    (93, 93),
7705    (94, 94),
7706    (95, 95),
7707    (96, 96),
7708    (97, 97),
7709    (98, 98),
7710    (99, 99),
7711    (100, 100),
7712    (101, 101),
7713    (102, 102),
7714    (103, 103),
7715    (104, 104),
7716    (105, 105),
7717    (106, 106),
7718    (107, 107),
7719    (108, 108),
7720    (109, 109),
7721    (110, 110),
7722    (111, 111),
7723    (112, 112),
7724    (113, 113),
7725    (114, 114),
7726    (115, 115),
7727    (116, 116),
7728    (117, 117),
7729    (118, 118),
7730    (119, 119),
7731    (120, 120),
7732    (121, 121),
7733    (122, 122),
7734    (123, 123),
7735    (124, 124),
7736    (125, 125),
7737    (126, 126),
7738    (127, 28),
7739    (160, 255),
7740    (161, 173),
7741    (162, 189),
7742    (163, 156),
7743    (164, 207),
7744    (165, 190),
7745    (166, 221),
7746    (167, 245),
7747    (168, 249),
7748    (169, 184),
7749    (170, 209),
7750    (171, 174),
7751    (172, 170),
7752    (173, 240),
7753    (174, 169),
7754    (175, 238),
7755    (176, 248),
7756    (177, 241),
7757    (178, 253),
7758    (179, 252),
7759    (180, 239),
7760    (181, 230),
7761    (182, 244),
7762    (183, 250),
7763    (184, 247),
7764    (185, 251),
7765    (186, 208),
7766    (187, 175),
7767    (188, 172),
7768    (189, 171),
7769    (190, 243),
7770    (191, 168),
7771    (192, 183),
7772    (193, 181),
7773    (194, 182),
7774    (195, 199),
7775    (196, 142),
7776    (197, 143),
7777    (198, 146),
7778    (199, 128),
7779    (200, 212),
7780    (201, 144),
7781    (202, 210),
7782    (203, 211),
7783    (204, 222),
7784    (205, 214),
7785    (206, 215),
7786    (207, 216),
7787    (209, 165),
7788    (210, 227),
7789    (211, 224),
7790    (212, 226),
7791    (213, 229),
7792    (214, 153),
7793    (215, 232),
7794    (216, 157),
7795    (217, 235),
7796    (218, 233),
7797    (219, 234),
7798    (220, 154),
7799    (223, 225),
7800    (224, 133),
7801    (225, 160),
7802    (226, 131),
7803    (227, 198),
7804    (228, 132),
7805    (229, 134),
7806    (230, 145),
7807    (231, 135),
7808    (232, 138),
7809    (233, 130),
7810    (234, 136),
7811    (235, 137),
7812    (236, 236),
7813    (237, 161),
7814    (238, 140),
7815    (239, 139),
7816    (241, 164),
7817    (242, 149),
7818    (243, 162),
7819    (244, 147),
7820    (245, 228),
7821    (246, 148),
7822    (247, 246),
7823    (248, 155),
7824    (249, 151),
7825    (250, 163),
7826    (251, 150),
7827    (252, 129),
7828    (255, 237),
7829    (286, 166),
7830    (287, 167),
7831    (304, 152),
7832    (305, 141),
7833    (350, 158),
7834    (351, 159),
7835    (9472, 196),
7836    (9474, 179),
7837    (9484, 218),
7838    (9488, 191),
7839    (9492, 192),
7840    (9496, 217),
7841    (9500, 195),
7842    (9508, 180),
7843    (9516, 194),
7844    (9524, 193),
7845    (9532, 197),
7846    (9552, 205),
7847    (9553, 186),
7848    (9556, 201),
7849    (9559, 187),
7850    (9562, 200),
7851    (9565, 188),
7852    (9568, 204),
7853    (9571, 185),
7854    (9574, 203),
7855    (9577, 202),
7856    (9580, 206),
7857    (9600, 223),
7858    (9604, 220),
7859    (9608, 219),
7860    (9617, 176),
7861    (9618, 177),
7862    (9619, 178),
7863    (9632, 254),
7864];
7865
7866impl_ebcdic_encoder_and_decoder!(
7867    IBM860,
7868    "IBM860",
7869    IBM860Encoder,
7870    IBM860Decoder,
7871    IBM_860_ENCODE_TABLE,
7872    IBM_860_DECODE_TABLE
7873);
7874const IBM_860_DECODE_TABLE: [char; 256] = [
7875    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
7876    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
7877    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
7878    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
7879    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
7880    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
7881    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
7882    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
7883    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
7884    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
7885    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
7886    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
7887    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
7888    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
7889    '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e3}', '\u{e0}', '\u{c1}', '\u{e7}', '\u{ea}',
7890    '\u{ca}', '\u{e8}', '\u{cd}', '\u{d4}', '\u{ec}', '\u{c3}', '\u{c2}', '\u{c9}', '\u{c0}',
7891    '\u{c8}', '\u{f4}', '\u{f5}', '\u{f2}', '\u{da}', '\u{f9}', '\u{cc}', '\u{d5}', '\u{dc}',
7892    '\u{a2}', '\u{a3}', '\u{d9}', '\u{20a7}', '\u{d3}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
7893    '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{d2}', '\u{ac}', '\u{bd}', '\u{bc}',
7894    '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
7895    '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
7896    '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
7897    '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
7898    '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
7899    '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
7900    '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
7901    '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
7902    '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
7903    '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
7904    '\u{b2}', '\u{25a0}', '\u{a0}',
7905];
7906const IBM_860_ENCODE_TABLE: &[(u16, u8)] = &[
7907    (0, 0),
7908    (1, 1),
7909    (2, 2),
7910    (3, 3),
7911    (4, 4),
7912    (5, 5),
7913    (6, 6),
7914    (7, 7),
7915    (8, 8),
7916    (9, 9),
7917    (10, 10),
7918    (11, 11),
7919    (12, 12),
7920    (13, 13),
7921    (14, 14),
7922    (15, 15),
7923    (16, 16),
7924    (17, 17),
7925    (18, 18),
7926    (19, 19),
7927    (20, 20),
7928    (21, 21),
7929    (22, 22),
7930    (23, 23),
7931    (24, 24),
7932    (25, 25),
7933    (26, 127),
7934    (27, 27),
7935    (28, 26),
7936    (29, 29),
7937    (30, 30),
7938    (31, 31),
7939    (32, 32),
7940    (33, 33),
7941    (34, 34),
7942    (35, 35),
7943    (36, 36),
7944    (37, 37),
7945    (38, 38),
7946    (39, 39),
7947    (40, 40),
7948    (41, 41),
7949    (42, 42),
7950    (43, 43),
7951    (44, 44),
7952    (45, 45),
7953    (46, 46),
7954    (47, 47),
7955    (48, 48),
7956    (49, 49),
7957    (50, 50),
7958    (51, 51),
7959    (52, 52),
7960    (53, 53),
7961    (54, 54),
7962    (55, 55),
7963    (56, 56),
7964    (57, 57),
7965    (58, 58),
7966    (59, 59),
7967    (60, 60),
7968    (61, 61),
7969    (62, 62),
7970    (63, 63),
7971    (64, 64),
7972    (65, 65),
7973    (66, 66),
7974    (67, 67),
7975    (68, 68),
7976    (69, 69),
7977    (70, 70),
7978    (71, 71),
7979    (72, 72),
7980    (73, 73),
7981    (74, 74),
7982    (75, 75),
7983    (76, 76),
7984    (77, 77),
7985    (78, 78),
7986    (79, 79),
7987    (80, 80),
7988    (81, 81),
7989    (82, 82),
7990    (83, 83),
7991    (84, 84),
7992    (85, 85),
7993    (86, 86),
7994    (87, 87),
7995    (88, 88),
7996    (89, 89),
7997    (90, 90),
7998    (91, 91),
7999    (92, 92),
8000    (93, 93),
8001    (94, 94),
8002    (95, 95),
8003    (96, 96),
8004    (97, 97),
8005    (98, 98),
8006    (99, 99),
8007    (100, 100),
8008    (101, 101),
8009    (102, 102),
8010    (103, 103),
8011    (104, 104),
8012    (105, 105),
8013    (106, 106),
8014    (107, 107),
8015    (108, 108),
8016    (109, 109),
8017    (110, 110),
8018    (111, 111),
8019    (112, 112),
8020    (113, 113),
8021    (114, 114),
8022    (115, 115),
8023    (116, 116),
8024    (117, 117),
8025    (118, 118),
8026    (119, 119),
8027    (120, 120),
8028    (121, 121),
8029    (122, 122),
8030    (123, 123),
8031    (124, 124),
8032    (125, 125),
8033    (126, 126),
8034    (127, 28),
8035    (160, 255),
8036    (161, 173),
8037    (162, 155),
8038    (163, 156),
8039    (170, 166),
8040    (171, 174),
8041    (172, 170),
8042    (176, 248),
8043    (177, 241),
8044    (178, 253),
8045    (183, 250),
8046    (186, 167),
8047    (187, 175),
8048    (188, 172),
8049    (189, 171),
8050    (191, 168),
8051    (192, 145),
8052    (193, 134),
8053    (194, 143),
8054    (195, 142),
8055    (199, 128),
8056    (200, 146),
8057    (201, 144),
8058    (202, 137),
8059    (204, 152),
8060    (205, 139),
8061    (209, 165),
8062    (210, 169),
8063    (211, 159),
8064    (212, 140),
8065    (213, 153),
8066    (217, 157),
8067    (218, 150),
8068    (220, 154),
8069    (223, 225),
8070    (224, 133),
8071    (225, 160),
8072    (226, 131),
8073    (227, 132),
8074    (231, 135),
8075    (232, 138),
8076    (233, 130),
8077    (234, 136),
8078    (236, 141),
8079    (237, 161),
8080    (241, 164),
8081    (242, 149),
8082    (243, 162),
8083    (244, 147),
8084    (245, 148),
8085    (247, 246),
8086    (249, 151),
8087    (250, 163),
8088    (252, 129),
8089    (915, 226),
8090    (920, 233),
8091    (931, 228),
8092    (934, 232),
8093    (937, 234),
8094    (945, 224),
8095    (948, 235),
8096    (949, 238),
8097    (956, 230),
8098    (960, 227),
8099    (963, 229),
8100    (964, 231),
8101    (966, 237),
8102    (8319, 252),
8103    (8359, 158),
8104    (8729, 249),
8105    (8730, 251),
8106    (8734, 236),
8107    (8745, 239),
8108    (8776, 247),
8109    (8801, 240),
8110    (8804, 243),
8111    (8805, 242),
8112    (8992, 244),
8113    (8993, 245),
8114    (9472, 196),
8115    (9474, 179),
8116    (9484, 218),
8117    (9488, 191),
8118    (9492, 192),
8119    (9496, 217),
8120    (9500, 195),
8121    (9508, 180),
8122    (9516, 194),
8123    (9524, 193),
8124    (9532, 197),
8125    (9552, 205),
8126    (9553, 186),
8127    (9554, 213),
8128    (9555, 214),
8129    (9556, 201),
8130    (9557, 184),
8131    (9558, 183),
8132    (9559, 187),
8133    (9560, 212),
8134    (9561, 211),
8135    (9562, 200),
8136    (9563, 190),
8137    (9564, 189),
8138    (9565, 188),
8139    (9566, 198),
8140    (9567, 199),
8141    (9568, 204),
8142    (9569, 181),
8143    (9570, 182),
8144    (9571, 185),
8145    (9572, 209),
8146    (9573, 210),
8147    (9574, 203),
8148    (9575, 207),
8149    (9576, 208),
8150    (9577, 202),
8151    (9578, 216),
8152    (9579, 215),
8153    (9580, 206),
8154    (9600, 223),
8155    (9604, 220),
8156    (9608, 219),
8157    (9612, 221),
8158    (9616, 222),
8159    (9617, 176),
8160    (9618, 177),
8161    (9619, 178),
8162    (9632, 254),
8163];
8164
8165impl_ebcdic_encoder_and_decoder!(
8166    IBM861,
8167    "IBM861",
8168    IBM861Encoder,
8169    IBM861Decoder,
8170    IBM_861_ENCODE_TABLE,
8171    IBM_861_DECODE_TABLE
8172);
8173const IBM_861_DECODE_TABLE: [char; 256] = [
8174    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
8175    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
8176    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
8177    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
8178    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
8179    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
8180    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
8181    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
8182    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
8183    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
8184    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
8185    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
8186    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
8187    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
8188    '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
8189    '\u{eb}', '\u{e8}', '\u{d0}', '\u{f0}', '\u{de}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
8190    '\u{c6}', '\u{f4}', '\u{f6}', '\u{fe}', '\u{fb}', '\u{dd}', '\u{fd}', '\u{d6}', '\u{dc}',
8191    '\u{f8}', '\u{a3}', '\u{d8}', '\u{20a7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
8192    '\u{c1}', '\u{cd}', '\u{d3}', '\u{da}', '\u{bf}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
8193    '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
8194    '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
8195    '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
8196    '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
8197    '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
8198    '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
8199    '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
8200    '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
8201    '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
8202    '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
8203    '\u{b2}', '\u{25a0}', '\u{a0}',
8204];
8205const IBM_861_ENCODE_TABLE: &[(u16, u8)] = &[
8206    (0, 0),
8207    (1, 1),
8208    (2, 2),
8209    (3, 3),
8210    (4, 4),
8211    (5, 5),
8212    (6, 6),
8213    (7, 7),
8214    (8, 8),
8215    (9, 9),
8216    (10, 10),
8217    (11, 11),
8218    (12, 12),
8219    (13, 13),
8220    (14, 14),
8221    (15, 15),
8222    (16, 16),
8223    (17, 17),
8224    (18, 18),
8225    (19, 19),
8226    (20, 20),
8227    (21, 21),
8228    (22, 22),
8229    (23, 23),
8230    (24, 24),
8231    (25, 25),
8232    (26, 127),
8233    (27, 27),
8234    (28, 26),
8235    (29, 29),
8236    (30, 30),
8237    (31, 31),
8238    (32, 32),
8239    (33, 33),
8240    (34, 34),
8241    (35, 35),
8242    (36, 36),
8243    (37, 37),
8244    (38, 38),
8245    (39, 39),
8246    (40, 40),
8247    (41, 41),
8248    (42, 42),
8249    (43, 43),
8250    (44, 44),
8251    (45, 45),
8252    (46, 46),
8253    (47, 47),
8254    (48, 48),
8255    (49, 49),
8256    (50, 50),
8257    (51, 51),
8258    (52, 52),
8259    (53, 53),
8260    (54, 54),
8261    (55, 55),
8262    (56, 56),
8263    (57, 57),
8264    (58, 58),
8265    (59, 59),
8266    (60, 60),
8267    (61, 61),
8268    (62, 62),
8269    (63, 63),
8270    (64, 64),
8271    (65, 65),
8272    (66, 66),
8273    (67, 67),
8274    (68, 68),
8275    (69, 69),
8276    (70, 70),
8277    (71, 71),
8278    (72, 72),
8279    (73, 73),
8280    (74, 74),
8281    (75, 75),
8282    (76, 76),
8283    (77, 77),
8284    (78, 78),
8285    (79, 79),
8286    (80, 80),
8287    (81, 81),
8288    (82, 82),
8289    (83, 83),
8290    (84, 84),
8291    (85, 85),
8292    (86, 86),
8293    (87, 87),
8294    (88, 88),
8295    (89, 89),
8296    (90, 90),
8297    (91, 91),
8298    (92, 92),
8299    (93, 93),
8300    (94, 94),
8301    (95, 95),
8302    (96, 96),
8303    (97, 97),
8304    (98, 98),
8305    (99, 99),
8306    (100, 100),
8307    (101, 101),
8308    (102, 102),
8309    (103, 103),
8310    (104, 104),
8311    (105, 105),
8312    (106, 106),
8313    (107, 107),
8314    (108, 108),
8315    (109, 109),
8316    (110, 110),
8317    (111, 111),
8318    (112, 112),
8319    (113, 113),
8320    (114, 114),
8321    (115, 115),
8322    (116, 116),
8323    (117, 117),
8324    (118, 118),
8325    (119, 119),
8326    (120, 120),
8327    (121, 121),
8328    (122, 122),
8329    (123, 123),
8330    (124, 124),
8331    (125, 125),
8332    (126, 126),
8333    (127, 28),
8334    (160, 255),
8335    (161, 173),
8336    (163, 156),
8337    (171, 174),
8338    (172, 170),
8339    (176, 248),
8340    (177, 241),
8341    (178, 253),
8342    (183, 250),
8343    (187, 175),
8344    (188, 172),
8345    (189, 171),
8346    (191, 168),
8347    (193, 164),
8348    (196, 142),
8349    (197, 143),
8350    (198, 146),
8351    (199, 128),
8352    (201, 144),
8353    (205, 165),
8354    (208, 139),
8355    (211, 166),
8356    (214, 153),
8357    (216, 157),
8358    (218, 167),
8359    (220, 154),
8360    (221, 151),
8361    (222, 141),
8362    (223, 225),
8363    (224, 133),
8364    (225, 160),
8365    (226, 131),
8366    (228, 132),
8367    (229, 134),
8368    (230, 145),
8369    (231, 135),
8370    (232, 138),
8371    (233, 130),
8372    (234, 136),
8373    (235, 137),
8374    (237, 161),
8375    (240, 140),
8376    (243, 162),
8377    (244, 147),
8378    (246, 148),
8379    (247, 246),
8380    (248, 155),
8381    (250, 163),
8382    (251, 150),
8383    (252, 129),
8384    (253, 152),
8385    (254, 149),
8386    (402, 159),
8387    (915, 226),
8388    (920, 233),
8389    (931, 228),
8390    (934, 232),
8391    (937, 234),
8392    (945, 224),
8393    (948, 235),
8394    (949, 238),
8395    (956, 230),
8396    (960, 227),
8397    (963, 229),
8398    (964, 231),
8399    (966, 237),
8400    (8319, 252),
8401    (8359, 158),
8402    (8729, 249),
8403    (8730, 251),
8404    (8734, 236),
8405    (8745, 239),
8406    (8776, 247),
8407    (8801, 240),
8408    (8804, 243),
8409    (8805, 242),
8410    (8976, 169),
8411    (8992, 244),
8412    (8993, 245),
8413    (9472, 196),
8414    (9474, 179),
8415    (9484, 218),
8416    (9488, 191),
8417    (9492, 192),
8418    (9496, 217),
8419    (9500, 195),
8420    (9508, 180),
8421    (9516, 194),
8422    (9524, 193),
8423    (9532, 197),
8424    (9552, 205),
8425    (9553, 186),
8426    (9554, 213),
8427    (9555, 214),
8428    (9556, 201),
8429    (9557, 184),
8430    (9558, 183),
8431    (9559, 187),
8432    (9560, 212),
8433    (9561, 211),
8434    (9562, 200),
8435    (9563, 190),
8436    (9564, 189),
8437    (9565, 188),
8438    (9566, 198),
8439    (9567, 199),
8440    (9568, 204),
8441    (9569, 181),
8442    (9570, 182),
8443    (9571, 185),
8444    (9572, 209),
8445    (9573, 210),
8446    (9574, 203),
8447    (9575, 207),
8448    (9576, 208),
8449    (9577, 202),
8450    (9578, 216),
8451    (9579, 215),
8452    (9580, 206),
8453    (9600, 223),
8454    (9604, 220),
8455    (9608, 219),
8456    (9612, 221),
8457    (9616, 222),
8458    (9617, 176),
8459    (9618, 177),
8460    (9619, 178),
8461    (9632, 254),
8462];
8463
8464impl_ebcdic_encoder_and_decoder!(
8465    IBM862,
8466    "IBM862",
8467    IBM862Encoder,
8468    IBM862Decoder,
8469    IBM_862_ENCODE_TABLE,
8470    IBM_862_DECODE_TABLE
8471);
8472const IBM_862_DECODE_TABLE: [char; 256] = [
8473    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
8474    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
8475    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
8476    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
8477    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
8478    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
8479    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
8480    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
8481    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
8482    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
8483    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
8484    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
8485    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
8486    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
8487    '\u{5d0}', '\u{5d1}', '\u{5d2}', '\u{5d3}', '\u{5d4}', '\u{5d5}', '\u{5d6}', '\u{5d7}',
8488    '\u{5d8}', '\u{5d9}', '\u{5da}', '\u{5db}', '\u{5dc}', '\u{5dd}', '\u{5de}', '\u{5df}',
8489    '\u{5e0}', '\u{5e1}', '\u{5e2}', '\u{5e3}', '\u{5e4}', '\u{5e5}', '\u{5e6}', '\u{5e7}',
8490    '\u{5e8}', '\u{5e9}', '\u{5ea}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{20a7}', '\u{192}', '\u{e1}',
8491    '\u{ed}', '\u{f3}', '\u{fa}', '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{2310}',
8492    '\u{ac}', '\u{bd}', '\u{bc}', '\u{a1}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}',
8493    '\u{2502}', '\u{2524}', '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}',
8494    '\u{2557}', '\u{255d}', '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}',
8495    '\u{251c}', '\u{2500}', '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}',
8496    '\u{2566}', '\u{2560}', '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}',
8497    '\u{2559}', '\u{2558}', '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}',
8498    '\u{2588}', '\u{2584}', '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}',
8499    '\u{3c0}', '\u{3a3}', '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}',
8500    '\u{3b4}', '\u{221e}', '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}',
8501    '\u{2264}', '\u{2320}', '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}',
8502    '\u{221a}', '\u{207f}', '\u{b2}', '\u{25a0}', '\u{a0}',
8503];
8504const IBM_862_ENCODE_TABLE: &[(u16, u8)] = &[
8505    (0, 0),
8506    (1, 1),
8507    (2, 2),
8508    (3, 3),
8509    (4, 4),
8510    (5, 5),
8511    (6, 6),
8512    (7, 7),
8513    (8, 8),
8514    (9, 9),
8515    (10, 10),
8516    (11, 11),
8517    (12, 12),
8518    (13, 13),
8519    (14, 14),
8520    (15, 15),
8521    (16, 16),
8522    (17, 17),
8523    (18, 18),
8524    (19, 19),
8525    (20, 20),
8526    (21, 21),
8527    (22, 22),
8528    (23, 23),
8529    (24, 24),
8530    (25, 25),
8531    (26, 127),
8532    (27, 27),
8533    (28, 26),
8534    (29, 29),
8535    (30, 30),
8536    (31, 31),
8537    (32, 32),
8538    (33, 33),
8539    (34, 34),
8540    (35, 35),
8541    (36, 36),
8542    (37, 37),
8543    (38, 38),
8544    (39, 39),
8545    (40, 40),
8546    (41, 41),
8547    (42, 42),
8548    (43, 43),
8549    (44, 44),
8550    (45, 45),
8551    (46, 46),
8552    (47, 47),
8553    (48, 48),
8554    (49, 49),
8555    (50, 50),
8556    (51, 51),
8557    (52, 52),
8558    (53, 53),
8559    (54, 54),
8560    (55, 55),
8561    (56, 56),
8562    (57, 57),
8563    (58, 58),
8564    (59, 59),
8565    (60, 60),
8566    (61, 61),
8567    (62, 62),
8568    (63, 63),
8569    (64, 64),
8570    (65, 65),
8571    (66, 66),
8572    (67, 67),
8573    (68, 68),
8574    (69, 69),
8575    (70, 70),
8576    (71, 71),
8577    (72, 72),
8578    (73, 73),
8579    (74, 74),
8580    (75, 75),
8581    (76, 76),
8582    (77, 77),
8583    (78, 78),
8584    (79, 79),
8585    (80, 80),
8586    (81, 81),
8587    (82, 82),
8588    (83, 83),
8589    (84, 84),
8590    (85, 85),
8591    (86, 86),
8592    (87, 87),
8593    (88, 88),
8594    (89, 89),
8595    (90, 90),
8596    (91, 91),
8597    (92, 92),
8598    (93, 93),
8599    (94, 94),
8600    (95, 95),
8601    (96, 96),
8602    (97, 97),
8603    (98, 98),
8604    (99, 99),
8605    (100, 100),
8606    (101, 101),
8607    (102, 102),
8608    (103, 103),
8609    (104, 104),
8610    (105, 105),
8611    (106, 106),
8612    (107, 107),
8613    (108, 108),
8614    (109, 109),
8615    (110, 110),
8616    (111, 111),
8617    (112, 112),
8618    (113, 113),
8619    (114, 114),
8620    (115, 115),
8621    (116, 116),
8622    (117, 117),
8623    (118, 118),
8624    (119, 119),
8625    (120, 120),
8626    (121, 121),
8627    (122, 122),
8628    (123, 123),
8629    (124, 124),
8630    (125, 125),
8631    (126, 126),
8632    (127, 28),
8633    (160, 255),
8634    (161, 173),
8635    (162, 155),
8636    (163, 156),
8637    (165, 157),
8638    (170, 166),
8639    (171, 174),
8640    (172, 170),
8641    (176, 248),
8642    (177, 241),
8643    (178, 253),
8644    (183, 250),
8645    (186, 167),
8646    (187, 175),
8647    (188, 172),
8648    (189, 171),
8649    (191, 168),
8650    (209, 165),
8651    (223, 225),
8652    (225, 160),
8653    (237, 161),
8654    (241, 164),
8655    (243, 162),
8656    (247, 246),
8657    (250, 163),
8658    (402, 159),
8659    (915, 226),
8660    (920, 233),
8661    (931, 228),
8662    (934, 232),
8663    (937, 234),
8664    (945, 224),
8665    (948, 235),
8666    (949, 238),
8667    (956, 230),
8668    (960, 227),
8669    (963, 229),
8670    (964, 231),
8671    (966, 237),
8672    (1488, 128),
8673    (1489, 129),
8674    (1490, 130),
8675    (1491, 131),
8676    (1492, 132),
8677    (1493, 133),
8678    (1494, 134),
8679    (1495, 135),
8680    (1496, 136),
8681    (1497, 137),
8682    (1498, 138),
8683    (1499, 139),
8684    (1500, 140),
8685    (1501, 141),
8686    (1502, 142),
8687    (1503, 143),
8688    (1504, 144),
8689    (1505, 145),
8690    (1506, 146),
8691    (1507, 147),
8692    (1508, 148),
8693    (1509, 149),
8694    (1510, 150),
8695    (1511, 151),
8696    (1512, 152),
8697    (1513, 153),
8698    (1514, 154),
8699    (8319, 252),
8700    (8359, 158),
8701    (8729, 249),
8702    (8730, 251),
8703    (8734, 236),
8704    (8745, 239),
8705    (8776, 247),
8706    (8801, 240),
8707    (8804, 243),
8708    (8805, 242),
8709    (8976, 169),
8710    (8992, 244),
8711    (8993, 245),
8712    (9472, 196),
8713    (9474, 179),
8714    (9484, 218),
8715    (9488, 191),
8716    (9492, 192),
8717    (9496, 217),
8718    (9500, 195),
8719    (9508, 180),
8720    (9516, 194),
8721    (9524, 193),
8722    (9532, 197),
8723    (9552, 205),
8724    (9553, 186),
8725    (9554, 213),
8726    (9555, 214),
8727    (9556, 201),
8728    (9557, 184),
8729    (9558, 183),
8730    (9559, 187),
8731    (9560, 212),
8732    (9561, 211),
8733    (9562, 200),
8734    (9563, 190),
8735    (9564, 189),
8736    (9565, 188),
8737    (9566, 198),
8738    (9567, 199),
8739    (9568, 204),
8740    (9569, 181),
8741    (9570, 182),
8742    (9571, 185),
8743    (9572, 209),
8744    (9573, 210),
8745    (9574, 203),
8746    (9575, 207),
8747    (9576, 208),
8748    (9577, 202),
8749    (9578, 216),
8750    (9579, 215),
8751    (9580, 206),
8752    (9600, 223),
8753    (9604, 220),
8754    (9608, 219),
8755    (9612, 221),
8756    (9616, 222),
8757    (9617, 176),
8758    (9618, 177),
8759    (9619, 178),
8760    (9632, 254),
8761];
8762
8763impl_ebcdic_encoder_and_decoder!(
8764    IBM863,
8765    "IBM863",
8766    IBM863Encoder,
8767    IBM863Decoder,
8768    IBM_863_ENCODE_TABLE,
8769    IBM_863_DECODE_TABLE
8770);
8771const IBM_863_DECODE_TABLE: [char; 256] = [
8772    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
8773    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
8774    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
8775    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
8776    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
8777    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
8778    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
8779    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
8780    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
8781    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
8782    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
8783    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
8784    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
8785    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
8786    '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{c2}', '\u{e0}', '\u{b6}', '\u{e7}', '\u{ea}',
8787    '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{2017}', '\u{c0}', '\u{a7}', '\u{c9}', '\u{c8}',
8788    '\u{ca}', '\u{f4}', '\u{cb}', '\u{cf}', '\u{fb}', '\u{f9}', '\u{a4}', '\u{d4}', '\u{dc}',
8789    '\u{a2}', '\u{a3}', '\u{d9}', '\u{db}', '\u{192}', '\u{a6}', '\u{b4}', '\u{f3}', '\u{fa}',
8790    '\u{a8}', '\u{b8}', '\u{b3}', '\u{af}', '\u{ce}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
8791    '\u{be}', '\u{ab}', '\u{bb}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
8792    '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
8793    '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
8794    '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
8795    '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
8796    '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
8797    '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
8798    '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
8799    '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
8800    '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
8801    '\u{b2}', '\u{25a0}', '\u{a0}',
8802];
8803const IBM_863_ENCODE_TABLE: &[(u16, u8)] = &[
8804    (0, 0),
8805    (1, 1),
8806    (2, 2),
8807    (3, 3),
8808    (4, 4),
8809    (5, 5),
8810    (6, 6),
8811    (7, 7),
8812    (8, 8),
8813    (9, 9),
8814    (10, 10),
8815    (11, 11),
8816    (12, 12),
8817    (13, 13),
8818    (14, 14),
8819    (15, 15),
8820    (16, 16),
8821    (17, 17),
8822    (18, 18),
8823    (19, 19),
8824    (20, 20),
8825    (21, 21),
8826    (22, 22),
8827    (23, 23),
8828    (24, 24),
8829    (25, 25),
8830    (26, 127),
8831    (27, 27),
8832    (28, 26),
8833    (29, 29),
8834    (30, 30),
8835    (31, 31),
8836    (32, 32),
8837    (33, 33),
8838    (34, 34),
8839    (35, 35),
8840    (36, 36),
8841    (37, 37),
8842    (38, 38),
8843    (39, 39),
8844    (40, 40),
8845    (41, 41),
8846    (42, 42),
8847    (43, 43),
8848    (44, 44),
8849    (45, 45),
8850    (46, 46),
8851    (47, 47),
8852    (48, 48),
8853    (49, 49),
8854    (50, 50),
8855    (51, 51),
8856    (52, 52),
8857    (53, 53),
8858    (54, 54),
8859    (55, 55),
8860    (56, 56),
8861    (57, 57),
8862    (58, 58),
8863    (59, 59),
8864    (60, 60),
8865    (61, 61),
8866    (62, 62),
8867    (63, 63),
8868    (64, 64),
8869    (65, 65),
8870    (66, 66),
8871    (67, 67),
8872    (68, 68),
8873    (69, 69),
8874    (70, 70),
8875    (71, 71),
8876    (72, 72),
8877    (73, 73),
8878    (74, 74),
8879    (75, 75),
8880    (76, 76),
8881    (77, 77),
8882    (78, 78),
8883    (79, 79),
8884    (80, 80),
8885    (81, 81),
8886    (82, 82),
8887    (83, 83),
8888    (84, 84),
8889    (85, 85),
8890    (86, 86),
8891    (87, 87),
8892    (88, 88),
8893    (89, 89),
8894    (90, 90),
8895    (91, 91),
8896    (92, 92),
8897    (93, 93),
8898    (94, 94),
8899    (95, 95),
8900    (96, 96),
8901    (97, 97),
8902    (98, 98),
8903    (99, 99),
8904    (100, 100),
8905    (101, 101),
8906    (102, 102),
8907    (103, 103),
8908    (104, 104),
8909    (105, 105),
8910    (106, 106),
8911    (107, 107),
8912    (108, 108),
8913    (109, 109),
8914    (110, 110),
8915    (111, 111),
8916    (112, 112),
8917    (113, 113),
8918    (114, 114),
8919    (115, 115),
8920    (116, 116),
8921    (117, 117),
8922    (118, 118),
8923    (119, 119),
8924    (120, 120),
8925    (121, 121),
8926    (122, 122),
8927    (123, 123),
8928    (124, 124),
8929    (125, 125),
8930    (126, 126),
8931    (127, 28),
8932    (160, 255),
8933    (162, 155),
8934    (163, 156),
8935    (164, 152),
8936    (166, 160),
8937    (167, 143),
8938    (168, 164),
8939    (171, 174),
8940    (172, 170),
8941    (175, 167),
8942    (176, 248),
8943    (177, 241),
8944    (178, 253),
8945    (179, 166),
8946    (180, 161),
8947    (182, 134),
8948    (183, 250),
8949    (184, 165),
8950    (187, 175),
8951    (188, 172),
8952    (189, 171),
8953    (190, 173),
8954    (192, 142),
8955    (194, 132),
8956    (199, 128),
8957    (200, 145),
8958    (201, 144),
8959    (202, 146),
8960    (203, 148),
8961    (206, 168),
8962    (207, 149),
8963    (212, 153),
8964    (217, 157),
8965    (219, 158),
8966    (220, 154),
8967    (223, 225),
8968    (224, 133),
8969    (226, 131),
8970    (231, 135),
8971    (232, 138),
8972    (233, 130),
8973    (234, 136),
8974    (235, 137),
8975    (238, 140),
8976    (239, 139),
8977    (243, 162),
8978    (244, 147),
8979    (247, 246),
8980    (249, 151),
8981    (250, 163),
8982    (251, 150),
8983    (252, 129),
8984    (402, 159),
8985    (915, 226),
8986    (920, 233),
8987    (931, 228),
8988    (934, 232),
8989    (937, 234),
8990    (945, 224),
8991    (948, 235),
8992    (949, 238),
8993    (956, 230),
8994    (960, 227),
8995    (963, 229),
8996    (964, 231),
8997    (966, 237),
8998    (8215, 141),
8999    (8319, 252),
9000    (8729, 249),
9001    (8730, 251),
9002    (8734, 236),
9003    (8745, 239),
9004    (8776, 247),
9005    (8801, 240),
9006    (8804, 243),
9007    (8805, 242),
9008    (8976, 169),
9009    (8992, 244),
9010    (8993, 245),
9011    (9472, 196),
9012    (9474, 179),
9013    (9484, 218),
9014    (9488, 191),
9015    (9492, 192),
9016    (9496, 217),
9017    (9500, 195),
9018    (9508, 180),
9019    (9516, 194),
9020    (9524, 193),
9021    (9532, 197),
9022    (9552, 205),
9023    (9553, 186),
9024    (9554, 213),
9025    (9555, 214),
9026    (9556, 201),
9027    (9557, 184),
9028    (9558, 183),
9029    (9559, 187),
9030    (9560, 212),
9031    (9561, 211),
9032    (9562, 200),
9033    (9563, 190),
9034    (9564, 189),
9035    (9565, 188),
9036    (9566, 198),
9037    (9567, 199),
9038    (9568, 204),
9039    (9569, 181),
9040    (9570, 182),
9041    (9571, 185),
9042    (9572, 209),
9043    (9573, 210),
9044    (9574, 203),
9045    (9575, 207),
9046    (9576, 208),
9047    (9577, 202),
9048    (9578, 216),
9049    (9579, 215),
9050    (9580, 206),
9051    (9600, 223),
9052    (9604, 220),
9053    (9608, 219),
9054    (9612, 221),
9055    (9616, 222),
9056    (9617, 176),
9057    (9618, 177),
9058    (9619, 178),
9059    (9632, 254),
9060];
9061
9062impl_ebcdic_encoder_and_decoder!(
9063    IBM864,
9064    "IBM864",
9065    IBM864Encoder,
9066    IBM864Decoder,
9067    IBM_864_ENCODE_TABLE,
9068    IBM_864_DECODE_TABLE
9069);
9070const IBM_864_DECODE_TABLE: [char; 256] = [
9071    '\u{0}',
9072    '\u{1}',
9073    '\u{2}',
9074    '\u{3}',
9075    '\u{4}',
9076    '\u{5}',
9077    '\u{6}',
9078    '\u{7}',
9079    '\u{8}',
9080    '\u{9}',
9081    '\u{a}',
9082    '\u{b}',
9083    '\u{c}',
9084    '\u{d}',
9085    '\u{e}',
9086    '\u{f}',
9087    '\u{10}',
9088    '\u{11}',
9089    '\u{12}',
9090    '\u{13}',
9091    '\u{14}',
9092    '\u{15}',
9093    '\u{16}',
9094    '\u{17}',
9095    '\u{18}',
9096    '\u{19}',
9097    '\u{1c}',
9098    '\u{1b}',
9099    '\u{7f}',
9100    '\u{1d}',
9101    '\u{1e}',
9102    '\u{1f}',
9103    '\u{20}',
9104    '\u{21}',
9105    '\u{22}',
9106    '\u{23}',
9107    '\u{24}',
9108    '\u{25}',
9109    '\u{26}',
9110    '\u{27}',
9111    '\u{28}',
9112    '\u{29}',
9113    '\u{2a}',
9114    '\u{2b}',
9115    '\u{2c}',
9116    '\u{2d}',
9117    '\u{2e}',
9118    '\u{2f}',
9119    '\u{30}',
9120    '\u{31}',
9121    '\u{32}',
9122    '\u{33}',
9123    '\u{34}',
9124    '\u{35}',
9125    '\u{36}',
9126    '\u{37}',
9127    '\u{38}',
9128    '\u{39}',
9129    '\u{3a}',
9130    '\u{3b}',
9131    '\u{3c}',
9132    '\u{3d}',
9133    '\u{3e}',
9134    '\u{3f}',
9135    '\u{40}',
9136    '\u{41}',
9137    '\u{42}',
9138    '\u{43}',
9139    '\u{44}',
9140    '\u{45}',
9141    '\u{46}',
9142    '\u{47}',
9143    '\u{48}',
9144    '\u{49}',
9145    '\u{4a}',
9146    '\u{4b}',
9147    '\u{4c}',
9148    '\u{4d}',
9149    '\u{4e}',
9150    '\u{4f}',
9151    '\u{50}',
9152    '\u{51}',
9153    '\u{52}',
9154    '\u{53}',
9155    '\u{54}',
9156    '\u{55}',
9157    '\u{56}',
9158    '\u{57}',
9159    '\u{58}',
9160    '\u{59}',
9161    '\u{5a}',
9162    '\u{5b}',
9163    '\u{5c}',
9164    '\u{5d}',
9165    '\u{5e}',
9166    '\u{5f}',
9167    '\u{60}',
9168    '\u{61}',
9169    '\u{62}',
9170    '\u{63}',
9171    '\u{64}',
9172    '\u{65}',
9173    '\u{66}',
9174    '\u{67}',
9175    '\u{68}',
9176    '\u{69}',
9177    '\u{6a}',
9178    '\u{6b}',
9179    '\u{6c}',
9180    '\u{6d}',
9181    '\u{6e}',
9182    '\u{6f}',
9183    '\u{70}',
9184    '\u{71}',
9185    '\u{72}',
9186    '\u{73}',
9187    '\u{74}',
9188    '\u{75}',
9189    '\u{76}',
9190    '\u{77}',
9191    '\u{78}',
9192    '\u{79}',
9193    '\u{7a}',
9194    '\u{7b}',
9195    '\u{7c}',
9196    '\u{7d}',
9197    '\u{7e}',
9198    '\u{1a}',
9199    '\u{b0}',
9200    '\u{b7}',
9201    '\u{2219}',
9202    '\u{221a}',
9203    '\u{2592}',
9204    '\u{2500}',
9205    '\u{2502}',
9206    '\u{253c}',
9207    '\u{2524}',
9208    '\u{252c}',
9209    '\u{251c}',
9210    '\u{2534}',
9211    '\u{2510}',
9212    '\u{250c}',
9213    '\u{2514}',
9214    '\u{2518}',
9215    '\u{3b2}',
9216    '\u{221e}',
9217    '\u{3c6}',
9218    '\u{b1}',
9219    '\u{bd}',
9220    '\u{bc}',
9221    '\u{2248}',
9222    '\u{ab}',
9223    '\u{bb}',
9224    '\u{fef7}',
9225    '\u{fef8}',
9226    char::REPLACEMENT_CHARACTER,
9227    char::REPLACEMENT_CHARACTER,
9228    '\u{fefb}',
9229    '\u{fefc}',
9230    '\u{200b}',
9231    '\u{a0}',
9232    '\u{ad}',
9233    '\u{fe82}',
9234    '\u{a3}',
9235    '\u{a4}',
9236    '\u{fe84}',
9237    char::REPLACEMENT_CHARACTER,
9238    char::REPLACEMENT_CHARACTER,
9239    '\u{fe8e}',
9240    '\u{fe8f}',
9241    '\u{fe95}',
9242    '\u{fe99}',
9243    '\u{60c}',
9244    '\u{fe9d}',
9245    '\u{fea1}',
9246    '\u{fea5}',
9247    '\u{660}',
9248    '\u{661}',
9249    '\u{662}',
9250    '\u{663}',
9251    '\u{664}',
9252    '\u{665}',
9253    '\u{666}',
9254    '\u{667}',
9255    '\u{668}',
9256    '\u{669}',
9257    '\u{fed1}',
9258    '\u{61b}',
9259    '\u{feb1}',
9260    '\u{feb5}',
9261    '\u{feb9}',
9262    '\u{61f}',
9263    '\u{a2}',
9264    '\u{fe80}',
9265    '\u{fe81}',
9266    '\u{fe83}',
9267    '\u{fe85}',
9268    '\u{feca}',
9269    '\u{fe8b}',
9270    '\u{fe8d}',
9271    '\u{fe91}',
9272    '\u{fe93}',
9273    '\u{fe97}',
9274    '\u{fe9b}',
9275    '\u{fe9f}',
9276    '\u{fea3}',
9277    '\u{fea7}',
9278    '\u{fea9}',
9279    '\u{feab}',
9280    '\u{fead}',
9281    '\u{feaf}',
9282    '\u{feb3}',
9283    '\u{feb7}',
9284    '\u{febb}',
9285    '\u{febf}',
9286    '\u{fec3}',
9287    '\u{fec7}',
9288    '\u{fecb}',
9289    '\u{fecf}',
9290    '\u{a6}',
9291    '\u{ac}',
9292    '\u{f7}',
9293    '\u{d7}',
9294    '\u{fec9}',
9295    '\u{640}',
9296    '\u{fed3}',
9297    '\u{fed7}',
9298    '\u{fedb}',
9299    '\u{fedf}',
9300    '\u{fee3}',
9301    '\u{fee7}',
9302    '\u{feeb}',
9303    '\u{feed}',
9304    '\u{feef}',
9305    '\u{fef3}',
9306    '\u{febd}',
9307    '\u{fecc}',
9308    '\u{fece}',
9309    '\u{fecd}',
9310    '\u{fee1}',
9311    '\u{fe7d}',
9312    '\u{fe7c}',
9313    '\u{fee5}',
9314    '\u{fee9}',
9315    '\u{feec}',
9316    '\u{fef0}',
9317    '\u{fef2}',
9318    '\u{fed0}',
9319    '\u{fed5}',
9320    '\u{fef5}',
9321    '\u{fef6}',
9322    '\u{fedd}',
9323    '\u{fed9}',
9324    '\u{fef1}',
9325    '\u{25a0}',
9326    char::REPLACEMENT_CHARACTER,
9327];
9328const IBM_864_ENCODE_TABLE: &[(u16, u8)] = &[
9329    (0, 0),
9330    (1, 1),
9331    (2, 2),
9332    (3, 3),
9333    (4, 4),
9334    (5, 5),
9335    (6, 6),
9336    (7, 7),
9337    (8, 8),
9338    (9, 9),
9339    (10, 10),
9340    (11, 11),
9341    (12, 12),
9342    (13, 13),
9343    (14, 14),
9344    (15, 15),
9345    (16, 16),
9346    (17, 17),
9347    (18, 18),
9348    (19, 19),
9349    (20, 20),
9350    (21, 21),
9351    (22, 22),
9352    (23, 23),
9353    (24, 24),
9354    (25, 25),
9355    (26, 127),
9356    (27, 27),
9357    (28, 26),
9358    (29, 29),
9359    (30, 30),
9360    (31, 31),
9361    (32, 32),
9362    (33, 33),
9363    (34, 34),
9364    (35, 35),
9365    (36, 36),
9366    (37, 37),
9367    (38, 38),
9368    (39, 39),
9369    (40, 40),
9370    (41, 41),
9371    (42, 42),
9372    (43, 43),
9373    (44, 44),
9374    (45, 45),
9375    (46, 46),
9376    (47, 47),
9377    (48, 48),
9378    (49, 49),
9379    (50, 50),
9380    (51, 51),
9381    (52, 52),
9382    (53, 53),
9383    (54, 54),
9384    (55, 55),
9385    (56, 56),
9386    (57, 57),
9387    (58, 58),
9388    (59, 59),
9389    (60, 60),
9390    (61, 61),
9391    (62, 62),
9392    (63, 63),
9393    (64, 64),
9394    (65, 65),
9395    (66, 66),
9396    (67, 67),
9397    (68, 68),
9398    (69, 69),
9399    (70, 70),
9400    (71, 71),
9401    (72, 72),
9402    (73, 73),
9403    (74, 74),
9404    (75, 75),
9405    (76, 76),
9406    (77, 77),
9407    (78, 78),
9408    (79, 79),
9409    (80, 80),
9410    (81, 81),
9411    (82, 82),
9412    (83, 83),
9413    (84, 84),
9414    (85, 85),
9415    (86, 86),
9416    (87, 87),
9417    (88, 88),
9418    (89, 89),
9419    (90, 90),
9420    (91, 91),
9421    (92, 92),
9422    (93, 93),
9423    (94, 94),
9424    (95, 95),
9425    (96, 96),
9426    (97, 97),
9427    (98, 98),
9428    (99, 99),
9429    (100, 100),
9430    (101, 101),
9431    (102, 102),
9432    (103, 103),
9433    (104, 104),
9434    (105, 105),
9435    (106, 106),
9436    (107, 107),
9437    (108, 108),
9438    (109, 109),
9439    (110, 110),
9440    (111, 111),
9441    (112, 112),
9442    (113, 113),
9443    (114, 114),
9444    (115, 115),
9445    (116, 116),
9446    (117, 117),
9447    (118, 118),
9448    (119, 119),
9449    (120, 120),
9450    (121, 121),
9451    (122, 122),
9452    (123, 123),
9453    (124, 124),
9454    (125, 125),
9455    (126, 126),
9456    (127, 28),
9457    (160, 160),
9458    (162, 192),
9459    (163, 163),
9460    (164, 164),
9461    (166, 219),
9462    (171, 151),
9463    (172, 220),
9464    (173, 161),
9465    (176, 128),
9466    (177, 147),
9467    (183, 129),
9468    (187, 152),
9469    (188, 149),
9470    (189, 148),
9471    (215, 222),
9472    (247, 221),
9473    (946, 144),
9474    (966, 146),
9475    (1548, 172),
9476    (1563, 187),
9477    (1567, 191),
9478    (1600, 224),
9479    (1632, 176),
9480    (1633, 177),
9481    (1634, 178),
9482    (1635, 179),
9483    (1636, 180),
9484    (1637, 181),
9485    (1638, 182),
9486    (1639, 183),
9487    (1640, 184),
9488    (1641, 185),
9489    (8203, 159),
9490    (8729, 130),
9491    (8730, 131),
9492    (8734, 145),
9493    (8776, 150),
9494    (9472, 133),
9495    (9474, 134),
9496    (9484, 141),
9497    (9488, 140),
9498    (9492, 142),
9499    (9496, 143),
9500    (9500, 138),
9501    (9508, 136),
9502    (9516, 137),
9503    (9524, 139),
9504    (9532, 135),
9505    (9618, 132),
9506    (9632, 254),
9507    (65148, 241),
9508    (65149, 240),
9509    (65152, 193),
9510    (65153, 194),
9511    (65154, 162),
9512    (65155, 195),
9513    (65156, 165),
9514    (65157, 196),
9515    (65163, 198),
9516    (65165, 199),
9517    (65166, 168),
9518    (65167, 169),
9519    (65169, 200),
9520    (65171, 201),
9521    (65173, 170),
9522    (65175, 202),
9523    (65177, 171),
9524    (65179, 203),
9525    (65181, 173),
9526    (65183, 204),
9527    (65185, 174),
9528    (65187, 205),
9529    (65189, 175),
9530    (65191, 206),
9531    (65193, 207),
9532    (65195, 208),
9533    (65197, 209),
9534    (65199, 210),
9535    (65201, 188),
9536    (65203, 211),
9537    (65205, 189),
9538    (65207, 212),
9539    (65209, 190),
9540    (65211, 213),
9541    (65213, 235),
9542    (65215, 214),
9543    (65219, 215),
9544    (65223, 216),
9545    (65225, 223),
9546    (65226, 197),
9547    (65227, 217),
9548    (65228, 236),
9549    (65229, 238),
9550    (65230, 237),
9551    (65231, 218),
9552    (65232, 247),
9553    (65233, 186),
9554    (65235, 225),
9555    (65237, 248),
9556    (65239, 226),
9557    (65241, 252),
9558    (65243, 227),
9559    (65245, 251),
9560    (65247, 228),
9561    (65249, 239),
9562    (65251, 229),
9563    (65253, 242),
9564    (65255, 230),
9565    (65257, 243),
9566    (65259, 231),
9567    (65260, 244),
9568    (65261, 232),
9569    (65263, 233),
9570    (65264, 245),
9571    (65265, 253),
9572    (65266, 246),
9573    (65267, 234),
9574    (65269, 249),
9575    (65270, 250),
9576    (65271, 153),
9577    (65272, 154),
9578    (65275, 157),
9579    (65276, 158),
9580];
9581
9582impl_ebcdic_encoder_and_decoder!(
9583    IBM865,
9584    "IBM865",
9585    IBM865Encoder,
9586    IBM865Decoder,
9587    IBM_865_ENCODE_TABLE,
9588    IBM_865_DECODE_TABLE
9589);
9590const IBM_865_DECODE_TABLE: [char; 256] = [
9591    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{4}', '\u{5}', '\u{6}', '\u{7}', '\u{8}', '\u{9}',
9592    '\u{a}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
9593    '\u{14}', '\u{15}', '\u{16}', '\u{17}', '\u{18}', '\u{19}', '\u{1c}', '\u{1b}', '\u{7f}',
9594    '\u{1d}', '\u{1e}', '\u{1f}', '\u{20}', '\u{21}', '\u{22}', '\u{23}', '\u{24}', '\u{25}',
9595    '\u{26}', '\u{27}', '\u{28}', '\u{29}', '\u{2a}', '\u{2b}', '\u{2c}', '\u{2d}', '\u{2e}',
9596    '\u{2f}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}',
9597    '\u{38}', '\u{39}', '\u{3a}', '\u{3b}', '\u{3c}', '\u{3d}', '\u{3e}', '\u{3f}', '\u{40}',
9598    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
9599    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
9600    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{5b}',
9601    '\u{5c}', '\u{5d}', '\u{5e}', '\u{5f}', '\u{60}', '\u{61}', '\u{62}', '\u{63}', '\u{64}',
9602    '\u{65}', '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}',
9603    '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{73}', '\u{74}', '\u{75}', '\u{76}',
9604    '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{7b}', '\u{7c}', '\u{7d}', '\u{7e}', '\u{1a}',
9605    '\u{c7}', '\u{fc}', '\u{e9}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e5}', '\u{e7}', '\u{ea}',
9606    '\u{eb}', '\u{e8}', '\u{ef}', '\u{ee}', '\u{ec}', '\u{c4}', '\u{c5}', '\u{c9}', '\u{e6}',
9607    '\u{c6}', '\u{f4}', '\u{f6}', '\u{f2}', '\u{fb}', '\u{f9}', '\u{ff}', '\u{d6}', '\u{dc}',
9608    '\u{f8}', '\u{a3}', '\u{d8}', '\u{20a7}', '\u{192}', '\u{e1}', '\u{ed}', '\u{f3}', '\u{fa}',
9609    '\u{f1}', '\u{d1}', '\u{aa}', '\u{ba}', '\u{bf}', '\u{2310}', '\u{ac}', '\u{bd}', '\u{bc}',
9610    '\u{a1}', '\u{ab}', '\u{a4}', '\u{2591}', '\u{2592}', '\u{2593}', '\u{2502}', '\u{2524}',
9611    '\u{2561}', '\u{2562}', '\u{2556}', '\u{2555}', '\u{2563}', '\u{2551}', '\u{2557}', '\u{255d}',
9612    '\u{255c}', '\u{255b}', '\u{2510}', '\u{2514}', '\u{2534}', '\u{252c}', '\u{251c}', '\u{2500}',
9613    '\u{253c}', '\u{255e}', '\u{255f}', '\u{255a}', '\u{2554}', '\u{2569}', '\u{2566}', '\u{2560}',
9614    '\u{2550}', '\u{256c}', '\u{2567}', '\u{2568}', '\u{2564}', '\u{2565}', '\u{2559}', '\u{2558}',
9615    '\u{2552}', '\u{2553}', '\u{256b}', '\u{256a}', '\u{2518}', '\u{250c}', '\u{2588}', '\u{2584}',
9616    '\u{258c}', '\u{2590}', '\u{2580}', '\u{3b1}', '\u{df}', '\u{393}', '\u{3c0}', '\u{3a3}',
9617    '\u{3c3}', '\u{3bc}', '\u{3c4}', '\u{3a6}', '\u{398}', '\u{3a9}', '\u{3b4}', '\u{221e}',
9618    '\u{3c6}', '\u{3b5}', '\u{2229}', '\u{2261}', '\u{b1}', '\u{2265}', '\u{2264}', '\u{2320}',
9619    '\u{2321}', '\u{f7}', '\u{2248}', '\u{b0}', '\u{2219}', '\u{b7}', '\u{221a}', '\u{207f}',
9620    '\u{b2}', '\u{25a0}', '\u{a0}',
9621];
9622const IBM_865_ENCODE_TABLE: &[(u16, u8)] = &[
9623    (0, 0),
9624    (1, 1),
9625    (2, 2),
9626    (3, 3),
9627    (4, 4),
9628    (5, 5),
9629    (6, 6),
9630    (7, 7),
9631    (8, 8),
9632    (9, 9),
9633    (10, 10),
9634    (11, 11),
9635    (12, 12),
9636    (13, 13),
9637    (14, 14),
9638    (15, 15),
9639    (16, 16),
9640    (17, 17),
9641    (18, 18),
9642    (19, 19),
9643    (20, 20),
9644    (21, 21),
9645    (22, 22),
9646    (23, 23),
9647    (24, 24),
9648    (25, 25),
9649    (26, 127),
9650    (27, 27),
9651    (28, 26),
9652    (29, 29),
9653    (30, 30),
9654    (31, 31),
9655    (32, 32),
9656    (33, 33),
9657    (34, 34),
9658    (35, 35),
9659    (36, 36),
9660    (37, 37),
9661    (38, 38),
9662    (39, 39),
9663    (40, 40),
9664    (41, 41),
9665    (42, 42),
9666    (43, 43),
9667    (44, 44),
9668    (45, 45),
9669    (46, 46),
9670    (47, 47),
9671    (48, 48),
9672    (49, 49),
9673    (50, 50),
9674    (51, 51),
9675    (52, 52),
9676    (53, 53),
9677    (54, 54),
9678    (55, 55),
9679    (56, 56),
9680    (57, 57),
9681    (58, 58),
9682    (59, 59),
9683    (60, 60),
9684    (61, 61),
9685    (62, 62),
9686    (63, 63),
9687    (64, 64),
9688    (65, 65),
9689    (66, 66),
9690    (67, 67),
9691    (68, 68),
9692    (69, 69),
9693    (70, 70),
9694    (71, 71),
9695    (72, 72),
9696    (73, 73),
9697    (74, 74),
9698    (75, 75),
9699    (76, 76),
9700    (77, 77),
9701    (78, 78),
9702    (79, 79),
9703    (80, 80),
9704    (81, 81),
9705    (82, 82),
9706    (83, 83),
9707    (84, 84),
9708    (85, 85),
9709    (86, 86),
9710    (87, 87),
9711    (88, 88),
9712    (89, 89),
9713    (90, 90),
9714    (91, 91),
9715    (92, 92),
9716    (93, 93),
9717    (94, 94),
9718    (95, 95),
9719    (96, 96),
9720    (97, 97),
9721    (98, 98),
9722    (99, 99),
9723    (100, 100),
9724    (101, 101),
9725    (102, 102),
9726    (103, 103),
9727    (104, 104),
9728    (105, 105),
9729    (106, 106),
9730    (107, 107),
9731    (108, 108),
9732    (109, 109),
9733    (110, 110),
9734    (111, 111),
9735    (112, 112),
9736    (113, 113),
9737    (114, 114),
9738    (115, 115),
9739    (116, 116),
9740    (117, 117),
9741    (118, 118),
9742    (119, 119),
9743    (120, 120),
9744    (121, 121),
9745    (122, 122),
9746    (123, 123),
9747    (124, 124),
9748    (125, 125),
9749    (126, 126),
9750    (127, 28),
9751    (160, 255),
9752    (161, 173),
9753    (163, 156),
9754    (164, 175),
9755    (170, 166),
9756    (171, 174),
9757    (172, 170),
9758    (176, 248),
9759    (177, 241),
9760    (178, 253),
9761    (183, 250),
9762    (186, 167),
9763    (188, 172),
9764    (189, 171),
9765    (191, 168),
9766    (196, 142),
9767    (197, 143),
9768    (198, 146),
9769    (199, 128),
9770    (201, 144),
9771    (209, 165),
9772    (214, 153),
9773    (216, 157),
9774    (220, 154),
9775    (223, 225),
9776    (224, 133),
9777    (225, 160),
9778    (226, 131),
9779    (228, 132),
9780    (229, 134),
9781    (230, 145),
9782    (231, 135),
9783    (232, 138),
9784    (233, 130),
9785    (234, 136),
9786    (235, 137),
9787    (236, 141),
9788    (237, 161),
9789    (238, 140),
9790    (239, 139),
9791    (241, 164),
9792    (242, 149),
9793    (243, 162),
9794    (244, 147),
9795    (246, 148),
9796    (247, 246),
9797    (248, 155),
9798    (249, 151),
9799    (250, 163),
9800    (251, 150),
9801    (252, 129),
9802    (255, 152),
9803    (402, 159),
9804    (915, 226),
9805    (920, 233),
9806    (931, 228),
9807    (934, 232),
9808    (937, 234),
9809    (945, 224),
9810    (948, 235),
9811    (949, 238),
9812    (956, 230),
9813    (960, 227),
9814    (963, 229),
9815    (964, 231),
9816    (966, 237),
9817    (8319, 252),
9818    (8359, 158),
9819    (8729, 249),
9820    (8730, 251),
9821    (8734, 236),
9822    (8745, 239),
9823    (8776, 247),
9824    (8801, 240),
9825    (8804, 243),
9826    (8805, 242),
9827    (8976, 169),
9828    (8992, 244),
9829    (8993, 245),
9830    (9472, 196),
9831    (9474, 179),
9832    (9484, 218),
9833    (9488, 191),
9834    (9492, 192),
9835    (9496, 217),
9836    (9500, 195),
9837    (9508, 180),
9838    (9516, 194),
9839    (9524, 193),
9840    (9532, 197),
9841    (9552, 205),
9842    (9553, 186),
9843    (9554, 213),
9844    (9555, 214),
9845    (9556, 201),
9846    (9557, 184),
9847    (9558, 183),
9848    (9559, 187),
9849    (9560, 212),
9850    (9561, 211),
9851    (9562, 200),
9852    (9563, 190),
9853    (9564, 189),
9854    (9565, 188),
9855    (9566, 198),
9856    (9567, 199),
9857    (9568, 204),
9858    (9569, 181),
9859    (9570, 182),
9860    (9571, 185),
9861    (9572, 209),
9862    (9573, 210),
9863    (9574, 203),
9864    (9575, 207),
9865    (9576, 208),
9866    (9577, 202),
9867    (9578, 216),
9868    (9579, 215),
9869    (9580, 206),
9870    (9600, 223),
9871    (9604, 220),
9872    (9608, 219),
9873    (9612, 221),
9874    (9616, 222),
9875    (9617, 176),
9876    (9618, 177),
9877    (9619, 178),
9878    (9632, 254),
9879];
9880
9881impl_ebcdic_encoder_and_decoder!(
9882    IBM868,
9883    "IBM868",
9884    IBM868Encoder,
9885    IBM868Decoder,
9886    IBM_868_ENCODE_TABLE,
9887    IBM_868_DECODE_TABLE
9888);
9889const IBM_868_DECODE_TABLE: [char; 256] = [
9890    '\u{0}',
9891    '\u{1}',
9892    '\u{2}',
9893    '\u{3}',
9894    '\u{4}',
9895    '\u{5}',
9896    '\u{6}',
9897    '\u{7}',
9898    '\u{8}',
9899    '\u{9}',
9900    '\u{a}',
9901    '\u{b}',
9902    '\u{c}',
9903    '\u{d}',
9904    '\u{e}',
9905    '\u{f}',
9906    '\u{10}',
9907    '\u{11}',
9908    '\u{12}',
9909    '\u{13}',
9910    '\u{14}',
9911    '\u{15}',
9912    '\u{16}',
9913    '\u{17}',
9914    '\u{18}',
9915    '\u{19}',
9916    '\u{1c}',
9917    '\u{1b}',
9918    '\u{7f}',
9919    '\u{1d}',
9920    '\u{1e}',
9921    '\u{1f}',
9922    '\u{20}',
9923    '\u{21}',
9924    '\u{22}',
9925    '\u{23}',
9926    '\u{24}',
9927    '\u{25}',
9928    '\u{26}',
9929    '\u{27}',
9930    '\u{28}',
9931    '\u{29}',
9932    '\u{2a}',
9933    '\u{2b}',
9934    '\u{2c}',
9935    '\u{2d}',
9936    '\u{2e}',
9937    '\u{2f}',
9938    '\u{30}',
9939    '\u{31}',
9940    '\u{32}',
9941    '\u{33}',
9942    '\u{34}',
9943    '\u{35}',
9944    '\u{36}',
9945    '\u{37}',
9946    '\u{38}',
9947    '\u{39}',
9948    '\u{3a}',
9949    '\u{3b}',
9950    '\u{3c}',
9951    '\u{3d}',
9952    '\u{3e}',
9953    '\u{3f}',
9954    '\u{40}',
9955    '\u{41}',
9956    '\u{42}',
9957    '\u{43}',
9958    '\u{44}',
9959    '\u{45}',
9960    '\u{46}',
9961    '\u{47}',
9962    '\u{48}',
9963    '\u{49}',
9964    '\u{4a}',
9965    '\u{4b}',
9966    '\u{4c}',
9967    '\u{4d}',
9968    '\u{4e}',
9969    '\u{4f}',
9970    '\u{50}',
9971    '\u{51}',
9972    '\u{52}',
9973    '\u{53}',
9974    '\u{54}',
9975    '\u{55}',
9976    '\u{56}',
9977    '\u{57}',
9978    '\u{58}',
9979    '\u{59}',
9980    '\u{5a}',
9981    '\u{5b}',
9982    '\u{5c}',
9983    '\u{5d}',
9984    '\u{5e}',
9985    '\u{5f}',
9986    '\u{60}',
9987    '\u{61}',
9988    '\u{62}',
9989    '\u{63}',
9990    '\u{64}',
9991    '\u{65}',
9992    '\u{66}',
9993    '\u{67}',
9994    '\u{68}',
9995    '\u{69}',
9996    '\u{6a}',
9997    '\u{6b}',
9998    '\u{6c}',
9999    '\u{6d}',
10000    '\u{6e}',
10001    '\u{6f}',
10002    '\u{70}',
10003    '\u{71}',
10004    '\u{72}',
10005    '\u{73}',
10006    '\u{74}',
10007    '\u{75}',
10008    '\u{76}',
10009    '\u{77}',
10010    '\u{78}',
10011    '\u{79}',
10012    '\u{7a}',
10013    '\u{7b}',
10014    '\u{7c}',
10015    '\u{7d}',
10016    '\u{7e}',
10017    '\u{1a}',
10018    '\u{6f0}',
10019    '\u{6f1}',
10020    '\u{6f2}',
10021    '\u{6f3}',
10022    '\u{6f4}',
10023    '\u{6f5}',
10024    '\u{6f6}',
10025    '\u{6f7}',
10026    '\u{6f8}',
10027    '\u{6f9}',
10028    '\u{60c}',
10029    '\u{61b}',
10030    '\u{61f}',
10031    '\u{fe81}',
10032    '\u{fe8d}',
10033    '\u{fe8e}',
10034    '\u{f8fb}',
10035    '\u{fe8f}',
10036    '\u{fe91}',
10037    '\u{fb56}',
10038    '\u{fb58}',
10039    '\u{fe93}',
10040    '\u{fe95}',
10041    '\u{fe97}',
10042    '\u{fb66}',
10043    '\u{fb68}',
10044    '\u{fe99}',
10045    '\u{fe9b}',
10046    '\u{fe9d}',
10047    '\u{fe9f}',
10048    '\u{fb7a}',
10049    '\u{fb7c}',
10050    '\u{fea1}',
10051    '\u{fea3}',
10052    '\u{fea5}',
10053    '\u{fea7}',
10054    '\u{fea9}',
10055    '\u{fb88}',
10056    '\u{feab}',
10057    '\u{fead}',
10058    '\u{fb8c}',
10059    '\u{feaf}',
10060    '\u{fb8a}',
10061    '\u{feb1}',
10062    '\u{feb3}',
10063    '\u{feb5}',
10064    '\u{ab}',
10065    '\u{bb}',
10066    '\u{2591}',
10067    '\u{2592}',
10068    '\u{2593}',
10069    '\u{2502}',
10070    '\u{2524}',
10071    '\u{feb7}',
10072    '\u{feb9}',
10073    '\u{febb}',
10074    '\u{febd}',
10075    '\u{2563}',
10076    '\u{2551}',
10077    '\u{2557}',
10078    '\u{255d}',
10079    '\u{febf}',
10080    '\u{fec3}',
10081    '\u{2510}',
10082    '\u{2514}',
10083    '\u{2534}',
10084    '\u{252c}',
10085    '\u{251c}',
10086    '\u{2500}',
10087    '\u{253c}',
10088    '\u{fec7}',
10089    '\u{fec9}',
10090    '\u{255a}',
10091    '\u{2554}',
10092    '\u{2569}',
10093    '\u{2566}',
10094    '\u{2560}',
10095    '\u{2550}',
10096    '\u{256c}',
10097    '\u{feca}',
10098    '\u{fecb}',
10099    '\u{fecc}',
10100    '\u{fecd}',
10101    '\u{fece}',
10102    '\u{fecf}',
10103    '\u{fed0}',
10104    '\u{fed1}',
10105    '\u{fed3}',
10106    '\u{fed5}',
10107    '\u{2518}',
10108    '\u{250c}',
10109    '\u{2588}',
10110    '\u{2584}',
10111    '\u{fed7}',
10112    '\u{fb8e}',
10113    '\u{2580}',
10114    '\u{fedb}',
10115    '\u{fb92}',
10116    '\u{fb94}',
10117    '\u{fedd}',
10118    '\u{fedf}',
10119    '\u{fee0}',
10120    '\u{fee1}',
10121    '\u{fee3}',
10122    '\u{fb9e}',
10123    '\u{fee5}',
10124    '\u{fee7}',
10125    '\u{fe85}',
10126    '\u{feed}',
10127    '\u{fba6}',
10128    '\u{fba8}',
10129    '\u{fba9}',
10130    '\u{ad}',
10131    '\u{fbaa}',
10132    '\u{fe80}',
10133    '\u{fe89}',
10134    '\u{fe8a}',
10135    '\u{fe8b}',
10136    '\u{fbfc}',
10137    '\u{fbfd}',
10138    '\u{fbfe}',
10139    '\u{fbb0}',
10140    '\u{fbae}',
10141    '\u{fe7c}',
10142    '\u{fe7d}',
10143    char::REPLACEMENT_CHARACTER,
10144    '\u{25a0}',
10145    '\u{a0}',
10146];
10147const IBM_868_ENCODE_TABLE: &[(u16, u8)] = &[
10148    (0, 0),
10149    (1, 1),
10150    (2, 2),
10151    (3, 3),
10152    (4, 4),
10153    (5, 5),
10154    (6, 6),
10155    (7, 7),
10156    (8, 8),
10157    (9, 9),
10158    (10, 10),
10159    (11, 11),
10160    (12, 12),
10161    (13, 13),
10162    (14, 14),
10163    (15, 15),
10164    (16, 16),
10165    (17, 17),
10166    (18, 18),
10167    (19, 19),
10168    (20, 20),
10169    (21, 21),
10170    (22, 22),
10171    (23, 23),
10172    (24, 24),
10173    (25, 25),
10174    (26, 127),
10175    (27, 27),
10176    (28, 26),
10177    (29, 29),
10178    (30, 30),
10179    (31, 31),
10180    (32, 32),
10181    (33, 33),
10182    (34, 34),
10183    (35, 35),
10184    (36, 36),
10185    (37, 37),
10186    (38, 38),
10187    (39, 39),
10188    (40, 40),
10189    (41, 41),
10190    (42, 42),
10191    (43, 43),
10192    (44, 44),
10193    (45, 45),
10194    (46, 46),
10195    (47, 47),
10196    (48, 48),
10197    (49, 49),
10198    (50, 50),
10199    (51, 51),
10200    (52, 52),
10201    (53, 53),
10202    (54, 54),
10203    (55, 55),
10204    (56, 56),
10205    (57, 57),
10206    (58, 58),
10207    (59, 59),
10208    (60, 60),
10209    (61, 61),
10210    (62, 62),
10211    (63, 63),
10212    (64, 64),
10213    (65, 65),
10214    (66, 66),
10215    (67, 67),
10216    (68, 68),
10217    (69, 69),
10218    (70, 70),
10219    (71, 71),
10220    (72, 72),
10221    (73, 73),
10222    (74, 74),
10223    (75, 75),
10224    (76, 76),
10225    (77, 77),
10226    (78, 78),
10227    (79, 79),
10228    (80, 80),
10229    (81, 81),
10230    (82, 82),
10231    (83, 83),
10232    (84, 84),
10233    (85, 85),
10234    (86, 86),
10235    (87, 87),
10236    (88, 88),
10237    (89, 89),
10238    (90, 90),
10239    (91, 91),
10240    (92, 92),
10241    (93, 93),
10242    (94, 94),
10243    (95, 95),
10244    (96, 96),
10245    (97, 97),
10246    (98, 98),
10247    (99, 99),
10248    (100, 100),
10249    (101, 101),
10250    (102, 102),
10251    (103, 103),
10252    (104, 104),
10253    (105, 105),
10254    (106, 106),
10255    (107, 107),
10256    (108, 108),
10257    (109, 109),
10258    (110, 110),
10259    (111, 111),
10260    (112, 112),
10261    (113, 113),
10262    (114, 114),
10263    (115, 115),
10264    (116, 116),
10265    (117, 117),
10266    (118, 118),
10267    (119, 119),
10268    (120, 120),
10269    (121, 121),
10270    (122, 122),
10271    (123, 123),
10272    (124, 124),
10273    (125, 125),
10274    (126, 126),
10275    (127, 28),
10276    (160, 255),
10277    (171, 174),
10278    (173, 240),
10279    (187, 175),
10280    (1548, 138),
10281    (1563, 139),
10282    (1567, 140),
10283    (1776, 128),
10284    (1777, 129),
10285    (1778, 130),
10286    (1779, 131),
10287    (1780, 132),
10288    (1781, 133),
10289    (1782, 134),
10290    (1783, 135),
10291    (1784, 136),
10292    (1785, 137),
10293    (9472, 196),
10294    (9474, 179),
10295    (9484, 218),
10296    (9488, 191),
10297    (9492, 192),
10298    (9496, 217),
10299    (9500, 195),
10300    (9508, 180),
10301    (9516, 194),
10302    (9524, 193),
10303    (9532, 197),
10304    (9552, 205),
10305    (9553, 186),
10306    (9556, 201),
10307    (9559, 187),
10308    (9562, 200),
10309    (9565, 188),
10310    (9568, 204),
10311    (9571, 185),
10312    (9574, 203),
10313    (9577, 202),
10314    (9580, 206),
10315    (9600, 223),
10316    (9604, 220),
10317    (9608, 219),
10318    (9617, 176),
10319    (9618, 177),
10320    (9619, 178),
10321    (9632, 254),
10322    (63739, 144),
10323    (64342, 147),
10324    (64344, 148),
10325    (64358, 152),
10326    (64360, 153),
10327    (64378, 158),
10328    (64380, 159),
10329    (64392, 165),
10330    (64394, 170),
10331    (64396, 168),
10332    (64398, 222),
10333    (64402, 225),
10334    (64404, 226),
10335    (64414, 232),
10336    (64422, 237),
10337    (64424, 238),
10338    (64425, 239),
10339    (64426, 241),
10340    (64430, 250),
10341    (64432, 249),
10342    (64508, 246),
10343    (64509, 247),
10344    (64510, 248),
10345    (65148, 251),
10346    (65149, 252),
10347    (65152, 242),
10348    (65153, 141),
10349    (65157, 235),
10350    (65161, 243),
10351    (65162, 244),
10352    (65163, 245),
10353    (65165, 142),
10354    (65166, 143),
10355    (65167, 145),
10356    (65169, 146),
10357    (65171, 149),
10358    (65173, 150),
10359    (65175, 151),
10360    (65177, 154),
10361    (65179, 155),
10362    (65181, 156),
10363    (65183, 157),
10364    (65185, 160),
10365    (65187, 161),
10366    (65189, 162),
10367    (65191, 163),
10368    (65193, 164),
10369    (65195, 166),
10370    (65197, 167),
10371    (65199, 169),
10372    (65201, 171),
10373    (65203, 172),
10374    (65205, 173),
10375    (65207, 181),
10376    (65209, 182),
10377    (65211, 183),
10378    (65213, 184),
10379    (65215, 189),
10380    (65219, 190),
10381    (65223, 198),
10382    (65225, 199),
10383    (65226, 207),
10384    (65227, 208),
10385    (65228, 209),
10386    (65229, 210),
10387    (65230, 211),
10388    (65231, 212),
10389    (65232, 213),
10390    (65233, 214),
10391    (65235, 215),
10392    (65237, 216),
10393    (65239, 221),
10394    (65243, 224),
10395    (65245, 227),
10396    (65247, 228),
10397    (65248, 229),
10398    (65249, 230),
10399    (65251, 231),
10400    (65253, 233),
10401    (65255, 234),
10402    (65261, 236),
10403];
10404
10405impl_ebcdic_encoder_and_decoder!(
10406    IBM869,
10407    "IBM869",
10408    IBM869Encoder,
10409    IBM869Decoder,
10410    IBM_869_ENCODE_TABLE,
10411    IBM_869_DECODE_TABLE
10412);
10413const IBM_869_DECODE_TABLE: [char; 256] = [
10414    '\u{0}',
10415    '\u{1}',
10416    '\u{2}',
10417    '\u{3}',
10418    '\u{4}',
10419    '\u{5}',
10420    '\u{6}',
10421    '\u{7}',
10422    '\u{8}',
10423    '\u{9}',
10424    '\u{a}',
10425    '\u{b}',
10426    '\u{c}',
10427    '\u{d}',
10428    '\u{e}',
10429    '\u{f}',
10430    '\u{10}',
10431    '\u{11}',
10432    '\u{12}',
10433    '\u{13}',
10434    '\u{14}',
10435    '\u{15}',
10436    '\u{16}',
10437    '\u{17}',
10438    '\u{18}',
10439    '\u{19}',
10440    '\u{1c}',
10441    '\u{1b}',
10442    '\u{7f}',
10443    '\u{1d}',
10444    '\u{1e}',
10445    '\u{1f}',
10446    '\u{20}',
10447    '\u{21}',
10448    '\u{22}',
10449    '\u{23}',
10450    '\u{24}',
10451    '\u{25}',
10452    '\u{26}',
10453    '\u{27}',
10454    '\u{28}',
10455    '\u{29}',
10456    '\u{2a}',
10457    '\u{2b}',
10458    '\u{2c}',
10459    '\u{2d}',
10460    '\u{2e}',
10461    '\u{2f}',
10462    '\u{30}',
10463    '\u{31}',
10464    '\u{32}',
10465    '\u{33}',
10466    '\u{34}',
10467    '\u{35}',
10468    '\u{36}',
10469    '\u{37}',
10470    '\u{38}',
10471    '\u{39}',
10472    '\u{3a}',
10473    '\u{3b}',
10474    '\u{3c}',
10475    '\u{3d}',
10476    '\u{3e}',
10477    '\u{3f}',
10478    '\u{40}',
10479    '\u{41}',
10480    '\u{42}',
10481    '\u{43}',
10482    '\u{44}',
10483    '\u{45}',
10484    '\u{46}',
10485    '\u{47}',
10486    '\u{48}',
10487    '\u{49}',
10488    '\u{4a}',
10489    '\u{4b}',
10490    '\u{4c}',
10491    '\u{4d}',
10492    '\u{4e}',
10493    '\u{4f}',
10494    '\u{50}',
10495    '\u{51}',
10496    '\u{52}',
10497    '\u{53}',
10498    '\u{54}',
10499    '\u{55}',
10500    '\u{56}',
10501    '\u{57}',
10502    '\u{58}',
10503    '\u{59}',
10504    '\u{5a}',
10505    '\u{5b}',
10506    '\u{5c}',
10507    '\u{5d}',
10508    '\u{5e}',
10509    '\u{5f}',
10510    '\u{60}',
10511    '\u{61}',
10512    '\u{62}',
10513    '\u{63}',
10514    '\u{64}',
10515    '\u{65}',
10516    '\u{66}',
10517    '\u{67}',
10518    '\u{68}',
10519    '\u{69}',
10520    '\u{6a}',
10521    '\u{6b}',
10522    '\u{6c}',
10523    '\u{6d}',
10524    '\u{6e}',
10525    '\u{6f}',
10526    '\u{70}',
10527    '\u{71}',
10528    '\u{72}',
10529    '\u{73}',
10530    '\u{74}',
10531    '\u{75}',
10532    '\u{76}',
10533    '\u{77}',
10534    '\u{78}',
10535    '\u{79}',
10536    '\u{7a}',
10537    '\u{7b}',
10538    '\u{7c}',
10539    '\u{7d}',
10540    '\u{7e}',
10541    '\u{1a}',
10542    char::REPLACEMENT_CHARACTER,
10543    char::REPLACEMENT_CHARACTER,
10544    char::REPLACEMENT_CHARACTER,
10545    char::REPLACEMENT_CHARACTER,
10546    char::REPLACEMENT_CHARACTER,
10547    char::REPLACEMENT_CHARACTER,
10548    '\u{386}',
10549    char::REPLACEMENT_CHARACTER,
10550    '\u{387}',
10551    '\u{ac}',
10552    '\u{a6}',
10553    '\u{2018}',
10554    '\u{2019}',
10555    '\u{388}',
10556    '\u{2015}',
10557    '\u{389}',
10558    '\u{38a}',
10559    '\u{3aa}',
10560    '\u{38c}',
10561    char::REPLACEMENT_CHARACTER,
10562    char::REPLACEMENT_CHARACTER,
10563    '\u{38e}',
10564    '\u{3ab}',
10565    '\u{a9}',
10566    '\u{38f}',
10567    '\u{b2}',
10568    '\u{b3}',
10569    '\u{3ac}',
10570    '\u{a3}',
10571    '\u{3ad}',
10572    '\u{3ae}',
10573    '\u{3af}',
10574    '\u{3ca}',
10575    '\u{390}',
10576    '\u{3cc}',
10577    '\u{3cd}',
10578    '\u{391}',
10579    '\u{392}',
10580    '\u{393}',
10581    '\u{394}',
10582    '\u{395}',
10583    '\u{396}',
10584    '\u{397}',
10585    '\u{bd}',
10586    '\u{398}',
10587    '\u{399}',
10588    '\u{ab}',
10589    '\u{bb}',
10590    '\u{2591}',
10591    '\u{2592}',
10592    '\u{2593}',
10593    '\u{2502}',
10594    '\u{2524}',
10595    '\u{39a}',
10596    '\u{39b}',
10597    '\u{39c}',
10598    '\u{39d}',
10599    '\u{2563}',
10600    '\u{2551}',
10601    '\u{2557}',
10602    '\u{255d}',
10603    '\u{39e}',
10604    '\u{39f}',
10605    '\u{2510}',
10606    '\u{2514}',
10607    '\u{2534}',
10608    '\u{252c}',
10609    '\u{251c}',
10610    '\u{2500}',
10611    '\u{253c}',
10612    '\u{3a0}',
10613    '\u{3a1}',
10614    '\u{255a}',
10615    '\u{2554}',
10616    '\u{2569}',
10617    '\u{2566}',
10618    '\u{2560}',
10619    '\u{2550}',
10620    '\u{256c}',
10621    '\u{3a3}',
10622    '\u{3a4}',
10623    '\u{3a5}',
10624    '\u{3a6}',
10625    '\u{3a7}',
10626    '\u{3a8}',
10627    '\u{3a9}',
10628    '\u{3b1}',
10629    '\u{3b2}',
10630    '\u{3b3}',
10631    '\u{2518}',
10632    '\u{250c}',
10633    '\u{2588}',
10634    '\u{2584}',
10635    '\u{3b4}',
10636    '\u{3b5}',
10637    '\u{2580}',
10638    '\u{3b6}',
10639    '\u{3b7}',
10640    '\u{3b8}',
10641    '\u{3b9}',
10642    '\u{3ba}',
10643    '\u{3bb}',
10644    '\u{3bc}',
10645    '\u{3bd}',
10646    '\u{3be}',
10647    '\u{3bf}',
10648    '\u{3c0}',
10649    '\u{3c1}',
10650    '\u{3c3}',
10651    '\u{3c2}',
10652    '\u{3c4}',
10653    '\u{b4}',
10654    '\u{ad}',
10655    '\u{b1}',
10656    '\u{3c5}',
10657    '\u{3c6}',
10658    '\u{3c7}',
10659    '\u{a7}',
10660    '\u{3c8}',
10661    '\u{385}',
10662    '\u{b0}',
10663    '\u{a8}',
10664    '\u{3c9}',
10665    '\u{3cb}',
10666    '\u{3b0}',
10667    '\u{3ce}',
10668    '\u{25a0}',
10669    '\u{a0}',
10670];
10671const IBM_869_ENCODE_TABLE: &[(u16, u8)] = &[
10672    (0, 0),
10673    (1, 1),
10674    (2, 2),
10675    (3, 3),
10676    (4, 4),
10677    (5, 5),
10678    (6, 6),
10679    (7, 7),
10680    (8, 8),
10681    (9, 9),
10682    (10, 10),
10683    (11, 11),
10684    (12, 12),
10685    (13, 13),
10686    (14, 14),
10687    (15, 15),
10688    (16, 16),
10689    (17, 17),
10690    (18, 18),
10691    (19, 19),
10692    (20, 20),
10693    (21, 21),
10694    (22, 22),
10695    (23, 23),
10696    (24, 24),
10697    (25, 25),
10698    (26, 127),
10699    (27, 27),
10700    (28, 26),
10701    (29, 29),
10702    (30, 30),
10703    (31, 31),
10704    (32, 32),
10705    (33, 33),
10706    (34, 34),
10707    (35, 35),
10708    (36, 36),
10709    (37, 37),
10710    (38, 38),
10711    (39, 39),
10712    (40, 40),
10713    (41, 41),
10714    (42, 42),
10715    (43, 43),
10716    (44, 44),
10717    (45, 45),
10718    (46, 46),
10719    (47, 47),
10720    (48, 48),
10721    (49, 49),
10722    (50, 50),
10723    (51, 51),
10724    (52, 52),
10725    (53, 53),
10726    (54, 54),
10727    (55, 55),
10728    (56, 56),
10729    (57, 57),
10730    (58, 58),
10731    (59, 59),
10732    (60, 60),
10733    (61, 61),
10734    (62, 62),
10735    (63, 63),
10736    (64, 64),
10737    (65, 65),
10738    (66, 66),
10739    (67, 67),
10740    (68, 68),
10741    (69, 69),
10742    (70, 70),
10743    (71, 71),
10744    (72, 72),
10745    (73, 73),
10746    (74, 74),
10747    (75, 75),
10748    (76, 76),
10749    (77, 77),
10750    (78, 78),
10751    (79, 79),
10752    (80, 80),
10753    (81, 81),
10754    (82, 82),
10755    (83, 83),
10756    (84, 84),
10757    (85, 85),
10758    (86, 86),
10759    (87, 87),
10760    (88, 88),
10761    (89, 89),
10762    (90, 90),
10763    (91, 91),
10764    (92, 92),
10765    (93, 93),
10766    (94, 94),
10767    (95, 95),
10768    (96, 96),
10769    (97, 97),
10770    (98, 98),
10771    (99, 99),
10772    (100, 100),
10773    (101, 101),
10774    (102, 102),
10775    (103, 103),
10776    (104, 104),
10777    (105, 105),
10778    (106, 106),
10779    (107, 107),
10780    (108, 108),
10781    (109, 109),
10782    (110, 110),
10783    (111, 111),
10784    (112, 112),
10785    (113, 113),
10786    (114, 114),
10787    (115, 115),
10788    (116, 116),
10789    (117, 117),
10790    (118, 118),
10791    (119, 119),
10792    (120, 120),
10793    (121, 121),
10794    (122, 122),
10795    (123, 123),
10796    (124, 124),
10797    (125, 125),
10798    (126, 126),
10799    (127, 28),
10800    (160, 255),
10801    (163, 156),
10802    (166, 138),
10803    (167, 245),
10804    (168, 249),
10805    (169, 151),
10806    (171, 174),
10807    (172, 137),
10808    (173, 240),
10809    (176, 248),
10810    (177, 241),
10811    (178, 153),
10812    (179, 154),
10813    (180, 239),
10814    (187, 175),
10815    (189, 171),
10816    (901, 247),
10817    (902, 134),
10818    (903, 136),
10819    (904, 141),
10820    (905, 143),
10821    (906, 144),
10822    (908, 146),
10823    (910, 149),
10824    (911, 152),
10825    (912, 161),
10826    (913, 164),
10827    (914, 165),
10828    (915, 166),
10829    (916, 167),
10830    (917, 168),
10831    (918, 169),
10832    (919, 170),
10833    (920, 172),
10834    (921, 173),
10835    (922, 181),
10836    (923, 182),
10837    (924, 183),
10838    (925, 184),
10839    (926, 189),
10840    (927, 190),
10841    (928, 198),
10842    (929, 199),
10843    (931, 207),
10844    (932, 208),
10845    (933, 209),
10846    (934, 210),
10847    (935, 211),
10848    (936, 212),
10849    (937, 213),
10850    (938, 145),
10851    (939, 150),
10852    (940, 155),
10853    (941, 157),
10854    (942, 158),
10855    (943, 159),
10856    (944, 252),
10857    (945, 214),
10858    (946, 215),
10859    (947, 216),
10860    (948, 221),
10861    (949, 222),
10862    (950, 224),
10863    (951, 225),
10864    (952, 226),
10865    (953, 227),
10866    (954, 228),
10867    (955, 229),
10868    (956, 230),
10869    (957, 231),
10870    (958, 232),
10871    (959, 233),
10872    (960, 234),
10873    (961, 235),
10874    (962, 237),
10875    (963, 236),
10876    (964, 238),
10877    (965, 242),
10878    (966, 243),
10879    (967, 244),
10880    (968, 246),
10881    (969, 250),
10882    (970, 160),
10883    (971, 251),
10884    (972, 162),
10885    (973, 163),
10886    (974, 253),
10887    (8213, 142),
10888    (8216, 139),
10889    (8217, 140),
10890    (9472, 196),
10891    (9474, 179),
10892    (9484, 218),
10893    (9488, 191),
10894    (9492, 192),
10895    (9496, 217),
10896    (9500, 195),
10897    (9508, 180),
10898    (9516, 194),
10899    (9524, 193),
10900    (9532, 197),
10901    (9552, 205),
10902    (9553, 186),
10903    (9556, 201),
10904    (9559, 187),
10905    (9562, 200),
10906    (9565, 188),
10907    (9568, 204),
10908    (9571, 185),
10909    (9574, 203),
10910    (9577, 202),
10911    (9580, 206),
10912    (9600, 223),
10913    (9604, 220),
10914    (9608, 219),
10915    (9617, 176),
10916    (9618, 177),
10917    (9619, 178),
10918    (9632, 254),
10919];
10920
10921impl_ebcdic_encoder_and_decoder!(
10922    IBM870,
10923    "IBM870",
10924    IBM870Encoder,
10925    IBM870Decoder,
10926    IBM_870_ENCODE_TABLE,
10927    IBM_870_DECODE_TABLE
10928);
10929const IBM_870_DECODE_TABLE: [char; 256] = [
10930    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
10931    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
10932    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
10933    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
10934    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
10935    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
10936    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
10937    '\u{a0}', '\u{e2}', '\u{e4}', '\u{163}', '\u{e1}', '\u{103}', '\u{10d}', '\u{e7}', '\u{107}',
10938    '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{119}',
10939    '\u{eb}', '\u{16f}', '\u{ed}', '\u{ee}', '\u{13e}', '\u{13a}', '\u{df}', '\u{5d}', '\u{24}',
10940    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{2dd}',
10941    '\u{c1}', '\u{102}', '\u{10c}', '\u{c7}', '\u{106}', '\u{7c}', '\u{2c}', '\u{25}', '\u{5f}',
10942    '\u{3e}', '\u{3f}', '\u{2c7}', '\u{c9}', '\u{118}', '\u{cb}', '\u{16e}', '\u{cd}', '\u{ce}',
10943    '\u{13d}', '\u{139}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}', '\u{27}', '\u{3d}', '\u{22}',
10944    '\u{2d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
10945    '\u{69}', '\u{15b}', '\u{148}', '\u{111}', '\u{fd}', '\u{159}', '\u{15f}', '\u{b0}', '\u{6a}',
10946    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{142}',
10947    '\u{144}', '\u{161}', '\u{b8}', '\u{2db}', '\u{a4}', '\u{105}', '\u{7e}', '\u{73}', '\u{74}',
10948    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{15a}', '\u{147}', '\u{110}',
10949    '\u{dd}', '\u{158}', '\u{15e}', '\u{2d9}', '\u{104}', '\u{17c}', '\u{162}', '\u{17b}',
10950    '\u{a7}', '\u{17e}', '\u{17a}', '\u{17d}', '\u{179}', '\u{141}', '\u{143}', '\u{160}',
10951    '\u{a8}', '\u{b4}', '\u{d7}', '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}',
10952    '\u{46}', '\u{47}', '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{f6}', '\u{155}', '\u{f3}',
10953    '\u{151}', '\u{7d}', '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}',
10954    '\u{51}', '\u{52}', '\u{11a}', '\u{171}', '\u{fc}', '\u{165}', '\u{fa}', '\u{11b}', '\u{5c}',
10955    '\u{f7}', '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}',
10956    '\u{10f}', '\u{d4}', '\u{d6}', '\u{154}', '\u{d3}', '\u{150}', '\u{30}', '\u{31}', '\u{32}',
10957    '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{10e}', '\u{170}',
10958    '\u{dc}', '\u{164}', '\u{da}', '\u{9f}',
10959];
10960const IBM_870_ENCODE_TABLE: &[(u16, u8)] = &[
10961    (0, 0),
10962    (1, 1),
10963    (2, 2),
10964    (3, 3),
10965    (4, 55),
10966    (5, 45),
10967    (6, 46),
10968    (7, 47),
10969    (8, 22),
10970    (9, 5),
10971    (10, 37),
10972    (11, 11),
10973    (12, 12),
10974    (13, 13),
10975    (14, 14),
10976    (15, 15),
10977    (16, 16),
10978    (17, 17),
10979    (18, 18),
10980    (19, 19),
10981    (20, 60),
10982    (21, 61),
10983    (22, 50),
10984    (23, 38),
10985    (24, 24),
10986    (25, 25),
10987    (26, 63),
10988    (27, 39),
10989    (28, 28),
10990    (29, 29),
10991    (30, 30),
10992    (31, 31),
10993    (32, 64),
10994    (33, 79),
10995    (34, 127),
10996    (35, 123),
10997    (36, 91),
10998    (37, 108),
10999    (38, 80),
11000    (39, 125),
11001    (40, 77),
11002    (41, 93),
11003    (42, 92),
11004    (43, 78),
11005    (44, 107),
11006    (45, 96),
11007    (46, 75),
11008    (47, 97),
11009    (48, 240),
11010    (49, 241),
11011    (50, 242),
11012    (51, 243),
11013    (52, 244),
11014    (53, 245),
11015    (54, 246),
11016    (55, 247),
11017    (56, 248),
11018    (57, 249),
11019    (58, 122),
11020    (59, 94),
11021    (60, 76),
11022    (61, 126),
11023    (62, 110),
11024    (63, 111),
11025    (64, 124),
11026    (65, 193),
11027    (66, 194),
11028    (67, 195),
11029    (68, 196),
11030    (69, 197),
11031    (70, 198),
11032    (71, 199),
11033    (72, 200),
11034    (73, 201),
11035    (74, 209),
11036    (75, 210),
11037    (76, 211),
11038    (77, 212),
11039    (78, 213),
11040    (79, 214),
11041    (80, 215),
11042    (81, 216),
11043    (82, 217),
11044    (83, 226),
11045    (84, 227),
11046    (85, 228),
11047    (86, 229),
11048    (87, 230),
11049    (88, 231),
11050    (89, 232),
11051    (90, 233),
11052    (91, 74),
11053    (92, 224),
11054    (93, 90),
11055    (94, 95),
11056    (95, 109),
11057    (96, 121),
11058    (97, 129),
11059    (98, 130),
11060    (99, 131),
11061    (100, 132),
11062    (101, 133),
11063    (102, 134),
11064    (103, 135),
11065    (104, 136),
11066    (105, 137),
11067    (106, 145),
11068    (107, 146),
11069    (108, 147),
11070    (109, 148),
11071    (110, 149),
11072    (111, 150),
11073    (112, 151),
11074    (113, 152),
11075    (114, 153),
11076    (115, 162),
11077    (116, 163),
11078    (117, 164),
11079    (118, 165),
11080    (119, 166),
11081    (120, 167),
11082    (121, 168),
11083    (122, 169),
11084    (123, 192),
11085    (124, 106),
11086    (125, 208),
11087    (126, 161),
11088    (127, 7),
11089    (128, 32),
11090    (129, 33),
11091    (130, 34),
11092    (131, 35),
11093    (132, 36),
11094    (133, 21),
11095    (134, 6),
11096    (135, 23),
11097    (136, 40),
11098    (137, 41),
11099    (138, 42),
11100    (139, 43),
11101    (140, 44),
11102    (141, 9),
11103    (142, 10),
11104    (143, 27),
11105    (144, 48),
11106    (145, 49),
11107    (146, 26),
11108    (147, 51),
11109    (148, 52),
11110    (149, 53),
11111    (150, 54),
11112    (151, 8),
11113    (152, 56),
11114    (153, 57),
11115    (154, 58),
11116    (155, 59),
11117    (156, 4),
11118    (157, 20),
11119    (158, 62),
11120    (159, 255),
11121    (160, 65),
11122    (164, 159),
11123    (167, 181),
11124    (168, 189),
11125    (173, 202),
11126    (176, 144),
11127    (180, 190),
11128    (184, 157),
11129    (193, 101),
11130    (194, 98),
11131    (196, 99),
11132    (199, 104),
11133    (201, 113),
11134    (203, 115),
11135    (205, 117),
11136    (206, 118),
11137    (211, 238),
11138    (212, 235),
11139    (214, 236),
11140    (215, 191),
11141    (218, 254),
11142    (220, 252),
11143    (221, 173),
11144    (223, 89),
11145    (225, 69),
11146    (226, 66),
11147    (228, 67),
11148    (231, 72),
11149    (233, 81),
11150    (235, 83),
11151    (237, 85),
11152    (238, 86),
11153    (243, 206),
11154    (244, 203),
11155    (246, 204),
11156    (247, 225),
11157    (250, 222),
11158    (252, 220),
11159    (253, 141),
11160    (258, 102),
11161    (259, 70),
11162    (260, 177),
11163    (261, 160),
11164    (262, 105),
11165    (263, 73),
11166    (268, 103),
11167    (269, 71),
11168    (270, 250),
11169    (271, 234),
11170    (272, 172),
11171    (273, 140),
11172    (280, 114),
11173    (281, 82),
11174    (282, 218),
11175    (283, 223),
11176    (313, 120),
11177    (314, 88),
11178    (317, 119),
11179    (318, 87),
11180    (321, 186),
11181    (322, 154),
11182    (323, 187),
11183    (324, 155),
11184    (327, 171),
11185    (328, 139),
11186    (336, 239),
11187    (337, 207),
11188    (340, 237),
11189    (341, 205),
11190    (344, 174),
11191    (345, 142),
11192    (346, 170),
11193    (347, 138),
11194    (350, 175),
11195    (351, 143),
11196    (352, 188),
11197    (353, 156),
11198    (354, 179),
11199    (355, 68),
11200    (356, 253),
11201    (357, 221),
11202    (366, 116),
11203    (367, 84),
11204    (368, 251),
11205    (369, 219),
11206    (377, 185),
11207    (378, 183),
11208    (379, 180),
11209    (380, 178),
11210    (381, 184),
11211    (382, 182),
11212    (711, 112),
11213    (728, 128),
11214    (729, 176),
11215    (731, 158),
11216    (733, 100),
11217];
11218
11219impl_ebcdic_encoder_and_decoder!(
11220    IBM871,
11221    "IBM871",
11222    IBM871Encoder,
11223    IBM871Decoder,
11224    IBM_871_ENCODE_TABLE,
11225    IBM_871_DECODE_TABLE
11226);
11227const IBM_871_DECODE_TABLE: [char; 256] = [
11228    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
11229    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
11230    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
11231    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
11232    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
11233    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
11234    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
11235    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{e7}', '\u{f1}',
11236    '\u{de}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
11237    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{c6}', '\u{24}',
11238    '\u{2a}', '\u{29}', '\u{3b}', '\u{d6}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
11239    '\u{c1}', '\u{c3}', '\u{c5}', '\u{c7}', '\u{d1}', '\u{a6}', '\u{2c}', '\u{25}', '\u{5f}',
11240    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
11241    '\u{cf}', '\u{cc}', '\u{f0}', '\u{3a}', '\u{23}', '\u{d0}', '\u{27}', '\u{3d}', '\u{22}',
11242    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
11243    '\u{69}', '\u{ab}', '\u{bb}', '\u{60}', '\u{fd}', '\u{7b}', '\u{b1}', '\u{b0}', '\u{6a}',
11244    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
11245    '\u{ba}', '\u{7d}', '\u{b8}', '\u{5d}', '\u{a4}', '\u{b5}', '\u{f6}', '\u{73}', '\u{74}',
11246    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{40}',
11247    '\u{dd}', '\u{5b}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
11248    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{5c}',
11249    '\u{d7}', '\u{fe}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
11250    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{7e}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{e6}',
11251    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
11252    '\u{b9}', '\u{fb}', '\u{fc}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{b4}', '\u{f7}', '\u{53}',
11253    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
11254    '\u{5e}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
11255    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{dc}', '\u{d9}',
11256    '\u{da}', '\u{9f}',
11257];
11258const IBM_871_ENCODE_TABLE: &[(u16, u8)] = &[
11259    (0, 0),
11260    (1, 1),
11261    (2, 2),
11262    (3, 3),
11263    (4, 55),
11264    (5, 45),
11265    (6, 46),
11266    (7, 47),
11267    (8, 22),
11268    (9, 5),
11269    (10, 37),
11270    (11, 11),
11271    (12, 12),
11272    (13, 13),
11273    (14, 14),
11274    (15, 15),
11275    (16, 16),
11276    (17, 17),
11277    (18, 18),
11278    (19, 19),
11279    (20, 60),
11280    (21, 61),
11281    (22, 50),
11282    (23, 38),
11283    (24, 24),
11284    (25, 25),
11285    (26, 63),
11286    (27, 39),
11287    (28, 28),
11288    (29, 29),
11289    (30, 30),
11290    (31, 31),
11291    (32, 64),
11292    (33, 79),
11293    (34, 127),
11294    (35, 123),
11295    (36, 91),
11296    (37, 108),
11297    (38, 80),
11298    (39, 125),
11299    (40, 77),
11300    (41, 93),
11301    (42, 92),
11302    (43, 78),
11303    (44, 107),
11304    (45, 96),
11305    (46, 75),
11306    (47, 97),
11307    (48, 240),
11308    (49, 241),
11309    (50, 242),
11310    (51, 243),
11311    (52, 244),
11312    (53, 245),
11313    (54, 246),
11314    (55, 247),
11315    (56, 248),
11316    (57, 249),
11317    (58, 122),
11318    (59, 94),
11319    (60, 76),
11320    (61, 126),
11321    (62, 110),
11322    (63, 111),
11323    (64, 172),
11324    (65, 193),
11325    (66, 194),
11326    (67, 195),
11327    (68, 196),
11328    (69, 197),
11329    (70, 198),
11330    (71, 199),
11331    (72, 200),
11332    (73, 201),
11333    (74, 209),
11334    (75, 210),
11335    (76, 211),
11336    (77, 212),
11337    (78, 213),
11338    (79, 214),
11339    (80, 215),
11340    (81, 216),
11341    (82, 217),
11342    (83, 226),
11343    (84, 227),
11344    (85, 228),
11345    (86, 229),
11346    (87, 230),
11347    (88, 231),
11348    (89, 232),
11349    (90, 233),
11350    (91, 174),
11351    (92, 190),
11352    (93, 158),
11353    (94, 236),
11354    (95, 109),
11355    (96, 140),
11356    (97, 129),
11357    (98, 130),
11358    (99, 131),
11359    (100, 132),
11360    (101, 133),
11361    (102, 134),
11362    (103, 135),
11363    (104, 136),
11364    (105, 137),
11365    (106, 145),
11366    (107, 146),
11367    (108, 147),
11368    (109, 148),
11369    (110, 149),
11370    (111, 150),
11371    (112, 151),
11372    (113, 152),
11373    (114, 153),
11374    (115, 162),
11375    (116, 163),
11376    (117, 164),
11377    (118, 165),
11378    (119, 166),
11379    (120, 167),
11380    (121, 168),
11381    (122, 169),
11382    (123, 142),
11383    (124, 187),
11384    (125, 156),
11385    (126, 204),
11386    (127, 7),
11387    (128, 32),
11388    (129, 33),
11389    (130, 34),
11390    (131, 35),
11391    (132, 36),
11392    (133, 21),
11393    (134, 6),
11394    (135, 23),
11395    (136, 40),
11396    (137, 41),
11397    (138, 42),
11398    (139, 43),
11399    (140, 44),
11400    (141, 9),
11401    (142, 10),
11402    (143, 27),
11403    (144, 48),
11404    (145, 49),
11405    (146, 26),
11406    (147, 51),
11407    (148, 52),
11408    (149, 53),
11409    (150, 54),
11410    (151, 8),
11411    (152, 56),
11412    (153, 57),
11413    (154, 58),
11414    (155, 59),
11415    (156, 4),
11416    (157, 20),
11417    (158, 62),
11418    (159, 255),
11419    (160, 65),
11420    (161, 170),
11421    (162, 176),
11422    (163, 177),
11423    (164, 159),
11424    (165, 178),
11425    (166, 106),
11426    (167, 181),
11427    (168, 189),
11428    (169, 180),
11429    (170, 154),
11430    (171, 138),
11431    (172, 186),
11432    (173, 202),
11433    (174, 175),
11434    (175, 188),
11435    (176, 144),
11436    (177, 143),
11437    (178, 234),
11438    (179, 250),
11439    (180, 224),
11440    (181, 160),
11441    (182, 182),
11442    (183, 179),
11443    (184, 157),
11444    (185, 218),
11445    (186, 155),
11446    (187, 139),
11447    (188, 183),
11448    (189, 184),
11449    (190, 185),
11450    (191, 171),
11451    (192, 100),
11452    (193, 101),
11453    (194, 98),
11454    (195, 102),
11455    (196, 99),
11456    (197, 103),
11457    (198, 90),
11458    (199, 104),
11459    (200, 116),
11460    (201, 113),
11461    (202, 114),
11462    (203, 115),
11463    (204, 120),
11464    (205, 117),
11465    (206, 118),
11466    (207, 119),
11467    (208, 124),
11468    (209, 105),
11469    (210, 237),
11470    (211, 238),
11471    (212, 235),
11472    (213, 239),
11473    (214, 95),
11474    (215, 191),
11475    (216, 128),
11476    (217, 253),
11477    (218, 254),
11478    (219, 251),
11479    (220, 252),
11480    (221, 173),
11481    (222, 74),
11482    (223, 89),
11483    (224, 68),
11484    (225, 69),
11485    (226, 66),
11486    (227, 70),
11487    (228, 67),
11488    (229, 71),
11489    (230, 208),
11490    (231, 72),
11491    (232, 84),
11492    (233, 81),
11493    (234, 82),
11494    (235, 83),
11495    (236, 88),
11496    (237, 85),
11497    (238, 86),
11498    (239, 87),
11499    (240, 121),
11500    (241, 73),
11501    (242, 205),
11502    (243, 206),
11503    (244, 203),
11504    (245, 207),
11505    (246, 161),
11506    (247, 225),
11507    (248, 112),
11508    (249, 221),
11509    (250, 222),
11510    (251, 219),
11511    (252, 220),
11512    (253, 141),
11513    (254, 192),
11514    (255, 223),
11515];
11516
11517impl_ebcdic_encoder_and_decoder!(
11518    IBM880,
11519    "IBM880",
11520    IBM880Encoder,
11521    IBM880Decoder,
11522    IBM_880_ENCODE_TABLE,
11523    IBM_880_DECODE_TABLE
11524);
11525const IBM_880_DECODE_TABLE: [char; 256] = [
11526    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
11527    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
11528    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
11529    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
11530    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
11531    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
11532    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
11533    '\u{a0}', '\u{452}', '\u{453}', '\u{451}', '\u{454}', '\u{455}', '\u{456}', '\u{457}',
11534    '\u{458}', '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{459}',
11535    '\u{45a}', '\u{45b}', '\u{45c}', '\u{45e}', '\u{45f}', '\u{42a}', '\u{2116}', '\u{402}',
11536    '\u{5d}', '\u{24}', '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{403}',
11537    '\u{401}', '\u{404}', '\u{405}', '\u{406}', '\u{407}', '\u{408}', '\u{409}', '\u{7c}',
11538    '\u{2c}', '\u{25}', '\u{5f}', '\u{3e}', '\u{3f}', '\u{40a}', '\u{40b}', '\u{40c}', '\u{ad}',
11539    '\u{40e}', '\u{40f}', '\u{44e}', '\u{430}', '\u{431}', '\u{60}', '\u{3a}', '\u{23}', '\u{40}',
11540    '\u{27}', '\u{3d}', '\u{22}', '\u{446}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}',
11541    '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{434}', '\u{435}', '\u{444}', '\u{433}', '\u{445}',
11542    '\u{438}', '\u{439}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}',
11543    '\u{71}', '\u{72}', '\u{43a}', '\u{43b}', '\u{43c}', '\u{43d}', '\u{43e}', '\u{43f}',
11544    '\u{44f}', '\u{7e}', '\u{73}', '\u{74}', '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}',
11545    '\u{7a}', '\u{440}', '\u{441}', '\u{442}', '\u{443}', '\u{436}', '\u{432}', '\u{44c}',
11546    '\u{44b}', '\u{437}', '\u{448}', '\u{44d}', '\u{449}', '\u{447}', '\u{44a}', '\u{42e}',
11547    '\u{410}', '\u{411}', '\u{426}', '\u{414}', '\u{415}', '\u{424}', '\u{413}', '\u{7b}',
11548    '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}', '\u{49}',
11549    '\u{425}', '\u{418}', '\u{419}', '\u{41a}', '\u{41b}', '\u{41c}', '\u{7d}', '\u{4a}', '\u{4b}',
11550    '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}', '\u{41d}', '\u{41e}',
11551    '\u{41f}', '\u{42f}', '\u{420}', '\u{421}', '\u{5c}', '\u{a4}', '\u{53}', '\u{54}', '\u{55}',
11552    '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{422}', '\u{423}', '\u{416}', '\u{412}',
11553    '\u{42c}', '\u{42b}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}', '\u{35}', '\u{36}',
11554    '\u{37}', '\u{38}', '\u{39}', '\u{417}', '\u{428}', '\u{42d}', '\u{429}', '\u{427}', '\u{9f}',
11555];
11556const IBM_880_ENCODE_TABLE: &[(u16, u8)] = &[
11557    (0, 0),
11558    (1, 1),
11559    (2, 2),
11560    (3, 3),
11561    (4, 55),
11562    (5, 45),
11563    (6, 46),
11564    (7, 47),
11565    (8, 22),
11566    (9, 5),
11567    (10, 37),
11568    (11, 11),
11569    (12, 12),
11570    (13, 13),
11571    (14, 14),
11572    (15, 15),
11573    (16, 16),
11574    (17, 17),
11575    (18, 18),
11576    (19, 19),
11577    (20, 60),
11578    (21, 61),
11579    (22, 50),
11580    (23, 38),
11581    (24, 24),
11582    (25, 25),
11583    (26, 63),
11584    (27, 39),
11585    (28, 28),
11586    (29, 29),
11587    (30, 30),
11588    (31, 31),
11589    (32, 64),
11590    (33, 79),
11591    (34, 127),
11592    (35, 123),
11593    (36, 91),
11594    (37, 108),
11595    (38, 80),
11596    (39, 125),
11597    (40, 77),
11598    (41, 93),
11599    (42, 92),
11600    (43, 78),
11601    (44, 107),
11602    (45, 96),
11603    (46, 75),
11604    (47, 97),
11605    (48, 240),
11606    (49, 241),
11607    (50, 242),
11608    (51, 243),
11609    (52, 244),
11610    (53, 245),
11611    (54, 246),
11612    (55, 247),
11613    (56, 248),
11614    (57, 249),
11615    (58, 122),
11616    (59, 94),
11617    (60, 76),
11618    (61, 126),
11619    (62, 110),
11620    (63, 111),
11621    (64, 124),
11622    (65, 193),
11623    (66, 194),
11624    (67, 195),
11625    (68, 196),
11626    (69, 197),
11627    (70, 198),
11628    (71, 199),
11629    (72, 200),
11630    (73, 201),
11631    (74, 209),
11632    (75, 210),
11633    (76, 211),
11634    (77, 212),
11635    (78, 213),
11636    (79, 214),
11637    (80, 215),
11638    (81, 216),
11639    (82, 217),
11640    (83, 226),
11641    (84, 227),
11642    (85, 228),
11643    (86, 229),
11644    (87, 230),
11645    (88, 231),
11646    (89, 232),
11647    (90, 233),
11648    (91, 74),
11649    (92, 224),
11650    (93, 90),
11651    (94, 95),
11652    (95, 109),
11653    (96, 121),
11654    (97, 129),
11655    (98, 130),
11656    (99, 131),
11657    (100, 132),
11658    (101, 133),
11659    (102, 134),
11660    (103, 135),
11661    (104, 136),
11662    (105, 137),
11663    (106, 145),
11664    (107, 146),
11665    (108, 147),
11666    (109, 148),
11667    (110, 149),
11668    (111, 150),
11669    (112, 151),
11670    (113, 152),
11671    (114, 153),
11672    (115, 162),
11673    (116, 163),
11674    (117, 164),
11675    (118, 165),
11676    (119, 166),
11677    (120, 167),
11678    (121, 168),
11679    (122, 169),
11680    (123, 192),
11681    (124, 106),
11682    (125, 208),
11683    (126, 161),
11684    (127, 7),
11685    (128, 32),
11686    (129, 33),
11687    (130, 34),
11688    (131, 35),
11689    (132, 36),
11690    (133, 21),
11691    (134, 6),
11692    (135, 23),
11693    (136, 40),
11694    (137, 41),
11695    (138, 42),
11696    (139, 43),
11697    (140, 44),
11698    (141, 9),
11699    (142, 10),
11700    (143, 27),
11701    (144, 48),
11702    (145, 49),
11703    (146, 26),
11704    (147, 51),
11705    (148, 52),
11706    (149, 53),
11707    (150, 54),
11708    (151, 8),
11709    (152, 56),
11710    (153, 57),
11711    (154, 58),
11712    (155, 59),
11713    (156, 4),
11714    (157, 20),
11715    (158, 62),
11716    (159, 255),
11717    (160, 65),
11718    (164, 225),
11719    (173, 115),
11720    (1025, 99),
11721    (1026, 89),
11722    (1027, 98),
11723    (1028, 100),
11724    (1029, 101),
11725    (1030, 102),
11726    (1031, 103),
11727    (1032, 104),
11728    (1033, 105),
11729    (1034, 112),
11730    (1035, 113),
11731    (1036, 114),
11732    (1038, 116),
11733    (1039, 117),
11734    (1040, 185),
11735    (1041, 186),
11736    (1042, 237),
11737    (1043, 191),
11738    (1044, 188),
11739    (1045, 189),
11740    (1046, 236),
11741    (1047, 250),
11742    (1048, 203),
11743    (1049, 204),
11744    (1050, 205),
11745    (1051, 206),
11746    (1052, 207),
11747    (1053, 218),
11748    (1054, 219),
11749    (1055, 220),
11750    (1056, 222),
11751    (1057, 223),
11752    (1058, 234),
11753    (1059, 235),
11754    (1060, 190),
11755    (1061, 202),
11756    (1062, 187),
11757    (1063, 254),
11758    (1064, 251),
11759    (1065, 253),
11760    (1066, 87),
11761    (1067, 239),
11762    (1068, 238),
11763    (1069, 252),
11764    (1070, 184),
11765    (1071, 221),
11766    (1072, 119),
11767    (1073, 120),
11768    (1074, 175),
11769    (1075, 141),
11770    (1076, 138),
11771    (1077, 139),
11772    (1078, 174),
11773    (1079, 178),
11774    (1080, 143),
11775    (1081, 144),
11776    (1082, 154),
11777    (1083, 155),
11778    (1084, 156),
11779    (1085, 157),
11780    (1086, 158),
11781    (1087, 159),
11782    (1088, 170),
11783    (1089, 171),
11784    (1090, 172),
11785    (1091, 173),
11786    (1092, 140),
11787    (1093, 142),
11788    (1094, 128),
11789    (1095, 182),
11790    (1096, 179),
11791    (1097, 181),
11792    (1098, 183),
11793    (1099, 177),
11794    (1100, 176),
11795    (1101, 180),
11796    (1102, 118),
11797    (1103, 160),
11798    (1105, 68),
11799    (1106, 66),
11800    (1107, 67),
11801    (1108, 69),
11802    (1109, 70),
11803    (1110, 71),
11804    (1111, 72),
11805    (1112, 73),
11806    (1113, 81),
11807    (1114, 82),
11808    (1115, 83),
11809    (1116, 84),
11810    (1118, 85),
11811    (1119, 86),
11812    (8470, 88),
11813];
11814
11815impl_ebcdic_encoder_and_decoder!(
11816    IBM891,
11817    "IBM891",
11818    IBM891Encoder,
11819    IBM891Decoder,
11820    IBM_891_ENCODE_TABLE,
11821    IBM_891_DECODE_TABLE
11822);
11823const IBM_891_DECODE_TABLE: [char; 256] = [
11824    '\u{0}',
11825    '\u{1}',
11826    '\u{2}',
11827    '\u{3}',
11828    '\u{4}',
11829    '\u{5}',
11830    '\u{6}',
11831    '\u{7}',
11832    '\u{8}',
11833    '\u{9}',
11834    '\u{a}',
11835    '\u{b}',
11836    '\u{c}',
11837    '\u{d}',
11838    '\u{e}',
11839    '\u{f}',
11840    '\u{10}',
11841    '\u{11}',
11842    '\u{12}',
11843    '\u{13}',
11844    '\u{14}',
11845    '\u{15}',
11846    '\u{16}',
11847    '\u{17}',
11848    '\u{18}',
11849    '\u{19}',
11850    '\u{1c}',
11851    '\u{1b}',
11852    '\u{7f}',
11853    '\u{1d}',
11854    '\u{1e}',
11855    '\u{1f}',
11856    '\u{20}',
11857    '\u{21}',
11858    '\u{22}',
11859    '\u{23}',
11860    '\u{24}',
11861    '\u{25}',
11862    '\u{26}',
11863    '\u{27}',
11864    '\u{28}',
11865    '\u{29}',
11866    '\u{2a}',
11867    '\u{2b}',
11868    '\u{2c}',
11869    '\u{2d}',
11870    '\u{2e}',
11871    '\u{2f}',
11872    '\u{30}',
11873    '\u{31}',
11874    '\u{32}',
11875    '\u{33}',
11876    '\u{34}',
11877    '\u{35}',
11878    '\u{36}',
11879    '\u{37}',
11880    '\u{38}',
11881    '\u{39}',
11882    '\u{3a}',
11883    '\u{3b}',
11884    '\u{3c}',
11885    '\u{3d}',
11886    '\u{3e}',
11887    '\u{3f}',
11888    '\u{40}',
11889    '\u{41}',
11890    '\u{42}',
11891    '\u{43}',
11892    '\u{44}',
11893    '\u{45}',
11894    '\u{46}',
11895    '\u{47}',
11896    '\u{48}',
11897    '\u{49}',
11898    '\u{4a}',
11899    '\u{4b}',
11900    '\u{4c}',
11901    '\u{4d}',
11902    '\u{4e}',
11903    '\u{4f}',
11904    '\u{50}',
11905    '\u{51}',
11906    '\u{52}',
11907    '\u{53}',
11908    '\u{54}',
11909    '\u{55}',
11910    '\u{56}',
11911    '\u{57}',
11912    '\u{58}',
11913    '\u{59}',
11914    '\u{5a}',
11915    '\u{5b}',
11916    '\u{20a9}',
11917    '\u{5d}',
11918    '\u{5e}',
11919    '\u{5f}',
11920    '\u{60}',
11921    '\u{61}',
11922    '\u{62}',
11923    '\u{63}',
11924    '\u{64}',
11925    '\u{65}',
11926    '\u{66}',
11927    '\u{67}',
11928    '\u{68}',
11929    '\u{69}',
11930    '\u{6a}',
11931    '\u{6b}',
11932    '\u{6c}',
11933    '\u{6d}',
11934    '\u{6e}',
11935    '\u{6f}',
11936    '\u{70}',
11937    '\u{71}',
11938    '\u{72}',
11939    '\u{73}',
11940    '\u{74}',
11941    '\u{75}',
11942    '\u{76}',
11943    '\u{77}',
11944    '\u{78}',
11945    '\u{79}',
11946    '\u{7a}',
11947    '\u{7b}',
11948    '\u{7c}',
11949    '\u{7d}',
11950    '\u{203e}',
11951    '\u{1a}',
11952    char::REPLACEMENT_CHARACTER,
11953    char::REPLACEMENT_CHARACTER,
11954    char::REPLACEMENT_CHARACTER,
11955    char::REPLACEMENT_CHARACTER,
11956    char::REPLACEMENT_CHARACTER,
11957    char::REPLACEMENT_CHARACTER,
11958    char::REPLACEMENT_CHARACTER,
11959    char::REPLACEMENT_CHARACTER,
11960    char::REPLACEMENT_CHARACTER,
11961    char::REPLACEMENT_CHARACTER,
11962    char::REPLACEMENT_CHARACTER,
11963    char::REPLACEMENT_CHARACTER,
11964    char::REPLACEMENT_CHARACTER,
11965    char::REPLACEMENT_CHARACTER,
11966    char::REPLACEMENT_CHARACTER,
11967    char::REPLACEMENT_CHARACTER,
11968    char::REPLACEMENT_CHARACTER,
11969    char::REPLACEMENT_CHARACTER,
11970    char::REPLACEMENT_CHARACTER,
11971    char::REPLACEMENT_CHARACTER,
11972    char::REPLACEMENT_CHARACTER,
11973    char::REPLACEMENT_CHARACTER,
11974    char::REPLACEMENT_CHARACTER,
11975    char::REPLACEMENT_CHARACTER,
11976    char::REPLACEMENT_CHARACTER,
11977    char::REPLACEMENT_CHARACTER,
11978    char::REPLACEMENT_CHARACTER,
11979    char::REPLACEMENT_CHARACTER,
11980    char::REPLACEMENT_CHARACTER,
11981    char::REPLACEMENT_CHARACTER,
11982    char::REPLACEMENT_CHARACTER,
11983    char::REPLACEMENT_CHARACTER,
11984    char::REPLACEMENT_CHARACTER,
11985    char::REPLACEMENT_CHARACTER,
11986    char::REPLACEMENT_CHARACTER,
11987    char::REPLACEMENT_CHARACTER,
11988    char::REPLACEMENT_CHARACTER,
11989    char::REPLACEMENT_CHARACTER,
11990    char::REPLACEMENT_CHARACTER,
11991    char::REPLACEMENT_CHARACTER,
11992    char::REPLACEMENT_CHARACTER,
11993    char::REPLACEMENT_CHARACTER,
11994    char::REPLACEMENT_CHARACTER,
11995    char::REPLACEMENT_CHARACTER,
11996    char::REPLACEMENT_CHARACTER,
11997    char::REPLACEMENT_CHARACTER,
11998    char::REPLACEMENT_CHARACTER,
11999    char::REPLACEMENT_CHARACTER,
12000    char::REPLACEMENT_CHARACTER,
12001    char::REPLACEMENT_CHARACTER,
12002    char::REPLACEMENT_CHARACTER,
12003    char::REPLACEMENT_CHARACTER,
12004    char::REPLACEMENT_CHARACTER,
12005    char::REPLACEMENT_CHARACTER,
12006    char::REPLACEMENT_CHARACTER,
12007    char::REPLACEMENT_CHARACTER,
12008    char::REPLACEMENT_CHARACTER,
12009    char::REPLACEMENT_CHARACTER,
12010    char::REPLACEMENT_CHARACTER,
12011    char::REPLACEMENT_CHARACTER,
12012    char::REPLACEMENT_CHARACTER,
12013    char::REPLACEMENT_CHARACTER,
12014    char::REPLACEMENT_CHARACTER,
12015    char::REPLACEMENT_CHARACTER,
12016    '\u{ffa0}',
12017    '\u{ffa1}',
12018    '\u{ffa2}',
12019    '\u{ffa3}',
12020    '\u{ffa4}',
12021    '\u{ffa5}',
12022    '\u{ffa6}',
12023    '\u{ffa7}',
12024    '\u{ffa8}',
12025    '\u{ffa9}',
12026    '\u{ffaa}',
12027    '\u{ffab}',
12028    '\u{ffac}',
12029    '\u{ffad}',
12030    '\u{ffae}',
12031    '\u{ffaf}',
12032    '\u{ffb0}',
12033    '\u{ffb1}',
12034    '\u{ffb2}',
12035    '\u{ffb3}',
12036    '\u{ffb4}',
12037    '\u{ffb5}',
12038    '\u{ffb6}',
12039    '\u{ffb7}',
12040    '\u{ffb8}',
12041    '\u{ffb9}',
12042    '\u{ffba}',
12043    '\u{ffbb}',
12044    '\u{ffbc}',
12045    '\u{ffbd}',
12046    '\u{ffbe}',
12047    char::REPLACEMENT_CHARACTER,
12048    char::REPLACEMENT_CHARACTER,
12049    char::REPLACEMENT_CHARACTER,
12050    '\u{ffc2}',
12051    '\u{ffc3}',
12052    '\u{ffc4}',
12053    '\u{ffc5}',
12054    '\u{ffc6}',
12055    '\u{ffc7}',
12056    char::REPLACEMENT_CHARACTER,
12057    char::REPLACEMENT_CHARACTER,
12058    '\u{ffca}',
12059    '\u{ffcb}',
12060    '\u{ffcc}',
12061    '\u{ffcd}',
12062    '\u{ffce}',
12063    '\u{ffcf}',
12064    char::REPLACEMENT_CHARACTER,
12065    char::REPLACEMENT_CHARACTER,
12066    '\u{ffd2}',
12067    '\u{ffd3}',
12068    '\u{ffd4}',
12069    '\u{ffd5}',
12070    '\u{ffd6}',
12071    '\u{ffd7}',
12072    char::REPLACEMENT_CHARACTER,
12073    char::REPLACEMENT_CHARACTER,
12074    '\u{ffda}',
12075    '\u{ffdb}',
12076    '\u{ffdc}',
12077    char::REPLACEMENT_CHARACTER,
12078    char::REPLACEMENT_CHARACTER,
12079    char::REPLACEMENT_CHARACTER,
12080];
12081const IBM_891_ENCODE_TABLE: &[(u16, u8)] = &[
12082    (0, 0),
12083    (1, 1),
12084    (2, 2),
12085    (3, 3),
12086    (4, 4),
12087    (5, 5),
12088    (6, 6),
12089    (7, 7),
12090    (8, 8),
12091    (9, 9),
12092    (10, 10),
12093    (11, 11),
12094    (12, 12),
12095    (13, 13),
12096    (14, 14),
12097    (15, 15),
12098    (16, 16),
12099    (17, 17),
12100    (18, 18),
12101    (19, 19),
12102    (20, 20),
12103    (21, 21),
12104    (22, 22),
12105    (23, 23),
12106    (24, 24),
12107    (25, 25),
12108    (26, 127),
12109    (27, 27),
12110    (28, 26),
12111    (29, 29),
12112    (30, 30),
12113    (31, 31),
12114    (32, 32),
12115    (33, 33),
12116    (34, 34),
12117    (35, 35),
12118    (36, 36),
12119    (37, 37),
12120    (38, 38),
12121    (39, 39),
12122    (40, 40),
12123    (41, 41),
12124    (42, 42),
12125    (43, 43),
12126    (44, 44),
12127    (45, 45),
12128    (46, 46),
12129    (47, 47),
12130    (48, 48),
12131    (49, 49),
12132    (50, 50),
12133    (51, 51),
12134    (52, 52),
12135    (53, 53),
12136    (54, 54),
12137    (55, 55),
12138    (56, 56),
12139    (57, 57),
12140    (58, 58),
12141    (59, 59),
12142    (60, 60),
12143    (61, 61),
12144    (62, 62),
12145    (63, 63),
12146    (64, 64),
12147    (65, 65),
12148    (66, 66),
12149    (67, 67),
12150    (68, 68),
12151    (69, 69),
12152    (70, 70),
12153    (71, 71),
12154    (72, 72),
12155    (73, 73),
12156    (74, 74),
12157    (75, 75),
12158    (76, 76),
12159    (77, 77),
12160    (78, 78),
12161    (79, 79),
12162    (80, 80),
12163    (81, 81),
12164    (82, 82),
12165    (83, 83),
12166    (84, 84),
12167    (85, 85),
12168    (86, 86),
12169    (87, 87),
12170    (88, 88),
12171    (89, 89),
12172    (90, 90),
12173    (91, 91),
12174    (93, 93),
12175    (94, 94),
12176    (95, 95),
12177    (96, 96),
12178    (97, 97),
12179    (98, 98),
12180    (99, 99),
12181    (100, 100),
12182    (101, 101),
12183    (102, 102),
12184    (103, 103),
12185    (104, 104),
12186    (105, 105),
12187    (106, 106),
12188    (107, 107),
12189    (108, 108),
12190    (109, 109),
12191    (110, 110),
12192    (111, 111),
12193    (112, 112),
12194    (113, 113),
12195    (114, 114),
12196    (115, 115),
12197    (116, 116),
12198    (117, 117),
12199    (118, 118),
12200    (119, 119),
12201    (120, 120),
12202    (121, 121),
12203    (122, 122),
12204    (123, 123),
12205    (124, 124),
12206    (125, 125),
12207    (127, 28),
12208    (8254, 126),
12209    (8361, 92),
12210    (65440, 192),
12211    (65441, 193),
12212    (65442, 194),
12213    (65443, 195),
12214    (65444, 196),
12215    (65445, 197),
12216    (65446, 198),
12217    (65447, 199),
12218    (65448, 200),
12219    (65449, 201),
12220    (65450, 202),
12221    (65451, 203),
12222    (65452, 204),
12223    (65453, 205),
12224    (65454, 206),
12225    (65455, 207),
12226    (65456, 208),
12227    (65457, 209),
12228    (65458, 210),
12229    (65459, 211),
12230    (65460, 212),
12231    (65461, 213),
12232    (65462, 214),
12233    (65463, 215),
12234    (65464, 216),
12235    (65465, 217),
12236    (65466, 218),
12237    (65467, 219),
12238    (65468, 220),
12239    (65469, 221),
12240    (65470, 222),
12241    (65474, 226),
12242    (65475, 227),
12243    (65476, 228),
12244    (65477, 229),
12245    (65478, 230),
12246    (65479, 231),
12247    (65482, 234),
12248    (65483, 235),
12249    (65484, 236),
12250    (65485, 237),
12251    (65486, 238),
12252    (65487, 239),
12253    (65490, 242),
12254    (65491, 243),
12255    (65492, 244),
12256    (65493, 245),
12257    (65494, 246),
12258    (65495, 247),
12259    (65498, 250),
12260    (65499, 251),
12261    (65500, 252),
12262];
12263
12264impl_ebcdic_encoder_and_decoder!(
12265    IBM903,
12266    "IBM903",
12267    IBM903Encoder,
12268    IBM903Decoder,
12269    IBM_903_ENCODE_TABLE,
12270    IBM_903_DECODE_TABLE
12271);
12272const IBM_903_DECODE_TABLE: [char; 256] = [
12273    '\u{0}',
12274    '\u{1}',
12275    '\u{2}',
12276    '\u{3}',
12277    '\u{4}',
12278    '\u{5}',
12279    '\u{6}',
12280    '\u{7}',
12281    '\u{8}',
12282    '\u{9}',
12283    '\u{a}',
12284    '\u{b}',
12285    '\u{c}',
12286    '\u{d}',
12287    '\u{e}',
12288    '\u{f}',
12289    '\u{10}',
12290    '\u{11}',
12291    '\u{12}',
12292    '\u{13}',
12293    '\u{14}',
12294    '\u{15}',
12295    '\u{16}',
12296    '\u{17}',
12297    '\u{18}',
12298    '\u{19}',
12299    '\u{1c}',
12300    '\u{1b}',
12301    '\u{7f}',
12302    '\u{1d}',
12303    '\u{1e}',
12304    '\u{1f}',
12305    '\u{20}',
12306    '\u{21}',
12307    '\u{22}',
12308    '\u{23}',
12309    '\u{24}',
12310    '\u{25}',
12311    '\u{26}',
12312    '\u{27}',
12313    '\u{28}',
12314    '\u{29}',
12315    '\u{2a}',
12316    '\u{2b}',
12317    '\u{2c}',
12318    '\u{2d}',
12319    '\u{2e}',
12320    '\u{2f}',
12321    '\u{30}',
12322    '\u{31}',
12323    '\u{32}',
12324    '\u{33}',
12325    '\u{34}',
12326    '\u{35}',
12327    '\u{36}',
12328    '\u{37}',
12329    '\u{38}',
12330    '\u{39}',
12331    '\u{3a}',
12332    '\u{3b}',
12333    '\u{3c}',
12334    '\u{3d}',
12335    '\u{3e}',
12336    '\u{3f}',
12337    '\u{40}',
12338    '\u{41}',
12339    '\u{42}',
12340    '\u{43}',
12341    '\u{44}',
12342    '\u{45}',
12343    '\u{46}',
12344    '\u{47}',
12345    '\u{48}',
12346    '\u{49}',
12347    '\u{4a}',
12348    '\u{4b}',
12349    '\u{4c}',
12350    '\u{4d}',
12351    '\u{4e}',
12352    '\u{4f}',
12353    '\u{50}',
12354    '\u{51}',
12355    '\u{52}',
12356    '\u{53}',
12357    '\u{54}',
12358    '\u{55}',
12359    '\u{56}',
12360    '\u{57}',
12361    '\u{58}',
12362    '\u{59}',
12363    '\u{5a}',
12364    '\u{5b}',
12365    '\u{a5}',
12366    '\u{5d}',
12367    '\u{5e}',
12368    '\u{5f}',
12369    '\u{60}',
12370    '\u{61}',
12371    '\u{62}',
12372    '\u{63}',
12373    '\u{64}',
12374    '\u{65}',
12375    '\u{66}',
12376    '\u{67}',
12377    '\u{68}',
12378    '\u{69}',
12379    '\u{6a}',
12380    '\u{6b}',
12381    '\u{6c}',
12382    '\u{6d}',
12383    '\u{6e}',
12384    '\u{6f}',
12385    '\u{70}',
12386    '\u{71}',
12387    '\u{72}',
12388    '\u{73}',
12389    '\u{74}',
12390    '\u{75}',
12391    '\u{76}',
12392    '\u{77}',
12393    '\u{78}',
12394    '\u{79}',
12395    '\u{7a}',
12396    '\u{7b}',
12397    '\u{7c}',
12398    '\u{7d}',
12399    '\u{203e}',
12400    '\u{1a}',
12401    char::REPLACEMENT_CHARACTER,
12402    char::REPLACEMENT_CHARACTER,
12403    char::REPLACEMENT_CHARACTER,
12404    char::REPLACEMENT_CHARACTER,
12405    char::REPLACEMENT_CHARACTER,
12406    char::REPLACEMENT_CHARACTER,
12407    char::REPLACEMENT_CHARACTER,
12408    char::REPLACEMENT_CHARACTER,
12409    char::REPLACEMENT_CHARACTER,
12410    char::REPLACEMENT_CHARACTER,
12411    char::REPLACEMENT_CHARACTER,
12412    char::REPLACEMENT_CHARACTER,
12413    char::REPLACEMENT_CHARACTER,
12414    char::REPLACEMENT_CHARACTER,
12415    char::REPLACEMENT_CHARACTER,
12416    char::REPLACEMENT_CHARACTER,
12417    char::REPLACEMENT_CHARACTER,
12418    char::REPLACEMENT_CHARACTER,
12419    char::REPLACEMENT_CHARACTER,
12420    char::REPLACEMENT_CHARACTER,
12421    char::REPLACEMENT_CHARACTER,
12422    char::REPLACEMENT_CHARACTER,
12423    char::REPLACEMENT_CHARACTER,
12424    char::REPLACEMENT_CHARACTER,
12425    char::REPLACEMENT_CHARACTER,
12426    char::REPLACEMENT_CHARACTER,
12427    char::REPLACEMENT_CHARACTER,
12428    char::REPLACEMENT_CHARACTER,
12429    char::REPLACEMENT_CHARACTER,
12430    char::REPLACEMENT_CHARACTER,
12431    char::REPLACEMENT_CHARACTER,
12432    char::REPLACEMENT_CHARACTER,
12433    char::REPLACEMENT_CHARACTER,
12434    char::REPLACEMENT_CHARACTER,
12435    char::REPLACEMENT_CHARACTER,
12436    char::REPLACEMENT_CHARACTER,
12437    char::REPLACEMENT_CHARACTER,
12438    char::REPLACEMENT_CHARACTER,
12439    char::REPLACEMENT_CHARACTER,
12440    char::REPLACEMENT_CHARACTER,
12441    char::REPLACEMENT_CHARACTER,
12442    char::REPLACEMENT_CHARACTER,
12443    char::REPLACEMENT_CHARACTER,
12444    char::REPLACEMENT_CHARACTER,
12445    char::REPLACEMENT_CHARACTER,
12446    char::REPLACEMENT_CHARACTER,
12447    char::REPLACEMENT_CHARACTER,
12448    char::REPLACEMENT_CHARACTER,
12449    char::REPLACEMENT_CHARACTER,
12450    char::REPLACEMENT_CHARACTER,
12451    char::REPLACEMENT_CHARACTER,
12452    char::REPLACEMENT_CHARACTER,
12453    char::REPLACEMENT_CHARACTER,
12454    char::REPLACEMENT_CHARACTER,
12455    char::REPLACEMENT_CHARACTER,
12456    char::REPLACEMENT_CHARACTER,
12457    char::REPLACEMENT_CHARACTER,
12458    char::REPLACEMENT_CHARACTER,
12459    char::REPLACEMENT_CHARACTER,
12460    char::REPLACEMENT_CHARACTER,
12461    char::REPLACEMENT_CHARACTER,
12462    char::REPLACEMENT_CHARACTER,
12463    char::REPLACEMENT_CHARACTER,
12464    char::REPLACEMENT_CHARACTER,
12465    char::REPLACEMENT_CHARACTER,
12466    char::REPLACEMENT_CHARACTER,
12467    char::REPLACEMENT_CHARACTER,
12468    char::REPLACEMENT_CHARACTER,
12469    char::REPLACEMENT_CHARACTER,
12470    char::REPLACEMENT_CHARACTER,
12471    char::REPLACEMENT_CHARACTER,
12472    char::REPLACEMENT_CHARACTER,
12473    char::REPLACEMENT_CHARACTER,
12474    char::REPLACEMENT_CHARACTER,
12475    char::REPLACEMENT_CHARACTER,
12476    char::REPLACEMENT_CHARACTER,
12477    char::REPLACEMENT_CHARACTER,
12478    char::REPLACEMENT_CHARACTER,
12479    char::REPLACEMENT_CHARACTER,
12480    char::REPLACEMENT_CHARACTER,
12481    char::REPLACEMENT_CHARACTER,
12482    char::REPLACEMENT_CHARACTER,
12483    char::REPLACEMENT_CHARACTER,
12484    char::REPLACEMENT_CHARACTER,
12485    char::REPLACEMENT_CHARACTER,
12486    char::REPLACEMENT_CHARACTER,
12487    char::REPLACEMENT_CHARACTER,
12488    char::REPLACEMENT_CHARACTER,
12489    char::REPLACEMENT_CHARACTER,
12490    char::REPLACEMENT_CHARACTER,
12491    char::REPLACEMENT_CHARACTER,
12492    char::REPLACEMENT_CHARACTER,
12493    char::REPLACEMENT_CHARACTER,
12494    char::REPLACEMENT_CHARACTER,
12495    char::REPLACEMENT_CHARACTER,
12496    char::REPLACEMENT_CHARACTER,
12497    char::REPLACEMENT_CHARACTER,
12498    char::REPLACEMENT_CHARACTER,
12499    char::REPLACEMENT_CHARACTER,
12500    char::REPLACEMENT_CHARACTER,
12501    char::REPLACEMENT_CHARACTER,
12502    char::REPLACEMENT_CHARACTER,
12503    char::REPLACEMENT_CHARACTER,
12504    char::REPLACEMENT_CHARACTER,
12505    char::REPLACEMENT_CHARACTER,
12506    char::REPLACEMENT_CHARACTER,
12507    char::REPLACEMENT_CHARACTER,
12508    char::REPLACEMENT_CHARACTER,
12509    char::REPLACEMENT_CHARACTER,
12510    char::REPLACEMENT_CHARACTER,
12511    char::REPLACEMENT_CHARACTER,
12512    char::REPLACEMENT_CHARACTER,
12513    char::REPLACEMENT_CHARACTER,
12514    char::REPLACEMENT_CHARACTER,
12515    char::REPLACEMENT_CHARACTER,
12516    char::REPLACEMENT_CHARACTER,
12517    char::REPLACEMENT_CHARACTER,
12518    char::REPLACEMENT_CHARACTER,
12519    char::REPLACEMENT_CHARACTER,
12520    char::REPLACEMENT_CHARACTER,
12521    char::REPLACEMENT_CHARACTER,
12522    char::REPLACEMENT_CHARACTER,
12523    char::REPLACEMENT_CHARACTER,
12524    char::REPLACEMENT_CHARACTER,
12525    char::REPLACEMENT_CHARACTER,
12526    char::REPLACEMENT_CHARACTER,
12527    char::REPLACEMENT_CHARACTER,
12528    char::REPLACEMENT_CHARACTER,
12529];
12530const IBM_903_ENCODE_TABLE: &[(u16, u8)] = &[
12531    (0, 0),
12532    (1, 1),
12533    (2, 2),
12534    (3, 3),
12535    (4, 4),
12536    (5, 5),
12537    (6, 6),
12538    (7, 7),
12539    (8, 8),
12540    (9, 9),
12541    (10, 10),
12542    (11, 11),
12543    (12, 12),
12544    (13, 13),
12545    (14, 14),
12546    (15, 15),
12547    (16, 16),
12548    (17, 17),
12549    (18, 18),
12550    (19, 19),
12551    (20, 20),
12552    (21, 21),
12553    (22, 22),
12554    (23, 23),
12555    (24, 24),
12556    (25, 25),
12557    (26, 127),
12558    (27, 27),
12559    (28, 26),
12560    (29, 29),
12561    (30, 30),
12562    (31, 31),
12563    (32, 32),
12564    (33, 33),
12565    (34, 34),
12566    (35, 35),
12567    (36, 36),
12568    (37, 37),
12569    (38, 38),
12570    (39, 39),
12571    (40, 40),
12572    (41, 41),
12573    (42, 42),
12574    (43, 43),
12575    (44, 44),
12576    (45, 45),
12577    (46, 46),
12578    (47, 47),
12579    (48, 48),
12580    (49, 49),
12581    (50, 50),
12582    (51, 51),
12583    (52, 52),
12584    (53, 53),
12585    (54, 54),
12586    (55, 55),
12587    (56, 56),
12588    (57, 57),
12589    (58, 58),
12590    (59, 59),
12591    (60, 60),
12592    (61, 61),
12593    (62, 62),
12594    (63, 63),
12595    (64, 64),
12596    (65, 65),
12597    (66, 66),
12598    (67, 67),
12599    (68, 68),
12600    (69, 69),
12601    (70, 70),
12602    (71, 71),
12603    (72, 72),
12604    (73, 73),
12605    (74, 74),
12606    (75, 75),
12607    (76, 76),
12608    (77, 77),
12609    (78, 78),
12610    (79, 79),
12611    (80, 80),
12612    (81, 81),
12613    (82, 82),
12614    (83, 83),
12615    (84, 84),
12616    (85, 85),
12617    (86, 86),
12618    (87, 87),
12619    (88, 88),
12620    (89, 89),
12621    (90, 90),
12622    (91, 91),
12623    (93, 93),
12624    (94, 94),
12625    (95, 95),
12626    (96, 96),
12627    (97, 97),
12628    (98, 98),
12629    (99, 99),
12630    (100, 100),
12631    (101, 101),
12632    (102, 102),
12633    (103, 103),
12634    (104, 104),
12635    (105, 105),
12636    (106, 106),
12637    (107, 107),
12638    (108, 108),
12639    (109, 109),
12640    (110, 110),
12641    (111, 111),
12642    (112, 112),
12643    (113, 113),
12644    (114, 114),
12645    (115, 115),
12646    (116, 116),
12647    (117, 117),
12648    (118, 118),
12649    (119, 119),
12650    (120, 120),
12651    (121, 121),
12652    (122, 122),
12653    (123, 123),
12654    (124, 124),
12655    (125, 125),
12656    (127, 28),
12657    (165, 92),
12658    (8254, 126),
12659];
12660
12661impl_ebcdic_encoder_and_decoder!(
12662    IBM904,
12663    "IBM904",
12664    IBM904Encoder,
12665    IBM904Decoder,
12666    IBM_904_ENCODE_TABLE,
12667    IBM_904_DECODE_TABLE
12668);
12669const IBM_904_DECODE_TABLE: [char; 256] = [
12670    '\u{0}',
12671    '\u{1}',
12672    '\u{2}',
12673    '\u{3}',
12674    '\u{4}',
12675    '\u{5}',
12676    '\u{6}',
12677    '\u{7}',
12678    '\u{8}',
12679    '\u{9}',
12680    '\u{a}',
12681    '\u{b}',
12682    '\u{c}',
12683    '\u{d}',
12684    '\u{e}',
12685    '\u{f}',
12686    '\u{10}',
12687    '\u{11}',
12688    '\u{12}',
12689    '\u{13}',
12690    '\u{14}',
12691    '\u{15}',
12692    '\u{16}',
12693    '\u{17}',
12694    '\u{18}',
12695    '\u{19}',
12696    '\u{1c}',
12697    '\u{1b}',
12698    '\u{7f}',
12699    '\u{1d}',
12700    '\u{1e}',
12701    '\u{1f}',
12702    '\u{20}',
12703    '\u{21}',
12704    '\u{22}',
12705    '\u{23}',
12706    '\u{24}',
12707    '\u{25}',
12708    '\u{26}',
12709    '\u{27}',
12710    '\u{28}',
12711    '\u{29}',
12712    '\u{2a}',
12713    '\u{2b}',
12714    '\u{2c}',
12715    '\u{2d}',
12716    '\u{2e}',
12717    '\u{2f}',
12718    '\u{30}',
12719    '\u{31}',
12720    '\u{32}',
12721    '\u{33}',
12722    '\u{34}',
12723    '\u{35}',
12724    '\u{36}',
12725    '\u{37}',
12726    '\u{38}',
12727    '\u{39}',
12728    '\u{3a}',
12729    '\u{3b}',
12730    '\u{3c}',
12731    '\u{3d}',
12732    '\u{3e}',
12733    '\u{3f}',
12734    '\u{40}',
12735    '\u{41}',
12736    '\u{42}',
12737    '\u{43}',
12738    '\u{44}',
12739    '\u{45}',
12740    '\u{46}',
12741    '\u{47}',
12742    '\u{48}',
12743    '\u{49}',
12744    '\u{4a}',
12745    '\u{4b}',
12746    '\u{4c}',
12747    '\u{4d}',
12748    '\u{4e}',
12749    '\u{4f}',
12750    '\u{50}',
12751    '\u{51}',
12752    '\u{52}',
12753    '\u{53}',
12754    '\u{54}',
12755    '\u{55}',
12756    '\u{56}',
12757    '\u{57}',
12758    '\u{58}',
12759    '\u{59}',
12760    '\u{5a}',
12761    '\u{5b}',
12762    '\u{5c}',
12763    '\u{5d}',
12764    '\u{5e}',
12765    '\u{5f}',
12766    '\u{60}',
12767    '\u{61}',
12768    '\u{62}',
12769    '\u{63}',
12770    '\u{64}',
12771    '\u{65}',
12772    '\u{66}',
12773    '\u{67}',
12774    '\u{68}',
12775    '\u{69}',
12776    '\u{6a}',
12777    '\u{6b}',
12778    '\u{6c}',
12779    '\u{6d}',
12780    '\u{6e}',
12781    '\u{6f}',
12782    '\u{70}',
12783    '\u{71}',
12784    '\u{72}',
12785    '\u{73}',
12786    '\u{74}',
12787    '\u{75}',
12788    '\u{76}',
12789    '\u{77}',
12790    '\u{78}',
12791    '\u{79}',
12792    '\u{7a}',
12793    '\u{7b}',
12794    '\u{7c}',
12795    '\u{7d}',
12796    '\u{7e}',
12797    '\u{1a}',
12798    char::REPLACEMENT_CHARACTER,
12799    char::REPLACEMENT_CHARACTER,
12800    char::REPLACEMENT_CHARACTER,
12801    char::REPLACEMENT_CHARACTER,
12802    char::REPLACEMENT_CHARACTER,
12803    char::REPLACEMENT_CHARACTER,
12804    char::REPLACEMENT_CHARACTER,
12805    char::REPLACEMENT_CHARACTER,
12806    char::REPLACEMENT_CHARACTER,
12807    char::REPLACEMENT_CHARACTER,
12808    char::REPLACEMENT_CHARACTER,
12809    char::REPLACEMENT_CHARACTER,
12810    char::REPLACEMENT_CHARACTER,
12811    char::REPLACEMENT_CHARACTER,
12812    char::REPLACEMENT_CHARACTER,
12813    char::REPLACEMENT_CHARACTER,
12814    char::REPLACEMENT_CHARACTER,
12815    char::REPLACEMENT_CHARACTER,
12816    char::REPLACEMENT_CHARACTER,
12817    char::REPLACEMENT_CHARACTER,
12818    char::REPLACEMENT_CHARACTER,
12819    char::REPLACEMENT_CHARACTER,
12820    char::REPLACEMENT_CHARACTER,
12821    char::REPLACEMENT_CHARACTER,
12822    char::REPLACEMENT_CHARACTER,
12823    char::REPLACEMENT_CHARACTER,
12824    char::REPLACEMENT_CHARACTER,
12825    char::REPLACEMENT_CHARACTER,
12826    char::REPLACEMENT_CHARACTER,
12827    char::REPLACEMENT_CHARACTER,
12828    char::REPLACEMENT_CHARACTER,
12829    char::REPLACEMENT_CHARACTER,
12830    char::REPLACEMENT_CHARACTER,
12831    char::REPLACEMENT_CHARACTER,
12832    char::REPLACEMENT_CHARACTER,
12833    char::REPLACEMENT_CHARACTER,
12834    char::REPLACEMENT_CHARACTER,
12835    char::REPLACEMENT_CHARACTER,
12836    char::REPLACEMENT_CHARACTER,
12837    char::REPLACEMENT_CHARACTER,
12838    char::REPLACEMENT_CHARACTER,
12839    char::REPLACEMENT_CHARACTER,
12840    char::REPLACEMENT_CHARACTER,
12841    char::REPLACEMENT_CHARACTER,
12842    char::REPLACEMENT_CHARACTER,
12843    char::REPLACEMENT_CHARACTER,
12844    char::REPLACEMENT_CHARACTER,
12845    char::REPLACEMENT_CHARACTER,
12846    char::REPLACEMENT_CHARACTER,
12847    char::REPLACEMENT_CHARACTER,
12848    char::REPLACEMENT_CHARACTER,
12849    char::REPLACEMENT_CHARACTER,
12850    char::REPLACEMENT_CHARACTER,
12851    char::REPLACEMENT_CHARACTER,
12852    char::REPLACEMENT_CHARACTER,
12853    char::REPLACEMENT_CHARACTER,
12854    char::REPLACEMENT_CHARACTER,
12855    char::REPLACEMENT_CHARACTER,
12856    char::REPLACEMENT_CHARACTER,
12857    char::REPLACEMENT_CHARACTER,
12858    char::REPLACEMENT_CHARACTER,
12859    char::REPLACEMENT_CHARACTER,
12860    char::REPLACEMENT_CHARACTER,
12861    char::REPLACEMENT_CHARACTER,
12862    char::REPLACEMENT_CHARACTER,
12863    char::REPLACEMENT_CHARACTER,
12864    char::REPLACEMENT_CHARACTER,
12865    char::REPLACEMENT_CHARACTER,
12866    char::REPLACEMENT_CHARACTER,
12867    char::REPLACEMENT_CHARACTER,
12868    char::REPLACEMENT_CHARACTER,
12869    char::REPLACEMENT_CHARACTER,
12870    char::REPLACEMENT_CHARACTER,
12871    char::REPLACEMENT_CHARACTER,
12872    char::REPLACEMENT_CHARACTER,
12873    char::REPLACEMENT_CHARACTER,
12874    char::REPLACEMENT_CHARACTER,
12875    char::REPLACEMENT_CHARACTER,
12876    char::REPLACEMENT_CHARACTER,
12877    char::REPLACEMENT_CHARACTER,
12878    char::REPLACEMENT_CHARACTER,
12879    char::REPLACEMENT_CHARACTER,
12880    char::REPLACEMENT_CHARACTER,
12881    char::REPLACEMENT_CHARACTER,
12882    char::REPLACEMENT_CHARACTER,
12883    char::REPLACEMENT_CHARACTER,
12884    char::REPLACEMENT_CHARACTER,
12885    char::REPLACEMENT_CHARACTER,
12886    char::REPLACEMENT_CHARACTER,
12887    char::REPLACEMENT_CHARACTER,
12888    char::REPLACEMENT_CHARACTER,
12889    char::REPLACEMENT_CHARACTER,
12890    char::REPLACEMENT_CHARACTER,
12891    char::REPLACEMENT_CHARACTER,
12892    char::REPLACEMENT_CHARACTER,
12893    char::REPLACEMENT_CHARACTER,
12894    char::REPLACEMENT_CHARACTER,
12895    char::REPLACEMENT_CHARACTER,
12896    char::REPLACEMENT_CHARACTER,
12897    char::REPLACEMENT_CHARACTER,
12898    char::REPLACEMENT_CHARACTER,
12899    char::REPLACEMENT_CHARACTER,
12900    char::REPLACEMENT_CHARACTER,
12901    char::REPLACEMENT_CHARACTER,
12902    char::REPLACEMENT_CHARACTER,
12903    char::REPLACEMENT_CHARACTER,
12904    char::REPLACEMENT_CHARACTER,
12905    char::REPLACEMENT_CHARACTER,
12906    char::REPLACEMENT_CHARACTER,
12907    char::REPLACEMENT_CHARACTER,
12908    char::REPLACEMENT_CHARACTER,
12909    char::REPLACEMENT_CHARACTER,
12910    char::REPLACEMENT_CHARACTER,
12911    char::REPLACEMENT_CHARACTER,
12912    char::REPLACEMENT_CHARACTER,
12913    char::REPLACEMENT_CHARACTER,
12914    char::REPLACEMENT_CHARACTER,
12915    char::REPLACEMENT_CHARACTER,
12916    char::REPLACEMENT_CHARACTER,
12917    char::REPLACEMENT_CHARACTER,
12918    char::REPLACEMENT_CHARACTER,
12919    char::REPLACEMENT_CHARACTER,
12920    char::REPLACEMENT_CHARACTER,
12921    char::REPLACEMENT_CHARACTER,
12922    char::REPLACEMENT_CHARACTER,
12923    char::REPLACEMENT_CHARACTER,
12924    char::REPLACEMENT_CHARACTER,
12925    char::REPLACEMENT_CHARACTER,
12926];
12927const IBM_904_ENCODE_TABLE: &[(u16, u8)] = &[
12928    (0, 0),
12929    (1, 1),
12930    (2, 2),
12931    (3, 3),
12932    (4, 4),
12933    (5, 5),
12934    (6, 6),
12935    (7, 7),
12936    (8, 8),
12937    (9, 9),
12938    (10, 10),
12939    (11, 11),
12940    (12, 12),
12941    (13, 13),
12942    (14, 14),
12943    (15, 15),
12944    (16, 16),
12945    (17, 17),
12946    (18, 18),
12947    (19, 19),
12948    (20, 20),
12949    (21, 21),
12950    (22, 22),
12951    (23, 23),
12952    (24, 24),
12953    (25, 25),
12954    (26, 127),
12955    (27, 27),
12956    (28, 26),
12957    (29, 29),
12958    (30, 30),
12959    (31, 31),
12960    (32, 32),
12961    (33, 33),
12962    (34, 34),
12963    (35, 35),
12964    (36, 36),
12965    (37, 37),
12966    (38, 38),
12967    (39, 39),
12968    (40, 40),
12969    (41, 41),
12970    (42, 42),
12971    (43, 43),
12972    (44, 44),
12973    (45, 45),
12974    (46, 46),
12975    (47, 47),
12976    (48, 48),
12977    (49, 49),
12978    (50, 50),
12979    (51, 51),
12980    (52, 52),
12981    (53, 53),
12982    (54, 54),
12983    (55, 55),
12984    (56, 56),
12985    (57, 57),
12986    (58, 58),
12987    (59, 59),
12988    (60, 60),
12989    (61, 61),
12990    (62, 62),
12991    (63, 63),
12992    (64, 64),
12993    (65, 65),
12994    (66, 66),
12995    (67, 67),
12996    (68, 68),
12997    (69, 69),
12998    (70, 70),
12999    (71, 71),
13000    (72, 72),
13001    (73, 73),
13002    (74, 74),
13003    (75, 75),
13004    (76, 76),
13005    (77, 77),
13006    (78, 78),
13007    (79, 79),
13008    (80, 80),
13009    (81, 81),
13010    (82, 82),
13011    (83, 83),
13012    (84, 84),
13013    (85, 85),
13014    (86, 86),
13015    (87, 87),
13016    (88, 88),
13017    (89, 89),
13018    (90, 90),
13019    (91, 91),
13020    (92, 92),
13021    (93, 93),
13022    (94, 94),
13023    (95, 95),
13024    (96, 96),
13025    (97, 97),
13026    (98, 98),
13027    (99, 99),
13028    (100, 100),
13029    (101, 101),
13030    (102, 102),
13031    (103, 103),
13032    (104, 104),
13033    (105, 105),
13034    (106, 106),
13035    (107, 107),
13036    (108, 108),
13037    (109, 109),
13038    (110, 110),
13039    (111, 111),
13040    (112, 112),
13041    (113, 113),
13042    (114, 114),
13043    (115, 115),
13044    (116, 116),
13045    (117, 117),
13046    (118, 118),
13047    (119, 119),
13048    (120, 120),
13049    (121, 121),
13050    (122, 122),
13051    (123, 123),
13052    (124, 124),
13053    (125, 125),
13054    (126, 126),
13055    (127, 28),
13056];
13057
13058impl_ebcdic_encoder_and_decoder!(
13059    IBM905,
13060    "IBM905",
13061    IBM905Encoder,
13062    IBM905Decoder,
13063    IBM_905_ENCODE_TABLE,
13064    IBM_905_DECODE_TABLE
13065);
13066const IBM_905_DECODE_TABLE: [char; 256] = [
13067    '\u{0}',
13068    '\u{1}',
13069    '\u{2}',
13070    '\u{3}',
13071    '\u{9c}',
13072    '\u{9}',
13073    '\u{86}',
13074    '\u{7f}',
13075    '\u{97}',
13076    '\u{8d}',
13077    '\u{8e}',
13078    '\u{b}',
13079    '\u{c}',
13080    '\u{d}',
13081    '\u{e}',
13082    '\u{f}',
13083    '\u{10}',
13084    '\u{11}',
13085    '\u{12}',
13086    '\u{13}',
13087    '\u{9d}',
13088    '\u{85}',
13089    '\u{8}',
13090    '\u{87}',
13091    '\u{18}',
13092    '\u{19}',
13093    '\u{92}',
13094    '\u{8f}',
13095    '\u{1c}',
13096    '\u{1d}',
13097    '\u{1e}',
13098    '\u{1f}',
13099    '\u{80}',
13100    '\u{81}',
13101    '\u{82}',
13102    '\u{83}',
13103    '\u{84}',
13104    '\u{a}',
13105    '\u{17}',
13106    '\u{1b}',
13107    '\u{88}',
13108    '\u{89}',
13109    '\u{8a}',
13110    '\u{8b}',
13111    '\u{8c}',
13112    '\u{5}',
13113    '\u{6}',
13114    '\u{7}',
13115    '\u{90}',
13116    '\u{91}',
13117    '\u{16}',
13118    '\u{93}',
13119    '\u{94}',
13120    '\u{95}',
13121    '\u{96}',
13122    '\u{4}',
13123    '\u{98}',
13124    '\u{99}',
13125    '\u{9a}',
13126    '\u{9b}',
13127    '\u{14}',
13128    '\u{15}',
13129    '\u{9e}',
13130    '\u{1a}',
13131    '\u{20}',
13132    '\u{a0}',
13133    '\u{e2}',
13134    '\u{e4}',
13135    '\u{e0}',
13136    '\u{e1}',
13137    char::REPLACEMENT_CHARACTER,
13138    '\u{10b}',
13139    '\u{7b}',
13140    '\u{f1}',
13141    '\u{c7}',
13142    '\u{2e}',
13143    '\u{3c}',
13144    '\u{28}',
13145    '\u{2b}',
13146    '\u{21}',
13147    '\u{26}',
13148    '\u{e9}',
13149    '\u{ea}',
13150    '\u{eb}',
13151    '\u{e8}',
13152    '\u{ed}',
13153    '\u{ee}',
13154    '\u{ef}',
13155    '\u{ec}',
13156    '\u{df}',
13157    '\u{11e}',
13158    '\u{130}',
13159    '\u{2a}',
13160    '\u{29}',
13161    '\u{3b}',
13162    '\u{5e}',
13163    '\u{2d}',
13164    '\u{2f}',
13165    '\u{c2}',
13166    '\u{c4}',
13167    '\u{c0}',
13168    '\u{c1}',
13169    char::REPLACEMENT_CHARACTER,
13170    '\u{10a}',
13171    '\u{5b}',
13172    '\u{d1}',
13173    '\u{15f}',
13174    '\u{2c}',
13175    '\u{25}',
13176    '\u{5f}',
13177    '\u{3e}',
13178    '\u{3f}',
13179    char::REPLACEMENT_CHARACTER,
13180    '\u{c9}',
13181    '\u{ca}',
13182    '\u{cb}',
13183    '\u{c8}',
13184    '\u{cd}',
13185    '\u{ce}',
13186    '\u{cf}',
13187    '\u{cc}',
13188    '\u{131}',
13189    '\u{3a}',
13190    '\u{d6}',
13191    '\u{15e}',
13192    '\u{27}',
13193    '\u{3d}',
13194    '\u{dc}',
13195    '\u{2d8}',
13196    '\u{61}',
13197    '\u{62}',
13198    '\u{63}',
13199    '\u{64}',
13200    '\u{65}',
13201    '\u{66}',
13202    '\u{67}',
13203    '\u{68}',
13204    '\u{69}',
13205    '\u{127}',
13206    '\u{109}',
13207    '\u{15d}',
13208    '\u{16d}',
13209    char::REPLACEMENT_CHARACTER,
13210    '\u{7c}',
13211    '\u{b0}',
13212    '\u{6a}',
13213    '\u{6b}',
13214    '\u{6c}',
13215    '\u{6d}',
13216    '\u{6e}',
13217    '\u{6f}',
13218    '\u{70}',
13219    '\u{71}',
13220    '\u{72}',
13221    '\u{125}',
13222    '\u{11d}',
13223    '\u{135}',
13224    '\u{b8}',
13225    char::REPLACEMENT_CHARACTER,
13226    '\u{a4}',
13227    '\u{b5}',
13228    '\u{f6}',
13229    '\u{73}',
13230    '\u{74}',
13231    '\u{75}',
13232    '\u{76}',
13233    '\u{77}',
13234    '\u{78}',
13235    '\u{79}',
13236    '\u{7a}',
13237    '\u{126}',
13238    '\u{108}',
13239    '\u{15c}',
13240    '\u{16c}',
13241    char::REPLACEMENT_CHARACTER,
13242    '\u{40}',
13243    '\u{2d9}',
13244    '\u{a3}',
13245    '\u{17c}',
13246    '\u{7d}',
13247    '\u{17b}',
13248    '\u{a7}',
13249    '\u{5d}',
13250    '\u{b7}',
13251    '\u{bd}',
13252    '\u{24}',
13253    '\u{124}',
13254    '\u{11c}',
13255    '\u{134}',
13256    '\u{a8}',
13257    '\u{b4}',
13258    '\u{d7}',
13259    '\u{e7}',
13260    '\u{41}',
13261    '\u{42}',
13262    '\u{43}',
13263    '\u{44}',
13264    '\u{45}',
13265    '\u{46}',
13266    '\u{47}',
13267    '\u{48}',
13268    '\u{49}',
13269    '\u{ad}',
13270    '\u{f4}',
13271    '\u{7e}',
13272    '\u{f2}',
13273    '\u{f3}',
13274    '\u{121}',
13275    '\u{11f}',
13276    '\u{4a}',
13277    '\u{4b}',
13278    '\u{4c}',
13279    '\u{4d}',
13280    '\u{4e}',
13281    '\u{4f}',
13282    '\u{50}',
13283    '\u{51}',
13284    '\u{52}',
13285    '\u{60}',
13286    '\u{fb}',
13287    '\u{5c}',
13288    '\u{f9}',
13289    '\u{fa}',
13290    char::REPLACEMENT_CHARACTER,
13291    '\u{fc}',
13292    '\u{f7}',
13293    '\u{53}',
13294    '\u{54}',
13295    '\u{55}',
13296    '\u{56}',
13297    '\u{57}',
13298    '\u{58}',
13299    '\u{59}',
13300    '\u{5a}',
13301    '\u{b2}',
13302    '\u{d4}',
13303    '\u{23}',
13304    '\u{d2}',
13305    '\u{d3}',
13306    '\u{120}',
13307    '\u{30}',
13308    '\u{31}',
13309    '\u{32}',
13310    '\u{33}',
13311    '\u{34}',
13312    '\u{35}',
13313    '\u{36}',
13314    '\u{37}',
13315    '\u{38}',
13316    '\u{39}',
13317    '\u{b3}',
13318    '\u{db}',
13319    '\u{22}',
13320    '\u{d9}',
13321    '\u{da}',
13322    '\u{9f}',
13323];
13324const IBM_905_ENCODE_TABLE: &[(u16, u8)] = &[
13325    (0, 0),
13326    (1, 1),
13327    (2, 2),
13328    (3, 3),
13329    (4, 55),
13330    (5, 45),
13331    (6, 46),
13332    (7, 47),
13333    (8, 22),
13334    (9, 5),
13335    (10, 37),
13336    (11, 11),
13337    (12, 12),
13338    (13, 13),
13339    (14, 14),
13340    (15, 15),
13341    (16, 16),
13342    (17, 17),
13343    (18, 18),
13344    (19, 19),
13345    (20, 60),
13346    (21, 61),
13347    (22, 50),
13348    (23, 38),
13349    (24, 24),
13350    (25, 25),
13351    (26, 63),
13352    (27, 39),
13353    (28, 28),
13354    (29, 29),
13355    (30, 30),
13356    (31, 31),
13357    (32, 64),
13358    (33, 79),
13359    (34, 252),
13360    (35, 236),
13361    (36, 185),
13362    (37, 108),
13363    (38, 80),
13364    (39, 125),
13365    (40, 77),
13366    (41, 93),
13367    (42, 92),
13368    (43, 78),
13369    (44, 107),
13370    (45, 96),
13371    (46, 75),
13372    (47, 97),
13373    (48, 240),
13374    (49, 241),
13375    (50, 242),
13376    (51, 243),
13377    (52, 244),
13378    (53, 245),
13379    (54, 246),
13380    (55, 247),
13381    (56, 248),
13382    (57, 249),
13383    (58, 122),
13384    (59, 94),
13385    (60, 76),
13386    (61, 126),
13387    (62, 110),
13388    (63, 111),
13389    (64, 175),
13390    (65, 193),
13391    (66, 194),
13392    (67, 195),
13393    (68, 196),
13394    (69, 197),
13395    (70, 198),
13396    (71, 199),
13397    (72, 200),
13398    (73, 201),
13399    (74, 209),
13400    (75, 210),
13401    (76, 211),
13402    (77, 212),
13403    (78, 213),
13404    (79, 214),
13405    (80, 215),
13406    (81, 216),
13407    (82, 217),
13408    (83, 226),
13409    (84, 227),
13410    (85, 228),
13411    (86, 229),
13412    (87, 230),
13413    (88, 231),
13414    (89, 232),
13415    (90, 233),
13416    (91, 104),
13417    (92, 220),
13418    (93, 182),
13419    (94, 95),
13420    (95, 109),
13421    (96, 218),
13422    (97, 129),
13423    (98, 130),
13424    (99, 131),
13425    (100, 132),
13426    (101, 133),
13427    (102, 134),
13428    (103, 135),
13429    (104, 136),
13430    (105, 137),
13431    (106, 145),
13432    (107, 146),
13433    (108, 147),
13434    (109, 148),
13435    (110, 149),
13436    (111, 150),
13437    (112, 151),
13438    (113, 152),
13439    (114, 153),
13440    (115, 162),
13441    (116, 163),
13442    (117, 164),
13443    (118, 165),
13444    (119, 166),
13445    (120, 167),
13446    (121, 168),
13447    (122, 169),
13448    (123, 72),
13449    (124, 143),
13450    (125, 179),
13451    (126, 204),
13452    (127, 7),
13453    (128, 32),
13454    (129, 33),
13455    (130, 34),
13456    (131, 35),
13457    (132, 36),
13458    (133, 21),
13459    (134, 6),
13460    (135, 23),
13461    (136, 40),
13462    (137, 41),
13463    (138, 42),
13464    (139, 43),
13465    (140, 44),
13466    (141, 9),
13467    (142, 10),
13468    (143, 27),
13469    (144, 48),
13470    (145, 49),
13471    (146, 26),
13472    (147, 51),
13473    (148, 52),
13474    (149, 53),
13475    (150, 54),
13476    (151, 8),
13477    (152, 56),
13478    (153, 57),
13479    (154, 58),
13480    (155, 59),
13481    (156, 4),
13482    (157, 20),
13483    (158, 62),
13484    (159, 255),
13485    (160, 65),
13486    (163, 177),
13487    (164, 159),
13488    (167, 181),
13489    (168, 189),
13490    (173, 202),
13491    (176, 144),
13492    (178, 234),
13493    (179, 250),
13494    (180, 190),
13495    (181, 160),
13496    (183, 183),
13497    (184, 157),
13498    (189, 184),
13499    (192, 100),
13500    (193, 101),
13501    (194, 98),
13502    (196, 99),
13503    (199, 74),
13504    (200, 116),
13505    (201, 113),
13506    (202, 114),
13507    (203, 115),
13508    (204, 120),
13509    (205, 117),
13510    (206, 118),
13511    (207, 119),
13512    (209, 105),
13513    (210, 237),
13514    (211, 238),
13515    (212, 235),
13516    (214, 123),
13517    (215, 191),
13518    (217, 253),
13519    (218, 254),
13520    (219, 251),
13521    (220, 127),
13522    (223, 89),
13523    (224, 68),
13524    (225, 69),
13525    (226, 66),
13526    (228, 67),
13527    (231, 192),
13528    (232, 84),
13529    (233, 81),
13530    (234, 82),
13531    (235, 83),
13532    (236, 88),
13533    (237, 85),
13534    (238, 86),
13535    (239, 87),
13536    (241, 73),
13537    (242, 205),
13538    (243, 206),
13539    (244, 203),
13540    (246, 161),
13541    (247, 225),
13542    (249, 221),
13543    (250, 222),
13544    (251, 219),
13545    (252, 224),
13546    (264, 171),
13547    (265, 139),
13548    (266, 103),
13549    (267, 71),
13550    (284, 187),
13551    (285, 155),
13552    (286, 90),
13553    (287, 208),
13554    (288, 239),
13555    (289, 207),
13556    (292, 186),
13557    (293, 154),
13558    (294, 170),
13559    (295, 138),
13560    (304, 91),
13561    (305, 121),
13562    (308, 188),
13563    (309, 156),
13564    (348, 172),
13565    (349, 140),
13566    (350, 124),
13567    (351, 106),
13568    (364, 173),
13569    (365, 141),
13570    (379, 180),
13571    (380, 178),
13572    (728, 128),
13573    (729, 176),
13574];
13575
13576impl_ebcdic_encoder_and_decoder!(
13577    IBM918,
13578    "IBM918",
13579    IBM918Encoder,
13580    IBM918Decoder,
13581    IBM_918_ENCODE_TABLE,
13582    IBM_918_DECODE_TABLE
13583);
13584const IBM_918_DECODE_TABLE: [char; 256] = [
13585    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
13586    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
13587    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
13588    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
13589    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
13590    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
13591    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
13592    '\u{a0}', '\u{60c}', '\u{61b}', '\u{61f}', '\u{fe81}', '\u{fe8d}', '\u{fe8e}', '\u{f8fb}',
13593    '\u{fe8f}', '\u{5b}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{fe91}',
13594    '\u{fb56}', '\u{fb58}', '\u{fe93}', '\u{fe95}', '\u{fe97}', '\u{fb66}', '\u{fb68}', '\u{fe99}',
13595    '\u{5d}', '\u{24}', '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{fe9b}',
13596    '\u{fe9d}', '\u{fe9f}', '\u{fb7a}', '\u{fb7c}', '\u{fea1}', '\u{fea3}', '\u{fea5}', '\u{60}',
13597    '\u{2c}', '\u{25}', '\u{5f}', '\u{3e}', '\u{3f}', '\u{6f0}', '\u{6f1}', '\u{6f2}', '\u{6f3}',
13598    '\u{6f4}', '\u{6f5}', '\u{6f6}', '\u{6f7}', '\u{6f8}', '\u{6f9}', '\u{3a}', '\u{23}', '\u{40}',
13599    '\u{27}', '\u{3d}', '\u{22}', '\u{fea7}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}',
13600    '\u{66}', '\u{67}', '\u{68}', '\u{69}', '\u{fea9}', '\u{fb88}', '\u{feab}', '\u{fead}',
13601    '\u{fb8c}', '\u{feaf}', '\u{fb8a}', '\u{6a}', '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}',
13602    '\u{70}', '\u{71}', '\u{72}', '\u{feb1}', '\u{feb3}', '\u{feb5}', '\u{feb7}', '\u{feb9}',
13603    '\u{febb}', '\u{febd}', '\u{7e}', '\u{73}', '\u{74}', '\u{75}', '\u{76}', '\u{77}', '\u{78}',
13604    '\u{79}', '\u{7a}', '\u{febf}', '\u{fec3}', '\u{fec7}', '\u{fec9}', '\u{feca}', '\u{fecb}',
13605    '\u{fecc}', '\u{fecd}', '\u{fece}', '\u{fecf}', '\u{fed0}', '\u{fed1}', '\u{fed3}', '\u{fed5}',
13606    '\u{fed7}', '\u{fb8e}', '\u{fedb}', '\u{7c}', '\u{fb92}', '\u{fb94}', '\u{fedd}', '\u{fedf}',
13607    '\u{7b}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}', '\u{48}',
13608    '\u{49}', '\u{ad}', '\u{fee0}', '\u{fee1}', '\u{fee3}', '\u{fb9e}', '\u{fee5}', '\u{7d}',
13609    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
13610    '\u{fee7}', '\u{fe85}', '\u{feed}', '\u{fba6}', '\u{fba8}', '\u{fba9}', '\u{5c}', '\u{fbaa}',
13611    '\u{53}', '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{fe80}',
13612    '\u{fe89}', '\u{fe8a}', '\u{fe8b}', '\u{fbfc}', '\u{fbfd}', '\u{30}', '\u{31}', '\u{32}',
13613    '\u{33}', '\u{34}', '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{fbfe}', '\u{fbb0}',
13614    '\u{fbae}', '\u{fe7c}', '\u{fe7d}', '\u{9f}',
13615];
13616const IBM_918_ENCODE_TABLE: &[(u16, u8)] = &[
13617    (0, 0),
13618    (1, 1),
13619    (2, 2),
13620    (3, 3),
13621    (4, 55),
13622    (5, 45),
13623    (6, 46),
13624    (7, 47),
13625    (8, 22),
13626    (9, 5),
13627    (10, 37),
13628    (11, 11),
13629    (12, 12),
13630    (13, 13),
13631    (14, 14),
13632    (15, 15),
13633    (16, 16),
13634    (17, 17),
13635    (18, 18),
13636    (19, 19),
13637    (20, 60),
13638    (21, 61),
13639    (22, 50),
13640    (23, 38),
13641    (24, 24),
13642    (25, 25),
13643    (26, 63),
13644    (27, 39),
13645    (28, 28),
13646    (29, 29),
13647    (30, 30),
13648    (31, 31),
13649    (32, 64),
13650    (33, 79),
13651    (34, 127),
13652    (35, 123),
13653    (36, 91),
13654    (37, 108),
13655    (38, 80),
13656    (39, 125),
13657    (40, 77),
13658    (41, 93),
13659    (42, 92),
13660    (43, 78),
13661    (44, 107),
13662    (45, 96),
13663    (46, 75),
13664    (47, 97),
13665    (48, 240),
13666    (49, 241),
13667    (50, 242),
13668    (51, 243),
13669    (52, 244),
13670    (53, 245),
13671    (54, 246),
13672    (55, 247),
13673    (56, 248),
13674    (57, 249),
13675    (58, 122),
13676    (59, 94),
13677    (60, 76),
13678    (61, 126),
13679    (62, 110),
13680    (63, 111),
13681    (64, 124),
13682    (65, 193),
13683    (66, 194),
13684    (67, 195),
13685    (68, 196),
13686    (69, 197),
13687    (70, 198),
13688    (71, 199),
13689    (72, 200),
13690    (73, 201),
13691    (74, 209),
13692    (75, 210),
13693    (76, 211),
13694    (77, 212),
13695    (78, 213),
13696    (79, 214),
13697    (80, 215),
13698    (81, 216),
13699    (82, 217),
13700    (83, 226),
13701    (84, 227),
13702    (85, 228),
13703    (86, 229),
13704    (87, 230),
13705    (88, 231),
13706    (89, 232),
13707    (90, 233),
13708    (91, 74),
13709    (92, 224),
13710    (93, 90),
13711    (94, 95),
13712    (95, 109),
13713    (96, 106),
13714    (97, 129),
13715    (98, 130),
13716    (99, 131),
13717    (100, 132),
13718    (101, 133),
13719    (102, 134),
13720    (103, 135),
13721    (104, 136),
13722    (105, 137),
13723    (106, 145),
13724    (107, 146),
13725    (108, 147),
13726    (109, 148),
13727    (110, 149),
13728    (111, 150),
13729    (112, 151),
13730    (113, 152),
13731    (114, 153),
13732    (115, 162),
13733    (116, 163),
13734    (117, 164),
13735    (118, 165),
13736    (119, 166),
13737    (120, 167),
13738    (121, 168),
13739    (122, 169),
13740    (123, 192),
13741    (124, 187),
13742    (125, 208),
13743    (126, 161),
13744    (127, 7),
13745    (128, 32),
13746    (129, 33),
13747    (130, 34),
13748    (131, 35),
13749    (132, 36),
13750    (133, 21),
13751    (134, 6),
13752    (135, 23),
13753    (136, 40),
13754    (137, 41),
13755    (138, 42),
13756    (139, 43),
13757    (140, 44),
13758    (141, 9),
13759    (142, 10),
13760    (143, 27),
13761    (144, 48),
13762    (145, 49),
13763    (146, 26),
13764    (147, 51),
13765    (148, 52),
13766    (149, 53),
13767    (150, 54),
13768    (151, 8),
13769    (152, 56),
13770    (153, 57),
13771    (154, 58),
13772    (155, 59),
13773    (156, 4),
13774    (157, 20),
13775    (158, 62),
13776    (159, 255),
13777    (160, 65),
13778    (173, 202),
13779    (1548, 66),
13780    (1563, 67),
13781    (1567, 68),
13782    (1776, 112),
13783    (1777, 113),
13784    (1778, 114),
13785    (1779, 115),
13786    (1780, 116),
13787    (1781, 117),
13788    (1782, 118),
13789    (1783, 119),
13790    (1784, 120),
13791    (1785, 121),
13792    (63739, 72),
13793    (64342, 82),
13794    (64344, 83),
13795    (64358, 87),
13796    (64360, 88),
13797    (64378, 101),
13798    (64380, 102),
13799    (64392, 139),
13800    (64394, 144),
13801    (64396, 142),
13802    (64398, 185),
13803    (64402, 188),
13804    (64404, 189),
13805    (64414, 206),
13806    (64422, 221),
13807    (64424, 222),
13808    (64425, 223),
13809    (64426, 225),
13810    (64430, 252),
13811    (64432, 251),
13812    (64508, 238),
13813    (64509, 239),
13814    (64510, 250),
13815    (65148, 253),
13816    (65149, 254),
13817    (65152, 234),
13818    (65153, 69),
13819    (65157, 219),
13820    (65161, 235),
13821    (65162, 236),
13822    (65163, 237),
13823    (65165, 70),
13824    (65166, 71),
13825    (65167, 73),
13826    (65169, 81),
13827    (65171, 84),
13828    (65173, 85),
13829    (65175, 86),
13830    (65177, 89),
13831    (65179, 98),
13832    (65181, 99),
13833    (65183, 100),
13834    (65185, 103),
13835    (65187, 104),
13836    (65189, 105),
13837    (65191, 128),
13838    (65193, 138),
13839    (65195, 140),
13840    (65197, 141),
13841    (65199, 143),
13842    (65201, 154),
13843    (65203, 155),
13844    (65205, 156),
13845    (65207, 157),
13846    (65209, 158),
13847    (65211, 159),
13848    (65213, 160),
13849    (65215, 170),
13850    (65219, 171),
13851    (65223, 172),
13852    (65225, 173),
13853    (65226, 174),
13854    (65227, 175),
13855    (65228, 176),
13856    (65229, 177),
13857    (65230, 178),
13858    (65231, 179),
13859    (65232, 180),
13860    (65233, 181),
13861    (65235, 182),
13862    (65237, 183),
13863    (65239, 184),
13864    (65243, 186),
13865    (65245, 190),
13866    (65247, 191),
13867    (65248, 203),
13868    (65249, 204),
13869    (65251, 205),
13870    (65253, 207),
13871    (65255, 218),
13872    (65261, 220),
13873];
13874
13875impl_ebcdic_encoder_and_decoder!(
13876    IBM1026,
13877    "IBM1026",
13878    IBM1026Encoder,
13879    IBM1026Decoder,
13880    IBM_1026_ENCODE_TABLE,
13881    IBM_1026_DECODE_TABLE
13882);
13883const IBM_1026_DECODE_TABLE: [char; 256] = [
13884    '\u{0}', '\u{1}', '\u{2}', '\u{3}', '\u{9c}', '\u{9}', '\u{86}', '\u{7f}', '\u{97}', '\u{8d}',
13885    '\u{8e}', '\u{b}', '\u{c}', '\u{d}', '\u{e}', '\u{f}', '\u{10}', '\u{11}', '\u{12}', '\u{13}',
13886    '\u{9d}', '\u{85}', '\u{8}', '\u{87}', '\u{18}', '\u{19}', '\u{92}', '\u{8f}', '\u{1c}',
13887    '\u{1d}', '\u{1e}', '\u{1f}', '\u{80}', '\u{81}', '\u{82}', '\u{83}', '\u{84}', '\u{a}',
13888    '\u{17}', '\u{1b}', '\u{88}', '\u{89}', '\u{8a}', '\u{8b}', '\u{8c}', '\u{5}', '\u{6}',
13889    '\u{7}', '\u{90}', '\u{91}', '\u{16}', '\u{93}', '\u{94}', '\u{95}', '\u{96}', '\u{4}',
13890    '\u{98}', '\u{99}', '\u{9a}', '\u{9b}', '\u{14}', '\u{15}', '\u{9e}', '\u{1a}', '\u{20}',
13891    '\u{a0}', '\u{e2}', '\u{e4}', '\u{e0}', '\u{e1}', '\u{e3}', '\u{e5}', '\u{7b}', '\u{f1}',
13892    '\u{c7}', '\u{2e}', '\u{3c}', '\u{28}', '\u{2b}', '\u{21}', '\u{26}', '\u{e9}', '\u{ea}',
13893    '\u{eb}', '\u{e8}', '\u{ed}', '\u{ee}', '\u{ef}', '\u{ec}', '\u{df}', '\u{11e}', '\u{130}',
13894    '\u{2a}', '\u{29}', '\u{3b}', '\u{5e}', '\u{2d}', '\u{2f}', '\u{c2}', '\u{c4}', '\u{c0}',
13895    '\u{c1}', '\u{c3}', '\u{c5}', '\u{5b}', '\u{d1}', '\u{15f}', '\u{2c}', '\u{25}', '\u{5f}',
13896    '\u{3e}', '\u{3f}', '\u{f8}', '\u{c9}', '\u{ca}', '\u{cb}', '\u{c8}', '\u{cd}', '\u{ce}',
13897    '\u{cf}', '\u{cc}', '\u{131}', '\u{3a}', '\u{d6}', '\u{15e}', '\u{27}', '\u{3d}', '\u{dc}',
13898    '\u{d8}', '\u{61}', '\u{62}', '\u{63}', '\u{64}', '\u{65}', '\u{66}', '\u{67}', '\u{68}',
13899    '\u{69}', '\u{ab}', '\u{bb}', '\u{7d}', '\u{60}', '\u{a6}', '\u{b1}', '\u{b0}', '\u{6a}',
13900    '\u{6b}', '\u{6c}', '\u{6d}', '\u{6e}', '\u{6f}', '\u{70}', '\u{71}', '\u{72}', '\u{aa}',
13901    '\u{ba}', '\u{e6}', '\u{b8}', '\u{c6}', '\u{a4}', '\u{b5}', '\u{f6}', '\u{73}', '\u{74}',
13902    '\u{75}', '\u{76}', '\u{77}', '\u{78}', '\u{79}', '\u{7a}', '\u{a1}', '\u{bf}', '\u{5d}',
13903    '\u{24}', '\u{40}', '\u{ae}', '\u{a2}', '\u{a3}', '\u{a5}', '\u{b7}', '\u{a9}', '\u{a7}',
13904    '\u{b6}', '\u{bc}', '\u{bd}', '\u{be}', '\u{ac}', '\u{7c}', '\u{af}', '\u{a8}', '\u{b4}',
13905    '\u{d7}', '\u{e7}', '\u{41}', '\u{42}', '\u{43}', '\u{44}', '\u{45}', '\u{46}', '\u{47}',
13906    '\u{48}', '\u{49}', '\u{ad}', '\u{f4}', '\u{7e}', '\u{f2}', '\u{f3}', '\u{f5}', '\u{11f}',
13907    '\u{4a}', '\u{4b}', '\u{4c}', '\u{4d}', '\u{4e}', '\u{4f}', '\u{50}', '\u{51}', '\u{52}',
13908    '\u{b9}', '\u{fb}', '\u{5c}', '\u{f9}', '\u{fa}', '\u{ff}', '\u{fc}', '\u{f7}', '\u{53}',
13909    '\u{54}', '\u{55}', '\u{56}', '\u{57}', '\u{58}', '\u{59}', '\u{5a}', '\u{b2}', '\u{d4}',
13910    '\u{23}', '\u{d2}', '\u{d3}', '\u{d5}', '\u{30}', '\u{31}', '\u{32}', '\u{33}', '\u{34}',
13911    '\u{35}', '\u{36}', '\u{37}', '\u{38}', '\u{39}', '\u{b3}', '\u{db}', '\u{22}', '\u{d9}',
13912    '\u{da}', '\u{9f}',
13913];
13914const IBM_1026_ENCODE_TABLE: &[(u16, u8)] = &[
13915    (0, 0),
13916    (1, 1),
13917    (2, 2),
13918    (3, 3),
13919    (4, 55),
13920    (5, 45),
13921    (6, 46),
13922    (7, 47),
13923    (8, 22),
13924    (9, 5),
13925    (10, 37),
13926    (11, 11),
13927    (12, 12),
13928    (13, 13),
13929    (14, 14),
13930    (15, 15),
13931    (16, 16),
13932    (17, 17),
13933    (18, 18),
13934    (19, 19),
13935    (20, 60),
13936    (21, 61),
13937    (22, 50),
13938    (23, 38),
13939    (24, 24),
13940    (25, 25),
13941    (26, 63),
13942    (27, 39),
13943    (28, 28),
13944    (29, 29),
13945    (30, 30),
13946    (31, 31),
13947    (32, 64),
13948    (33, 79),
13949    (34, 252),
13950    (35, 236),
13951    (36, 173),
13952    (37, 108),
13953    (38, 80),
13954    (39, 125),
13955    (40, 77),
13956    (41, 93),
13957    (42, 92),
13958    (43, 78),
13959    (44, 107),
13960    (45, 96),
13961    (46, 75),
13962    (47, 97),
13963    (48, 240),
13964    (49, 241),
13965    (50, 242),
13966    (51, 243),
13967    (52, 244),
13968    (53, 245),
13969    (54, 246),
13970    (55, 247),
13971    (56, 248),
13972    (57, 249),
13973    (58, 122),
13974    (59, 94),
13975    (60, 76),
13976    (61, 126),
13977    (62, 110),
13978    (63, 111),
13979    (64, 174),
13980    (65, 193),
13981    (66, 194),
13982    (67, 195),
13983    (68, 196),
13984    (69, 197),
13985    (70, 198),
13986    (71, 199),
13987    (72, 200),
13988    (73, 201),
13989    (74, 209),
13990    (75, 210),
13991    (76, 211),
13992    (77, 212),
13993    (78, 213),
13994    (79, 214),
13995    (80, 215),
13996    (81, 216),
13997    (82, 217),
13998    (83, 226),
13999    (84, 227),
14000    (85, 228),
14001    (86, 229),
14002    (87, 230),
14003    (88, 231),
14004    (89, 232),
14005    (90, 233),
14006    (91, 104),
14007    (92, 220),
14008    (93, 172),
14009    (94, 95),
14010    (95, 109),
14011    (96, 141),
14012    (97, 129),
14013    (98, 130),
14014    (99, 131),
14015    (100, 132),
14016    (101, 133),
14017    (102, 134),
14018    (103, 135),
14019    (104, 136),
14020    (105, 137),
14021    (106, 145),
14022    (107, 146),
14023    (108, 147),
14024    (109, 148),
14025    (110, 149),
14026    (111, 150),
14027    (112, 151),
14028    (113, 152),
14029    (114, 153),
14030    (115, 162),
14031    (116, 163),
14032    (117, 164),
14033    (118, 165),
14034    (119, 166),
14035    (120, 167),
14036    (121, 168),
14037    (122, 169),
14038    (123, 72),
14039    (124, 187),
14040    (125, 140),
14041    (126, 204),
14042    (127, 7),
14043    (128, 32),
14044    (129, 33),
14045    (130, 34),
14046    (131, 35),
14047    (132, 36),
14048    (133, 21),
14049    (134, 6),
14050    (135, 23),
14051    (136, 40),
14052    (137, 41),
14053    (138, 42),
14054    (139, 43),
14055    (140, 44),
14056    (141, 9),
14057    (142, 10),
14058    (143, 27),
14059    (144, 48),
14060    (145, 49),
14061    (146, 26),
14062    (147, 51),
14063    (148, 52),
14064    (149, 53),
14065    (150, 54),
14066    (151, 8),
14067    (152, 56),
14068    (153, 57),
14069    (154, 58),
14070    (155, 59),
14071    (156, 4),
14072    (157, 20),
14073    (158, 62),
14074    (159, 255),
14075    (160, 65),
14076    (161, 170),
14077    (162, 176),
14078    (163, 177),
14079    (164, 159),
14080    (165, 178),
14081    (166, 142),
14082    (167, 181),
14083    (168, 189),
14084    (169, 180),
14085    (170, 154),
14086    (171, 138),
14087    (172, 186),
14088    (173, 202),
14089    (174, 175),
14090    (175, 188),
14091    (176, 144),
14092    (177, 143),
14093    (178, 234),
14094    (179, 250),
14095    (180, 190),
14096    (181, 160),
14097    (182, 182),
14098    (183, 179),
14099    (184, 157),
14100    (185, 218),
14101    (186, 155),
14102    (187, 139),
14103    (188, 183),
14104    (189, 184),
14105    (190, 185),
14106    (191, 171),
14107    (192, 100),
14108    (193, 101),
14109    (194, 98),
14110    (195, 102),
14111    (196, 99),
14112    (197, 103),
14113    (198, 158),
14114    (199, 74),
14115    (200, 116),
14116    (201, 113),
14117    (202, 114),
14118    (203, 115),
14119    (204, 120),
14120    (205, 117),
14121    (206, 118),
14122    (207, 119),
14123    (209, 105),
14124    (210, 237),
14125    (211, 238),
14126    (212, 235),
14127    (213, 239),
14128    (214, 123),
14129    (215, 191),
14130    (216, 128),
14131    (217, 253),
14132    (218, 254),
14133    (219, 251),
14134    (220, 127),
14135    (223, 89),
14136    (224, 68),
14137    (225, 69),
14138    (226, 66),
14139    (227, 70),
14140    (228, 67),
14141    (229, 71),
14142    (230, 156),
14143    (231, 192),
14144    (232, 84),
14145    (233, 81),
14146    (234, 82),
14147    (235, 83),
14148    (236, 88),
14149    (237, 85),
14150    (238, 86),
14151    (239, 87),
14152    (241, 73),
14153    (242, 205),
14154    (243, 206),
14155    (244, 203),
14156    (245, 207),
14157    (246, 161),
14158    (247, 225),
14159    (248, 112),
14160    (249, 221),
14161    (250, 222),
14162    (251, 219),
14163    (252, 224),
14164    (255, 223),
14165    (286, 90),
14166    (287, 208),
14167    (304, 91),
14168    (305, 121),
14169    (350, 124),
14170    (351, 106),
14171];
14172
14173#[cfg(test)]
14174mod tests {
14175    use super::*;
14176
14177    #[test]
14178    fn ebcdic_decoding_tests() {
14179        let doc = [
14180            0x4c, 0x6f, 0xa7, 0x94, 0x93, 0x40, 0xa5, 0x85, 0x99, 0xa2, 0x89, 0x96, 0x95, 0x7e,
14181            0x7f, 0xf1, 0x4b, 0xf0, 0x7f, 0x40, 0x85, 0x95, 0x83, 0x96, 0x84, 0x89, 0x95, 0x87,
14182            0x7e, 0x7f, 0xc3, 0x97, 0xf0, 0xf3, 0xf7, 0x7f, 0x6f, 0x6e, 0x25, 0x4c, 0x97, 0x6e,
14183            0x84, 0x81, 0xa3, 0x81, 0x4c, 0x61, 0x97, 0x6e,
14184        ];
14185
14186        let mut buf = String::with_capacity(1024);
14187        IBM037Decoder.decode(&doc, &mut buf, true).ok();
14188        assert_eq!(
14189            buf,
14190            "<?xml version=\"1.0\" encoding=\"Cp037\"?>\n<p>data</p>"
14191        );
14192    }
14193}