├── README.md ├── doc └── STM32F4_Discovery_Arduino.PNG └── examples ├── AccelerometerControlsSound ├── AccelerometerControlsSound.ino ├── BufferPlayer.cpp ├── BufferPlayer.h ├── CS43L22_STM32.cpp ├── CS43L22_STM32.h ├── LIS3DSx.cpp ├── LIS3DSx.h ├── wavetables.c └── wavetables.h ├── AudioBufferPlayer_sineWave ├── AudioBufferPlayer_sineWave.ino ├── BufferPlayer.cpp ├── BufferPlayer.h ├── CS43L22_STM32.cpp └── CS43L22_STM32.h ├── LIS3DSx_Accelerometer ├── LIS3DSx.cpp ├── LIS3DSx.h └── LIS3DSx_Accelerometer.ino └── MicrophonePlayBack ├── BufferPlayer.cpp ├── BufferPlayer.h ├── CS43L22_STM32.cpp ├── CS43L22_STM32.h ├── Microphone.cpp ├── Microphone.h └── MicrophonePlayBack.ino /README.md: -------------------------------------------------------------------------------- 1 | # Arduino_STM32F4_Discovery 2 | 3 | ## What? 4 | The [STM32F4 Discovery](http://www.st.com/en/evaluation-tools/stm32f4discovery.html) is a development board with an ARM microcontrolller from STM which is very suitable for audio applications. 5 | Now it is possible to program it with the Arduino-IDE if you have installed the plugins. 6 | 7 | ## Why 8 | Programming the STM32F407 microcontroller is usually very complicated if you are using the common deveoper IDEs and frameworks. 9 | With Arduino-IDE it is now possible for every one. 10 | 11 | ## Demo Applications 12 | - playing sound 13 | - using the accelerometer 14 | - controlling the sound with the accelerometer 15 | 16 | ## Installation 17 | 18 | You have to install the [STM32GENERIC framework](https://github.com/ChrisMicro/STM32GENERIC). 19 | 20 | The installatiion instructions you will [find here](https://danieleff.github.io/STM32GENERIC/). 21 | 22 |

23 | 24 |

