У м е н я е с т ь э т о т к о д н а J a v a : < / p > < b r / > B l o w F i s h : < / p > < b r / > < c o d e > p u b l i c c l a s s B l o w f i s h E n g i n e < b r / > { < b r / > p r i v a t e s t a t i c f i n a l i n t [ ] K P = < b r / > { < b r / > 0 x 2 4 3 F 6 A 8 8 , < b r / > 0 x 8 5 A 3 0 8 D 3 , < b r / > 0 x 1 3 1 9 8 A 2 E , < b r / > 0 x 0 3 7 0 7 3 4 4 , < b r / > 0 x A 4 0 9 3 8 2 2 , < b r / > 0 x 2 9 9 F 3 1 D 0 , < b r / > 0 x 0 8 2 E F A 9 8 , < b r / > 0 x E C 4 E 6 C 8 9 , < b r / > 0 x 4 5 2 8 2 1 E 6 , < b r / > 0 x 3 8 D 0 1 3 7 7 , < b r / > 0 x B E 5 4 6 6 C F , < b r / > 0 x 3 4 E 9 0 C 6 C , < b r / > 0 x C 0 A C 2 9 B 7 , < b r / > 0 x C 9 7 C 5 0 D D , < b r / > 0 x 3 F 8 4 D 5 B 5 , < b r / > 0 x B 5 4 7 0 9 1 7 , < b r / > 0 x 9 2 1 6 D 5 D 9 , < b r / > 0 x 8 9 7 9 F B 1 B < b r / > } ; < b r / > p r i v a t e s t a t i c f i n a l i n t [ ] K S 0 = < b r / > { < b r / > 0 x D 1 3 1 0 B A 6 , < b r / > 0 x 9 8 D F B 5 A C , < b r / > 0 x 2 F F D 7 2 D B , < b r / > 0 x D 0 1 A D F B 7 , < b r / > 0 x B 8 E 1 A F E D , < b r / > 0 x 6 A 2 6 7 E 9 6 , < b r / > 0 x B A 7 C 9 0 4 5 , < b r / > 0 x F 1 2 C 7 F 9 9 , < b r / > 0 x 2 4 A 1 9 9 4 7 , < b r / > 0 x B 3 9 1 6 C F 7 , < b r / > 0 x 0 8 0 1 F 2 E 2 , < b r / > 0 x 8 5 8 E F C 1 6 , < b r / > 0 x 6 3 6 9 2 0 D 8 , < b r / > 0 x 7 1 5 7 4 E 6 9 , < b r / > 0 x A 4 5 8 F E A 3 , < b r / > 0 x F 4 9 3 3 D 7 E , < b r / > 0 x 0 D 9 5 7 4 8 F , < b r / > 0 x 7 2 8 E B 6 5 8 , < b r / > 0 x 7 1 8 B C D 5 8 , < b r / > 0 x 8 2 1 5 4 A E E , < b r / > 0 x 7 B 5 4 A 4 1 D , < b r / > 0 x C 2 5 A 5 9 B 5 , < b r / > 0 x 9 C 3 0 D 5 3 9 , < b r / > 0 x 2 A F 2 6 0 1 3 , < b r / > 0 x C 5 D 1 B 0 2 3 , < b r / > 0 x 2 8 6 0 8 5 F 0 , < b r / > 0 x C A 4 1 7 9 1 8 , < b r / > 0 x B 8 D B 3 8 E F , < b r / > 0 x 8 E 7 9 D C B 0 , < b r / > 0 x 6 0 3 A 1 8 0 E , < b r / > 0 x 6 C 9 E 0 E 8 B , < b r / > 0 x B 0 1 E 8 A 3 E , < b r / > 0 x D 7 1 5 7 7 C 1 , < b r / > 0 x B D 3 1 4 B 2 7 , < b r / > 0 x 7 8 A F 2 F D A , < b r / > 0 x 5 5 6 0 5 C 6 0 , < b r / > 0 x E 6 5 5 2 5 F 3 , < b r / > 0 x A A 5 5 A B 9 4 , < b r / > 0 x 5 7 4 8 9 8 6 2 , < b r / > 0 x 6 3 E 8 1 4 4 0 , < b r / > 0 x 5 5 C A 3 9 6 A , < b r / > 0 x 2 A A B 1 0 B 6 , < b r / > 0 x B 4 C C 5 C 3 4 , < b r / > 0 x 1 1 4 1 E 8 C E , < b r / > 0 x A 1 5 4 8 6 A F , < b r / > 0 x 7 C 7 2 E 9 9 3 , < b r / > 0 x B 3 E E 1 4 1 1 , < b r / > 0 x 6 3 6 F B C 2 A , < b r / > 0 x 2 B A 9 C 5 5 D , < b r / > 0 x 7 4 1 8 3 1 F 6 , < b r / > 0 x C E 5 C 3 E 1 6 , < b r / > 0 x 9 B 8 7 9 3 1 E , < b r / > 0 x A F D 6 B A 3 3 , < b r / > 0 x 6 C 2 4 C F 5 C , < b r / > 0 x 7 A 3 2 5 3 8 1 , < b r / > 0 x 2 8 9 5 8 6 7 7 , < b r / > 0 x 3 B 8 F 4 8 9 8 , < b r / > 0 x 6 B 4 B B 9 A F , < b r / > 0 x C 4 B F E 8 1 B , < b r / > 0 x 6 6 2 8 2 1 9 3 , < b r / > 0 x 6 1 D 8 0 9 C C , < b r / > 0 x F B 2 1 A 9 9 1 , < b r / > 0 x 4 8 7 C A C 6 0 , < b r / > 0 x 5 D E C 8 0 3 2 , < b r / > 0 x E F 8 4 5 D 5 D , < b r / > 0 x E 9 8 5 7 5 B 1 , < b r / > 0 x D C 2 6 2 3 0 2 , < b r / > 0 x E B 6 5 1 B 8 8 , < b r / > 0 x 2 3 8 9 3 E 8 1 , < b r / > 0 x D 3 9 6 A C C 5 , < b r / > 0 x 0 F 6 D 6 F F 3 , < b r / > 0 x 8 3 F 4 4 2 3 9 , < b r / > 0 x 2 E 0 B 4 4 8 2 , < b r / > 0 x A 4 8 4 2 0 0 4 , < b r / > 0 x 6 9 C 8 F 0 4 A , < b r / > 0 x 9 E 1 F 9 B 5 E , < b r / > 0 x 2 1 C 6 6 8 4 2 , < b r / > 0 x F 6 E 9 6 C 9 A , < b r / > 0 x 6 7 0 C 9 C 6 1 , < b r / > 0 x A B D 3 8 8 F 0 , < b r / > 0 x 6 A 5 1 A 0 D 2 , < b r / > 0 x D 8 5 4 2 F 6 8 , < b r / > 0 x 9 6 0 F A 7 2 8 , < b r / > 0 x A B 5 1 3 3 A 3 , < b r / > 0 x 6 E E F 0 B 6 C , < b r / > 0 x 1 3 7 A 3 B E 4 , < b r / > 0 x B A 3 B F 0 5 0 , < b r / > 0 x 7 E F B 2 A 9 8 , < b r / > 0 x A 1 F 1 6 5 1 D , < b r / > 0 x 3 9 A F 0 1 7 6 , < b r / > 0 x 6 6 C A 5 9 3 E , < b r / > 0 x 8 2 4 3 0 E 8 8 , < b r / > 0 x 8 C E E 8 6 1 9 , < b r / > 0 x 4 5 6 F 9 F B 4 , < b r / > 0 x 7 D 8 4 A 5 C 3 , < b r / > 0 x 3 B 8 B 5 E B E , < b r / > 0 x E 0 6 F 7 5 D 8 , < b r / > 0 x 8 5 C 1 2 0 7 3 , < b r / > 0 x 4 0 1 A 4 4 9 F , < b r / > 0 x 5 6 C 1 6 A A 6 , < b r / > 0 x 4 E D 3 A A 6 2 , < b r / > 0 x 3 6 3 F 7 7 0 6 , < b r / > 0 x 1 B F E D F 7 2 , < b r / > 0 x 4 2 9 B 0 2 3 D , < b r / > 0 x 3 7 D 0 D 7 2 4 , < b r / > 0 x D 0 0 A 1 2 4 8 , < b r / > 0 x D B 0 F E A D 3 , < b r / > 0 x 4 9 F 1 C 0 9 B , < b r / > 0 x 0 7 5 3 7 2 C 9 , < b r / > 0 x 8 0 9 9 1 B 7 B , < b r / > 0 x 2 5 D 4 7 9 D 8 , < b r / > 0 x F 6 E 8 D E F 7 , < b r / > 0 x E 3 F E 5 0 1 A , < b r / > 0 x B 6 7 9 4 C 3 B , < b r / > 0 x 9 7 6 C E 0 B D , < b r / > 0 x 0 4 C 0 0 6 B A , < b r / > 0 x C 1 A 9 4 F B 6 , < b r / > 0 x 4 0 9 F 6 0 C 4 , < b r / > 0 x 5 E 5 C 9 E C 2 , < b r / > 0 x 1 9 6 A 2 4 6 3 , < b r / > 0 x 6 8 F B 6 F A F , < b r / > 0 x 3 E 6 C 5 3 B 5 , < b r / > 0 x 1 3 3 9 B 2 E B , < b r / > 0 x 3 B 5 2 E C 6 F , < b r / > 0 x 6 D F C 5 1 1 F , < b r / > 0 x 9 B 3 0 9 5 2 C , < b r / > 0 x C C 8 1 4 5 4 4 , < b r / > 0 x A F 5 E B D 0 9 , < b r / > 0 x B E E 3 D 0 0 4 , < b r / > 0 x D E 3 3 4 A F D , < b r / > 0 x 6 6 0 F 2 8 0 7 , < b r / > 0 x 1 9 2 E 4 B B 3 , < b r / > 0 x C 0 C B A 8 5 7 , < b r / > 0 x 4 5 C 8 7 4 0 F , < b r / > 0 x D 2 0 B 5 F 3 9 , < b r / > 0 x B 9 D 3 F B D B , < b r / > 0 x 5 5 7 9 C 0 B D , < b r / > 0 x 1 A 6 0 3 2 0 A , < b r / > 0 x D 6 A 1 0 0 C 6 , < b r / > 0 x 4 0 2 C 7 2 7 9 , < b r / > 0 x 6 7 9 F 2 5 F E , < b r / > 0 x F B 1 F A 3 C C , < b r / > 0 x 8 E A 5 E 9 F 8 , < b r / > 0 x D B 3 2 2 2 F 8 , < b r / > 0 x 3 C 7 5 1 6 D F , < b r / > 0 x F D 6 1 6 B 1 5 , < b r / > 0 x 2 F 5 0 1 E C 8 , < b r / > 0 x A D 0 5 5 2 A B , < b r / > 0 x 3 2 3 D B 5 F A , < b r / > 0 x F D 2 3 8 7 6 0 , < b r / > 0 x 5 3 3 1 7 B 4 8 , < b r / > 0 x 3 E 0 0 D F 8 2 , < b r / > 0 x 9 E 5 C 5 7 B B , < b r / > 0 x C A 6 F 8 C A 0 , < b r / > 0 x 1 A 8 7 5 6 2 E , < b r / > 0 x D F 1 7 6 9 D B , < b r / > 0 x D 5 4 2 A 8 F 6 , < b r / > 0 x 2 8 7 E F F C 3 , < b r / > 0 x A C 6 7 3 2 C 6 , < b r / > 0 x 8 C 4 F 5 5 7 3 , < b r / > 0 x 6 9 5 B 2 7 B 0 , < b r / > 0 x B B C A 5 8 C 8 , < b r / > 0 x E 1 F F A 3 5 D , < b r / > 0 x B 8 F 0 1 1 A 0 , < b r / > 0 x 1 0 F A 3 D 9 8 , < b r / > 0 x F D 2 1 8 3 B 8 , < b r / > 0 x 4 A F C B 5 6 C , < b r / > 0 x 2 D D 1 D 3 5 B , < b r / > 0 x 9 A 5 3 E 4 7 9 , < b r / > 0 x B 6 F 8 4 5 6 5 , < b r / > 0 x D 2 8 E 4 9 B C , < b r / > 0 x 4 B F B 9 7 9 0 , < b r / > 0 x E 1 D D F 2 D A , < b r / > 0 x A 4 C B 7 E 3 3 , < b r / > 0 x 6 2 F B 1 3 4 1 , < b r / > 0 x C E E 4 C 6 E 8 , < b r / > 0 x E F 2 0 C A D A , < b r / > 0 x 3 6 7 7 4 C 0 1 , < b r / > 0 x D 0 7 E 9 E F E , < b r / > 0 x 2 B F 1 1 F B 4 , < b r / > 0 x 9 5 D B D A 4 D , < b r / > 0 x A E 9 0 9 1 9 8 , < b r / > 0 x E A A D 8 E 7 1 , < b r / > 0 x 6 B 9 3 D 5 A 0 , < b r / > 0 x D 0 8 E D 1 D 0 , < b r / > 0 x A F C 7 2 5 E 0 , < b r / > 0 x 8 E 3 C 5 B 2 F , < b r / > 0 x 8 E 7 5 9 4 B 7 , < b r / > 0 x 8 F F 6 E 2 F B , < b r / > 0 x F 2 1 2 2 B 6 4 , < b r / > 0 x 8 8 8 8 B 8 1 2 , < b r / > 0 x 9 0 0 D F 0 1 C , < b r / > 0 x 4 F A D 5 E A 0 , < b r / > 0 x 6 8 8 F C 3 1 C , < b r / > 0 x D 1 C F F 1 9 1 , < b r / > 0 x B 3 A 8 C 1 A D , < b r / > 0 x 2 F 2 F 2 2 1 8 , < b r / > 0 x B E 0 E 1 7 7 7 , < b r / > 0 x E A 7 5 2 D F E , < b r / > 0 x 8 B 0 2 1 F A 1 , < b r / > 0 x E 5 A 0 C C 0 F , < b r / > 0 x B 5 6 F 7 4 E 8 , < b r / > 0 x 1 8 A C F 3 D 6 , < b r / > 0 x C E 8 9 E 2 9 9 , < b r / > 0 x B 4 A 8 4 F E 0 , < b r / > 0 x F D 1 3 E 0 B 7 , < b r / > 0 x 7 C C 4 3 B 8 1 , < b r / > 0 x D 2 A D A 8 D 9 , < b r / > 0 x 1 6 5 F A 2 6 6 , < b r / > 0 x 8 0 9 5 7 7 0 5 , < b r / > 0 x 9 3 C C 7 3 1 4 , < b r / > 0 x 2 1 1 A 1 4 7 7 , < b r / > 0 x E 6 A D 2 0 6 5 , < b r / > 0 x 7 7 B 5 F A 8 6 , < b r / > 0 x C 7 5 4 4 2 F 5 , < b r / > 0 x F B 9 D 3 5 C F , < b r / > 0 x E B C D A F 0 C , < b r / > 0 x 7 B 3 E 8 9 A 0 , < b r / > 0 x D 6 4 1 1 B D 3 , < b r / > 0 x A E 1 E 7 E 4 9 , < b r / > 0 x 0 0 2 5 0 E 2 D , < b r / > 0 x 2 0 7 1 B 3 5 E , < b r / > 0 x 2 2 6 8 0 0 B B , < b r / > 0 x 5 7 B 8 E 0 A F , < b r / > 0 x 2 4 6 4 3 6 9 B , < b r / > 0 x F 0 0 9 B 9 1 E , < b r / > 0 x 5 5 6 3 9 1 1 D , < b r / > 0 x 5 9 D F A 6 A A , < b r / > 0 x 7 8 C 1 4 3 8 9 , < b r / > 0 x D 9 5 A 5 3 7 F , < b r / > 0 x 2 0 7 D 5 B A 2 , < b r / > 0 x 0 2 E 5 B 9 C 5 , < b r / > 0 x 8 3 2 6 0 3 7 6 , < b r / > 0 x 6 2 9 5 C F A 9 , < b r / > 0 x 1 1 C 8 1 9 6 8 , < b r / > 0 x 4 E 7 3 4 A 4 1 , < b r / > 0 x B 3 4 7 2 D C A , < b r / > 0 x 7 B 1 4 A 9 4 A , < b r / > 0 x 1 B 5 1 0 0 5 2 , < b r / > 0 x 9 A 5 3 2 9 1 5 , < b r / > 0 x D 6 0 F 5 7 3 F , < b r / > 0 x B C 9 B C 6 E 4 , < b r / > 0 x 2 B 6 0 A 4 7 6 , < b r / > 0 x 8 1 E 6 7 4 0 0 , < b r / > 0 x 0 8 B A 6 F B 5 , < b r / > 0 x 5 7 1 B E 9 1 F , < b r / > 0 x F 2 9 6 E C 6 B , < b r / > 0 x 2 A 0 D D 9 1 5 , < b r / > 0 x B 6 6 3 6 5 2 1 , < b r / > 0 x E 7 B 9 F 9 B 6 , < b r / > 0 x F F 3 4 0 5 2 E , < b r / > 0 x C 5 8 5 5 6 6 4 , < b r / > 0 x 5 3 B 0 2 D 5 D , < b r / > 0 x A 9 9 F 8 F A 1 , < b r / > 0 x 0 8 B A 4 7 9 9 , < b r / > 0 x 6 E 8 5 0 7 6 A < b r / > } ; < b r / > p r i v a t e s t a t i c f i n a l i n t [ ] K S 1 = < b r / > { < b r / > 0 x 4 B 7 A 7 0 E 9 , < b r / > 0 x B 5 B 3 2 9 4 4 , < b r / > 0 x D B 7 5 0 9 2 E , < b r / > 0 x C 4 1 9 2 6 2 3 , < b r / > 0 x A D 6 E A 6 B 0 , < b r / > 0 x 4 9 A 7 D F 7 D , < b r / > 0 x 9 C E E 6 0 B 8 , < b r / > 0 x 8 F E D B 2 6 6 , < b r / > 0 x E C A A 8 C 7 1 , < b r / > 0 x 6 9 9 A 1 7 F F , < b r / > 0 x 5 6 6 4 5 2 6 C , < b r / > 0 x C 2 B 1 9 E E 1 , < b r / > 0 x 1 9 3 6 0 2 A 5 , < b r / > 0 x 7 5 0 9 4 C 2 9 , < b r / > 0 x A 0 5 9 1 3 4 0 , < b r / > 0 x E 4 1 8 3 A 3 E , < b r / > 0 x 3 F 5 4 9 8 9 A , < b r / > 0 x 5 B 4 2 9 D 6 5 , < b r / > 0 x 6 B 8 F E 4 D 6 , < b r / > 0 x 9 9 F 7 3 F D 6 , < b r / > 0 x A 1 D 2 9 C 0 7 , < b r / > 0 x E F E 8 3 0 F 5 , < b r / > 0 x 4 D 2 D 3 8 E 6 , < b r / > 0 x F 0 2 5 5 D C 1 , < b r / > 0 x 4 C D D 2 0 8 6 , < b r / > 0 x 8 4 7 0 E B 2 6 , < b r / > 0 x 6 3 8 2 E 9 C 6 , < b r / > 0 x 0 2 1 E C C 5 E , < b r / > 0 x 0 9 6 8 6 B 3 F , < b r / > 0 x 3 E B A E F C 9 , < b r / > 0 x 3 C 9 7 1 8 1 4 , < b r / > 0 x 6 B 6 A 7 0 A 1 , < b r / > 0 x 6 8 7 F 3 5 8 4 , < b r / > 0 x 5 2 A 0 E 2 8 6 , < b r / > 0 x B 7 9 C 5 3 0 5 , < b r / > 0 x A A 5 0 0 7 3 7 , < b r / > 0 x 3 E 0 7 8 4 1 C , < b r / > 0 x 7 F D E A E 5 C , < b r / > 0 x 8 E 7 D 4 4 E C , < b r / > 0 x 5 7 1 6 F 2 B 8 , < b r / > 0 x B 0 3 A D A 3 7 , < b r / > 0 x F 0 5 0 0 C 0 D , < b r / > 0 x F 0 1 C 1 F 0 4 , < b r / > 0 x 0 2 0 0 B 3 F F , < b r / > 0 x A E 0 C F 5 1 A , < b r / > 0 x 3 C B 5 7 4 B 2 , < b r / > 0 x 2 5 8 3 7 A 5 8 , < b r / > 0 x D C 0 9 2 1 B D , < b r / > 0 x D 1 9 1 1 3 F 9 , < b r / > 0 x 7 C A 9 2 F F 6 , < b r / > 0 x 9 4 3 2 4 7 7 3 , < b r / > 0 x 2 2 F 5 4 7 0 1 , < b r / > 0 x 3 A E 5 E 5 8 1 , < b r / > 0 x 3 7 C 2 D A D C , < b r / > 0 x C 8 B 5 7 6 3 4 , < b r / > 0 x 9 A F 3 D D A 7 , < b r / > 0 x A 9 4 4 6 1 4 6 , < b r / > 0 x 0 F D 0 0 3 0 E , < b r / > 0 x E C C 8 C 7 3 E , < b r / > 0 x A 4 7 5 1 E 4 1 , < b r / > 0 x E 2 3 8 C D 9 9 , < b r / > 0 x 3 B E A 0 E 2 F , < b r / > 0 x 3 2 8 0 B B A 1 , < b r / > 0 x 1 8 3 E B 3 3 1 , < b r / > 0 x 4 E 5 4 8 B 3 8 , < b r / > 0 x 4 F 6 D B 9 0 8 , < b r / > 0 x 6 F 4 2 0 D 0 3 , < b r / > 0 x F 6 0 A 0 4 B F , < b r / > 0 x 2 C B 8 1 2 9 0 , < b r / > 0 x 2 4 9 7 7 C 7 9 , < b r / > 0 x 5 6 7 9 B 0 7 2 , < b r / > 0 x B C A F 8 9 A F , < b r / > 0 x D E 9 A 7 7 1 F , < b r / > 0 x D 9 9 3 0 8 1 0 , < b r / > 0 x B 3 8 B A E 1 2 , < b r / > 0 x D C C F 3 F 2 E , < b r / > 0 x 5 5 1 2 7 2 1 F , < b r / > 0 x 2 E 6 B 7 1 2 4 , < b r / > 0 x 5 0 1 A D D E 6 , < b r / > 0 x 9 F 8 4 C D 8 7 , < b r / > 0 x 7 A 5 8 4 7 1 8 , < b r / > 0 x 7 4 0 8 D A 1 7 , < b r / > 0 x B C 9 F 9 A B C , < b r / > 0 x E 9 4 B 7 D 8 C , < b r / > 0 x E C 7 A E C 3 A , < b r / > 0 x D B 8 5 1 D F A , < b r / > 0 x 6 3 0 9 4 3 6 6 , < b r / > 0 x C 4 6 4 C 3 D 2 , < b r / > 0 x E F 1 C 1 8 4 7 , < b r / > 0 x 3 2 1 5 D 9 0 8 , < b r / > 0 x D D 4 3 3 B 3 7 , < b r / > 0 x 2 4 C 2 B A 1 6 , < b r / > 0 x 1 2 A 1 4 D 4 3 , < b r / > 0 x 2 A 6 5 C 4 5 1 , < b r / > 0 x 5 0 9 4 0 0 0 2 , < b r / > 0 x 1 3 3 A E 4 D D , < b r / > 0 x 7 1 D F F 8 9 E , < b r / > 0 x 1 0 3 1 4 E 5 5 , < b r / > 0 x 8 1 A C 7 7 D 6 , < b r / > 0 x 5 F 1 1 1 9 9 B , < b r / > 0 x 0 4 3 5 5 6 F 1 , < b r / > 0 x D 7 A 3 C 7 6 B , < b r / > 0 x 3 C 1 1 1 8 3 B , < b r / > 0 x 5 9 2 4 A 5 0 9 , < b r / > 0 x F 2 8 F E 6 E D , < b r / > 0 x 9 7 F 1 F B F A , < b r / > 0 x 9 E B A B F 2 C , < b r / > 0 x 1 E 1 5 3 C 6 E , < b r / > 0 x 8 6 E 3 4 5 7 0 , < b r / > 0 x E A E 9 6 F B 1 , < b r / > 0 x 8 6 0 E 5 E 0 A , < b r / > 0 x 5 A 3 E 2 A B 3 , < b r / > 0 x 7 7 1 F E 7 1 C , < b r / > 0 x 4 E 3 D 0 6 F A , < b r / > 0 x 2 9 6 5 D C B 9 , < b r / > 0 x 9 9 E 7 1 D 0 F , < b r / > 0 x 8 0 3 E 8 9 D 6 , < b r / > 0 x 5 2 6 6 C 8 2 5 , < b r / > 0 x 2 E 4 C C 9 7 8 , < b r / > 0 x 9 C 1 0 B 3 6 A , < b r / > 0 x C 6 1 5 0 E B A , < b r / > 0 x 9 4 E 2 E A 7 8 , < b r / > 0 x A 5 F C 3 C 5 3 , < b r / > 0 x 1 E 0 A 2 D F 4 , < b r / > 0 x F 2 F 7 4 E A 7 , < b r / > 0 x 3 6 1 D 2 B 3 D , < b r / > 0 x 1 9 3 9 2 6 0 F , < b r / > 0 x 1 9 C 2 7 9 6 0 , < b r / > 0 x 5 2 2 3 A 7 0 8 , < b r / > 0 x F 7 1 3 1 2 B 6 , < b r / > 0 x E B A D F E 6 E , < b r / > 0 x E A C 3 1 F 6 6 , < b r / > 0 x E 3 B C 4 5 9 5 , < b r / > 0 x A 6 7 B C 8 8 3 , < b r / > 0 x B 1 7 F 3 7 D 1 , < b r / > 0 x 0 1 8 C F F 2 8 , < b r / > 0 x C 3 3 2 D D E F , < b r / > 0 x B E 6 C 5 A A 5 , < b r / > 0 x 6 5 5 8 2 1 8 5 , < b r / > 0 x 6 8 A B 9 8 0 2 , < b r / > 0 x E E C E A 5 0 F , < b r / > 0 x D B 2 F 9 5 3 B , < b r / > 0 x 2 A E F 7 D A D , < b r / > 0 x 5 B 6 E 2 F 8 4 , < b r / > 0 x 1 5 2 1 B 6 2 8 , < b r / > 0 x 2 9 0 7 6 1 7 0 , < b r / > 0 x E C D D 4 7 7 5 , < b r / > 0 x 6 1 9 F 1 5 1 0 , < b r / > 0 x 1 3 C C A 8 3 0 , < b r / > 0 x E B 6 1 B D 9 6 , < b r / > 0 x 0 3 3 4 F E 1 E , < b r / > 0 x A A 0 3 6 3 C F , < b r / > 0 x B 5 7 3 5 C 9 0 , < b r / > 0 x 4 C 7 0 A 2 3 9 , < b r / > 0 x D 5 9 E 9 E 0 B , < b r / > 0 x C B A A D E 1 4 , < b r / > 0 x E E C C 8 6 B C , < b r / > 0 x 6 0 6 2 2 C A 7 , < b r / > 0 x 9 C A B 5 C A B , < b r / > 0 x B 2 F 3 8 4 6 E , < b r / > 0 x 6 4 8 B 1 E A F , < b r / > 0 x 1 9 B D F 0 C A , < b r / > 0 x A 0 2 3 6 9 B 9 , < b r / > 0 x 6 5 5 A B B 5 0 , < b r / > 0 x 4 0 6 8 5 A 3 2 , < b r / > 0 x 3 C 2 A B 4 B 3 , < b r / > 0 x 3 1 9 E E 9 D 5 , < b r / > 0 x C 0 2 1 B 8 F 7 , < b r / > 0 x 9 B 5 4 0 B 1 9 , < b r / > 0 x 8 7 5 F A 0 9 9 , < b r / > 0 x 9 5 F 7 9 9 7 E , < b r / > 0 x 6 2 3 D 7 D A 8 , < b r / > 0 x F 8 3 7 8 8 9 A , < b r / > 0 x 9 7 E 3 2 D 7 7 , < b r / > 0 x 1 1 E D 9 3 5 F , < b r / > 0 x 1 6 6 8 1 2 8 1 , < b r / > 0 x 0 E 3 5 8 8 2 9 , < b r / > 0 x C 7 E 6 1 F D 6 , < b r / > 0 x 9 6 D E D F A 1 , < b r / > 0 x 7 8 5 8 B A 9 9 , < b r / > 0 x 5 7 F 5 8 4 A 5 , < b r / > 0 x 1 B 2 2 7 2 6 3 , < b r / > 0 x 9 B 8 3 C 3 F F , < b r / > 0 x 1 A C 2 4 6 9 6 , < b r / > 0 x C D B 3 0 A E B , < b r / > 0 x 5 3 2 E 3 0 5 4 , < b r / > 0 x 8 F D 9 4 8 E 4 , < b r / > 0 x 6 D B C 3 1 2 8 , < b r / > 0 x 5 8 E B F 2 E F , < b r / > 0 x 3 4 C 6 F F E A , < b r / > 0 x F E 2 8 E D 6 1 , < b r / > 0 x E E 7 C 3 C 7 3 , < b r / > 0 x 5 D 4 A 1 4 D 9 , < b r / > 0 x E 8 6 4 B 7 E 3 , < b r / > 0 x 4 2 1 0 5 D 1 4 , < b r / > 0 x 2 0 3 E 1 3 E 0 , < b r / > 0 x 4 5 E E E 2 B 6 , < b r / > 0 x A 3 A A A B E A , < b r / > 0 x D B 6 C 4 F 1 5 , < b r / > 0 x F A C B 4 F D 0 , < b r / > 0 x C 7 4 2 F 4 4 2 , < b r / > 0 x E F 6 A B B B 5 , < b r / > 0 x 6 5 4 F 3 B 1 D , < b r / > 0 x 4 1 C D 2 1 0 5 , < b r / > 0 x D 8 1 E 7 9 9 E , < b r / > 0 x 8 6 8 5 4 D C 7 , < b r / > 0 x E 4 4 B 4 7 6 A , < b r / > 0 x 3 D 8 1 6 2 5 0 , < b r / > 0 x C F 6 2 A 1 F 2 , < b r / > 0 x 5 B 8 D 2 6 4 6 , < b r / > 0 x F C 8 8 8 3 A 0 , < b r / > 0 x C 1 C 7 B 6 A 3 , < b r / > 0 x 7 F 1 5 2 4 C 3 , < b r / > 0 x 6 9 C B 7 4 9 2 , < b r / > 0 x 4 7 8 4 8 A 0 B , < b r / > 0 x 5 6 9 2 B 2 8 5 , < b r / > 0 x 0 9 5 B B F 0 0 , < b r / > 0 x A D 1 9 4 8 9 D , < b r / > 0 x 1 4 6 2 B 1 7 4 , < b r / > 0 x 2 3 8 2 0 E 0 0 , < b r / > 0 x 5 8 4 2 8 D 2 A , < b r / > 0 x 0 C 5 5 F 5 E A , < b r / > 0 x 1 D A D F 4 3 E , < b r / > 0 x 2 3 3 F 7 0 6 1 , < b r / > 0 x 3 3 7 2 F 0 9 2 , < b r / > 0 x 8 D 9 3 7 E 4 1 , < b r / > 0 x D 6 5 F E C F 1 , < b r / > 0 x 6 C 2 2 3 B D B , < b r / > 0 x 7 C D E 3 7 5 9 , < b r / > 0 x C B E E 7 4 6 0 , < b r / > 0 x 4 0 8 5 F 2 A 7 , < b r / > 0 x C E 7 7 3 2 6 E , < b r / > 0 x A 6 0 7 8 0 8 4 , < b r / > 0 x 1 9 F 8 5 0 9 E , < b r / > 0 x E 8 E F D 8 5 5 , < b r / > 0 x 6 1 D 9 9 7 3 5 , < b r / > 0 x A 9 6 9 A 7 A A , < b r / > 0 x C 5 0 C 0 6 C 2 , < b r / > 0 x 5 A 0 4 A B F C , < b r / > 0 x 8 0 0 B C A D C , < b r / > 0 x 9 E 4 4 7 A 2 E , < b r / > 0 x C 3 4 5 3 4 8 4 , < b r / > 0 x F D D 5 6 7 0 5 , < b r / > 0 x 0 E 1 E 9 E C 9 , < b r / > 0 x D B 7 3 D B D 3 , < b r / > 0 x 1 0 5 5 8 8 C D , < b r / > 0 x 6 7 5 F D A 7 9 , < b r / > 0 x E 3 6 7 4 3 4 0 , < b r / > 0 x C 5 C 4 3 4 6 5 , < b r / > 0 x 7 1 3 E 3 8 D 8 , < b r / > 0 x 3 D 2 8 F 8 9 E , < b r / > 0 x F 1 6 D F F 2 0 , < b r / > 0 x 1 5 3 E 2 1 E 7 , < b r / > 0 x 8 F B 0 3 D 4 A , < b r / > 0 x E 6 E 3 9 F 2 B , < b r / > 0 x D B 8 3 A D F 7 < b r / > } ; < b r / > p r i v a t e s t a t i c f i n a l i n t [ ] K S 2 = < b r / > { < b r / > 0 x E 9 3 D 5 A 6 8 , < b r / > 0 x 9 4 8 1 4 0 F 7 , < b r / > 0 x F 6 4 C 2 6 1 C , < b r / > 0 x 9 4 6 9 2 9 3 4 , < b r / > 0 x 4 1 1 5 2 0 F 7 , < b r / > 0 x 7 6 0 2 D 4 F 7 , < b r / > 0 x B C F 4 6 B 2 E , < b r / > 0 x D 4 A 2 0 0 6 8 , < b r / > 0 x D 4 0 8 2 4 7 1 , < b r / > 0 x 3 3 2 0 F 4 6 A , < b r / > 0 x 4 3 B 7 D 4 B 7 , < b r / > 0 x 5 0 0 0 6 1 A F , < b r / > 0 x 1 E 3 9 F 6 2 E , < b r / > 0 x 9 7 2 4 4 5 4 6 , < b r / > 0 x 1 4 2 1 4 F 7 4 , < b r / > 0 x B F 8 B 8 8 4 0 , < b r / > 0 x 4 D 9 5 F C 1 D , < b r / > 0 x 9 6 B 5 9 1 A F , < b r / > 0 x 7 0 F 4 D D D 3 , < b r / > 0 x 6 6 A 0 2 F 4 5 , < b r / > 0 x B F B C 0 9 E C , < b r / > 0 x 0 3 B D 9 7 8 5 , < b r / > 0 x 7 F A C 6 D D 0 , < b r / > 0 x 3 1 C B 8 5 0 4 , < b r / > 0 x 9 6 E B 2 7 B 3 , < b r / > 0 x 5 5 F D 3 9 4 1 , < b r / > 0 x D A 2 5 4 7 E 6 , < b r / > 0 x A B C A 0 A 9 A , < b r / > 0 x 2 8 5 0 7 8 2 5 , < b r / > 0 x 5 3 0 4 2 9 F 4 , < b r / > 0 x 0 A 2 C 8 6 D A , < b r / > 0 x E 9 B 6 6 D F B , < b r / > 0 x 6 8 D C 1 4 6 2 , < b r / > 0 x D 7 4 8 6 9 0 0 , < b r / > 0 x 6 8 0 E C 0 A 4 , < b r / > 0 x 2 7 A 1 8 D E E , < b r / > 0 x 4 F 3 F F E A 2 , < b r / > 0 x E 8 8 7 A D 8 C , < b r / > 0 x B 5 8 C E 0 0 6 , < b r / > 0 x 7 A F 4 D 6 B 6 , < b r / > 0 x A A C E 1 E 7 C , < b r / > 0 x D 3 3 7 5 F E C , < b r / > 0 x C E 7 8 A 3 9 9 , < b r / > 0 x 4 0 6 B 2 A 4 2 , < b r / > 0 x 2 0 F E 9 E 3 5 , < b r / > 0 x D 9 F 3 8 5 B 9 , < b r / > 0 x E E 3 9 D 7 A B , < b r / > 0 x 3 B 1 2 4 E 8 B , < b r / > 0 x 1 D C 9 F A F 7 , < b r / > 0 x 4 B 6 D 1 8 5 6 , < b r / > 0 x 2 6 A 3 6 6 3 1 , < b r / > 0 x E A E 3 9 7 B 2 , < b r / > 0 x 3 A 6 E F A 7 4 , < b r / > 0 x D D 5 B 4 3 3 2 , < b r / > 0 x 6 8 4 1 E 7 F 7 , < b r / > 0 x C A 7 8 2 0 F B , < b r / > 0 x F B 0 A F 5 4 E , < b r / > 0 x D 8 F E B 3 9 7 , < b r / > 0 x 4 5 4 0 5 6 A C , < b r / > 0 x B A 4 8 9 5 2 7 , < b r / > 0 x 5 5 5 3 3 A 3 A , < b r / > 0 x 2 0 8 3 8 D 8 7 , < b r / > 0 x F E 6 B A 9 B 7 , < b r / > 0 x D 0 9 6 9 5 4 B , < b r / > 0 x 5 5 A 8 6 7 B C , < b r / > 0 x A 1 1 5 9 A 5 8 , < b r / > 0 x C C A 9 2 9 6 3 , < b r / > 0 x 9 9 E 1 D B 3 3 , < b r / > 0 x A 6 2 A 4 A 5 6 , < b r / > 0 x 3 F 3 1 2 5 F 9 , < b r / > 0 x 5 E F 4 7 E 1 C , < b r / > 0 x 9 0 2 9 3 1 7 C , < b r / > 0 x F D F 8 E 8 0 2 , < b r / > 0 x 0 4 2 7 2 F 7 0 , < b r / > 0 x 8 0 B B 1 5 5 C , < b r / > 0 x 0 5 2 8 2 C E 3 , < b r / > 0 x 9 5 C 1 1 5 4 8 , < b r / > 0 x E 4 C 6 6 D 2 2 , < b r / > 0 x 4 8 C 1 1 3 3 F , < b r / > 0 x C 7 0 F 8 6 D C , < b r / > 0 x 0 7 F 9 C 9 E E , < b r / > 0 x 4 1 0 4 1 F 0 F , < b r / > 0 x 4 0 4 7 7 9 A 4 , < b r / > 0 x 5 D 8 8 6 E 1 7 , < b r / > 0 x 3 2 5 F 5 1 E B , < b r / > 0 x D 5 9 B C 0 D 1 , < b r / > 0 x F 2 B C C 1 8 F , < b r / > 0 x 4 1 1 1 3 5 6 4 , < b r / > 0 x 2 5 7 B 7 8 3 4 , < b r / > 0 x 6 0 2 A 9 C 6 0 , < b r / > 0 x D F F 8 E 8 A 3 , < b r / > 0 x 1 F 6 3 6 C 1 B , < b r / > 0 x 0 E 1 2 B 4 C 2 , < b r / > 0 x 0 2 E 1 3 2 9 E , < b r / > 0 x A F 6 6 4 F D 1 , < b r / > 0 x C A D 1 8 1 1 5 , < b r / > 0 x 6 B 2 3 9 5 E 0 , < b r / > 0 x 3 3 3 E 9 2 E 1 , < b r / > 0 x 3 B 2 4 0 B 6 2 , < b r / > 0 x E E B E B 9 2 2 , < b r / > 0 x 8 5 B 2 A 2 0 E , < b r / > 0 x E 6 B A 0 D 9 9 , < b r / > 0 x D E 7 2 0 C 8 C , < b r / > 0 x 2 D A 2 F 7 2 8 , < b r / > 0 x D 0 1 2 7 8 4 5 , < b r / > 0 x 9 5 B 7 9 4 F D , < b r / > 0 x 6 4 7 D 0 8 6 2 , < b r / > 0 x E 7 C C F 5 F 0 , < b r / > 0 x 5 4 4 9 A 3 6 F , < b r / > 0 x 8 7 7 D 4 8 F A , < b r / > 0 x C 3 9 D F D 2 7 , < b r / > 0 x F 3 3 E 8 D 1 E , < b r / > 0 x 0 A 4 7 6 3 4 1 , < b r / > 0 x 9 9 2 E F F 7 4 , < b r / > 0 x 3 A 6 F 6 E A B , < b r / > 0 x F 4 F 8 F D 3 7 , < b r / > 0 x A 8 1 2 D C 6 0 , < b r / > 0 x A 1 E B D D F 8 , < b r / > 0 x 9 9 1 B E 1 4 C , < b r / > 0 x D B 6 E 6 B 0 D , < b r / > 0 x C 6 7 B 5 5 1 0 , < b r / > 0 x 6 D 6 7 2 C 3 7 , < b r / > 0 x 2 7 6 5 D 4 3 B , < b r / > 0 x D C D 0 E 8 0 4 , < b r / > 0 x F 1 2 9 0 D C 7 , < b r / > 0 x C C 0 0 F F A 3 , < b r / > 0 x B 5 3 9 0 F 9 2 , < b r / > 0 x 6 9 0 F E D 0 B , < b r / > 0 x 6 6 7 B 9 F F B , < b r / > 0 x C E D B 7 D 9 C , < b r / > 0 x A 0 9 1 C F 0 B , < b r / > 0 x D 9 1 5 5 E A 3 , < b r / > 0 x B B 1 3 2 F 8 8 , < b r / > 0 x 5 1 5 B A D 2 4 , < b r / > 0 x 7 B 9 4 7 9 B F , < b r / > 0 x 7 6 3 B D 6 E B , < b r / > 0 x 3 7 3 9 2 E B 3 , < b r / > 0 x C C 1 1 5 9 7 9 , < b r / > 0 x 8 0 2 6 E 2 9 7 , < b r / > 0 x F 4 2 E 3 1 2 D , < b r / > 0 x 6 8 4 2 A D A 7 , < b r / > 0 x C 6 6 A 2 B 3 B , < b r / > 0 x 1 2 7 5 4 C C C , < b r / > 0 x 7 8 2 E F 1 1 C , < b r / > 0 x 6 A 1 2 4 2 3 7 , < b r / > 0 x B 7 9 2 5 1 E 7 , < b r / > 0 x 0 6 A 1 B B E 6 , < b r / > 0 x 4 B F B 6 3 5 0 , < b r / > 0 x 1 A 6 B 1 0 1 8 , < b r / > 0 x 1 1 C A E D F A , < b r / > 0 x 3 D 2 5 B D D 8 , < b r / > 0 x E 2 E 1 C 3 C 9 , < b r / > 0 x 4 4 4 2 1 6 5 9 , < b r / > 0 x 0 A 1 2 1 3 8 6 , < b r / > 0 x D 9 0 C E C 6 E , < b r / > 0 x D 5 A B E A 2 A , < b r / > 0 x 6 4 A F 6 7 4 E , < b r / > 0 x D A 8 6 A 8 5 F , < b r / > 0 x B E B F E 9 8 8 , < b r / > 0 x 6 4 E 4 C 3 F E , < b r / > 0 x 9 D B C 8 0 5 7 , < b r / > 0 x F 0 F 7 C 0 8 6 , < b r / > 0 x 6 0 7 8 7 B F 8 , < b r / > 0 x 6 0 0 3 6 0 4 D , < b r / > 0 x D 1 F D 8 3 4 6 , < b r / > 0 x F 6 3 8 1 F B 0 , < b r / > 0 x 7 7 4 5 A E 0 4 , < b r / > 0 x D 7 3 6 F C C C , < b r / > 0 x 8 3 4 2 6 B 3 3 , < b r / > 0 x F 0 1 E A B 7 1 , < b r / > 0 x B 0 8 0 4 1 8 7 , < b r / > 0 x 3 C 0 0 5 E 5 F , < b r / > 0 x 7 7 A 0 5 7 B E , < b r / > 0 x B D E 8 A E 2 4 , < b r / > 0 x 5 5 4 6 4 2 9 9 , < b r / > 0 x B F 5 8 2 E 6 1 , < b r / > 0 x 4 E 5 8 F 4 8 F , < b r / > 0 x F 2 D D F D A 2 , < b r / > 0 x F 4 7 4 E F 3 8 , < b r / > 0 x 8 7 8 9 B D C 2 , < b r / > 0 x 5 3 6 6 F 9 C 3 , < b r / > 0 x C 8 B 3 8 E 7 4 , < b r / > 0 x B 4 7 5 F 2 5 5 , < b r / > 0 x 4 6 F C D 9 B 9 , < b r / > 0 x 7 A E B 2 6 6 1 , < b r / > 0 x 8 B 1 D D F 8 4 , < b r / > 0 x 8 4 6 A 0 E 7 9 , < b r / > 0 x 9 1 5 F 9 5 E 2 , < b r / > 0 x 4 6 6 E 5 9 8 E , < b r / > 0 x 2 0 B 4 5 7 7 0 , < b r / > 0 x 8 C D 5 5 5 9 1 , < b r / > 0 x C 9 0 2 D E 4 C , < b r / > 0 x B 9 0 B A C E 1 , < b r / > 0 x B B 8 2 0 5 D 0 , < b r / > 0 x 1 1 A 8 6 2 4 8 , < b r / > 0 x 7 5 7 4 A 9 9 E , < b r / > 0 x B 7 7 F 1 9 B 6 , < b r / > 0 x E 0 A 9 D C 0 9 , < b r / > 0 x 6 6 2 D 0 9 A 1 , < b r / > 0 x C 4 3 2 4 6 3 3 , < b r / > 0 x E 8 5 A 1 F 0 2 , < b r / > 0 x 0 9 F 0 B E 8 C , < b r / > 0 x 4 A 9 9 A 0 2 5 , < b r / > 0 x 1 D 6 E F E 1 0 , < b r / > 0 x 1 A B 9 3 D 1 D , < b r / > 0 x 0 B A 5 A 4 D F , < b r / > 0 x A 1 8 6 F 2 0 F , < b r / > 0 x 2 8 6 8 F 1 6 9 , < b r / > 0 x D C B 7 D A 8 3 , < b r / > 0 x 5 7 3 9 0 6 F E , < b r / > 0 x A 1 E 2 C E 9 B , < b r / > 0 x 4 F C D 7 F 5 2 , < b r / > 0 x 5 0 1 1 5 E 0 1 , < b r / > 0 x A 7 0 6 8 3 F A , < b r / > 0 x A 0 0 2 B 5 C 4 , < b r / > 0 x 0 D E 6 D 0 2 7 , < b r / > 0 x 9 A F 8 8 C 2 7 , < b r / > 0 x 7 7 3 F 8 6 4 1 , < b r / > 0 x C 3 6 0 4 C 0 6 , < b r / > 0 x 6 1 A 8 0 6 B 5 , < b r / > 0 x F 0 1 7 7 A 2 8 , < b r / > 0 x C 0 F 5 8 6 E 0 , < b r / > 0 x 0 0 6 0 5 8 A A , < b r / > 0 x 3 0 D C 7 D 6 2 , < b r / > 0 x 1 1 E 6 9 E D 7 , < b r / > 0 x 2 3 3 8 E A 6 3 , < b r / > 0 x 5 3 C 2 D D 9 4 , < b r / > 0 x C 2 C 2 1 6 3 4 , < b r / > 0 x B B C B E E 5 6 , < b r / > 0 x 9 0 B C B 6 D E , < b r / > 0 x E B F C 7 D A 1 , < b r / > 0 x C E 5 9 1 D 7 6 , < b r / > 0 x 6 F 0 5 E 4 0 9 , < b r / > 0 x 4 B 7 C 0 1 8 8 , < b r / > 0 x 3 9 7 2 0 A 3 D , < b r / > 0 x 7 C 9 2 7 C 2 4 , < b r / > 0 x 8 6 E 3 7 2 5 F , < b r / > 0 x 7 2 4 D 9 D B 9 , < b r / > 0 x 1 A C 1 5 B B 4 , < b r / > 0 x D 3 9 E B 8 F C , < b r / > 0 x E D 5 4 5 5 7 8 , < b r / > 0 x 0 8 F C A 5 B 5 , < b r / > 0 x D 8 3 D 7 C D 3 , < b r / > 0 x 4 D A D 0 F C 4 , < b r / > 0 x 1 E 5 0 E F 5 E , < b r / > 0 x B 1 6 1 E 6 F 8 , < b r / > 0 x A 2 8 5 1 4 D 9 , < b r / > 0 x 6 C 5 1 1 3 3 C , < b r / > 0 x 6 F D 5 C 7 E 7 , < b r / > 0 x 5 6 E 1 4 E C 4 , < b r / > 0 x 3 6 2 A B F C E , < b r / > 0 x D D C 6 C 8 3 7 , < b r / > 0 x D 7 9 A 3 2 3 4 , < b r / > 0 x 9 2 6 3 8 2 1 2 , < b r / > 0 x 6 7 0 E F A 8 E , < b r / > 0 x 4 0 6 0 0 0 E 0 < b r / > } ; < b r / > p r i v a t e s t a t i c f i n a l i n t [ ] K S 3 = < b r / > { < b r / > 0 x 3 A 3 9 C E 3 7 , < b r / > 0 x D 3 F A F 5 C F , < b r / > 0 x A B C 2 7 7 3 7 , < b r / > 0 x 5 A C 5 2 D 1 B , < b r / > 0 x 5 C B 0 6 7 9 E , < b r / > 0 x 4 F A 3 3 7 4 2 , < b r / > 0 x D 3 8 2 2 7 4 0 , < b r / > 0 x 9 9 B C 9 B B E , < b r / > 0 x D 5 1 1 8 E 9 D , < b r / > 0 x B F 0 F 7 3 1 5 , < b r / > 0 x D 6 2 D 1 C 7 E , < b r / > 0 x C 7 0 0 C 4 7 B , < b r / > 0 x B 7 8 C 1 B 6 B , < b r / > 0 x 2 1 A 1 9 0 4 5 , < b r / > 0 x B 2 6 E B 1 B E , < b r / > 0 x 6 A 3 6 6 E B 4 , < b r / > 0 x 5 7 4 8 A B 2 F , < b r / > 0 x B C 9 4 6 E 7 9 , < b r / > 0 x C 6 A 3 7 6 D 2 , < b r / > 0 x 6 5 4 9 C 2 C 8 , < b r / > 0 x 5 3 0 F F 8 E E , < b r / > 0 x 4 6 8 D D E 7 D , < b r / > 0 x D 5 7 3 0 A 1 D , < b r / > 0 x 4 C D 0 4 D C 6 , < b r / > 0 x 2 9 3 9 B B D B , < b r / > 0 x A 9 B A 4 6 5 0 , < b r / > 0 x A C 9 5 2 6 E 8 , < b r / > 0 x B E 5 E E 3 0 4 , < b r / > 0 x A 1 F A D 5 F 0 , < b r / > 0 x 6 A 2 D 5 1 9 A , < b r / > 0 x 6 3 E F 8 C E 2 , < b r / > 0 x 9 A 8 6 E E 2 2 , < b r / > 0 x C 0 8 9 C 2 B 8 , < b r / > 0 x 4 3 2 4 2 E F 6 , < b r / > 0 x A 5 1 E 0 3 A A , < b r / > 0 x 9 C F 2 D 0 A 4 , < b r / > 0 x 8 3 C 0 6 1 B A , < b r / > 0 x 9 B E 9 6 A 4 D , < b r / > 0 x 8 F E 5 1 5 5 0 , < b r / > 0 x B A 6 4 5 B D 6 , < b r / > 0 x 2 8 2 6 A 2 F 9 , < b r / > 0 x A 7 3 A 3 A E 1 , < b r / > 0 x 4 B A 9 9 5 8 6 , < b r / > 0 x E F 5 5 6 2 E 9 , < b r / > 0 x C 7 2 F E F D 3 , < b r / > 0 x F 7 5 2 F 7 D A , < b r / > 0 x 3 F 0 4 6 F 6 9 , < b r / > 0 x 7 7 F A 0 A 5 9 , < b r / > 0 x 8 0 E 4 A 9 1 5 , < b r / > 0 x 8 7 B 0 8 6 0 1 , < b r / > 0 x 9 B 0 9 E 6 A D , < b r / > 0 x 3 B 3 E E 5 9 3 , < b r / > 0 x E 9 9 0 F D 5 A , < b r / > 0 x 9 E 3 4 D 7 9 7 , < b r / > 0 x 2 C F 0 B 7 D 9 , < b r / > 0 x 0 2 2 B 8 B 5 1 , < b r / > 0 x 9 6 D 5 A C 3 A , < b r / > 0 x 0 1 7 D A 6 7 D , < b r / > 0 x D 1 C F 3 E D 6 , < b r / > 0 x 7 C 7 D 2 D 2 8 , < b r / > 0 x 1 F 9 F 2 5 C F , < b r / > 0 x A D F 2 B 8 9 B , < b r / > 0 x 5 A D 6 B 4 7 2 , < b r / > 0 x 5 A 8 8 F 5 4 C , < b r / > 0 x E 0 2 9 A C 7 1 , < b r / > 0xE019A5E6,
0x47B0ACFD,
0xED93FA9B,
0xE8D3C48D,
0x283B57CC,
0xF8D56629,
0x79132E28,
0x785F0191,
0xED756055,
0xF7960E44,
0xE3D35E8C,
0x15056DD4,
0x88F46DBA,
0x03A16125,
0x0564F0BD,
0xC3EB9E15,
0x3C9057A2,
0x97271AEC,
0xA93A072A,
0x1B3F6D9B,
0x1E6321F5,
0xF59C66FB,
0x26DCF319,
0x7533D928,
0xB155FDF5,
0x03563482,
0x8ABA3CBB,
0x28517711,
0xC20AD9F8,
0xABCC5167,
0xCCAD925F,
0x4DE81751,
0x3830DC8E,
0x379D5862,
0x9320F991,
0xEA7A90C2,
0xFB3E7BCE,
0x5121CE64,
0x774FBE32,
0xA8B6E37E,
0xC3293D46,
0x48DE5369,
0x6413E680,
0xA2AE0810,
0xDD6DB224,
0x69852DFD,
0x09072166,
0xB39A460A,
0x6445C0DD,
0x586CDECF,
0x1C20C8AE,
0x5BBEF7DD,
0x1B588D40,
0xCCD2017F,
0x6BB4E3BB,
0xDDA26A7E,
0x3A59FF45,
0x3E350A44,
0xBCB4CDD5,
0x72EACEA8,
0xFA6484BB,
0x8D6612AE,
0xBF3C6F47,
0xD29BE463,
0x542F5D9E,
0xAEC2771B,
0xF64E6370,
0x740E0D8D,
0xE75B1357,
0xF8721671,
0xAF537D5D,
0x4040CB08,
0x4EB4E2CC,
0x34D2466A,
0x0115AF84,
0xE1B00428,
0x95983A1D,
0x06B89FB4,
0xCE6EA048,
0x6F3F3B82,
0x3520AB82,
0x011A1D4B,
0x277227F8,
0x611560B1,
0xE7933FDC,
0xBB3A792B,
0x344525BD,
0xA08839E1,
0x51CE794B,
0x2F32C9B7,
0xA01FBAC9,
0xE01CC87E,
0xBCC7D1F6,
0xCF0111C3,
0xA1E8AAC7,
0x1A908749,
0xD44FBD9A,
0xD0DADECB,
0xD50ADA38,
0x0339C32A,
0xC6913667,
0x8DF9317C,
0xE0B12B4F,
0xF79E59B7,
0x43F5BB3A,
0xF2D519FF,
0x27D9459C,
0xBF97222C,
0x15E6FC2A,
0x0F91FC71,
0x9B941525,
0xFAE59361,
0xCEB69CEB,
0xC2A86459,
0x12BAA8D1,
0xB6C1075E,
0xE3056A0C,
0x10D25065,
0xCB03A442,
0xE0EC6E0E,
0x1698DB3B,
0x4C98A0BE,
0x3278E964,
0x9F1F9532,
0xE0D392DF,
0xD3A0342B,
0x8971F21E,
0x1B0A7441,
0x4BA3348C,
0xC5BE7120,
0xC37632D8,
0xDF359F8D,
0x9B992F2E,
0xE60B6F47,
0x0FE3F11D,
0xE54CDA54,
0x1EDAD891,
0xCE6279CF,
0xCD3E7E6F,
0x1618B166,
0xFD2C1D05,
0x848FD2C5,
0xF6FB2299,
0xF523F357,
0xA6327623,
0x93A83531,
0x56CCCD02,
0xACF08162,
0x5A75EBB5,
0x6E163697,
0x88D273CC,
0xDE966292,
0x81B949D0,
0x4C50901B,
0x71C65614,
0xE6C6C7BD,
0x327A140A,
0x45E1D006,
0xC3F27B9A,
0xC9AA53FD,
0x62A80F00,
0xBB25BFE2,
0x35BDD2F6,
0x71126905,
0xB2040222,
0xB6CBCF7C,
0xCD769C2B,
0x53113EC0,
0x1640E3D3,
0x38ABBD60,
0x2547ADF0,
0xBA38209C,
0xF746CE76,
0x77AFA1C5,
0x20756060,
0x85CBFE4E,
0x8AE88DD8,
0x7AAAF9B0,
0x4CF9AA7E,
0x1948C25C,
0x02FB8A8C,
0x01C36AE4,
0xD6EBE1F9,
0x90D4F869,
0xA65CDEA0,
0x3F09252D,
0xC208E69F,
0xB74E6132,
0xCE77E25B,
0x578FDFE3,
0x3AC372E6
};
// ====================================
// Useful constants
// ====================================
private static final int ROUNDS = 16;
private static final int BLOCK_SIZE = 8; // bytes = 64 bits
private static final int SBOX_SK = 256;
private static final int P_SZ = ROUNDS + 2;
private final int[] S0;
private final int[] S1;
private final int[] S2;
private final int[] S3;
private final int[] P;
private boolean encrypting = false;
private byte[] workingKey = null;
public BlowfishEngine()
{
S0 = new int[SBOX_SK];
S1 = new int[SBOX_SK];
S2 = new int[SBOX_SK];
S3 = new int[SBOX_SK];
P = new int[P_SZ];
}
public final int processBlock(byte[] in, int inOff, byte[] out, int outOff) throws IOException
{
if (workingKey == null)
throw new IllegalStateException("Blowfish not initialised");
if ((inOff + BLOCK_SIZE) > in.length)
throw new IOException("input buffer too short");
if ((outOff + BLOCK_SIZE) > out.length)
throw new IOException("output buffer too short");
if (encrypting)
encryptBlock(in, inOff, out, outOff);
else
decryptBlock(in, inOff, out, outOff);
return BLOCK_SIZE;
}
// ==================================
// Private Implementation
// ==================================
private int func(int x)
{
return (((S0[(x >>> 24)] + S1[(x >>> 16) & 0xff]) ^ S2[(x >>> 8) & 0xff]) + S3[x & 0xff]);
}
/**
* Encrypt the given input starting at the given offset and place the result in the provided buffer starting at the given offset. The input will be an exact multiple of our blocksize.
* @param src
* @param srcIndex
* @param dst
* @param dstIndex
*/
private void encryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex)
{
int xl = bytesTo32bits(src, srcIndex);
int xr = bytesTo32bits(src, srcIndex + 4);
xl ^= P[0];
for (int i = 1; i < ROUNDS; i += 2)
{
xr ^= func(xl) ^ P;
xl ^= func(xr) ^ P[i + 1];
}
xr ^= P[ROUNDS + 1];
bits32ToBytes(xr, dst, dstIndex);
bits32ToBytes(xl, dst, dstIndex + 4);
}
/**
* Decrypt the given input starting at the given offset and place the result in the provided buffer starting at the given offset. The input will be an exact multiple of our blocksize.
* @param src
* @param srcIndex
* @param dst
* @param dstIndex
*/
private void decryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex)
{
int xl = bytesTo32bits(src, srcIndex);
int xr = bytesTo32bits(src, srcIndex + 4);
xl ^= P[ROUNDS + 1];
for (int i = ROUNDS; i > 0; i -= 2)
{
xr ^= func(xl) ^ P;
xl ^= func(xr) ^ P;
}
xr ^= P[0];
bits32ToBytes(xr, dst, dstIndex);
bits32ToBytes(xl, dst, dstIndex + 4);
}
private static int bytesTo32bits(byte[] b, int i)
{
return ((b[i + 3] & 0xff) > 16);
b[offset + 3] = (byte) (in >> 24);
}
}
где это статический ключ, используемый в Java:
private static final byte[] STATIC_BLOWFISH_KEY =
{
(byte) 0x6b,
(byte) 0x60,
(byte) 0xcb,
(byte) 0x5b,
(byte) 0x82,
(byte) 0xce,
(byte) 0x90,
(byte) 0xb1,
(byte) 0xcc,
(byte) 0x2b,
(byte) 0x6c,
(byte) 0x55,
(byte) 0x6c,
(byte) 0x6c,
(byte) 0x6c,
(byte) 0x6c
};
а это вызов перед применением Blowfish, вот входные данные:
raw: [0, 0, 0, -93 , -116, -52, 14, 122, 118, -45, -96, 101, -48, -12, -96, 32, -22, 63, 32, 113, 48, 41, -35, 123, -35, 65, -84, 125, 118, -59, 23, 99, 125, 100, 83, 53, -49, -25, 31, 44, 72, -108, -100, 65, 103, - 18, 46, -104, 70, -70, -87, -10, -113, -22, 80, -33, -18, 119, 62, -17, 32, -57, 77, 45, 28, -30, -127, 73, -94, -26, -68, 75, 20, 100, -104, 52, 42, -107, 24, -3, -55, -95, -41, -119, -78, 93, -126, 60, 84, 85, -15, -98, -117, 95, 57, 41, -64, 48, -71, -53, 24, -64, 0, -58, 69, 72, -119, -86, -91, -121, -64, 26, 70, 19, -104, 44, 28, -12, -70, -45, -27, -11, 32, - 32, -20, 100, 74, 57, -60, 97, -117, -74, -28, 5, -4, -66, -72, 114, -2, 102, 76, -92, -107 , 102, 76, -92, -107, 102, 76, -92, -107, 102, 76, -92, -107, -86, -52, -84, -101, 123, -30, -5 , -36, 37, -35, 31, -50, 44, 123, -93, -94, -6, -24, 68, -68, -6, -24, 68, -68, -6, - 24, 68, 0, 0, 0, 0]
размер: 184
смещение: 2
public int encrypt(byte[] raw, final int offset, int size) throws IOException
{
// another desnecessary code
_staticCrypt.crypt(raw, offset, size);
}
public void crypt(byte[] raw, final int offset, final int size) throws IOException
{
int count = size / 8;
byte[] result = new byte[size];
for (int i = 0; i < count; i++)
_crypt.processBlock(raw, offset + i * 8, result, i * 8);
System.arraycopy(result, 0, raw, offset, size);
}
Я пытаюсь сделать то же самое в Go, но результат отличается от ожидаемого:
func TestBlowFish(t *testing.T) {
const blowFishPadding = 8
var staticBlowfishKey = []byte{
0x6b, 0x60, 0xcb, 0x5b, 0x82, 0xce, 0x90, 0xb1,
0xcc, 0x2b, 0x6c, 0x55, 0x6c, 0x6c, 0x6c, 0x6c,
}
want := []byte{86, 141, 65, 4, 242, 139, 60, 32, 2, 178, 248, 226, 195, 57, 55, 34, 143, 125, 131, 61, 236, 112, 85, 170, 245, 182, 175, 57, 102, 101, 141, 91, 44, 233, 241, 151, 40, 7, 248, 173, 43, 147, 109, 192, 2, 169, 237, 58, 203, 135, 251, 125, 48, 109, 48, 133, 88, 243, 75, 241, 243, 198, 84, 64, 58, 26, 67, 75, 114, 217, 61, 7, 93, 58, 131, 226, 6, 206, 178, 24, 101, 140, 38, 228, 255, 146, 145, 68, 115, 89, 9, 121, 49, 238, 59, 237, 103, 225, 11, 48, 211, 50, 17, 121, 185, 143, 90, 22, 138, 69, 146, 158, 217, 46, 190, 148, 254, 163, 239, 42, 186, 233, 101, 162, 68, 45, 28, 116, 80, 137, 240, 218, 11, 43, 13, 90, 142, 125, 29, 126, 183, 85, 211, 63, 198, 56, 56, 187, 44, 255, 157, 143, 242, 65, 16, 156, 255, 88, 118, 253, 251, 158, 119, 210, 244, 55, 72, 135, 77, 88, 23, 224, 31, 239, 176, 50, 214, 56, 10, 204, 80, 218, 189, 167}
got := []byte{0, 163, 140, 204, 14, 122, 118, 211, 160, 101, 208, 244, 160, 32, 234, 63, 32, 113, 48, 41, 221, 123, 221, 65, 172, 125, 118, 197, 23, 99, 125, 100, 83, 53, 207, 231, 31, 44, 72, 148, 156, 65, 103, 238, 46, 152, 70, 186, 169, 246, 143, 234, 80, 223, 238, 119, 62, 239, 32, 199, 77, 45, 28, 226, 129, 73, 162, 230, 188, 75, 20, 100, 152, 52, 42, 149, 24, 253, 201, 161, 215, 137, 178, 93, 130, 60, 84, 85, 241, 158, 139, 95, 57, 41, 192, 48, 185, 203, 24, 192, 0, 198, 69, 72, 137, 170, 165, 135, 192, 26, 70, 19, 152, 44, 28, 244, 186, 211, 229, 245, 32, 224, 236, 100, 74, 57, 196, 97, 139, 182, 228, 5, 252, 190, 184, 114, 254, 102, 76, 164, 149, 102, 76, 164, 149, 102, 76, 164, 149, 102, 76, 164, 149, 170, 204, 172, 155, 123, 226, 251, 220, 37, 221, 31, 206, 44, 123, 163, 162, 250, 232, 68, 188, 250, 232, 68, 188, 250, 232, 68}
dataSize := len(got)
bPadding := blowFishPadding - (dataSize % blowFishPadding)
padding := bytes.Repeat([]byte{byte(0)}, bPadding)
got = append(got, padding...)
block, err := blowfish.NewCipher(staticBlowfishKey)
if err != nil {
require.NoError(t, err)
}
mode := cipher.NewCBCEncrypter(block, make([]byte, blowfish.BlockSize))
mode.CryptBlocks(got, got)
require.Equal(t, want, got)
}
у меня есть:
[19 188 32 5 146 155 109 191 49 185 4 182 57 86 14 88 51 81 211 117 137 223 250 109 16 95 124 84 98 195 108 96 38 225 52 90 154 209 158 157 123 37 96 122 200 211 171 205 238 70 123 217 33 140 190 195 240 129 171 174 97 109 252 86 48 239 117 79 252 107 191 175 86 134 227 17 50 156 27 230 211 182 182 179 181 155 177 199 224 198 80 90 117 60 233 127 79 51 56 44 177 11 175 153 147 99 11 20 165 88 13 190 82 239 175 119 233 168 54 213 229 60 215 162 200 11 71 38 115 50 63 22 201 124 198 230 16 216 78 113 23 149 57 95 201 82 190 235 189 216 24 10 1 135 24 68 57 22 128 65 222 212 221 36 54 108 79 250 243 69 209 164 168 13 184 239 121 134 23 20 78 199 57 80]
и хочу:
[86 141 65 4 242 139 60 32 2 178 248 226 195 57 55 34 143 125 131 61 236 112 85 170 245 182 175 57 102 101 141 91 44 233 241 151 40 7 248 173 43 147 109 192 2 169 237 58 203 135 251 125 48 109 48 133 88 243 75 241 243 198 84 64 58 26 67 75 114 217 61 7 93 58 131 226 6 206 178 24 101 140 38 228 255 146 145 68 115 89 9 121 49 238 59 237 103 225 11 48 211 50 17 121 185 143 90 22 138 69 146 158 217 46 190 148 254 163 239 42 186 233 101 162 68 45 28 116 80 137 240 218 11 43 13 90 142 125 29 126 183 85 211 63 198 56 56 187 44 255 157 143 242 65 16 156 255 88 118 253 251 158 119 210 244 55 72 135 77 88 23 224 31 239 176 50 214 56 10 204 80 218 189 167]
Подробнее здесь: https://stackoverflow.com/questions/788 ... static-key
Go — Blowfish со статическим ключом ⇐ JAVA
Программисты JAVA общаются здесь
1722800440
Anonymous
У м е н я е с т ь э т о т к о д н а J a v a : < / p > < b r / > B l o w F i s h : < / p > < b r / > < c o d e > p u b l i c c l a s s B l o w f i s h E n g i n e < b r / > { < b r / > p r i v a t e s t a t i c f i n a l i n t [ ] K P = < b r / > { < b r / > 0 x 2 4 3 F 6 A 8 8 , < b r / > 0 x 8 5 A 3 0 8 D 3 , < b r / > 0 x 1 3 1 9 8 A 2 E , < b r / > 0 x 0 3 7 0 7 3 4 4 , < b r / > 0 x A 4 0 9 3 8 2 2 , < b r / > 0 x 2 9 9 F 3 1 D 0 , < b r / > 0 x 0 8 2 E F A 9 8 , < b r / > 0 x E C 4 E 6 C 8 9 , < b r / > 0 x 4 5 2 8 2 1 E 6 , < b r / > 0 x 3 8 D 0 1 3 7 7 , < b r / > 0 x B E 5 4 6 6 C F , < b r / > 0 x 3 4 E 9 0 C 6 C , < b r / > 0 x C 0 A C 2 9 B 7 , < b r / > 0 x C 9 7 C 5 0 D D , < b r / > 0 x 3 F 8 4 D 5 B 5 , < b r / > 0 x B 5 4 7 0 9 1 7 , < b r / > 0 x 9 2 1 6 D 5 D 9 , < b r / > 0 x 8 9 7 9 F B 1 B < b r / > } ; < b r / > p r i v a t e s t a t i c f i n a l i n t [ ] K S 0 = < b r / > { < b r / > 0 x D 1 3 1 0 B A 6 , < b r / > 0 x 9 8 D F B 5 A C , < b r / > 0 x 2 F F D 7 2 D B , < b r / > 0 x D 0 1 A D F B 7 , < b r / > 0 x B 8 E 1 A F E D , < b r / > 0 x 6 A 2 6 7 E 9 6 , < b r / > 0 x B A 7 C 9 0 4 5 , < b r / > 0 x F 1 2 C 7 F 9 9 , < b r / > 0 x 2 4 A 1 9 9 4 7 , < b r / > 0 x B 3 9 1 6 C F 7 , < b r / > 0 x 0 8 0 1 F 2 E 2 , < b r / > 0 x 8 5 8 E F C 1 6 , < b r / > 0 x 6 3 6 9 2 0 D 8 , < b r / > 0 x 7 1 5 7 4 E 6 9 , < b r / > 0 x A 4 5 8 F E A 3 , < b r / > 0 x F 4 9 3 3 D 7 E , < b r / > 0 x 0 D 9 5 7 4 8 F , < b r / > 0 x 7 2 8 E B 6 5 8 , < b r / > 0 x 7 1 8 B C D 5 8 , < b r / > 0 x 8 2 1 5 4 A E E , < b r / > 0 x 7 B 5 4 A 4 1 D , < b r / > 0 x C 2 5 A 5 9 B 5 , < b r / > 0 x 9 C 3 0 D 5 3 9 , < b r / > 0 x 2 A F 2 6 0 1 3 , < b r / > 0 x C 5 D 1 B 0 2 3 , < b r / > 0 x 2 8 6 0 8 5 F 0 , < b r / > 0 x C A 4 1 7 9 1 8 , < b r / > 0 x B 8 D B 3 8 E F , < b r / > 0 x 8 E 7 9 D C B 0 , < b r / > 0 x 6 0 3 A 1 8 0 E , < b r / > 0 x 6 C 9 E 0 E 8 B , < b r / > 0 x B 0 1 E 8 A 3 E , < b r / > 0 x D 7 1 5 7 7 C 1 , < b r / > 0 x B D 3 1 4 B 2 7 , < b r / > 0 x 7 8 A F 2 F D A , < b r / > 0 x 5 5 6 0 5 C 6 0 , < b r / > 0 x E 6 5 5 2 5 F 3 , < b r / > 0 x A A 5 5 A B 9 4 , < b r / > 0 x 5 7 4 8 9 8 6 2 , < b r / > 0 x 6 3 E 8 1 4 4 0 , < b r / > 0 x 5 5 C A 3 9 6 A , < b r / > 0 x 2 A A B 1 0 B 6 , < b r / > 0 x B 4 C C 5 C 3 4 , < b r / > 0 x 1 1 4 1 E 8 C E , < b r / > 0 x A 1 5 4 8 6 A F , < b r / > 0 x 7 C 7 2 E 9 9 3 , < b r / > 0 x B 3 E E 1 4 1 1 , < b r / > 0 x 6 3 6 F B C 2 A , < b r / > 0 x 2 B A 9 C 5 5 D , < b r / > 0 x 7 4 1 8 3 1 F 6 , < b r / > 0 x C E 5 C 3 E 1 6 , < b r / > 0 x 9 B 8 7 9 3 1 E , < b r / > 0 x A F D 6 B A 3 3 , < b r / > 0 x 6 C 2 4 C F 5 C , < b r / > 0 x 7 A 3 2 5 3 8 1 , < b r / > 0 x 2 8 9 5 8 6 7 7 , < b r / > 0 x 3 B 8 F 4 8 9 8 , < b r / > 0 x 6 B 4 B B 9 A F , < b r / > 0 x C 4 B F E 8 1 B , < b r / > 0 x 6 6 2 8 2 1 9 3 , < b r / > 0 x 6 1 D 8 0 9 C C , < b r / > 0 x F B 2 1 A 9 9 1 , < b r / > 0 x 4 8 7 C A C 6 0 , < b r / > 0 x 5 D E C 8 0 3 2 , < b r / > 0 x E F 8 4 5 D 5 D , < b r / > 0 x E 9 8 5 7 5 B 1 , < b r / > 0 x D C 2 6 2 3 0 2 , < b r / > 0 x E B 6 5 1 B 8 8 , < b r / > 0 x 2 3 8 9 3 E 8 1 , < b r / > 0 x D 3 9 6 A C C 5 , < b r / > 0 x 0 F 6 D 6 F F 3 , < b r / > 0 x 8 3 F 4 4 2 3 9 , < b r / > 0 x 2 E 0 B 4 4 8 2 , < b r / > 0 x A 4 8 4 2 0 0 4 , < b r / > 0 x 6 9 C 8 F 0 4 A , < b r / > 0 x 9 E 1 F 9 B 5 E , < b r / > 0 x 2 1 C 6 6 8 4 2 , < b r / > 0 x F 6 E 9 6 C 9 A , < b r / > 0 x 6 7 0 C 9 C 6 1 , < b r / > 0 x A B D 3 8 8 F 0 , < b r / > 0 x 6 A 5 1 A 0 D 2 , < b r / > 0 x D 8 5 4 2 F 6 8 , < b r / > 0 x 9 6 0 F A 7 2 8 , < b r / > 0 x A B 5 1 3 3 A 3 , < b r / > 0 x 6 E E F 0 B 6 C , < b r / > 0 x 1 3 7 A 3 B E 4 , < b r / > 0 x B A 3 B F 0 5 0 , < b r / > 0 x 7 E F B 2 A 9 8 , < b r / > 0 x A 1 F 1 6 5 1 D , < b r / > 0 x 3 9 A F 0 1 7 6 , < b r / > 0 x 6 6 C A 5 9 3 E , < b r / > 0 x 8 2 4 3 0 E 8 8 , < b r / > 0 x 8 C E E 8 6 1 9 , < b r / > 0 x 4 5 6 F 9 F B 4 , < b r / > 0 x 7 D 8 4 A 5 C 3 , < b r / > 0 x 3 B 8 B 5 E B E , < b r / > 0 x E 0 6 F 7 5 D 8 , < b r / > 0 x 8 5 C 1 2 0 7 3 , < b r / > 0 x 4 0 1 A 4 4 9 F , < b r / > 0 x 5 6 C 1 6 A A 6 , < b r / > 0 x 4 E D 3 A A 6 2 , < b r / > 0 x 3 6 3 F 7 7 0 6 , < b r / > 0 x 1 B F E D F 7 2 , < b r / > 0 x 4 2 9 B 0 2 3 D , < b r / > 0 x 3 7 D 0 D 7 2 4 , < b r / > 0 x D 0 0 A 1 2 4 8 , < b r / > 0 x D B 0 F E A D 3 , < b r / > 0 x 4 9 F 1 C 0 9 B , < b r / > 0 x 0 7 5 3 7 2 C 9 , < b r / > 0 x 8 0 9 9 1 B 7 B , < b r / > 0 x 2 5 D 4 7 9 D 8 , < b r / > 0 x F 6 E 8 D E F 7 , < b r / > 0 x E 3 F E 5 0 1 A , < b r / > 0 x B 6 7 9 4 C 3 B , < b r / > 0 x 9 7 6 C E 0 B D , < b r / > 0 x 0 4 C 0 0 6 B A , < b r / > 0 x C 1 A 9 4 F B 6 , < b r / > 0 x 4 0 9 F 6 0 C 4 , < b r / > 0 x 5 E 5 C 9 E C 2 , < b r / > 0 x 1 9 6 A 2 4 6 3 , < b r / > 0 x 6 8 F B 6 F A F , < b r / > 0 x 3 E 6 C 5 3 B 5 , < b r / > 0 x 1 3 3 9 B 2 E B , < b r / > 0 x 3 B 5 2 E C 6 F , < b r / > 0 x 6 D F C 5 1 1 F , < b r / > 0 x 9 B 3 0 9 5 2 C , < b r / > 0 x C C 8 1 4 5 4 4 , < b r / > 0 x A F 5 E B D 0 9 , < b r / > 0 x B E E 3 D 0 0 4 , < b r / > 0 x D E 3 3 4 A F D , < b r / > 0 x 6 6 0 F 2 8 0 7 , < b r / > 0 x 1 9 2 E 4 B B 3 , < b r / > 0 x C 0 C B A 8 5 7 , < b r / > 0 x 4 5 C 8 7 4 0 F , < b r / > 0 x D 2 0 B 5 F 3 9 , < b r / > 0 x B 9 D 3 F B D B , < b r / > 0 x 5 5 7 9 C 0 B D , < b r / > 0 x 1 A 6 0 3 2 0 A , < b r / > 0 x D 6 A 1 0 0 C 6 , < b r / > 0 x 4 0 2 C 7 2 7 9 , < b r / > 0 x 6 7 9 F 2 5 F E , < b r / > 0 x F B 1 F A 3 C C , < b r / > 0 x 8 E A 5 E 9 F 8 , < b r / > 0 x D B 3 2 2 2 F 8 , < b r / > 0 x 3 C 7 5 1 6 D F , < b r / > 0 x F D 6 1 6 B 1 5 , < b r / > 0 x 2 F 5 0 1 E C 8 , < b r / > 0 x A D 0 5 5 2 A B , < b r / > 0 x 3 2 3 D B 5 F A , < b r / > 0 x F D 2 3 8 7 6 0 , < b r / > 0 x 5 3 3 1 7 B 4 8 , < b r / > 0 x 3 E 0 0 D F 8 2 , < b r / > 0 x 9 E 5 C 5 7 B B , < b r / > 0 x C A 6 F 8 C A 0 , < b r / > 0 x 1 A 8 7 5 6 2 E , < b r / > 0 x D F 1 7 6 9 D B , < b r / > 0 x D 5 4 2 A 8 F 6 , < b r / > 0 x 2 8 7 E F F C 3 , < b r / > 0 x A C 6 7 3 2 C 6 , < b r / > 0 x 8 C 4 F 5 5 7 3 , < b r / > 0 x 6 9 5 B 2 7 B 0 , < b r / > 0 x B B C A 5 8 C 8 , < b r / > 0 x E 1 F F A 3 5 D , < b r / > 0 x B 8 F 0 1 1 A 0 , < b r / > 0 x 1 0 F A 3 D 9 8 , < b r / > 0 x F D 2 1 8 3 B 8 , < b r / > 0 x 4 A F C B 5 6 C , < b r / > 0 x 2 D D 1 D 3 5 B , < b r / > 0 x 9 A 5 3 E 4 7 9 , < b r / > 0 x B 6 F 8 4 5 6 5 , < b r / > 0 x D 2 8 E 4 9 B C , < b r / > 0 x 4 B F B 9 7 9 0 , < b r / > 0 x E 1 D D F 2 D A , < b r / > 0 x A 4 C B 7 E 3 3 , < b r / > 0 x 6 2 F B 1 3 4 1 , < b r / > 0 x C E E 4 C 6 E 8 , < b r / > 0 x E F 2 0 C A D A , < b r / > 0 x 3 6 7 7 4 C 0 1 , < b r / > 0 x D 0 7 E 9 E F E , < b r / > 0 x 2 B F 1 1 F B 4 , < b r / > 0 x 9 5 D B D A 4 D , < b r / > 0 x A E 9 0 9 1 9 8 , < b r / > 0 x E A A D 8 E 7 1 , < b r / > 0 x 6 B 9 3 D 5 A 0 , < b r / > 0 x D 0 8 E D 1 D 0 , < b r / > 0 x A F C 7 2 5 E 0 , < b r / > 0 x 8 E 3 C 5 B 2 F , < b r / > 0 x 8 E 7 5 9 4 B 7 , < b r / > 0 x 8 F F 6 E 2 F B , < b r / > 0 x F 2 1 2 2 B 6 4 , < b r / > 0 x 8 8 8 8 B 8 1 2 , < b r / > 0 x 9 0 0 D F 0 1 C , < b r / > 0 x 4 F A D 5 E A 0 , < b r / > 0 x 6 8 8 F C 3 1 C , < b r / > 0 x D 1 C F F 1 9 1 , < b r / > 0 x B 3 A 8 C 1 A D , < b r / > 0 x 2 F 2 F 2 2 1 8 , < b r / > 0 x B E 0 E 1 7 7 7 , < b r / > 0 x E A 7 5 2 D F E , < b r / > 0 x 8 B 0 2 1 F A 1 , < b r / > 0 x E 5 A 0 C C 0 F , < b r / > 0 x B 5 6 F 7 4 E 8 , < b r / > 0 x 1 8 A C F 3 D 6 , < b r / > 0 x C E 8 9 E 2 9 9 , < b r / > 0 x B 4 A 8 4 F E 0 , < b r / > 0 x F D 1 3 E 0 B 7 , < b r / > 0 x 7 C C 4 3 B 8 1 , < b r / > 0 x D 2 A D A 8 D 9 , < b r / > 0 x 1 6 5 F A 2 6 6 , < b r / > 0 x 8 0 9 5 7 7 0 5 , < b r / > 0 x 9 3 C C 7 3 1 4 , < b r / > 0 x 2 1 1 A 1 4 7 7 , < b r / > 0 x E 6 A D 2 0 6 5 , < b r / > 0 x 7 7 B 5 F A 8 6 , < b r / > 0 x C 7 5 4 4 2 F 5 , < b r / > 0 x F B 9 D 3 5 C F , < b r / > 0 x E B C D A F 0 C , < b r / > 0 x 7 B 3 E 8 9 A 0 , < b r / > 0 x D 6 4 1 1 B D 3 , < b r / > 0 x A E 1 E 7 E 4 9 , < b r / > 0 x 0 0 2 5 0 E 2 D , < b r / > 0 x 2 0 7 1 B 3 5 E , < b r / > 0 x 2 2 6 8 0 0 B B , < b r / > 0 x 5 7 B 8 E 0 A F , < b r / > 0 x 2 4 6 4 3 6 9 B , < b r / > 0 x F 0 0 9 B 9 1 E , < b r / > 0 x 5 5 6 3 9 1 1 D , < b r / > 0 x 5 9 D F A 6 A A , < b r / > 0 x 7 8 C 1 4 3 8 9 , < b r / > 0 x D 9 5 A 5 3 7 F , < b r / > 0 x 2 0 7 D 5 B A 2 , < b r / > 0 x 0 2 E 5 B 9 C 5 , < b r / > 0 x 8 3 2 6 0 3 7 6 , < b r / > 0 x 6 2 9 5 C F A 9 , < b r / > 0 x 1 1 C 8 1 9 6 8 , < b r / > 0 x 4 E 7 3 4 A 4 1 , < b r / > 0 x B 3 4 7 2 D C A , < b r / > 0 x 7 B 1 4 A 9 4 A , < b r / > 0 x 1 B 5 1 0 0 5 2 , < b r / > 0 x 9 A 5 3 2 9 1 5 , < b r / > 0 x D 6 0 F 5 7 3 F , < b r / > 0 x B C 9 B C 6 E 4 , < b r / > 0 x 2 B 6 0 A 4 7 6 , < b r / > 0 x 8 1 E 6 7 4 0 0 , < b r / > 0 x 0 8 B A 6 F B 5 , < b r / > 0 x 5 7 1 B E 9 1 F , < b r / > 0 x F 2 9 6 E C 6 B , < b r / > 0 x 2 A 0 D D 9 1 5 , < b r / > 0 x B 6 6 3 6 5 2 1 , < b r / > 0 x E 7 B 9 F 9 B 6 , < b r / > 0 x F F 3 4 0 5 2 E , < b r / > 0 x C 5 8 5 5 6 6 4 , < b r / > 0 x 5 3 B 0 2 D 5 D , < b r / > 0 x A 9 9 F 8 F A 1 , < b r / > 0 x 0 8 B A 4 7 9 9 , < b r / > 0 x 6 E 8 5 0 7 6 A < b r / > } ; < b r / > p r i v a t e s t a t i c f i n a l i n t [ ] K S 1 = < b r / > { < b r / > 0 x 4 B 7 A 7 0 E 9 , < b r / > 0 x B 5 B 3 2 9 4 4 , < b r / > 0 x D B 7 5 0 9 2 E , < b r / > 0 x C 4 1 9 2 6 2 3 , < b r / > 0 x A D 6 E A 6 B 0 , < b r / > 0 x 4 9 A 7 D F 7 D , < b r / > 0 x 9 C E E 6 0 B 8 , < b r / > 0 x 8 F E D B 2 6 6 , < b r / > 0 x E C A A 8 C 7 1 , < b r / > 0 x 6 9 9 A 1 7 F F , < b r / > 0 x 5 6 6 4 5 2 6 C , < b r / > 0 x C 2 B 1 9 E E 1 , < b r / > 0 x 1 9 3 6 0 2 A 5 , < b r / > 0 x 7 5 0 9 4 C 2 9 , < b r / > 0 x A 0 5 9 1 3 4 0 , < b r / > 0 x E 4 1 8 3 A 3 E , < b r / > 0 x 3 F 5 4 9 8 9 A , < b r / > 0 x 5 B 4 2 9 D 6 5 , < b r / > 0 x 6 B 8 F E 4 D 6 , < b r / > 0 x 9 9 F 7 3 F D 6 , < b r / > 0 x A 1 D 2 9 C 0 7 , < b r / > 0 x E F E 8 3 0 F 5 , < b r / > 0 x 4 D 2 D 3 8 E 6 , < b r / > 0 x F 0 2 5 5 D C 1 , < b r / > 0 x 4 C D D 2 0 8 6 , < b r / > 0 x 8 4 7 0 E B 2 6 , < b r / > 0 x 6 3 8 2 E 9 C 6 , < b r / > 0 x 0 2 1 E C C 5 E , < b r / > 0 x 0 9 6 8 6 B 3 F , < b r / > 0 x 3 E B A E F C 9 , < b r / > 0 x 3 C 9 7 1 8 1 4 , < b r / > 0 x 6 B 6 A 7 0 A 1 , < b r / > 0 x 6 8 7 F 3 5 8 4 , < b r / > 0 x 5 2 A 0 E 2 8 6 , < b r / > 0 x B 7 9 C 5 3 0 5 , < b r / > 0 x A A 5 0 0 7 3 7 , < b r / > 0 x 3 E 0 7 8 4 1 C , < b r / > 0 x 7 F D E A E 5 C , < b r / > 0 x 8 E 7 D 4 4 E C , < b r / > 0 x 5 7 1 6 F 2 B 8 , < b r / > 0 x B 0 3 A D A 3 7 , < b r / > 0 x F 0 5 0 0 C 0 D , < b r / > 0 x F 0 1 C 1 F 0 4 , < b r / > 0 x 0 2 0 0 B 3 F F , < b r / > 0 x A E 0 C F 5 1 A , < b r / > 0 x 3 C B 5 7 4 B 2 , < b r / > 0 x 2 5 8 3 7 A 5 8 , < b r / > 0 x D C 0 9 2 1 B D , < b r / > 0 x D 1 9 1 1 3 F 9 , < b r / > 0 x 7 C A 9 2 F F 6 , < b r / > 0 x 9 4 3 2 4 7 7 3 , < b r / > 0 x 2 2 F 5 4 7 0 1 , < b r / > 0 x 3 A E 5 E 5 8 1 , < b r / > 0 x 3 7 C 2 D A D C , < b r / > 0 x C 8 B 5 7 6 3 4 , < b r / > 0 x 9 A F 3 D D A 7 , < b r / > 0 x A 9 4 4 6 1 4 6 , < b r / > 0 x 0 F D 0 0 3 0 E , < b r / > 0 x E C C 8 C 7 3 E , < b r / > 0 x A 4 7 5 1 E 4 1 , < b r / > 0 x E 2 3 8 C D 9 9 , < b r / > 0 x 3 B E A 0 E 2 F , < b r / > 0 x 3 2 8 0 B B A 1 , < b r / > 0 x 1 8 3 E B 3 3 1 , < b r / > 0 x 4 E 5 4 8 B 3 8 , < b r / > 0 x 4 F 6 D B 9 0 8 , < b r / > 0 x 6 F 4 2 0 D 0 3 , < b r / > 0 x F 6 0 A 0 4 B F , < b r / > 0 x 2 C B 8 1 2 9 0 , < b r / > 0 x 2 4 9 7 7 C 7 9 , < b r / > 0 x 5 6 7 9 B 0 7 2 , < b r / > 0 x B C A F 8 9 A F , < b r / > 0 x D E 9 A 7 7 1 F , < b r / > 0 x D 9 9 3 0 8 1 0 , < b r / > 0 x B 3 8 B A E 1 2 , < b r / > 0 x D C C F 3 F 2 E , < b r / > 0 x 5 5 1 2 7 2 1 F , < b r / > 0 x 2 E 6 B 7 1 2 4 , < b r / > 0 x 5 0 1 A D D E 6 , < b r / > 0 x 9 F 8 4 C D 8 7 , < b r / > 0 x 7 A 5 8 4 7 1 8 , < b r / > 0 x 7 4 0 8 D A 1 7 , < b r / > 0 x B C 9 F 9 A B C , < b r / > 0 x E 9 4 B 7 D 8 C , < b r / > 0 x E C 7 A E C 3 A , < b r / > 0 x D B 8 5 1 D F A , < b r / > 0 x 6 3 0 9 4 3 6 6 , < b r / > 0 x C 4 6 4 C 3 D 2 , < b r / > 0 x E F 1 C 1 8 4 7 , < b r / > 0 x 3 2 1 5 D 9 0 8 , < b r / > 0 x D D 4 3 3 B 3 7 , < b r / > 0 x 2 4 C 2 B A 1 6 , < b r / > 0 x 1 2 A 1 4 D 4 3 , < b r / > 0 x 2 A 6 5 C 4 5 1 , < b r / > 0 x 5 0 9 4 0 0 0 2 , < b r / > 0 x 1 3 3 A E 4 D D , < b r / > 0 x 7 1 D F F 8 9 E , < b r / > 0 x 1 0 3 1 4 E 5 5 , < b r / > 0 x 8 1 A C 7 7 D 6 , < b r / > 0 x 5 F 1 1 1 9 9 B , < b r / > 0 x 0 4 3 5 5 6 F 1 , < b r / > 0 x D 7 A 3 C 7 6 B , < b r / > 0 x 3 C 1 1 1 8 3 B , < b r / > 0 x 5 9 2 4 A 5 0 9 , < b r / > 0 x F 2 8 F E 6 E D , < b r / > 0 x 9 7 F 1 F B F A , < b r / > 0 x 9 E B A B F 2 C , < b r / > 0 x 1 E 1 5 3 C 6 E , < b r / > 0 x 8 6 E 3 4 5 7 0 , < b r / > 0 x E A E 9 6 F B 1 , < b r / > 0 x 8 6 0 E 5 E 0 A , < b r / > 0 x 5 A 3 E 2 A B 3 , < b r / > 0 x 7 7 1 F E 7 1 C , < b r / > 0 x 4 E 3 D 0 6 F A , < b r / > 0 x 2 9 6 5 D C B 9 , < b r / > 0 x 9 9 E 7 1 D 0 F , < b r / > 0 x 8 0 3 E 8 9 D 6 , < b r / > 0 x 5 2 6 6 C 8 2 5 , < b r / > 0 x 2 E 4 C C 9 7 8 , < b r / > 0 x 9 C 1 0 B 3 6 A , < b r / > 0 x C 6 1 5 0 E B A , < b r / > 0 x 9 4 E 2 E A 7 8 , < b r / > 0 x A 5 F C 3 C 5 3 , < b r / > 0 x 1 E 0 A 2 D F 4 , < b r / > 0 x F 2 F 7 4 E A 7 , < b r / > 0 x 3 6 1 D 2 B 3 D , < b r / > 0 x 1 9 3 9 2 6 0 F , < b r / > 0 x 1 9 C 2 7 9 6 0 , < b r / > 0 x 5 2 2 3 A 7 0 8 , < b r / > 0 x F 7 1 3 1 2 B 6 , < b r / > 0 x E B A D F E 6 E , < b r / > 0 x E A C 3 1 F 6 6 , < b r / > 0 x E 3 B C 4 5 9 5 , < b r / > 0 x A 6 7 B C 8 8 3 , < b r / > 0 x B 1 7 F 3 7 D 1 , < b r / > 0 x 0 1 8 C F F 2 8 , < b r / > 0 x C 3 3 2 D D E F , < b r / > 0 x B E 6 C 5 A A 5 , < b r / > 0 x 6 5 5 8 2 1 8 5 , < b r / > 0 x 6 8 A B 9 8 0 2 , < b r / > 0 x E E C E A 5 0 F , < b r / > 0 x D B 2 F 9 5 3 B , < b r / > 0 x 2 A E F 7 D A D , < b r / > 0 x 5 B 6 E 2 F 8 4 , < b r / > 0 x 1 5 2 1 B 6 2 8 , < b r / > 0 x 2 9 0 7 6 1 7 0 , < b r / > 0 x E C D D 4 7 7 5 , < b r / > 0 x 6 1 9 F 1 5 1 0 , < b r / > 0 x 1 3 C C A 8 3 0 , < b r / > 0 x E B 6 1 B D 9 6 , < b r / > 0 x 0 3 3 4 F E 1 E , < b r / > 0 x A A 0 3 6 3 C F , < b r / > 0 x B 5 7 3 5 C 9 0 , < b r / > 0 x 4 C 7 0 A 2 3 9 , < b r / > 0 x D 5 9 E 9 E 0 B , < b r / > 0 x C B A A D E 1 4 , < b r / > 0 x E E C C 8 6 B C , < b r / > 0 x 6 0 6 2 2 C A 7 , < b r / > 0 x 9 C A B 5 C A B , < b r / > 0 x B 2 F 3 8 4 6 E , < b r / > 0 x 6 4 8 B 1 E A F , < b r / > 0 x 1 9 B D F 0 C A , < b r / > 0 x A 0 2 3 6 9 B 9 , < b r / > 0 x 6 5 5 A B B 5 0 , < b r / > 0 x 4 0 6 8 5 A 3 2 , < b r / > 0 x 3 C 2 A B 4 B 3 , < b r / > 0 x 3 1 9 E E 9 D 5 , < b r / > 0 x C 0 2 1 B 8 F 7 , < b r / > 0 x 9 B 5 4 0 B 1 9 , < b r / > 0 x 8 7 5 F A 0 9 9 , < b r / > 0 x 9 5 F 7 9 9 7 E , < b r / > 0 x 6 2 3 D 7 D A 8 , < b r / > 0 x F 8 3 7 8 8 9 A , < b r / > 0 x 9 7 E 3 2 D 7 7 , < b r / > 0 x 1 1 E D 9 3 5 F , < b r / > 0 x 1 6 6 8 1 2 8 1 , < b r / > 0 x 0 E 3 5 8 8 2 9 , < b r / > 0 x C 7 E 6 1 F D 6 , < b r / > 0 x 9 6 D E D F A 1 , < b r / > 0 x 7 8 5 8 B A 9 9 , < b r / > 0 x 5 7 F 5 8 4 A 5 , < b r / > 0 x 1 B 2 2 7 2 6 3 , < b r / > 0 x 9 B 8 3 C 3 F F , < b r / > 0 x 1 A C 2 4 6 9 6 , < b r / > 0 x C D B 3 0 A E B , < b r / > 0 x 5 3 2 E 3 0 5 4 , < b r / > 0 x 8 F D 9 4 8 E 4 , < b r / > 0 x 6 D B C 3 1 2 8 , < b r / > 0 x 5 8 E B F 2 E F , < b r / > 0 x 3 4 C 6 F F E A , < b r / > 0 x F E 2 8 E D 6 1 , < b r / > 0 x E E 7 C 3 C 7 3 , < b r / > 0 x 5 D 4 A 1 4 D 9 , < b r / > 0 x E 8 6 4 B 7 E 3 , < b r / > 0 x 4 2 1 0 5 D 1 4 , < b r / > 0 x 2 0 3 E 1 3 E 0 , < b r / > 0 x 4 5 E E E 2 B 6 , < b r / > 0 x A 3 A A A B E A , < b r / > 0 x D B 6 C 4 F 1 5 , < b r / > 0 x F A C B 4 F D 0 , < b r / > 0 x C 7 4 2 F 4 4 2 , < b r / > 0 x E F 6 A B B B 5 , < b r / > 0 x 6 5 4 F 3 B 1 D , < b r / > 0 x 4 1 C D 2 1 0 5 , < b r / > 0 x D 8 1 E 7 9 9 E , < b r / > 0 x 8 6 8 5 4 D C 7 , < b r / > 0 x E 4 4 B 4 7 6 A , < b r / > 0 x 3 D 8 1 6 2 5 0 , < b r / > 0 x C F 6 2 A 1 F 2 , < b r / > 0 x 5 B 8 D 2 6 4 6 , < b r / > 0 x F C 8 8 8 3 A 0 , < b r / > 0 x C 1 C 7 B 6 A 3 , < b r / > 0 x 7 F 1 5 2 4 C 3 , < b r / > 0 x 6 9 C B 7 4 9 2 , < b r / > 0 x 4 7 8 4 8 A 0 B , < b r / > 0 x 5 6 9 2 B 2 8 5 , < b r / > 0 x 0 9 5 B B F 0 0 , < b r / > 0 x A D 1 9 4 8 9 D , < b r / > 0 x 1 4 6 2 B 1 7 4 , < b r / > 0 x 2 3 8 2 0 E 0 0 , < b r / > 0 x 5 8 4 2 8 D 2 A , < b r / > 0 x 0 C 5 5 F 5 E A , < b r / > 0 x 1 D A D F 4 3 E , < b r / > 0 x 2 3 3 F 7 0 6 1 , < b r / > 0 x 3 3 7 2 F 0 9 2 , < b r / > 0 x 8 D 9 3 7 E 4 1 , < b r / > 0 x D 6 5 F E C F 1 , < b r / > 0 x 6 C 2 2 3 B D B , < b r / > 0 x 7 C D E 3 7 5 9 , < b r / > 0 x C B E E 7 4 6 0 , < b r / > 0 x 4 0 8 5 F 2 A 7 , < b r / > 0 x C E 7 7 3 2 6 E , < b r / > 0 x A 6 0 7 8 0 8 4 , < b r / > 0 x 1 9 F 8 5 0 9 E , < b r / > 0 x E 8 E F D 8 5 5 , < b r / > 0 x 6 1 D 9 9 7 3 5 , < b r / > 0 x A 9 6 9 A 7 A A , < b r / > 0 x C 5 0 C 0 6 C 2 , < b r / > 0 x 5 A 0 4 A B F C , < b r / > 0 x 8 0 0 B C A D C , < b r / > 0 x 9 E 4 4 7 A 2 E , < b r / > 0 x C 3 4 5 3 4 8 4 , < b r / > 0 x F D D 5 6 7 0 5 , < b r / > 0 x 0 E 1 E 9 E C 9 , < b r / > 0 x D B 7 3 D B D 3 , < b r / > 0 x 1 0 5 5 8 8 C D , < b r / > 0 x 6 7 5 F D A 7 9 , < b r / > 0 x E 3 6 7 4 3 4 0 , < b r / > 0 x C 5 C 4 3 4 6 5 , < b r / > 0 x 7 1 3 E 3 8 D 8 , < b r / > 0 x 3 D 2 8 F 8 9 E , < b r / > 0 x F 1 6 D F F 2 0 , < b r / > 0 x 1 5 3 E 2 1 E 7 , < b r / > 0 x 8 F B 0 3 D 4 A , < b r / > 0 x E 6 E 3 9 F 2 B , < b r / > 0 x D B 8 3 A D F 7 < b r / > } ; < b r / > p r i v a t e s t a t i c f i n a l i n t [ ] K S 2 = < b r / > { < b r / > 0 x E 9 3 D 5 A 6 8 , < b r / > 0 x 9 4 8 1 4 0 F 7 , < b r / > 0 x F 6 4 C 2 6 1 C , < b r / > 0 x 9 4 6 9 2 9 3 4 , < b r / > 0 x 4 1 1 5 2 0 F 7 , < b r / > 0 x 7 6 0 2 D 4 F 7 , < b r / > 0 x B C F 4 6 B 2 E , < b r / > 0 x D 4 A 2 0 0 6 8 , < b r / > 0 x D 4 0 8 2 4 7 1 , < b r / > 0 x 3 3 2 0 F 4 6 A , < b r / > 0 x 4 3 B 7 D 4 B 7 , < b r / > 0 x 5 0 0 0 6 1 A F , < b r / > 0 x 1 E 3 9 F 6 2 E , < b r / > 0 x 9 7 2 4 4 5 4 6 , < b r / > 0 x 1 4 2 1 4 F 7 4 , < b r / > 0 x B F 8 B 8 8 4 0 , < b r / > 0 x 4 D 9 5 F C 1 D , < b r / > 0 x 9 6 B 5 9 1 A F , < b r / > 0 x 7 0 F 4 D D D 3 , < b r / > 0 x 6 6 A 0 2 F 4 5 , < b r / > 0 x B F B C 0 9 E C , < b r / > 0 x 0 3 B D 9 7 8 5 , < b r / > 0 x 7 F A C 6 D D 0 , < b r / > 0 x 3 1 C B 8 5 0 4 , < b r / > 0 x 9 6 E B 2 7 B 3 , < b r / > 0 x 5 5 F D 3 9 4 1 , < b r / > 0 x D A 2 5 4 7 E 6 , < b r / > 0 x A B C A 0 A 9 A , < b r / > 0 x 2 8 5 0 7 8 2 5 , < b r / > 0 x 5 3 0 4 2 9 F 4 , < b r / > 0 x 0 A 2 C 8 6 D A , < b r / > 0 x E 9 B 6 6 D F B , < b r / > 0 x 6 8 D C 1 4 6 2 , < b r / > 0 x D 7 4 8 6 9 0 0 , < b r / > 0 x 6 8 0 E C 0 A 4 , < b r / > 0 x 2 7 A 1 8 D E E , < b r / > 0 x 4 F 3 F F E A 2 , < b r / > 0 x E 8 8 7 A D 8 C , < b r / > 0 x B 5 8 C E 0 0 6 , < b r / > 0 x 7 A F 4 D 6 B 6 , < b r / > 0 x A A C E 1 E 7 C , < b r / > 0 x D 3 3 7 5 F E C , < b r / > 0 x C E 7 8 A 3 9 9 , < b r / > 0 x 4 0 6 B 2 A 4 2 , < b r / > 0 x 2 0 F E 9 E 3 5 , < b r / > 0 x D 9 F 3 8 5 B 9 , < b r / > 0 x E E 3 9 D 7 A B , < b r / > 0 x 3 B 1 2 4 E 8 B , < b r / > 0 x 1 D C 9 F A F 7 , < b r / > 0 x 4 B 6 D 1 8 5 6 , < b r / > 0 x 2 6 A 3 6 6 3 1 , < b r / > 0 x E A E 3 9 7 B 2 , < b r / > 0 x 3 A 6 E F A 7 4 , < b r / > 0 x D D 5 B 4 3 3 2 , < b r / > 0 x 6 8 4 1 E 7 F 7 , < b r / > 0 x C A 7 8 2 0 F B , < b r / > 0 x F B 0 A F 5 4 E , < b r / > 0 x D 8 F E B 3 9 7 , < b r / > 0 x 4 5 4 0 5 6 A C , < b r / > 0 x B A 4 8 9 5 2 7 , < b r / > 0 x 5 5 5 3 3 A 3 A , < b r / > 0 x 2 0 8 3 8 D 8 7 , < b r / > 0 x F E 6 B A 9 B 7 , < b r / > 0 x D 0 9 6 9 5 4 B , < b r / > 0 x 5 5 A 8 6 7 B C , < b r / > 0 x A 1 1 5 9 A 5 8 , < b r / > 0 x C C A 9 2 9 6 3 , < b r / > 0 x 9 9 E 1 D B 3 3 , < b r / > 0 x A 6 2 A 4 A 5 6 , < b r / > 0 x 3 F 3 1 2 5 F 9 , < b r / > 0 x 5 E F 4 7 E 1 C , < b r / > 0 x 9 0 2 9 3 1 7 C , < b r / > 0 x F D F 8 E 8 0 2 , < b r / > 0 x 0 4 2 7 2 F 7 0 , < b r / > 0 x 8 0 B B 1 5 5 C , < b r / > 0 x 0 5 2 8 2 C E 3 , < b r / > 0 x 9 5 C 1 1 5 4 8 , < b r / > 0 x E 4 C 6 6 D 2 2 , < b r / > 0 x 4 8 C 1 1 3 3 F , < b r / > 0 x C 7 0 F 8 6 D C , < b r / > 0 x 0 7 F 9 C 9 E E , < b r / > 0 x 4 1 0 4 1 F 0 F , < b r / > 0 x 4 0 4 7 7 9 A 4 , < b r / > 0 x 5 D 8 8 6 E 1 7 , < b r / > 0 x 3 2 5 F 5 1 E B , < b r / > 0 x D 5 9 B C 0 D 1 , < b r / > 0 x F 2 B C C 1 8 F , < b r / > 0 x 4 1 1 1 3 5 6 4 , < b r / > 0 x 2 5 7 B 7 8 3 4 , < b r / > 0 x 6 0 2 A 9 C 6 0 , < b r / > 0 x D F F 8 E 8 A 3 , < b r / > 0 x 1 F 6 3 6 C 1 B , < b r / > 0 x 0 E 1 2 B 4 C 2 , < b r / > 0 x 0 2 E 1 3 2 9 E , < b r / > 0 x A F 6 6 4 F D 1 , < b r / > 0 x C A D 1 8 1 1 5 , < b r / > 0 x 6 B 2 3 9 5 E 0 , < b r / > 0 x 3 3 3 E 9 2 E 1 , < b r / > 0 x 3 B 2 4 0 B 6 2 , < b r / > 0 x E E B E B 9 2 2 , < b r / > 0 x 8 5 B 2 A 2 0 E , < b r / > 0 x E 6 B A 0 D 9 9 , < b r / > 0 x D E 7 2 0 C 8 C , < b r / > 0 x 2 D A 2 F 7 2 8 , < b r / > 0 x D 0 1 2 7 8 4 5 , < b r / > 0 x 9 5 B 7 9 4 F D , < b r / > 0 x 6 4 7 D 0 8 6 2 , < b r / > 0 x E 7 C C F 5 F 0 , < b r / > 0 x 5 4 4 9 A 3 6 F , < b r / > 0 x 8 7 7 D 4 8 F A , < b r / > 0 x C 3 9 D F D 2 7 , < b r / > 0 x F 3 3 E 8 D 1 E , < b r / > 0 x 0 A 4 7 6 3 4 1 , < b r / > 0 x 9 9 2 E F F 7 4 , < b r / > 0 x 3 A 6 F 6 E A B , < b r / > 0 x F 4 F 8 F D 3 7 , < b r / > 0 x A 8 1 2 D C 6 0 , < b r / > 0 x A 1 E B D D F 8 , < b r / > 0 x 9 9 1 B E 1 4 C , < b r / > 0 x D B 6 E 6 B 0 D , < b r / > 0 x C 6 7 B 5 5 1 0 , < b r / > 0 x 6 D 6 7 2 C 3 7 , < b r / > 0 x 2 7 6 5 D 4 3 B , < b r / > 0 x D C D 0 E 8 0 4 , < b r / > 0 x F 1 2 9 0 D C 7 , < b r / > 0 x C C 0 0 F F A 3 , < b r / > 0 x B 5 3 9 0 F 9 2 , < b r / > 0 x 6 9 0 F E D 0 B , < b r / > 0 x 6 6 7 B 9 F F B , < b r / > 0 x C E D B 7 D 9 C , < b r / > 0 x A 0 9 1 C F 0 B , < b r / > 0 x D 9 1 5 5 E A 3 , < b r / > 0 x B B 1 3 2 F 8 8 , < b r / > 0 x 5 1 5 B A D 2 4 , < b r / > 0 x 7 B 9 4 7 9 B F , < b r / > 0 x 7 6 3 B D 6 E B , < b r / > 0 x 3 7 3 9 2 E B 3 , < b r / > 0 x C C 1 1 5 9 7 9 , < b r / > 0 x 8 0 2 6 E 2 9 7 , < b r / > 0 x F 4 2 E 3 1 2 D , < b r / > 0 x 6 8 4 2 A D A 7 , < b r / > 0 x C 6 6 A 2 B 3 B , < b r / > 0 x 1 2 7 5 4 C C C , < b r / > 0 x 7 8 2 E F 1 1 C , < b r / > 0 x 6 A 1 2 4 2 3 7 , < b r / > 0 x B 7 9 2 5 1 E 7 , < b r / > 0 x 0 6 A 1 B B E 6 , < b r / > 0 x 4 B F B 6 3 5 0 , < b r / > 0 x 1 A 6 B 1 0 1 8 , < b r / > 0 x 1 1 C A E D F A , < b r / > 0 x 3 D 2 5 B D D 8 , < b r / > 0 x E 2 E 1 C 3 C 9 , < b r / > 0 x 4 4 4 2 1 6 5 9 , < b r / > 0 x 0 A 1 2 1 3 8 6 , < b r / > 0 x D 9 0 C E C 6 E , < b r / > 0 x D 5 A B E A 2 A , < b r / > 0 x 6 4 A F 6 7 4 E , < b r / > 0 x D A 8 6 A 8 5 F , < b r / > 0 x B E B F E 9 8 8 , < b r / > 0 x 6 4 E 4 C 3 F E , < b r / > 0 x 9 D B C 8 0 5 7 , < b r / > 0 x F 0 F 7 C 0 8 6 , < b r / > 0 x 6 0 7 8 7 B F 8 , < b r / > 0 x 6 0 0 3 6 0 4 D , < b r / > 0 x D 1 F D 8 3 4 6 , < b r / > 0 x F 6 3 8 1 F B 0 , < b r / > 0 x 7 7 4 5 A E 0 4 , < b r / > 0 x D 7 3 6 F C C C , < b r / > 0 x 8 3 4 2 6 B 3 3 , < b r / > 0 x F 0 1 E A B 7 1 , < b r / > 0 x B 0 8 0 4 1 8 7 , < b r / > 0 x 3 C 0 0 5 E 5 F , < b r / > 0 x 7 7 A 0 5 7 B E , < b r / > 0 x B D E 8 A E 2 4 , < b r / > 0 x 5 5 4 6 4 2 9 9 , < b r / > 0 x B F 5 8 2 E 6 1 , < b r / > 0 x 4 E 5 8 F 4 8 F , < b r / > 0 x F 2 D D F D A 2 , < b r / > 0 x F 4 7 4 E F 3 8 , < b r / > 0 x 8 7 8 9 B D C 2 , < b r / > 0 x 5 3 6 6 F 9 C 3 , < b r / > 0 x C 8 B 3 8 E 7 4 , < b r / > 0 x B 4 7 5 F 2 5 5 , < b r / > 0 x 4 6 F C D 9 B 9 , < b r / > 0 x 7 A E B 2 6 6 1 , < b r / > 0 x 8 B 1 D D F 8 4 , < b r / > 0 x 8 4 6 A 0 E 7 9 , < b r / > 0 x 9 1 5 F 9 5 E 2 , < b r / > 0 x 4 6 6 E 5 9 8 E , < b r / > 0 x 2 0 B 4 5 7 7 0 , < b r / > 0 x 8 C D 5 5 5 9 1 , < b r / > 0 x C 9 0 2 D E 4 C , < b r / > 0 x B 9 0 B A C E 1 , < b r / > 0 x B B 8 2 0 5 D 0 , < b r / > 0 x 1 1 A 8 6 2 4 8 , < b r / > 0 x 7 5 7 4 A 9 9 E , < b r / > 0 x B 7 7 F 1 9 B 6 , < b r / > 0 x E 0 A 9 D C 0 9 , < b r / > 0 x 6 6 2 D 0 9 A 1 , < b r / > 0 x C 4 3 2 4 6 3 3 , < b r / > 0 x E 8 5 A 1 F 0 2 , < b r / > 0 x 0 9 F 0 B E 8 C , < b r / > 0 x 4 A 9 9 A 0 2 5 , < b r / > 0 x 1 D 6 E F E 1 0 , < b r / > 0 x 1 A B 9 3 D 1 D , < b r / > 0 x 0 B A 5 A 4 D F , < b r / > 0 x A 1 8 6 F 2 0 F , < b r / > 0 x 2 8 6 8 F 1 6 9 , < b r / > 0 x D C B 7 D A 8 3 , < b r / > 0 x 5 7 3 9 0 6 F E , < b r / > 0 x A 1 E 2 C E 9 B , < b r / > 0 x 4 F C D 7 F 5 2 , < b r / > 0 x 5 0 1 1 5 E 0 1 , < b r / > 0 x A 7 0 6 8 3 F A , < b r / > 0 x A 0 0 2 B 5 C 4 , < b r / > 0 x 0 D E 6 D 0 2 7 , < b r / > 0 x 9 A F 8 8 C 2 7 , < b r / > 0 x 7 7 3 F 8 6 4 1 , < b r / > 0 x C 3 6 0 4 C 0 6 , < b r / > 0 x 6 1 A 8 0 6 B 5 , < b r / > 0 x F 0 1 7 7 A 2 8 , < b r / > 0 x C 0 F 5 8 6 E 0 , < b r / > 0 x 0 0 6 0 5 8 A A , < b r / > 0 x 3 0 D C 7 D 6 2 , < b r / > 0 x 1 1 E 6 9 E D 7 , < b r / > 0 x 2 3 3 8 E A 6 3 , < b r / > 0 x 5 3 C 2 D D 9 4 , < b r / > 0 x C 2 C 2 1 6 3 4 , < b r / > 0 x B B C B E E 5 6 , < b r / > 0 x 9 0 B C B 6 D E , < b r / > 0 x E B F C 7 D A 1 , < b r / > 0 x C E 5 9 1 D 7 6 , < b r / > 0 x 6 F 0 5 E 4 0 9 , < b r / > 0 x 4 B 7 C 0 1 8 8 , < b r / > 0 x 3 9 7 2 0 A 3 D , < b r / > 0 x 7 C 9 2 7 C 2 4 , < b r / > 0 x 8 6 E 3 7 2 5 F , < b r / > 0 x 7 2 4 D 9 D B 9 , < b r / > 0 x 1 A C 1 5 B B 4 , < b r / > 0 x D 3 9 E B 8 F C , < b r / > 0 x E D 5 4 5 5 7 8 , < b r / > 0 x 0 8 F C A 5 B 5 , < b r / > 0 x D 8 3 D 7 C D 3 , < b r / > 0 x 4 D A D 0 F C 4 , < b r / > 0 x 1 E 5 0 E F 5 E , < b r / > 0 x B 1 6 1 E 6 F 8 , < b r / > 0 x A 2 8 5 1 4 D 9 , < b r / > 0 x 6 C 5 1 1 3 3 C , < b r / > 0 x 6 F D 5 C 7 E 7 , < b r / > 0 x 5 6 E 1 4 E C 4 , < b r / > 0 x 3 6 2 A B F C E , < b r / > 0 x D D C 6 C 8 3 7 , < b r / > 0 x D 7 9 A 3 2 3 4 , < b r / > 0 x 9 2 6 3 8 2 1 2 , < b r / > 0 x 6 7 0 E F A 8 E , < b r / > 0 x 4 0 6 0 0 0 E 0 < b r / > } ; < b r / > p r i v a t e s t a t i c f i n a l i n t [ ] K S 3 = < b r / > { < b r / > 0 x 3 A 3 9 C E 3 7 , < b r / > 0 x D 3 F A F 5 C F , < b r / > 0 x A B C 2 7 7 3 7 , < b r / > 0 x 5 A C 5 2 D 1 B , < b r / > 0 x 5 C B 0 6 7 9 E , < b r / > 0 x 4 F A 3 3 7 4 2 , < b r / > 0 x D 3 8 2 2 7 4 0 , < b r / > 0 x 9 9 B C 9 B B E , < b r / > 0 x D 5 1 1 8 E 9 D , < b r / > 0 x B F 0 F 7 3 1 5 , < b r / > 0 x D 6 2 D 1 C 7 E , < b r / > 0 x C 7 0 0 C 4 7 B , < b r / > 0 x B 7 8 C 1 B 6 B , < b r / > 0 x 2 1 A 1 9 0 4 5 , < b r / > 0 x B 2 6 E B 1 B E , < b r / > 0 x 6 A 3 6 6 E B 4 , < b r / > 0 x 5 7 4 8 A B 2 F , < b r / > 0 x B C 9 4 6 E 7 9 , < b r / > 0 x C 6 A 3 7 6 D 2 , < b r / > 0 x 6 5 4 9 C 2 C 8 , < b r / > 0 x 5 3 0 F F 8 E E , < b r / > 0 x 4 6 8 D D E 7 D , < b r / > 0 x D 5 7 3 0 A 1 D , < b r / > 0 x 4 C D 0 4 D C 6 , < b r / > 0 x 2 9 3 9 B B D B , < b r / > 0 x A 9 B A 4 6 5 0 , < b r / > 0 x A C 9 5 2 6 E 8 , < b r / > 0 x B E 5 E E 3 0 4 , < b r / > 0 x A 1 F A D 5 F 0 , < b r / > 0 x 6 A 2 D 5 1 9 A , < b r / > 0 x 6 3 E F 8 C E 2 , < b r / > 0 x 9 A 8 6 E E 2 2 , < b r / > 0 x C 0 8 9 C 2 B 8 , < b r / > 0 x 4 3 2 4 2 E F 6 , < b r / > 0 x A 5 1 E 0 3 A A , < b r / > 0 x 9 C F 2 D 0 A 4 , < b r / > 0 x 8 3 C 0 6 1 B A , < b r / > 0 x 9 B E 9 6 A 4 D , < b r / > 0 x 8 F E 5 1 5 5 0 , < b r / > 0 x B A 6 4 5 B D 6 , < b r / > 0 x 2 8 2 6 A 2 F 9 , < b r / > 0 x A 7 3 A 3 A E 1 , < b r / > 0 x 4 B A 9 9 5 8 6 , < b r / > 0 x E F 5 5 6 2 E 9 , < b r / > 0 x C 7 2 F E F D 3 , < b r / > 0 x F 7 5 2 F 7 D A , < b r / > 0 x 3 F 0 4 6 F 6 9 , < b r / > 0 x 7 7 F A 0 A 5 9 , < b r / > 0 x 8 0 E 4 A 9 1 5 , < b r / > 0 x 8 7 B 0 8 6 0 1 , < b r / > 0 x 9 B 0 9 E 6 A D , < b r / > 0 x 3 B 3 E E 5 9 3 , < b r / > 0 x E 9 9 0 F D 5 A , < b r / > 0 x 9 E 3 4 D 7 9 7 , < b r / > 0 x 2 C F 0 B 7 D 9 , < b r / > 0 x 0 2 2 B 8 B 5 1 , < b r / > 0 x 9 6 D 5 A C 3 A , < b r / > 0 x 0 1 7 D A 6 7 D , < b r / > 0 x D 1 C F 3 E D 6 , < b r / > 0 x 7 C 7 D 2 D 2 8 , < b r / > 0 x 1 F 9 F 2 5 C F , < b r / > 0 x A D F 2 B 8 9 B , < b r / > 0 x 5 A D 6 B 4 7 2 , < b r / > 0 x 5 A 8 8 F 5 4 C , < b r / > 0 x E 0 2 9 A C 7 1 , < b r / > 0xE019A5E6,
0x47B0ACFD,
0xED93FA9B,
0xE8D3C48D,
0x283B57CC,
0xF8D56629,
0x79132E28,
0x785F0191,
0xED756055,
0xF7960E44,
0xE3D35E8C,
0x15056DD4,
0x88F46DBA,
0x03A16125,
0x0564F0BD,
0xC3EB9E15,
0x3C9057A2,
0x97271AEC,
0xA93A072A,
0x1B3F6D9B,
0x1E6321F5,
0xF59C66FB,
0x26DCF319,
0x7533D928,
0xB155FDF5,
0x03563482,
0x8ABA3CBB,
0x28517711,
0xC20AD9F8,
0xABCC5167,
0xCCAD925F,
0x4DE81751,
0x3830DC8E,
0x379D5862,
0x9320F991,
0xEA7A90C2,
0xFB3E7BCE,
0x5121CE64,
0x774FBE32,
0xA8B6E37E,
0xC3293D46,
0x48DE5369,
0x6413E680,
0xA2AE0810,
0xDD6DB224,
0x69852DFD,
0x09072166,
0xB39A460A,
0x6445C0DD,
0x586CDECF,
0x1C20C8AE,
0x5BBEF7DD,
0x1B588D40,
0xCCD2017F,
0x6BB4E3BB,
0xDDA26A7E,
0x3A59FF45,
0x3E350A44,
0xBCB4CDD5,
0x72EACEA8,
0xFA6484BB,
0x8D6612AE,
0xBF3C6F47,
0xD29BE463,
0x542F5D9E,
0xAEC2771B,
0xF64E6370,
0x740E0D8D,
0xE75B1357,
0xF8721671,
0xAF537D5D,
0x4040CB08,
0x4EB4E2CC,
0x34D2466A,
0x0115AF84,
0xE1B00428,
0x95983A1D,
0x06B89FB4,
0xCE6EA048,
0x6F3F3B82,
0x3520AB82,
0x011A1D4B,
0x277227F8,
0x611560B1,
0xE7933FDC,
0xBB3A792B,
0x344525BD,
0xA08839E1,
0x51CE794B,
0x2F32C9B7,
0xA01FBAC9,
0xE01CC87E,
0xBCC7D1F6,
0xCF0111C3,
0xA1E8AAC7,
0x1A908749,
0xD44FBD9A,
0xD0DADECB,
0xD50ADA38,
0x0339C32A,
0xC6913667,
0x8DF9317C,
0xE0B12B4F,
0xF79E59B7,
0x43F5BB3A,
0xF2D519FF,
0x27D9459C,
0xBF97222C,
0x15E6FC2A,
0x0F91FC71,
0x9B941525,
0xFAE59361,
0xCEB69CEB,
0xC2A86459,
0x12BAA8D1,
0xB6C1075E,
0xE3056A0C,
0x10D25065,
0xCB03A442,
0xE0EC6E0E,
0x1698DB3B,
0x4C98A0BE,
0x3278E964,
0x9F1F9532,
0xE0D392DF,
0xD3A0342B,
0x8971F21E,
0x1B0A7441,
0x4BA3348C,
0xC5BE7120,
0xC37632D8,
0xDF359F8D,
0x9B992F2E,
0xE60B6F47,
0x0FE3F11D,
0xE54CDA54,
0x1EDAD891,
0xCE6279CF,
0xCD3E7E6F,
0x1618B166,
0xFD2C1D05,
0x848FD2C5,
0xF6FB2299,
0xF523F357,
0xA6327623,
0x93A83531,
0x56CCCD02,
0xACF08162,
0x5A75EBB5,
0x6E163697,
0x88D273CC,
0xDE966292,
0x81B949D0,
0x4C50901B,
0x71C65614,
0xE6C6C7BD,
0x327A140A,
0x45E1D006,
0xC3F27B9A,
0xC9AA53FD,
0x62A80F00,
0xBB25BFE2,
0x35BDD2F6,
0x71126905,
0xB2040222,
0xB6CBCF7C,
0xCD769C2B,
0x53113EC0,
0x1640E3D3,
0x38ABBD60,
0x2547ADF0,
0xBA38209C,
0xF746CE76,
0x77AFA1C5,
0x20756060,
0x85CBFE4E,
0x8AE88DD8,
0x7AAAF9B0,
0x4CF9AA7E,
0x1948C25C,
0x02FB8A8C,
0x01C36AE4,
0xD6EBE1F9,
0x90D4F869,
0xA65CDEA0,
0x3F09252D,
0xC208E69F,
0xB74E6132,
0xCE77E25B,
0x578FDFE3,
0x3AC372E6
};
// ====================================
// Useful constants
// ====================================
private static final int ROUNDS = 16;
private static final int BLOCK_SIZE = 8; // bytes = 64 bits
private static final int SBOX_SK = 256;
private static final int P_SZ = ROUNDS + 2;
private final int[] S0;
private final int[] S1;
private final int[] S2;
private final int[] S3;
private final int[] P;
private boolean encrypting = false;
private byte[] workingKey = null;
public BlowfishEngine()
{
S0 = new int[SBOX_SK];
S1 = new int[SBOX_SK];
S2 = new int[SBOX_SK];
S3 = new int[SBOX_SK];
P = new int[P_SZ];
}
public final int processBlock(byte[] in, int inOff, byte[] out, int outOff) throws IOException
{
if (workingKey == null)
throw new IllegalStateException("Blowfish not initialised");
if ((inOff + BLOCK_SIZE) > in.length)
throw new IOException("input buffer too short");
if ((outOff + BLOCK_SIZE) > out.length)
throw new IOException("output buffer too short");
if (encrypting)
encryptBlock(in, inOff, out, outOff);
else
decryptBlock(in, inOff, out, outOff);
return BLOCK_SIZE;
}
// ==================================
// Private Implementation
// ==================================
private int func(int x)
{
return (((S0[(x >>> 24)] + S1[(x >>> 16) & 0xff]) ^ S2[(x >>> 8) & 0xff]) + S3[x & 0xff]);
}
/**
* Encrypt the given input starting at the given offset and place the result in the provided buffer starting at the given offset. The input will be an exact multiple of our blocksize.
* @param src
* @param srcIndex
* @param dst
* @param dstIndex
*/
private void encryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex)
{
int xl = bytesTo32bits(src, srcIndex);
int xr = bytesTo32bits(src, srcIndex + 4);
xl ^= P[0];
for (int i = 1; i < ROUNDS; i += 2)
{
xr ^= func(xl) ^ P[i];
xl ^= func(xr) ^ P[i + 1];
}
xr ^= P[ROUNDS + 1];
bits32ToBytes(xr, dst, dstIndex);
bits32ToBytes(xl, dst, dstIndex + 4);
}
/**
* Decrypt the given input starting at the given offset and place the result in the provided buffer starting at the given offset. The input will be an exact multiple of our blocksize.
* @param src
* @param srcIndex
* @param dst
* @param dstIndex
*/
private void decryptBlock(byte[] src, int srcIndex, byte[] dst, int dstIndex)
{
int xl = bytesTo32bits(src, srcIndex);
int xr = bytesTo32bits(src, srcIndex + 4);
xl ^= P[ROUNDS + 1];
for (int i = ROUNDS; i > 0; i -= 2)
{
xr ^= func(xl) ^ P[i];
xl ^= func(xr) ^ P[i - 1];
}
xr ^= P[0];
bits32ToBytes(xr, dst, dstIndex);
bits32ToBytes(xl, dst, dstIndex + 4);
}
private static int bytesTo32bits(byte[] b, int i)
{
return ((b[i + 3] & 0xff) > 16);
b[offset + 3] = (byte) (in >> 24);
}
}
где это статический ключ, используемый в Java:
private static final byte[] STATIC_BLOWFISH_KEY =
{
(byte) 0x6b,
(byte) 0x60,
(byte) 0xcb,
(byte) 0x5b,
(byte) 0x82,
(byte) 0xce,
(byte) 0x90,
(byte) 0xb1,
(byte) 0xcc,
(byte) 0x2b,
(byte) 0x6c,
(byte) 0x55,
(byte) 0x6c,
(byte) 0x6c,
(byte) 0x6c,
(byte) 0x6c
};
а это вызов перед применением Blowfish, вот входные данные:
[b]raw: [0, 0, 0, -93 , -116, -52, 14, 122, 118, -45, -96, 101, -48, -12, -96, 32, -22, 63, 32, 113, 48, 41, -35, 123, -35, 65, -84, 125, 118, -59, 23, 99, 125, 100, 83, 53, -49, -25, 31, 44, 72, -108, -100, 65, 103, - 18, 46, -104, 70, -70, -87, -10, -113, -22, 80, -33, -18, 119, 62, -17, 32, -57, 77, 45, 28, -30, -127, 73, -94, -26, -68, 75, 20, 100, -104, 52, 42, -107, 24, -3, -55, -95, -41, -119, -78, 93, -126, 60, 84, 85, -15, -98, -117, 95, 57, 41, -64, 48, -71, -53, 24, -64, 0, -58, 69, 72, -119, -86, -91, -121, -64, 26, 70, 19, -104, 44, 28, -12, -70, -45, -27, -11, 32, - 32, -20, 100, 74, 57, -60, 97, -117, -74, -28, 5, -4, -66, -72, 114, -2, 102, 76, -92, -107 , 102, 76, -92, -107, 102, 76, -92, -107, 102, 76, -92, -107, -86, -52, -84, -101, 123, -30, -5 , -36, 37, -35, 31, -50, 44, 123, -93, -94, -6, -24, 68, -68, -6, -24, 68, -68, -6, - 24, 68, 0, 0, 0, 0][/b]
[b]размер: 184[/b]
[b]смещение: 2[/b]
public int encrypt(byte[] raw, final int offset, int size) throws IOException
{
// another desnecessary code
_staticCrypt.crypt(raw, offset, size);
}
public void crypt(byte[] raw, final int offset, final int size) throws IOException
{
int count = size / 8;
byte[] result = new byte[size];
for (int i = 0; i < count; i++)
_crypt.processBlock(raw, offset + i * 8, result, i * 8);
System.arraycopy(result, 0, raw, offset, size);
}
Я пытаюсь сделать то же самое в Go, но результат отличается от ожидаемого:
func TestBlowFish(t *testing.T) {
const blowFishPadding = 8
var staticBlowfishKey = []byte{
0x6b, 0x60, 0xcb, 0x5b, 0x82, 0xce, 0x90, 0xb1,
0xcc, 0x2b, 0x6c, 0x55, 0x6c, 0x6c, 0x6c, 0x6c,
}
want := []byte{86, 141, 65, 4, 242, 139, 60, 32, 2, 178, 248, 226, 195, 57, 55, 34, 143, 125, 131, 61, 236, 112, 85, 170, 245, 182, 175, 57, 102, 101, 141, 91, 44, 233, 241, 151, 40, 7, 248, 173, 43, 147, 109, 192, 2, 169, 237, 58, 203, 135, 251, 125, 48, 109, 48, 133, 88, 243, 75, 241, 243, 198, 84, 64, 58, 26, 67, 75, 114, 217, 61, 7, 93, 58, 131, 226, 6, 206, 178, 24, 101, 140, 38, 228, 255, 146, 145, 68, 115, 89, 9, 121, 49, 238, 59, 237, 103, 225, 11, 48, 211, 50, 17, 121, 185, 143, 90, 22, 138, 69, 146, 158, 217, 46, 190, 148, 254, 163, 239, 42, 186, 233, 101, 162, 68, 45, 28, 116, 80, 137, 240, 218, 11, 43, 13, 90, 142, 125, 29, 126, 183, 85, 211, 63, 198, 56, 56, 187, 44, 255, 157, 143, 242, 65, 16, 156, 255, 88, 118, 253, 251, 158, 119, 210, 244, 55, 72, 135, 77, 88, 23, 224, 31, 239, 176, 50, 214, 56, 10, 204, 80, 218, 189, 167}
got := []byte{0, 163, 140, 204, 14, 122, 118, 211, 160, 101, 208, 244, 160, 32, 234, 63, 32, 113, 48, 41, 221, 123, 221, 65, 172, 125, 118, 197, 23, 99, 125, 100, 83, 53, 207, 231, 31, 44, 72, 148, 156, 65, 103, 238, 46, 152, 70, 186, 169, 246, 143, 234, 80, 223, 238, 119, 62, 239, 32, 199, 77, 45, 28, 226, 129, 73, 162, 230, 188, 75, 20, 100, 152, 52, 42, 149, 24, 253, 201, 161, 215, 137, 178, 93, 130, 60, 84, 85, 241, 158, 139, 95, 57, 41, 192, 48, 185, 203, 24, 192, 0, 198, 69, 72, 137, 170, 165, 135, 192, 26, 70, 19, 152, 44, 28, 244, 186, 211, 229, 245, 32, 224, 236, 100, 74, 57, 196, 97, 139, 182, 228, 5, 252, 190, 184, 114, 254, 102, 76, 164, 149, 102, 76, 164, 149, 102, 76, 164, 149, 102, 76, 164, 149, 170, 204, 172, 155, 123, 226, 251, 220, 37, 221, 31, 206, 44, 123, 163, 162, 250, 232, 68, 188, 250, 232, 68, 188, 250, 232, 68}
dataSize := len(got)
bPadding := blowFishPadding - (dataSize % blowFishPadding)
padding := bytes.Repeat([]byte{byte(0)}, bPadding)
got = append(got, padding...)
block, err := blowfish.NewCipher(staticBlowfishKey)
if err != nil {
require.NoError(t, err)
}
mode := cipher.NewCBCEncrypter(block, make([]byte, blowfish.BlockSize))
mode.CryptBlocks(got, got)
require.Equal(t, want, got)
}
у меня есть:
[19 188 32 5 146 155 109 191 49 185 4 182 57 86 14 88 51 81 211 117 137 223 250 109 16 95 124 84 98 195 108 96 38 225 52 90 154 209 158 157 123 37 96 122 200 211 171 205 238 70 123 217 33 140 190 195 240 129 171 174 97 109 252 86 48 239 117 79 252 107 191 175 86 134 227 17 50 156 27 230 211 182 182 179 181 155 177 199 224 198 80 90 117 60 233 127 79 51 56 44 177 11 175 153 147 99 11 20 165 88 13 190 82 239 175 119 233 168 54 213 229 60 215 162 200 11 71 38 115 50 63 22 201 124 198 230 16 216 78 113 23 149 57 95 201 82 190 235 189 216 24 10 1 135 24 68 57 22 128 65 222 212 221 36 54 108 79 250 243 69 209 164 168 13 184 239 121 134 23 20 78 199 57 80]
и хочу:
[86 141 65 4 242 139 60 32 2 178 248 226 195 57 55 34 143 125 131 61 236 112 85 170 245 182 175 57 102 101 141 91 44 233 241 151 40 7 248 173 43 147 109 192 2 169 237 58 203 135 251 125 48 109 48 133 88 243 75 241 243 198 84 64 58 26 67 75 114 217 61 7 93 58 131 226 6 206 178 24 101 140 38 228 255 146 145 68 115 89 9 121 49 238 59 237 103 225 11 48 211 50 17 121 185 143 90 22 138 69 146 158 217 46 190 148 254 163 239 42 186 233 101 162 68 45 28 116 80 137 240 218 11 43 13 90 142 125 29 126 183 85 211 63 198 56 56 187 44 255 157 143 242 65 16 156 255 88 118 253 251 158 119 210 244 55 72 135 77 88 23 224 31 239 176 50 214 56 10 204 80 218 189 167]
Подробнее здесь: [url]https://stackoverflow.com/questions/78831973/go-blowfish-with-a-static-key[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия