File Coverage

blib/lib/Protocol/HTTP2/HuffmanCodes.pm
Criterion Covered Total %
statement 6 6 100.0
branch n/a
condition n/a
subroutine 2 2 100.0
pod n/a
total 8 8 100.0


line stmt bran cond sub pod time code
1             package Protocol::HTTP2::HuffmanCodes;
2 13     13   38 use strict;
  13         13  
  13         265  
3 13     13   664 use warnings;
  13         13  
  13         5541  
4             require Exporter;
5             our @ISA = qw(Exporter);
6             our ( %hcodes, %rhcodes, $hre );
7             our @EXPORT = qw(%hcodes %rhcodes $hre);
8              
9             %hcodes = (
10             0 => '1111111111000',
11             1 => '11111111111111111011000',
12             2 => '1111111111111111111111100010',
13             3 => '1111111111111111111111100011',
14             4 => '1111111111111111111111100100',
15             5 => '1111111111111111111111100101',
16             6 => '1111111111111111111111100110',
17             7 => '1111111111111111111111100111',
18             8 => '1111111111111111111111101000',
19             9 => '111111111111111111101010',
20             10 => '111111111111111111111111111100',
21             11 => '1111111111111111111111101001',
22             12 => '1111111111111111111111101010',
23             13 => '111111111111111111111111111101',
24             14 => '1111111111111111111111101011',
25             15 => '1111111111111111111111101100',
26             16 => '1111111111111111111111101101',
27             17 => '1111111111111111111111101110',
28             18 => '1111111111111111111111101111',
29             19 => '1111111111111111111111110000',
30             20 => '1111111111111111111111110001',
31             21 => '1111111111111111111111110010',
32             22 => '111111111111111111111111111110',
33             23 => '1111111111111111111111110011',
34             24 => '1111111111111111111111110100',
35             25 => '1111111111111111111111110101',
36             26 => '1111111111111111111111110110',
37             27 => '1111111111111111111111110111',
38             28 => '1111111111111111111111111000',
39             29 => '1111111111111111111111111001',
40             30 => '1111111111111111111111111010',
41             31 => '1111111111111111111111111011',
42             32 => '010100',
43             33 => '1111111000',
44             34 => '1111111001',
45             35 => '111111111010',
46             36 => '1111111111001',
47             37 => '010101',
48             38 => '11111000',
49             39 => '11111111010',
50             40 => '1111111010',
51             41 => '1111111011',
52             42 => '11111001',
53             43 => '11111111011',
54             44 => '11111010',
55             45 => '010110',
56             46 => '010111',
57             47 => '011000',
58             48 => '00000',
59             49 => '00001',
60             50 => '00010',
61             51 => '011001',
62             52 => '011010',
63             53 => '011011',
64             54 => '011100',
65             55 => '011101',
66             56 => '011110',
67             57 => '011111',
68             58 => '1011100',
69             59 => '11111011',
70             60 => '111111111111100',
71             61 => '100000',
72             62 => '111111111011',
73             63 => '1111111100',
74             64 => '1111111111010',
75             65 => '100001',
76             66 => '1011101',
77             67 => '1011110',
78             68 => '1011111',
79             69 => '1100000',
80             70 => '1100001',
81             71 => '1100010',
82             72 => '1100011',
83             73 => '1100100',
84             74 => '1100101',
85             75 => '1100110',
86             76 => '1100111',
87             77 => '1101000',
88             78 => '1101001',
89             79 => '1101010',
90             80 => '1101011',
91             81 => '1101100',
92             82 => '1101101',
93             83 => '1101110',
94             84 => '1101111',
95             85 => '1110000',
96             86 => '1110001',
97             87 => '1110010',
98             88 => '11111100',
99             89 => '1110011',
100             90 => '11111101',
101             91 => '1111111111011',
102             92 => '1111111111111110000',
103             93 => '1111111111100',
104             94 => '11111111111100',
105             95 => '100010',
106             96 => '111111111111101',
107             97 => '00011',
108             98 => '100011',
109             99 => '00100',
110             100 => '100100',
111             101 => '00101',
112             102 => '100101',
113             103 => '100110',
114             104 => '100111',
115             105 => '00110',
116             106 => '1110100',
117             107 => '1110101',
118             108 => '101000',
119             109 => '101001',
120             110 => '101010',
121             111 => '00111',
122             112 => '101011',
123             113 => '1110110',
124             114 => '101100',
125             115 => '01000',
126             116 => '01001',
127             117 => '101101',
128             118 => '1110111',
129             119 => '1111000',
130             120 => '1111001',
131             121 => '1111010',
132             122 => '1111011',
133             123 => '111111111111110',
134             124 => '11111111100',
135             125 => '11111111111101',
136             126 => '1111111111101',
137             127 => '1111111111111111111111111100',
138             128 => '11111111111111100110',
139             129 => '1111111111111111010010',
140             130 => '11111111111111100111',
141             131 => '11111111111111101000',
142             132 => '1111111111111111010011',
143             133 => '1111111111111111010100',
144             134 => '1111111111111111010101',
145             135 => '11111111111111111011001',
146             136 => '1111111111111111010110',
147             137 => '11111111111111111011010',
148             138 => '11111111111111111011011',
149             139 => '11111111111111111011100',
150             140 => '11111111111111111011101',
151             141 => '11111111111111111011110',
152             142 => '111111111111111111101011',
153             143 => '11111111111111111011111',
154             144 => '111111111111111111101100',
155             145 => '111111111111111111101101',
156             146 => '1111111111111111010111',
157             147 => '11111111111111111100000',
158             148 => '111111111111111111101110',
159             149 => '11111111111111111100001',
160             150 => '11111111111111111100010',
161             151 => '11111111111111111100011',
162             152 => '11111111111111111100100',
163             153 => '111111111111111011100',
164             154 => '1111111111111111011000',
165             155 => '11111111111111111100101',
166             156 => '1111111111111111011001',
167             157 => '11111111111111111100110',
168             158 => '11111111111111111100111',
169             159 => '111111111111111111101111',
170             160 => '1111111111111111011010',
171             161 => '111111111111111011101',
172             162 => '11111111111111101001',
173             163 => '1111111111111111011011',
174             164 => '1111111111111111011100',
175             165 => '11111111111111111101000',
176             166 => '11111111111111111101001',
177             167 => '111111111111111011110',
178             168 => '11111111111111111101010',
179             169 => '1111111111111111011101',
180             170 => '1111111111111111011110',
181             171 => '111111111111111111110000',
182             172 => '111111111111111011111',
183             173 => '1111111111111111011111',
184             174 => '11111111111111111101011',
185             175 => '11111111111111111101100',
186             176 => '111111111111111100000',
187             177 => '111111111111111100001',
188             178 => '1111111111111111100000',
189             179 => '111111111111111100010',
190             180 => '11111111111111111101101',
191             181 => '1111111111111111100001',
192             182 => '11111111111111111101110',
193             183 => '11111111111111111101111',
194             184 => '11111111111111101010',
195             185 => '1111111111111111100010',
196             186 => '1111111111111111100011',
197             187 => '1111111111111111100100',
198             188 => '11111111111111111110000',
199             189 => '1111111111111111100101',
200             190 => '1111111111111111100110',
201             191 => '11111111111111111110001',
202             192 => '11111111111111111111100000',
203             193 => '11111111111111111111100001',
204             194 => '11111111111111101011',
205             195 => '1111111111111110001',
206             196 => '1111111111111111100111',
207             197 => '11111111111111111110010',
208             198 => '1111111111111111101000',
209             199 => '1111111111111111111101100',
210             200 => '11111111111111111111100010',
211             201 => '11111111111111111111100011',
212             202 => '11111111111111111111100100',
213             203 => '111111111111111111111011110',
214             204 => '111111111111111111111011111',
215             205 => '11111111111111111111100101',
216             206 => '111111111111111111110001',
217             207 => '1111111111111111111101101',
218             208 => '1111111111111110010',
219             209 => '111111111111111100011',
220             210 => '11111111111111111111100110',
221             211 => '111111111111111111111100000',
222             212 => '111111111111111111111100001',
223             213 => '11111111111111111111100111',
224             214 => '111111111111111111111100010',
225             215 => '111111111111111111110010',
226             216 => '111111111111111100100',
227             217 => '111111111111111100101',
228             218 => '11111111111111111111101000',
229             219 => '11111111111111111111101001',
230             220 => '1111111111111111111111111101',
231             221 => '111111111111111111111100011',
232             222 => '111111111111111111111100100',
233             223 => '111111111111111111111100101',
234             224 => '11111111111111101100',
235             225 => '111111111111111111110011',
236             226 => '11111111111111101101',
237             227 => '111111111111111100110',
238             228 => '1111111111111111101001',
239             229 => '111111111111111100111',
240             230 => '111111111111111101000',
241             231 => '11111111111111111110011',
242             232 => '1111111111111111101010',
243             233 => '1111111111111111101011',
244             234 => '1111111111111111111101110',
245             235 => '1111111111111111111101111',
246             236 => '111111111111111111110100',
247             237 => '111111111111111111110101',
248             238 => '11111111111111111111101010',
249             239 => '11111111111111111110100',
250             240 => '11111111111111111111101011',
251             241 => '111111111111111111111100110',
252             242 => '11111111111111111111101100',
253             243 => '11111111111111111111101101',
254             244 => '111111111111111111111100111',
255             245 => '111111111111111111111101000',
256             246 => '111111111111111111111101001',
257             247 => '111111111111111111111101010',
258             248 => '111111111111111111111101011',
259             249 => '1111111111111111111111111110',
260             250 => '111111111111111111111101100',
261             251 => '111111111111111111111101101',
262             252 => '111111111111111111111101110',
263             253 => '111111111111111111111101111',
264             254 => '111111111111111111111110000',
265             255 => '11111111111111111111101110',
266             256 => '111111111111111111111111111111',
267             );
268              
269             %rhcodes = reverse %hcodes;
270              
271             {
272             local $" = '|';
273             $hre = qr/(?:^|\G)(@{[ keys %rhcodes ]})/;
274             }
275              
276             1;