25 | 26 | -------------------------------------------------------------------------------- /doc/STM32F4_Discovery_Arduino.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ChrisMicro/Arduino_STM32F4_Discovery/7505529aecfe7478c3bb9e0b37f901f34da56289/doc/STM32F4_Discovery_Arduino.PNG -------------------------------------------------------------------------------- /examples/AccelerometerControlsSound/AccelerometerControlsSound.ino: -------------------------------------------------------------------------------- 1 | /* 2 | accelerometer controlls sound pitch and repetion rate 3 | 4 | Framework used: Arduino compatiple STM32GENERIC 5 | Hardware: STM32F4 Discovery 6 | codec: CS43L22 Audio DAC 7 | accelerometer: LIS302DL or LIS3DSH 8 | ( depends on the verison of the STM32F4 Discovery board ) 9 | 10 | ************************************************************************************* 11 | 12 | This program is free software; you can redistribute it and/or modify 13 | it under the terms of the GNU General Public License as published by 14 | the Free Software Foundation; either version 2 of the License, or 15 | (at your option) any later version. 16 | 17 | ********************************** list of outhors ********************************** 18 | v0.1 2.Mai.2017 C. ChrisMicro initial version 19 | 20 | It is mandatory to keep the list of authors in this code. 21 | Please add your name if you improve/extend something 22 | 2017 ChrisMicro 23 | ************************************************************************************* 24 | */ 25 | 26 | #include "LIS3DSx.h" 27 | #include "BufferPlayer.h" 28 | #include "wavetables.h" 29 | 30 | #define SERIALINTERFACE SerialUSB 31 | 32 | LIS3DSx Accelerometer; 33 | BufferPlayer Player; 34 | 35 | 36 | #define NUMLEDS 4 37 | const uint8_t Led[] = {LED_GREEN, LED_ORANGE, LED_RED, LED_BLUE}; 38 | 39 | void setLed(uint8_t n, uint8_t state) 40 | { 41 | if(n==4)digitalWrite(Led[n], !state); 42 | else digitalWrite(Led[n], state); 43 | } 44 | 45 | void setup() 46 | { 47 | //SERIALINTERFACE.begin(115200); 48 | 49 | delay(1000); 50 | 51 | //SERIALINTERFACE.println("\n accelerometer"); 52 | 53 | // print sensor informatiion 54 | Accelerometer.begin(); 55 | Player.begin(16000); 56 | for (int n = 0; n < NUMLEDS; n++) pinMode(Led[n], OUTPUT); 57 | 58 | } 59 | 60 | uint8_t LedCounter=0; 61 | void loop() 62 | { 63 | //SERIALINTERFACE.print(" X: "); SERIALINTERFACE.print ( Accelerometer.getX_g() ); 64 | //SERIALINTERFACE.print(" Y: "); SERIALINTERFACE.print ( Accelerometer.getY_g() ); 65 | //SERIALINTERFACE.print(" Z: "); SERIALINTERFACE.println( Accelerometer.getZ_g() ); 66 | 67 | //SERIALINTERFACE.print(" abosolute acceleration: "); SERIALINTERFACE.println( Accelerometer.absolute_g() ); 68 | 69 | //delay(500); 70 | float duration; 71 | float randomSpeedFactor; 72 | 73 | duration = 0.1 + abs(Accelerometer.getX_g()); 74 | randomSpeedFactor = 0.05 + abs(Accelerometer.getZ_g()); 75 | 76 | //SERIALINTERFACE.print("duration"); SERIALINTERFACE.print(duration); 77 | 78 | if ( Accelerometer.getZ_g() > 0 ) Player.playBuffer(piano , SONGLEN, duration, randomSpeedFactor); 79 | else Player.playBuffer(sabine, SONGLEN, duration, randomSpeedFactor); 80 | 81 | setLed(LedCounter++,0); 82 | 83 | if(LedCounter>3)LedCounter=0; 84 | setLed(LedCounter,1); 85 | 86 | } 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /examples/AccelerometerControlsSound/BufferPlayer.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Blocking buffer player using the 4 | CS43L22 codec class for Arduino STM32GENERIC 5 | 6 | ************************************************************************************* 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | (at your option) any later version. 12 | 13 | ********************************** list of outhors ********************************** 14 | v0.1 2.Mai.2017 C. ChrisMicro initial version 15 | 16 | It is mandatory to keep the list of authors in this code. 17 | Please add your name if you improve/extend something 18 | 2017 ChrisMicro 19 | ************************************************************************************* 20 | */ 21 | #include "Arduino.h" 22 | #include "BufferPlayer.h" 23 | #include "CS43L22_STM32.h" 24 | #include "I2S.h" 25 | 26 | I2SClass I2S(SPI3, PC12 /*sd*/ , PA4 /*ws*/, PC10 /*ck*/, PC7/* MCK*/); // setup for STM32F4 Discovery, check your board schematic 27 | 28 | CS43L22_STM32 Codec; 29 | 30 | #define AUDIOCODEC_CS PD4 31 | 32 | BufferPlayer::BufferPlayer() 33 | { 34 | 35 | }; 36 | 37 | void BufferPlayer::begin(uint32_t samplingFrequency_Hz) 38 | { 39 | SamplingFrequency=samplingFrequency_Hz; 40 | 41 | pinMode(AUDIOCODEC_CS, OUTPUT); // the chip select pin of the codec needs to be enabled 42 | 43 | // digitalWrite(AUDIOCODEC_CS, HIGH); 44 | // start I2S 45 | // I2S will also produce MCK for the codec of aroung 12Mhz 46 | // without MCK the CS43L22 is not working 47 | I2S.begin(I2S_PHILIPS_MODE, samplingFrequency_Hz, 16); 48 | 49 | digitalWrite(AUDIOCODEC_CS, HIGH); // enable codec 50 | Codec.begin(); 51 | } 52 | 53 | #define DACZEROAMPLITUDE 0x4000 54 | int Amplitude = 100; 55 | 56 | // unsigned byte buffer player 57 | void BufferPlayer::playBuffer(const uint8_t *table, uint32_t tableLength, float maxDuration_sec, float speedFactor) 58 | { 59 | uint32_t duration_ms = maxDuration_sec * 1000; 60 | float index = 0; 61 | 62 | uint32_t startTime = millis(); 63 | while (millis() - startTime < duration_ms) 64 | { 65 | if (index < tableLength) 66 | { 67 | int dacValue = DACZEROAMPLITUDE + ((int)table[(int)index] - 128) * Amplitude; 68 | I2S.write(dacValue); // left channel 69 | I2S.write(dacValue); // right channel 70 | index+=speedFactor; 71 | } else 72 | { 73 | I2S.write(DACZEROAMPLITUDE); 74 | I2S.write(DACZEROAMPLITUDE); 75 | } 76 | } 77 | } 78 | void BufferPlayer::playBuffer(const uint8_t *table, uint32_t tableLength) 79 | { 80 | float maxDuration_sec = tableLength / SamplingFrequency; 81 | float speedFactor = 1; 82 | playBuffer(table, tableLength, maxDuration_sec, speedFactor ); 83 | } 84 | 85 | // 16 bit buffer player 86 | // table values: full scale range -32768..+32767 87 | void BufferPlayer::playBuffer(int16_t *table, uint32_t tableLength, float maxDuration_sec, float speedFactor) 88 | { 89 | uint32_t duration_ms = maxDuration_sec * 1000; 90 | float index = 0; 91 | 92 | uint32_t startTime = millis(); 93 | while (millis() - startTime < duration_ms) 94 | { 95 | if (index < tableLength) 96 | { 97 | 98 | uint16_t dacValue = (int32_t ) DACZEROAMPLITUDE*2 + table[(int)index]; 99 | dacValue=dacValue>>1; // for unknown reaons the DAC goes only from 0..0x7FFF 100 | 101 | I2S.write(dacValue); // left channel 102 | I2S.write(dacValue); // right channel 103 | index += speedFactor; 104 | } else 105 | { 106 | I2S.write(DACZEROAMPLITUDE); 107 | I2S.write(DACZEROAMPLITUDE); 108 | } 109 | } 110 | 111 | } 112 | 113 | void BufferPlayer::playBuffer(int16_t *table, uint32_t tableLength) 114 | { 115 | float maxDuration_sec = tableLength / SamplingFrequency; 116 | float speedFactor = 1; 117 | playBuffer(table, tableLength, maxDuration_sec, speedFactor ); 118 | } 119 | 120 | 121 | void BufferPlayer::end() 122 | { 123 | digitalWrite(AUDIOCODEC_CS, LOW); // disable codec, enough noise, stop it !! 124 | } 125 | 126 | void BufferPlayer::setVolume(uint8_t vol) 127 | { 128 | Codec.setVolume(vol); 129 | } 130 | 131 | -------------------------------------------------------------------------------- /examples/AccelerometerControlsSound/BufferPlayer.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Blocking buffer player using the 4 | CS43L22 codec class for Arduino STM32GENERIC 5 | 6 | ************************************************************************************* 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | (at your option) any later version. 12 | 13 | ********************************** list of outhors ********************************** 14 | v0.1 2.Mai.2017 C. ChrisMicro initial version 15 | 16 | It is mandatory to keep the list of authors in this code. 17 | Please add your name if you improve/extend something 18 | 2017 ChrisMicro 19 | ************************************************************************************* 20 | */ 21 | #include 22 | 23 | typedef struct { 24 | uint8_t * signalBuffer; 25 | uint32_t signalBufferLength; 26 | } SampleBuffer_t; 27 | 28 | class BufferPlayer 29 | { 30 | public: 31 | BufferPlayer(); 32 | void begin(uint32_t samplingFrequency_Hz); 33 | void playBuffer(const uint8_t *table, uint32_t tableLength, float duration_sec, float speedFactor); 34 | void playBuffer(const uint8_t *table, uint32_t tableLength); 35 | void playBuffer(int16_t *table, uint32_t tableLength, float duration_sec, float speedFactor); 36 | void playBuffer(int16_t *table, uint32_t tableLength); 37 | void end(); 38 | void setVolume(uint8_t vol); 39 | 40 | private: 41 | uint32_t SamplingFrequency; 42 | 43 | }; 44 | -------------------------------------------------------------------------------- /examples/AccelerometerControlsSound/CS43L22_STM32.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | CS43L22 codec class for Arduino STM32GENERIC 4 | 5 | ************************************************************************************* 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | ********************************** list of outhors ********************************** 13 | v0.1 2.Mai.2017 C. ChrisMicro initial version 14 | 15 | It is mandatory to keep the list of authors in this code. 16 | Please add your name if you improve/extend something 17 | 2017 ChrisMicro 18 | ************************************************************************************* 19 | */ 20 | 21 | // The CS43L22 is a Low Power, Stereo DAC w/Headphone & Speaker Amps 22 | // 23 | // related links: 24 | // data sheet CS43L22: https://d3uzseaevmutz1.cloudfront.net/pubs/proDatasheet/CS43L22_F2.pdf 25 | // https://github.com/abhishek-kakkar/STM32F4Player/blob/master/STM32F4_Discovery_demo/codec_CS43L22.c 26 | // https://www.mikrocontroller.net/topic/413574#4814689 27 | 28 | #include "CS43L22_STM32.h" 29 | 30 | CS43L22_STM32::CS43L22_STM32() 31 | { 32 | // before calling this class 33 | // remember for correct working codec: 34 | // 1. enable code clock ( usually done by I2S driver ) 35 | // enable codec chip select line 36 | } 37 | 38 | #define CODEC_ADDR 0x4A // i2c address ( 2*0x4A=0x94) 39 | 40 | void codec_writeReg(unsigned char reg, unsigned char data) 41 | { 42 | uint8_t error; 43 | Wire.beginTransmission(CODEC_ADDR); 44 | Wire.write(reg); 45 | Wire.write(data); 46 | error = Wire.endTransmission(); 47 | } 48 | 49 | // codec setup from 50 | // https://github.com/mubase/STM32F4-Arduino-core/blob/master/cores/maple/libmaple/stm32f4codec/codec.h 51 | // TBD: to be refactured 52 | void codec_reg_setup(void) 53 | { 54 | Wire.begin(); 55 | 56 | codec_writeReg(0x02, 0x01); // power save registers -> all on 57 | codec_writeReg(0x00, 0x99); 58 | codec_writeReg(0x47, 0x80); //inits 59 | codec_writeReg(0x0d, 0x03); // playback ctrl 60 | codec_writeReg(0x32, (1 << 7)); // vol 61 | codec_writeReg(0x32, (0 << 7)); // vol 62 | codec_writeReg(0x00, 0x00); // inits 63 | codec_writeReg(0x04, 0xaf); // power ctrl 64 | codec_writeReg(0x0d, 0x70); 65 | codec_writeReg(0x05, 0x81); // clocking: auto speed is determined by the MCLK/LRCK ratio. 66 | codec_writeReg(0x06, 0x07); // DAC interface format, I²S 16 bit 67 | codec_writeReg(0x0a, 0x00); 68 | codec_writeReg(0x27, 0x00); 69 | codec_writeReg(0x80, 0x0a); // both channels on 70 | codec_writeReg(0x1f, 0x0f); 71 | codec_writeReg(0x02, 0x9e); 72 | 73 | } 74 | 75 | void CS43L22_STM32::begin() 76 | { 77 | Wire.begin(); 78 | codec_reg_setup(); 79 | } 80 | 81 | void CS43L22_STM32::setVolume(uint8_t volumeValue) 82 | { 83 | int8_t vol; 84 | if(volumeValue>100)volumeValue=100; 85 | //strange mapping, see datasheet 86 | //vol=25; // -102 dB 87 | //vol=24 // +12dB 88 | 89 | vol=-90+(float)80*volumeValue/100; 90 | 91 | codec_writeReg(0x20, vol); 92 | codec_writeReg(0x21, vol); 93 | } 94 | -------------------------------------------------------------------------------- /examples/AccelerometerControlsSound/CS43L22_STM32.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | CS43L22 codec class for Arduino STM32GENERIC 4 | 5 | 6 | ************************************************************************************* 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | (at your option) any later version. 12 | 13 | ********************************** list of outhors ********************************** 14 | v0.1 2.Mai.2017 C. ChrisMicro initial version 15 | 16 | It is mandatory to keep the list of authors in this code. 17 | Please add your name if you improve/extend something 18 | 2017 ChrisMicro 19 | ************************************************************************************* 20 | */ 21 | #include 22 | 23 | class CS43L22_STM32 24 | { 25 | public: 26 | CS43L22_STM32(); 27 | void begin(); 28 | void setVolume(uint8_t vol); 29 | }; 30 | 31 | -------------------------------------------------------------------------------- /examples/AccelerometerControlsSound/LIS3DSx.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | MEMS driver 3 | 4 | accelerometer: LIS302DL or LIS3DSH 5 | 6 | MEMS digital output motion sensor: 7 | ultra-low-power high-performance three-axis "nano" accelerometer 8 | 9 | ************************************************************************************* 10 | 11 | This program is free software; you can redistribute it and/or modify 12 | it under the terms of the GNU General Public License as published by 13 | the Free Software Foundation; either version 2 of the License, or 14 | (at your option) any later version. 15 | 16 | ********************************** list of outhors ********************************** 17 | v0.1 2.Mai.2017 C. ChrisMicro initial version 18 | 19 | It is mandatory to keep the list of authors in this code. 20 | Please add your name if you improve/extend something 21 | 2017 ChrisMicro 22 | ************************************************************************************* 23 | */ 24 | #include 25 | #include 26 | 27 | #include "LIS3DSx.h" 28 | 29 | #define SERIALINTERFACE SerialUSB 30 | 31 | #define CS PE3 32 | 33 | void accelerometer_SPI_select() 34 | { 35 | digitalWrite(CS, LOW); // 0=SPI communication mode, 1=SPI IDLE MODE 36 | delayMicroseconds(50); 37 | } 38 | 39 | void accelerometer_SPI_release() 40 | { 41 | digitalWrite(CS, HIGH); 42 | delayMicroseconds(50); 43 | } 44 | 45 | #define READREGISTERCOMMAND 0x80 46 | #define DELAYBETWEENTRANSFERS 10 47 | uint8_t spiRead(uint8_t registerAddress) 48 | { 49 | uint8_t r; 50 | 51 | accelerometer_SPI_select(); 52 | SPI.transfer( registerAddress | READREGISTERCOMMAND ); 53 | delayMicroseconds(DELAYBETWEENTRANSFERS); 54 | r = SPI.transfer(0); // dummy write, data read 55 | delayMicroseconds(DELAYBETWEENTRANSFERS); 56 | accelerometer_SPI_release(); 57 | 58 | return r; 59 | } 60 | 61 | void LIS3DSx::begin() 62 | { 63 | // configure SPI 64 | pinMode(CS, OUTPUT); 65 | 66 | SPI.begin(); 67 | SPI.setDataMode(SPI_MODE3); 68 | SPI.setBitOrder(MSBFIRST); 69 | 70 | // configure sensor 71 | accelerometer_SPI_select(); 72 | SPI.transfer(0x20); // CTRL4 ODR register 73 | //delay(10); 74 | SPI.transfer(0x47); // 25 Hz update, enable x,y,z 75 | accelerometer_SPI_release(); 76 | } 77 | 78 | int16_t LIS3DSx::getX() 79 | { 80 | int32_t a,aa; 81 | int16_t ag; 82 | 83 | a= spiRead ( 0x28 ); 84 | aa = spiRead( 0x29 ); 85 | 86 | return (a + (aa << 8)); 87 | } 88 | 89 | int16_t LIS3DSx::getY() 90 | { 91 | int32_t a,aa; 92 | int16_t ag; 93 | 94 | a= spiRead ( 0x2A ); 95 | aa = spiRead( 0x2B ); 96 | 97 | return (a + (aa << 8)); 98 | 99 | } 100 | 101 | int16_t LIS3DSx::getZ() 102 | { 103 | int32_t a,aa; 104 | int16_t ag; 105 | 106 | a= spiRead ( 0x2C ); 107 | aa = spiRead( 0x2D ); 108 | 109 | return (a + (aa << 8)); 110 | } 111 | 112 | #define ONE_G 16384 113 | 114 | float LIS3DSx::getX_g() 115 | { 116 | return getX()/(float)ONE_G; 117 | } 118 | 119 | float LIS3DSx::getY_g() 120 | { 121 | return getY()/(float)ONE_G; 122 | } 123 | 124 | float LIS3DSx::getZ_g() 125 | { 126 | return getZ()/(float)ONE_G; 127 | } 128 | 129 | float LIS3DSx::absolute_g() 130 | { 131 | float g; 132 | g=sqrt(getX_g()*getX_g()+getY_g()*getY_g()+getZ_g()*getZ_g()); 133 | return g; 134 | } 135 | 136 | 137 | uint8_t LIS3DSx::getChipVersion() 138 | { 139 | uint8_t whoAmI=spiRead(0x0F); 140 | return whoAmI; 141 | } 142 | 143 | 144 | -------------------------------------------------------------------------------- /examples/AccelerometerControlsSound/LIS3DSx.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | class LIS3DSx 4 | { 5 | public: 6 | void begin(); 7 | uint8_t getChipVersion(); 8 | int16_t getX(); 9 | int16_t getY(); 10 | int16_t getZ(); 11 | float getX_g(); 12 | float getY_g(); 13 | float getZ_g(); 14 | float absolute_g(); 15 | }; 16 | 17 | -------------------------------------------------------------------------------- /examples/AccelerometerControlsSound/wavetables.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | const uint8_t sabine[] = { 4 | 128 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 5 | 127 , 127 , 127 , 126 , 126 , 125 , 126 , 125 , 125 , 126 , 126 , 127 , 128 , 128 , 127 , 126 , 127 , 126 , 127 , 128 , 127 , 128 , 126 , 127 , 127 , 128 , 127 , 128 , 128 , 129 , 129 , 130 , 6 | 129 , 128 , 129 , 128 , 129 , 128 , 127 , 128 , 127 , 127 , 128 , 129 , 128 , 128 , 127 , 128 , 129 , 130 , 131 , 130 , 130 , 129 , 129 , 129 , 130 , 131 , 132 , 132 , 131 , 130 , 129 , 129 , 7 | 128 , 128 , 127 , 128 , 127 , 128 , 128 , 128 , 128 , 126 , 126 , 126 , 127 , 127 , 128 , 129 , 128 , 127 , 126 , 125 , 126 , 127 , 128 , 128 , 128 , 128 , 128 , 127 , 126 , 127 , 126 , 127 , 8 | 126 , 125 , 126 , 125 , 126 , 125 , 126 , 125 , 126 , 125 , 126 , 125 , 125 , 125 , 124 , 123 , 123 , 122 , 123 , 122 , 123 , 122 , 123 , 123 , 124 , 124 , 125 , 126 , 125 , 124 , 125 , 126 , 9 | 126 , 125 , 126 , 127 , 126 , 127 , 128 , 127 , 128 , 127 , 128 , 127 , 128 , 128 , 128 , 129 , 129 , 128 , 127 , 126 , 126 , 124 , 123 , 122 , 123 , 123 , 123 , 125 , 126 , 128 , 129 , 130 , 10 | 130 , 131 , 130 , 130 , 129 , 128 , 129 , 130 , 130 , 131 , 130 , 131 , 132 , 131 , 132 , 131 , 132 , 132 , 131 , 130 , 129 , 128 , 126 , 124 , 121 , 118 , 116 , 115 , 115 , 119 , 122 , 126 , 11 | 130 , 133 , 134 , 134 , 132 , 129 , 128 , 126 , 124 , 125 , 127 , 129 , 130 , 131 , 132 , 132 , 131 , 130 , 131 , 131 , 132 , 132 , 131 , 128 , 125 , 120 , 115 , 111 , 109 , 108 , 110 , 115 , 12 | 120 , 126 , 131 , 135 , 135 , 134 , 132 , 127 , 124 , 122 , 121 , 121 , 123 , 124 , 125 , 127 , 128 , 130 , 131 , 133 , 135 , 136 , 135 , 134 , 131 , 127 , 123 , 118 , 114 , 111 , 109 , 108 , 13 | 111 , 114 , 121 , 128 , 135 , 139 , 139 , 136 , 131 , 126 , 120 , 120 , 118 , 121 , 125 , 129 , 131 , 130 , 128 , 126 , 126 , 128 , 132 , 137 , 142 , 143 , 142 , 140 , 135 , 132 , 130 , 128 , 14 | 127 , 125 , 121 , 117 , 112 , 111 , 112 , 118 , 127 , 136 , 143 , 145 , 142 , 133 , 125 , 116 , 111 , 112 , 115 , 123 , 130 , 134 , 137 , 135 , 132 , 128 , 125 , 124 , 126 , 130 , 134 , 136 , 15 | 137 , 136 , 133 , 132 , 128 , 125 , 119 , 114 , 111 , 107 , 109 , 113 , 122 , 131 , 141 , 147 , 147 , 142 , 132 , 124 , 116 , 113 , 113 , 119 , 128 , 135 , 139 , 138 , 135 , 126 , 121 , 122 , 16 | 124 , 126 , 127 , 132 , 137 , 138 , 138 , 138 , 140 , 139 , 135 , 128 , 120 , 112 , 104 , 101 , 107 , 118 , 132 , 144 , 155 , 156 , 150 , 136 , 122 , 113 , 106 , 109 , 116 , 128 , 137 , 144 , 17 | 143 , 136 , 128 , 120 , 118 , 120 , 126 , 133 , 139 , 142 , 144 , 142 , 139 , 138 , 140 , 136 , 130 , 121 , 110 , 103 , 95 , 96 , 103 , 117 , 133 , 147 , 157 , 153 , 144 , 128 , 115 , 105 , 18 | 102 , 109 , 119 , 133 , 141 , 146 , 142 , 132 , 124 , 115 , 113 , 115 , 121 , 130 , 136 , 139 , 139 , 136 , 133 , 135 , 139 , 145 , 145 , 137 , 125 , 107 , 93 , 81 , 81 , 92 , 112 , 136 , 19 | 156 , 167 , 163 , 150 , 127 , 110 , 96 , 94 , 103 , 119 , 137 , 148 , 152 , 143 , 128 , 115 , 106 , 106 , 113 , 125 , 138 , 147 , 151 , 147 , 142 , 138 , 139 , 142 , 149 , 148 , 137 , 115 , 20 | 95 , 77 , 67 , 69 , 86 , 120 , 151 , 180 , 192 , 187 , 160 , 126 , 98 , 79 , 74 , 80 , 105 , 129 , 144 , 148 , 144 , 133 , 119 , 113 , 115 , 124 , 133 , 142 , 147 , 145 , 138 , 130 , 21 | 127 , 131 , 143 , 156 , 169 , 169 , 152 , 119 , 83 , 61 , 51 , 62 , 88 , 135 , 178 , 204 , 211 , 196 , 163 , 115 , 79 , 61 , 65 , 83 , 112 , 149 , 169 , 173 , 160 , 140 , 118 , 106 , 22 | 108 , 116 , 131 , 142 , 149 , 149 , 141 , 131 , 125 , 129 , 145 , 164 , 178 , 180 , 161 , 119 , 79 , 49 , 42 , 50 , 80 , 130 , 178 , 210 , 211 , 198 , 155 , 101 , 60 , 44 , 53 , 70 , 23 | 108 , 149 , 177 , 174 , 157 , 134 , 106 , 92 , 92 , 106 , 124 , 138 , 146 , 146 , 139 , 124 , 118 , 124 , 144 , 168 , 191 , 201 , 191 , 157 , 102 , 61 , 34 , 34 , 50 , 95 , 156 , 201 , 24 | 222 , 212 , 190 , 133 , 79 , 44 , 39 , 61 , 86 , 134 , 174 , 193 , 180 , 153 , 121 , 90 , 81 , 85 , 108 , 127 , 145 , 154 , 153 , 140 , 126 , 120 , 131 , 153 , 181 , 201 , 202 , 171 , 25 | 113 , 65 , 28 , 23 , 25 , 67 , 134 , 199 , 231 , 234 , 219 , 159 , 94 , 44 , 34 , 40 , 68 , 119 , 175 , 203 , 192 , 164 , 124 , 87 , 66 , 72 , 95 , 119 , 143 , 156 , 163 , 149 , 26 | 135 , 123 , 128 , 149 , 171 , 192 , 189 , 155 , 104 , 59 , 29 , 19 , 29 , 77 , 141 , 203 , 231 , 233 , 209 , 153 , 92 , 50 , 40 , 44 , 75 , 126 , 175 , 196 , 186 , 163 , 128 , 99 , 27 | 86 , 93 , 109 , 129 , 151 , 164 , 165 , 154 , 144 , 138 , 149 , 171 , 190 , 203 , 181 , 135 , 85 , 43 , 27 , 23 , 52 , 108 , 179 , 226 , 232 , 234 , 194 , 133 , 73 , 47 , 40 , 54 , 28 | 99 , 151 , 191 , 190 , 170 , 134 , 98 , 75 , 76 , 93 , 114 , 137 , 153 , 158 , 149 , 135 , 127 , 134 , 157 , 184 , 208 , 202 , 160 , 102 , 44 , 20 , 14 , 24 , 68 , 148 , 216 , 237 , 29 | 239 , 223 , 169 , 95 , 54 , 37 , 43 , 81 , 137 , 188 , 197 , 183 , 149 , 108 , 76 , 66 , 84 , 107 , 137 , 159 , 172 , 166 , 149 , 134 , 131 , 147 , 169 , 200 , 202 , 167 , 116 , 54 , 30 | 20 , 15 , 14 , 42 , 117 , 194 , 233 , 239 , 234 , 196 , 118 , 69 , 39 , 32 , 60 , 114 , 169 , 189 , 184 , 156 , 118 , 83 , 67 , 78 , 99 , 130 , 156 , 175 , 175 , 158 , 141 , 133 , 31 | 141 , 158 , 186 , 183 , 158 , 117 , 66 , 30 , 14 , 19 , 43 , 115 , 183 , 228 , 239 , 230 , 195 , 124 , 76 , 42 , 30 , 56 , 109 , 162 , 184 , 180 , 159 , 124 , 95 , 81 , 87 , 105 , 32 | 131 , 157 , 176 , 175 , 160 , 142 , 138 , 143 , 160 , 167 , 152 , 135 , 105 , 80 , 43 , 33 , 49 , 91 , 149 , 195 , 230 , 224 , 202 , 154 , 108 , 69 , 40 , 49 , 84 , 137 , 174 , 188 , 33 | 182 , 158 , 133 , 108 , 98 , 94 , 103 , 122 , 143 , 157 , 153 , 142 , 139 , 144 , 151 , 162 , 143 , 129 , 98 , 83 , 62 , 43 , 50 , 70 , 128 , 160 , 201 , 203 , 182 , 150 , 106 , 85 , 34 | 54 , 55 , 78 , 123 , 168 , 184 , 186 , 163 , 144 , 120 , 107 , 101 , 102 , 116 , 129 , 147 , 149 , 142 , 141 , 151 , 169 , 175 , 152 , 130 , 97 , 80 , 58 , 51 , 61 , 87 , 138 , 172 , 35 | 211 , 199 , 176 , 133 , 97 , 81 , 54 , 63 , 84 , 129 , 161 , 176 , 177 , 152 , 139 , 120 , 119 , 115 , 117 , 124 , 130 , 135 , 129 , 122 , 124 , 141 , 165 , 178 , 152 , 130 , 90 , 70 , 36 | 44 , 42 , 60 , 94 , 153 , 190 , 227 , 203 , 172 , 118 , 77 , 58 , 37 , 60 , 90 , 146 , 176 , 187 , 175 , 147 , 131 , 113 , 119 , 118 , 132 , 141 , 146 , 146 , 131 , 119 , 116 , 139 , 37 | 170 , 171 , 153 , 127 , 93 , 67 , 41 , 47 , 65 , 112 , 168 , 216 , 235 , 214 , 178 , 116 , 82 , 43 , 37 , 65 , 109 , 163 , 188 , 197 , 172 , 144 , 123 , 116 , 119 , 130 , 151 , 165 , 38 | 173 , 162 , 145 , 124 , 123 , 144 , 156 , 145 , 131 , 109 , 85 , 55 , 44 , 54 , 84 , 133 , 186 , 229 , 226 , 208 , 156 , 111 , 63 , 26 , 30 , 58 , 115 , 155 , 183 , 178 , 156 , 131 , 39 | 113 , 108 , 109 , 124 , 146 , 166 , 170 , 159 , 136 , 125 , 137 , 145 , 135 , 117 , 101 , 86 , 64 , 49 , 53 , 73 , 114 , 162 , 216 , 232 , 217 , 180 , 137 , 98 , 48 , 32 , 46 , 91 , 40 | 136 , 170 , 181 , 164 , 144 , 126 , 116 , 112 , 116 , 130 , 149 , 163 , 166 , 153 , 139 , 145 , 157 , 143 , 125 , 96 , 77 , 54 , 38 , 48 , 64 , 107 , 144 , 203 , 226 , 220 , 186 , 142 , 41 | 114 , 63 , 50 , 54 , 90 , 128 , 158 , 180 , 166 , 146 , 124 , 115 , 111 , 114 , 127 , 141 , 155 , 159 , 154 , 145 , 152 , 162 , 149 , 135 , 107 , 86 , 57 , 35 , 38 , 55 , 97 , 135 , 42 | 194 , 222 , 228 , 204 , 161 , 131 , 74 , 54 , 57 , 90 , 127 , 154 , 179 , 176 , 162 , 139 , 126 , 114 , 113 , 127 , 141 , 160 , 162 , 159 , 150 , 155 , 164 , 143 , 130 , 103 , 90 , 65 , 43 | 44 , 48 , 56 , 97 , 124 , 179 , 207 , 212 , 198 , 167 , 149 , 95 , 68 , 60 , 82 , 109 , 130 , 154 , 156 , 155 , 145 , 138 , 125 , 119 , 125 , 132 , 148 , 154 , 155 , 151 , 167 , 174 , 44 | 150 , 121 , 80 , 64 , 36 , 28 , 31 , 56 , 101 , 137 , 194 , 206 , 208 , 173 , 150 , 134 , 96 , 83 , 79 , 108 , 123 , 139 , 145 , 138 , 133 , 128 , 138 , 133 , 136 , 140 , 147 , 153 , 45 | 154 , 155 , 157 , 180 , 169 , 158 , 124 , 88 , 56 , 24 , 28 , 29 , 76 , 112 , 168 , 212 , 217 , 207 , 164 , 141 , 102 , 83 , 84 , 107 , 138 , 147 , 152 , 142 , 127 , 108 , 105 , 110 , 46 | 120 , 135 , 147 , 158 , 156 , 154 , 147 , 161 , 175 , 169 , 161 , 133 , 107 , 61 , 29 , 18 , 22 , 48 , 89 , 156 , 199 , 214 , 204 , 179 , 150 , 105 , 81 , 80 , 103 , 130 , 146 , 153 , 47 | 144 , 126 , 107 , 96 , 92 , 101 , 118 , 141 , 155 , 159 , 159 , 156 , 172 , 173 , 159 , 145 , 122 , 106 , 66 , 44 , 32 , 36 , 62 , 88 , 144 , 166 , 185 , 183 , 175 , 159 , 123 , 113 , 48 | 110 , 130 , 137 , 140 , 136 , 127 , 117 , 108 , 104 , 100 , 112 , 124 , 145 , 150 , 155 , 155 , 164 , 183 , 163 , 152 , 119 , 103 , 78 , 50 , 48 , 43 , 76 , 92 , 134 , 152 , 154 , 149 , 49 | 136 , 141 , 117 , 116 , 120 , 146 , 163 , 163 , 153 , 128 , 111 , 96 , 99 , 93 , 97 , 109 , 127 , 145 , 146 , 149 , 148 , 175 , 183 , 174 , 151 , 114 , 92 , 53 , 44 , 37 , 55 , 82 , 50 | 120 , 163 , 171 , 164 , 135 , 125 , 108 , 97 , 101 , 121 , 155 , 175 , 181 , 165 , 142 , 117 , 105 , 100 , 96 , 102 , 108 , 125 , 130 , 136 , 137 , 153 , 180 , 181 , 181 , 149 , 127 , 83 , 51 | 52 , 40 , 39 , 66 , 89 , 140 , 164 , 178 , 158 , 134 , 118 , 90 , 88 , 97 , 133 , 163 , 181 , 183 , 166 , 145 , 120 , 110 , 99 , 100 , 106 , 119 , 130 , 131 , 133 , 135 , 160 , 166 , 52 | 173 , 163 , 147 , 124 , 84 , 70 , 51 , 64 , 80 , 111 , 144 , 157 , 156 , 138 , 127 , 107 , 93 , 95 , 119 , 150 , 173 , 179 , 173 , 156 , 136 , 125 , 113 , 109 , 106 , 111 , 120 , 121 , 53 | 122 , 122 , 141 , 153 , 161 , 159 , 148 , 139 , 104 , 87 , 68 , 70 , 83 , 104 , 136 , 150 , 155 , 136 , 124 , 103 , 86 , 83 , 98 , 133 , 160 , 183 , 185 , 174 , 156 , 140 , 126 , 111 , 54 | 105 , 103 , 109 , 115 , 118 , 119 , 130 , 138 , 138 , 137 , 128 , 126 , 108 , 98 , 91 , 94 , 106 , 116 , 135 , 143 , 145 , 132 , 119 , 103 , 89 , 81 , 91 , 118 , 144 , 163 , 175 , 177 , 55 | 168 , 161 , 150 , 142 , 129 , 121 , 117 , 111 , 111 , 111 , 125 , 134 , 135 , 132 , 121 , 117 , 98 , 92 , 90 , 100 , 120 , 141 , 163 , 168 , 164 , 145 , 125 , 97 , 80 , 71 , 82 , 107 , 56 | 136 , 157 , 166 , 172 , 166 , 163 , 153 , 152 , 147 , 141 , 138 , 129 , 124 , 116 , 124 , 129 , 126 , 118 , 104 , 100 , 85 , 78 , 78 , 94 , 122 , 150 , 175 , 182 , 175 , 154 , 134 , 104 , 57 | 80 , 62 , 71 , 94 , 123 , 147 , 155 , 162 , 158 , 160 , 152 , 151 , 149 , 148 , 149 , 138 , 134 , 122 , 127 , 132 , 128 , 119 , 101 , 95 , 75 , 68 , 67 , 78 , 108 , 141 , 176 , 190 , 58 | 190 , 171 , 151 , 122 , 96 , 75 , 72 , 90 , 115 , 137 , 145 , 151 , 145 , 147 , 146 , 147 , 148 , 148 , 154 , 148 , 148 , 136 , 141 , 143 , 136 , 125 , 100 , 94 , 70 , 61 , 55 , 64 , 59 | 95 , 125 , 169 , 187 , 196 , 180 , 165 , 139 , 109 , 88 , 76 , 91 , 110 , 132 , 138 , 145 , 142 , 141 , 138 , 139 , 141 , 142 , 150 , 150 , 154 , 145 , 150 , 159 , 153 , 143 , 114 , 97 , 60 | 74 , 52 , 43 , 43 , 73 , 105 , 151 , 182 , 197 , 191 , 175 , 155 , 124 , 96 , 81 , 87 , 105 , 125 , 133 , 141 , 141 , 141 , 138 , 134 , 136 , 137 , 144 , 148 , 150 , 151 , 152 , 166 , 61 | 159 , 149 , 119 , 97 , 78 , 53 , 50 , 41 , 70 , 95 , 137 , 165 , 176 , 177 , 166 , 161 , 141 , 125 , 106 , 107 , 115 , 124 , 125 , 122 , 123 , 129 , 138 , 140 , 145 , 141 , 144 , 143 , 62 | 141 , 142 , 143 , 166 , 163 , 164 , 138 , 114 , 89 , 57 , 53 , 40 , 67 , 89 , 134 , 163 , 175 , 174 , 159 , 153 , 133 , 123 , 111 , 118 , 128 , 137 , 137 , 131 , 123 , 119 , 122 , 128 , 63 | 136 , 141 , 146 , 146 , 147 , 148 , 152 , 170 , 170 , 168 , 149 , 125 , 98 , 63 , 53 , 41 , 63 , 88 , 131 , 163 , 175 , 175 , 160 , 148 , 125 , 116 , 108 , 121 , 137 , 149 , 149 , 139 , 64 | 128 , 118 , 116 , 113 , 122 , 127 , 139 , 144 , 144 , 144 , 144 , 165 , 167 , 170 , 151 , 129 , 106 , 71 , 57 , 37 , 53 , 73 , 118 , 154 , 173 , 177 , 161 , 154 , 131 , 121 , 106 , 114 , 65 | 129 , 149 , 156 , 151 , 142 , 130 , 125 , 116 , 117 , 114 , 122 , 127 , 135 , 146 , 154 , 173 , 176 , 174 , 157 , 128 , 101 , 66 , 50 , 40 , 55 , 82 , 119 , 155 , 169 , 172 , 160 , 147 , 66 | 127 , 114 , 109 , 120 , 136 , 152 , 156 , 151 , 139 , 127 , 123 , 118 , 121 , 121 , 128 , 131 , 132 , 138 , 144 , 167 , 176 , 176 , 167 , 141 , 119 , 79 , 56 , 39 , 45 , 68 , 102 , 145 , 67 | 163 , 171 , 165 , 155 , 136 , 117 , 105 , 110 , 127 , 146 , 152 , 153 , 146 , 135 , 132 , 121 , 121 , 116 , 117 , 123 , 120 , 128 , 135 , 158 , 181 , 183 , 179 , 148 , 128 , 90 , 58 , 39 , 68 | 29 , 54 , 81 , 128 , 157 , 169 , 169 , 156 , 146 , 123 , 105 , 101 , 112 , 136 , 146 , 152 , 147 , 138 , 133 , 121 , 117 , 111 , 108 , 114 , 115 , 127 , 138 , 158 , 182 , 186 , 186 , 152 , 69 | 129 , 91 , 60 , 45 , 34 , 62 , 82 , 127 , 148 , 163 , 162 , 147 , 143 , 126 , 121 , 116 , 129 , 145 , 154 , 155 , 145 , 136 , 127 , 119 , 118 , 119 , 121 , 123 , 123 , 124 , 129 , 141 , 70 | 166 , 183 , 190 , 179 , 155 , 129 , 89 , 62 , 37 , 43 , 62 , 95 , 130 , 151 , 167 , 161 , 158 , 143 , 129 , 119 , 121 , 138 , 151 , 156 , 151 , 141 , 135 , 123 , 118 , 113 , 115 , 117 , 71 | 120 , 127 , 132 , 145 , 160 , 180 , 179 , 169 , 141 , 120 , 90 , 66 , 51 , 50 , 72 , 95 , 127 , 143 , 152 , 147 , 139 , 134 , 123 , 118 , 122 , 136 , 152 , 153 , 150 , 138 , 130 , 122 , 72 | 118 , 117 , 114 , 118 , 116 , 122 , 128 , 138 , 151 , 173 , 183 , 182 , 158 , 131 , 98 , 66 , 50 , 38 , 59 , 84 , 119 , 146 , 160 , 163 , 148 , 136 , 119 , 112 , 111 , 122 , 145 , 152 , 73 | 156 , 143 , 132 , 123 , 114 , 118 , 115 , 124 , 125 , 129 , 135 , 138 , 149 , 161 , 173 , 175 , 161 , 143 , 112 , 84 , 56 , 41 , 52 , 69 , 104 , 133 , 160 , 170 , 169 , 156 , 135 , 119 , 74 | 106 , 112 , 126 , 141 , 148 , 148 , 140 , 134 , 122 , 116 , 116 , 115 , 119 , 125 , 134 , 143 , 151 , 167 , 178 , 182 , 169 , 147 , 123 , 86 , 64 , 42 , 45 , 63 , 89 , 125 , 150 , 173 , 75 | 172 , 170 , 152 , 132 , 117 , 109 , 118 , 130 , 141 , 141 , 138 , 131 , 121 , 116 , 113 , 112 , 116 , 123 , 135 , 145 , 155 , 164 , 173 , 174 , 165 , 143 , 119 , 92 , 67 , 54 , 45 , 59 , 76 | 79 , 107 , 134 , 151 , 165 , 164 , 156 , 144 , 129 , 120 , 117 , 124 , 129 , 131 , 129 , 121 , 121 , 114 , 113 , 112 , 111 , 115 , 122 , 132 , 146 , 158 , 173 , 183 , 180 , 162 , 133 , 102 , 77 | 65 , 43 , 31 , 43 , 66 , 97 , 132 , 154 , 168 , 169 , 161 , 145 , 131 , 121 , 120 , 128 , 139 , 142 , 140 , 130 , 123 , 116 , 112 , 113 , 116 , 122 , 130 , 139 , 147 , 155 , 165 , 176 , 78 | 177 , 169 , 148 , 123 , 89 , 62 , 42 , 42 , 55 , 81 , 115 , 141 , 164 , 171 , 172 , 160 , 144 , 129 , 120 , 120 , 127 , 133 , 134 , 131 , 126 , 125 , 119 , 117 , 114 , 115 , 118 , 125 , 79 | 134 , 144 , 159 , 175 , 189 , 187 , 171 , 142 , 109 , 75 , 47 , 34 , 43 , 68 , 99 , 134 , 158 , 171 , 171 , 162 , 147 , 132 , 121 , 118 , 127 , 136 , 142 , 140 , 133 , 125 , 119 , 116 , 80 | 114 , 117 , 123 , 131 , 139 , 147 , 153 , 161 , 175 , 180 , 173 , 152 , 129 , 97 , 73 , 53 , 47 , 60 , 81 , 113 , 140 , 162 , 170 , 169 , 158 , 146 , 132 , 122 , 122 , 128 , 134 , 134 , 81 | 133 , 126 , 123 , 119 , 120 , 119 , 121 , 128 , 133 , 142 , 146 , 154 , 163 , 176 , 176 , 162 , 139 , 106 , 79 , 52 , 44 , 48 , 71 , 100 , 132 , 159 , 170 , 169 , 159 , 141 , 126 , 115 , 82 | 112 , 120 , 133 , 144 , 142 , 136 , 125 , 117 , 113 , 112 , 118 , 128 , 139 , 150 , 153 , 155 , 157 , 160 , 164 , 159 , 145 , 124 , 99 , 75 , 62 , 54 , 65 , 83 , 113 , 140 , 163 , 172 , 83 | 167 , 157 , 136 , 124 , 111 , 110 , 117 , 130 , 137 , 138 , 134 , 126 , 121 , 116 , 118 , 121 , 131 , 138 , 149 , 152 , 157 , 163 , 164 , 168 , 154 , 138 , 111 , 84 , 65 , 48 , 53 , 64 , 84 | 93 , 122 , 150 , 173 , 170 , 170 , 148 , 132 , 116 , 106 , 109 , 117 , 133 , 136 , 138 , 127 , 122 , 115 , 116 , 120 , 129 , 142 , 150 , 159 , 156 , 157 , 158 , 160 , 159 , 146 , 129 , 105 , 85 | 81 , 65 , 52 , 57 , 71 , 99 , 131 , 155 , 177 , 173 , 172 , 151 , 132 , 119 , 103 , 109 , 115 , 129 , 132 , 131 , 126 , 119 , 118 , 117 , 122 , 134 , 145 , 155 , 162 , 163 , 162 , 160 , 86 | 160 , 151 , 137 , 115 , 94 , 72 , 62 , 54 , 63 , 84 , 110 , 141 , 166 , 179 , 176 , 166 , 143 , 126 , 109 , 100 , 105 , 116 , 127 , 131 , 131 , 127 , 122 , 119 , 119 , 124 , 134 , 144 , 87 | 153 , 156 , 161 , 159 , 163 , 159 , 153 , 135 , 114 , 90 , 70 , 62 , 54 , 72 , 91 , 123 , 152 , 173 , 182 , 176 , 162 , 138 , 123 , 107 , 104 , 111 , 120 , 129 , 130 , 129 , 126 , 124 , 88 | 124 , 127 , 135 , 146 , 152 , 155 , 156 , 151 , 154 , 155 , 154 , 147 , 132 , 111 , 87 , 70 , 55 , 54 , 69 , 92 , 125 , 153 , 174 , 178 , 173 , 154 , 131 , 112 , 100 , 101 , 111 , 122 , 89 | 129 , 130 , 124 , 123 , 118 , 121 , 124 , 133 , 143 , 149 , 152 , 151 , 148 , 149 , 148 , 143 , 134 , 113 , 96 , 75 , 64 , 58 , 62 , 82 , 105 , 137 , 157 , 172 , 172 , 159 , 143 , 120 , 90 | 109 , 97 , 105 , 115 , 124 , 131 , 125 , 127 , 123 , 125 , 129 , 136 , 146 , 150 , 152 , 151 , 147 , 145 , 148 , 150 , 149 , 136 , 119 , 96 , 78 , 65 , 59 , 71 , 91 , 122 , 152 , 174 , 91 | 181 , 174 , 156 , 132 , 113 , 99 , 95 , 108 , 122 , 133 , 138 , 135 , 133 , 127 , 129 , 133 , 139 , 146 , 150 , 152 , 152 , 148 , 146 , 150 , 149 , 142 , 125 , 108 , 87 , 74 , 65 , 66 , 92 | 85 , 105 , 136 , 159 , 175 , 176 , 163 , 147 , 123 , 108 , 95 , 99 , 110 , 120 , 129 , 129 , 131 , 132 , 132 , 140 , 144 , 149 , 149 , 147 , 141 , 135 , 132 , 134 , 143 , 142 , 141 , 125 , 93 | 107 , 87 , 71 , 64 , 66 , 88 , 110 , 146 , 164 , 175 , 172 , 155 , 135 , 112 , 100 , 93 , 104 , 114 , 125 , 132 , 129 , 131 , 130 , 134 , 141 , 146 , 152 , 151 , 150 , 141 , 135 , 131 , 94 | 134 , 140 , 139 , 135 , 118 , 100 , 83 , 69 , 65 , 75 , 97 , 123 , 156 , 172 , 179 , 170 , 146 , 126 , 102 , 94 , 90 , 108 , 120 , 134 , 139 , 133 , 137 , 131 , 140 , 141 , 149 , 151 , 95 | 152 , 146 , 137 , 132 , 130 , 136 , 139 , 140 , 129 , 113 , 91 , 79 , 64 , 66 , 83 , 106 , 141 , 164 , 181 , 176 , 161 , 136 , 110 , 93 , 83 , 92 , 108 , 127 , 137 , 139 , 138 , 135 , 96 | 136 , 140 , 145 , 152 , 155 , 152 , 146 , 133 , 128 , 126 , 130 , 135 , 134 , 126 , 108 , 93 , 77 , 68 , 70 , 85 , 110 , 142 , 164 , 175 , 173 , 151 , 129 , 101 , 88 , 80 , 91 , 108 , 97 | 123 , 138 , 137 , 142 , 141 , 141 , 146 , 146 , 147 , 145 , 139 , 133 , 125 , 125 , 128 , 136 , 138 , 134 , 122 , 103 , 83 , 72 , 66 , 79 , 99 , 127 , 160 , 174 , 181 , 164 , 142 , 113 , 98 | 91 , 81 , 83 , 102 , 119 , 136 , 143 , 144 , 144 , 140 , 140 , 144 , 146 , 150 , 147 , 143 , 133 , 125 , 123 , 129 , 134 , 141 , 139 , 129 , 112 , 91 , 81 , 70 , 83 , 99 , 128 , 157 , 99 | 173 , 180 , 165 , 142 , 112 , 91 , 82 , 84 , 103 , 119 , 137 , 149 , 149 , 153 , 146 , 146 , 148 , 146 , 147 , 142 , 139 , 130 , 125 , 124 , 129 , 134 , 136 , 131 , 119 , 104 , 89 , 81 , 100 | 79 , 93 , 110 , 139 , 161 , 172 , 171 , 155 , 133 , 107 , 92 , 84 , 92 , 108 , 124 , 140 , 149 , 151 , 154 , 151 , 150 , 149 , 148 , 145 , 141 , 133 , 129 , 122 , 125 , 132 , 137 , 139 , 101 | 127 , 117 , 96 , 86 , 74 , 77 , 94 , 114 , 142 , 162 , 173 , 166 , 150 , 125 , 103 , 88 , 84 , 92 , 111 , 128 , 142 , 150 , 153 , 155 , 150 , 150 , 149 , 148 , 146 , 139 , 133 , 126 , 102 | 122 , 126 , 135 , 142 , 140 , 131 , 118 , 99 , 83 , 72 , 74 , 95 , 115 , 146 , 164 , 173 , 167 , 147 , 124 , 99 , 85 , 81 , 95 , 115 , 133 , 148 , 155 , 156 , 156 , 150 , 147 , 144 , 103 | 142 , 141 , 137 , 131 , 124 , 123 , 129 , 137 , 140 , 137 , 126 , 114 , 93 , 83 , 72 , 79 , 98 , 117 , 148 , 161 , 169 , 159 , 140 , 119 , 96 , 87 , 85 , 100 , 120 , 134 , 148 , 150 , 104 | 150 , 150 , 144 , 145 , 144 , 144 , 142 , 136 , 128 , 120 , 120 , 127 , 137 , 143 , 144 , 135 , 121 , 100 , 84 , 73 , 74 , 92 , 113 , 142 , 160 , 166 , 161 , 143 , 122 , 97 , 87 , 85 , 105 | 99 , 119 , 133 , 149 , 154 , 155 , 154 , 146 , 144 , 140 , 138 , 137 , 130 , 126 , 120 , 121 , 128 , 139 , 142 , 142 , 134 , 119 , 102 , 84 , 75 , 79 , 94 , 113 , 141 , 156 , 163 , 158 , 106 | 139 , 122 , 101 , 93 , 94 , 106 , 124 , 136 , 152 , 153 , 154 , 153 , 144 , 145 , 140 , 138 , 134 , 126 , 121 , 115 , 118 , 126 , 135 , 143 , 142 , 139 , 124 , 105 , 90 , 77 , 81 , 90 , 107 | 111 , 135 , 148 , 157 , 150 , 138 , 121 , 102 , 96 , 98 , 110 , 128 , 139 , 153 , 154 , 156 , 155 , 147 , 146 , 139 , 136 , 132 , 125 , 119 , 115 , 120 , 130 , 143 , 151 , 150 , 143 , 124 , 108 | 104 , 85 , 74 , 78 , 89 , 111 , 135 , 151 , 155 , 150 , 134 , 117 , 103 , 98 , 103 , 118 , 134 , 145 , 157 , 156 , 155 , 152 , 144 , 143 , 139 , 139 , 134 , 127 , 119 , 114 , 117 , 129 , 109 | 144 , 150 , 158 , 149 , 137 , 111 , 89 , 74 , 70 , 85 , 100 , 131 , 147 , 156 , 154 , 139 , 122 , 99 , 93 , 95 , 111 , 130 , 144 , 158 , 161 , 160 , 155 , 144 , 136 , 130 , 125 , 124 , 110 | 118 , 114 , 115 , 117 , 133 , 143 , 155 , 155 , 147 , 136 , 108 , 90 , 68 , 67 , 78 , 94 , 124 , 137 , 153 , 150 , 140 , 125 , 106 , 99 , 97 , 110 , 124 , 138 , 150 , 154 , 156 , 151 , 111 | 142 , 135 , 130 , 126 , 125 , 116 , 113 , 110 , 117 , 130 , 143 , 155 , 155 , 152 , 137 , 114 , 91 , 75 , 69 , 78 , 92 , 117 , 135 , 146 , 152 , 142 , 132 , 112 , 106 , 102 , 110 , 127 , 112 | 137 , 155 , 160 , 163 , 159 , 148 , 141 , 130 , 125 , 119 , 114 , 112 , 113 , 123 , 136 , 154 , 160 , 162 , 149 , 131 , 106 , 82 , 70 , 67 , 82 , 100 , 125 , 141 , 153 , 150 , 139 , 126 , 113 | 111 , 106 , 107 , 119 , 134 , 147 , 157 , 160 , 157 , 151 , 140 , 132 , 129 , 125 , 122 , 117 , 113 , 113 , 117 , 129 , 146 , 157 , 162 , 159 , 144 , 120 , 95 , 71 , 64 , 69 , 84 , 106 , 114 | 130 , 145 , 151 , 149 , 136 , 122 , 108 , 106 , 110 , 125 , 137 , 150 , 159 , 157 , 157 , 144 , 135 , 125 , 118 , 112 , 108 , 109 , 111 , 121 , 133 , 154 , 165 , 165 , 158 , 137 , 117 , 89 , 115 | 71 , 63 , 69 , 84 , 101 , 129 , 138 , 147 , 145 , 136 , 128 , 116 , 116 , 117 , 130 , 140 , 150 , 156 , 153 , 152 , 143 , 137 , 130 , 123 , 119 , 112 , 111 , 111 , 120 , 132 , 152 , 167 , 116 | 171 , 167 , 150 , 128 , 101 , 79 , 64 , 66 , 79 , 96 , 124 , 139 , 152 , 153 , 146 , 138 , 122 , 119 , 115 , 127 , 136 , 146 , 157 , 155 , 157 , 147 , 138 , 128 , 119 , 115 , 111 , 109 , 117 | 114 , 122 , 137 , 155 , 166 , 169 , 161 , 144 , 122 , 98 , 78 , 66 , 67 , 79 , 94 , 117 , 131 , 141 , 146 , 139 , 135 , 123 , 122 , 123 , 131 , 141 , 146 , 155 , 150 , 150 , 142 , 130 , 118 | 127 , 116 , 113 , 109 , 105 , 109 , 116 , 130 , 149 , 165 , 170 , 167 , 154 , 133 , 107 , 81 , 64 , 62 , 70 , 86 , 112 , 131 , 146 , 152 , 148 , 141 , 127 , 121 , 119 , 128 , 140 , 149 , 119 | 159 , 157 , 156 , 147 , 135 , 126 , 115 , 111 , 106 , 107 , 111 , 121 , 133 , 151 , 167 , 172 , 170 , 155 , 137 , 111 , 89 , 69 , 64 , 69 , 82 , 108 , 126 , 147 , 154 , 155 , 151 , 138 , 120 | 131 , 124 , 130 , 138 , 149 , 157 , 156 , 156 , 149 , 138 , 130 , 120 , 113 , 112 , 110 , 113 , 122 , 133 , 149 , 165 , 171 , 169 , 156 , 140 , 114 , 94 , 73 , 66 , 70 , 78 , 103 , 119 , 121 | 140 , 148 , 151 , 149 , 138 , 133 , 126 , 131 , 136 , 145 , 152 , 153 , 153 , 146 , 137 , 125 , 117 , 109 , 107 , 109 , 113 , 124 , 134 , 150 , 165 , 173 , 168 , 158 , 139 , 115 , 93 , 71 , 122 | 62 , 63 , 71 , 95 , 116 , 134 , 149 , 152 , 152 , 143 , 136 , 128 , 128 , 133 , 140 , 149 , 147 , 147 , 143 , 134 , 125 , 116 , 109 , 107 , 107 , 115 , 123 , 133 , 147 , 162 , 171 , 168 , 123 | 157 , 139 , 116 , 96 , 75 , 66 , 63 , 72 , 92 , 112 , 133 , 145 , 152 , 152 , 149 , 138 , 132 , 131 , 134 , 140 , 145 , 146 , 144 , 142 , 135 , 127 , 119 , 111 , 108 , 107 , 112 , 121 , 124 | 132 , 145 , 161 , 174 , 172 , 162 , 142 , 117 , 93 , 71 , 61 , 61 , 69 , 90 , 114 , 135 , 151 , 155 , 154 , 149 , 140 , 134 , 131 , 135 , 140 , 145 , 145 , 141 , 137 , 129 , 121 , 115 , 125 | 110 , 108 , 108 , 110 , 120 , 129 , 142 , 156 , 169 , 171 , 163 , 149 , 123 , 101 , 76 , 63 , 62 , 69 , 87 , 112 , 133 , 149 , 157 , 155 , 150 , 139 , 136 , 132 , 137 , 141 , 146 , 149 , 126 | 144 , 142 , 131 , 123 , 117 , 110 , 110 , 110 , 113 , 121 , 127 , 141 , 154 , 170 , 173 , 168 , 155 , 130 , 108 , 80 , 65 , 58 , 63 , 79 , 106 , 130 , 150 , 160 , 161 , 157 , 145 , 139 , 127 | 132 , 136 , 139 , 147 , 152 , 148 , 145 , 135 , 126 , 119 , 113 , 112 , 113 , 119 , 127 , 136 , 145 , 156 , 168 , 169 , 164 , 150 , 129 , 107 , 85 , 71 , 62 , 66 , 79 , 101 , 126 , 143 , 128 | 156 , 158 , 159 , 150 , 142 , 136 , 133 , 137 , 139 , 144 , 143 , 140 , 134 , 127 , 121 , 112 , 109 , 108 , 111 , 117 , 126 , 139 , 153 , 168 , 174 , 168 , 153 , 129 , 108 , 85 , 68 , 62 , 129 | 67 , 79 , 104 , 124 , 143 , 152 , 153 , 154 , 145 , 142 , 134 , 135 , 137 , 142 , 146 , 141 , 138 , 133 , 128 , 123 , 118 , 115 , 114 , 114 , 118 , 125 , 136 , 148 , 163 , 173 , 169 , 161 , 130 | 139 , 119 , 95 , 75 , 65 , 65 , 77 , 97 , 122 , 141 , 155 , 158 , 159 , 153 , 145 , 138 , 133 , 135 , 137 , 142 , 141 , 139 , 136 , 128 , 124 , 116 , 113 , 112 , 112 , 116 , 123 , 131 , 131 | 142 , 156 , 165 , 164 , 157 , 138 , 119 , 99 , 78 , 68 , 65 , 75 , 91 , 115 , 134 , 147 , 156 , 155 , 153 , 143 , 135 , 130 , 131 , 134 , 139 , 140 , 138 , 136 , 129 , 123 , 116 , 110 , 132 | 109 , 111 , 115 , 122 , 132 , 142 , 154 , 163 , 162 , 155 , 137 , 119 , 98 , 81 , 67 , 65 , 71 , 87 , 108 , 126 , 144 , 149 , 157 , 150 , 146 , 137 , 131 , 131 , 131 , 138 , 137 , 139 , 133 | 135 , 131 , 127 , 119 , 114 , 107 , 107 , 109 , 114 , 125 , 135 , 150 , 161 , 163 , 158 , 143 , 126 , 104 , 86 , 73 , 66 , 74 , 85 , 108 , 127 , 142 , 152 , 154 , 152 , 142 , 135 , 128 , 134 | 128 , 132 , 137 , 143 , 141 , 142 , 136 , 129 , 122 , 115 , 112 , 110 , 113 , 118 , 126 , 136 , 148 , 160 , 164 , 159 , 147 , 130 , 112 , 93 , 75 , 66 , 67 , 79 , 98 , 120 , 138 , 152 , 135 | 158 , 157 , 149 , 139 , 129 , 125 , 129 , 133 , 140 , 140 , 140 , 137 , 129 , 121 , 111 , 106 , 105 , 110 , 115 , 126 , 137 , 149 , 161 , 164 , 160 , 146 , 130 , 112 , 93 , 78 , 69 , 72 , 136 | 80 , 99 , 119 , 134 , 148 , 154 , 156 , 150 , 143 , 135 , 131 , 132 , 134 , 138 , 135 , 134 , 133 , 128 , 124 , 117 , 113 , 110 , 109 , 114 , 119 , 131 , 141 , 158 , 167 , 168 , 162 , 143 , 137 | 127 , 102 , 83 , 65 , 62 , 71 , 87 , 115 , 134 , 153 , 162 , 163 , 158 , 146 , 135 , 125 , 127 , 131 , 137 , 141 , 141 , 141 , 134 , 126 , 116 , 110 , 106 , 106 , 112 , 121 , 132 , 142 , 138 | 155 , 162 , 162 , 155 , 140 , 124 , 104 , 88 , 72 , 69 , 72 , 84 , 105 , 124 , 142 , 151 , 156 , 154 , 148 , 138 , 131 , 128 , 129 , 134 , 136 , 135 , 134 , 130 , 124 , 117 , 110 , 104 , 139 | 102 , 107 , 114 , 126 , 137 , 150 , 163 , 168 , 162 , 148 , 129 , 107 , 86 , 69 , 63 , 65 , 80 , 102 , 125 , 143 , 154 , 159 , 157 , 151 , 141 , 131 , 127 , 129 , 135 , 138 , 140 , 137 , 140 | 134 , 127 , 120 , 113 , 108 , 108 , 112 , 120 , 130 , 140 , 149 , 162 , 166 , 165 , 151 , 135 , 116 , 95 , 80 , 64 , 68 , 73 , 95 , 117 , 138 , 155 , 160 , 165 , 156 , 148 , 133 , 125 , 141 | 125 , 128 , 135 , 137 , 140 , 138 , 135 , 127 , 119 , 111 , 107 , 109 , 117 , 127 , 138 , 149 , 161 , 168 , 166 , 156 , 140 , 119 , 100 , 82 , 70 , 70 , 76 , 96 , 116 , 138 , 155 , 162 , 142 | 165 , 155 , 147 , 132 , 125 , 123 , 125 , 134 , 137 , 140 , 138 , 133 , 126 , 117 , 109 , 106 , 107 , 113 , 123 , 134 , 146 , 157 , 166 , 163 , 154 , 135 , 116 , 95 , 77 , 67 , 67 , 76 , 143 | 92 , 115 , 133 , 152 , 158 , 160 , 154 , 145 , 136 , 127 , 129 , 130 , 136 , 137 , 135 , 133 , 127 , 122 , 115 , 111 , 110 , 111 , 116 , 124 , 134 , 144 , 154 , 163 , 166 , 159 , 148 , 128 , 144 | 110 , 89 , 73 , 68 , 71 , 88 , 110 , 134 , 155 , 166 , 170 , 164 , 155 , 141 , 132 , 128 , 128 , 136 , 138 , 139 , 137 , 133 , 127 , 121 , 114 , 111 , 113 , 118 , 127 , 136 , 147 , 154 , 145 | 162 , 166 , 160 , 147 , 128 , 111 , 92 , 76 , 69 , 72 , 86 , 106 , 128 , 147 , 158 , 161 , 159 , 152 , 140 , 129 , 124 , 125 , 130 , 134 , 135 , 134 , 132 , 126 , 122 , 114 , 110 , 110 , 146 | 114 , 123 , 131 , 142 , 150 , 158 , 164 , 157 , 147 , 128 , 111 , 92 , 73 , 68 , 66 , 83 , 100 , 124 , 147 , 159 , 166 , 160 , 154 , 140 , 128 , 123 , 124 , 131 , 136 , 140 , 138 , 135 , 147 | 128 , 121 , 113 , 109 , 110 , 112 , 124 , 133 , 144 , 150 , 157 , 162 , 157 , 147 , 133 , 118 , 100 , 83 , 74 , 71 , 79 , 97 , 117 , 141 , 156 , 165 , 164 , 156 , 145 , 131 , 124 , 120 , 148 | 127 , 132 , 136 , 139 , 137 , 135 , 126 , 119 , 111 , 111 , 111 , 119 , 130 , 140 , 151 , 155 , 163 , 157 , 153 , 139 , 123 , 107 , 88 , 82 , 76 , 84 , 96 , 117 , 138 , 155 , 165 , 164 , 149 | 157 , 146 , 136 , 126 , 124 , 126 , 132 , 139 , 142 , 140 , 134 , 127 , 119 , 115 , 114 , 116 , 124 , 132 , 143 , 147 , 152 , 152 , 150 , 146 , 136 , 125 , 109 , 96 , 85 , 81 , 85 , 96 , 150 | 114 , 133 , 152 , 161 , 162 , 156 , 146 , 136 , 128 , 125 , 126 , 131 , 136 , 141 , 138 , 133 , 124 , 117 , 112 , 110 , 113 , 120 , 131 , 140 , 147 , 150 , 150 , 148 , 141 , 131 , 118 , 102 , 151 | 92 , 84 , 86 , 92 , 103 , 120 , 135 , 149 , 154 , 154 , 147 , 140 , 134 , 128 , 128 , 131 , 137 , 142 , 144 , 142 , 134 , 126 , 118 , 111 , 109 , 111 , 117 , 126 , 135 , 143 , 147 , 148 , 152 | 146 , 142 , 134 , 121 , 109 , 96 , 90 , 86 , 91 , 102 , 115 , 133 , 144 , 153 , 153 , 146 , 139 , 130 , 127 , 124 , 129 , 133 , 139 , 141 , 139 , 133 , 125 , 120 , 114 , 112 , 113 , 118 , 153 | 125 , 132 , 140 , 143 , 145 , 142 , 138 , 130 , 119 , 108 , 97 , 91 , 91 , 96 , 105 , 116 , 128 , 135 , 141 , 138 , 136 , 131 , 128 , 129 , 131 , 136 , 139 , 142 , 139 , 135 , 127 , 121 , 154 | 117 , 114 , 116 , 117 , 121 , 126 , 131 , 135 , 137 , 137 , 136 , 134 , 129 , 121 , 113 , 102 , 97 , 98 , 102 , 111 , 119 , 131 , 139 , 142 , 141 , 137 , 134 , 131 , 131 , 132 , 135 , 138 , 155 | 140 , 141 , 138 , 132 , 126 , 120 , 116 , 115 , 114 , 118 , 123 , 129 , 135 , 136 , 138 , 136 , 134 , 129 , 122 , 116 , 107 , 107 , 104 , 108 , 114 , 120 , 127 , 130 , 133 , 132 , 131 , 129 , 156 | 130 , 131 , 133 , 136 , 139 , 140 , 140 , 135 , 129 , 124 , 120 , 118 , 115 , 117 , 118 , 121 , 125 , 127 , 130 , 130 , 132 , 129 , 127 , 122 , 116 , 113 , 108 , 110 , 111 , 116 , 120 , 123 , 157 | 128 , 128 , 128 , 128 , 130 , 132 , 135 , 138 , 140 , 141 , 139 , 136 , 131 , 126 , 123 , 121 , 122 , 121 , 122 , 121 , 121 , 121 , 123 , 124 , 124 , 127 , 127 , 126 , 124 , 119 , 117 , 114 , 158 | 114 , 117 , 119 , 123 , 124 , 127 , 127 , 128 , 130 , 131 , 135 , 137 , 140 , 141 , 142 , 142 , 139 , 135 , 132 , 127 , 124 , 123 , 121 , 122 , 121 , 122 , 121 , 121 , 122 , 121 , 124 , 124 , 159 | 127 , 126 , 124 , 123 , 121 , 120 , 117 , 118 , 118 , 119 , 119 , 122 , 125 , 128 , 132 , 135 , 137 , 137 , 137 , 136 , 135 , 134 , 132 , 131 , 130 , 128 , 126 , 123 , 121 , 117 , 116 , 113 , 160 | 114 , 116 , 119 , 123 , 124 , 127 , 125 , 123 , 121 , 120 , 120 , 119 , 122 , 123 , 123 , 121 , 120 , 122 , 123 , 127 , 130 , 133 , 135 , 137 , 138 , 137 , 135 , 132 , 130 , 126 , 125 , 124 , 161 | 121 , 119 , 116 , 116 , 113 , 115 , 116 , 119 , 123 , 125 , 128 , 128 , 129 , 126 , 124 , 123 , 121 , 122 , 120 , 120 , 121 , 122 , 124 , 127 , 131 , 134 , 135 , 136 , 137 , 137 , 136 , 135 , 162 | 134 , 135 , 135 , 135 , 134 , 130 , 126 , 120 , 114 , 110 , 110 , 111 , 116 , 123 , 129 , 133 , 135 , 135 , 133 , 129 , 126 , 125 , 125 , 125 , 126 , 126 , 128 , 129 , 130 , 132 , 133 , 135 , 163 | 136 , 138 , 139 , 141 , 139 , 139 , 137 , 136 , 135 , 132 , 128 , 123 , 120 , 113 , 110 , 108 , 110 , 114 , 120 , 127 , 132 , 135 , 135 , 133 , 130 , 126 , 122 , 120 , 121 , 122 , 125 , 126 , 164 | 127 , 128 , 130 , 129 , 128 , 130 , 132 , 136 , 137 , 139 , 140 , 136 , 134 , 128 , 124 , 119 , 112 , 112 , 109 , 112 , 110 , 115 , 117 , 119 , 122 , 123 , 126 , 125 , 126 , 127 , 127 , 127 , 165 | 125 , 125 , 123 , 123 , 121 , 122 , 123 , 126 , 128 , 130 , 133 , 135 , 137 , 136 , 138 , 136 , 136 , 134 , 132 , 129 , 122 , 119 , 113 , 111 , 109 , 111 , 114 , 117 , 122 , 124 , 126 , 128 , 166 | 127 , 129 , 128 , 130 , 130 , 129 , 129 , 126 , 125 , 122 , 123 , 121 , 124 , 127 , 130 , 135 , 137 , 139 , 139 , 140 , 137 , 134 , 132 , 127 , 126 , 121 , 119 , 116 , 113 , 113 , 113 , 117 , 167 | 116 , 119 , 121 , 124 , 126 , 128 , 130 , 130 , 131 , 130 , 128 , 127 , 125 , 122 , 121 , 122 , 122 , 125 , 127 , 131 , 133 , 136 , 136 , 137 , 137 , 135 , 135 , 130 , 129 , 124 , 122 , 116 , 168 | 113 , 111 , 110 , 114 , 115 , 119 , 122 , 126 , 127 , 129 , 131 , 131 , 132 , 131 , 131 , 128 , 126 , 125 , 123 , 124 , 123 , 124 , 126 , 128 , 131 , 134 , 137 , 139 , 140 , 139 , 138 , 135 , 169 | 130 , 127 , 122 , 120 , 117 , 117 , 118 , 118 , 120 , 121 , 123 , 122 , 124 , 125 , 129 , 131 , 134 , 136 , 135 , 134 , 131 , 129 , 124 , 124 , 123 , 124 , 127 , 129 , 135 , 137 , 139 , 141 , 170 | 140 , 141 , 139 , 138 , 135 , 132 , 129 , 126 , 123 , 120 , 118 , 117 , 116 , 118 , 121 , 121 , 122 , 123 , 124 , 125 , 127 , 130 , 131 , 132 , 133 , 132 , 130 , 127 , 125 , 123 , 122 , 124 , 171 | 126 , 131 , 134 , 138 , 141 , 139 , 140 , 136 , 135 , 131 , 129 , 126 , 123 , 122 , 119 , 121 , 120 , 123 , 124 , 125 , 125 , 124 , 124 , 125 , 127 , 128 , 130 , 130 , 130 , 128 , 128 , 125 , 172 | 122 , 123 , 122 , 124 , 125 , 128 , 132 , 135 , 137 , 137 , 136 , 136 , 133 , 133 , 131 , 130 , 127 , 125 , 124 , 121 , 121 , 120 , 121 , 122 , 125 , 126 , 127 , 127 , 129 , 129 , 128 , 128 , 173 | 126 , 126 , 125 , 126 , 126 , 126 , 127 , 125 , 127 , 126 , 128 , 131 , 133 , 136 , 137 , 137 , 136 , 134 , 130 , 128 , 125 , 124 , 124 , 124 , 123 , 123 , 122 , 120 , 122 , 122 , 123 , 124 , 174 | 126 , 129 , 131 , 132 , 130 , 128 , 125 , 122 , 121 , 121 , 122 , 124 , 127 , 129 , 131 , 132 , 133 , 134 , 133 , 132 , 131 , 129 , 128 , 127 , 126 , 125 , 124 , 123 , 123 , 122 , 122 , 123 , 175 | 122 , 122 , 123 , 124 , 125 , 126 , 127 , 127 , 128 , 127 , 126 , 125 , 124 , 124 , 124 , 123 , 123 , 124 , 126 , 128 , 130 , 133 , 135 , 136 , 136 , 134 , 131 , 127 , 124 , 121 , 120 , 120 , 176 | 121 , 122 , 124 , 127 , 127 , 127 , 124 , 124 , 123 , 123 , 124 , 125 , 126 , 128 , 128 , 127 , 125 , 124 , 122 , 122 , 123 , 126 , 128 , 130 , 134 , 136 , 136 , 136 , 136 , 133 , 131 , 129 , 177 | 127 , 126 , 127 , 126 , 126 , 127 , 126 , 127 , 127 , 128 , 123 , 121 , 118 , 116 , 118 , 119 , 125 , 131 , 136 , 138 , 136 , 131 , 122 , 117 , 112 , 112 , 115 , 121 , 131 , 138 , 145 , 146 , 178 | 141 , 135 , 128 , 122 , 118 , 118 , 119 , 122 , 123 , 125 , 125 , 125 , 126 , 126 , 129 , 130 , 131 , 131 , 129 , 126 , 124 , 122 , 121 , 121 , 123 , 125 , 128 , 128 , 127 , 127 , 124 , 124 , 179 | 122 , 124 , 127 , 131 , 134 , 136 , 137 , 136 , 133 , 129 , 125 , 122 , 120 , 120 , 121 , 124 , 127 , 129 , 131 , 132 , 131 , 129 , 128 , 128 , 127 , 126 , 127 , 127 , 128 , 129 , 128 , 129 , 180 | 126 , 125 , 124 , 125 , 126 , 128 , 132 , 135 , 136 , 137 , 138 , 136 , 132 , 129 , 125 , 122 , 119 , 118 , 120 , 123 , 126 , 129 , 132 , 131 , 132 , 130 , 128 , 126 , 124 , 124 , 123 , 125 , 181 | 126 , 126 , 127 , 126 , 126 , 125 , 125 , 124 , 125 , 125 , 126 , 129 , 130 , 133 , 135 , 134 , 134 , 131 , 129 , 126 , 123 , 122 , 120 , 119 , 120 , 122 , 125 , 128 , 130 , 132 , 131 , 131 , 182 | 128 , 126 , 125 , 124 , 124 , 125 , 126 , 126 , 127 , 126 , 126 , 124 , 123 , 124 , 126 , 129 , 131 , 135 , 137 , 137 , 135 , 132 , 128 , 124 , 122 , 121 , 121 , 122 , 121 , 123 , 124 , 126 , 183 | 128 , 129 , 130 , 129 , 130 , 128 , 127 , 125 , 124 , 123 , 121 , 123 , 124 , 126 , 128 , 128 , 128 , 127 , 126 , 125 , 127 , 129 , 132 , 136 , 138 , 139 , 138 , 135 , 131 , 127 , 123 , 121 , 184 | 121 , 123 , 127 , 131 , 134 , 136 , 135 , 132 , 130 , 128 , 127 , 128 , 129 , 128 , 127 , 127 , 126 , 125 , 125 , 126 , 125 , 126 , 128 , 130 , 131 , 132 , 132 , 132 , 131 , 131 , 131 , 130 , 185 | 129 , 128 , 126 , 124 , 122 , 120 , 119 , 121 , 123 , 126 , 129 , 131 , 133 , 133 , 131 , 128 , 126 , 124 , 122 , 121 , 122 , 124 , 125 , 126 , 126 , 127 , 125 , 125 , 126 , 126 , 128 , 130 , 186 | 132 , 132 , 133 , 132 , 131 , 130 , 128 , 126 , 124 , 122 , 122 , 121 , 123 , 125 , 128 , 131 , 132 , 133 , 133 , 132 , 130 , 127 , 127 , 126 , 126 , 127 , 128 , 129 , 130 , 131 , 131 , 130 , 187 | 130 , 129 , 130 , 132 , 133 , 134 , 136 , 136 , 135 , 132 , 130 , 128 , 125 , 123 , 123 , 124 , 125 , 126 , 129 , 131 , 132 , 133 , 132 , 133 , 132 , 131 , 130 , 128 , 126 , 124 , 123 , 122 , 188 | 123 , 126 , 127 , 128 , 129 , 128 , 128 , 127 , 128 , 129 , 130 , 131 , 132 , 131 , 131 , 130 , 128 , 125 , 123 , 121 , 119 , 120 , 121 , 124 , 126 , 128 , 129 , 128 , 128 , 126 , 125 , 122 , 189 | 121 , 121 , 120 , 121 , 120 , 122 , 123 , 124 , 126 , 126 , 127 , 128 , 128 , 129 , 128 , 129 , 128 , 127 , 128 , 127 , 128 , 127 , 125 , 123 , 122 , 121 , 122 , 124 , 127 , 129 , 131 , 132 , 190 | 131 , 130 , 129 , 127 , 126 , 125 , 124 , 124 , 125 , 125 , 124 , 126 , 127 , 127 , 128 , 129 , 130 , 130 , 129 , 128 , 129 , 128 , 130 , 129 , 130 , 129 , 128 , 128 , 126 , 125 , 124 , 125 , 191 | 127 , 129 , 131 , 132 , 132 , 133 , 132 , 129 , 127 , 126 , 123 , 123 , 124 , 125 , 126 , 127 , 128 , 127 , 127 , 126 , 127 , 128 , 129 , 130 , 131 , 131 , 130 , 131 , 129 , 128 , 128 , 126 , 192 | 124 , 124 , 123 , 123 , 124 , 125 , 127 , 128 , 129 , 130 , 131 , 130 , 129 , 128 , 126 , 124 , 123 , 122 , 123 , 125 , 126 , 128 , 129 , 130 , 129 , 128 , 129 , 128 , 127 , 128 , 128 , 129 , 193 | 128 , 129 , 129 , 127 , 125 , 123 , 121 , 121 , 122 , 124 , 127 , 129 , 131 , 132 , 132 , 131 , 130 , 128 , 126 , 124 , 123 , 123 , 124 , 125 , 126 , 128 , 129 , 129 , 130 , 131 , 130 , 131 , 194 | 130 , 130 , 129 , 128 , 129 , 128 , 129 , 128 , 128 , 126 , 125 , 124 , 124 , 125 , 125 , 127 , 128 , 129 , 129 , 130 , 129 , 129 , 127 , 126 , 125 , 124 , 124 , 123 , 123 , 124 , 124 , 125 , 195 | 125 , 127 , 128 , 128 , 127 , 128 , 129 , 129 , 129 , 128 , 127 , 127 , 126 , 124 , 123 , 122 , 121 , 120 , 122 , 123 , 125 , 126 , 126 , 127 , 126 , 124 , 124 , 123 , 123 , 122 , 122 , 121 , 196 | 121 , 122 , 122 , 123 , 124 , 125 , 126 , 127 , 127 , 127 , 126 , 125 , 125 , 125 , 126 , 126 , 127 , 128 , 127 , 126 , 124 , 123 , 122 , 122 , 124 , 126 , 127 , 127 , 128 , 128 , 127 , 125 , 197 | 124 , 123 , 124 , 124 , 124 , 126 , 125 , 126 , 127 , 126 , 128 , 129 , 130 , 129 , 130 , 129 , 127 , 126 , 125 , 126 , 125 , 126 , 128 , 128 , 127 , 127 , 126 , 125 , 127 , 129 , 130 , 131 , 198 | 132 , 132 , 131 , 131 , 129 , 127 , 125 , 124 , 125 , 126 , 126 , 127 , 127 , 128 , 129 , 129 , 130 , 130 , 131 , 130 , 130 , 129 , 128 , 129 , 128 , 128 , 129 , 128 , 129 , 128 , 127 , 126 , 199 | 126 , 125 , 126 , 126 , 127 , 128 , 128 , 129 , 128 , 128 , 127 , 127 , 127 , 126 , 125 , 125 , 126 , 126 , 127 , 128 , 129 , 130 , 131 , 131 , 129 , 127 , 126 , 126 , 125 , 127 , 128 , 128 , 200 | 127 , 126 , 125 , 125 , 124 , 123 , 125 , 126 , 127 , 127 , 128 , 128 , 127 , 127 , 126 , 127 , 126 , 126 , 126 , 125 , 126 , 126 , 126 , 127 , 128 , 129 , 128 , 129 , 130 , 130 , 129 , 128 , 201 | 129 , 128 , 128 , 128 , 128 , 127 , 127 , 126 , 126 , 125 , 125 , 125 , 126 , 126 , 127 , 128 , 129 , 128 , 127 , 126 , 126 , 124 , 124 , 123 , 124 , 123 , 123 , 124 , 125 , 125 , 127 , 128 , 202 | 129 , 130 , 129 , 128 , 126 , 124 , 124 , 123 , 124 , 125 , 125 , 126 , 125 , 125 , 124 , 125 , 124 , 125 , 124 , 124 , 125 , 125 , 126 , 127 , 126 , 125 , 123 , 123 , 122 , 121 , 122 , 122 , 203 | 122 , 123 , 125 , 125 , 127 , 127 , 126 , 127 , 127 , 126 , 126 , 125 , 125 , 124 , 125 , 124 , 125 , 126 , 125 , 126 , 125 , 124 , 124 , 124 , 125 , 126 , 128 , 128 , 129 , 128 , 127 , 125 , 204 | 124 , 125 , 124 , 125 , 126 , 127 , 128 , 129 , 128 , 129 , 129 , 129 , 129 , 130 , 130 , 129 , 129 , 128 , 128 , 126 , 126 , 127 , 128 , 129 , 128 , 129 , 128 , 127 , 127 , 128 , 129 , 130 , 205 | 132 , 131 , 131 , 129 , 128 , 127 , 127 , 128 , 128 , 129 206 | }; 207 | const uint8_t piano[] = { 208 | 128 , 128 , 128 , 128 , 128 , 128 , 129 , 130 , 130 , 130 , 131 , 130 , 131 , 131 , 132 , 132 , 133 , 133 , 132 , 133 , 133 , 134 , 134 , 133 , 132 , 132 , 132 , 132 , 132 , 131 , 130 , 125 , 209 | 129 , 134 , 122 , 130 , 119 , 130 , 118 , 131 , 124 , 136 , 124 , 119 , 177 , 151 , 144 , 140 , 132 , 144 , 114 , 112 , 105 , 102 , 112 , 76 , 125 , 112 , 90 , 109 , 78 , 88 , 114 , 100 , 210 | 112 , 106 , 122 , 108 , 142 , 109 , 148 , 156 , 143 , 130 , 172 , 194 , 160 , 187 , 174 , 194 , 198 , 164 , 147 , 138 , 142 , 124 , 125 , 100 , 108 , 141 , 80 , 76 , 90 , 58 , 68 , 71 , 211 | 76 , 80 , 120 , 102 , 159 , 191 , 172 , 193 , 183 , 192 , 155 , 181 , 116 , 130 , 120 , 112 , 117 , 104 , 112 , 120 , 124 , 164 , 126 , 159 , 119 , 128 , 181 , 157 , 165 , 116 , 140 , 49 , 212 | 127 , 122 , 142 , 114 , 107 , 135 , 126 , 102 , 80 , 98 , 125 , 70 , 114 , 112 , 104 , 124 , 120 , 135 , 154 , 166 , 160 , 145 , 152 , 125 , 144 , 118 , 92 , 154 , 128 , 136 , 140 , 144 , 213 | 144 , 137 , 112 , 130 , 117 , 101 , 158 , 123 , 131 , 84 , 116 , 116 , 116 , 160 , 108 , 166 , 127 , 158 , 139 , 162 , 132 , 151 , 160 , 135 , 96 , 150 , 101 , 118 , 123 , 151 , 114 , 154 , 214 | 98 , 90 , 104 , 126 , 118 , 98 , 82 , 74 , 114 , 112 , 98 , 142 , 138 , 152 , 175 , 197 , 193 , 214 , 226 , 185 , 181 , 193 , 174 , 177 , 105 , 95 , 52 , 45 , 0 , 0 , 54 , 50 , 215 | 84 , 86 , 108 , 74 , 128 , 110 , 133 , 128 , 138 , 155 , 133 , 144 , 151 , 168 , 171 , 176 , 216 , 176 , 200 , 200 , 229 , 188 , 186 , 178 , 155 , 113 , 146 , 112 , 109 , 82 , 58 , 79 , 216 | 94 , 80 , 88 , 85 , 62 , 77 , 64 , 98 , 53 , 90 , 112 , 135 , 140 , 154 , 186 , 187 , 189 , 195 , 200 , 190 , 148 , 143 , 168 , 144 , 162 , 167 , 119 , 96 , 112 , 96 , 80 , 80 , 217 | 93 , 110 , 98 , 131 , 96 , 120 , 110 , 129 , 110 , 129 , 117 , 150 , 124 , 109 , 123 , 107 , 82 , 38 , 109 , 86 , 118 , 118 , 138 , 138 , 171 , 158 , 176 , 171 , 159 , 175 , 129 , 129 , 218 | 102 , 118 , 135 , 132 , 161 , 142 , 149 , 147 , 167 , 145 , 148 , 133 , 114 , 100 , 113 , 92 , 129 , 106 , 83 , 108 , 131 , 128 , 120 , 143 , 148 , 140 , 144 , 155 , 130 , 124 , 135 , 144 , 219 | 128 , 112 , 128 , 149 , 142 , 147 , 159 , 150 , 90 , 114 , 97 , 95 , 110 , 125 , 100 , 92 , 106 , 124 , 124 , 143 , 119 , 167 , 167 , 178 , 150 , 191 , 170 , 191 , 178 , 170 , 178 , 160 , 220 | 168 , 102 , 113 , 74 , 52 , 40 , 46 , 58 , 72 , 68 , 78 , 88 , 106 , 100 , 112 , 147 , 112 , 152 , 133 , 144 , 139 , 132 , 158 , 176 , 177 , 166 , 190 , 179 , 206 , 180 , 209 , 158 , 221 | 150 , 132 , 106 , 91 , 84 , 68 , 66 , 74 , 112 , 83 , 87 , 92 , 100 , 104 , 74 , 97 , 87 , 88 , 90 , 128 , 131 , 138 , 150 , 174 , 186 , 175 , 203 , 184 , 149 , 155 , 141 , 147 , 222 | 144 , 141 , 138 , 110 , 110 , 88 , 92 , 98 , 88 , 132 , 131 , 122 , 110 , 139 , 129 , 127 , 134 , 129 , 152 , 146 , 142 , 127 , 147 , 115 , 99 , 97 , 78 , 101 , 108 , 130 , 117 , 154 , 223 | 157 , 160 , 159 , 165 , 162 , 139 , 131 , 103 , 107 , 102 , 127 , 147 , 148 , 112 , 166 , 151 , 157 , 142 , 166 , 134 , 141 , 106 , 102 , 106 , 96 , 100 , 92 , 109 , 132 , 130 , 132 , 118 , 224 | 142 , 154 , 128 , 124 , 122 , 112 , 93 , 109 , 109 , 78 , 119 , 126 , 149 , 146 , 152 , 139 , 138 , 104 , 107 , 94 , 125 , 116 , 104 , 123 , 110 , 117 , 127 , 137 , 130 , 171 , 170 , 175 , 225 | 154 , 180 , 176 , 188 , 168 , 160 , 191 , 160 , 140 , 128 , 107 , 86 , 72 , 80 , 49 , 45 , 65 , 74 , 77 , 93 , 102 , 112 , 124 , 122 , 145 , 138 , 144 , 140 , 143 , 146 , 164 , 197 , 226 | 186 , 164 , 202 , 203 , 204 , 202 , 189 , 197 , 166 , 139 , 96 , 90 , 71 , 64 , 74 , 81 , 90 , 88 , 95 , 84 , 91 , 95 , 101 , 86 , 94 , 85 , 96 , 115 , 118 , 121 , 164 , 155 , 227 | 189 , 195 , 193 , 186 , 192 , 178 , 136 , 147 , 154 , 159 , 123 , 130 , 100 , 90 , 93 , 102 , 101 , 119 , 122 , 119 , 122 , 102 , 122 , 123 , 110 , 112 , 144 , 138 , 134 , 135 , 146 , 122 , 228 | 129 , 122 , 99 , 100 , 89 , 120 , 123 , 138 , 140 , 148 , 157 , 147 , 138 , 138 , 108 , 103 , 102 , 104 , 121 , 144 , 128 , 142 , 137 , 148 , 163 , 157 , 152 , 151 , 162 , 125 , 103 , 104 , 229 | 104 , 85 , 108 , 119 , 132 , 122 , 140 , 146 , 137 , 150 , 138 , 142 , 130 , 103 , 109 , 99 , 81 , 105 , 120 , 136 , 144 , 164 , 163 , 148 , 158 , 139 , 105 , 100 , 108 , 113 , 112 , 107 , 230 | 112 , 113 , 127 , 123 , 151 , 155 , 156 , 167 , 170 , 157 , 173 , 163 , 157 , 154 , 171 , 158 , 132 , 126 , 108 , 114 , 108 , 90 , 62 , 73 , 51 , 60 , 76 , 86 , 94 , 98 , 117 , 118 , 231 | 119 , 128 , 131 , 131 , 122 , 133 , 161 , 156 , 167 , 171 , 189 , 186 , 202 , 207 , 193 , 198 , 200 , 152 , 110 , 93 , 81 , 76 , 61 , 84 , 85 , 97 , 86 , 98 , 99 , 92 , 95 , 106 , 232 | 90 , 80 , 87 , 100 , 98 , 104 , 147 , 148 , 176 , 182 , 194 , 196 , 209 , 194 , 166 , 150 , 148 , 151 , 138 , 112 , 89 , 102 , 101 , 98 , 110 , 120 , 128 , 132 , 118 , 126 , 117 , 120 , 233 | 102 , 115 , 133 , 123 , 139 , 135 , 128 , 138 , 155 , 130 , 112 , 100 , 106 , 93 , 118 , 125 , 130 , 143 , 152 , 154 , 144 , 109 , 125 , 123 , 94 , 102 , 115 , 130 , 117 , 130 , 138 , 139 , 234 | 147 , 157 , 156 , 166 , 174 , 157 , 131 , 120 , 111 , 112 , 105 , 116 , 125 , 143 , 132 , 146 , 158 , 129 , 150 , 141 , 130 , 106 , 81 , 80 , 80 , 88 , 99 , 117 , 140 , 155 , 147 , 168 , 235 | 173 , 156 , 128 , 126 , 100 , 119 , 116 , 102 , 101 , 117 , 122 , 137 , 134 , 142 , 168 , 161 , 165 , 157 , 171 , 152 , 149 , 157 , 160 , 128 , 135 , 121 , 112 , 108 , 131 , 110 , 94 , 78 , 236 | 64 , 66 , 68 , 76 , 85 , 94 , 104 , 132 , 117 , 115 , 132 , 140 , 134 , 126 , 150 , 155 , 160 , 162 , 174 , 180 , 193 , 181 , 200 , 198 , 195 , 162 , 140 , 120 , 85 , 84 , 78 , 78 , 237 | 93 , 94 , 99 , 104 , 97 , 100 , 94 , 106 , 96 , 94 , 78 , 78 , 94 , 115 , 117 , 139 , 165 , 183 , 181 , 206 , 220 , 200 , 186 , 176 , 153 , 148 , 123 , 99 , 98 , 87 , 98 , 103 , 238 | 110 , 106 , 125 , 141 , 122 , 124 , 126 , 110 , 100 , 125 , 122 , 119 , 128 , 138 , 139 , 144 , 160 , 152 , 145 , 130 , 102 , 121 , 104 , 111 , 129 , 129 , 149 , 132 , 133 , 108 , 123 , 112 , 239 | 109 , 100 , 116 , 116 , 131 , 122 , 126 , 142 , 150 , 138 , 154 , 171 , 173 , 158 , 154 , 151 , 122 , 121 , 98 , 119 , 120 , 124 , 142 , 140 , 137 , 130 , 151 , 138 , 124 , 104 , 85 , 65 , 240 | 71 , 85 , 86 , 100 , 131 , 140 , 144 , 158 , 172 , 162 , 147 , 129 , 126 , 126 , 98 , 107 , 98 , 122 , 114 , 138 , 144 , 139 , 159 , 177 , 171 , 173 , 162 , 164 , 152 , 156 , 140 , 129 , 241 | 132 , 112 , 116 , 120 , 124 , 125 , 128 , 102 , 82 , 70 , 70 , 66 , 61 , 85 , 103 , 106 , 110 , 108 , 141 , 136 , 134 , 142 , 142 , 151 , 164 , 170 , 156 , 177 , 195 , 189 , 189 , 195 , 242 | 189 , 168 , 158 , 134 , 126 , 83 , 84 , 81 , 85 , 84 , 96 , 100 , 96 , 76 , 110 , 99 , 97 , 87 , 72 , 77 , 83 , 104 , 98 , 133 , 150 , 170 , 184 , 198 , 200 , 218 , 208 , 189 , 243 | 172 , 152 , 126 , 100 , 91 , 96 , 87 , 106 , 112 , 111 , 126 , 122 , 136 , 134 , 116 , 107 , 114 , 117 , 104 , 115 , 130 , 130 , 134 , 150 , 150 , 168 , 160 , 168 , 133 , 114 , 116 , 120 , 244 | 114 , 120 , 128 , 134 , 110 , 107 , 120 , 113 , 108 , 109 , 115 , 113 , 123 , 124 , 117 , 124 , 139 , 134 , 154 , 148 , 161 , 162 , 167 , 167 , 158 , 134 , 115 , 112 , 127 , 123 , 127 , 138 , 245 | 140 , 138 , 144 , 144 , 128 , 113 , 84 , 66 , 74 , 69 , 67 , 94 , 110 , 114 , 147 , 138 , 165 , 154 , 167 , 154 , 145 , 130 , 111 , 106 , 106 , 106 , 119 , 127 , 132 , 151 , 163 , 162 , 246 | 166 , 189 , 170 , 160 , 155 , 151 , 118 , 128 , 113 , 121 , 109 , 108 , 126 , 126 , 132 , 133 , 109 , 87 , 72 , 72 , 71 , 68 , 85 , 101 , 98 , 110 , 129 , 140 , 136 , 136 , 146 , 156 , 247 | 159 , 158 , 149 , 181 , 172 , 189 , 186 , 181 , 178 , 162 , 170 , 157 , 140 , 126 , 96 , 90 , 88 , 88 , 94 , 92 , 97 , 92 , 106 , 96 , 106 , 100 , 82 , 74 , 101 , 86 , 94 , 119 , 248 | 144 , 159 , 170 , 180 , 203 , 205 , 215 , 203 , 194 , 171 , 129 , 122 , 93 , 85 , 90 , 97 , 97 , 110 , 125 , 115 , 128 , 138 , 128 , 116 , 117 , 105 , 105 , 104 , 110 , 132 , 133 , 132 , 249 | 142 , 158 , 179 , 163 , 163 , 138 , 122 , 130 , 107 , 118 , 106 , 117 , 103 , 106 , 108 , 112 , 115 , 109 , 108 , 126 , 121 , 115 , 108 , 122 , 126 , 131 , 142 , 149 , 148 , 154 , 179 , 180 , 250 | 181 , 150 , 150 , 136 , 123 , 126 , 124 , 135 , 136 , 144 , 143 , 132 , 135 , 119 , 89 , 74 , 71 , 66 , 63 , 74 , 101 , 116 , 125 , 135 , 149 , 166 , 162 , 157 , 176 , 139 , 132 , 117 , 251 | 122 , 104 , 107 , 124 , 136 , 146 , 159 , 146 , 173 , 179 , 176 , 172 , 154 , 141 , 125 , 111 , 106 , 105 , 116 , 110 , 102 , 129 , 136 , 139 , 129 , 108 , 96 , 89 , 71 , 76 , 78 , 85 , 252 | 92 , 114 , 122 , 122 , 144 , 141 , 146 , 156 , 153 , 155 , 147 , 162 , 170 , 167 , 177 , 176 , 159 , 156 , 154 , 173 , 159 , 136 , 124 , 118 , 95 , 92 , 85 , 94 , 90 , 102 , 94 , 99 , 253 | 108 , 93 , 104 , 88 , 90 , 90 , 91 , 112 , 123 , 141 , 158 , 160 , 192 , 198 , 202 , 197 , 202 , 174 , 145 , 123 , 108 , 94 , 80 , 81 , 98 , 124 , 108 , 113 , 132 , 139 , 141 , 129 , 254 | 130 , 107 , 97 , 111 , 106 , 110 , 133 , 132 , 142 , 152 , 170 , 174 , 170 , 158 , 154 , 140 , 122 , 112 , 108 , 92 , 90 , 104 , 100 , 104 , 104 , 112 , 117 , 118 , 117 , 116 , 109 , 122 , 255 | 112 , 128 , 132 , 138 , 146 , 148 , 159 , 176 , 187 , 178 , 170 , 158 , 139 , 129 , 129 , 126 , 146 , 140 , 133 , 138 , 130 , 108 , 101 , 87 , 76 , 62 , 62 , 80 , 76 , 106 , 107 , 123 , 256 | 141 , 146 , 155 , 150 , 161 , 155 , 147 , 136 , 123 , 122 , 115 , 110 , 137 , 149 , 148 , 146 , 169 , 180 , 188 , 173 , 178 , 139 , 127 , 113 , 101 , 106 , 100 , 106 , 110 , 118 , 129 , 135 , 257 | 140 , 123 , 119 , 110 , 87 , 78 , 77 , 76 , 84 , 100 , 113 , 124 , 130 , 142 , 152 , 154 , 155 , 147 , 160 , 155 , 156 , 162 , 165 , 165 , 154 , 155 , 148 , 156 , 163 , 157 , 154 , 136 , 258 | 113 , 112 , 84 , 90 , 96 , 100 , 88 , 96 , 102 , 105 , 96 , 103 , 92 , 90 , 92 , 101 , 110 , 122 , 130 , 154 , 177 , 182 , 190 , 188 , 192 , 174 , 166 , 144 , 117 , 110 , 88 , 86 , 259 | 94 , 111 , 116 , 106 , 122 , 140 , 139 , 144 , 128 , 118 , 113 , 103 , 102 , 112 , 118 , 133 , 138 , 151 , 156 , 160 , 178 , 164 , 171 , 154 , 143 , 124 , 102 , 90 , 84 , 86 , 90 , 92 , 260 | 107 , 102 , 117 , 128 , 115 , 116 , 124 , 125 , 114 , 119 , 124 , 142 , 138 , 150 , 151 , 168 , 184 , 192 , 197 , 174 , 166 , 151 , 133 , 132 , 135 , 140 , 129 , 120 , 126 , 107 , 103 , 90 , 261 | 76 , 72 , 65 , 68 , 83 , 81 , 88 , 109 , 134 , 146 , 136 , 150 , 156 , 164 , 161 , 154 , 150 , 138 , 130 , 122 , 124 , 142 , 142 , 144 , 156 , 164 , 188 , 182 , 166 , 147 , 138 , 110 , 262 | 98 , 91 , 95 , 95 , 109 , 114 , 119 , 118 , 133 , 135 , 136 , 118 , 104 , 96 , 84 , 76 , 75 , 90 , 99 , 118 , 129 , 129 , 148 , 154 , 152 , 155 , 159 , 165 , 159 , 152 , 150 , 154 , 263 | 154 , 137 , 139 , 139 , 150 , 160 , 164 , 151 , 140 , 119 , 112 , 102 , 96 , 99 , 87 , 99 , 95 , 100 , 103 , 100 , 102 , 103 , 96 , 103 , 106 , 117 , 113 , 138 , 164 , 182 , 178 , 174 , 264 | 178 , 181 , 167 , 153 , 146 , 123 , 114 , 95 , 104 , 108 , 101 , 115 , 118 , 126 , 139 , 140 , 134 , 128 , 123 , 114 , 100 , 112 , 114 , 127 , 133 , 145 , 154 , 154 , 157 , 173 , 173 , 169 , 265 | 146 , 138 , 120 , 87 , 85 , 74 , 80 , 90 , 96 , 100 , 114 , 116 , 116 , 122 , 132 , 123 , 116 , 112 , 112 , 129 , 134 , 140 , 144 , 155 , 176 , 190 , 191 , 193 , 181 , 171 , 150 , 149 , 266 | 147 , 131 , 128 , 125 , 114 , 104 , 101 , 87 , 80 , 72 , 74 , 71 , 71 , 72 , 76 , 94 , 116 , 132 , 135 , 132 , 148 , 155 , 157 , 157 , 162 , 165 , 147 , 136 , 136 , 138 , 136 , 144 , 267 | 146 , 162 , 173 , 176 , 169 , 153 , 144 , 117 , 102 , 93 , 88 , 94 , 102 , 111 , 115 , 115 , 129 , 130 , 143 , 125 , 120 , 117 , 108 , 87 , 80 , 80 , 99 , 113 , 119 , 129 , 143 , 151 , 268 | 144 , 156 , 171 , 166 , 162 , 152 , 142 , 143 , 139 , 137 , 126 , 128 , 144 , 151 , 167 , 151 , 156 , 146 , 129 , 124 , 112 , 95 , 97 , 94 , 97 , 95 , 96 , 107 , 104 , 107 , 102 , 109 , 269 | 112 , 104 , 103 , 125 , 143 , 170 , 167 , 170 , 164 , 167 , 162 , 146 , 147 , 144 , 130 , 121 , 106 , 106 , 104 , 110 , 114 , 117 , 131 , 137 , 135 , 133 , 131 , 116 , 112 , 116 , 114 , 119 , 270 | 126 , 144 , 142 , 148 , 151 , 171 , 174 , 167 , 160 , 154 , 136 , 112 , 90 , 72 , 75 , 86 , 90 , 91 , 99 , 110 , 108 , 118 , 129 , 124 , 124 , 114 , 115 , 112 , 126 , 132 , 138 , 152 , 271 | 160 , 182 , 194 , 189 , 194 , 184 , 180 , 176 , 158 , 144 , 131 , 124 , 115 , 99 , 92 , 87 , 81 , 80 , 72 , 73 , 75 , 72 , 73 , 75 , 102 , 112 , 128 , 128 , 135 , 147 , 148 , 152 , 272 | 168 , 171 , 168 , 167 , 151 , 147 , 143 , 150 , 150 , 155 , 172 , 174 , 165 , 167 , 148 , 128 , 107 , 103 , 94 , 86 , 94 , 95 , 109 , 109 , 114 , 127 , 126 , 122 , 122 , 116 , 122 , 103 , 273 | 94 , 87 , 94 , 110 , 117 , 125 , 135 , 140 , 144 , 152 , 165 , 168 , 164 , 160 , 144 , 138 , 135 , 123 , 127 , 123 , 136 , 141 , 152 , 153 , 158 , 152 , 152 , 142 , 128 , 109 , 104 , 99 , 274 | 95 , 87 , 99 , 97 , 104 , 106 , 106 , 108 , 109 , 113 , 108 , 112 , 135 , 147 , 163 , 161 , 160 , 165 , 147 , 144 , 147 , 152 , 145 , 139 , 124 , 116 , 112 , 118 , 107 , 111 , 123 , 127 , 275 | 135 , 133 , 132 , 125 , 120 , 125 , 117 , 123 , 119 , 130 , 138 , 141 , 147 , 163 , 164 , 165 , 155 , 156 , 148 , 133 , 99 , 86 , 78 , 90 , 81 , 89 , 95 , 104 , 106 , 116 , 124 , 122 , 276 | 128 , 127 , 114 , 114 , 118 , 122 , 131 , 138 , 160 , 168 , 181 , 190 , 190 , 191 , 191 , 194 , 183 , 157 , 147 , 137 , 113 , 99 , 88 , 89 , 82 , 80 , 75 , 64 , 81 , 76 , 78 , 74 , 277 | 82 , 100 , 117 , 117 , 128 , 136 , 141 , 141 , 158 , 170 , 178 , 178 , 171 , 156 , 160 , 154 , 151 , 154 , 159 , 161 , 164 , 162 , 142 , 125 , 116 , 110 , 100 , 91 , 84 , 90 , 97 , 104 , 278 | 111 , 112 , 120 , 121 , 114 , 114 , 122 , 122 , 108 , 94 , 109 , 114 , 116 , 123 , 130 , 138 , 137 , 154 , 160 , 162 , 168 , 163 , 154 , 138 , 125 , 120 , 115 , 119 , 125 , 130 , 141 , 147 , 279 | 151 , 156 , 146 , 158 , 150 , 129 , 120 , 109 , 104 , 90 , 93 , 97 , 107 , 109 , 103 , 103 , 113 , 111 , 115 , 114 , 122 , 136 , 151 , 157 , 157 , 153 , 146 , 138 , 142 , 146 , 144 , 151 , 280 | 133 , 130 , 132 , 116 , 111 , 110 , 119 , 115 , 126 , 134 , 126 , 121 , 119 , 130 , 133 , 124 , 124 , 124 , 130 , 135 , 146 , 156 , 161 , 160 , 157 , 150 , 141 , 141 , 115 , 100 , 90 , 96 , 281 | 84 , 85 , 95 , 101 , 101 , 108 , 112 , 123 , 119 , 124 , 122 , 116 , 112 , 109 , 121 , 137 , 144 , 160 , 174 , 179 , 187 , 189 , 189 , 203 , 196 , 186 , 167 , 151 , 124 , 106 , 97 , 83 , 282 | 90 , 85 , 69 , 72 , 77 , 84 , 76 , 75 , 80 , 87 , 95 , 110 , 120 , 123 , 126 , 132 , 154 , 155 , 174 , 182 , 177 , 173 , 174 , 166 , 158 , 156 , 162 , 154 , 163 , 155 , 146 , 130 , 283 | 114 , 118 , 113 , 99 , 92 , 90 , 97 , 95 , 100 , 113 , 119 , 116 , 118 , 112 , 119 , 119 , 118 , 114 , 119 , 124 , 123 , 126 , 130 , 129 , 142 , 142 , 152 , 160 , 165 , 166 , 152 , 148 , 284 | 131 , 112 , 110 , 114 , 108 , 116 , 125 , 144 , 144 , 142 , 142 , 157 , 157 , 149 , 145 , 131 , 110 , 104 , 98 , 97 , 110 , 110 , 107 , 102 , 106 , 116 , 115 , 118 , 119 , 130 , 138 , 140 , 285 | 146 , 144 , 132 , 132 , 135 , 132 , 132 , 144 , 145 , 143 , 141 , 133 , 125 , 122 , 114 , 117 , 124 , 126 , 124 , 123 , 120 , 128 , 139 , 140 , 132 , 125 , 134 , 130 , 141 , 148 , 161 , 168 , 286 | 158 , 147 , 141 , 135 , 121 , 109 , 109 , 97 , 88 , 96 , 92 , 97 , 95 , 104 , 108 , 112 , 120 , 123 , 118 , 124 , 115 , 112 , 116 , 124 , 143 , 143 , 159 , 175 , 184 , 181 , 179 , 196 , 287 | 200 , 192 , 189 , 165 , 144 , 120 , 104 , 96 , 87 , 86 , 78 , 75 , 70 , 76 , 73 , 80 , 72 , 82 , 89 , 95 , 110 , 109 , 121 , 130 , 144 , 155 , 163 , 171 , 174 , 182 , 188 , 173 , 288 | 174 , 171 , 166 , 159 , 160 , 156 , 144 , 135 , 124 , 110 , 110 , 112 , 101 , 96 , 90 , 92 , 98 , 99 , 112 , 122 , 120 , 107 , 109 , 114 , 106 , 116 , 126 , 128 , 125 , 126 , 134 , 131 , 289 | 136 , 138 , 150 , 158 , 162 , 156 , 154 , 147 , 134 , 124 , 110 , 102 , 107 , 108 , 120 , 133 , 144 , 142 , 139 , 149 , 151 , 159 , 152 , 144 , 132 , 114 , 108 , 112 , 118 , 118 , 108 , 112 , 290 | 112 , 106 , 111 , 114 , 122 , 124 , 126 , 128 , 128 , 124 , 126 , 125 , 127 , 124 , 133 , 135 , 132 , 148 , 147 , 147 , 135 , 136 , 129 , 123 , 123 , 127 , 123 , 126 , 124 , 128 , 138 , 137 , 291 | 139 , 141 , 131 , 128 , 135 , 140 , 150 , 162 , 160 , 138 , 134 , 126 , 112 , 109 , 104 , 108 , 100 , 98 , 101 , 99 , 100 , 96 , 102 , 119 , 115 , 115 , 116 , 118 , 119 , 122 , 122 , 129 , 292 | 131 , 138 , 147 , 170 , 175 , 178 , 182 , 183 , 193 , 196 , 191 , 176 , 162 , 141 , 119 , 101 , 102 , 92 , 80 , 78 , 78 , 74 , 69 , 73 , 82 , 85 , 85 , 92 , 98 , 99 , 106 , 122 , 293 | 138 , 147 , 156 , 163 , 165 , 177 , 184 , 188 , 186 , 184 , 184 , 164 , 164 , 150 , 150 , 137 , 122 , 112 , 112 , 103 , 106 , 105 , 101 , 92 , 93 , 98 , 106 , 122 , 115 , 113 , 110 , 106 , 294 | 103 , 114 , 122 , 131 , 134 , 141 , 140 , 142 , 146 , 134 , 146 , 158 , 162 , 151 , 142 , 142 , 135 , 125 , 114 , 111 , 107 , 100 , 109 , 128 , 131 , 138 , 139 , 141 , 144 , 149 , 152 , 148 , 295 | 138 , 134 , 123 , 126 , 127 , 124 , 120 , 117 , 115 , 115 , 104 , 110 , 121 , 128 , 125 , 121 , 126 , 119 , 113 , 110 , 114 , 120 , 119 , 122 , 125 , 131 , 139 , 146 , 150 , 151 , 146 , 141 , 296 | 135 , 127 , 128 , 133 , 129 , 129 , 128 , 136 , 132 , 140 , 136 , 131 , 127 , 131 , 148 , 157 , 148 , 144 , 140 , 124 , 107 , 103 , 105 , 99 , 104 , 108 , 105 , 108 , 106 , 100 , 104 , 113 , 297 | 120 , 119 , 107 , 110 , 115 , 127 , 123 , 133 , 136 , 133 , 142 , 158 , 168 , 172 , 179 , 187 , 186 , 182 , 184 , 176 , 173 , 149 , 129 , 122 , 110 , 100 , 90 , 85 , 83 , 77 , 69 , 66 , 298 | 74 , 84 , 88 , 86 , 90 , 93 , 104 , 108 , 122 , 142 , 151 , 157 , 157 , 168 , 171 , 176 , 194 , 196 , 194 , 182 , 176 , 164 , 154 , 142 , 135 , 118 , 109 , 101 , 102 , 99 , 102 , 96 , 299 | 92 , 86 , 102 , 112 , 111 , 106 , 110 , 110 , 98 , 108 , 115 , 123 , 135 , 142 , 149 , 150 , 149 , 146 , 150 , 158 , 158 , 155 , 146 , 131 , 128 , 124 , 119 , 113 , 111 , 100 , 104 , 111 , 300 | 126 , 128 , 136 , 140 , 144 , 147 , 135 , 139 , 145 , 140 , 129 , 138 , 136 , 134 , 126 , 126 , 126 , 117 , 112 , 113 , 118 , 122 , 127 , 127 , 122 , 114 , 114 , 105 , 104 , 112 , 119 , 121 , 301 | 116 , 126 , 126 , 133 , 144 , 155 , 159 , 148 , 140 , 138 , 131 , 133 , 136 , 140 , 133 , 131 , 135 , 138 , 136 , 138 , 134 , 139 , 141 , 152 , 146 , 142 , 138 , 128 , 113 , 102 , 94 , 96 , 302 | 102 , 106 , 111 , 118 , 118 , 105 , 112 , 119 , 119 , 117 , 109 , 106 , 104 , 114 , 124 , 130 , 136 , 135 , 138 , 145 , 150 , 166 , 178 , 181 , 183 , 187 , 173 , 170 , 170 , 158 , 139 , 131 , 303 | 128 , 114 , 104 , 92 , 95 , 85 , 74 , 68 , 77 , 78 , 83 , 86 , 91 , 94 , 99 , 107 , 111 , 127 , 142 , 150 , 152 , 154 , 156 , 167 , 180 , 192 , 197 , 192 , 183 , 172 , 161 , 146 , 304 | 138 , 129 , 121 , 104 , 99 , 100 , 103 , 98 , 94 , 99 , 106 , 108 , 104 , 105 , 107 , 104 , 108 , 106 , 104 , 113 , 127 , 136 , 139 , 154 , 160 , 154 , 154 , 161 , 160 , 159 , 147 , 135 , 305 | 122 , 116 , 113 , 114 , 114 , 103 , 107 , 110 , 109 , 119 , 133 , 142 , 146 , 144 , 135 , 131 , 141 , 140 , 138 , 141 , 148 , 151 , 144 , 133 , 128 , 130 , 120 , 113 , 115 , 118 , 117 , 120 , 306 | 120 , 117 , 112 , 102 , 100 , 103 , 108 , 114 , 122 , 118 , 114 , 120 , 138 , 147 , 156 , 154 , 149 , 142 , 144 , 141 , 139 , 143 , 145 , 142 , 129 , 131 , 134 , 139 , 132 , 139 , 150 , 146 , 307 | 144 , 140 , 135 , 126 , 116 , 108 , 94 , 85 , 95 , 100 , 106 , 114 , 122 , 124 , 123 , 125 , 122 , 122 , 115 , 109 , 106 , 106 , 110 , 126 , 136 , 133 , 136 , 139 , 144 , 151 , 163 , 178 , 308 | 186 , 186 , 172 , 165 , 165 , 154 , 142 , 142 , 134 , 131 , 126 , 112 , 101 , 96 , 92 , 83 , 79 , 79 , 76 , 75 , 82 , 91 , 104 , 96 , 105 , 122 , 128 , 136 , 145 , 154 , 147 , 151 , 309 | 168 , 179 , 187 , 190 , 187 , 178 , 171 , 157 , 146 , 138 , 131 , 122 , 110 , 97 , 98 , 100 , 96 , 102 , 114 , 111 , 108 , 101 , 105 , 104 , 106 , 106 , 107 , 107 , 111 , 121 , 127 , 146 , 310 | 152 , 163 , 168 , 168 , 165 , 165 , 160 , 142 , 130 , 116 , 109 , 107 , 110 , 112 , 107 , 106 , 108 , 114 , 122 , 133 , 147 , 147 , 131 , 130 , 136 , 134 , 128 , 143 , 150 , 156 , 155 , 149 , 311 | 138 , 136 , 132 , 127 , 124 , 117 , 114 , 113 , 106 , 112 , 113 , 107 , 93 , 100 , 100 , 104 , 110 , 118 , 113 , 113 , 126 , 138 , 147 , 144 , 148 , 151 , 154 , 147 , 145 , 154 , 154 , 151 , 312 | 143 , 134 , 134 , 133 , 131 , 142 , 144 , 154 , 148 , 142 , 132 , 125 , 122 , 109 , 97 , 93 , 90 , 84 , 90 , 100 , 112 , 119 , 133 , 130 , 125 , 122 , 124 , 119 , 112 , 105 , 114 , 119 , 313 | 127 , 134 , 135 , 140 , 139 , 151 , 156 , 166 , 180 , 188 , 174 , 165 , 166 , 153 , 142 , 132 , 138 , 137 , 136 , 125 , 113 , 106 , 100 , 94 , 94 , 80 , 74 , 70 , 72 , 79 , 90 , 100 , 314 | 103 , 114 , 118 , 124 , 136 , 144 , 146 , 151 , 160 , 167 , 183 , 182 , 180 , 180 , 183 , 170 , 152 , 149 , 144 , 137 , 118 , 112 , 104 , 98 , 97 , 102 , 110 , 107 , 112 , 110 , 101 , 96 , 315 | 104 , 108 , 107 , 109 , 111 , 108 , 114 , 127 , 141 , 156 , 170 , 175 , 173 , 165 , 160 , 158 , 140 , 123 , 108 , 110 , 106 , 104 , 106 , 106 , 106 , 113 , 120 , 125 , 138 , 139 , 138 , 132 , 316 | 133 , 128 , 130 , 133 , 140 , 155 , 162 , 158 , 154 , 149 , 144 , 141 , 136 , 136 , 115 , 109 , 103 , 106 , 104 , 100 , 99 , 103 , 96 , 94 , 104 , 108 , 111 , 116 , 125 , 126 , 135 , 141 , 317 | 139 , 145 , 151 , 158 , 154 , 158 , 163 , 162 , 151 , 144 , 141 , 138 , 131 , 135 , 147 , 147 , 147 , 149 , 138 , 125 , 116 , 110 , 102 , 98 , 87 , 81 , 81 , 86 , 96 , 116 , 126 , 133 , 318 | 133 , 129 , 128 , 125 , 123 , 117 , 115 , 119 , 125 , 126 , 129 , 132 , 142 , 148 , 152 , 163 , 176 , 173 , 172 , 172 , 163 , 150 , 138 , 130 , 122 , 128 , 133 , 135 , 122 , 119 , 118 , 108 , 319 | 106 , 98 , 90 , 74 , 69 , 71 , 82 , 87 , 101 , 114 , 116 , 114 , 128 , 135 , 142 , 148 , 159 , 166 , 172 , 174 , 172 , 175 , 174 , 174 , 162 , 158 , 151 , 145 , 138 , 116 , 116 , 110 , 320 | 103 , 97 , 102 , 106 , 109 , 112 , 106 , 102 , 102 , 100 , 108 , 115 , 106 , 104 , 110 , 112 , 120 , 138 , 158 , 172 , 170 , 174 , 170 , 163 , 151 , 135 , 125 , 112 , 110 , 108 , 100 , 96 , 321 | 107 , 119 , 114 , 124 , 132 , 137 , 131 , 134 , 133 , 130 , 129 , 130 , 134 , 138 , 150 , 163 , 158 , 156 , 154 , 153 , 152 , 142 , 133 , 122 , 104 , 98 , 94 , 92 , 91 , 101 , 100 , 95 , 322 | 93 , 102 , 107 , 114 , 116 , 124 , 132 , 133 , 128 , 131 , 143 , 148 , 157 , 165 , 168 , 167 , 166 , 156 , 152 , 144 , 142 , 139 , 136 , 136 , 145 , 149 , 138 , 132 , 120 , 104 , 101 , 103 , 323 | 94 , 77 , 78 , 81 , 84 , 93 , 113 , 128 , 135 , 133 , 136 , 134 , 132 , 125 , 130 , 124 , 125 , 127 , 125 , 121 , 130 , 145 , 149 , 159 , 168 , 172 , 172 , 168 , 166 , 156 , 144 , 130 , 324 | 125 , 120 , 122 , 125 , 132 , 132 , 124 , 122 , 120 , 114 , 102 , 90 , 78 , 70 , 70 , 78 , 90 , 102 , 112 , 120 , 121 , 124 , 134 , 145 , 151 , 154 , 167 , 173 , 162 , 162 , 164 , 160 , 325 | 160 , 164 , 163 , 157 , 143 , 136 , 131 , 125 , 113 , 110 , 103 , 98 , 101 , 109 , 106 , 106 , 106 , 102 , 104 , 110 , 114 , 106 , 103 , 109 , 113 , 125 , 136 , 156 , 172 , 173 , 173 , 174 , 326 | 161 , 144 , 136 , 129 , 119 , 109 , 99 , 96 , 96 , 106 , 112 , 124 , 130 , 129 , 132 , 129 , 131 , 129 , 135 , 130 , 128 , 131 , 137 , 142 , 154 , 163 , 161 , 161 , 159 , 158 , 149 , 133 , 327 | 124 , 109 , 92 , 85 , 90 , 96 , 94 , 98 , 97 , 100 , 100 , 111 , 114 , 115 , 127 , 131 , 124 , 122 , 125 , 136 , 145 , 158 , 170 , 176 , 170 , 163 , 165 , 162 , 154 , 151 , 144 , 138 , 328 | 135 , 142 , 142 , 133 , 124 , 113 , 104 , 104 , 93 , 84 , 82 , 80 , 80 , 90 , 95 , 111 , 128 , 134 , 135 , 138 , 141 , 136 , 132 , 131 , 138 , 130 , 122 , 118 , 125 , 128 , 139 , 156 , 329 | 167 , 166 , 170 , 171 , 165 , 151 , 152 , 141 , 128 , 120 , 112 , 116 , 122 , 129 , 132 , 129 , 129 , 126 , 122 , 102 , 92 , 84 , 77 , 73 , 81 , 94 , 106 , 111 , 120 , 126 , 129 , 139 , 330 | 144 , 149 , 160 , 165 , 167 , 158 , 149 , 146 , 151 , 158 , 160 , 163 , 155 , 148 , 142 , 139 , 133 , 124 , 114 , 109 , 98 , 98 , 101 , 108 , 106 , 103 , 106 , 113 , 107 , 104 , 107 , 106 , 331 | 110 , 118 , 126 , 137 , 152 , 168 , 172 , 171 , 165 , 158 , 146 , 136 , 128 , 122 , 107 , 99 , 96 , 98 , 98 , 117 , 130 , 131 , 128 , 130 , 130 , 128 , 130 , 134 , 135 , 131 , 126 , 131 , 332 | 141 , 150 , 160 , 165 , 165 , 163 , 165 , 151 , 135 , 119 , 105 , 94 , 86 , 86 , 86 , 91 , 94 , 97 , 103 , 104 , 106 , 113 , 120 , 122 , 125 , 123 , 120 , 117 , 129 , 147 , 162 , 172 , 333 | 174 , 175 , 171 , 170 , 174 , 164 , 156 , 149 , 144 , 137 , 129 , 132 , 129 , 114 , 110 , 106 , 96 , 85 , 80 , 80 , 80 , 82 , 90 , 97 , 107 , 119 , 128 , 138 , 140 , 140 , 144 , 141 , 334 | 141 , 142 , 136 , 128 , 127 , 128 , 129 , 142 , 161 , 168 , 173 , 167 , 160 , 156 , 149 , 141 , 136 , 126 , 112 , 106 , 112 , 118 , 123 , 131 , 135 , 134 , 128 , 118 , 107 , 96 , 85 , 83 , 335 | 86 , 86 , 92 , 106 , 112 , 120 , 133 , 137 , 139 , 142 , 154 , 161 , 162 , 158 , 149 , 140 , 134 , 143 , 151 , 155 , 156 , 155 , 150 , 146 , 144 , 142 , 131 , 120 , 111 , 101 , 95 , 99 , 336 | 106 , 108 , 111 , 112 , 114 , 107 , 102 , 106 , 108 , 115 , 117 , 126 , 139 , 149 , 155 , 164 , 167 , 162 , 156 , 148 , 138 , 132 , 122 , 112 , 106 , 97 , 94 , 107 , 117 , 126 , 133 , 132 , 337 | 128 , 130 , 132 , 134 , 135 , 140 , 129 , 124 , 130 , 140 , 149 , 156 , 166 , 174 , 175 , 163 , 149 , 136 , 116 , 106 , 98 , 84 , 78 , 81 , 84 , 90 , 98 , 106 , 109 , 112 , 114 , 120 , 338 | 123 , 123 , 121 , 119 , 118 , 129 , 147 , 159 , 170 , 174 , 181 , 179 , 179 , 176 , 173 , 167 , 158 , 141 , 131 , 126 , 122 , 119 , 115 , 107 , 102 , 92 , 82 , 75 , 75 , 83 , 86 , 89 , 339 | 96 , 103 , 111 , 122 , 136 , 142 , 148 , 149 , 151 , 148 , 145 , 142 , 142 , 130 , 125 , 132 , 147 , 158 , 166 , 165 , 161 , 154 , 151 , 142 , 135 , 131 , 119 , 108 , 104 , 106 , 113 , 122 , 340 | 128 , 134 , 139 , 128 , 120 , 110 , 99 , 96 , 96 , 94 , 91 , 92 , 101 , 113 , 126 , 131 , 137 , 146 , 150 , 152 , 157 , 156 , 151 , 142 , 133 , 131 , 133 , 142 , 147 , 151 , 151 , 152 , 341 | 154 , 151 , 142 , 140 , 125 , 112 , 100 , 98 , 98 , 105 , 111 , 114 , 113 , 114 , 110 , 104 , 103 , 110 , 118 , 125 , 130 , 137 , 140 , 146 , 154 , 160 , 158 , 152 , 145 , 142 , 128 , 124 , 342 | 118 , 112 , 101 , 100 , 108 , 118 , 124 , 129 , 126 , 130 , 132 , 131 , 134 , 135 , 131 , 129 , 129 , 130 , 135 , 145 , 157 , 168 , 176 , 171 , 160 , 146 , 131 , 120 , 109 , 98 , 88 , 80 , 343 | 77 , 80 , 96 , 101 , 107 , 113 , 117 , 114 , 116 , 120 , 122 , 120 , 120 , 123 , 130 , 141 , 156 , 168 , 177 , 179 , 184 , 186 , 184 , 182 , 173 , 157 , 143 , 129 , 125 , 114 , 114 , 109 , 344 | 106 , 100 , 89 , 81 , 77 , 79 , 84 , 90 , 92 , 96 , 96 , 104 , 117 , 133 , 143 , 149 , 152 , 152 , 152 , 154 , 151 , 146 , 136 , 135 , 141 , 149 , 159 , 158 , 158 , 158 , 154 , 143 , 345 | 136 , 132 , 120 , 112 , 106 , 106 , 106 , 110 , 118 , 128 , 135 , 136 , 129 , 121 , 112 , 108 , 107 , 104 , 97 , 97 , 97 , 100 , 115 , 123 , 133 , 144 , 152 , 151 , 149 , 151 , 150 , 147 , 346 | 135 , 127 , 127 , 126 , 130 , 139 , 144 , 150 , 155 , 156 , 155 , 149 , 143 , 131 , 115 , 108 , 103 , 103 , 108 , 108 , 114 , 119 , 116 , 110 , 103 , 106 , 112 , 122 , 129 , 131 , 128 , 131 , 347 | 139 , 146 , 148 , 151 , 151 , 140 , 137 , 131 , 130 , 126 , 114 , 111 , 106 , 110 , 117 , 120 , 122 , 129 , 135 , 135 , 131 , 135 , 133 , 134 , 132 , 132 , 133 , 137 , 147 , 158 , 170 , 171 , 348 | 167 , 160 , 144 , 129 , 122 , 112 , 100 , 88 , 80 , 75 , 83 , 92 , 96 , 109 , 114 , 114 , 113 , 113 , 116 , 122 , 122 , 121 , 122 , 128 , 140 , 150 , 161 , 171 , 179 , 187 , 191 , 188 , 349 | 186 , 171 , 161 , 147 , 131 , 120 , 114 , 108 , 104 , 103 , 98 , 88 , 81 , 78 , 78 , 85 , 90 , 92 , 92 , 90 , 104 , 115 , 128 , 139 , 148 , 155 , 156 , 157 , 158 , 156 , 153 , 149 , 350 | 146 , 146 , 149 , 154 , 152 , 154 , 154 , 149 , 142 , 133 , 124 , 116 , 112 , 109 , 108 , 108 , 110 , 116 , 127 , 131 , 129 , 129 , 123 , 116 , 112 , 111 , 110 , 110 , 102 , 100 , 105 , 114 , 351 | 121 , 138 , 148 , 149 , 150 , 149 , 146 , 144 , 140 , 132 , 125 , 122 , 122 , 124 , 132 , 140 , 148 , 158 , 157 , 160 , 154 , 143 , 133 , 126 , 117 , 111 , 106 , 107 , 110 , 117 , 119 , 116 , 352 | 109 , 108 , 109 , 116 , 122 , 126 , 129 , 124 , 127 , 128 , 135 , 140 , 143 , 144 , 140 , 139 , 136 , 134 , 131 , 124 , 118 , 115 , 113 , 112 , 114 , 122 , 130 , 134 , 135 , 136 , 136 , 132 , 353 | 134 , 131 , 134 , 137 , 141 , 145 , 156 , 162 , 165 , 161 , 152 , 142 , 130 , 120 , 112 , 104 , 90 , 80 , 81 , 82 , 89 , 100 , 112 , 113 , 112 , 112 , 115 , 118 , 122 , 119 , 121 , 127 , 354 | 128 , 137 , 146 , 154 , 170 , 183 , 190 , 194 , 192 , 186 , 174 , 162 , 149 , 134 , 123 , 110 , 104 , 103 , 99 , 96 , 90 , 84 , 81 , 84 , 89 , 88 , 88 , 90 , 93 , 102 , 110 , 122 , 355 | 136 , 146 , 152 , 159 , 157 , 161 , 164 , 161 , 157 , 154 , 154 , 149 , 146 , 146 , 150 , 148 , 144 , 138 , 129 , 119 , 113 , 109 , 109 , 110 , 109 , 112 , 114 , 118 , 124 , 128 , 125 , 124 , 356 | 119 , 116 , 118 , 118 , 115 , 106 , 106 , 110 , 116 , 126 , 138 , 146 , 150 , 148 , 145 , 144 , 142 , 130 , 126 , 125 , 116 , 116 , 118 , 124 , 135 , 146 , 157 , 161 , 158 , 151 , 146 , 140 , 357 | 132 , 124 , 117 , 110 , 109 , 114 , 115 , 115 , 115 , 116 , 112 , 114 , 121 , 123 , 125 , 122 , 122 , 123 , 122 , 126 , 131 , 134 , 135 , 138 , 138 , 136 , 139 , 136 , 132 , 125 , 118 , 116 , 358 | 112 , 115 , 122 , 130 , 135 , 140 , 141 , 139 , 132 , 131 , 137 , 140 , 141 , 144 , 147 , 152 , 154 , 156 , 154 , 147 , 138 , 126 , 122 , 112 , 106 , 94 , 88 , 84 , 88 , 94 , 102 , 105 , 359 | 110 , 114 , 112 , 118 , 119 , 115 , 120 , 126 , 130 , 130 , 133 , 143 , 155 , 170 , 181 , 192 , 198 , 189 , 184 , 176 , 165 , 152 , 140 , 123 , 110 , 102 , 99 , 94 , 92 , 91 , 86 , 86 , 360 | 84 , 83 , 88 , 87 , 91 , 96 , 98 , 108 , 120 , 134 , 142 , 148 , 157 , 161 , 166 , 167 , 167 , 167 , 161 , 155 , 148 , 144 , 142 , 144 , 144 , 141 , 135 , 128 , 117 , 109 , 109 , 114 , 361 | 115 , 111 , 109 , 112 , 114 , 118 , 122 , 124 , 120 , 119 , 123 , 124 , 120 , 117 , 117 , 115 , 114 , 123 , 130 , 138 , 142 , 147 , 144 , 146 , 142 , 133 , 126 , 122 , 120 , 115 , 112 , 112 , 362 | 122 , 135 , 142 , 155 , 161 , 157 , 153 , 148 , 144 , 136 , 132 , 126 , 118 , 116 , 112 , 113 , 117 , 116 , 116 , 120 , 120 , 120 , 121 , 122 , 122 , 120 , 120 , 116 , 119 , 122 , 126 , 128 , 363 | 131 , 136 , 142 , 142 , 138 , 136 , 132 , 124 , 120 , 116 , 115 , 118 , 129 , 137 , 141 , 141 , 138 , 133 , 132 , 138 , 145 , 145 , 146 , 146 , 147 , 147 , 146 , 147 , 141 , 131 , 126 , 120 , 364 | 113 , 102 , 100 , 96 , 94 , 96 , 96 , 100 , 104 , 106 , 112 , 115 , 117 , 116 , 118 , 122 , 125 , 128 , 130 , 132 , 139 , 154 , 166 , 180 , 191 , 193 , 188 , 182 , 176 , 167 , 156 , 140 , 365 | 127 , 117 , 101 , 94 , 95 , 93 , 90 , 90 , 88 , 84 , 81 , 85 , 88 , 90 , 94 , 100 , 109 , 120 , 126 , 138 , 146 , 155 , 164 , 171 , 170 , 172 , 173 , 166 , 158 , 152 , 146 , 141 , 366 | 138 , 138 , 139 , 133 , 123 , 115 , 111 , 112 , 114 , 114 , 112 , 109 , 110 , 113 , 112 , 115 , 120 , 121 , 124 , 124 , 123 , 122 , 122 , 122 , 125 , 128 , 128 , 136 , 139 , 139 , 142 , 146 , 367 | 147 , 135 , 128 , 125 , 118 , 115 , 111 , 110 , 113 , 121 , 129 , 139 , 150 , 155 , 156 , 152 , 145 , 146 , 146 , 138 , 134 , 129 , 120 , 116 , 116 , 119 , 118 , 122 , 126 , 122 , 120 , 117 , 368 | 118 , 119 , 117 , 113 , 115 , 117 , 112 , 115 , 122 , 128 , 138 , 142 , 141 , 138 , 138 , 134 , 129 , 122 , 117 , 119 , 123 , 128 , 137 , 142 , 141 , 135 , 136 , 139 , 142 , 147 , 149 , 147 , 369 | 145 , 145 , 144 , 141 , 136 , 134 , 131 , 123 , 114 , 110 , 106 , 103 , 106 , 104 , 99 , 99 , 102 , 102 , 102 , 110 , 118 , 118 , 118 , 118 , 122 , 125 , 125 , 129 , 135 , 143 , 152 , 166 , 370 | 180 , 185 , 189 , 188 , 179 , 173 , 167 , 156 , 144 , 130 , 115 , 104 , 99 , 97 , 93 , 92 , 91 , 88 , 88 , 82 , 81 , 87 , 92 , 95 , 102 , 112 , 115 , 120 , 130 , 143 , 156 , 165 , 371 | 170 , 176 , 173 , 172 , 170 , 163 , 151 , 144 , 141 , 137 , 132 , 134 , 128 , 120 , 116 , 115 , 114 , 113 , 114 , 114 , 112 , 110 , 109 , 112 , 112 , 115 , 123 , 124 , 122 , 124 , 123 , 127 , 372 | 129 , 135 , 138 , 136 , 138 , 137 , 136 , 139 , 141 , 141 , 134 , 123 , 118 , 114 , 109 , 108 , 113 , 116 , 118 , 125 , 138 , 144 , 150 , 149 , 149 , 149 , 147 , 148 , 146 , 142 , 133 , 125 , 373 | 125 , 120 , 118 , 124 , 125 , 124 , 124 , 119 , 114 , 113 , 114 , 112 , 111 , 112 , 109 , 104 , 106 , 114 , 129 , 134 , 136 , 139 , 141 , 138 , 135 , 134 , 129 , 123 , 127 , 128 , 131 , 137 , 374 | 140 , 140 , 140 , 139 , 143 , 147 , 147 , 149 , 150 , 146 , 142 , 139 , 134 , 129 , 128 , 123 , 116 , 108 , 107 , 108 , 109 , 109 , 106 , 108 , 106 , 99 , 99 , 103 , 109 , 118 , 120 , 120 , 375 | 118 , 122 , 124 , 126 , 131 , 139 , 148 , 154 , 162 , 176 , 182 , 181 , 179 , 177 , 171 , 163 , 156 , 148 , 129 , 119 , 114 , 106 , 97 , 93 , 93 , 93 , 90 , 85 , 80 , 81 , 84 , 90 , 376 | 97 , 106 , 110 , 112 , 115 , 123 , 142 , 156 , 164 , 169 , 175 , 176 , 172 , 173 , 163 , 157 , 149 , 141 , 136 , 130 , 125 , 124 , 124 , 120 , 114 , 117 , 117 , 115 , 114 , 112 , 112 , 109 , 377 | 108 , 110 , 113 , 117 , 122 , 120 , 121 , 123 , 132 , 138 , 138 , 144 , 145 , 140 , 134 , 132 , 135 , 136 , 138 , 130 , 122 , 112 , 109 , 109 , 112 , 112 , 117 , 120 , 125 , 132 , 140 , 142 , 378 | 144 , 147 , 150 , 149 , 150 , 154 , 145 , 139 , 136 , 133 , 130 , 123 , 123 , 127 , 128 , 122 , 116 , 114 , 111 , 109 , 110 , 110 , 106 , 101 , 100 , 102 , 112 , 123 , 130 , 137 , 138 , 139 , 379 | 139 , 139 , 135 , 136 , 136 , 132 , 134 , 137 , 135 , 135 , 142 , 144 , 143 , 144 , 148 , 150 , 148 , 148 , 147 , 142 , 134 , 128 , 124 , 120 , 112 , 112 , 107 , 104 , 108 , 111 , 112 , 114 , 380 | 115 , 111 , 103 , 99 , 104 , 111 , 119 , 121 , 122 , 122 , 118 , 123 , 129 , 135 , 142 , 149 , 156 , 161 , 168 , 173 , 172 , 175 , 171 , 166 , 162 , 151 , 142 , 134 , 127 , 118 , 112 , 101 , 381 | 95 , 94 , 95 , 90 , 82 , 84 , 84 , 87 , 92 , 102 , 109 , 108 , 108 , 115 , 126 , 140 , 152 , 165 , 169 , 170 , 174 , 173 , 169 , 165 , 162 , 152 , 142 , 134 , 128 , 122 , 124 , 124 , 382 | 119 , 118 , 116 , 117 , 112 , 112 , 111 , 114 , 110 , 106 , 110 , 113 , 113 , 115 , 118 , 123 , 128 , 134 , 141 , 146 , 151 , 148 , 144 , 135 , 132 , 134 , 138 , 132 , 124 , 119 , 112 , 108 , 383 | 108 , 112 , 114 , 118 , 122 , 125 , 129 , 130 , 138 , 143 , 144 , 147 , 154 , 151 , 148 , 146 , 148 , 144 , 142 , 136 , 130 , 128 , 129 , 127 , 120 , 116 , 113 , 111 , 107 , 106 , 106 , 105 , 384 | 98 , 96 , 103 , 108 , 118 , 128 , 134 , 133 , 134 , 137 , 138 , 138 , 141 , 141 , 142 , 138 , 135 , 135 , 139 , 145 , 145 , 149 , 150 , 151 , 150 , 147 , 144 , 147 , 142 , 132 , 123 , 114 , 385 | 112 , 106 , 104 , 104 , 104 , 108 , 110 , 117 , 120 , 116 , 112 , 108 , 102 , 106 , 114 , 121 , 120 , 120 , 121 , 122 , 125 , 132 , 138 , 148 , 152 , 158 , 162 , 160 , 164 , 170 , 169 , 165 , 386 | 160 , 156 , 146 , 140 , 136 , 132 , 126 , 117 , 106 , 100 , 94 , 91 , 88 , 84 , 83 , 85 , 90 , 94 , 100 , 107 , 108 , 109 , 117 , 126 , 138 , 150 , 161 , 166 , 167 , 167 , 168 , 170 , 387 | 166 , 160 , 154 , 146 , 134 , 126 , 126 , 124 , 122 , 123 , 123 , 118 , 116 , 111 , 112 , 112 , 115 , 112 , 110 , 107 , 108 , 110 , 114 , 117 , 124 , 131 , 136 , 146 , 154 , 154 , 150 , 145 , 388 | 140 , 134 , 134 , 131 , 127 , 122 , 115 , 110 , 110 , 107 , 112 , 117 , 120 , 123 , 124 , 125 , 125 , 133 , 139 , 144 , 147 , 150 , 148 , 149 , 149 , 152 , 154 , 149 , 142 , 138 , 133 , 126 , 389 | 122 , 120 , 117 , 112 , 109 , 103 , 103 , 102 , 100 , 98 , 96 , 100 , 106 , 116 , 122 , 127 , 130 , 130 , 132 , 139 , 142 , 144 , 147 , 148 , 144 , 138 , 140 , 144 , 145 , 148 , 154 , 156 , 390 | 152 , 145 , 144 , 146 , 146 , 138 , 128 , 118 , 106 , 103 , 100 , 98 , 100 , 104 , 106 , 112 , 118 , 120 , 119 , 115 , 112 , 110 , 113 , 115 , 118 , 122 , 120 , 122 , 126 , 128 , 132 , 140 , 391 | 150 , 156 , 156 , 157 , 158 , 160 , 162 , 160 , 159 , 154 , 147 , 144 , 139 , 135 , 136 , 133 , 122 , 113 , 105 , 96 , 90 , 87 , 87 , 90 , 90 , 91 , 96 , 101 , 105 , 110 , 115 , 118 , 392 | 126 , 140 , 149 , 155 , 159 , 161 , 163 , 166 , 166 , 160 , 158 , 154 , 146 , 138 , 128 , 126 , 125 , 123 , 123 , 124 , 121 , 114 , 109 , 112 , 117 , 116 , 116 , 112 , 107 , 106 , 107 , 112 , 393 | 117 , 122 , 130 , 140 , 148 , 149 , 152 , 154 , 148 , 144 , 138 , 131 , 126 , 124 , 118 , 113 , 110 , 111 , 109 , 111 , 118 , 122 , 124 , 122 , 122 , 127 , 130 , 135 , 143 , 144 , 145 , 147 , 394 | 150 , 152 , 156 , 160 , 158 , 153 , 144 , 133 , 128 , 123 , 120 , 117 , 112 , 105 , 101 , 100 , 98 , 97 , 99 , 99 , 100 , 107 , 113 , 119 , 122 , 123 , 128 , 135 , 138 , 141 , 146 , 150 , 395 | 150 , 151 , 146 , 145 , 145 , 150 , 153 , 154 , 154 , 149 , 144 , 145 , 145 , 142 , 135 , 125 , 114 , 106 , 97 , 96 , 98 , 98 , 100 , 108 , 114 , 116 , 117 , 122 , 120 , 120 , 119 , 119 , 396 | 118 , 120 , 121 , 122 , 125 , 128 , 131 , 136 , 143 , 150 , 155 , 155 , 155 , 157 , 155 , 153 , 152 , 151 , 146 , 141 , 139 , 138 , 138 , 138 , 135 , 131 , 120 , 107 , 98 , 93 , 90 , 90 , 397 | 93 , 92 , 94 , 97 , 102 , 107 , 112 , 117 , 124 , 131 , 138 , 144 , 150 , 152 , 157 , 162 , 160 , 157 , 158 , 156 , 151 , 147 , 141 , 134 , 128 , 126 , 126 , 126 , 125 , 118 , 115 , 113 , 398 | 115 , 120 , 120 , 117 , 113 , 110 , 106 , 106 , 111 , 116 , 122 , 131 , 139 , 142 , 148 , 151 , 154 , 151 , 144 , 138 , 131 , 126 , 119 , 114 , 114 , 112 , 110 , 112 , 113 , 118 , 120 , 122 , 399 | 123 , 124 , 126 , 129 , 133 , 138 , 141 , 144 , 145 , 147 , 155 , 160 , 163 , 164 , 158 , 146 , 136 , 132 , 125 , 118 , 113 , 109 , 103 , 99 , 96 , 96 , 96 , 97 , 100 , 106 , 106 , 111 , 400 | 114 , 115 , 119 , 127 , 133 , 135 , 140 , 146 , 151 , 154 , 154 , 151 , 152 , 153 , 152 , 155 , 154 , 151 , 150 , 147 , 144 , 142 , 138 , 133 , 123 , 112 , 102 , 96 , 94 , 93 , 96 , 100 , 401 | 106 , 110 , 113 , 115 , 119 , 124 , 126 , 123 , 123 , 124 , 122 , 120 , 123 , 128 , 132 , 134 , 139 , 143 , 147 , 153 , 156 , 156 , 154 , 150 , 148 , 145 , 142 , 138 , 137 , 133 , 135 , 138 , 402 | 139 , 139 , 135 , 124 , 112 , 104 , 98 , 94 , 93 , 92 , 96 , 97 , 98 , 100 , 107 , 114 , 121 , 128 , 132 , 136 , 141 , 144 , 148 , 152 , 154 , 154 , 154 , 151 , 149 , 152 , 147 , 142 , 403 | 139 , 135 , 130 , 128 , 126 , 122 , 118 , 117 , 116 , 117 , 118 , 120 , 121 , 116 , 109 , 106 , 108 , 110 , 116 , 122 , 128 , 134 , 141 , 145 , 148 , 151 , 151 , 146 , 139 , 133 , 126 , 117 , 404 | 113 , 112 , 113 , 112 , 112 , 114 , 115 , 118 , 122 , 126 , 126 , 125 , 127 , 132 , 134 , 136 , 139 , 142 , 149 , 156 , 161 , 165 , 166 , 160 , 152 , 144 , 134 , 125 , 119 , 111 , 107 , 104 , 405 | 98 , 94 , 93 , 96 , 99 , 103 , 106 , 108 , 107 , 109 , 112 , 119 , 123 , 128 , 135 , 140 , 143 , 150 , 154 , 157 , 160 , 160 , 158 , 156 , 155 , 154 , 153 , 150 , 146 , 144 , 140 , 134 , 406 | 131 , 123 , 110 , 102 , 96 , 93 , 92 , 95 , 98 , 102 , 106 , 110 , 114 , 120 , 125 , 128 , 130 , 129 , 128 , 123 , 122 , 126 , 132 , 136 , 138 , 140 , 143 , 148 , 151 , 156 , 156 , 151 , 407 | 146 , 142 , 140 , 134 , 131 , 130 , 132 , 135 , 135 , 140 , 140 , 133 , 126 , 119 , 111 , 102 , 98 , 96 , 96 , 98 , 100 , 99 , 103 , 110 , 118 , 125 , 129 , 133 , 138 , 138 , 141 , 144 , 408 | 146 , 146 , 148 , 147 , 145 , 144 , 146 , 146 , 146 , 144 , 140 , 135 , 129 , 124 , 122 , 122 , 119 , 119 , 119 , 120 , 122 , 122 , 115 , 112 , 111 , 111 , 112 , 115 , 118 , 126 , 134 , 138 , 409 | 141 , 146 , 148 , 147 , 145 , 142 , 134 , 124 , 118 , 113 , 113 , 116 , 116 , 114 , 113 , 114 , 118 , 124 , 126 , 127 , 128 , 128 , 131 , 131 , 131 , 136 , 144 , 151 , 154 , 160 , 166 , 165 , 410 | 161 , 156 , 147 , 137 , 126 , 116 , 110 , 106 , 101 , 96 , 94 , 94 , 97 , 102 , 106 , 106 , 108 , 107 , 108 , 111 , 114 , 120 , 128 , 132 , 135 , 140 , 147 , 156 , 162 , 165 , 163 , 162 , 411 | 160 , 155 , 154 , 153 , 151 , 147 , 142 , 138 , 133 , 126 , 119 , 110 , 103 , 96 , 95 , 93 , 91 , 94 , 101 , 104 , 108 , 114 , 119 , 125 , 130 , 134 , 133 , 129 , 128 , 128 , 130 , 134 , 412 | 137 , 140 , 142 , 142 , 148 , 152 , 155 , 152 , 149 , 144 , 139 , 135 , 128 , 126 , 128 , 132 , 133 , 136 , 138 , 138 , 134 , 129 , 123 , 116 , 109 , 102 , 98 , 99 , 98 , 99 , 104 , 107 , 413 | 112 , 118 , 125 , 132 , 135 , 137 , 139 , 139 , 139 , 139 , 141 , 142 , 139 , 140 , 140 , 142 , 147 , 150 , 149 , 144 , 139 , 132 , 126 , 124 , 123 , 123 , 122 , 122 , 123 , 122 , 118 , 117 , 414 | 116 , 114 , 113 , 113 , 113 , 116 , 123 , 130 , 134 , 139 , 141 , 142 , 145 , 144 , 141 , 135 , 127 , 119 , 117 , 117 , 116 , 116 , 116 , 114 , 115 , 119 , 124 , 127 , 130 , 130 , 131 , 129 , 415 | 127 , 130 , 136 , 143 , 148 , 154 , 159 , 161 , 163 , 161 , 157 , 149 , 141 , 128 , 116 , 109 , 105 , 100 , 96 , 96 , 97 , 98 , 101 , 106 , 108 , 108 , 108 , 109 , 110 , 112 , 119 , 126 , 416 | 128 , 132 , 138 , 147 , 156 , 163 , 168 , 169 , 168 , 164 , 159 , 155 , 152 , 150 , 146 , 142 , 136 , 131 , 123 , 115 , 110 , 106 , 101 , 96 , 91 , 90 , 93 , 96 , 100 , 106 , 112 , 117 , 417 | 125 , 130 , 132 , 136 , 136 , 134 , 133 , 133 , 136 , 139 , 141 , 143 , 144 , 146 , 149 , 151 , 150 , 145 , 143 , 138 , 128 , 122 , 123 , 125 , 128 , 130 , 133 , 134 , 134 , 133 , 129 , 126 , 418 | 122 , 115 , 108 , 101 , 99 , 101 , 104 , 108 , 111 , 114 , 120 , 126 , 133 , 136 , 138 , 139 , 137 , 134 , 134 , 135 , 136 , 133 , 133 , 135 , 141 , 146 , 148 , 149 , 148 , 143 , 135 , 129 , 419 | 124 , 124 , 126 , 126 , 124 , 122 , 122 , 120 , 120 , 119 , 118 , 118 , 114 , 113 , 117 , 121 , 126 , 132 , 135 , 135 , 139 , 140 , 140 , 138 , 134 , 130 , 125 , 121 , 117 , 117 , 118 , 116 , 420 | 116 , 116 , 118 , 125 , 129 , 129 , 130 , 131 , 128 , 128 , 130 , 135 , 140 , 147 , 152 , 157 , 160 , 160 , 159 , 157 , 151 , 142 , 129 , 118 , 108 , 101 , 100 , 100 , 100 , 98 , 98 , 102 , 421 | 106 , 107 , 109 , 110 , 110 , 112 , 112 , 116 , 120 , 126 , 130 , 136 , 147 , 155 , 162 , 167 , 172 , 172 , 166 , 162 , 156 , 151 , 149 , 146 , 141 , 134 , 126 , 119 , 116 , 110 , 107 , 103 , 422 | 96 , 92 , 90 , 91 , 93 , 100 , 106 , 111 , 117 , 122 , 128 , 134 , 138 , 140 , 141 , 139 , 136 , 138 , 142 , 142 , 144 , 145 , 145 , 148 , 149 , 146 , 145 , 140 , 132 , 126 , 122 , 122 , 423 | 123 , 126 , 128 , 130 , 133 , 130 , 129 , 130 , 131 , 126 , 119 , 112 , 106 , 102 , 104 , 110 , 113 , 114 , 116 , 123 , 128 , 132 , 137 , 139 , 138 , 135 , 132 , 130 , 128 , 127 , 126 , 128 , 424 | 133 , 139 , 142 , 146 , 149 , 149 , 144 , 138 , 131 , 129 , 128 , 127 , 127 , 127 , 123 , 122 , 122 , 123 , 122 , 122 , 119 , 117 , 115 , 115 , 120 , 124 , 128 , 129 , 132 , 133 , 133 , 134 , 425 | 135 , 134 , 134 , 128 , 122 , 119 , 119 , 117 , 116 , 115 , 118 , 123 , 125 , 127 , 130 , 132 , 131 , 130 , 131 , 130 , 134 , 140 , 145 , 150 , 156 , 158 , 157 , 157 , 156 , 151 , 143 , 131 , 426 | 118 , 109 , 103 , 102 , 104 , 101 , 99 , 101 , 104 , 106 , 106 , 110 , 112 , 112 , 112 , 112 , 114 , 117 , 122 , 128 , 138 , 146 , 153 , 161 , 168 , 173 , 174 , 171 , 164 , 158 , 153 , 148 , 427 | 145 , 139 , 132 , 124 , 119 , 116 , 112 , 108 , 104 , 100 , 94 , 89 , 88 , 95 , 100 , 103 , 110 , 115 , 119 , 126 , 133 , 139 , 143 , 145 , 142 , 142 , 141 , 142 , 145 , 144 , 145 , 146 , 428 | 147 , 145 , 144 , 141 , 136 , 132 , 127 , 122 , 119 , 120 , 124 , 126 , 128 , 126 , 127 , 130 , 130 , 130 , 128 , 123 , 115 , 110 , 107 , 109 , 113 , 116 , 117 , 119 , 125 , 129 , 132 , 135 , 429 | 138 , 138 , 135 , 129 , 126 , 123 , 121 , 122 , 127 , 130 , 133 , 139 , 144 , 147 , 147 , 145 , 142 , 137 , 132 , 130 , 128 , 128 , 128 , 126 , 124 , 124 , 125 , 124 , 123 , 122 , 121 , 118 , 430 | 115 , 118 , 122 , 123 , 126 , 126 , 126 , 127 , 129 , 132 , 135 , 133 , 131 , 128 , 124 , 119 , 116 , 118 , 119 , 122 , 124 , 125 , 127 , 130 , 131 , 133 , 133 , 133 , 132 , 134 , 138 , 143 , 431 | 150 , 152 , 152 , 154 , 154 , 152 , 148 , 142 , 132 , 120 , 111 , 106 , 104 , 103 , 103 , 103 , 102 , 102 , 104 , 107 , 110 , 114 , 115 , 112 , 112 , 113 , 115 , 119 , 127 , 136 , 143 , 150 , 432 | 158 , 166 , 172 , 173 , 172 , 168 , 160 , 153 , 148 , 143 , 138 , 131 , 125 , 120 , 116 , 112 , 110 , 106 , 101 , 94 , 90 , 91 , 94 , 98 , 102 , 106 , 112 , 117 , 122 , 130 , 139 , 145 , 433 | 147 , 147 , 147 , 145 , 144 , 144 , 146 , 146 , 146 , 145 , 144 , 140 , 138 , 136 , 133 , 127 , 123 , 122 , 120 , 120 , 123 , 124 , 125 , 127 , 128 , 129 , 128 , 128 , 125 , 120 , 114 , 112 , 434 | 114 , 115 , 117 , 120 , 124 , 127 , 129 , 133 , 135 , 138 , 138 , 133 , 128 , 122 , 118 , 117 , 119 , 122 , 128 , 132 , 136 , 140 , 144 , 146 , 146 , 145 , 141 , 135 , 131 , 131 , 130 , 128 , 435 | 128 , 128 , 128 , 125 , 124 , 127 , 125 , 122 , 118 , 117 , 118 , 119 , 120 , 120 , 120 , 122 , 124 , 125 , 128 , 133 , 135 , 134 , 131 , 125 , 120 , 118 , 120 , 122 , 123 , 124 , 127 , 128 , 436 | 129 , 131 , 136 , 136 , 135 , 134 , 136 , 139 , 144 , 146 , 148 , 150 , 151 , 150 , 147 , 144 , 138 , 130 , 121 , 112 , 109 , 107 , 106 , 105 , 104 , 103 , 104 , 106 , 109 , 113 , 115 , 115 , 437 | 115 , 114 , 112 , 115 , 121 , 127 , 134 , 142 , 150 , 157 , 163 , 168 , 172 , 173 , 170 , 162 , 153 , 146 , 142 , 137 , 129 , 125 , 122 , 117 , 112 , 110 , 106 , 100 , 95 , 94 , 94 , 95 , 438 | 96 , 100 , 104 , 109 , 115 , 123 , 130 , 138 , 144 , 149 , 152 , 150 , 147 , 145 , 145 , 147 , 147 , 145 , 142 , 141 , 138 , 135 , 133 , 131 , 129 , 124 , 122 , 120 , 119 , 120 , 121 , 125 , 439 | 126 , 125 , 126 , 127 , 126 , 124 , 123 , 120 , 118 , 117 , 118 , 122 , 123 , 126 , 128 , 130 , 132 , 136 , 137 , 134 , 132 , 128 , 121 , 116 , 115 , 117 , 121 , 125 , 130 , 132 , 136 , 140 , 440 | 144 , 148 , 148 , 144 , 139 , 135 , 133 , 133 , 132 , 132 , 131 , 130 , 128 , 128 , 128 , 126 , 122 , 120 , 120 , 119 , 116 , 115 , 116 , 116 , 116 , 118 , 122 , 127 , 130 , 134 , 136 , 132 , 441 | 126 , 123 , 122 , 124 , 124 , 126 , 127 , 128 , 129 , 131 , 134 , 137 , 138 , 138 , 138 , 138 , 141 , 142 , 143 , 147 , 149 , 147 , 144 , 142 , 138 , 133 , 128 , 122 , 117 , 112 , 109 , 107 , 442 | 106 , 104 , 104 , 106 , 108 , 110 , 113 , 115 , 116 , 116 , 115 , 115 , 116 , 120 , 126 , 133 , 140 , 148 , 154 , 158 , 163 , 170 , 172 , 167 , 160 , 154 , 147 , 140 , 135 , 130 , 128 , 123 , 443 | 119 , 114 , 110 , 105 , 101 , 98 , 96 , 96 , 96 , 96 , 97 , 102 , 107 , 113 , 122 , 128 , 135 , 142 , 150 , 154 , 151 , 149 , 148 , 149 , 146 , 145 , 144 , 142 , 138 , 134 , 133 , 132 , 444 | 131 , 130 , 126 , 122 , 119 , 118 , 117 , 120 , 123 , 124 , 124 , 124 , 124 , 124 , 124 , 124 , 124 , 123 , 122 , 123 , 125 , 126 , 126 , 130 , 133 , 134 , 134 , 134 , 134 , 130 , 124 , 119 , 445 | 115 , 114 , 114 , 118 , 122 , 124 , 128 , 132 , 136 , 141 , 147 , 147 , 144 , 140 , 138 , 136 , 134 , 134 , 135 , 134 , 133 , 133 , 131 , 128 , 126 , 126 , 123 , 122 , 118 , 115 , 112 , 111 , 446 | 110 , 112 , 114 , 119 , 123 , 126 , 130 , 132 , 131 , 128 , 125 , 125 , 125 , 124 , 125 , 128 , 129 , 129 , 132 , 134 , 138 , 139 , 140 , 141 , 140 , 140 , 141 , 144 , 144 , 144 , 144 , 142 , 447 | 137 , 132 , 128 , 125 , 122 , 120 , 116 , 112 , 108 , 106 , 105 , 106 , 109 , 112 , 112 , 112 , 115 , 118 , 116 , 117 , 118 , 118 , 120 , 127 , 133 , 139 , 144 , 151 , 156 , 162 , 166 , 168 , 448 | 165 , 160 , 154 , 147 , 140 , 135 , 133 , 130 , 125 , 121 , 116 , 110 , 106 , 103 , 101 , 101 , 99 , 97 , 97 , 98 , 101 , 107 , 113 , 120 , 127 , 135 , 142 , 148 , 152 , 154 , 152 , 151 , 449 | 149 , 147 , 145 , 144 , 141 , 138 , 133 , 133 , 134 , 132 , 128 , 126 , 124 , 120 , 118 , 119 , 122 , 121 , 122 , 123 , 123 , 122 , 123 , 124 , 126 , 128 , 128 , 128 , 127 , 126 , 128 , 129 , 450 | 132 , 134 , 135 , 133 , 132 , 131 , 126 , 122 , 119 , 117 , 115 , 115 , 117 , 119 , 123 , 126 , 130 , 135 , 140 , 143 , 145 , 145 , 142 , 141 , 140 , 138 , 138 , 138 , 139 , 138 , 135 , 132 , 451 | 130 , 128 , 126 , 125 , 123 , 119 , 114 , 112 , 107 , 106 , 111 , 114 , 117 , 120 , 124 , 128 , 129 , 130 , 130 , 130 , 128 , 126 , 126 , 126 , 129 , 131 , 132 , 133 , 138 , 140 , 141 , 141 , 452 | 142 , 142 , 141 , 142 , 143 , 142 , 142 , 140 , 138 , 132 , 126 , 124 , 124 , 123 , 121 , 118 , 115 , 110 , 107 , 108 , 110 , 112 , 113 , 112 , 113 , 115 , 116 , 117 , 117 , 119 , 120 , 124 , 453 | 126 , 130 , 138 , 143 , 148 , 154 , 159 , 160 , 162 , 162 , 158 , 152 , 146 , 142 , 138 , 133 , 130 , 128 , 122 , 116 , 111 , 107 , 104 , 103 , 103 , 100 , 98 , 98 , 98 , 100 , 106 , 113 , 454 | 119 , 126 , 131 , 138 , 145 , 149 , 152 , 154 , 151 , 150 , 146 , 144 , 141 , 138 , 136 , 135 , 134 , 133 , 131 , 128 , 126 , 123 , 122 , 120 , 120 , 119 , 119 , 120 , 121 , 122 , 118 , 118 , 455 | 122 , 126 , 128 , 129 , 130 , 130 , 128 , 129 , 132 , 134 , 135 , 135 , 133 , 131 , 127 , 124 , 122 , 119 , 117 , 116 , 115 , 114 , 116 , 120 , 124 , 129 , 133 , 136 , 138 , 142 , 144 , 144 , 456 | 142 , 142 , 142 , 141 , 140 , 140 , 140 , 138 , 134 , 132 , 129 , 127 , 126 , 123 , 120 , 114 , 109 , 106 , 107 , 109 , 112 , 116 , 117 , 119 , 123 , 126 , 129 , 130 , 131 , 130 , 128 , 128 , 457 | 129 , 130 , 131 , 134 , 138 , 139 , 140 , 142 , 143 , 143 , 144 , 144 , 144 , 142 , 141 , 140 , 138 , 133 , 128 , 124 , 120 , 122 , 122 , 121 , 119 , 116 , 112 , 110 , 111 , 112 , 113 , 113 , 458 | 114 , 117 , 116 , 116 , 118 , 120 , 122 , 124 , 125 , 127 , 131 , 135 , 141 , 147 , 151 , 155 , 157 , 158 , 156 , 154 , 151 , 147 , 144 , 140 , 136 , 132 , 128 , 123 , 118 , 113 , 109 , 106 , 459 | 104 , 103 , 103 , 102 , 99 , 98 , 102 , 107 , 113 , 119 , 125 , 130 , 136 , 142 , 147 , 150 , 153 , 154 , 150 , 146 , 142 , 139 , 138 , 136 , 137 , 136 , 132 , 130 , 128 , 126 , 125 , 125 , 460 | 124 , 122 , 119 , 119 , 120 , 120 , 118 , 117 , 118 , 121 , 125 , 128 , 131 , 132 , 132 , 132 , 132 , 134 , 136 , 136 , 135 , 132 , 129 , 126 , 123 , 122 , 121 , 119 , 116 , 115 , 114 , 114 , 461 | 118 , 124 , 128 , 129 , 132 , 136 , 139 , 140 , 143 , 145 , 145 , 145 , 144 , 143 , 142 , 142 , 140 , 136 , 132 , 130 , 128 , 125 , 122 , 118 , 113 , 108 , 106 , 107 , 108 , 111 , 113 , 114 , 462 | 116 , 120 , 124 , 127 , 129 , 130 , 131 , 130 , 129 , 129 , 130 , 133 , 138 , 140 , 141 , 141 , 142 , 144 , 144 , 145 , 146 , 145 , 142 , 139 , 136 , 134 , 128 , 124 , 120 , 119 , 118 , 118 , 463 | 119 , 118 , 116 , 115 , 114 , 113 , 113 , 114 , 116 , 116 , 116 , 117 , 118 , 119 , 122 , 124 , 125 , 127 , 129 , 131 , 134 , 140 , 146 , 150 , 150 , 152 , 151 , 150 , 149 , 148 , 148 , 145 , 464 | 141 , 136 , 132 , 128 , 124 , 120 , 115 , 110 , 107 , 106 , 106 , 104 , 103 , 101 , 102 , 105 , 108 , 113 , 119 , 125 , 129 , 134 , 139 , 144 , 149 , 150 , 151 , 149 , 145 , 141 , 138 , 138 , 465 | 138 , 138 , 136 , 133 , 129 , 128 , 127 , 127 , 126 , 125 , 124 , 121 , 119 , 119 , 119 , 117 , 117 , 118 , 120 , 122 , 127 , 131 , 133 , 133 , 135 , 136 , 136 , 136 , 136 , 134 , 131 , 128 , 466 | 125 , 123 , 122 , 121 , 119 , 116 , 115 , 114 , 114 , 117 , 122 , 125 , 128 , 130 , 132 , 135 , 138 , 141 , 146 , 147 , 147 , 145 , 146 , 145 , 144 , 141 , 139 , 136 , 131 , 128 , 125 , 122 , 467 | 116 , 112 , 110 , 108 , 106 , 108 , 109 , 110 , 112 , 115 , 117 , 120 , 124 , 127 , 129 , 131 , 131 , 130 , 130 , 132 , 136 , 139 , 141 , 143 , 144 , 143 , 144 , 146 , 147 , 148 , 146 , 144 , 468 | 138 , 134 , 130 , 126 , 122 , 119 , 117 , 116 , 115 , 116 , 117 , 117 , 116 , 116 , 115 , 115 , 116 , 117 , 118 , 118 , 118 , 120 , 122 , 122 , 125 , 128 , 130 , 130 , 131 , 136 , 140 , 144 , 469 | 147 , 147 , 146 , 145 , 145 , 145 , 147 , 148 , 146 , 141 , 137 , 134 , 131 , 126 , 122 , 118 , 114 , 109 , 108 , 107 , 106 , 104 , 106 , 106 , 106 , 109 , 114 , 119 , 124 , 128 , 132 , 137 , 470 | 141 , 145 , 147 , 148 , 147 , 144 , 140 , 138 , 138 , 139 , 138 , 135 , 133 , 130 , 128 , 127 , 128 , 127 , 127 , 125 , 122 , 120 , 119 , 118 , 119 , 117 , 117 , 119 , 122 , 125 , 129 , 133 , 471 | 135 , 137 , 138 , 138 , 136 , 135 , 133 , 131 , 128 , 125 , 124 , 122 , 119 , 118 , 119 , 117 , 115 , 115 , 118 , 122 , 124 , 127 , 128 , 129 , 131 , 135 , 140 , 144 , 147 , 149 , 148 , 148 , 472 | 147 , 146 , 144 , 142 , 138 , 133 , 128 , 125 , 120 , 115 , 113 , 112 , 109 , 107 , 106 , 107 , 110 , 112 , 112 , 115 , 118 , 120 , 124 , 128 , 129 , 130 , 131 , 132 , 134 , 138 , 140 , 143 , 473 | 144 , 144 , 144 , 145 , 146 , 148 , 149 , 146 , 142 , 138 , 132 , 128 , 125 , 122 , 118 , 114 , 112 , 112 , 113 , 114 , 116 , 117 , 116 , 117 , 117 , 116 , 117 , 119 , 120 , 120 , 122 , 123 , 474 | 124 , 126 , 129 , 131 , 132 , 133 , 136 , 140 , 143 , 144 , 144 , 142 , 140 , 140 , 142 , 145 , 145 , 144 , 142 , 138 , 135 , 132 , 128 , 124 , 119 , 115 , 112 , 108 , 106 , 106 , 106 , 107 , 475 | 108 , 110 , 111 , 114 , 120 , 124 , 128 , 131 , 136 , 138 , 141 , 144 , 144 , 144 , 141 , 140 , 140 , 139 , 138 , 138 , 136 , 134 , 131 , 129 , 128 , 128 , 128 , 128 , 125 , 123 , 122 , 120 , 476 | 119 , 119 , 118 , 117 , 119 , 122 , 124 , 128 , 131 , 135 , 138 , 138 , 138 , 136 , 134 , 132 , 130 , 128 , 126 , 123 , 120 , 119 , 118 , 119 , 118 , 117 , 117 , 119 , 122 , 124 , 125 , 127 , 477 | 128 , 129 , 133 , 138 , 143 , 146 , 149 , 150 , 150 , 149 , 148 , 146 , 143 , 138 , 134 , 128 , 122 , 118 , 116 , 114 , 112 , 110 , 107 , 106 , 108 , 110 , 110 , 112 , 114 , 116 , 118 , 120 , 478 | 124 , 128 , 130 , 132 , 134 , 138 , 140 , 143 , 145 , 146 , 146 , 147 , 147 , 148 , 149 , 149 , 146 , 142 , 138 , 132 , 129 , 125 , 120 , 116 , 113 , 111 , 111 , 112 , 112 , 114 , 118 , 118 , 479 | 118 , 118 , 119 , 120 , 121 , 122 , 123 , 124 , 124 , 126 , 128 , 130 , 133 , 135 , 136 , 138 , 141 , 142 , 142 , 140 , 139 , 138 , 138 , 139 , 140 , 141 , 142 , 141 , 140 , 136 , 132 , 129 , 480 | 126 , 121 , 117 , 113 , 111 , 109 , 107 , 108 , 110 , 112 , 112 , 113 , 117 , 120 , 124 , 128 , 131 , 134 , 136 , 137 , 138 , 139 , 140 , 140 , 140 , 140 , 139 , 138 , 138 , 137 , 134 , 132 , 481 | 130 , 130 , 129 , 128 , 128 , 128 , 126 , 123 , 122 , 120 , 119 , 118 , 118 , 118 , 119 , 122 , 126 , 130 , 134 , 138 , 138 , 137 , 135 , 133 , 132 , 130 , 129 , 127 , 123 , 120 , 119 , 119 , 482 | 118 , 118 , 119 , 119 , 120 , 121 , 123 , 124 , 126 , 126 , 128 , 131 , 136 , 140 , 145 , 149 , 151 , 152 , 151 , 150 , 148 , 144 , 139 , 133 , 128 , 123 , 118 , 116 , 114 , 113 , 110 , 109 , 483 | 109 , 108 , 109 , 110 , 112 , 113 , 113 , 115 , 117 , 122 , 125 , 129 , 132 , 135 , 138 , 141 , 144 , 146 , 147 , 148 , 148 , 149 , 150 , 148 , 146 , 144 , 141 , 138 , 133 , 129 , 124 , 119 , 484 | 115 , 112 , 110 , 108 , 108 , 110 , 113 , 115 , 117 , 118 , 119 , 120 , 122 , 122 , 124 , 125 , 126 , 126 , 127 , 128 , 131 , 133 , 136 , 138 , 140 , 140 , 140 , 140 , 138 , 137 , 136 , 135 , 485 | 135 , 135 , 138 , 140 , 140 , 139 , 138 , 135 , 131 , 127 , 123 , 119 , 116 , 113 , 110 , 108 , 110 , 112 , 113 , 114 , 117 , 120 , 122 , 125 , 129 , 132 , 132 , 132 , 133 , 133 , 135 , 137 , 486 | 138 , 139 , 139 , 139 , 139 , 139 , 137 , 135 , 134 , 133 , 131 , 129 , 128 , 129 , 128 , 128 , 126 , 124 , 122 , 122 , 119 , 119 , 120 , 120 , 122 , 124 , 129 , 133 , 135 , 136 , 136 , 134 , 487 | 133 , 132 , 131 , 129 , 126 , 124 , 122 , 119 , 118 , 119 , 119 , 120 , 120 , 121 , 122 , 123 , 124 , 125 , 125 , 128 , 130 , 133 , 138 , 144 , 147 , 150 , 153 , 154 , 152 , 148 , 144 , 138 , 488 | 133 , 129 , 123 , 118 , 115 , 113 , 112 , 111 , 110 , 109 , 109 , 110 , 111 , 112 , 112 , 112 , 113 , 115 , 118 , 121 , 126 , 131 , 135 , 139 , 142 , 145 , 147 , 148 , 149 , 151 , 151 , 149 , 489 | 147 , 145 , 144 , 141 , 138 , 134 , 128 , 124 , 119 , 114 , 112 , 109 , 107 , 107 , 108 , 110 , 113 , 116 , 119 , 120 , 122 , 122 , 124 , 126 , 126 , 127 , 128 , 128 , 129 , 131 , 135 , 138 , 490 | 140 , 140 , 139 , 139 , 138 , 136 , 135 , 133 , 132 , 132 , 133 , 134 , 136 , 138 , 139 , 138 , 135 , 132 , 128 , 123 , 120 , 118 , 113 , 112 , 111 , 112 , 112 , 115 , 117 , 119 , 121 , 124 , 491 | 128 , 130 , 131 , 131 , 130 , 130 , 130 , 131 , 132 , 135 , 138 , 138 , 138 , 139 , 138 , 136 , 135 , 134 , 133 , 130 , 129 , 129 , 128 , 128 , 128 , 128 , 125 , 124 , 122 , 120 , 120 , 120 , 492 | 120 , 122 , 125 , 128 , 130 , 132 , 134 , 135 , 134 , 133 , 132 , 130 , 128 , 126 , 124 , 122 , 119 , 118 , 119 , 119 , 120 , 120 , 122 , 123 , 123 , 124 , 125 , 127 , 128 , 130 , 134 , 138 , 493 | 143 , 148 , 152 , 154 , 155 , 154 , 148 , 143 , 138 , 134 , 128 , 122 , 118 , 115 , 113 , 112 , 112 , 110 , 110 , 110 , 110 , 112 , 111 , 112 , 112 , 113 , 115 , 118 , 122 , 126 , 132 , 136 , 494 | 140 , 144 , 146 , 148 , 149 , 151 , 152 , 150 , 148 , 146 , 145 , 143 , 140 , 138 , 133 , 129 , 124 , 119 , 116 , 113 , 110 , 108 , 108 , 109 , 111 , 114 , 117 , 119 , 120 , 122 , 124 , 125 , 495 | 126 , 127 , 128 , 129 , 129 , 130 , 132 , 136 , 138 , 138 , 138 , 139 , 139 , 137 , 135 , 134 , 133 , 132 , 132 , 133 , 134 , 136 , 139 , 139 , 138 , 136 , 132 , 128 , 124 , 121 , 118 , 115 , 496 | 112 , 112 , 112 , 113 , 115 , 118 , 120 , 122 , 126 , 129 , 129 , 129 , 129 , 129 , 128 , 128 , 129 , 131 , 134 , 136 , 137 , 138 , 138 , 138 , 136 , 135 , 134 , 132 , 131 , 129 , 128 , 128 , 497 | 128 , 128 , 128 , 127 , 125 , 123 , 122 , 122 , 122 , 122 , 124 , 126 , 128 , 129 , 132 , 134 , 133 , 133 , 132 , 131 , 129 , 128 , 126 , 123 , 122 , 119 , 118 , 118 , 118 , 119 , 120 , 122 , 498 | 123 , 123 , 124 , 125 , 128 , 129 , 131 , 135 , 139 , 143 , 148 , 154 , 155 , 155 , 152 , 147 , 143 , 138 , 132 , 127 , 122 , 118 , 114 , 113 , 112 , 111 , 110 , 110 , 110 , 111 , 112 , 112 , 499 | 112 , 112 , 114 , 115 , 118 , 122 , 128 , 132 , 136 , 141 , 144 , 146 , 148 , 151 , 151 , 150 , 149 , 146 , 144 , 143 , 141 , 139 , 136 , 133 , 128 , 124 , 120 , 116 , 113 , 110 , 108 , 109 , 500 | 110 , 111 , 114 , 117 , 119 , 121 , 123 , 125 , 126 , 127 , 128 , 128 , 129 , 129 , 131 , 134 , 135 , 136 , 137 , 138 , 138 , 136 , 135 , 134 , 133 , 132 , 131 , 131 , 132 , 134 , 136 , 138 , 501 | 139 , 138 , 135 , 132 , 128 , 125 , 120 , 117 , 115 , 113 , 112 , 113 , 114 , 116 , 118 , 122 , 124 , 127 , 128 , 129 , 129 , 129 , 128 , 128 , 128 , 129 , 131 , 133 , 135 , 137 , 138 , 138 , 502 | 137 , 136 , 135 , 133 , 132 , 130 , 128 , 128 , 128 , 128 , 128 , 128 , 127 , 126 , 124 , 123 , 123 , 123 , 124 , 125 , 126 , 128 , 130 , 132 , 132 , 132 , 132 , 132 , 131 , 129 , 127 , 126 , 503 | 124 , 120 , 118 , 118 , 118 , 118 , 119 , 121 , 122 , 122 , 124 , 125 , 126 , 128 , 130 , 132 , 136 , 140 , 144 , 150 , 154 , 155 , 154 , 151 , 147 , 142 , 136 , 130 , 126 , 122 , 117 , 114 , 504 | 113 , 112 , 110 , 110 , 110 , 112 , 112 , 112 , 112 , 112 , 113 , 114 , 116 , 119 , 123 , 128 , 133 , 138 , 142 , 145 , 148 , 150 , 150 , 151 , 150 , 148 , 145 , 144 , 141 , 139 , 138 , 135 , 505 | 131 , 127 , 124 , 120 , 116 , 113 , 111 , 110 , 109 , 110 , 112 , 115 , 117 , 119 , 122 , 124 , 126 , 127 , 128 , 128 , 129 , 130 , 130 , 132 , 134 , 134 , 135 , 136 , 136 , 136 , 135 , 134 , 506 | 134 , 132 , 132 , 131 , 131 , 132 , 133 , 136 , 138 , 139 , 138 , 135 , 132 , 129 , 125 , 121 , 118 , 116 , 115 , 114 , 114 , 115 , 117 , 120 , 123 , 126 , 128 , 129 , 129 , 129 , 129 , 127 , 507 | 127 , 128 , 129 , 130 , 132 , 135 , 137 , 138 , 138 , 137 , 136 , 135 , 134 , 132 , 130 , 129 , 128 , 128 , 128 , 129 , 128 , 128 , 126 , 126 , 125 , 124 , 125 , 125 , 126 , 126 , 128 , 129 , 508 | 130 , 131 , 132 , 132 , 131 , 130 , 128 , 127 , 125 , 123 , 120 , 118 , 118 , 118 , 118 , 119 , 120 , 122 , 123 , 124 , 126 , 128 , 129 , 130 , 133 , 137 , 141 , 145 , 150 , 154 , 154 , 153 , 509 | 150 , 146 , 140 , 135 , 130 , 126 , 120 , 116 , 114 , 113 , 112 , 110 , 110 , 110 , 112 , 112 , 112 , 112 , 113 , 113 , 113 , 116 , 120 , 124 , 128 , 133 , 138 , 142 , 146 , 148 , 150 , 150 , 510 | 151 , 150 , 147 , 144 , 142 , 140 , 138 , 136 , 134 , 130 , 127 , 123 , 120 , 116 , 113 , 112 , 110 , 110 , 111 , 112 , 115 , 117 , 119 , 122 , 125 , 127 , 127 , 128 , 129 , 130 , 130 , 131 , 511 | 132 , 133 , 134 , 135 , 135 , 135 , 135 , 135 , 134 , 133 , 132 , 131 , 131 , 131 , 132 , 133 , 135 , 138 , 138 , 138 , 135 , 132 , 128 , 124 , 121 , 119 , 117 , 114 , 114 , 115 , 116 , 118 , 512 | 120 , 123 , 126 , 128 , 128 , 128 , 128 , 128 , 126 , 126 , 127 , 128 , 130 , 132 , 134 , 136 , 137 , 137 , 137 , 136 , 135 , 134 , 132 , 130 , 128 , 128 , 128 , 129 , 129 , 128 , 127 , 127 , 513 | 126 , 126 , 125 , 125 , 125 , 126 , 126 , 127 , 128 , 129 , 129 , 130 , 131 , 131 , 129 , 128 , 126 , 124 , 122 , 119 , 118 , 118 , 117 , 118 , 119 , 120 , 122 , 123 , 125 , 127 , 128 , 130 , 514 | 131 , 134 , 138 , 142 , 146 , 151 , 154 , 154 , 151 , 148 , 144 , 139 , 133 , 128 , 124 , 120 , 116 , 114 , 112 , 110 , 109 , 110 , 110 , 112 , 112 , 112 , 113 , 113 , 113 , 115 , 118 , 122 , 515 | 125 , 129 , 134 , 139 , 144 , 147 , 149 , 151 , 151 , 150 , 148 , 146 , 143 , 141 , 138 , 137 , 135 , 132 , 128 , 126 , 122 , 118 , 115 , 113 , 112 , 110 , 111 , 112 , 113 , 115 , 117 , 120 , 516 | 123 , 125 , 127 , 128 , 129 , 130 , 131 , 131 , 132 , 133 , 133 , 133 , 134 , 134 , 134 , 134 , 134 , 133 , 133 , 132 , 131 , 131 , 131 , 132 , 134 , 136 , 138 , 138 , 137 , 134 , 131 , 128 , 517 | 124 , 122 , 119 , 117 , 115 , 115 , 116 , 117 , 119 , 122 , 124 , 126 , 128 , 128 , 128 , 128 , 126 , 125 , 126 , 127 , 128 , 130 , 132 , 134 , 135 , 136 , 137 , 137 , 136 , 136 , 134 , 132 , 518 | 129 , 128 , 129 , 129 , 129 , 129 , 128 , 128 , 128 , 127 , 126 , 126 , 126 , 126 , 126 , 126 , 127 , 128 , 128 , 128 , 129 , 130 , 130 , 129 , 128 , 126 , 124 , 122 , 119 , 118 , 119 , 118 , 519 | 118 , 119 , 120 , 122 , 124 , 126 , 128 , 129 , 131 , 134 , 137 , 140 , 144 , 148 , 152 , 152 , 152 , 150 , 146 , 142 , 138 , 132 , 128 , 124 , 119 , 116 , 114 , 112 , 110 , 109 , 110 , 111 , 520 | 112 , 112 , 112 , 113 , 113 , 114 , 116 , 119 , 122 , 126 , 131 , 136 , 140 , 144 , 148 , 150 , 151 , 151 , 150 , 148 , 144 , 142 , 140 , 138 , 136 , 134 , 131 , 128 , 124 , 122 , 118 , 115 , 521 | 113 , 112 , 112 , 111 , 112 , 113 , 116 , 117 , 120 , 123 , 126 , 128 , 129 , 130 , 131 , 132 , 132 , 132 , 133 , 133 , 133 , 133 , 133 , 132 , 133 , 133 , 133 , 133 , 132 , 131 , 131 , 132 , 522 | 132 , 134 , 136 , 138 , 138 , 135 , 132 , 130 , 128 , 124 , 122 , 120 , 117 , 116 , 117 , 117 , 118 , 120 , 122 , 124 , 126 , 128 , 128 , 128 , 127 , 126 , 125 , 126 , 127 , 128 , 129 , 131 , 523 | 133 , 134 , 135 , 136 , 138 , 136 , 136 , 134 , 131 , 129 , 130 , 129 , 129 , 129 , 129 , 128 , 128 , 128 , 127 , 127 , 127 , 126 , 126 , 126 , 126 , 127 , 128 , 128 , 128 , 128 , 129 , 129 , 524 | 128 , 127 , 126 , 123 , 122 , 120 , 120 , 119 , 118 , 118 , 119 , 120 , 122 , 125 , 126 , 128 , 130 , 132 , 134 , 138 , 142 , 145 , 149 , 152 , 152 , 151 , 148 , 145 , 140 , 135 , 131 , 128 , 525 | 123 , 118 , 116 , 114 , 112 , 110 , 110 , 110 , 112 , 112 , 112 , 112 , 113 , 114 , 115 , 117 , 120 , 124 , 128 , 132 , 136 , 141 , 144 , 148 , 150 , 151 , 151 , 149 , 146 , 143 , 141 , 139 , 526 | 138 , 136 , 133 , 130 , 127 , 124 , 120 , 117 , 115 , 114 , 112 , 112 , 112 , 112 , 114 , 117 , 118 , 121 , 124 , 126 , 128 , 129 , 131 , 132 , 132 , 132 , 133 , 133 , 133 , 131 , 131 , 130 , 527 | 130 , 131 , 131 , 131 , 131 , 131 , 130 , 129 , 130 , 132 , 135 , 137 , 137 , 135 , 133 , 131 , 129 , 128 , 125 , 123 , 121 , 119 , 118 , 119 , 120 , 121 , 123 , 124 , 125 , 127 , 128 , 128 , 528 | 127 , 127 , 126 , 126 , 127 , 128 , 128 , 129 , 130 , 131 , 133 , 135 , 136 , 137 , 135 , 134 , 132 , 130 , 129 , 129 , 129 , 129 , 129 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 127 , 127 , 529 | 127 , 127 , 127 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 127 , 126 , 124 , 123 , 121 , 121 , 119 , 119 , 120 , 120 , 121 , 124 , 126 , 128 , 128 , 130 , 132 , 135 , 138 , 142 , 146 , 149 , 530 | 151 , 150 , 148 , 145 , 141 , 137 , 133 , 129 , 127 , 123 , 119 , 116 , 114 , 113 , 112 , 112 , 111 , 113 , 113 , 113 , 113 , 115 , 115 , 117 , 119 , 123 , 126 , 128 , 133 , 137 , 141 , 144 , 531 | 147 , 149 , 150 , 149 , 147 , 143 , 141 , 139 , 138 , 136 , 134 , 132 , 128 , 126 , 123 , 120 , 119 , 117 , 115 , 113 , 113 , 113 , 114 , 117 , 119 , 120 , 123 , 125 , 127 , 128 , 128 , 130 , 532 | 132 , 132 , 132 , 132 , 132 , 131 , 131 , 130 , 130 , 130 , 130 , 131 , 131 , 131 , 130 , 129 , 130 , 131 , 133 , 135 , 137 , 136 , 134 , 132 , 130 , 128 , 127 , 125 , 123 , 121 , 120 , 119 , 533 | 120 , 121 , 123 , 123 , 124 , 126 , 127 , 127 , 126 , 126 , 126 , 125 , 126 , 127 , 128 , 128 , 129 , 130 , 131 , 133 , 134 , 135 , 135 , 134 , 133 , 132 , 130 , 129 , 129 , 129 , 129 , 130 , 534 | 129 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 127 , 127 , 127 , 127 , 128 , 128 , 128 , 128 , 128 , 127 , 127 , 126 , 125 , 124 , 123 , 121 , 120 , 120 , 120 , 120 , 121 , 123 , 124 , 126 , 535 | 128 , 129 , 131 , 133 , 137 , 140 , 143 , 147 , 149 , 151 , 149 , 146 , 143 , 139 , 136 , 132 , 128 , 127 , 123 , 119 , 116 , 115 , 113 , 113 , 112 , 111 , 112 , 113 , 113 , 113 , 115 , 116 , 536 | 117 , 120 , 124 , 127 , 129 , 134 , 138 , 142 , 145 , 147 , 149 , 148 , 148 , 145 , 143 , 140 , 139 , 137 , 136 , 134 , 131 , 128 , 125 , 123 , 120 , 118 , 116 , 115 , 114 , 114 , 114 , 115 , 537 | 118 , 120 , 121 , 124 , 126 , 127 , 128 , 129 , 131 , 132 , 132 , 132 , 132 , 132 , 131 , 130 , 130 , 129 , 129 , 130 , 130 , 130 , 130 , 129 , 129 , 131 , 132 , 134 , 135 , 137 , 137 , 134 , 538 | 132 , 129 , 128 , 127 , 125 , 123 , 123 , 120 , 120 , 121 , 123 , 123 , 124 , 125 , 125 , 126 , 125 , 125 , 126 , 125 , 125 , 126 , 127 , 128 , 128 , 129 , 131 , 133 , 134 , 134 , 135 , 135 , 539 | 134 , 133 , 132 , 130 , 130 , 130 , 130 , 130 , 130 , 129 , 128 , 128 , 128 , 128 , 128 , 128 , 127 , 127 , 127 , 127 , 128 , 128 , 128 , 128 , 128 , 127 , 126 , 126 , 126 , 125 , 124 , 122 , 540 | 121 , 121 , 120 , 120 , 121 , 121 , 123 , 125 , 127 , 128 , 129 , 132 , 134 , 137 , 141 , 144 , 146 , 149 , 149 , 147 , 144 , 141 , 137 , 134 , 130 , 128 , 126 , 121 , 118 , 116 , 115 , 114 , 541 | 113 , 112 , 112 , 112 , 112 , 113 , 113 , 115 , 116 , 118 , 121 , 125 , 128 , 131 , 135 , 140 , 143 , 144 , 146 , 146 , 146 , 145 , 143 , 141 , 139 , 138 , 137 , 135 , 133 , 129 , 127 , 125 , 542 | 123 , 119 , 117 , 116 , 114 , 114 , 114 , 115 , 117 , 119 , 121 , 123 , 125 , 127 , 128 , 128 , 130 , 132 , 133 , 132 , 131 , 132 , 131 , 130 , 129 , 129 , 129 , 129 , 129 , 129 , 129 , 129 , 543 | 129 , 130 , 131 , 132 , 134 , 136 , 137 , 135 , 133 , 131 , 129 , 128 , 126 , 125 , 124 , 123 , 123 , 123 , 124 , 125 , 125 , 125 , 125 , 125 , 125 , 124 , 124 , 124 , 124 , 124 , 125 , 127 , 544 | 127 , 128 , 129 , 131 , 132 , 133 , 133 , 133 , 133 , 133 , 132 , 131 , 130 , 131 , 131 , 131 , 132 , 132 , 131 , 131 , 130 , 129 , 128 , 128 , 128 , 127 , 126 , 126 , 126 , 127 , 128 , 127 , 545 | 127 , 127 , 126 , 125 , 125 , 125 , 124 , 123 , 121 , 120 , 120 , 119 , 120 , 121 , 123 , 124 , 126 , 128 , 129 , 132 , 135 , 137 , 140 , 143 , 145 , 147 , 149 , 148 , 145 , 142 , 139 , 135 , 546 | 131 , 128 , 126 , 123 , 120 , 117 , 117 , 115 , 114 , 114 , 112 , 112 , 113 , 113 , 114 , 115 , 117 , 117 , 120 , 124 , 128 , 130 , 135 , 139 , 142 , 144 , 145 , 146 , 145 , 144 , 143 , 141 , 547 | 139 , 138 , 137 , 135 , 133 , 131 , 128 , 127 , 124 , 121 , 118 , 117 , 115 , 115 , 115 , 115 , 117 , 118 , 121 , 123 , 125 , 127 , 128 , 129 , 131 , 133 , 134 , 133 , 132 , 131 , 131 , 129 , 548 | 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 129 , 130 , 132 , 133 , 135 , 137 , 135 , 133 , 131 , 129 , 128 , 127 , 127 , 127 , 126 , 125 , 127 , 127 , 127 , 126 , 126 , 125 , 549 | 124 , 123 , 123 , 123 , 123 , 123 , 123 , 123 , 125 , 127 , 128 , 129 , 130 , 132 , 132 , 132 , 132 , 132 , 132 , 132 , 131 , 131 , 131 , 132 , 134 , 135 , 135 , 135 , 134 , 132 , 130 , 128 , 550 | 128 , 127 , 125 , 125 , 125 , 125 , 127 , 126 , 126 , 126 , 126 , 125 , 124 , 124 , 123 , 123 , 120 , 119 , 120 , 120 , 120 , 121 , 123 , 124 , 126 , 128 , 129 , 132 , 135 , 137 , 139 , 142 , 551 | 143 , 145 , 146 , 146 , 146 , 143 , 140 , 136 , 133 , 128 , 127 , 124 , 122 , 120 , 118 , 116 , 115 , 114 , 112 , 112 , 112 , 112 , 114 , 114 , 116 , 117 , 120 , 123 , 128 , 130 , 135 , 138 , 552 | 141 , 143 , 144 , 144 , 144 , 143 , 142 , 140 , 138 , 136 , 136 , 134 , 132 , 132 , 130 , 128 , 126 , 123 , 120 , 118 , 116 , 115 , 114 , 115 , 117 , 118 , 120 , 123 , 126 , 128 , 129 , 131 , 553 | 133 , 133 , 134 , 133 , 133 , 131 , 130 , 129 , 128 , 128 , 128 , 128 , 127 , 127 , 128 , 128 , 128 , 128 , 128 , 128 , 129 , 131 , 133 , 135 , 136 , 135 , 134 , 131 , 129 , 128 , 128 , 128 , 554 | 128 , 128 , 128 , 128 , 127 , 127 , 125 , 125 , 123 , 123 , 121 , 121 , 121 , 121 , 121 , 121 , 123 , 125 , 127 , 128 , 129 , 130 , 131 , 131 , 132 , 132 , 132 , 133 , 132 , 132 , 133 , 134 , 555 | 135 , 136 , 138 , 137 , 136 , 135 , 132 , 129 , 128 , 127 , 125 , 124 , 123 , 124 , 124 , 125 , 125 , 125 , 126 , 125 , 124 , 123 , 123 , 121 , 121 , 120 , 120 , 121 , 121 , 121 , 122 , 123 , 556 | 126 , 128 , 130 , 133 , 136 , 137 , 138 , 140 , 142 , 142 , 144 , 145 , 145 , 143 , 142 , 137 , 134 , 130 , 128 , 125 , 123 , 121 , 118 , 116 , 115 , 114 , 114 , 113 , 113 , 114 , 114 , 114 , 557 | 115 , 118 , 120 , 123 , 127 , 130 , 134 , 137 , 140 , 141 , 142 , 143 , 142 , 141 , 141 , 140 , 138 , 136 , 134 , 133 , 133 , 132 , 131 , 128 , 127 , 124 , 122 , 119 , 117 , 116 , 115 , 115 , 558 | 116 , 117 , 120 , 123 , 126 , 128 , 130 , 133 , 134 , 134 , 134 , 133 , 132 , 130 , 129 , 128 , 128 , 128 , 127 , 127 , 126 , 126 , 127 , 128 , 128 , 128 , 128 , 128 , 128 , 129 , 132 , 134 , 559 | 136 , 136 , 136 , 134 , 133 , 132 , 131 , 130 , 130 , 129 , 128 , 128 , 128 , 127 , 126 , 125 , 123 , 122 , 122 , 121 , 120 , 120 , 119 , 120 , 121 , 123 , 124 , 127 , 128 , 128 , 129 , 131 , 560 | 132 , 132 , 133 , 133 , 133 , 133 , 133 , 134 , 136 , 138 , 140 , 140 , 138 , 136 , 134 , 131 , 128 , 127 , 125 , 123 , 123 , 122 , 122 , 123 , 124 , 125 , 125 , 125 , 124 , 123 , 122 , 122 , 561 | 122 , 121 , 120 , 120 , 121 , 122 , 122 , 124 , 127 , 128 , 130 , 134 , 136 , 137 , 138 , 139 , 140 , 141 , 141 , 142 , 143 , 143 , 141 , 139 , 135 , 132 , 128 , 127 , 125 , 122 , 119 , 117 , 562 | 116 , 115 , 115 , 114 , 114 , 114 , 115 , 115 , 116 , 118 , 121 , 123 , 126 , 128 , 132 , 135 , 138 , 139 , 141 , 141 , 141 , 141 , 140 , 139 , 138 , 136 , 133 , 132 , 133 , 132 , 131 , 129 , 563 | 128 , 126 , 123 , 122 , 119 , 117 , 117 , 117 , 117 , 117 , 119 , 123 , 127 , 128 , 131 , 133 , 134 , 134 , 133 , 133 , 132 , 131 , 128 , 128 , 128 , 127 , 126 , 125 , 125 , 126 , 127 , 127 , 564 | 127 , 127 , 127 , 127 , 127 , 128 , 129 , 132 , 134 , 136 , 136 , 136 , 136 , 134 , 134 , 133 , 133 , 132 , 130 , 128 , 128 , 127 , 126 , 125 , 123 , 123 , 122 , 120 , 119 , 118 , 118 , 119 , 565 | 119 , 120 , 122 , 123 , 126 , 128 , 128 , 130 , 131 , 133 , 133 , 133 , 133 , 133 , 134 , 135 , 137 , 139 , 140 , 140 , 139 , 138 , 135 , 133 , 129 , 128 , 126 , 123 , 122 , 121 , 120 , 121 , 566 | 123 , 124 , 124 , 124 , 124 , 123 , 123 , 122 , 122 , 121 , 120 , 120 , 120 , 122 , 123 , 124 , 127 , 128 , 131 , 134 , 136 , 137 , 138 , 138 , 138 , 138 , 139 , 140 , 141 , 142 , 141 , 139 , 567 | 136 , 133 , 131 , 128 , 126 , 123 , 120 , 118 , 116 , 115 , 115 , 115 , 115 , 115 , 115 , 116 , 117 , 119 , 122 , 124 , 127 , 128 , 130 , 132 , 136 , 137 , 139 , 140 , 141 , 141 , 139 , 138 , 568 | 137 , 136 , 133 , 132 , 132 , 131 , 130 , 129 , 128 , 127 , 124 , 124 , 121 , 119 , 119 , 118 , 117 , 118 , 120 , 124 , 127 , 129 , 132 , 133 , 134 , 134 , 134 , 132 , 132 , 131 , 128 , 128 , 569 | 127 , 126 , 124 , 124 , 124 , 125 , 125 , 126 , 126 , 126 , 126 , 126 , 127 , 128 , 128 , 130 , 132 , 136 , 137 , 137 , 137 , 137 , 137 , 137 , 136 , 133 , 132 , 129 , 128 , 127 , 126 , 125 , 570 | 124 , 122 , 121 , 119 , 119 , 118 , 119 , 119 , 119 , 119 , 120 , 121 , 124 , 126 , 128 , 128 , 131 , 132 , 132 , 133 , 134 , 136 , 136 , 137 , 137 , 139 , 140 , 141 , 140 , 138 , 136 , 133 , 571 | 131 , 128 , 127 , 124 , 122 , 120 , 120 , 120 , 121 , 124 , 124 , 124 , 124 , 124 , 124 , 122 , 122 , 122 , 122 , 121 , 120 , 121 , 124 , 125 , 128 , 129 , 132 , 134 , 136 , 136 , 136 , 136 , 572 | 136 , 136 , 136 , 138 , 139 , 139 , 140 , 139 , 137 , 136 , 132 , 130 , 128 , 124 , 122 , 119 , 117 , 116 , 116 , 116 , 116 , 116 , 116 , 117 , 119 , 120 , 122 , 125 , 127 , 128 , 128 , 131 , 573 | 132 , 135 , 136 , 138 , 139 , 139 , 139 , 137 , 136 , 135 , 134 , 132 , 131 , 130 , 130 , 128 , 128 , 128 , 127 , 124 , 124 , 121 , 120 , 119 , 119 , 120 , 121 , 124 , 127 , 129 , 132 , 133 , 574 | 134 , 134 , 134 , 132 , 132 , 130 , 129 , 128 , 126 , 124 , 124 , 124 , 124 , 124 , 125 , 125 , 125 , 125 , 125 , 126 , 126 , 127 , 128 , 129 , 131 , 133 , 136 , 139 , 140 , 140 , 140 , 139 , 575 | 137 , 136 , 133 , 131 , 128 , 127 , 125 , 124 , 124 , 122 , 120 , 119 , 119 , 118 , 118 , 118 , 119 , 118 , 118 , 119 , 121 , 124 , 126 , 128 , 129 , 131 , 132 , 134 , 135 , 135 , 137 , 138 , 576 | 139 , 139 , 139 , 139 , 139 , 139 , 137 , 135 , 132 , 129 , 128 , 125 , 122 , 121 , 120 , 120 , 120 , 121 , 124 , 124 , 124 , 124 , 124 , 124 , 123 , 123 , 123 , 122 , 121 , 122 , 124 , 125 , 577 | 128 , 129 , 132 , 133 , 135 , 135 , 135 , 135 , 135 , 135 , 135 , 135 , 136 , 136 , 137 , 138 , 137 , 136 , 134 , 131 , 128 , 127 , 124 , 121 , 119 , 117 , 116 , 117 , 117 , 117 , 117 , 118 , 578 | 120 , 121 , 124 , 125 , 128 , 128 , 128 , 128 , 130 , 131 , 134 , 135 , 137 , 138 , 137 , 136 , 135 , 135 , 134 , 133 , 131 , 130 , 129 , 128 , 128 , 128 , 128 , 126 , 125 , 124 , 122 , 121 , 579 | 121 , 121 , 122 , 124 , 126 , 128 , 131 , 132 , 133 , 134 , 133 , 132 , 131 , 130 , 129 , 128 , 126 , 124 , 123 , 124 , 123 , 124 , 124 , 124 , 125 , 125 , 125 , 125 , 126 , 127 , 128 , 128 , 580 | 130 , 132 , 135 , 138 , 140 , 142 , 142 , 141 , 140 , 137 , 135 , 132 , 129 , 128 , 125 , 125 , 124 , 122 , 121 , 119 , 118 , 118 , 118 , 118 , 118 , 118 , 118 , 118 , 119 , 122 , 124 , 127 , 581 | 128 , 131 , 132 , 134 , 135 , 137 , 138 , 140 , 140 , 140 , 140 , 138 , 138 , 138 , 137 , 135 , 132 , 130 , 128 , 125 , 122 , 121 , 120 , 119 , 119 , 120 , 122 , 122 , 122 , 124 , 124 , 124 , 582 | 124 , 124 , 124 , 124 , 124 , 124 , 125 , 126 , 128 , 129 , 131 , 133 , 134 , 134 , 135 , 135 , 135 , 134 , 134 , 134 , 134 , 134 , 135 , 136 , 137 , 136 , 135 , 133 , 130 , 128 , 125 , 124 , 583 | 121 , 119 , 118 , 117 , 117 , 118 , 119 , 119 , 121 , 124 , 125 , 126 , 127 , 128 , 128 , 128 , 128 , 129 , 131 , 132 , 134 , 135 , 135 , 135 , 135 , 135 , 134 , 134 , 132 , 131 , 129 , 128 , 584 | 128 , 128 , 128 , 127 , 126 , 125 , 124 , 124 , 123 , 124 , 124 , 125 , 127 , 128 , 129 , 131 , 132 , 132 , 132 , 132 , 131 , 130 , 129 , 128 , 126 , 124 , 122 , 122 , 122 , 122 , 122 , 123 , 585 | 124 , 124 , 125 , 125 , 125 , 127 , 127 , 128 , 129 , 131 , 134 , 137 , 140 , 143 , 143 , 142 , 140 , 138 , 136 , 133 , 131 , 128 , 126 , 125 , 124 , 122 , 120 , 119 , 119 , 119 , 118 , 118 , 586 | 118 , 117 , 117 , 117 , 119 , 120 , 122 , 125 , 128 , 129 , 132 , 134 , 137 , 138 , 140 , 140 , 141 , 140 , 140 , 138 , 138 , 137 , 137 , 135 , 133 , 131 , 128 , 126 , 124 , 122 , 121 , 119 , 587 | 119 , 119 , 119 , 121 , 122 , 122 , 124 , 124 , 124 , 124 , 124 , 125 , 125 , 125 , 125 , 127 , 128 , 128 , 130 , 130 , 131 , 132 , 132 , 132 , 132 , 132 , 132 , 132 , 131 , 131 , 132 , 134 , 588 | 135 , 135 , 134 , 132 , 130 , 128 , 127 , 125 , 123 , 121 , 120 , 119 , 118 , 120 , 120 , 121 , 123 , 124 , 126 , 127 , 127 , 128 , 128 , 128 , 128 , 128 , 128 , 129 , 130 , 132 , 132 , 132 , 589 | 133 , 134 , 133 , 132 , 131 , 129 , 128 , 128 , 128 , 128 , 128 , 128 , 127 , 126 , 126 , 126 , 125 , 125 , 126 , 127 , 128 , 128 , 128 , 129 , 129 , 130 , 130 , 130 , 129 , 129 , 128 , 128 , 590 | 126 , 126 , 124 , 123 , 123 , 122 , 122 , 122 , 123 , 123 , 124 , 125 , 126 , 127 , 128 , 128 , 128 , 130 , 133 , 135 , 139 , 142 , 142 , 142 , 141 , 138 , 136 , 134 , 131 , 128 , 128 , 125 , 591 | 123 , 121 , 120 , 120 , 119 , 118 , 118 , 118 , 117 , 117 , 117 , 117 , 117 , 119 , 121 , 124 , 126 , 128 , 130 , 132 , 135 , 138 , 139 , 139 , 139 , 139 , 138 , 137 , 136 , 135 , 135 , 134 , 592 | 132 , 130 , 128 , 127 , 125 , 123 , 122 , 120 , 119 , 119 , 119 , 120 , 121 , 123 , 123 , 124 , 125 , 125 , 126 , 126 , 127 , 127 , 128 , 128 , 128 , 128 , 129 , 129 , 130 , 130 , 131 , 131 , 593 | 131 , 131 , 131 , 130 , 129 , 130 , 131 , 132 , 133 , 134 , 134 , 132 , 131 , 129 , 128 , 127 , 125 , 123 , 122 , 121 , 120 , 121 , 121 , 123 , 124 , 125 , 126 , 127 , 127 , 127 , 127 , 127 , 594 | 127 , 127 , 128 , 128 , 128 , 129 , 130 , 131 , 132 , 132 , 132 , 132 , 131 , 130 , 129 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 127 , 127 , 127 , 128 , 128 , 128 , 128 , 128 , 128 , 595 | 128 , 129 , 129 , 129 , 129 , 128 , 128 , 128 , 127 , 126 , 125 , 123 , 122 , 122 , 122 , 122 , 122 , 123 , 123 , 124 , 126 , 126 , 127 , 128 , 128 , 130 , 132 , 135 , 138 , 139 , 140 , 140 , 596 | 139 , 138 , 136 , 133 , 132 , 129 , 128 , 126 , 123 , 122 , 122 , 121 , 120 , 120 , 119 , 119 , 118 , 118 , 119 , 119 , 120 , 120 , 122 , 123 , 126 , 128 , 129 , 132 , 134 , 137 , 137 , 137 , 597 | 138 , 137 , 137 , 137 , 135 , 134 , 133 , 133 , 132 , 130 , 128 , 128 , 126 , 124 , 123 , 122 , 121 , 120 , 120 , 120 , 122 , 123 , 123 , 124 , 124 , 126 , 126 , 127 , 128 , 128 , 128 , 128 , 598 | 128 , 128 , 129 , 129 , 129 , 129 , 129 , 129 , 129 , 129 , 129 , 129 , 129 , 129 , 129 , 130 , 131 , 131 , 133 , 131 , 131 , 130 , 129 , 128 , 127 , 126 , 124 , 124 , 123 , 123 , 124 , 124 , 599 | 125 , 126 , 126 , 126 , 127 , 126 , 126 , 126 , 126 , 126 , 126 , 127 , 128 , 128 , 128 , 129 , 131 , 131 , 131 , 131 , 131 , 130 , 129 , 129 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 600 | 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 127 , 126 , 126 , 124 , 123 , 123 , 123 , 123 , 123 , 123 , 124 , 124 , 125 , 126 , 127 , 128 , 601 | 129 , 131 , 132 , 134 , 136 , 137 , 137 , 138 , 137 , 137 , 136 , 134 , 131 , 130 , 128 , 127 , 125 , 123 , 123 , 122 , 121 , 121 , 120 , 119 , 119 , 119 , 119 , 120 , 121 , 121 , 122 , 123 , 602 | 125 , 128 , 129 , 130 , 133 , 136 , 136 , 136 , 136 , 136 , 136 , 136 , 133 , 133 , 132 , 131 , 130 , 130 , 129 , 128 , 127 , 125 , 125 , 123 , 122 , 121 , 121 , 121 , 122 , 122 , 124 , 125 , 603 | 125 , 126 , 127 , 128 , 128 , 128 , 129 , 129 , 129 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 129 , 129 , 129 , 130 , 130 , 131 , 131 , 130 , 130 , 129 , 604 | 128 , 127 , 126 , 125 , 125 , 125 , 125 , 126 , 126 , 126 , 126 , 126 , 126 , 126 , 126 , 126 , 126 , 125 , 125 , 125 , 126 , 127 , 128 , 128 , 129 , 130 , 130 , 130 , 130 , 130 , 130 , 129 , 605 | 129 , 128 , 128 , 128 , 128 , 129 , 129 , 129 , 129 , 129 , 129 , 128 , 128 , 128 , 128 , 127 , 127 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 127 , 126 , 126 , 125 , 124 , 123 , 123 , 123 , 606 | 123 , 123 , 124 , 125 , 125 , 126 , 128 , 128 , 129 , 130 , 131 , 133 , 133 , 134 , 135 , 136 , 136 , 135 , 134 , 133 , 131 , 130 , 128 , 128 , 126 , 124 , 124 , 123 , 122 , 122 , 121 , 121 , 607 | 121 , 121 , 121 , 121 , 122 , 122 , 122 , 124 , 125 , 127 , 128 , 131 , 133 , 133 , 134 , 135 , 135 , 135 , 135 , 134 , 133 , 132 , 131 , 131 , 130 , 129 , 129 , 128 , 128 , 126 , 126 , 124 , 608 | 123 , 122 , 122 , 122 , 122 , 123 , 124 , 126 , 126 , 127 , 128 , 128 , 128 , 129 , 129 , 129 , 129 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 609 | 128 , 128 , 129 , 130 , 131 , 131 , 130 , 129 , 128 , 128 , 128 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 126 , 126 , 126 , 126 , 126 , 126 , 126 , 126 , 125 , 126 , 126 , 127 , 128 , 610 | 128 , 128 , 129 , 129 , 129 , 129 , 129 , 129 , 129 , 128 , 128 , 128 , 129 , 129 , 130 , 130 , 130 , 129 , 129 , 128 , 128 , 128 , 128 , 127 , 127 , 127 , 127 , 128 , 128 , 127 , 128 , 128 , 611 | 127 , 127 , 126 , 126 , 125 , 125 , 124 , 124 , 124 , 124 , 125 , 125 , 126 , 126 , 128 , 128 , 129 , 130 , 131 , 131 , 132 , 133 , 133 , 134 , 134 , 134 , 134 , 133 , 131 , 130 , 128 , 128 , 612 | 127 , 126 , 125 , 124 , 123 , 122 , 122 , 122 , 122 , 122 , 122 , 122 , 122 , 123 , 124 , 124 , 126 , 127 , 128 , 130 , 131 , 132 , 133 , 133 , 133 , 133 , 133 , 133 , 132 , 131 , 131 , 130 , 613 | 129 , 129 , 129 , 128 , 128 , 127 , 126 , 125 , 124 , 124 , 123 , 123 , 123 , 124 , 124 , 125 , 126 , 127 , 128 , 128 , 129 , 129 , 129 , 129 , 129 , 129 , 128 , 128 , 128 , 128 , 128 , 128 , 614 | 127 , 127 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 129 , 130 , 130 , 130 , 130 , 129 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 127 , 127 , 127 , 126 , 126 , 126 , 126 , 615 | 126 , 125 , 125 , 125 , 125 , 126 , 126 , 127 , 128 , 128 , 128 , 128 , 129 , 129 , 129 , 129 , 129 , 129 , 129 , 129 , 129 , 130 , 130 , 130 , 130 , 130 , 129 , 129 , 128 , 128 , 128 , 127 , 616 | 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 126 , 126 , 126 , 125 , 125 , 125 , 125 , 125 , 125 , 125 , 126 , 127 , 128 , 128 , 129 , 130 , 130 , 130 , 131 , 131 , 131 , 132 , 617 | 132 , 133 , 132 , 132 , 131 , 130 , 128 , 128 , 128 , 127 , 126 , 125 , 124 , 124 , 123 , 123 , 123 , 123 , 123 , 123 , 123 , 124 , 125 , 125 , 126 , 127 , 128 , 129 , 130 , 131 , 131 , 132 , 618 | 132 , 132 , 132 , 131 , 131 , 131 , 130 , 129 , 129 , 129 , 128 , 128 , 128 , 127 , 126 , 126 , 125 , 125 , 124 , 124 , 124 , 124 , 125 , 125 , 126 , 127 , 128 , 128 , 129 , 129 , 129 , 129 , 619 | 129 , 128 , 128 , 128 , 128 , 128 , 127 , 127 , 127 , 127 , 127 , 127 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 128 , 129 , 129 , 130 , 129 , 129 , 129 , 129 , 129 , 128 , 128 , 128 , 128 , 620 | 128 , 128 , 127 , 127 , 127 , 126 , 126 , 126 , 126 , 125 , 125 , 125 , 125 , 126 , 126 , 126 , 127 , 127 , 128 , 128 , 128 , 128 , 129 , 129 , 129 , 129 , 129 , 129 , 129 , 130 , 130 , 130 , 621 | 130 , 130 , 129 , 129 , 128 , 128 , 128 , 127 , 127 , 126 , 126 , 126 , 126 , 127 , 127 , 127 , 127 , 127 , 126 , 126 , 126 , 126 , 126 , 125 , 125 , 126 , 126 , 126 , 126 , 127 , 128 , 128 , 622 | 129 , 129 , 130 , 130 , 130 , 130 , 130 , 131 , 131 , 131 , 131 , 131 , 130 , 129 , 129 , 128 , 128 , 127 , 126 , 126 , 125 , 124 , 124 , 124 , 124 , 124 , 124 , 124 , 125 , 125 , 125 , 126 , 623 | 126 , 127 , 128 , 128 , 129 , 130 , 130 , 130 , 130 , 131 , 131 , 130 , 130 , 130 , 130 , 129 , 129 , 129 , 128 , 128 , 128 , 128 , 127 , 126 , 126 , 125 , 125 , 125 , 125 , 125 , 125 , 126 , 624 | 126 , 128 , 128 , 128 , 129 , 129 , 129 , 129 , 129 , 128 , 128 , 128 , 128 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 128 , 128 , 128 , 128 , 129 , 129 , 129 , 625 | 129 , 129 , 129 , 129 , 129 , 129 , 129 , 128 , 128 , 128 , 127 , 127 , 127 , 127 , 127 , 126 , 126 , 126 , 126 , 126 , 126 , 126 , 126 , 126 , 127 , 127 , 127 , 128 , 128 , 128 , 128 , 128 , 626 | 128 , 129 , 129 , 129 , 129 , 129 , 130 , 130 , 130 , 130 , 129 , 129 , 128 , 128 , 128 , 127 , 127 , 127 , 126 , 126 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 127 , 126 , 126 , 126 , 627 | 126 , 126 , 126 , 127 628 | }; 629 | 630 | 631 | -------------------------------------------------------------------------------- /examples/AccelerometerControlsSound/wavetables.h: -------------------------------------------------------------------------------- 1 | #define MAXVALUE 255 2 | #define SONGLEN 6442 3 | 4 | extern const uint8_t sabine[]; 5 | extern const uint8_t piano[]; 6 | 7 | -------------------------------------------------------------------------------- /examples/AudioBufferPlayer_sineWave/AudioBufferPlayer_sineWave.ino: -------------------------------------------------------------------------------- 1 | /* 2 | playing a sine wave with different volumes 3 | 4 | Framework used: Arduino compatiple STM32GENERIC 5 | Hardware: STM32F4 Discovery 6 | 7 | ************************************************************************************* 8 | 9 | This program is free software; you can redistribute it and/or modify 10 | it under the terms of the GNU General Public License as published by 11 | the Free Software Foundation; either version 2 of the License, or 12 | (at your option) any later version. 13 | 14 | ********************************** list of outhors ********************************** 15 | v0.1 2.Mai.2017 C. ChrisMicro initial version 16 | 17 | It is mandatory to keep the list of authors in this code. 18 | Please add your name if you improve/extend something 19 | 2017 ChrisMicro 20 | ************************************************************************************* 21 | */ 22 | 23 | #include "BufferPlayer.h" 24 | 25 | #define SAMPLINGFREQUENCY 16000 26 | #define WAVEBUFFERLENGTH SAMPLINGFREQUENCY * 1 // 1 seconds 27 | 28 | BufferPlayer Player; 29 | 30 | int16_t wave_i16[WAVEBUFFERLENGTH]; 31 | 32 | void setup() 33 | { 34 | Player.begin( SAMPLINGFREQUENCY ); 35 | 36 | float frequency = 440; 37 | float amplitude = 100; 38 | // calculate buffer values for test tone 39 | for ( int n = 0; n < WAVEBUFFERLENGTH; n++ ) wave_i16[n] = ( sin( 2 * PI * frequency / SAMPLINGFREQUENCY * n )) * 0x7FFF; 40 | } 41 | 42 | void loop() 43 | { 44 | Player.setVolume(100); 45 | Player.playBuffer(wave_i16 , WAVEBUFFERLENGTH); 46 | 47 | Player.setVolume(50); 48 | Player.playBuffer(wave_i16 , WAVEBUFFERLENGTH); 49 | 50 | } 51 | -------------------------------------------------------------------------------- /examples/AudioBufferPlayer_sineWave/BufferPlayer.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Blocking buffer player using the 4 | CS43L22 codec class for Arduino STM32GENERIC 5 | 6 | ************************************************************************************* 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | (at your option) any later version. 12 | 13 | ********************************** list of outhors ********************************** 14 | v0.1 2.Mai.2017 C. ChrisMicro initial version 15 | 16 | It is mandatory to keep the list of authors in this code. 17 | Please add your name if you improve/extend something 18 | 2017 ChrisMicro 19 | ************************************************************************************* 20 | */ 21 | #include "Arduino.h" 22 | #include "BufferPlayer.h" 23 | #include "CS43L22_STM32.h" 24 | #include "I2S.h" 25 | 26 | I2SClass I2S(SPI3, PC12 /*sd*/ , PA4 /*ws*/, PC10 /*ck*/, PC7/* MCK*/); // setup for STM32F4 Discovery, check your board schematic 27 | 28 | CS43L22_STM32 Codec; 29 | 30 | #define AUDIOCODEC_CS PD4 31 | 32 | BufferPlayer::BufferPlayer() 33 | { 34 | 35 | }; 36 | 37 | void BufferPlayer::begin(uint32_t samplingFrequency_Hz) 38 | { 39 | SamplingFrequency=samplingFrequency_Hz; 40 | 41 | pinMode(AUDIOCODEC_CS, OUTPUT); // the chip select pin of the codec needs to be enabled 42 | 43 | // digitalWrite(AUDIOCODEC_CS, HIGH); 44 | // start I2S 45 | // I2S will also produce MCK for the codec of aroung 12Mhz 46 | // without MCK the CS43L22 is not working 47 | I2S.begin(I2S_PHILIPS_MODE, samplingFrequency_Hz, 16); 48 | 49 | digitalWrite(AUDIOCODEC_CS, HIGH); // enable codec 50 | Codec.begin(); 51 | } 52 | 53 | #define DACZEROAMPLITUDE 0x4000 54 | int Amplitude = 100; 55 | 56 | // unsigned byte buffer player 57 | void BufferPlayer::playBuffer(const uint8_t *table, uint32_t tableLength, float maxDuration_sec, float speedFactor) 58 | { 59 | uint32_t duration_ms = maxDuration_sec * 1000; 60 | float index = 0; 61 | 62 | uint32_t startTime = millis(); 63 | while (millis() - startTime < duration_ms) 64 | { 65 | if (index < tableLength) 66 | { 67 | int dacValue = DACZEROAMPLITUDE + ((int)table[(int)index] - 128) * Amplitude; 68 | I2S.write(dacValue); // left channel 69 | I2S.write(dacValue); // right channel 70 | index+=speedFactor; 71 | } else 72 | { 73 | I2S.write(DACZEROAMPLITUDE); 74 | I2S.write(DACZEROAMPLITUDE); 75 | } 76 | } 77 | } 78 | void BufferPlayer::playBuffer(const uint8_t *table, uint32_t tableLength) 79 | { 80 | float maxDuration_sec = tableLength / SamplingFrequency; 81 | float speedFactor = 1; 82 | playBuffer(table, tableLength, maxDuration_sec, speedFactor ); 83 | } 84 | 85 | // 16 bit buffer player 86 | // table values: full scale range -32768..+32767 87 | void BufferPlayer::playBuffer(int16_t *table, uint32_t tableLength, float maxDuration_sec, float speedFactor) 88 | { 89 | uint32_t duration_ms = maxDuration_sec * 1000; 90 | float index = 0; 91 | 92 | uint32_t startTime = millis(); 93 | while (millis() - startTime < duration_ms) 94 | { 95 | if (index < tableLength) 96 | { 97 | 98 | uint16_t dacValue = (int32_t ) DACZEROAMPLITUDE*2 + table[(int)index]; 99 | dacValue=dacValue>>1; // for unknown reaons the DAC goes only from 0..0x7FFF 100 | 101 | I2S.write(dacValue); // left channel 102 | I2S.write(dacValue); // right channel 103 | index += speedFactor; 104 | } else 105 | { 106 | I2S.write(DACZEROAMPLITUDE); 107 | I2S.write(DACZEROAMPLITUDE); 108 | } 109 | } 110 | 111 | } 112 | 113 | void BufferPlayer::playBuffer(int16_t *table, uint32_t tableLength) 114 | { 115 | float maxDuration_sec = tableLength / SamplingFrequency; 116 | float speedFactor = 1; 117 | playBuffer(table, tableLength, maxDuration_sec, speedFactor ); 118 | } 119 | 120 | 121 | void BufferPlayer::end() 122 | { 123 | digitalWrite(AUDIOCODEC_CS, LOW); // disable codec, enough noise, stop it !! 124 | } 125 | 126 | void BufferPlayer::setVolume(uint8_t vol) 127 | { 128 | Codec.setVolume(vol); 129 | } 130 | 131 | -------------------------------------------------------------------------------- /examples/AudioBufferPlayer_sineWave/BufferPlayer.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Blocking buffer player using the 4 | CS43L22 codec class for Arduino STM32GENERIC 5 | 6 | ************************************************************************************* 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | (at your option) any later version. 12 | 13 | ********************************** list of outhors ********************************** 14 | v0.1 2.Mai.2017 C. ChrisMicro initial version 15 | 16 | It is mandatory to keep the list of authors in this code. 17 | Please add your name if you improve/extend something 18 | 2017 ChrisMicro 19 | ************************************************************************************* 20 | */ 21 | #include 22 | 23 | typedef struct { 24 | uint8_t * signalBuffer; 25 | uint32_t signalBufferLength; 26 | } SampleBuffer_t; 27 | 28 | class BufferPlayer 29 | { 30 | public: 31 | BufferPlayer(); 32 | void begin(uint32_t samplingFrequency_Hz); 33 | void playBuffer(const uint8_t *table, uint32_t tableLength, float duration_sec, float speedFactor); 34 | void playBuffer(const uint8_t *table, uint32_t tableLength); 35 | void playBuffer(int16_t *table, uint32_t tableLength, float duration_sec, float speedFactor); 36 | void playBuffer(int16_t *table, uint32_t tableLength); 37 | void end(); 38 | void setVolume(uint8_t vol); 39 | 40 | private: 41 | uint32_t SamplingFrequency; 42 | 43 | }; 44 | -------------------------------------------------------------------------------- /examples/AudioBufferPlayer_sineWave/CS43L22_STM32.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | CS43L22 codec class for Arduino STM32GENERIC 4 | 5 | ************************************************************************************* 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | ********************************** list of outhors ********************************** 13 | v0.1 2.Mai.2017 C. ChrisMicro initial version 14 | 15 | It is mandatory to keep the list of authors in this code. 16 | Please add your name if you improve/extend something 17 | 2017 ChrisMicro 18 | ************************************************************************************* 19 | */ 20 | 21 | // The CS43L22 is a Low Power, Stereo DAC w/Headphone & Speaker Amps 22 | // 23 | // related links: 24 | // data sheet CS43L22: https://d3uzseaevmutz1.cloudfront.net/pubs/proDatasheet/CS43L22_F2.pdf 25 | // https://github.com/abhishek-kakkar/STM32F4Player/blob/master/STM32F4_Discovery_demo/codec_CS43L22.c 26 | // https://www.mikrocontroller.net/topic/413574#4814689 27 | 28 | #include "CS43L22_STM32.h" 29 | 30 | CS43L22_STM32::CS43L22_STM32() 31 | { 32 | // before calling this class 33 | // remember for correct working codec: 34 | // 1. enable code clock ( usually done by I2S driver ) 35 | // enable codec chip select line 36 | } 37 | 38 | #define CODEC_ADDR 0x4A // i2c address ( 2*0x4A=0x94) 39 | 40 | void codec_writeReg(unsigned char reg, unsigned char data) 41 | { 42 | uint8_t error; 43 | Wire.beginTransmission(CODEC_ADDR); 44 | Wire.write(reg); 45 | Wire.write(data); 46 | error = Wire.endTransmission(); 47 | } 48 | 49 | // codec setup from 50 | // https://github.com/mubase/STM32F4-Arduino-core/blob/master/cores/maple/libmaple/stm32f4codec/codec.h 51 | // TBD: to be refactured 52 | void codec_reg_setup(void) 53 | { 54 | Wire.begin(); 55 | 56 | codec_writeReg(0x02, 0x01); // power save registers -> all on 57 | codec_writeReg(0x00, 0x99); 58 | codec_writeReg(0x47, 0x80); //inits 59 | codec_writeReg(0x0d, 0x03); // playback ctrl 60 | codec_writeReg(0x32, (1 << 7)); // vol 61 | codec_writeReg(0x32, (0 << 7)); // vol 62 | codec_writeReg(0x00, 0x00); // inits 63 | codec_writeReg(0x04, 0xaf); // power ctrl 64 | codec_writeReg(0x0d, 0x70); 65 | codec_writeReg(0x05, 0x81); // clocking: auto speed is determined by the MCLK/LRCK ratio. 66 | codec_writeReg(0x06, 0x07); // DAC interface format, I²S 16 bit 67 | codec_writeReg(0x0a, 0x00); 68 | codec_writeReg(0x27, 0x00); 69 | codec_writeReg(0x80, 0x0a); // both channels on 70 | codec_writeReg(0x1f, 0x0f); 71 | codec_writeReg(0x02, 0x9e); 72 | 73 | } 74 | 75 | void CS43L22_STM32::begin() 76 | { 77 | Wire.begin(); 78 | codec_reg_setup(); 79 | } 80 | 81 | void CS43L22_STM32::setVolume(uint8_t volumeValue) 82 | { 83 | int8_t vol; 84 | if(volumeValue>100)volumeValue=100; 85 | //strange mapping, see datasheet 86 | //vol=25; // -102 dB 87 | //vol=24 // +12dB 88 | 89 | vol=-90+(float)80*volumeValue/100; 90 | 91 | codec_writeReg(0x20, vol); 92 | codec_writeReg(0x21, vol); 93 | } 94 | -------------------------------------------------------------------------------- /examples/AudioBufferPlayer_sineWave/CS43L22_STM32.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | CS43L22 codec class for Arduino STM32GENERIC 4 | 5 | 6 | ************************************************************************************* 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | (at your option) any later version. 12 | 13 | ********************************** list of outhors ********************************** 14 | v0.1 2.Mai.2017 C. ChrisMicro initial version 15 | 16 | It is mandatory to keep the list of authors in this code. 17 | Please add your name if you improve/extend something 18 | 2017 ChrisMicro 19 | ************************************************************************************* 20 | */ 21 | #include 22 | 23 | class CS43L22_STM32 24 | { 25 | public: 26 | CS43L22_STM32(); 27 | void begin(); 28 | void setVolume(uint8_t vol); 29 | }; 30 | 31 | -------------------------------------------------------------------------------- /examples/LIS3DSx_Accelerometer/LIS3DSx.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | MEMS driver 3 | 4 | accelerometer: LIS302DL or LIS3DSH 5 | 6 | MEMS digital output motion sensor: 7 | ultra-low-power high-performance three-axis "nano" accelerometer 8 | 9 | ************************************************************************************* 10 | 11 | This program is free software; you can redistribute it and/or modify 12 | it under the terms of the GNU General Public License as published by 13 | the Free Software Foundation; either version 2 of the License, or 14 | (at your option) any later version. 15 | 16 | ********************************** list of outhors ********************************** 17 | v0.1 2.Mai.2017 C. ChrisMicro initial version 18 | 19 | It is mandatory to keep the list of authors in this code. 20 | Please add your name if you improve/extend something 21 | 2017 ChrisMicro 22 | ************************************************************************************* 23 | */ 24 | #include 25 | #include 26 | 27 | #include "LIS3DSx.h" 28 | 29 | #define SERIALINTERFACE SerialUSB 30 | 31 | #define CS PE3 32 | 33 | void accelerometer_SPI_select() 34 | { 35 | digitalWrite(CS, LOW); // 0=SPI communication mode, 1=SPI IDLE MODE 36 | delayMicroseconds(50); 37 | } 38 | 39 | void accelerometer_SPI_release() 40 | { 41 | digitalWrite(CS, HIGH); 42 | delayMicroseconds(50); 43 | } 44 | 45 | #define READREGISTERCOMMAND 0x80 46 | uint8_t spiRead(uint8_t registerAddress) 47 | { 48 | uint8_t r; 49 | 50 | accelerometer_SPI_select(); 51 | SPI.transfer( registerAddress | READREGISTERCOMMAND ); 52 | delayMicroseconds(500); 53 | r = SPI.transfer(0); // dummy write, data read 54 | delayMicroseconds(500); 55 | accelerometer_SPI_release(); 56 | 57 | return r; 58 | } 59 | 60 | void LIS3DSx::begin() 61 | { 62 | // configure SPI 63 | pinMode(CS, OUTPUT); 64 | 65 | SPI.begin(); 66 | SPI.setDataMode(SPI_MODE3); 67 | SPI.setBitOrder(MSBFIRST); 68 | 69 | // configure sensor 70 | accelerometer_SPI_select(); 71 | SPI.transfer(0x20); // CTRL4 ODR register 72 | delay(10); 73 | SPI.transfer(0x47); // 25 Hz update, enable x,y,z 74 | accelerometer_SPI_release(); 75 | } 76 | 77 | int16_t LIS3DSx::getX() 78 | { 79 | int32_t a,aa; 80 | int16_t ag; 81 | 82 | a= spiRead ( 0x28 ); 83 | aa = spiRead( 0x29 ); 84 | 85 | return (a + (aa << 8)); 86 | } 87 | 88 | int16_t LIS3DSx::getY() 89 | { 90 | int32_t a,aa; 91 | int16_t ag; 92 | 93 | a= spiRead ( 0x2A ); 94 | aa = spiRead( 0x2B ); 95 | 96 | return (a + (aa << 8)); 97 | 98 | } 99 | 100 | int16_t LIS3DSx::getZ() 101 | { 102 | int32_t a,aa; 103 | int16_t ag; 104 | 105 | a= spiRead ( 0x2C ); 106 | aa = spiRead( 0x2D ); 107 | 108 | return (a + (aa << 8)); 109 | } 110 | 111 | #define ONE_G 16384 112 | 113 | float LIS3DSx::getX_g() 114 | { 115 | return getX()/(float)ONE_G; 116 | } 117 | 118 | float LIS3DSx::getY_g() 119 | { 120 | return getY()/(float)ONE_G; 121 | } 122 | 123 | float LIS3DSx::getZ_g() 124 | { 125 | return getZ()/(float)ONE_G; 126 | } 127 | 128 | float LIS3DSx::absolute_g() 129 | { 130 | float g; 131 | g=sqrt(getX_g()*getX_g()+getY_g()*getY_g()+getZ_g()*getZ_g()); 132 | return g; 133 | } 134 | 135 | 136 | uint8_t LIS3DSx::getChipVersion() 137 | { 138 | uint8_t whoAmI=spiRead(0x0F); 139 | return whoAmI; 140 | } 141 | 142 | 143 | -------------------------------------------------------------------------------- /examples/LIS3DSx_Accelerometer/LIS3DSx.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | class LIS3DSx 4 | { 5 | public: 6 | void begin(); 7 | uint8_t getChipVersion(); 8 | int16_t getX(); 9 | int16_t getY(); 10 | int16_t getZ(); 11 | float getX_g(); 12 | float getY_g(); 13 | float getZ_g(); 14 | float absolute_g(); 15 | }; 16 | 17 | -------------------------------------------------------------------------------- /examples/LIS3DSx_Accelerometer/LIS3DSx_Accelerometer.ino: -------------------------------------------------------------------------------- 1 | /* 2 | read accelaration sensor and print serial 3 | 4 | Framework used: Arduino compatiple STM32GENERIC 5 | Hardware: STM32F4 Discovery 6 | accelerometer: LIS302DL or LIS3DSH 7 | ( depends on the verison of the STM32F4 Discovery board ) 8 | 9 | ************************************************************************************* 10 | 11 | This program is free software; you can redistribute it and/or modify 12 | it under the terms of the GNU General Public License as published by 13 | the Free Software Foundation; either version 2 of the License, or 14 | (at your option) any later version. 15 | 16 | ********************************** list of outhors ********************************** 17 | v0.1 2.Mai.2017 C. ChrisMicro initial version 18 | 19 | It is mandatory to keep the list of authors in this code. 20 | Please add your name if you improve/extend something 21 | 2017 ChrisMicro 22 | ************************************************************************************* 23 | */ 24 | 25 | #include "LIS3DSx.h" 26 | 27 | #define SERIALINTERFACE SerialUSB 28 | 29 | LIS3DSx Accelerometer; 30 | 31 | void setup() 32 | { 33 | SERIALINTERFACE.begin(9600); 34 | 35 | delay(1000); 36 | 37 | SERIALINTERFACE.println("\n accelerometer"); 38 | 39 | // print sensor informatiion 40 | Accelerometer.begin(); 41 | 42 | uint8_t whoAmI = Accelerometer.getChipVersion(); 43 | SERIALINTERFACE.print("WHO AM I register: "); SERIALINTERFACE.print( whoAmI , HEX); 44 | 45 | if (whoAmI == 0x3B) SERIALINTERFACE.println(" LIS3DSL sensor detected "); 46 | if (whoAmI == 0x3F) SERIALINTERFACE.println(" LIS3DSH sensor detected "); 47 | 48 | SERIALINTERFACE.println(""); 49 | } 50 | 51 | void loop() 52 | { 53 | SERIALINTERFACE.print(" X: "); SERIALINTERFACE.print ( Accelerometer.getX_g() ); 54 | SERIALINTERFACE.print(" Y: "); SERIALINTERFACE.print ( Accelerometer.getY_g() ); 55 | SERIALINTERFACE.print(" Z: "); SERIALINTERFACE.println( Accelerometer.getZ_g() ); 56 | 57 | SERIALINTERFACE.print(" abosolute acceleration: "); SERIALINTERFACE.println( Accelerometer.absolute_g() ); 58 | 59 | delay(500); 60 | 61 | } 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /examples/MicrophonePlayBack/BufferPlayer.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Blocking buffer player using the 4 | CS43L22 codec class for Arduino STM32GENERIC 5 | 6 | ************************************************************************************* 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | (at your option) any later version. 12 | 13 | ********************************** list of outhors ********************************** 14 | v0.1 2.Mai.2017 C. ChrisMicro initial version 15 | 16 | It is mandatory to keep the list of authors in this code. 17 | Please add your name if you improve/extend something 18 | 2017 ChrisMicro 19 | ************************************************************************************* 20 | */ 21 | #include "Arduino.h" 22 | #include "BufferPlayer.h" 23 | #include "CS43L22_STM32.h" 24 | #include "I2S.h" 25 | 26 | I2SClass I2S(SPI3, PC12 /*sd*/ , PA4 /*ws*/, PC10 /*ck*/, PC7/* MCK*/); // setup for STM32F4 Discovery, check your board schematic 27 | 28 | CS43L22_STM32 Codec; 29 | 30 | #define AUDIOCODEC_CS PD4 31 | 32 | BufferPlayer::BufferPlayer() 33 | { 34 | 35 | }; 36 | 37 | void BufferPlayer::begin(uint32_t samplingFrequency_Hz) 38 | { 39 | SamplingFrequency=samplingFrequency_Hz; 40 | 41 | pinMode(AUDIOCODEC_CS, OUTPUT); // the chip select pin of the codec needs to be enabled 42 | 43 | // digitalWrite(AUDIOCODEC_CS, HIGH); 44 | // start I2S 45 | // I2S will also produce MCK for the codec of aroung 12Mhz 46 | // without MCK the CS43L22 is not working 47 | I2S.begin(I2S_PHILIPS_MODE, samplingFrequency_Hz, 16); 48 | 49 | digitalWrite(AUDIOCODEC_CS, HIGH); // enable codec 50 | Codec.begin(); 51 | } 52 | 53 | #define DACZEROAMPLITUDE 0x4000 54 | int Amplitude = 100; 55 | 56 | // unsigned byte buffer player 57 | void BufferPlayer::playBuffer(const uint8_t *table, uint32_t tableLength, float maxDuration_sec, float speedFactor) 58 | { 59 | uint32_t duration_ms = maxDuration_sec * 1000; 60 | float index = 0; 61 | 62 | uint32_t startTime = millis(); 63 | while (millis() - startTime < duration_ms) 64 | { 65 | if (index < tableLength) 66 | { 67 | int dacValue = DACZEROAMPLITUDE + ((int)table[(int)index] - 128) * Amplitude; 68 | I2S.write(dacValue); // left channel 69 | I2S.write(dacValue); // right channel 70 | index+=speedFactor; 71 | } else 72 | { 73 | I2S.write(DACZEROAMPLITUDE); 74 | I2S.write(DACZEROAMPLITUDE); 75 | } 76 | } 77 | } 78 | void BufferPlayer::playBuffer(const uint8_t *table, uint32_t tableLength) 79 | { 80 | float maxDuration_sec = tableLength / SamplingFrequency; 81 | float speedFactor = 1; 82 | playBuffer(table, tableLength, maxDuration_sec, speedFactor ); 83 | } 84 | 85 | // 16 bit buffer player 86 | // table values: full scale range -32768..+32767 87 | void BufferPlayer::playBuffer(int16_t *table, uint32_t tableLength, float maxDuration_sec, float speedFactor) 88 | { 89 | uint32_t duration_ms = maxDuration_sec * 1000; 90 | float index = 0; 91 | 92 | uint32_t startTime = millis(); 93 | while (millis() - startTime < duration_ms) 94 | { 95 | if (index < tableLength) 96 | { 97 | 98 | uint16_t dacValue = (int32_t ) DACZEROAMPLITUDE*2 + table[(int)index]; 99 | dacValue=dacValue>>1; // for unknown reaons the DAC goes only from 0..0x7FFF 100 | 101 | I2S.write(dacValue); // left channel 102 | I2S.write(dacValue); // right channel 103 | index += speedFactor; 104 | } else 105 | { 106 | I2S.write(DACZEROAMPLITUDE); 107 | I2S.write(DACZEROAMPLITUDE); 108 | } 109 | } 110 | 111 | } 112 | 113 | void BufferPlayer::playBuffer(int16_t *table, uint32_t tableLength) 114 | { 115 | float maxDuration_sec = tableLength / SamplingFrequency; 116 | float speedFactor = 1; 117 | playBuffer(table, tableLength, maxDuration_sec, speedFactor ); 118 | } 119 | 120 | 121 | void BufferPlayer::end() 122 | { 123 | digitalWrite(AUDIOCODEC_CS, LOW); // disable codec, enough noise, stop it !! 124 | } 125 | 126 | void BufferPlayer::setVolume(uint8_t vol) 127 | { 128 | Codec.setVolume(vol); 129 | } 130 | 131 | -------------------------------------------------------------------------------- /examples/MicrophonePlayBack/BufferPlayer.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Blocking buffer player using the 4 | CS43L22 codec class for Arduino STM32GENERIC 5 | 6 | ************************************************************************************* 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | (at your option) any later version. 12 | 13 | ********************************** list of outhors ********************************** 14 | v0.1 2.Mai.2017 C. ChrisMicro initial version 15 | 16 | It is mandatory to keep the list of authors in this code. 17 | Please add your name if you improve/extend something 18 | 2017 ChrisMicro 19 | ************************************************************************************* 20 | */ 21 | #include 22 | 23 | typedef struct { 24 | uint8_t * signalBuffer; 25 | uint32_t signalBufferLength; 26 | } SampleBuffer_t; 27 | 28 | class BufferPlayer 29 | { 30 | public: 31 | BufferPlayer(); 32 | void begin(uint32_t samplingFrequency_Hz); 33 | void playBuffer(const uint8_t *table, uint32_t tableLength, float duration_sec, float speedFactor); 34 | void playBuffer(const uint8_t *table, uint32_t tableLength); 35 | void playBuffer(int16_t *table, uint32_t tableLength, float duration_sec, float speedFactor); 36 | void playBuffer(int16_t *table, uint32_t tableLength); 37 | void end(); 38 | void setVolume(uint8_t vol); 39 | 40 | private: 41 | uint32_t SamplingFrequency; 42 | 43 | }; 44 | -------------------------------------------------------------------------------- /examples/MicrophonePlayBack/CS43L22_STM32.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | CS43L22 codec class for Arduino STM32GENERIC 4 | 5 | ************************************************************************************* 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | ********************************** list of outhors ********************************** 13 | v0.1 2.Mai.2017 C. ChrisMicro initial version 14 | 15 | It is mandatory to keep the list of authors in this code. 16 | Please add your name if you improve/extend something 17 | 2017 ChrisMicro 18 | ************************************************************************************* 19 | */ 20 | 21 | // The CS43L22 is a Low Power, Stereo DAC w/Headphone & Speaker Amps 22 | // 23 | // related links: 24 | // data sheet CS43L22: https://d3uzseaevmutz1.cloudfront.net/pubs/proDatasheet/CS43L22_F2.pdf 25 | // https://github.com/abhishek-kakkar/STM32F4Player/blob/master/STM32F4_Discovery_demo/codec_CS43L22.c 26 | // https://www.mikrocontroller.net/topic/413574#4814689 27 | 28 | #include "CS43L22_STM32.h" 29 | 30 | CS43L22_STM32::CS43L22_STM32() 31 | { 32 | // before calling this class 33 | // remember for correct working codec: 34 | // 1. enable code clock ( usually done by I2S driver ) 35 | // enable codec chip select line 36 | } 37 | 38 | #define CODEC_ADDR 0x4A // i2c address ( 2*0x4A=0x94) 39 | 40 | void codec_writeReg(unsigned char reg, unsigned char data) 41 | { 42 | uint8_t error; 43 | Wire.beginTransmission(CODEC_ADDR); 44 | Wire.write(reg); 45 | Wire.write(data); 46 | error = Wire.endTransmission(); 47 | } 48 | 49 | // codec setup from 50 | // https://github.com/mubase/STM32F4-Arduino-core/blob/master/cores/maple/libmaple/stm32f4codec/codec.h 51 | // TBD: to be refactured 52 | void codec_reg_setup(void) 53 | { 54 | Wire.begin(); 55 | 56 | codec_writeReg(0x02, 0x01); // power save registers -> all on 57 | codec_writeReg(0x00, 0x99); 58 | codec_writeReg(0x47, 0x80); //inits 59 | codec_writeReg(0x0d, 0x03); // playback ctrl 60 | codec_writeReg(0x32, (1 << 7)); // vol 61 | codec_writeReg(0x32, (0 << 7)); // vol 62 | codec_writeReg(0x00, 0x00); // inits 63 | codec_writeReg(0x04, 0xaf); // power ctrl 64 | codec_writeReg(0x0d, 0x70); 65 | codec_writeReg(0x05, 0x81); // clocking: auto speed is determined by the MCLK/LRCK ratio. 66 | codec_writeReg(0x06, 0x07); // DAC interface format, I²S 16 bit 67 | codec_writeReg(0x0a, 0x00); 68 | codec_writeReg(0x27, 0x00); 69 | codec_writeReg(0x80, 0x0a); // both channels on 70 | codec_writeReg(0x1f, 0x0f); 71 | codec_writeReg(0x02, 0x9e); 72 | 73 | } 74 | 75 | void CS43L22_STM32::begin() 76 | { 77 | Wire.begin(); 78 | codec_reg_setup(); 79 | } 80 | 81 | void CS43L22_STM32::setVolume(uint8_t volumeValue) 82 | { 83 | int8_t vol; 84 | if(volumeValue>100)volumeValue=100; 85 | //strange mapping, see datasheet 86 | //vol=25; // -102 dB 87 | //vol=24 // +12dB 88 | 89 | vol=-90+(float)80*volumeValue/100; 90 | 91 | codec_writeReg(0x20, vol); 92 | codec_writeReg(0x21, vol); 93 | } 94 | -------------------------------------------------------------------------------- /examples/MicrophonePlayBack/CS43L22_STM32.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | CS43L22 codec class for Arduino STM32GENERIC 4 | 5 | 6 | ************************************************************************************* 7 | 8 | This program is free software; you can redistribute it and/or modify 9 | it under the terms of the GNU General Public License as published by 10 | the Free Software Foundation; either version 2 of the License, or 11 | (at your option) any later version. 12 | 13 | ********************************** list of outhors ********************************** 14 | v0.1 2.Mai.2017 C. ChrisMicro initial version 15 | 16 | It is mandatory to keep the list of authors in this code. 17 | Please add your name if you improve/extend something 18 | 2017 ChrisMicro 19 | ************************************************************************************* 20 | */ 21 | #include 22 | 23 | class CS43L22_STM32 24 | { 25 | public: 26 | CS43L22_STM32(); 27 | void begin(); 28 | void setVolume(uint8_t vol); 29 | }; 30 | 31 | -------------------------------------------------------------------------------- /examples/MicrophonePlayBack/Microphone.cpp: -------------------------------------------------------------------------------- 1 | // https://www.theunterminatedstring.com/probing-pdm/ 2 | /* 3 | 4 | MP45DT02 ST-MEMS audio sensor omni-directional digital microphone 5 | 6 | Bitbanging driver 7 | 8 | ************************************************************************************* 9 | 10 | This program is free software; you can redistribute it and/or modify 11 | it under the terms of the GNU General Public License as published by 12 | the Free Software Foundation; either version 2 of the License, or 13 | (at your option) any later version. 14 | 15 | ********************************** list of outhors ********************************** 16 | v0.1 3.Mai.2017 C. ChrisMicro initial, crude implementation. Better filters needed 17 | 18 | It is mandatory to keep the list of authors in this code. 19 | Please add your name if you improve/extend something 20 | 2017 ChrisMicro 21 | ************************************************************************************* 22 | */ 23 | 24 | #include "Arduino.h" 25 | #include "Microphone.h" 26 | 27 | #define MICROPHON_CLK_INPUT PB10 28 | #define MICROPHON_PDMDATA_OUTPUT PC3 29 | 30 | Microphone::Microphone() 31 | { 32 | 33 | }; 34 | 35 | int32_t OldValue; 36 | 37 | uint32_t PDM_BitsPerSample; 38 | 39 | #define AFACTOR 0.9 40 | 41 | #define TESTBUFFERLENGTH 10000 42 | 43 | void multiplyFactor(int16_t *x, uint32_t signalLength, float factor) 44 | { 45 | for (int i = 4; i < signalLength; i++) 46 | { 47 | x[i] = x[i] * factor; 48 | } 49 | } 50 | 51 | void Microphone::record(int16_t *sampleBuffer, uint32_t bufferLength) 52 | { 53 | int32_t FloatingMeanBuffer[256] = {0}; 54 | int32_t n, k; 55 | int32_t sample = 0; 56 | uint32_t startTime; 57 | float meanvalue; 58 | int32_t value; 59 | int32_t amplitude = 10; 60 | 61 | int32_t average = 0; 62 | uint32_t index = 0; 63 | 64 | meanvalue = 0; 65 | value = 0; 66 | 67 | startTime = micros(); 68 | 69 | // start sampling signal 70 | for (n = 0; n < bufferLength; n++) 71 | { 72 | 73 | for (k = 0; k < PDM_BitsPerSample; k++) 74 | { 75 | digitalWrite(MICROPHON_CLK_INPUT, LOW); 76 | if (digitalRead(MICROPHON_PDMDATA_OUTPUT) == 0) value++; 77 | else value--; 78 | // CIC 79 | average += value; 80 | average -= FloatingMeanBuffer[index]; 81 | FloatingMeanBuffer[index] = value; 82 | index++; 83 | index &= 0x3F; 84 | 85 | digitalWrite(MICROPHON_CLK_INPUT, HIGH); 86 | } 87 | // high pass 88 | //sample = value - OldValue; 89 | //OldValue = value; 90 | 91 | meanvalue = AFACTOR * meanvalue + (1 - AFACTOR) * value; 92 | sample = value - meanvalue; 93 | 94 | sampleBuffer[n] = sample; 95 | } 96 | 97 | uint32_t duration_us = micros() - startTime; 98 | 99 | SamplingFrequency = bufferLength / ( (float) duration_us / 1e6 ); 100 | 101 | multiplyFactor(sampleBuffer , bufferLength, 20); 102 | } 103 | 104 | 105 | void Microphone::begin(uint32_t samplingFrequency_Hz) 106 | { 107 | pinMode( MICROPHON_CLK_INPUT, OUTPUT ); 108 | pinMode( MICROPHON_PDMDATA_OUTPUT, INPUT ); 109 | 110 | OldValue = 0; 111 | SamplingFrequency = 0; 112 | PDM_BitsPerSample = 250; 113 | 114 | int16_t testBuffer[TESTBUFFERLENGTH]; 115 | 116 | record(testBuffer, TESTBUFFERLENGTH ); 117 | 118 | float correctionFactor = SamplingFrequency / samplingFrequency_Hz; 119 | PDM_BitsPerSample = PDM_BitsPerSample * correctionFactor; 120 | } 121 | 122 | uint32_t Microphone::getSamplingFrequency() 123 | { 124 | return SamplingFrequency; 125 | } 126 | 127 | 128 | 129 | 130 | -------------------------------------------------------------------------------- /examples/MicrophonePlayBack/Microphone.h: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MP45DT02 ST-MEMS audio sensor omni-directional digital microphone 4 | 5 | Bitbanging driver 6 | 7 | ************************************************************************************* 8 | 9 | This program is free software; you can redistribute it and/or modify 10 | it under the terms of the GNU General Public License as published by 11 | the Free Software Foundation; either version 2 of the License, or 12 | (at your option) any later version. 13 | 14 | ********************************** list of outhors ********************************** 15 | v0.1 3.Mai.2017 C. ChrisMicro initial, crued implementation. Better filters needed 16 | 17 | It is mandatory to keep the list of authors in this code. 18 | Please add your name if you improve/extend something 19 | 2017 ChrisMicro 20 | ************************************************************************************* 21 | */ 22 | #include 23 | 24 | class Microphone 25 | { 26 | public: 27 | Microphone(); 28 | void begin(uint32_t samplingFrequency_Hz); 29 | void record(int16_t *sampleBuffer, uint32_t bufferLength); 30 | uint32_t getSamplingFrequency(); 31 | 32 | private: 33 | float SamplingFrequency; 34 | 35 | }; 36 | -------------------------------------------------------------------------------- /examples/MicrophonePlayBack/MicrophonePlayBack.ino: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | MP45DT02 ST-MEMS audio sensor omni-directional digital microphone 4 | 5 | Framework used: Arduino compatiple STM32GENERIC 6 | Hardware: STM32F4 Discovery 7 | codec: CS43L22 Audio DAC 8 | accelerometer: LIS302DL or LIS3DSH 9 | ( depends on the verison of the STM32F4 Discovery board ) 10 | MP45DT02 ST-MEMS audio sensor omni-directional digital microphone 11 | 12 | Remark: very preliminary version, 13 | microphone class to be reworked for better sound quality 14 | 15 | ************************************************************************************* 16 | 17 | This program is free software; you can redistribute it and/or modify 18 | it under the terms of the GNU General Public License as published by 19 | the Free Software Foundation; either version 2 of the License, or 20 | (at your option) any later version. 21 | 22 | ********************************** list of outhors ********************************** 23 | v0.1 3.Mai.2017 C. ChrisMicro initial, crued implementation. Better filters needed 24 | 25 | It is mandatory to keep the list of authors in this code. 26 | Please add your name if you improve/extend something 27 | 2017 ChrisMicro 28 | ************************************************************************************* 29 | */ 30 | 31 | #include "Microphone.h" 32 | #include "BufferPlayer.h" 33 | 34 | #define SAMPLINGFREQUENCY 16000 35 | #define WAVEBUFFERLENGTH SAMPLINGFREQUENCY * 1 // 1 seconds 36 | 37 | Microphone Mic; 38 | BufferPlayer Speaker; 39 | 40 | int16_t wave_i16[WAVEBUFFERLENGTH]={0}; 41 | 42 | void setup() 43 | { 44 | pinMode(LED_BLUE, OUTPUT); 45 | pinMode(LED_GREEN, OUTPUT); 46 | 47 | pinMode(USER_BTN, INPUT); 48 | 49 | Mic.begin(SAMPLINGFREQUENCY); 50 | Speaker.begin( SAMPLINGFREQUENCY ); 51 | } 52 | 53 | void loop() 54 | { 55 | 56 | // repeat to play sound 57 | digitalWrite(LED_BLUE, HIGH); 58 | 59 | while (!digitalRead(USER_BTN)) Speaker.playBuffer(wave_i16 , WAVEBUFFERLENGTH); 60 | 61 | digitalWrite(LED_BLUE, LOW); 62 | 63 | // record sound 64 | digitalWrite(LED_GREEN, HIGH); 65 | 66 | Mic.record(wave_i16 , WAVEBUFFERLENGTH); 67 | 68 | digitalWrite(LED_GREEN, LOW); 69 | 70 | } 71 | --------------------------------------------------------------------------------