Last active
December 14, 2022 19:05
-
-
Save connornishijima/f24c8669024d5ba860d1e4f27ce21146 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #include "digitalwritefast.h" | |
| const uint8_t PROGMEM score[] = {0x90,83,0x91,77,0x92,66,0x93,72,1,212,0x80,0x81,0x82,0x83,0,31,0x90,82,0x91,65,0x92,71,0x93,76,1,212,0x80,0x81,0x82,0x83,0,31,0x90,81,0x91,64,0x92,75,0x93,70,1,212,0x80,0x81,0x82,0x83,0,31,0x90,74,0x91,63,0x92,69,0x93,80,1,212,0x81,0x82,0x83,0,31,0x91,79,0x92,73,0x93,62,0x94,68,0x80,1,25,0x81,0x82,0x83,0x84,0,52,0x90,78,0x91,72,0x92,67,0x93,61,1,56,0x80,0x81,0x82,0x83,0,20,0x90,60,0x91,71,0x92,66,0x93,77,10,242,0x82,0,31,0x80,0x81,0x83,1,244,0x90,67,0x91,62,0,68,0x80,0x81,0,34,0x90,67,0x91,62,0,68,0x80,0x81,0,34,0x90,68,0x91,63,0,68,0x80,0x81,0,34,0x90,67,0x91,62,0,68,0x80,0x81,0,34,0x90,67,0x91,62,0,68,0x80,0x81,0,34,0x90,63,0x91,68,0,68,0x80,0x81,0,34,0x90,67,0x91,62,0,68,0x80,0x81,0,34,0x90,67,0x91,62,0,68,0x80,0x81,0,34,0x90,68,0x91,63,0,68,0x80,0x81,0,34,0x90,67,0x91,62,0,68,0x80,0x81,0,34,0x90,62,0x91,67,0,68,0x80,0x81,0,34,0x90,68,0x91,63,0,68,0x80,0x81,0,34,0x90,62,0x91,67,0,68,0x80,0x81,0,34,0x90,63,0x91,68,0,68,0x80,0x81,0,34,0x90,67,0x91,62,0,68,0x80,0x81,0,34,0x90,65,0x91,70,0,68,0x80,0x81,0,34,0x90,164,0x91,170,0x92,67,0x93,62,0,51,0x80,0x81,0,17,0x82,0x83,0,34,0x92,62,0x93,67,0,68,0x82,0x83,0,34,0x92,63,0x93,68,0,68,0x82,0x83,0,34,0x92,62,0x93,67,0,68,0x82,0x83,0,34,0x90,170,0x92,62,0x93,67,0,51,0x80,0,17,0x82,0x83,0,34,0x92,63,0x93,68,0,68,0x82,0x83,0,34,0x92,67,0x93,62,0,68,0x82,0x83,0,34,0x92,62,0x93,67,0,68,0x82,0x83,0,34,0x90,168,0x92,63,0x93,68,0,51,0x80,0,17,0x82,0x83,0,34,0x92,62,0x93,67,0,68,0x82,0x83,0,34,0x92,62,0x93,67,0,68,0x82,0x83,0,34,0x92,68,0x93,63,0,68,0x82,0x83,0,34,0x90,170,0x92,67,0x93,62,0,51,0x80,0,17,0x82,0x83,0,34,0x92,68,0x93,63,0,68,0x82,0x83,0,34,0x92,62,0x93,67,0,68,0x82,0x83,0,34,0x90,164,0x92,70,0x93,65,0,51,0x80,0,17,0x82,0x83,0,34,0x90,164,0x91,170,0x92,67,0x93,62,0,51,0x80,0x81,0,17,0x82,0x83,0,34,0x92,62,0x93,67,0,68,0x82,0x83,0,34,0x92,68,0x93,63,0,68,0x82,0x83,0,34,0x92,67,0x93,62,0,68,0x82,0x83,0,34,0x90,170,0x92,67,0x93,62,0,51,0x80,0,17,0x82,0x83,0,34,0x92,68,0x93,63,0,68,0x82,0x83,0,34,0x90,43,0x92,62,0x93,67,0,68,0x82,0x83,0,34,0x92,67,0x93,62,0,68,0x82,0x83,0,34,0x91,168,0x92,63,0x93,68,0,51,0x81,0,17,0x82,0x83,0,34,0x92,67,0x93,62,0,68,0x82,0x83,0,34,0x92,67,0x93,62,0,68,0x82,0x83,0,34,0x92,63,0x93,68,0,68,0x82,0x83,0,34,0x91,170,0x92,67,0x93,62,0,51,0x81,0,17,0x82,0x83,0,34,0x92,63,0x93,68,0,68,0x82,0x83,0,34,0x92,62,0x93,67,0,68,0x82,0x83,0,34,0x91,164,0x92,70,0x93,65,0,51,0x81,0,17,0x82,0x83,0,34,0x91,164,0x92,170,0x93,67,0x94,62,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x93,63,0x94,68,0,68,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x93,68,0x94,63,0,68,0x83,0x84,0,34,0x93,67,0x94,62,0,68,0x83,0x84,0,34,0x93,67,0x94,62,0,68,0x83,0x84,0,34,0x91,168,0x93,68,0x94,63,0,51,0x81,0,17,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x93,67,0x94,62,0,68,0x83,0x84,0,34,0x93,68,0x94,63,0,68,0x83,0x84,0,34,0x91,170,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x93,68,0x94,63,0,68,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,8,0x80,0,25,0x93,65,0x90,42,0x94,70,0,68,0x80,0x83,0x84,0,34,0x90,46,0x91,164,0x92,170,0x93,62,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x93,67,0x94,62,0,68,0x83,0x84,0,34,0x93,68,0x94,63,0,68,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x93,63,0x94,68,0,68,0x83,0x84,0,34,0x93,67,0x94,62,0,68,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x91,168,0x93,68,0x94,63,0,51,0x81,0,17,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x93,67,0x94,62,0,68,0x83,0x84,0,34,0x93,63,0x94,68,0,68,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x93,63,0x94,68,0,68,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x91,164,0x93,70,0x94,65,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,62,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x93,67,0x94,62,0,68,0x83,0x84,0,34,0x93,63,0x94,68,0,68,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x91,170,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x93,63,0x94,68,0,68,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x91,168,0x93,63,0x94,68,0,51,0x81,0,17,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x93,67,0x94,62,0,68,0x83,0x84,0,34,0x93,63,0x94,68,0,68,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x80,0x81,0,17,0x83,0x84,0,8,0x90,45,0,25,0x93,63,0x94,68,0,68,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x93,70,0x94,65,0,68,0x83,0x84,0,8,0x80,0,25,0x91,164,0x92,170,0x93,67,0x90,38,0x94,62,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x93,67,0x94,62,0,68,0x83,0x84,0,34,0x91,170,0x93,63,0x94,68,0,51,0x81,0,17,0x83,0x84,0,34,0x93,67,0x94,62,0,68,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x93,63,0x94,68,0,68,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x91,168,0x93,68,0x94,63,0,51,0x81,0,17,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x93,63,0x94,68,0,68,0x83,0x84,0,34,0x91,170,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x93,68,0x94,63,0,68,0x83,0x84,0,34,0x91,170,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x93,65,0x94,70,0,51,0x81,0,17,0x83,0x84,0,8,0x80,0,25,0x91,164,0x92,170,0x93,67,0x90,39,0x94,62,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x93,67,0x94,62,0,68,0x83,0x84,0,34,0x91,170,0x93,68,0x94,63,0,51,0x81,0,17,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x91,170,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x93,68,0x94,63,0,68,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x91,168,0x93,68,0x94,63,0,51,0x81,0,17,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,8,0x80,0,25,0x93,68,0x90,34,0x94,63,0,68,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x93,68,0x94,63,0,68,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x93,65,0x94,70,0,68,0x83,0x84,0,34,0x91,164,0x92,170,0x93,62,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x93,67,0x94,62,0,68,0x83,0x84,0,34,0x91,170,0x93,68,0x94,63,0,51,0x81,0,17,0x83,0x84,0,34,0x93,67,0x94,62,0,68,0x83,0x84,0,34,0x91,170,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x93,63,0x94,68,0,68,0x83,0x84,0,34,0x91,170,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x93,67,0x94,62,0,68,0x83,0x84,0,34,0x91,168,0x93,63,0x94,68,0,51,0x81,0,17,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x91,170,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x93,63,0x94,68,0,68,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x93,68,0x94,63,0,68,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x93,70,0x94,65,0,51,0x81,0,17,0x83,0x84,0,8,0x80,0,25,0x91,164,0x92,170,0x93,62,0x90,33,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x93,67,0x94,62,0,68,0x83,0x84,0,34,0x91,168,0x92,170,0x93,68,0x94,63,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x93,62,0x94,67,0,68,0x83,0x84,0,34,0x91,168,0x92,170,0x93,62,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x93,63,0x94,68,0,68,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x91,168,0x93,63,0x94,68,0,51,0x81,0,17,0x83,0x84,0,34,0x91,168,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,67,0x94,62,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x93,68,0x94,63,0,68,0x83,0x84,0,8,0x80,0,25,0x91,168,0x92,170,0x93,62,0x90,31,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x93,68,0x94,63,0,68,0x83,0x84,0,34,0x91,168,0x92,170,0x93,62,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,168,0x93,65,0x94,70,0,51,0x81,0,17,0x83,0x84,0,8,0x80,0,25,0x91,164,0x92,170,0x93,62,0x90,31,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x91,168,0x92,170,0x93,68,0x94,63,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,170,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,67,0x94,62,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,68,0x94,63,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,168,0x92,170,0x93,67,0x94,62,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,170,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,63,0x94,68,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,67,0x94,62,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,168,0x92,170,0x93,62,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,68,0x94,63,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,68,0x94,63,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,168,0x92,170,0x93,67,0x94,62,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,170,0x93,70,0x94,65,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,67,0x94,62,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,170,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x91,168,0x92,170,0x93,68,0x94,63,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,170,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,62,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,68,0x94,63,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,168,0x92,170,0x93,62,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,170,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,63,0x94,68,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,62,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,168,0x92,170,0x93,67,0x94,62,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,63,0x94,68,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,68,0x94,63,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,168,0x92,170,0x93,62,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,170,0x93,65,0x94,70,0,51,0x81,0,17,0x83,0x84,0,25,0x80,0,8,0x91,164,0x92,170,0x93,62,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x91,168,0x92,170,0x93,63,0x94,68,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,170,0x93,62,0x94,67,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,67,0x94,62,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,63,0x94,68,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,168,0x92,170,0x93,62,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,170,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,63,0x94,68,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,62,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,168,0x92,170,0x93,62,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,68,0x94,63,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,170,0x93,67,0x94,62,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x93,63,0x94,68,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,168,0x92,170,0x93,62,0x94,67,0,51,0x81,0x82,0,17,0x83,0x84,0,34,0x91,170,0x93,65,0x94,70,0,51,0x81,0,17,0x83,0x84,0,34,0x91,164,0x92,170,0x90,67,0x93,67,0x94,62,0x95,62,0,34,0,17,0x80,0x81,0x82,0x84,0,17,0x90,69,0x94,64,0x83,0x85,0,17,0,17,0x93,67,0x91,170,0x92,70,0x95,62,0x80,0x84,0,34,0x90,71,0x94,66,0,17,0x81,0x82,0,17,0x92,72,0x91,67,0x83,0x85,0,17,0x80,0x84,0,17,0x93,68,0x90,168,0x94,170,0x95,69,0,17,0x81,0x82,0,17,0x91,76,0x92,71,0,17,0x80,0x84,0x85,0,17,0x95,72,0x90,77,0x83,0,17,0x81,0x82,0,17,0x93,67,0x94,170,0x91,74,0x92,62,0,17,0x80,0x85,0,17,0x90,76,0x95,81,0,17,0x81,0x84,0,17,0x91,83,0x92,78,0x83,0,17,0x80,0x85,0,17,0x93,62,0x94,164,0x90,170,0x95,79,0,17,0x81,0x82,0,17,0x91,86,0x92,81,0,17,0x80,0x84,0x85,0,17,0x95,88,0x90,83,0x83,0,17,0x81,0x82,0,17,0x93,68,0x94,164,0x91,170,0x92,89,0,17,0x80,0x85,0,17,0x90,86,0x95,91,0,17,0x81,0x82,0x84,0,17,0x83,0,34,0x91,168,0x94,170,0x93,67,0x92,62,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,170,0x92,62,0x93,67,0,51,0x81,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,68,0x93,63,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,67,0x93,62,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,168,0x94,170,0x92,67,0x93,62,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,63,0x93,68,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,170,0x92,62,0x93,67,0,51,0x81,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,68,0x93,63,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,168,0x94,170,0x92,62,0x93,67,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,170,0x92,65,0x93,70,0,51,0x81,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,67,0x93,62,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,170,0x92,62,0x93,67,0,51,0x81,0,17,0x82,0x83,0,34,0x91,168,0x94,170,0x92,63,0x93,68,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,170,0x92,67,0x93,62,0,51,0x81,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,67,0x93,62,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,63,0x93,68,0,51,0x81,0x84,0,17,0x82,0x83,0,17,0x80,0,8,0x85,0,8,0x92,62,0x91,168,0x94,170,0x90,90,0x93,67,0x95,85,0,51,0x81,0x84,0,17,0x82,0x83,0,17,0x80,0x85,0,17,0x92,62,0x91,170,0x90,84,0x93,67,0x95,89,0,51,0x81,0,17,0x82,0x83,0,17,0x80,0x85,0,17,0x92,68,0x91,164,0x94,170,0x90,86,0x93,63,0x95,81,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,67,0x93,62,0,51,0x81,0x84,0,17,0x82,0x83,0,17,0x80,0x85,0,17,0x92,67,0x91,168,0x94,170,0x90,80,0x93,62,0x95,85,0,51,0x81,0x84,0,17,0x82,0x83,0,17,0x80,0x85,0,17,0x92,63,0x91,164,0x94,170,0x90,84,0x93,68,0x95,79,0,51,0x81,0x84,0,17,0x82,0x83,0,17,0x80,0x85,0,17,0x92,62,0x91,170,0x90,77,0x93,67,0x95,82,0,51,0x81,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,68,0x93,63,0,51,0x81,0x84,0,17,0x82,0x83,0,17,0x80,0x85,0,17,0x92,67,0x91,168,0x94,170,0x90,74,0x93,62,0x95,79,0,51,0x81,0x84,0,17,0x82,0x83,0,17,0x80,0x85,0,17,0x92,65,0x91,170,0x90,78,0x93,70,0x95,73,0,51,0x81,0,17,0x82,0x83,0,17,0x80,0x85,0,17,0x92,67,0x91,164,0x94,170,0x90,77,0x93,62,0x95,72,0,51,0x81,0x84,0,17,0x82,0x83,0,17,0x80,0x85,0,17,0x92,67,0x91,170,0x90,69,0x93,62,0x95,74,0,51,0x81,0,17,0x82,0x83,0,17,0x80,0x85,0,17,0x92,63,0x91,168,0x94,170,0x90,68,0x93,68,0x95,73,0,51,0x81,0x84,0,17,0x82,0x83,0,17,0x80,0x85,0,17,0x92,67,0x91,170,0x90,72,0x93,62,0x95,67,0,51,0x81,0,17,0x82,0x83,0,17,0x80,0x85,0,17,0x92,67,0x91,164,0x94,170,0x90,70,0x93,62,0x95,65,0,51,0x81,0x84,0,17,0x82,0x83,0,17,0x80,0x85,0,17,0x92,63,0x91,164,0x94,170,0x90,67,0x93,68,0x95,62,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,168,0x94,170,0x92,62,0x93,67,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,170,0x90,62,0x92,67,0x95,67,0x93,62,0,51,0x81,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,67,0x92,63,0x95,62,0x93,68,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,67,0x92,67,0x95,62,0x93,62,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,168,0x94,170,0x90,62,0x92,67,0x95,67,0x93,62,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,63,0x93,68,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,170,0x90,62,0x92,62,0x95,67,0x93,67,0,51,0x81,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,62,0x92,68,0x95,67,0x93,63,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,168,0x94,170,0x92,62,0x93,67,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,170,0x90,67,0x92,65,0x95,62,0x93,70,0,51,0x81,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,62,0x92,72,0x95,67,0x93,67,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,170,0x90,67,0x92,67,0x95,62,0x93,72,0,51,0x81,0,17,0x80,0x82,0x83,0x85,0,34,0x91,168,0x94,170,0x90,62,0x92,73,0x95,67,0x93,68,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,170,0x92,67,0x93,72,0,51,0x81,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,62,0x92,67,0x95,67,0x93,72,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,73,0x93,68,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,168,0x94,170,0x90,67,0x92,72,0x95,62,0x93,67,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,170,0x90,67,0x92,67,0x95,62,0x93,72,0,51,0x81,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,62,0x92,73,0x95,67,0x93,68,0,51,0x81,0x84,0,17,0x82,0x83,0,25,0x80,0x85,0,8,0x92,67,0x91,164,0x94,170,0x90,70,0x93,72,0x95,65,0,51,0x81,0x84,0,17,0x82,0x83,0,25,0x80,0x85,0,8,0x92,67,0x91,168,0x94,170,0x90,66,0x93,72,0x95,61,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,73,0x93,68,0,51,0x81,0x84,0,17,0x82,0x83,0,25,0x80,0x85,0,8,0x92,72,0x91,170,0x90,67,0x93,67,0x95,62,0,51,0x81,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,68,0x93,73,0,51,0x81,0x84,0,17,0x82,0x83,0x85,0,25,0x80,0,8,0x92,67,0x91,168,0x94,170,0x90,62,0x93,72,0x95,57,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,170,0x90,62,0x92,70,0x95,67,0x93,75,0,51,0x81,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,67,0x93,72,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0,25,0x85,0,8,0x92,67,0x91,170,0x90,57,0x93,72,0x95,62,0,51,0x81,0,17,0x80,0x82,0x83,0x85,0,34,0x91,168,0x94,170,0x90,67,0x92,68,0x95,62,0x93,73,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,170,0x92,72,0x93,67,0,51,0x81,0,17,0x82,0x83,0x85,0,25,0x80,0,8,0x92,72,0x91,164,0x94,170,0x90,62,0x93,67,0x95,57,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,67,0x92,68,0x95,62,0x93,73,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,168,0x94,170,0x90,62,0x92,72,0x95,57,0x93,67,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,170,0x90,67,0x92,67,0x95,62,0x93,72,0,51,0x81,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,70,0x92,73,0x95,65,0x93,68,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,61,0x92,72,0x95,66,0x93,67,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,168,0x94,170,0x92,67,0x93,72,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,62,0x92,68,0x95,67,0x93,73,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,170,0x92,72,0x93,67,0,43,0x80,0x85,0,8,0x81,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x90,62,0x92,68,0x95,67,0x93,73,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,168,0x94,170,0x90,65,0x92,72,0x95,70,0x93,67,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,170,0x90,67,0x92,70,0x95,62,0x93,75,0,51,0x81,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,67,0x93,72,0,51,0x81,0x84,0,8,0x80,0x85,0,8,0x82,0x83,0,34,0x91,170,0x90,62,0x92,72,0x95,67,0x93,67,0,51,0x81,0,17,0x80,0x82,0x83,0x85,0,34,0x91,168,0x94,170,0x90,62,0x92,73,0x95,67,0x93,68,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,170,0x90,65,0x92,72,0x95,70,0x93,67,0,51,0x81,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,67,0x92,72,0x95,62,0x93,67,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,65,0x92,68,0x95,70,0x93,73,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,168,0x94,170,0x90,62,0x92,67,0x95,67,0x93,72,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,170,0x90,65,0x92,72,0x95,70,0x93,67,0,51,0x81,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,62,0x92,68,0x95,67,0x93,73,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,72,0x92,72,0x95,67,0x93,67,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,168,0x94,170,0x90,67,0x92,67,0x95,62,0x93,72,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,68,0x92,73,0x95,73,0x93,68,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,170,0x90,67,0x92,67,0x95,62,0x93,72,0,51,0x81,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,69,0x92,73,0x95,74,0x93,68,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,168,0x94,170,0x90,62,0x92,72,0x95,67,0x93,67,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,170,0x90,73,0x92,70,0x95,68,0x93,75,0,51,0x81,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,67,0x92,72,0x95,62,0x93,67,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,170,0x90,72,0x92,72,0x95,67,0x93,67,0,51,0x81,0,17,0x80,0x82,0x83,0x85,0,34,0x91,168,0x94,170,0x90,62,0x92,68,0x95,67,0x93,73,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,170,0x90,65,0x92,72,0x95,70,0x93,67,0,51,0x81,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,67,0x92,72,0x95,62,0x93,67,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,164,0x94,170,0x90,62,0x92,68,0x95,67,0x93,73,0,51,0x81,0x84,0,17,0x80,0x82,0x83,0x85,0,34,0x91,168,0x94,170,0x90,79,0x92,67,0x95,74,0x93,72,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,170,0x92,67,0x93,72,0,51,0x81,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,62,0x93,68,0x80,0x85,0,51,0x81,0x84,0,17,0x83,0,8,0x82,0,25,0x93,67,0x91,164,0x94,170,0x90,62,0x92,72,0x95,67,0,51,0x81,0x84,0,17,0x82,0x83,0,8,0x80,0x85,0,25,0x92,67,0x91,168,0x94,170,0x90,74,0x93,72,0x95,79,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,164,0x94,170,0x92,73,0x93,68,0,51,0x81,0x84,0,17,0x82,0x83,0,34,0x91,170,0x92,72,0x93,72,0x94,77,0x80,0x85,0,51,0x81,0,17,0x83,0,8,0x82,0x84,0,25,0x93,68,0x91,164,0x90,170,0x92,79,0x94,73,0x95,74,0,51,0x80,0x81,0,17,0x83,0x84,0,8,0x82,0x85,0,25,0x93,72,0x90,168,0x91,170,0x92,77,0x94,67,0x95,82,0,51,0x80,0x81,0,17,0x83,0x84,0,8,0x82,0x85,0,25,0x93,75,0x90,170,0x92,84,0x94,70,0x95,79,0,51,0x80,0,17,0x83,0x84,0,8,0x82,0x85,0,25,0x93,67,0x90,164,0x91,170,0x92,85,0x94,62,0x95,80,0,51,0x80,0x81,0,17,0x83,0x84,0,8,0x82,0x85,0,25,0x93,62,0x90,170,0x92,86,0x94,67,0x95,81,0,51,0x80,0,17,0x83,0x84,0,8,0x82,0x85,0,25,0x93,68,0x90,168,0x91,170,0x92,79,0x94,63,0x95,84,0,51,0x80,0x81,0,17,0x83,0x84,0,8,0x82,0x85,0,25,0x93,62,0x90,170,0x92,80,0x94,67,0x95,85,0,51,0x80,0,17,0x83,0x84,0,8,0x82,0x85,0,25,0x93,62,0x90,164,0x91,170,0x92,86,0x94,67,0x95,81,0,51,0x80,0x81,0,17,0x83,0x84,0,8,0x82,0x85,0,25,0x93,68,0x90,164,0x91,170,0x92,89,0x94,63,0x95,84,0,51,0x80,0x81,0,17,0x83,0x84,0,8,0x82,0x85,0,25,0x93,62,0x90,168,0x91,170,0x92,91,0x94,67,0x95,86,0,51,0x80,0x81,0,17,0x83,0x84,0,34,0x90,170,0x93,67,0x94,62,0,51,0x80,0,17,0x83,0x84,0,34,0x90,164,0x91,170,0x93,63,0x94,68,0,51,0x80,0x81,0x82,0x85,0,17,0x92,84,0x95,89,0x83,0x84,0,34,0x93,67,0x90,164,0x91,170,0x94,62,0,34,0,8,0x82,0x85,0,8,0x80,0x81,0,17,0x83,0x84,0,34,0x90,168,0x91,170,0x92,81,0x93,62,0x95,86,0x94,67,0,8,0,43,0x80,0x81,0,17,0x90,79,0x91,84,0x83,0x84,0,8,0x82,0x85,0,25,0x93,63,0x92,164,0x94,170,0x95,68,0,34,0,8,0x80,0x81,0,8,0x82,0x84,0,17,0x83,0x85,0,34,0x92,170,0x90,86,0x93,67,0x91,91,0x95,62,0,8,0,43,0x82,0,17,0x83,0x85,0,34,0x92,164,0x94,170,0x93,68,0x95,63,0,51,0x82,0x84,0,17,0x83,0x85,0,34,0x92,168,0x94,170,0x93,62,0x95,67,0,51,0x80,0x81,0x82,0x84,0,17,0x90,84,0x91,89,0x83,0x85,0,34,0x93,65,0x92,170,0x95,70,0,34,0x94,83,0,8,0x80,0x81,0,8,0x82,0,17,0x83,0x85,0,34,0x92,164,0x90,170,0x91,81,0x93,67,0x95,86,0,8,0x84,0,43,0x80,0x82,0,17,0x94,79,0x90,84,0x83,0,8,0x81,0x85,0,25,0x93,62,0x92,170,0x91,67,0,34,0x95,78,0,8,0x80,0x84,0,8,0x82,0,17,0x81,0x83,0,34,0x92,168,0x90,170,0x94,89,0x91,68,0x93,94,0,8,0x85,0,43,0x80,0x82,0,17,0x81,0,34,0x90,170,0x91,62,0x92,67,0,51,0x80,0,17,0x81,0x82,0,34,0x90,164,0x91,170,0x92,67,0x95,62,0,51,0x80,0x81,0,17,0x82,0x85,0,34,0x90,164,0x91,170,0x92,63,0x95,68,0,51,0x80,0x81,0,17,0x82,0x85,0,34,0x90,168,0x91,170,0x92,62,0x95,67,0,51,0x80,0x81,0,17,0x82,0x85,0,34,0x90,170,0x92,62,0x95,67,0,51,0x80,0,17,0x82,0x85,0,34,0x90,164,0x91,170,0x92,63,0x95,68,0,51,0x80,0x81,0,17,0x82,0x85,0,34,0x90,164,0x91,170,0x92,62,0x95,67,0,51,0x80,0x81,0,17,0x82,0x85,0,34,0x90,168,0x91,170,0x92,62,0x95,67,0,51,0x80,0x81,0,17,0x82,0x85,0,34,0x90,164,0x91,170,0x92,63,0x95,68,0,51,0x80,0x81,0,17,0x82,0x85,0,34,0x90,170,0x92,62,0x95,67,0,51,0x80,0,17,0x82,0x85,0,34,0x90,164,0x91,170,0x92,63,0x95,68,0,51,0x80,0x81,0,17,0x82,0x85,0,34,0x90,168,0x91,170,0x92,67,0x95,62,0,51,0x80,0x81,0,17,0x82,0x85,0,34,0x90,170,0x92,65,0x95,70,0,51,0x80,0,17,0x82,0x85,0,34,0x90,164,0x91,170,0x92,88,0x95,67,0x83,0x84,0,51,0x80,0x81,0,17,0x85,0,34,0x90,170,0x95,62,0x91,67,0,51,0x80,0,17,0x81,0x85,0,34,0x90,168,0x91,170,0x95,63,0x93,68,0,25,0x82,0,25,0x80,0x81,0,17,0x92,87,0x94,92,0x83,0x85,0,34,0x93,67,0x90,170,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,63,0,17,0x82,0x84,0,17,0x92,86,0x94,91,0,17,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,62,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,68,0x90,164,0x91,170,0x92,90,0x95,63,0x94,85,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,62,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,62,0x90,168,0x91,170,0x92,84,0x95,67,0x94,89,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,62,0x90,170,0x92,83,0x95,67,0x94,88,0,51,0x80,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,63,0x90,164,0x91,170,0x92,82,0x95,68,0x94,87,0,51,0x80,0x81,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,62,0x90,168,0x91,170,0x92,81,0x95,67,0x94,86,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,70,0x95,65,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,62,0x90,170,0x92,82,0x95,67,0x94,87,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,62,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,62,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,67,0x90,164,0x91,170,0x92,82,0x95,62,0x94,77,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,62,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,65,0x95,70,0,51,0x80,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,67,0x90,164,0x91,170,0x92,81,0x95,72,0x94,86,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,72,0,51,0x80,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,68,0x95,73,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,72,0x95,67,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,67,0x95,72,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,73,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,67,0x90,168,0x91,170,0x92,76,0x95,72,0x94,81,0,51,0x80,0x81,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,67,0x90,170,0x92,67,0x95,72,0x94,62,0,51,0x80,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,73,0x90,164,0x91,170,0x92,67,0x95,68,0x94,62,0,51,0x80,0x81,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,67,0x90,164,0x91,170,0x92,77,0x95,72,0x94,82,0,51,0x80,0x81,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,72,0x90,168,0x91,170,0x92,67,0x95,67,0x94,62,0,51,0x80,0x81,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,73,0x90,164,0x91,170,0x92,67,0x95,68,0x94,62,0,51,0x80,0x81,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,72,0x90,170,0x92,77,0x95,67,0x94,82,0,51,0x80,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,68,0x90,164,0x91,170,0x92,67,0x95,73,0x94,62,0,51,0x80,0x81,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,67,0x90,168,0x91,170,0x92,82,0x95,72,0x94,77,0,51,0x80,0x81,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,70,0x90,170,0x92,62,0x95,75,0x94,67,0,51,0x80,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,67,0x90,164,0x91,170,0x92,62,0x95,72,0x94,67,0,51,0x80,0x81,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,67,0x90,170,0x92,77,0x95,72,0x94,82,0,51,0x80,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,73,0x90,168,0x91,170,0x92,62,0x95,68,0x94,67,0,51,0x80,0x81,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,72,0x90,170,0x92,77,0x95,67,0x94,82,0,51,0x80,0x82,0x84,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x92,82,0x93,72,0x94,77,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,73,0,51,0x80,0x81,0x82,0x84,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x92,77,0x93,72,0x94,82,0x95,67,0,51,0x80,0x81,0x82,0x84,0,17,0x92,80,0x94,75,0x83,0x85,0,34,0x93,67,0x90,170,0x95,72,0,17,0x82,0x84,0,17,0x92,74,0x94,79,0,17,0x80,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,73,0x90,164,0x91,170,0x92,75,0x95,68,0x94,80,0,51,0x80,0x81,0x82,0x84,0,17,0x92,74,0x94,79,0x83,0x85,0,34,0x93,72,0x90,164,0x91,170,0x95,67,0,17,0x82,0x84,0,17,0x92,75,0x94,80,0,17,0x80,0x81,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,72,0x90,168,0x91,170,0x92,74,0x95,67,0x94,79,0,51,0x80,0x81,0x82,0x84,0,17,0x92,75,0x94,80,0x83,0x85,0,34,0x93,73,0x90,164,0x91,170,0x95,68,0,17,0x82,0x84,0,17,0x92,79,0x94,74,0,17,0x80,0x81,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,72,0x90,170,0x92,82,0x95,67,0x94,77,0,51,0x80,0x82,0x84,0,17,0x92,81,0x94,76,0x83,0x85,0,34,0x93,73,0x90,164,0x91,170,0x95,68,0,17,0x82,0x84,0,17,0x92,82,0x94,77,0,17,0x80,0x81,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,72,0x90,168,0x91,170,0x92,76,0x95,67,0x94,81,0,51,0x80,0x81,0x82,0x84,0,17,0x92,77,0x94,82,0x83,0x85,0,34,0x93,70,0x90,170,0x95,75,0,17,0x82,0x84,0,17,0x92,81,0x94,76,0,17,0x80,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,67,0x90,164,0x91,170,0x92,77,0x95,72,0x94,82,0,51,0x80,0x81,0x82,0x84,0,17,0x92,76,0x94,81,0x83,0x85,0,34,0x93,72,0x90,170,0x95,67,0,17,0x82,0x84,0,17,0x92,80,0x94,75,0,17,0x80,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,73,0x90,168,0x91,170,0x92,79,0x95,68,0x94,74,0,51,0x80,0x81,0x82,0x84,0,17,0x92,75,0x94,80,0x83,0x85,0,34,0x93,72,0x90,170,0x95,67,0,17,0x82,0x84,0,17,0x92,79,0x94,74,0,17,0x80,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,67,0x90,164,0x91,170,0x92,80,0x95,72,0x94,75,0,51,0x80,0x81,0x82,0x84,0,17,0x92,74,0x94,79,0x83,0x85,0,34,0x93,68,0x90,164,0x91,170,0x95,73,0,17,0x82,0x84,0,17,0x92,80,0x94,75,0,17,0x80,0x81,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,72,0x90,168,0x91,170,0x92,74,0x95,67,0x94,79,0,51,0x80,0x81,0x82,0x84,0,17,0x92,77,0x94,82,0x83,0x85,0,34,0x93,72,0x90,170,0x95,67,0,17,0x82,0x84,0,17,0x92,81,0x94,76,0,17,0x80,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,73,0x90,164,0x91,170,0x92,82,0x95,68,0x94,77,0,51,0x80,0x81,0x82,0x84,0,17,0x92,81,0x94,76,0x83,0x85,0,34,0x93,72,0x90,164,0x91,170,0x95,67,0,17,0x82,0x84,0,17,0x92,82,0x94,77,0,17,0x80,0x81,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,67,0x90,168,0x91,170,0x92,76,0x95,72,0x94,81,0,51,0x80,0x81,0x82,0x84,0,17,0x92,77,0x94,82,0x83,0x85,0,34,0x93,68,0x90,164,0x91,170,0x95,73,0,17,0x82,0x84,0,17,0x92,81,0x94,76,0,17,0x80,0x81,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,72,0x90,170,0x92,79,0x95,67,0x94,84,0,51,0x80,0x82,0x84,0,17,0x92,83,0x94,78,0x83,0x85,0,34,0x93,73,0x90,164,0x91,170,0x95,68,0,17,0x82,0x84,0,17,0x92,84,0x94,79,0,17,0x80,0x81,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,67,0x90,168,0x91,170,0x92,83,0x95,72,0x94,78,0,51,0x80,0x81,0x82,0x84,0,17,0x92,79,0x94,84,0x83,0x85,0,34,0x93,70,0x90,170,0x95,75,0,17,0x82,0x84,0,17,0x92,78,0x94,83,0,17,0x80,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,72,0x90,164,0x91,170,0x92,79,0x95,67,0x94,84,0,51,0x80,0x81,0x82,0x84,0,17,0x92,83,0x94,78,0x83,0x85,0,34,0x93,72,0x90,170,0x91,79,0x95,67,0,17,0x82,0x84,0,34,0x80,0x81,0,8,0x91,81,0x92,86,0,8,0x83,0x85,0,34,0x90,168,0x93,170,0x94,85,0x95,73,0,8,0x81,0x82,0,43,0x80,0x83,0x84,0,17,0x91,81,0x92,86,0x85,0,34,0x95,72,0x90,170,0x93,67,0,17,0x81,0x82,0,17,0x91,80,0x92,85,0,17,0x80,0,17,0x83,0x85,0,17,0x81,0x82,0,17,0x93,72,0x90,164,0x91,170,0x92,86,0x95,67,0x94,81,0,51,0x80,0x81,0x82,0x84,0,17,0x92,80,0x94,85,0x83,0x85,0,34,0x93,68,0x90,164,0x91,170,0x95,73,0,17,0x82,0x84,0,17,0x92,81,0x94,86,0,17,0x80,0x81,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,67,0x90,168,0x91,170,0x92,80,0x95,72,0x94,85,0,51,0x80,0x81,0x82,0x84,0,17,0x92,79,0x94,84,0x83,0x85,0,34,0x93,67,0x90,170,0x95,72,0,17,0x82,0x84,0,17,0x92,78,0x94,83,0,17,0x80,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,68,0x90,164,0x91,170,0x92,84,0x95,73,0x94,79,0,51,0x80,0x81,0x82,0x84,0,17,0x92,78,0x94,83,0x83,0x85,0,34,0x93,67,0x90,164,0x91,170,0x95,72,0,17,0x82,0x84,0,17,0x92,84,0x94,79,0,17,0x80,0x81,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,72,0x90,168,0x91,170,0x92,78,0x95,67,0x94,83,0,51,0x80,0x81,0x82,0x84,0,17,0x92,79,0x94,84,0x83,0x85,0,34,0x93,73,0x90,164,0x91,170,0x95,68,0,17,0x82,0x84,0,17,0x92,83,0x94,78,0,17,0x80,0x81,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,67,0x90,170,0x92,81,0x95,72,0x94,86,0,51,0x80,0x82,0x84,0,17,0x92,85,0x94,80,0x83,0x85,0,34,0x93,73,0x90,164,0x91,170,0x95,68,0,17,0x82,0x84,0,17,0x92,86,0x94,81,0,17,0x80,0x81,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,72,0x90,168,0x91,170,0x92,85,0x95,67,0x94,80,0,51,0x80,0x81,0x82,0x84,0,17,0x92,86,0x94,81,0x83,0x85,0,34,0x93,70,0x90,170,0x95,75,0,17,0x82,0x84,0,17,0x92,80,0x94,85,0,17,0x80,0,17,0x83,0x85,0,17,0x82,0x84,0,17,0x93,62,0x90,164,0x91,170,0x92,89,0x95,67,0x94,84,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,62,0x95,67,0,51,0x80,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,62,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,62,0x95,67,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,62,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,62,0x95,67,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,62,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,70,0x95,65,0,51,0x80,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,67,0x90,164,0x91,170,0x92,91,0x95,62,0x94,86,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,62,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,62,0x95,67,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,65,0x95,70,0,51,0x80,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,67,0x90,164,0x91,170,0x92,94,0x95,62,0x94,89,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,62,0x95,67,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,62,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,70,0x95,65,0,51,0x80,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,67,0x90,164,0x91,170,0x92,93,0x95,62,0x94,98,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,62,0x95,67,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,65,0x95,70,0,51,0x80,0x82,0x84,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x92,92,0x93,67,0x94,97,0x95,72,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,170,0x92,96,0x93,67,0x94,91,0x95,72,0,51,0x80,0,17,0x82,0x83,0x84,0x85,0,34,0x90,168,0x91,170,0x92,89,0x93,73,0x94,94,0x95,68,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,170,0x92,91,0x93,67,0x94,96,0x95,72,0,51,0x80,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,94,0x93,67,0x94,89,0x95,72,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,86,0x93,73,0x94,91,0x95,68,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,168,0x91,170,0x92,85,0x93,67,0x94,90,0x95,72,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,170,0x92,84,0x93,67,0x94,89,0x95,72,0,51,0x80,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,81,0x93,73,0x94,86,0x95,68,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,85,0x93,67,0x94,80,0x95,72,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,168,0x91,170,0x92,84,0x93,72,0x94,79,0x95,67,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,82,0x93,73,0x94,77,0x95,68,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,170,0x92,74,0x93,72,0x94,79,0x95,67,0,51,0x80,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,77,0x93,73,0x94,82,0x95,68,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,168,0x91,170,0x92,74,0x93,67,0x94,79,0x95,72,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,170,0x92,77,0x93,75,0x94,72,0x95,70,0,51,0x80,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,74,0x93,67,0x94,79,0x95,72,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,170,0x92,77,0x93,72,0x94,82,0x95,67,0,51,0x80,0,17,0x82,0x83,0x84,0x85,0,34,0x90,168,0x91,170,0x92,81,0x93,68,0x94,86,0x95,73,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,170,0x92,89,0x93,72,0x94,84,0x95,67,0,51,0x80,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,85,0x93,67,0x94,80,0x95,72,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,79,0x93,73,0x94,84,0x95,68,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,168,0x91,170,0x92,82,0x93,67,0x94,77,0x95,72,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,170,0x92,74,0x93,67,0x94,79,0x95,72,0,51,0x80,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,72,0x93,73,0x94,77,0x95,68,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,69,0x93,67,0x94,74,0x95,72,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,168,0x91,170,0x92,72,0x93,72,0x94,77,0x95,67,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,74,0x93,68,0x94,79,0x95,73,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,170,0x92,77,0x93,67,0x94,72,0x95,72,0,51,0x80,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,79,0x93,68,0x94,74,0x95,73,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,168,0x91,170,0x92,77,0x93,72,0x94,82,0x95,67,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,170,0x92,79,0x93,75,0x94,74,0x95,70,0,51,0x80,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,77,0x93,67,0x94,82,0x95,72,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,170,0x92,79,0x93,67,0x94,84,0x95,72,0,51,0x80,0,17,0x82,0x83,0x84,0x85,0,34,0x90,168,0x91,170,0x92,82,0x93,68,0x94,77,0x95,73,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,170,0x92,79,0x93,67,0x94,84,0x95,72,0,51,0x80,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,81,0x93,67,0x94,86,0x95,72,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,164,0x91,170,0x92,89,0x93,68,0x94,84,0x95,73,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,168,0x91,170,0x92,90,0x93,72,0x94,85,0x95,67,0,51,0x80,0x81,0,17,0x82,0x83,0x84,0x85,0,34,0x90,170,0x92,91,0x93,72,0x94,86,0x95,67,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,73,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,67,0x95,72,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,72,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,73,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,72,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,73,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,72,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,70,0x95,75,0,51,0x80,0,17,0x83,0x85,0,25,0x82,0x84,0,8,0x93,67,0x90,164,0x91,170,0x92,94,0x95,72,0x94,89,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,72,0,51,0x80,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,68,0x95,73,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,72,0x95,67,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,67,0x95,72,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,73,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,72,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,72,0x95,67,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,73,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,67,0x95,72,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,72,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,73,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,72,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,73,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,72,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,70,0x95,75,0,51,0x80,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,62,0x90,164,0x91,170,0x92,86,0x95,67,0x94,91,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,62,0x95,67,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,62,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,62,0x95,67,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,65,0x95,70,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,62,0x95,67,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,62,0x95,67,0,51,0x80,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,68,0x95,63,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,67,0x95,62,0,51,0x80,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,164,0x91,170,0x93,63,0x95,68,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,168,0x91,170,0x93,67,0x95,62,0,51,0x80,0x81,0,17,0x83,0x85,0,34,0x90,170,0x93,62,0x95,67,0,51,0x80,0,17,0x83,0x85,0,8,0x82,0x84,0,25,0x93,68,0x90,164,0x91,170,0x92,89,0x95,63,0x94,84,0,51,0x80,0x81,0x82,0x84,0,17,0x92,83,0x94,88,0x83,0x85,0,34,0x93,62,0x90,164,0x91,170,0x95,85,0,17,0x82,0x84,0,17,0x92,84,0x94,79,0,17,0x80,0x81,0x85,0,17,0x95,83,0x90,78,0x83,0,17,0x82,0x84,0,17,0x93,67,0x91,168,0x92,170,0x94,81,0,17,0x80,0x85,0,17,0x90,79,0x95,74,0,17,0x81,0x82,0x84,0,17,0x94,77,0x91,72,0x83,0,17,0x80,0x85,0,17,0x93,68,0x92,164,0x90,170,0x95,71,0,17,0x81,0x84,0,17,0x91,74,0x94,69,0,17,0x80,0x82,0x85,0,17,0x95,72,0x90,67,0x83,0,17,0x81,0x84,0,17,0x93,62,0x92,170,0x91,71,0x94,67,0,17,0x80,0x85,0,17,0x90,64,0x95,69,0,17,0x81,0x82,0,17,0x91,67,0x92,62,0x83,0x84,0,17,0x80,0x85,0,17,0x93,68,0x90,164,0x94,170,0x95,60,0,17,0x81,0x82,0,17,0x91,59,0x92,64,0,17,0x80,0x84,0x85,0,17,0x95,57,0x90,62,0x83,0,17,0x81,0x82,0,17,0x93,67,0x94,168,0x91,170,0x92,60,0,17,0x80,0x85,0,8,0x82,0,8,0x90,54,0x92,59,0,17,0x81,0x84,0,17,0x95,60,0x91,55,0x83,0,17,0x80,0x82,0,17,0x93,65,0x94,170,0x90,57,0x92,70,0,17,0x81,0x85,0,17,0x91,64,0x95,59,0,17,0x80,0x84,0,17,0x90,65,0x92,60,0x83,0,17,0x81,0x85,0,17,0x93,67,0x94,164,0x91,170,0x95,62,0,17,0x80,0x82,0,17,0x90,69,0x92,64,0,17,0x81,0x84,0x85,0,17,0x95,71,0x91,66,0x83,0,17,0x80,0x82,0,17,0x93,67,0x94,170,0x90,67,0x92,62,0,17,0x81,0x85,0,17,0x91,69,0x95,74,0,17,0x80,0x84,0,17,0x90,71,0x92,76,0x83,0,17,0x81,0x85,0,17,0x93,68,0x94,168,0x91,170,0x95,72,0,17,0x80,0x82,0,17,0x90,79,0x92,74,0,17,0x81,0x84,0x85,0,17,0x95,76,0x91,81,0x83,0,17,0x80,0x82,0,17,0x93,67,0x94,170,0x90,78,0x92,62,0,17,0x81,0x85,0,34,0x91,79,0x95,84,0x80,0x84,0,17,0x82,0x83,0,34,0x94,164,0x90,170,0x92,81,0x93,62,0x81,0x85,0,51,0x91,83,0x95,88,0x80,0x82,0x84,0,17,0x83,0,34,0x90,164,0x94,170,0x92,84,0x93,63,0x81,0x85,0,51,0x80,0x84,0,17,0x83,0,8,0x82,0,25,0x93,67,0x90,168,0x94,170,0x91,90,0x92,62,0x95,85,0,51,0x80,0x84,0,17,0x82,0x83,0,8,0x81,0x85,0,25,0x92,62,0x90,170,0x91,89,0x93,67,0x95,84,0,51,0x80,0,17,0x82,0x83,0,8,0x81,0x85,0,25,0x92,68,0x90,164,0x94,170,0x91,86,0x93,63,0x95,81,0,51,0x80,0x84,0,17,0x82,0x83,0,34,0x90,164,0x94,170,0x92,62,0x93,67,0,51,0x80,0x84,0,17,0x82,0x83,0,8,0x81,0x85,0,25,0x92,62,0x90,168,0x94,170,0x91,80,0x93,67,0x95,85,0,51,0x80,0x84,0,17,0x82,0x83,0,8,0x81,0x85,0,25,0x92,63,0x90,164,0x94,170,0x91,84,0x93,68,0x95,79,0,51,0x80,0x84,0,17,0x82,0x83,0,8,0x81,0x85,0,25,0x92,62,0x90,170,0x91,82,0x93,67,0x95,77,0,51,0x80,0,17,0x82,0x83,0,34,0x90,164,0x94,170,0x92,63,0x93,68,0,51,0x80,0x81,0x84,0x85,0,17,0x82,0x83,0,34,0x90,168,0x94,170,0x91,79,0x92,62,0x95,74,0x93,67,0,51,0x80,0x84,0,17,0x82,0x83,0,8,0x81,0x85,0,25,0x92,65,0x90,170,0x91,73,0x93,70,0x95,78,0,51,0x80,0,17,0x82,0x83,0,8,0x81,0x85,0,25,0x92,67,0x90,164,0x94,170,0x91,77,0x93,62,0x95,72,0,51,0x80,0x84,0,17,0x82,0x83,0,8,0x81,0x85,0,25,0x92,67,0x90,170,0x91,74,0x93,62,0x95,69,0,51,0x80,0,17,0x82,0x83,0,8,0x81,0x85,0,25,0x92,68,0x90,168,0x94,170,0x91,68,0x93,63,0x95,73,0,51,0x80,0x84,0,17,0x82,0x83,0,8,0x81,0x85,0,25,0x92,67,0x90,170,0x91,67,0x93,62,0x95,72,0,51,0x80,0,17,0x82,0x83,0,8,0x81,0x85,0,25,0x92,67,0x90,164,0x94,170,0x91,65,0x93,62,0x95,70,0,51,0x80,0x84,0,17,0x82,0x83,0,8,0x81,0x85,0,25,0x92,68,0x90,164,0x94,170,0x91,62,0x93,63,0x95,67,0,51,0x80,0x84,0,17,0x82,0x83,0,34,0x90,168,0x94,170,0x92,67,0x93,62,0,51,0x80,0x81,0x84,0x85,0,17,0x82,0x83,0,34,0x90,170,0x91,67,0x92,62,0x95,62,0x93,67,0,51,0x80,0x81,0x85,0,17,0x82,0x83,0,34,0x90,164,0x94,170,0x91,62,0x92,68,0x95,67,0x93,63,0,51,0x80,0x81,0x84,0x85,0,17,0x82,0x83,0,34,0x90,164,0x94,170,0x91,62,0x92,67,0x95,67,0x93,62,0,51,0x80,0x81,0x84,0x85,0,17,0x82,0x83,0,34,0x90,168,0x94,170,0x91,67,0x92,67,0x95,62,0x93,62,0,51,0x80,0x84,0,17,0x82,0x83,0,34,0x90,164,0x94,170,0x92,68,0x93,63,0,51,0x80,0x81,0x84,0x85,0,17,0x82,0x83,0,34,0x90,170,0x91,62,0x92,67,0x95,67,0x93,62,0,51,0x80,0x81,0x85,0,17,0x82,0x83,0,34,0x90,164,0x94,170,0x91,62,0x92,68,0x95,67,0x93,63,0,51,0x80,0x84,0,17,0x82,0x83,0,34,0x90,168,0x94,170,0x92,62,0x93,67,0,51,0x80,0x81,0x84,0x85,0,17,0x82,0x83,0,34,0x90,170,0x91,62,0x92,70,0x95,67,0x93,65,0,51,0x80,0x81,0x85,0,17,0x82,0x83,0,34,0x90,164,0x94,170,0x91,62,0x92,67,0x95,67,0x93,72,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,170,0x91,67,0x92,72,0x95,62,0x93,67,0,51,0x80,0,17,0x81,0x82,0x83,0x85,0,34,0x90,168,0x94,170,0x91,67,0x92,68,0x95,62,0x93,73,0,51,0x80,0x84,0,17,0x82,0x83,0,34,0x90,170,0x92,67,0x93,72,0,51,0x80,0,17,0x81,0x82,0x83,0x85,0,34,0x90,164,0x94,170,0x91,67,0x92,67,0x95,62,0x93,72,0,51,0x80,0x84,0,17,0x82,0x83,0,34,0x90,164,0x94,170,0x92,68,0x93,73,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,168,0x94,170,0x91,67,0x92,72,0x95,62,0x93,67,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,170,0x91,62,0x92,72,0x95,67,0x93,67,0,51,0x80,0,17,0x81,0x82,0x83,0x85,0,34,0x90,164,0x94,170,0x91,62,0x92,73,0x95,67,0x93,68,0,51,0x80,0x84,0,17,0x82,0x83,0,25,0x81,0x85,0,8,0x92,67,0x90,164,0x94,170,0x91,70,0x93,72,0x95,65,0,51,0x80,0x84,0,17,0x82,0x83,0,25,0x81,0x85,0,8,0x92,67,0x90,168,0x94,170,0x91,61,0x93,72,0x95,66,0,51,0x80,0x84,0,17,0x82,0x83,0,34,0x90,164,0x94,170,0x92,73,0x93,68,0,51,0x80,0x84,0,17,0x82,0x83,0,25,0x81,0x85,0,8,0x92,67,0x90,170,0x91,67,0x93,72,0x95,62,0,51,0x80,0,17,0x82,0x83,0,34,0x90,164,0x94,170,0x92,73,0x93,68,0,51,0x80,0x84,0,17,0x82,0x83,0x85,0,25,0x81,0,8,0x92,67,0x90,168,0x94,170,0x91,57,0x93,72,0x95,62,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,170,0x91,67,0x92,70,0x95,62,0x93,75,0,51,0x80,0,17,0x82,0x83,0,34,0x90,164,0x94,170,0x92,72,0x93,67,0,51,0x80,0x84,0,17,0x82,0x83,0x85,0,25,0x81,0,8,0x92,72,0x90,170,0x91,57,0x93,67,0x95,62,0,51,0x80,0,17,0x81,0x82,0x83,0x85,0,34,0x90,168,0x94,170,0x91,62,0x92,68,0x95,67,0x93,73,0,51,0x80,0x84,0,17,0x82,0x83,0,34,0x90,170,0x92,67,0x93,72,0,51,0x80,0,17,0x81,0x82,0x83,0,25,0x85,0,8,0x92,72,0x90,164,0x94,170,0x91,57,0x93,67,0x95,62,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,164,0x94,170,0x91,67,0x92,73,0x95,62,0x93,68,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,168,0x94,170,0x91,62,0x92,67,0x95,57,0x93,72,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,170,0x91,62,0x92,67,0x95,67,0x93,72,0,51,0x80,0,17,0x81,0x82,0x83,0x85,0,34,0x90,164,0x94,170,0x91,65,0x92,73,0x95,70,0x93,68,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,164,0x94,170,0x91,66,0x92,67,0x95,61,0x93,72,0,51,0x80,0x84,0,17,0x82,0x83,0,34,0x90,168,0x94,170,0x92,67,0x93,72,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,164,0x94,170,0x91,67,0x92,73,0x95,62,0x93,68,0,51,0x80,0x84,0,17,0x82,0x83,0,34,0x90,170,0x92,67,0x93,72,0,43,0x81,0x85,0,8,0x80,0,17,0x82,0x83,0,34,0x90,164,0x94,170,0x91,62,0x92,68,0x95,67,0x93,73,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,168,0x94,170,0x91,65,0x92,72,0x95,70,0x93,67,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,170,0x91,62,0x92,70,0x95,67,0x93,75,0,51,0x80,0,17,0x82,0x83,0,34,0x90,164,0x94,170,0x92,72,0x93,67,0,51,0x80,0x84,0,8,0x81,0x85,0,8,0x82,0x83,0,34,0x90,170,0x91,62,0x92,67,0x95,67,0x93,72,0,51,0x80,0,17,0x81,0x82,0x83,0x85,0,34,0x90,168,0x94,170,0x91,62,0x92,73,0x95,67,0x93,68,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,170,0x91,65,0x92,67,0x95,70,0x93,72,0,51,0x80,0,17,0x81,0x82,0x83,0x85,0,34,0x90,164,0x94,170,0x91,62,0x92,67,0x95,67,0x93,72,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,164,0x94,170,0x91,65,0x92,73,0x95,70,0x93,68,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,168,0x94,170,0x91,67,0x92,72,0x95,62,0x93,67,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,170,0x91,65,0x92,72,0x95,70,0x93,67,0,51,0x80,0,17,0x81,0x82,0x83,0x85,0,34,0x90,164,0x94,170,0x91,67,0x92,68,0x95,62,0x93,73,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,164,0x94,170,0x91,72,0x92,67,0x95,67,0x93,72,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,168,0x94,170,0x91,67,0x92,72,0x95,62,0x93,67,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,164,0x94,170,0x91,73,0x92,68,0x95,68,0x93,73,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,170,0x91,62,0x92,72,0x95,67,0x93,67,0,51,0x80,0,17,0x81,0x82,0x83,0x85,0,34,0x90,164,0x94,170,0x91,74,0x92,73,0x95,69,0x93,68,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,168,0x94,170,0x91,62,0x92,67,0x95,67,0x93,72,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,170,0x91,68,0x92,75,0x95,73,0x93,70,0,51,0x80,0,17,0x81,0x82,0x83,0x85,0,34,0x90,164,0x94,170,0x91,62,0x92,72,0x95,67,0x93,67,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,170,0x91,67,0x92,72,0x95,72,0x93,67,0,51,0x80,0,17,0x81,0x82,0x83,0x85,0,34,0x90,168,0x94,170,0x91,67,0x92,73,0x95,62,0x93,68,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,170,0x91,70,0x92,72,0x95,65,0x93,67,0,51,0x80,0,17,0x81,0x82,0x83,0x85,0,34,0x90,164,0x94,170,0x91,67,0x92,67,0x95,62,0x93,72,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,164,0x94,170,0x91,67,0x92,68,0x95,62,0x93,73,0,51,0x80,0x84,0,17,0x81,0x82,0x83,0x85,0,34,0x90,168,0x94,170,0x91,74,0x92,67,0x95,79,0x93,72,0,51,0x80,0x84,0,17,0x82,0x83,0,34,0x90,170,0x92,72,0x93,67,0,51,0x80,0xF0}; | |
| const byte voicePins[] PROGMEM = {2, 3, 4, 5, 6, 7}; | |
| byte voiceEnabled[6]; | |
| byte voiceType[6]; | |
| byte states[6]; | |
| byte noiseCount[6]; | |
| unsigned long start[6]; | |
| unsigned int periods[6]; | |
| unsigned long nextFlip[6]; | |
| byte noise = 0; | |
| unsigned long t = 0; | |
| byte tFlip = 0; | |
| unsigned long nextCommandTime = 0; | |
| bool songPlaying = false; | |
| const unsigned int frequencies[89] PROGMEM = { | |
| 0, 27, 29, 30, | |
| 33, 35, 37, 39, 41, 44, 46, 49, 52, 55, 58, 62, | |
| 65, 69, 73, 78, 82, 87, 92, 98, 104, 110, 116, 123, | |
| 131, 138, 147, 155, 165, 175, 185, 196, 208, 220, 233, 247, | |
| 262, 277, 294, 311, 330, 349, 370, 392, 415, 440, 466, 494, | |
| 523, 554, 587, 622, 659, 698, 740, 784, 831, 880, 932, 988, | |
| 1046, 1109, 1175, 1244, 1318, 1397, 1480, 1568, 1661, 1760, 1865, 1975, | |
| 2093, 2217, 2349, 2489, 2637, 2794, 2960, 3136, 3322, 3520, 3729, 3951, | |
| 4186, | |
| }; | |
| unsigned int index = sizeof(score); | |
| void songWait() { | |
| while (songPlaying) { | |
| delay(1); | |
| } | |
| } | |
| void songStop() { | |
| songPlaying = false; | |
| index = sizeof(score); | |
| for (byte i = 0; i < 6; i++) { | |
| voiceEnabled[i] = 0; | |
| voiceType[i] = 0; | |
| start[i] = 0; | |
| states[i] = 0; | |
| periods[i] = 0; | |
| nextFlip[i] = 0; | |
| } | |
| } | |
| void songPlay() { | |
| index = 0; | |
| songPlaying = true; | |
| for (byte i = 0; i < 6; i++) { | |
| byte p = pgm_read_byte (voicePins + i); | |
| pinMode(p, INPUT_PULLUP); | |
| } | |
| // TIMER 0 for interrupt frequency 1000 Hz: | |
| cli(); // stop interrupts | |
| TCCR0A = 0; // set entire TCCR0A register to 0 | |
| TCCR0B = 0; // same for TCCR0B | |
| TCNT0 = 0; // initialize counter value to 0 | |
| // set compare match register for 1000 Hz increments | |
| OCR0A = 300; // = 16000000 / (64 * 1000) - 1 (must be <256) | |
| // turn on CTC mode | |
| TCCR0B |= (1 << WGM01); | |
| // Set CS02, CS01 and CS00 bits for 64 prescaler | |
| TCCR0B |= (0 << CS02) | (1 << CS01) | (1 << CS00); | |
| // enable timer compare interrupt | |
| TIMSK0 |= (1 << OCIE0A); | |
| sei(); // allow interrupts | |
| // TIMER 1 for interrupt frequency 22050 Hz: | |
| cli(); // stop interrupts | |
| TCCR1A = 0; // set entire TCCR1A register to 0 | |
| TCCR1B = 0; // same for TCCR1B | |
| TCNT1 = 0; // initialize counter value to 0 | |
| // set compare match register for 25000 Hz increments | |
| OCR1A = 950; // = 16000000 / (1 * 22050) - 1 (must be <65536) | |
| // turn on CTC mode | |
| TCCR1B |= (1 << WGM12); | |
| // Set CS12, CS11 and CS10 bits for 1 prescaler | |
| TCCR1B |= (0 << CS12) | (0 << CS11) | (1 << CS10); | |
| // enable timer compare interrupt | |
| TIMSK1 |= (1 << OCIE1A); | |
| sei(); // allow interrupts | |
| } | |
| byte rng() { | |
| static uint8_t s = 0xaa, a = 0; | |
| s ^= s << 3; | |
| s ^= s >> 5; | |
| s ^= a++ >> 2; | |
| return s; | |
| } | |
| void startVoice(byte voice, unsigned int frequency) { | |
| byte p = pgm_read_byte (voicePins + voice); | |
| pinMode(p, OUTPUT); | |
| periods[voice] = 1000000 / frequency / 2; | |
| nextFlip[voice] = t + periods[voice]; | |
| voiceEnabled[voice] = 1; | |
| voiceType[voice] = 0; | |
| } | |
| void startDrum(byte voice, byte n) { | |
| n = n - 128; | |
| byte p = pgm_read_byte (voicePins + voice); | |
| pinMode(p, OUTPUT); | |
| byte drum_type = 0; | |
| // KICK | |
| if (n == 35 || n == 36) { | |
| drum_type = 2; | |
| } | |
| // SNARE | |
| if (n == 37 || n == 38 || n == 40) { | |
| drum_type = 4; | |
| } | |
| // HAT | |
| if (n == 42 || n == 44 || n == 69) { | |
| drum_type = 1; | |
| } | |
| // OPEN HAT | |
| if (n == 46) { | |
| } | |
| if (drum_type != 0) { | |
| voiceType[voice] = drum_type; | |
| voiceEnabled[voice] = 1; | |
| periods[voice] = 1; | |
| start[voice] = t; | |
| } | |
| } | |
| ISR(TIMER0_COMPA_vect) { | |
| if (t >= nextCommandTime) { | |
| if (index < sizeof(score)) { | |
| byte command = pgm_read_byte (score + index); | |
| byte type = bitRead(command, 7); | |
| byte val1 = 0; | |
| for (byte i = 0; i < 4; i++) { | |
| bitWrite(val1, i, bitRead(command, i + 4)); | |
| } | |
| byte val2 = 0; | |
| for (byte i = 0; i < 4; i++) { | |
| bitWrite(val2, i, bitRead(command, i)); | |
| } | |
| type = bitRead(command, 7); | |
| if (type == 1) { | |
| if (val1 == 0x9) { | |
| byte note = pgm_read_byte (score + index + 1); | |
| byte voice = val2; | |
| unsigned int freq = 0; | |
| if (note > 127) { // IF HIGHER THAN PIANO RANGE, USE PERCUSSION | |
| startDrum(voice, note); | |
| } | |
| else { // If we're in piano range, produce the corresponding frequency | |
| freq = pgm_read_word(frequencies + note - 20); | |
| startVoice(voice, freq); | |
| } | |
| index += 2; | |
| } | |
| if (val1 == 0x8) { | |
| byte voice = val2; | |
| voiceEnabled[voice] = 0; | |
| byte p = pgm_read_byte (voicePins + voice); | |
| pinMode(p, INPUT_PULLUP); | |
| index += 1; | |
| } | |
| if (val1 == 0xF) { | |
| songStop(); | |
| } | |
| if (val1 == 0xE) { | |
| index = 0; | |
| } | |
| } | |
| else if (type == 0) { | |
| byte next = pgm_read_byte (score + index + 1); | |
| unsigned long wait = 0; | |
| for (byte i = 0; i < 7; i++) { | |
| bitWrite(wait, i + 8, bitRead(command, i)); | |
| } | |
| for (byte i = 0; i < 8; i++) { | |
| bitWrite(wait, i, bitRead(next, i)); | |
| } | |
| nextCommandTime += (wait * 1000); // fixed 5 years later | |
| index += 2; | |
| } | |
| } | |
| } | |
| //limit hh closed and kick durations | |
| for (byte i = 0; i < 6; i++) { | |
| if (voiceType[i] == 1 || voiceType[i] == 2 || voiceType[i] == 3) { | |
| if (t - start[i] >= 30000) { | |
| voiceEnabled[i] = 0; | |
| voiceType[i] = 0; | |
| start[i] = 0; | |
| byte p = pgm_read_byte (voicePins + i); | |
| pinMode(p, INPUT_PULLUP); | |
| } | |
| } | |
| // limit fast snare durations | |
| if (voiceType[i] == 4) { | |
| if (t - start[i] >= 80000) { | |
| voiceEnabled[i] = 0; | |
| voiceType[i] = 0; | |
| start[i] = 0; | |
| byte p = pgm_read_byte (voicePins + i); | |
| pinMode(p, INPUT_PULLUP); | |
| } | |
| } | |
| } | |
| } | |
| ISR(TIMER1_COMPA_vect) { | |
| t = micros(); | |
| bool newNoise = false; | |
| for (byte i = 0; i < 6; i++) { | |
| if (voiceEnabled[i] == 1) { | |
| byte p = pgm_read_byte (voicePins + i); | |
| byte state = 0; | |
| if (voiceType[i] == 0) { | |
| if (t > nextFlip[i]) { | |
| nextFlip[i] += periods[i]; | |
| states[i] = !states[i]; | |
| digitalWrite(p, states[i]); | |
| } | |
| } | |
| else if (voiceType[i] == 1 || voiceType[i] == 4) { // Snare | |
| if (newNoise == false) { | |
| newNoise = true; | |
| noise = bitRead(rng(), 0); | |
| } | |
| digitalWriteFast(p, noise); | |
| } | |
| else if (voiceType[i] == 2) { // Hat | |
| if (noiseCount[i] == 2) { | |
| noiseCount[i] = 0; | |
| if (newNoise == false) { | |
| newNoise = true; | |
| noise = bitRead(rng(), 0); | |
| } | |
| digitalWriteFast(p, noise); | |
| } | |
| else { | |
| noiseCount[i]++; | |
| } | |
| } | |
| else if (voiceType[i] == 3) { // Kick | |
| if (noiseCount[i] == 3) { | |
| noiseCount[i] = 0; | |
| if (newNoise == false) { | |
| newNoise = true; | |
| noise = bitRead(rng(), 0); | |
| } | |
| digitalWriteFast(p, noise); | |
| } | |
| else { | |
| noiseCount[i]++; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| void setup() { | |
| songPlay(); | |
| songWait(); | |
| } | |
| void loop() { | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment