diff options
author | Peter Ross <pross@xvid.org> | 2019-01-13 15:15:29 +1100 |
---|---|---|
committer | Peter Ross <pross@xvid.org> | 2019-01-26 23:49:04 +1100 |
commit | 160ebe0a8d780f6db7c18e824d8ec6f437da33a2 (patch) | |
tree | ee73ea2f72016d83d963d06bd03098c999c490ab | |
parent | 10a57f55e60902ab91388b8a46b73f1f4532f737 (diff) | |
download | ffmpeg-160ebe0a8d780f6db7c18e824d8ec6f437da33a2.tar.gz |
avcodec/vp6: use ff_vp3dsp_[hv]_loop_filter_12
Partially fixes: https://trac.ffmpeg.org/ticket/1282
Signed-off-by: Peter Ross <pross@xvid.org>
-rw-r--r-- | libavcodec/vp56.c | 10 | ||||
-rw-r--r-- | libavcodec/vp56.h | 1 | ||||
-rw-r--r-- | libavcodec/vp56dsp.c | 19 | ||||
-rw-r--r-- | tests/ref/fate/vp61 | 230 | ||||
-rw-r--r-- | tests/ref/fate/vp6f | 340 |
5 files changed, 296 insertions, 304 deletions
diff --git a/libavcodec/vp56.c b/libavcodec/vp56.c index 27b4b8b944..e9e8d5d9fd 100644 --- a/libavcodec/vp56.c +++ b/libavcodec/vp56.c @@ -33,6 +33,8 @@ void ff_vp56_init_dequant(VP56Context *s, int quantizer) { + if (s->quantizer != quantizer) + ff_vp3dsp_set_bounding_values(s->bounding_values_array, ff_vp56_filter_threshold[quantizer]); s->quantizer = quantizer; s->dequant_dc = ff_vp56_dc_dequant[quantizer] << 2; s->dequant_ac = ff_vp56_ac_dequant[quantizer] << 2; @@ -320,9 +322,17 @@ static void vp56_add_predictors_dc(VP56Context *s, VP56Frame ref_frame) static void vp56_deblock_filter(VP56Context *s, uint8_t *yuv, ptrdiff_t stride, int dx, int dy) { + if (s->avctx->codec->id == AV_CODEC_ID_VP5) { int t = ff_vp56_filter_threshold[s->quantizer]; if (dx) s->vp56dsp.edge_filter_hor(yuv + 10-dx , stride, t); if (dy) s->vp56dsp.edge_filter_ver(yuv + stride*(10-dy), stride, t); + } else { + int * bounding_values = s->bounding_values_array + 127; + if (dx) + ff_vp3dsp_h_loop_filter_12(yuv + 10-dx, stride, bounding_values); + if (dy) + ff_vp3dsp_v_loop_filter_12(yuv + stride*(10-dy), stride, bounding_values); + } } static void vp56_mc(VP56Context *s, int b, int plane, uint8_t *src, diff --git a/libavcodec/vp56.h b/libavcodec/vp56.h index 70e1d38a83..9b3036895c 100644 --- a/libavcodec/vp56.h +++ b/libavcodec/vp56.h @@ -170,6 +170,7 @@ struct vp56_context { int filter_mode; int max_vector_length; int sample_variance_threshold; + DECLARE_ALIGNED(8, int, bounding_values_array)[256]; uint8_t coeff_ctx[4][64]; /* used in vp5 only */ uint8_t coeff_ctx_last[4]; /* used in vp5 only */ diff --git a/libavcodec/vp56dsp.c b/libavcodec/vp56dsp.c index 9f299dc60f..e8d93d6680 100644 --- a/libavcodec/vp56dsp.c +++ b/libavcodec/vp56dsp.c @@ -72,27 +72,8 @@ av_cold void ff_vp5dsp_init(VP56DSPContext *s) #endif /* CONFIG_VP5_DECODER */ #if CONFIG_VP6_DECODER -static int vp6_adjust(int v, int t) -{ - int V = v, s = v >> 31; - V ^= s; - V -= s; - if (V-t-1 >= (unsigned)(t-1)) - return v; - V = 2*t - V; - V += s; - V ^= s; - return V; -} - -VP56_EDGE_FILTER(vp6, hor, 1, stride) -VP56_EDGE_FILTER(vp6, ver, stride, 1) - av_cold void ff_vp6dsp_init(VP56DSPContext *s) { - s->edge_filter_hor = vp6_edge_filter_hor; - s->edge_filter_ver = vp6_edge_filter_ver; - s->vp6_filter_diag4 = ff_vp6_filter_diag4_c; if (ARCH_ARM) diff --git a/tests/ref/fate/vp61 b/tests/ref/fate/vp61 index a5a813e670..13146c4071 100644 --- a/tests/ref/fate/vp61 +++ b/tests/ref/fate/vp61 @@ -8,118 +8,118 @@ 0, 2, 2, 1, 18816, 0x1eec8b7d 0, 3, 3, 1, 18816, 0x3817859f 0, 4, 4, 1, 18816, 0x8f487c41 -0, 5, 5, 1, 18816, 0xe1097136 -0, 6, 6, 1, 18816, 0x494161dd -0, 7, 7, 1, 18816, 0x40c85514 -0, 8, 8, 1, 18816, 0xd1854b86 -0, 9, 9, 1, 18816, 0xdd563ad4 -0, 10, 10, 1, 18816, 0x00122fac -0, 11, 11, 1, 18816, 0x0a6f19f4 -0, 12, 12, 1, 18816, 0x74fe0e01 -0, 13, 13, 1, 18816, 0x576e00bf -0, 14, 14, 1, 18816, 0xcb84f7e1 -0, 15, 15, 1, 18816, 0x7f85ebf3 -0, 16, 16, 1, 18816, 0xc6c2e22b -0, 17, 17, 1, 18816, 0x9b22cd80 -0, 18, 18, 1, 18816, 0x512fc164 -0, 19, 19, 1, 18816, 0x5c2aaf7b -0, 20, 20, 1, 18816, 0x98a5a700 -0, 21, 21, 1, 18816, 0xccf19d74 -0, 22, 22, 1, 18816, 0x15d08d90 -0, 23, 23, 1, 18816, 0xe04f7b1b -0, 24, 24, 1, 18816, 0x251564f6 -0, 25, 25, 1, 18816, 0x81bf5498 -0, 26, 26, 1, 18816, 0xd94f4861 -0, 27, 27, 1, 18816, 0xcb623dd3 -0, 28, 28, 1, 18816, 0x359f29ac -0, 29, 29, 1, 18816, 0x932a1e14 -0, 30, 30, 1, 18816, 0x99e109e1 -0, 31, 31, 1, 18816, 0xafcf0391 -0, 32, 32, 1, 18816, 0x278cfdd3 -0, 33, 33, 1, 18816, 0x64a2f73e -0, 34, 34, 1, 18816, 0x1777e80e -0, 35, 35, 1, 18816, 0x8effdb17 -0, 36, 36, 1, 18816, 0x564bcdc9 -0, 37, 37, 1, 18816, 0xe83ac8c5 -0, 38, 38, 1, 18816, 0xaa53c337 -0, 39, 39, 1, 18816, 0xcb7bb62d -0, 40, 40, 1, 18816, 0x435ba9e5 -0, 41, 41, 1, 18816, 0x5d759c00 -0, 42, 42, 1, 18816, 0x3411941b -0, 43, 43, 1, 18816, 0x643d8eb3 -0, 44, 44, 1, 18816, 0x9c9a8a3f -0, 45, 45, 1, 18816, 0xe44a7baa -0, 46, 46, 1, 18816, 0xec457166 -0, 47, 47, 1, 18816, 0x9d84619e -0, 48, 48, 1, 18816, 0x799b5f1f -0, 49, 49, 1, 18816, 0x9b2a5b68 -0, 50, 50, 1, 18816, 0xa235544f -0, 51, 51, 1, 18816, 0x725747c2 -0, 52, 52, 1, 18816, 0xe3573fb5 -0, 53, 53, 1, 18816, 0x31cb36ae -0, 54, 54, 1, 18816, 0x6bc4350f -0, 55, 55, 1, 18816, 0x2da53498 -0, 56, 56, 1, 18816, 0x29f127a4 -0, 57, 57, 1, 18816, 0x2dfc1eb0 -0, 58, 58, 1, 18816, 0xc9ea175d -0, 59, 59, 1, 18816, 0xd73613a0 -0, 60, 60, 1, 18816, 0x24870eee -0, 61, 61, 1, 18816, 0x5bf20853 -0, 62, 62, 1, 18816, 0x7778f73c -0, 63, 63, 1, 18816, 0x7072f297 -0, 64, 64, 1, 18816, 0xd974ee82 -0, 65, 65, 1, 18816, 0xb090eec9 -0, 66, 66, 1, 18816, 0x6844f019 -0, 67, 67, 1, 18816, 0x935be67d -0, 68, 68, 1, 18816, 0x2da5da98 -0, 69, 69, 1, 18816, 0x1cf2d8af -0, 70, 70, 1, 18816, 0x64e3d7eb -0, 71, 71, 1, 18816, 0x7450d12a -0, 72, 72, 1, 18816, 0xe8cbcb7f -0, 73, 73, 1, 18816, 0x8ebbc0df -0, 74, 74, 1, 18816, 0x0bc5bc33 -0, 75, 75, 1, 18816, 0x3b09b8e3 -0, 76, 76, 1, 18816, 0xc5c2b619 -0, 77, 77, 1, 18816, 0xbd42af2a -0, 78, 78, 1, 18816, 0x58daad01 -0, 79, 79, 1, 18816, 0x7ef3a780 -0, 80, 80, 1, 18816, 0x235b9df6 -0, 81, 81, 1, 18816, 0x6e918fa7 -0, 82, 82, 1, 18816, 0x06268f84 -0, 83, 83, 1, 18816, 0x279390ed -0, 84, 84, 1, 18816, 0xfac0870f -0, 85, 85, 1, 18816, 0x548a7e7a -0, 86, 86, 1, 18816, 0xe8d17493 -0, 87, 87, 1, 18816, 0x5c4471d0 -0, 88, 88, 1, 18816, 0x94c17d3a -0, 89, 89, 1, 18816, 0xa8867fc8 -0, 90, 90, 1, 18816, 0x096374c3 -0, 91, 91, 1, 18816, 0x7f9e6c9e -0, 92, 92, 1, 18816, 0x70ab5c16 -0, 93, 93, 1, 18816, 0xb8a45ba1 -0, 94, 94, 1, 18816, 0xd19d6014 -0, 95, 95, 1, 18816, 0x5f425aa4 -0, 96, 96, 1, 18816, 0x394c4f3d -0, 97, 97, 1, 18816, 0x07e74fc6 -0, 98, 98, 1, 18816, 0x8dec527b -0, 99, 99, 1, 18816, 0xcf2e4b76 -0, 100, 100, 1, 18816, 0x74d744c1 -0, 101, 101, 1, 18816, 0xf22e39dd -0, 102, 102, 1, 18816, 0x1ba334a1 -0, 103, 103, 1, 18816, 0x326d2a2b -0, 104, 104, 1, 18816, 0x3edc26a0 -0, 105, 105, 1, 18816, 0x81a127e2 -0, 106, 106, 1, 18816, 0xc9f92698 -0, 107, 107, 1, 18816, 0x4ca320d5 -0, 108, 108, 1, 18816, 0xdea41b02 -0, 109, 109, 1, 18816, 0xff4810e5 -0, 110, 110, 1, 18816, 0x18b2118c -0, 111, 111, 1, 18816, 0xb6cd15ed -0, 112, 112, 1, 18816, 0xfa9b0d36 -0, 113, 113, 1, 18816, 0x0d19000b -0, 114, 114, 1, 18816, 0x3bbdfdc4 -0, 115, 115, 1, 18816, 0x72bdfcae -0, 116, 116, 1, 18816, 0x854ef9f7 -0, 117, 117, 1, 18816, 0x9195f5dc -0, 118, 118, 1, 18816, 0x2452e545 -0, 119, 119, 1, 18816, 0x6b76e03d +0, 5, 5, 1, 18816, 0x4ce87138 +0, 6, 6, 1, 18816, 0x499361dd +0, 7, 7, 1, 18816, 0xd26c5518 +0, 8, 8, 1, 18816, 0xfb1a4b88 +0, 9, 9, 1, 18816, 0x4ac63ac7 +0, 10, 10, 1, 18816, 0x39642fad +0, 11, 11, 1, 18816, 0x4dd219f6 +0, 12, 12, 1, 18816, 0x6c500df7 +0, 13, 13, 1, 18816, 0x700e00b4 +0, 14, 14, 1, 18816, 0xbebaf7e0 +0, 15, 15, 1, 18816, 0x22c1ebf6 +0, 16, 16, 1, 18816, 0x723fe229 +0, 17, 17, 1, 18816, 0x9b22cd91 +0, 18, 18, 1, 18816, 0x45ddc17a +0, 19, 19, 1, 18816, 0x9b33af88 +0, 20, 20, 1, 18816, 0xf9d1a70d +0, 21, 21, 1, 18816, 0x9bfd9d84 +0, 22, 22, 1, 18816, 0x27048da1 +0, 23, 23, 1, 18816, 0x0e497b2d +0, 24, 24, 1, 18816, 0x508264fd +0, 25, 25, 1, 18816, 0xf6985495 +0, 26, 26, 1, 18816, 0xa5014869 +0, 27, 27, 1, 18816, 0x426e3de4 +0, 28, 28, 1, 18816, 0xd72129b9 +0, 29, 29, 1, 18816, 0x12e51e1c +0, 30, 30, 1, 18816, 0x754109eb +0, 31, 31, 1, 18816, 0x2fb5039e +0, 32, 32, 1, 18816, 0x9407fdea +0, 33, 33, 1, 18816, 0x59f2f752 +0, 34, 34, 1, 18816, 0xb448e831 +0, 35, 35, 1, 18816, 0xf31fdb2e +0, 36, 36, 1, 18816, 0x6bedcdec +0, 37, 37, 1, 18816, 0xbbfec8e6 +0, 38, 38, 1, 18816, 0x104ac345 +0, 39, 39, 1, 18816, 0xd387b629 +0, 40, 40, 1, 18816, 0x4187a9e7 +0, 41, 41, 1, 18816, 0x1c649c17 +0, 42, 42, 1, 18816, 0xcc869431 +0, 43, 43, 1, 18816, 0x8bc78ed1 +0, 44, 44, 1, 18816, 0x34de8a5f +0, 45, 45, 1, 18816, 0x42727bd0 +0, 46, 46, 1, 18816, 0x6e9c7192 +0, 47, 47, 1, 18816, 0xd93761c1 +0, 48, 48, 1, 18816, 0x69455f50 +0, 49, 49, 1, 18816, 0xa35d5b8b +0, 50, 50, 1, 18816, 0xe6635469 +0, 51, 51, 1, 18816, 0x285d47f9 +0, 52, 52, 1, 18816, 0xdb0a3fdf +0, 53, 53, 1, 18816, 0x608336d0 +0, 54, 54, 1, 18816, 0x39e9353f +0, 55, 55, 1, 18816, 0xad2034bd +0, 56, 56, 1, 18816, 0xa0f527e7 +0, 57, 57, 1, 18816, 0x5ed71ef1 +0, 58, 58, 1, 18816, 0xd2df1798 +0, 59, 59, 1, 18816, 0x932513d3 +0, 60, 60, 1, 18816, 0xab600f1b +0, 61, 61, 1, 18816, 0x665d087e +0, 62, 62, 1, 18816, 0x8d71f765 +0, 63, 63, 1, 18816, 0xfc80f2ae +0, 64, 64, 1, 18816, 0x885bee81 +0, 65, 65, 1, 18816, 0x6c4feec9 +0, 66, 66, 1, 18816, 0x5010f017 +0, 67, 67, 1, 18816, 0x63d5e683 +0, 68, 68, 1, 18816, 0x216ddab5 +0, 69, 69, 1, 18816, 0xb758d8c2 +0, 70, 70, 1, 18816, 0xeae4d7e5 +0, 71, 71, 1, 18816, 0x2553d137 +0, 72, 72, 1, 18816, 0xced6cb97 +0, 73, 73, 1, 18816, 0xd332c103 +0, 74, 74, 1, 18816, 0xe84bbc67 +0, 75, 75, 1, 18816, 0x21f7b90d +0, 76, 76, 1, 18816, 0xbd88b648 +0, 77, 77, 1, 18816, 0xe7b8af59 +0, 78, 78, 1, 18816, 0x30f5ad3d +0, 79, 79, 1, 18816, 0x79bfa7bb +0, 80, 80, 1, 18816, 0xd5919e34 +0, 81, 81, 1, 18816, 0x43758fda +0, 82, 82, 1, 18816, 0x93ff8fcc +0, 83, 83, 1, 18816, 0xa444913f +0, 84, 84, 1, 18816, 0xc41d878b +0, 85, 85, 1, 18816, 0x526d7f09 +0, 86, 86, 1, 18816, 0x40307528 +0, 87, 87, 1, 18816, 0xf63d725c +0, 88, 88, 1, 18816, 0x45587ddb +0, 89, 89, 1, 18816, 0x37018069 +0, 90, 90, 1, 18816, 0x69567572 +0, 91, 91, 1, 18816, 0xa8086d54 +0, 92, 92, 1, 18816, 0x2ab65ccc +0, 93, 93, 1, 18816, 0xa5475c5d +0, 94, 94, 1, 18816, 0x87dc60e2 +0, 95, 95, 1, 18816, 0x54295b5d +0, 96, 96, 1, 18816, 0xce424fe9 +0, 97, 97, 1, 18816, 0x99e0506d +0, 98, 98, 1, 18816, 0x6ac55324 +0, 99, 99, 1, 18816, 0xa60f4c1a +0, 100, 100, 1, 18816, 0x7eba456e +0, 101, 101, 1, 18816, 0xab703a88 +0, 102, 102, 1, 18816, 0xb8263539 +0, 103, 103, 1, 18816, 0x829e2abb +0, 104, 104, 1, 18816, 0x2e9f2736 +0, 105, 105, 1, 18816, 0x7a3d2885 +0, 106, 106, 1, 18816, 0x8023274f +0, 107, 107, 1, 18816, 0x39bf2196 +0, 108, 108, 1, 18816, 0x21cf1bcb +0, 109, 109, 1, 18816, 0x016911b9 +0, 110, 110, 1, 18816, 0x2a791237 +0, 111, 111, 1, 18816, 0x093f16a7 +0, 112, 112, 1, 18816, 0x07a90df3 +0, 113, 113, 1, 18816, 0x8de800ca +0, 114, 114, 1, 18816, 0xe379fe68 +0, 115, 115, 1, 18816, 0x267afd69 +0, 116, 116, 1, 18816, 0x5b29fac1 +0, 117, 117, 1, 18816, 0x3606f6b6 +0, 118, 118, 1, 18816, 0xcbdce61e +0, 119, 119, 1, 18816, 0x28ffe113 diff --git a/tests/ref/fate/vp6f b/tests/ref/fate/vp6f index 2da2eddc8c..c76e077cbf 100644 --- a/tests/ref/fate/vp6f +++ b/tests/ref/fate/vp6f @@ -4,176 +4,176 @@ #dimensions 0: 112x80 #sar 0: 0/1 0, 0, 0, 1, 13440, 0x7cb0a22f -0, 1, 1, 1, 13440, 0xcb06a6b6 -0, 2, 2, 1, 13440, 0x812ea5c9 -0, 3, 3, 1, 13440, 0xc378b303 -0, 4, 4, 1, 13440, 0x0528ba5f -0, 5, 5, 1, 13440, 0x5d97e8fe -0, 6, 6, 1, 13440, 0x05d914df -0, 7, 7, 1, 13440, 0xfdf804c6 -0, 8, 8, 1, 13440, 0x9db5fcb8 -0, 9, 9, 1, 13440, 0xd33db2ab -0, 10, 10, 1, 13440, 0x6c147a86 -0, 11, 11, 1, 13440, 0x300f577d -0, 12, 12, 1, 13440, 0x4f4443c8 -0, 13, 13, 1, 13440, 0x6ed84c79 -0, 14, 14, 1, 13440, 0xa0dc5e2a -0, 15, 15, 1, 13440, 0x4ab092d4 -0, 16, 16, 1, 13440, 0x39c9cb60 -0, 17, 17, 1, 13440, 0x46c2da59 -0, 18, 18, 1, 13440, 0x0eed0e66 -0, 19, 19, 1, 13440, 0xa4a43403 -0, 20, 20, 1, 13440, 0x323939cd -0, 21, 21, 1, 13440, 0x6b393cc0 -0, 22, 22, 1, 13440, 0x59da35b8 -0, 23, 23, 1, 13440, 0x4511224f -0, 24, 24, 1, 13440, 0xe96cbbbf -0, 25, 25, 1, 13440, 0x15dc9608 -0, 26, 26, 1, 13440, 0xde056e0a -0, 27, 27, 1, 13440, 0xfde76d13 -0, 28, 28, 1, 13440, 0xd9bf6b4e -0, 29, 29, 1, 13440, 0x0a3c85bd -0, 30, 30, 1, 13440, 0x6edfc17f -0, 31, 31, 1, 13440, 0xf4561c94 -0, 32, 32, 1, 13440, 0x2fdf776f -0, 33, 33, 1, 13440, 0xb7c7cd69 -0, 34, 34, 1, 13440, 0x5247ef0d -0, 35, 35, 1, 13440, 0xeec31762 -0, 36, 36, 1, 13440, 0x486097dd -0, 37, 37, 1, 13440, 0x9bcf2934 -0, 38, 38, 1, 13440, 0x4a5dea6a -0, 39, 39, 1, 13440, 0x35997d87 -0, 40, 40, 1, 13440, 0xa4bf415b -0, 41, 41, 1, 13440, 0x677229fa -0, 42, 42, 1, 13440, 0xbe5229bb -0, 43, 43, 1, 13440, 0x8d012e0a -0, 44, 44, 1, 13440, 0x74ec49b5 -0, 45, 45, 1, 13440, 0xa6f595d0 -0, 46, 46, 1, 13440, 0x23b59ba7 -0, 47, 47, 1, 13440, 0xc471baab -0, 48, 48, 1, 13440, 0x8d6ebaee -0, 49, 49, 1, 13440, 0x6338c1c1 -0, 50, 50, 1, 13440, 0x0d93a811 -0, 51, 51, 1, 13440, 0x260e901e -0, 52, 52, 1, 13440, 0xad05919b -0, 53, 53, 1, 13440, 0x04d1921d -0, 54, 54, 1, 13440, 0xac00a249 -0, 55, 55, 1, 13440, 0xcb667031 -0, 56, 56, 1, 13440, 0x3f4236a1 -0, 57, 57, 1, 13440, 0xf38e029b -0, 58, 58, 1, 13440, 0x3d5ae06e -0, 59, 59, 1, 13440, 0x9b30ae5e +0, 1, 1, 1, 13440, 0xe38fa6b7 +0, 2, 2, 1, 13440, 0xe003a5c6 +0, 3, 3, 1, 13440, 0xe502b2f6 +0, 4, 4, 1, 13440, 0xb731ba56 +0, 5, 5, 1, 13440, 0x8168e8f5 +0, 6, 6, 1, 13440, 0x776d14fb +0, 7, 7, 1, 13440, 0xb5d0049c +0, 8, 8, 1, 13440, 0x3434fc98 +0, 9, 9, 1, 13440, 0xd219b282 +0, 10, 10, 1, 13440, 0xd2027a7c +0, 11, 11, 1, 13440, 0xd50b5799 +0, 12, 12, 1, 13440, 0x091543c4 +0, 13, 13, 1, 13440, 0x26374c6b +0, 14, 14, 1, 13440, 0x5b4f5e1e +0, 15, 15, 1, 13440, 0x55ba92da +0, 16, 16, 1, 13440, 0x1ff5cb4d +0, 17, 17, 1, 13440, 0x0ccbda45 +0, 18, 18, 1, 13440, 0x5ff80e6a +0, 19, 19, 1, 13440, 0x09df3417 +0, 20, 20, 1, 13440, 0xfbed3a0f +0, 21, 21, 1, 13440, 0xd65c3c7f +0, 22, 22, 1, 13440, 0xc8173576 +0, 23, 23, 1, 13440, 0xd5e521f8 +0, 24, 24, 1, 13440, 0xe440bb55 +0, 25, 25, 1, 13440, 0xcbeb95c8 +0, 26, 26, 1, 13440, 0x8cd66dba +0, 27, 27, 1, 13440, 0x5f356cbc +0, 28, 28, 1, 13440, 0x54e16ad7 +0, 29, 29, 1, 13440, 0x17ed8566 +0, 30, 30, 1, 13440, 0x1aa1c121 +0, 31, 31, 1, 13440, 0x64e31cac +0, 32, 32, 1, 13440, 0x869677a4 +0, 33, 33, 1, 13440, 0x7df6cdba +0, 34, 34, 1, 13440, 0x23f3ef45 +0, 35, 35, 1, 13440, 0x176217b4 +0, 36, 36, 1, 13440, 0x493897cb +0, 37, 37, 1, 13440, 0x0591296d +0, 38, 38, 1, 13440, 0xb58aeae8 +0, 39, 39, 1, 13440, 0x38fd7e58 +0, 40, 40, 1, 13440, 0x200c424c +0, 41, 41, 1, 13440, 0x2ee42b14 +0, 42, 42, 1, 13440, 0xdcba2ae5 +0, 43, 43, 1, 13440, 0xbb102f41 +0, 44, 44, 1, 13440, 0x034d4b06 +0, 45, 45, 1, 13440, 0x62d99722 +0, 46, 46, 1, 13440, 0x174d9ce4 +0, 47, 47, 1, 13440, 0xf676bbc8 +0, 48, 48, 1, 13440, 0xe2e5bbef +0, 49, 49, 1, 13440, 0x6ef0c2af +0, 50, 50, 1, 13440, 0x8d08a917 +0, 51, 51, 1, 13440, 0x030d90e8 +0, 52, 52, 1, 13440, 0x4d6f9232 +0, 53, 53, 1, 13440, 0xb7a792f6 +0, 54, 54, 1, 13440, 0xa0daa330 +0, 55, 55, 1, 13440, 0xe9f870a3 +0, 56, 56, 1, 13440, 0xed4f36cb +0, 57, 57, 1, 13440, 0x8a6f02c3 +0, 58, 58, 1, 13440, 0x663ee03d +0, 59, 59, 1, 13440, 0x2571adef 0, 60, 60, 1, 13440, 0x7533ad99 -0, 61, 61, 1, 13440, 0x29c7c2d7 -0, 62, 62, 1, 13440, 0x1aaae414 -0, 63, 63, 1, 13440, 0xd9b1fc03 -0, 64, 64, 1, 13440, 0xcd2b0549 -0, 65, 65, 1, 13440, 0x6852223c -0, 66, 66, 1, 13440, 0xaa765ce6 -0, 67, 67, 1, 13440, 0x022169d5 -0, 68, 68, 1, 13440, 0x0e478e90 -0, 69, 69, 1, 13440, 0xc2a08d9b -0, 70, 70, 1, 13440, 0xe16a75f1 -0, 71, 71, 1, 13440, 0x3b218252 -0, 72, 72, 1, 13440, 0x5e27b3c8 -0, 73, 73, 1, 13440, 0x27a0eaf9 -0, 74, 74, 1, 13440, 0xe002ff74 -0, 75, 75, 1, 13440, 0x8585f024 -0, 76, 76, 1, 13440, 0x5a74cfe6 -0, 77, 77, 1, 13440, 0xb10ec139 -0, 78, 78, 1, 13440, 0xe9e1de94 -0, 79, 79, 1, 13440, 0x5a29fa1c -0, 80, 80, 1, 13440, 0x75dce5f8 -0, 81, 81, 1, 13440, 0xbceaee2c -0, 82, 82, 1, 13440, 0xf9dc00f9 -0, 83, 83, 1, 13440, 0x4b6549f4 -0, 84, 84, 1, 13440, 0x0f2097dc -0, 85, 85, 1, 13440, 0x844d97df -0, 86, 86, 1, 13440, 0xee47764b -0, 87, 87, 1, 13440, 0x647938d6 -0, 88, 88, 1, 13440, 0xf4de156a -0, 89, 89, 1, 13440, 0x53cd02e8 -0, 90, 90, 1, 13440, 0x6f39bedb -0, 91, 91, 1, 13440, 0x3192aa64 -0, 92, 92, 1, 13440, 0xb38591cd -0, 93, 93, 1, 13440, 0xd4407a1b -0, 94, 94, 1, 13440, 0x3f6f69f4 -0, 95, 95, 1, 13440, 0x62cb5c21 -0, 96, 96, 1, 13440, 0x592472ea -0, 97, 97, 1, 13440, 0xf7748d1d -0, 98, 98, 1, 13440, 0x88ada886 -0, 99, 99, 1, 13440, 0xdc92ebc6 -0, 100, 100, 1, 13440, 0x97700e4f -0, 101, 101, 1, 13440, 0x77f21f6e -0, 102, 102, 1, 13440, 0x0c9f4a72 -0, 103, 103, 1, 13440, 0xd3b44b28 -0, 104, 104, 1, 13440, 0x3a023773 -0, 105, 105, 1, 13440, 0xf3c72faf -0, 106, 106, 1, 13440, 0x2f144498 -0, 107, 107, 1, 13440, 0x96ac81db -0, 108, 108, 1, 13440, 0xef07bb83 -0, 109, 109, 1, 13440, 0xf220e3e7 -0, 110, 110, 1, 13440, 0x2e7201dc -0, 111, 111, 1, 13440, 0x56da16de -0, 112, 112, 1, 13440, 0xc9ec24ed -0, 113, 113, 1, 13440, 0x951d31d7 -0, 114, 114, 1, 13440, 0xb4e363c3 -0, 115, 115, 1, 13440, 0x4aae996d -0, 116, 116, 1, 13440, 0xbbe0b6f6 +0, 61, 61, 1, 13440, 0xe3aec2d4 +0, 62, 62, 1, 13440, 0x3368e416 +0, 63, 63, 1, 13440, 0xe2ecfbf5 +0, 64, 64, 1, 13440, 0x45010538 +0, 65, 65, 1, 13440, 0xc075222c +0, 66, 66, 1, 13440, 0x5bf45cc4 +0, 67, 67, 1, 13440, 0xa06869b5 +0, 68, 68, 1, 13440, 0x1ff98e6f +0, 69, 69, 1, 13440, 0x11c88d84 +0, 70, 70, 1, 13440, 0x95c275e8 +0, 71, 71, 1, 13440, 0x81a68285 +0, 72, 72, 1, 13440, 0xb903b402 +0, 73, 73, 1, 13440, 0xa9d2eb1c +0, 74, 74, 1, 13440, 0x2c48ff65 +0, 75, 75, 1, 13440, 0xc024eff6 +0, 76, 76, 1, 13440, 0x41bacff0 +0, 77, 77, 1, 13440, 0x2cf9c144 +0, 78, 78, 1, 13440, 0x9e67de72 +0, 79, 79, 1, 13440, 0x3e74fa36 +0, 80, 80, 1, 13440, 0x9b9be609 +0, 81, 81, 1, 13440, 0x594eee16 +0, 82, 82, 1, 13440, 0x8a7c00d7 +0, 83, 83, 1, 13440, 0x56104a2a +0, 84, 84, 1, 13440, 0xd94d97cc +0, 85, 85, 1, 13440, 0x95d09887 +0, 86, 86, 1, 13440, 0xe02a769b +0, 87, 87, 1, 13440, 0x847839d0 +0, 88, 88, 1, 13440, 0x47441606 +0, 89, 89, 1, 13440, 0x19b10373 +0, 90, 90, 1, 13440, 0x3ddfbf15 +0, 91, 91, 1, 13440, 0xf4fdab37 +0, 92, 92, 1, 13440, 0xfe9a92ad +0, 93, 93, 1, 13440, 0xaa387bfb +0, 94, 94, 1, 13440, 0xe57a6c85 +0, 95, 95, 1, 13440, 0x68ef5f30 +0, 96, 96, 1, 13440, 0x481d76f7 +0, 97, 97, 1, 13440, 0x5b0e9192 +0, 98, 98, 1, 13440, 0xebc1ac80 +0, 99, 99, 1, 13440, 0x13bfef3e +0, 100, 100, 1, 13440, 0xb7b01291 +0, 101, 101, 1, 13440, 0xc8c72419 +0, 102, 102, 1, 13440, 0x9dca4f32 +0, 103, 103, 1, 13440, 0x67635158 +0, 104, 104, 1, 13440, 0x6c773e0d +0, 105, 105, 1, 13440, 0x6c2f3777 +0, 106, 106, 1, 13440, 0x19574d97 +0, 107, 107, 1, 13440, 0xd9f48cc1 +0, 108, 108, 1, 13440, 0xd19dc87c +0, 109, 109, 1, 13440, 0xa23cf2ab +0, 110, 110, 1, 13440, 0x3f7611b6 +0, 111, 111, 1, 13440, 0x183d2723 +0, 112, 112, 1, 13440, 0xf79b3534 +0, 113, 113, 1, 13440, 0xcbba4280 +0, 114, 114, 1, 13440, 0x03777586 +0, 115, 115, 1, 13440, 0xea1aac72 +0, 116, 116, 1, 13440, 0xad27cae0 0, 117, 117, 1, 13440, 0xa237e05d 0, 118, 118, 1, 13440, 0xb683f189 -0, 119, 119, 1, 13440, 0xb8e7d3d3 -0, 120, 120, 1, 13440, 0x549daea3 -0, 121, 121, 1, 13440, 0x56158687 -0, 122, 122, 1, 13440, 0x25c6833f -0, 123, 123, 1, 13440, 0x79618577 -0, 124, 124, 1, 13440, 0x4e77916c -0, 125, 125, 1, 13440, 0x79bb946a -0, 126, 126, 1, 13440, 0x28a69cc7 -0, 127, 127, 1, 13440, 0xcc03a6bb -0, 128, 128, 1, 13440, 0x12e7ac2f -0, 129, 129, 1, 13440, 0x66b099bc -0, 130, 130, 1, 13440, 0xb218574c -0, 131, 131, 1, 13440, 0xc55a172a -0, 132, 132, 1, 13440, 0xefa9d1ca -0, 133, 133, 1, 13440, 0xaedbb577 -0, 134, 134, 1, 13440, 0x279ca23c -0, 135, 135, 1, 13440, 0x12a88c7b -0, 136, 136, 1, 13440, 0xc3c46ae3 -0, 137, 137, 1, 13440, 0x41954bf2 -0, 138, 138, 1, 13440, 0xe19e1137 -0, 139, 139, 1, 13440, 0xd5c5fa3e -0, 140, 140, 1, 13440, 0xe391f3a4 -0, 141, 141, 1, 13440, 0x6463f7e2 -0, 142, 142, 1, 13440, 0x4ad80409 -0, 143, 143, 1, 13440, 0x2de72edb -0, 144, 144, 1, 13440, 0x120030f4 -0, 145, 145, 1, 13440, 0xc8f0f93a -0, 146, 146, 1, 13440, 0x32e8f304 -0, 147, 147, 1, 13440, 0x86d62275 -0, 148, 148, 1, 13440, 0x98df3eec -0, 149, 149, 1, 13440, 0x664d4d42 -0, 150, 150, 1, 13440, 0x3888f447 -0, 151, 151, 1, 13440, 0x959aa236 -0, 152, 152, 1, 13440, 0xebee9e20 -0, 153, 153, 1, 13440, 0xd1a197fb -0, 154, 154, 1, 13440, 0x0e47b9f0 -0, 155, 155, 1, 13440, 0xe359e545 -0, 156, 156, 1, 13440, 0x02cae3c1 -0, 157, 157, 1, 13440, 0x7218c409 -0, 158, 158, 1, 13440, 0x0805b6b7 -0, 159, 159, 1, 13440, 0x13ae816f -0, 160, 160, 1, 13440, 0x1cda5d9b -0, 161, 161, 1, 13440, 0x125b509f -0, 162, 162, 1, 13440, 0xb63500cf -0, 163, 163, 1, 13440, 0x1229bc6a -0, 164, 164, 1, 13440, 0x04e0ab7d -0, 165, 165, 1, 13440, 0xee90aa6b -0, 166, 166, 1, 13440, 0xe712cee3 -0, 167, 167, 1, 13440, 0xbdb1e8a4 -0, 168, 168, 1, 13440, 0xb651fc4b -0, 169, 169, 1, 13440, 0xd1ba297a -0, 170, 170, 1, 13440, 0xa64065df -0, 171, 171, 1, 13440, 0x6865a618 -0, 172, 172, 1, 13440, 0x1922f326 -0, 173, 173, 1, 13440, 0xd2111537 +0, 119, 119, 1, 13440, 0x2058d3cd +0, 120, 120, 1, 13440, 0x715dae96 +0, 121, 121, 1, 13440, 0xd8f88677 +0, 122, 122, 1, 13440, 0x45818329 +0, 123, 123, 1, 13440, 0x69ad852f +0, 124, 124, 1, 13440, 0x56369125 +0, 125, 125, 1, 13440, 0xdfde941b +0, 126, 126, 1, 13440, 0xf1209c90 +0, 127, 127, 1, 13440, 0x82e6a6aa +0, 128, 128, 1, 13440, 0xb0ceabd1 +0, 129, 129, 1, 13440, 0x05f899a6 +0, 130, 130, 1, 13440, 0x9ef95758 +0, 131, 131, 1, 13440, 0x63e716d9 +0, 132, 132, 1, 13440, 0x7cb0d149 +0, 133, 133, 1, 13440, 0x3585b4f1 +0, 134, 134, 1, 13440, 0x623ea1fc +0, 135, 135, 1, 13440, 0x762b8c32 +0, 136, 136, 1, 13440, 0xc1b96add +0, 137, 137, 1, 13440, 0x95e24baf +0, 138, 138, 1, 13440, 0x74631106 +0, 139, 139, 1, 13440, 0x78b5fa14 +0, 140, 140, 1, 13440, 0x5f33f34a +0, 141, 141, 1, 13440, 0x7e6ff799 +0, 142, 142, 1, 13440, 0x9f8303b0 +0, 143, 143, 1, 13440, 0x7c3d2eb9 +0, 144, 144, 1, 13440, 0x3c0530d2 +0, 145, 145, 1, 13440, 0xe7ecf960 +0, 146, 146, 1, 13440, 0x82c3f316 +0, 147, 147, 1, 13440, 0x008922b4 +0, 148, 148, 1, 13440, 0x0d263f5f +0, 149, 149, 1, 13440, 0x57dc4dd0 +0, 150, 150, 1, 13440, 0xbcbbf4f1 +0, 151, 151, 1, 13440, 0x62e9a335 +0, 152, 152, 1, 13440, 0x65699f37 +0, 153, 153, 1, 13440, 0xe4b69939 +0, 154, 154, 1, 13440, 0xbd4ebb6c +0, 155, 155, 1, 13440, 0xb7d6e71e +0, 156, 156, 1, 13440, 0xfc0ae5b6 +0, 157, 157, 1, 13440, 0xe55ec65c +0, 158, 158, 1, 13440, 0x2095b8fc +0, 159, 159, 1, 13440, 0x479c8408 +0, 160, 160, 1, 13440, 0x2981604c +0, 161, 161, 1, 13440, 0xa4e55397 +0, 162, 162, 1, 13440, 0x0bc703f8 +0, 163, 163, 1, 13440, 0xd43bbf89 +0, 164, 164, 1, 13440, 0xdcd6aeca +0, 165, 165, 1, 13440, 0x07b1ad84 +0, 166, 166, 1, 13440, 0xfb17d20b +0, 167, 167, 1, 13440, 0x0c4aebd9 +0, 168, 168, 1, 13440, 0x826effc4 +0, 169, 169, 1, 13440, 0x4ccf2ca4 +0, 170, 170, 1, 13440, 0xe4f968f3 +0, 171, 171, 1, 13440, 0xe1b4a93a +0, 172, 172, 1, 13440, 0x8597f65e +0, 173, 173, 1, 13440, 0xb4f7184f |