si7005 next iteration (still doesn't work)

This commit is contained in:
Edward Emelianov 2015-05-23 09:55:02 +03:00
parent 132ebb5787
commit c4dfed49d5
5 changed files with 272 additions and 179 deletions

View File

@ -140,9 +140,18 @@
static U8 addr7r = 0, addr7w = 0; static U8 addr7r = 0, addr7w = 0;
extern volatile unsigned long Global_time;
static U16 _c; static U16 _c;
#define I2C_WAIT(evt) do{for(_c = 0; _c < 16000; _c++){ \ static unsigned long wtm;
if(evt) break;} if(_c == 16000) return ret;}while(0) #define I2C_WAIT(evt, tmo) do{wtm = Global_time; \
while(Global_time-wtm<tmo) if(evt) break; \
if(!evt){ret = I2C_SR1; goto eotr;}}while(0)
/*
#define I2C_WAIT(evt) do{for(_c = 0; _c < 60000; _c++){ \
if(evt) break;} if(_c == 60000) return ret;}while(0)
*/
static U8 _d; static U8 _d;
#define I2C_LINEWAIT() do{ for(_d = 0; _d < 16; _d++){\ #define I2C_LINEWAIT() do{ for(_d = 0; _d < 16; _d++){\
@ -181,28 +190,25 @@ i2c_status i2c_7bit_send_onebyte(U8 data){
i2c_status ret = I2C_TMOUT; i2c_status ret = I2C_TMOUT;
//I2C_CR2 |= 0x80; I2C_CR2 &= ~0x80; // reset I2C //I2C_CR2 |= 0x80; I2C_CR2 &= ~0x80; // reset I2C
I2C_LINEWAIT(); I2C_LINEWAIT();
//I2C_WAIT(!(I2C_SR3 & 2)); // wait for line released
I2C_CR2 |= 1; // send START I2C_CR2 |= 1; // send START
I2C_WAIT(I2C_SR1 & 1); // wait for SB I2C_WAIT(I2C_SR1 & 1, 2); // wait for SB
I2C_DR = addr7w; I2C_DR = addr7w;
ret = I2C_NOADDR; ret = I2C_NOADDR;
I2C_WAIT((I2C_SR1 & 2) || I2C_SR2); // wait for ADDR I2C_WAIT((I2C_SR1 & 2) || I2C_SR2, 2); // wait for ADDR
if(I2C_SR2){ // NACK or other error if(I2C_SR2){ // NACK or other error
ret = I2C_NACK; ret = I2C_NACK;
goto endoftransmission; goto eotr;
} }
ret = I2C_HWPROBLEM; ret = I2C_HWPROBLEM;
if(!(I2C_SR3 & 4)) goto endoftransmission; // interface is in receiver mode // clear ADDR reading SR3
I2C_WAIT((I2C_SR1 & 0x80) || I2C_SR2); // wait for TXE if(!(I2C_SR3 & 4)) goto eotr; // interface is in receiver mode
if(I2C_SR2){ I2C_WAIT(I2C_SR1 & 0x80, 2); // wait for TXE
ret = I2C_NACK;
goto endoftransmission;
}
I2C_DR = data; // send data I2C_DR = data; // send data
I2C_WAIT((I2C_SR1 & 0x84 == 0x84) || I2C_SR2); // wait for TXE & BTF I2C_WAIT(((I2C_SR1 & 0x84) == 0x84) || I2C_SR2, 15); // wait for TXE & BTF
//I2C_WAIT((I2C_SR1 & 4) || I2C_SR2); // wait for TXE & BTF
if(!I2C_SR2) ret = I2C_OK; if(!I2C_SR2) ret = I2C_OK;
else ret = I2C_NACK; else ret = I2C_NACK;
endoftransmission: eotr:
I2C_SR2 = 0; // clear all error flagss I2C_SR2 = 0; // clear all error flagss
I2C_CR2 |= 2; // set STOP I2C_CR2 |= 2; // set STOP
while(I2C_CR2 & 2); // wait for STOP sent while(I2C_CR2 & 2); // wait for STOP sent
@ -216,32 +222,32 @@ endoftransmission:
i2c_status i2c_7bit_send(U8 *data, U8 datalen){ i2c_status i2c_7bit_send(U8 *data, U8 datalen){
i2c_status ret = I2C_TMOUT; i2c_status ret = I2C_TMOUT;
//I2C_CR2 |= 0x80; I2C_CR2 &= ~0x80; // reset I2C //I2C_CR2 |= 0x80; I2C_CR2 &= ~0x80; // reset I2C
//I2C_WAIT(!(I2C_SR3 & 2)); // wait for line released
I2C_LINEWAIT(); I2C_LINEWAIT();
I2C_CR2 |= 1; // send START I2C_CR2 |= 1; // send START
ret = I2C_TMOUT; ret = I2C_TMOUT;
I2C_WAIT(I2C_SR1 & 1); // wait for SB I2C_WAIT(I2C_SR1 & 1, 2); // wait for SB
I2C_DR = addr7w; I2C_DR = addr7w;
ret = I2C_NOADDR; ret = I2C_NOADDR;
I2C_WAIT((I2C_SR1 & 2) || I2C_SR2); // wait for ADDR I2C_WAIT((I2C_SR1 & 2) || I2C_SR2, 2); // wait for ADDR
if(I2C_SR2){ // NACK or other error if(I2C_SR2){ // NACK or other error
ret = I2C_NACK; ret = I2C_NACK;
goto endoftransmission; goto eotr;
} }
ret = I2C_HWPROBLEM; ret = I2C_HWPROBLEM;
if(!(I2C_SR3 & 4)) goto endoftransmission; // interface is in receiver mode if(!(I2C_SR3 & 4)) goto eotr; // interface is in receiver mode
while(datalen--){ while(datalen--){
I2C_WAIT((I2C_SR1 & 0x80) || I2C_SR2); // wait for TXE I2C_WAIT((I2C_SR1 & 0x80) || I2C_SR2, 2); // wait for TXE
if(I2C_SR2){ if(I2C_SR2){
ret = I2C_NACK; ret = I2C_NACK;
goto endoftransmission; goto eotr;
} }
I2C_DR = *data--; // send data I2C_DR = *data++; // send data
} }
I2C_WAIT((I2C_SR1 & 0x84 == 0x84) || I2C_SR2); // wait for TXE & BTF I2C_WAIT((I2C_SR1 & 0x84 == 0x84) || I2C_SR2, 15); // wait for TXE & BTF
//I2C_WAIT((I2C_SR1 & 0x84) || I2C_SR2);
if(!I2C_SR2) ret = I2C_OK; if(!I2C_SR2) ret = I2C_OK;
else ret = I2C_NACK; else ret = I2C_NACK;
endoftransmission: eotr:
I2C_SR2 = 0; // clear all error flags I2C_SR2 = 0; // clear all error flags
I2C_CR2 |= 2; // set STOP I2C_CR2 |= 2; // set STOP
while(I2C_CR2 & 2); // wait for STOP sent while(I2C_CR2 & 2); // wait for STOP sent
@ -256,36 +262,36 @@ endoftransmission:
i2c_status i2c_7bit_receive_onebyte(U8 *data){ i2c_status i2c_7bit_receive_onebyte(U8 *data){
i2c_status ret = I2C_TMOUT; i2c_status ret = I2C_TMOUT;
//I2C_CR2 |= 0x80; I2C_CR2 &= ~0x80; // reset I2C //I2C_CR2 |= 0x80; I2C_CR2 &= ~0x80; // reset I2C
//I2C_WAIT(!(I2C_SR3 & 2)); // wait for line released
I2C_LINEWAIT(); I2C_LINEWAIT();
I2C_CR2 |= 1; // send START I2C_CR2 |= 1; // send START
ret = I2C_TMOUT; ret = I2C_TMOUT;
I2C_WAIT(I2C_SR1 & 1); // wait for SB I2C_WAIT(I2C_SR1 & 1, 2); // wait for SB
I2C_DR = addr7r; // send address & read bit I2C_DR = addr7r; // send address & read bit
ret = I2C_NOADDR; ret = I2C_NOADDR;
I2C_WAIT((I2C_SR1 & 2) || I2C_SR2); // wait for ADDR I2C_WAIT((I2C_SR1 & 2) || I2C_SR2, 2); // wait for ADDR
if(I2C_SR2){ // NACK or other error if(I2C_SR2){ // NACK or other error
ret = I2C_NACK; ret = I2C_NACK;
goto endofreceiving; goto eotr;
} }
// clear POS|ACK // clear POS|ACK
I2C_CR2 &= ~0x0c; I2C_CR2 &= ~0x0c;
ret = I2C_HWPROBLEM; ret = I2C_HWPROBLEM;
// read again SR1, SR3 to clear ADDR // read SR3 to clear ADDR
if(!(I2C_SR1 & 2) || (I2C_SR3 & 4)) goto endofreceiving; // interface is in transmitter mode if((I2C_SR3 & 4)) goto eotr; // interface is in transmitter mode
// set STOP // set STOP
I2C_CR2 |= 2; I2C_CR2 |= 2;
// wait for RxNE // wait for RxNE
I2C_WAIT((I2C_SR1 & 0x40) || I2C_SR2); I2C_WAIT((I2C_SR1 & 0x40) || I2C_SR2, 2);
if(I2C_SR2){ if(I2C_SR2){
ret = I2C_NACK; ret = I2C_NACK;
goto endofreceiving; // error goto eotr; // error
} }
ret = I2C_OK; ret = I2C_OK;
// read data clearing RxNE // read data clearing RxNE
*data = I2C_DR; *data = I2C_DR;
endofreceiving: eotr:
I2C_SR2 = 0; // clear all error flags I2C_SR2 = 0; // clear all error flags
if(!I2C_CR2 & 2) I2C_CR2 |= 2;
while(I2C_CR2 & 2); // wait for STOP sent while(I2C_CR2 & 2); // wait for STOP sent
return ret; return ret;
} }
@ -293,39 +299,42 @@ endofreceiving:
i2c_status i2c_7bit_receive_twobyte(U8 *data){ i2c_status i2c_7bit_receive_twobyte(U8 *data){
i2c_status ret = I2C_TMOUT; i2c_status ret = I2C_TMOUT;
//I2C_CR2 |= 0x80; I2C_CR2 &= ~0x80; // reset I2C //I2C_CR2 |= 0x80; I2C_CR2 &= ~0x80; // reset I2C
//I2C_WAIT(!(I2C_SR3 & 2)); // wait for line released
I2C_LINEWAIT(); I2C_LINEWAIT();
I2C_CR2 |= 1; // send START I2C_CR2 |= 1; // send START
ret = I2C_TMOUT; ret = I2C_TMOUT;
I2C_WAIT(I2C_SR1 & 1); // wait for SB I2C_WAIT(I2C_SR1 & 1, 2); // wait for SB
I2C_DR = addr7r; // send address & read bit I2C_DR = addr7r; // send address & read bit
// set POS|ACK // set POS|ACK
I2C_CR2 |= 0x0c; I2C_CR2 |= 0x0c;
ret = I2C_NOADDR; ret = I2C_NOADDR;
I2C_WAIT((I2C_SR1 & 2) || I2C_SR2); // wait for ADDR I2C_WAIT((I2C_SR1 & 2) || I2C_SR2, 2); // wait for ADDR
if(I2C_SR2){ // NACK or other error if(I2C_SR2){ // NACK or other error
ret = I2C_NACK; ret = I2C_NACK;
goto endofreceiving; goto eotr;
} }
ret = I2C_HWPROBLEM; ret = I2C_HWPROBLEM;
// read again SR1, SR3 to clear ADDR // read SR3 to clear ADDR
if(!(I2C_SR1 & 2) || (I2C_SR3 & 4)) return 0; // interface is in transmitter mode if(I2C_SR3 & 4) goto eotr; // interface is in transmitter mode
// clear ACK // clear ACK
I2C_CR2 &= ~4; I2C_CR2 &= ~4;
// wait for BTF // wait for BTF
I2C_WAIT((I2C_SR1 & 4) || I2C_SR2); I2C_WAIT((I2C_SR1 & 4) || I2C_SR2, 15);
if(I2C_SR2){ if(I2C_SR2){
ret = I2C_NACK; ret = I2C_NACK;
goto endofreceiving; goto eotr;
} }
// patch from ERRATA
disableInterrupts();
// set STOP // set STOP
I2C_CR2 |= 2; I2C_CR2 |= 2;
ret = 1; ret = I2C_OK;
// read data // read data
data[0] = I2C_DR; data[0] = I2C_DR;
enableInterrupts();
data[1] = I2C_DR; data[1] = I2C_DR;
endofreceiving: eotr:
I2C_SR2 = 0; // clear all error flags I2C_SR2 = 0; // clear all error flags
if(!I2C_CR2 & 2) I2C_CR2 |= 2;
while(I2C_CR2 & 2); // wait for STOP sent while(I2C_CR2 & 2); // wait for STOP sent
return ret; return ret;
} }

View File

@ -32,7 +32,7 @@ typedef enum{
I2C_TMOUT, I2C_TMOUT,
I2C_NOADDR, I2C_NOADDR,
I2C_NACK, I2C_NACK,
I2C_HWPROBLEM I2C_HWPROBLEM,
} i2c_status; } i2c_status;
void i2c_setup(); void i2c_setup();

View File

@ -26,6 +26,49 @@
volatile unsigned long Global_time = 0L; // global time in ms volatile unsigned long Global_time = 0L; // global time in ms
U16 paused_val = 500; // interval between LED flashing U16 paused_val = 500; // interval between LED flashing
#if defined STM8S105
U8 unlock_EEPROM(){
// unlock memory
FLASH_DUKR = EEPROM_KEY1;
FLASH_DUKR = EEPROM_KEY2;
// check bit DUL=1 in FLASH_IAPSR
if(!(FLASH_IAPSR & 0x08))
return 0;
return 1;
}
void lock_EEPROM(){
while(!(FLASH_IAPSR & 0x04)); // wait till end
// clear DUL to lock write
FLASH_IAPSR &= ~0x08;
}
/**
* check OPT2 bit AFR6 for I2C remapping to PB4/PB5
*/
U8 opt2_default_setup(){
U8 ret = 0;
U8 val = OPT2 | 0x40;
if(OPT2 & 0x40) return 0;
disableInterrupts();
FLASH_CR2 = 0x80; // enable write OPT
FLASH_NCR2 = ~0x80;
if(!unlock_EEPROM()){ret = 1; goto out;}
if(!(FLASH_CR2 & 0x80)){ret = 3; goto out;}
// set AFR6 in OPT2 & reset in NOPT2
OPT2 = val;
NOPT2 = ~val;
lock_EEPROM();
FLASH_CR2 &= ~0x80; // disable write OPT
FLASH_NCR2 |= 0x80;
ret = 2;
out:
enableInterrupts();
return ret;
}
#endif // STM8S105
int main() { int main() {
unsigned long T = 0L, siT = 0L; unsigned long T = 0L, siT = 0L;
U8 rb; U8 rb;
@ -46,6 +89,9 @@ int main() {
PORT(LED_PORT, DDR) |= LED_PIN; PORT(LED_PORT, DDR) |= LED_PIN;
PORT(LED_PORT, CR1) |= LED_PIN; PORT(LED_PORT, CR1) |= LED_PIN;
#if defined STM8S105
opt2_default_setup();
#endif
uart_init(); uart_init();
si7005_setup(); si7005_setup();
@ -67,6 +113,7 @@ int main() {
"I\tread Si7005 device id\n" "I\tread Si7005 device id\n"
"T\tread themperature\n" "T\tread themperature\n"
"P\tread pressure\n" "P\tread pressure\n"
//"O\tread OPT"
); );
break; break;
case '+': case '+':
@ -88,6 +135,14 @@ int main() {
case 'P': case 'P':
si7005_read_P(); si7005_read_P();
break; break;
/* case 'O':
printUHEX(OPT2);
printUHEX(NOPT2);
break;
case 'W':
printUHEX(opt2_default_setup());
break;
*/
} }
} }
if(Global_time != siT){ if(Global_time != siT){

View File

@ -67,12 +67,15 @@ void si7005_read_ID(){
*/ */
void si7005_read_T(){ void si7005_read_T(){
const U8 cmd[2] = {0x03, 0x11}; const U8 cmd[2] = {0x03, 0x11};
i2c_status st = I2C_OK;
if(state != RELAX){ if(state != RELAX){
error_msg("measurements are in process"); error_msg("measurements are in process");
return; return;
} }
if(i2c_7bit_send(cmd, 2) != I2C_OK){ st = i2c_7bit_send(cmd, 2);
if(st != I2C_OK){
error_msg("can't send read sequence "); error_msg("can't send read sequence ");
printUHEX(st);UART_send_byte('\n');
return; return;
} }
state = WAITFORT; state = WAITFORT;
@ -83,12 +86,15 @@ void si7005_read_T(){
*/ */
void si7005_read_P(){ void si7005_read_P(){
const U8 cmd[2] = {0x03, 0x01}; const U8 cmd[2] = {0x03, 0x01};
i2c_status st = I2C_OK;
if(state != RELAX){ if(state != RELAX){
error_msg("measurements are in process"); error_msg("measurements are in process");
return; return;
} }
if(i2c_7bit_send(cmd, 2) != I2C_OK){ st = i2c_7bit_send(cmd, 2);
if(st != I2C_OK){
error_msg("can't send read sequence "); error_msg("can't send read sequence ");
printUHEX(st);UART_send_byte('\n');
return; return;
} }
state = WAITFORP; state = WAITFORP;

View File

@ -1,154 +1,177 @@
:2080A000808080808080808080808080808080805204AE5240F66B047B04A520274DAE520D :2080A000808080808080808080808080808080805204AE5240F66B047B04A520274DAE520D
:2080C00041F66B017B04A4804D27FDAE52417B01F7AE00011F02C6000D97C6000D4CC70015 :2080C00041F66B017B04A4804D27FDAE52417B01F7AE00011F02C6001197C600114CC7000D
:2080E0000D4F9572FB027B01F7C6000CC1000D260FC6000C4CC7000CA1082604725F000C37 :2080E000114F9572FB027B01F7C60010C10011260FC600104CC70010A1082604725F00101F
:20810000C6000DA1082604725F000D5B048080AE5342F644241B90CE001172A90001C6006F :20810000C60011A1082604725F00115B048080AE5342F644241B90CE001572A90001C60063
:1781200010A90097C6000FA9009590CF0011CF000FAE53427F8080D5 :1781200014A90097C60013A9009590CF0015CF0013AE53427F8080C5
:20813700AE5240F64824F9AE52417B03F781160390F64D2718AE5240F64824F9AE5245F655 :20813700AE5240F64824F9AE52417B03F781160390F64D2718AE5240F64824F9AE5245F655
:20815700AA08F790F6905CAE5241F720E3815202C6000DC1000C26034F20271605AE0001B4 :20815700AA08F790F6905CAE5241F720E3815202C60011C1001026034F20271605AE0001AC
:208177001F01C6000C97C6000C4CC7000C4F9572FB01F690F7C6000CA1082604725F000C1D :208177001F01C6001097C600104CC700104F9572FB01F690F7C60010A1082604725F001009
:20819700A6015B0281521C5F1F031F017B21A1042303CC82747B21A1032603CC82740D21B2 :20819700A6015B0281521C5F1F031F017B21A1042303CC82747B21A1032603CC82740D21B2
:2081B7002603CC8274961C00051F1B4F5F9772FB1B7F4CA10C25F51E1B1C000AA60AF77BEC :2081B7002603CC8274961C00051F1B4F5F9772FB1B7F4CA10C25F51E1B1C000AA60AF77BEC
:2081D70021A101270E7B21A102271C7B21A104272120301E1FF66B1A5F0F171F027B1A6BD7 :2081D70021A101270E7B21A102271C7B21A104272120301E1FF66B1A5F0F171F027B1A6BD7
:2081F700047B176B01201C161F90FE5F17031F0120111E1FE6036B16E602FE6B031F017B07 :2081F700047B176B01201C161F90FE5F17031F0120111E1FE6036B16E602FE6B031F017B07
:20821700166B04A6096B114B0A5F894B001E07891E0789CD8EF25B089F887B126B13840A43 :20821700166B04A6096B114B0A5F894B001E07891E0789CD91C35B089F887B126B13840A6F
:20823700115F417B124172FB1BAB30F74B0A5F894B001E07891E0789CD90235B081F03174E :20823700115F417B124172FB1BAB30F74B0A5F894B001E07891E0789CD92F45B081F03177B
:20825700011E0326041E0127067B11A1FF2CB87B114C5F9772FB1B89CD81455B025B1C8198 :20825700011E0326041E0127067B11A1FF2CB87B114C5F9772FB1B89CD81455B025B1C8198
:2082770052110F01965C5C1F101E101C000B7F1E16A300007B15A2007B14A2002E1416167B :2082770052110F01965C5C1F101E101C000B7F1E16A300007B15A2007B14A2002E1416167B
:2082970090504F1215974F12149517161F14A6016B01A60B6B0E4B0A5F894B001E1A891ECC :2082970090504F1215974F12149517161F14A6016B01A60B6B0E4B0A5F894B001E1A891ECC
:2082B7001A89CD8E4D5B089F0A0E5F417B0E4172FB10AB30F74B0A5F894B001E1A891E1A08 :2082B7001A89CD911E5B089F0A0E5F417B0E4172FB10AB30F74B0A5F894B001E1A891E1A34
:2082D70089CD8F6F5B081F1617147B0EA1002C034F2002A6011E1626041E1427034D26B61C :2082D70089CD92405B081F1617147B0EA1002C034F2002A6011E1626041E1427034D26B648
:2082F700887B0F6B10844D27140D0127100A0E7B0E6B0F5F7B0F9772FB10A62DF75F7B0FBE :2082F700887B0F6B10844D27140D0127100A0E7B0E6B0F5F7B0F9772FB10A62DF75F7B0FBE
:208317009772FB1089CD81455B025B1181521ACE00111F0DCE000F1F0B5F1F091F070F048E :208317009772FB1089CD81455B025B1181521ACE00151F0DCE00131F0B5F1F091F070F0486
:208337000F020F01961C000389CD81655B024D2603CC83C87B03A12D260E1E09260A1E072E :208337000F020F01961C000389CD81655B024D2603CC83C87B03A12D260E1E09260A1E072E
:208357002606A6016B0420697B03A1302403CC83EA7B03A1392303CC83EAA6016B021E099A :208357002606A6016B0420697B03A1302403CC83EA7B03A1392303CC83EAA6016B021E099A
:20837700891E09894B0A5F894B00CD90C25B081F11170F7B030F195F90977B19909572F9FD :20837700891E09894B0A5F894B00CD93935B081F11170F7B030F195F90977B19909572F929
:20839700119F1910979E190F9572A200309FA2006B149EA20017096B077B146B08AE7FFFF7 :20839700119F1910979E190F9572A200309FA2006B149EA20017096B077B146B08AE7FFFF7
:2083B70013094F12084F120724075F1F091F070F0190CE001172F20DC60010120C95C600A2 :2083B70013094F12084F120724075F1F091F070F0190CE001572F20DC60014120C95C6009A
:2083D7000F120B9790A327109EA2009FA2002403CC833B0D0126040D0226034F201A7B09AA :2083D70013120B9790A327109EA2009FA2002403CC833B0D0126040D0226034F201A7B09A6
:2083F700887B0B6B07846B050D0427051E05501F051E1D1605FFA6015B1A81AE848F89CD15 :2083F700887B0B6B07846B050D0427051E05501F051E1D1605FFA6015B1A81AE848F89CD15
:2084170081455B021E0389CD81455B024B0ACD813784817B03A40F6B037B03887B04A10ADA :2084170081455B021E0389CD81455B024B0ACD813784817B03A40F6B037B03887B04A10ADA
:20843700842406AB306B032004AB576B037B0381AE849889CD81455B027B034EA40F88CD84 :20843700842406AB306B032004AB576B037B0381AE849889CD81455B027B034EA40F88CD84
:20845700842A5B0188CD8137847B0388CD842A5B0188CD81378481AE5011F6AA20F7AE50B7 :20845700842A5B0188CD8137847B0388CD842A5B0188CD81378481AE5011F6AA20F7AE50B7
:2084770012F6AA20F7AE5242A611F7AE5243A606F7AE5245A62CF7810A4552524F523A20C9 :2084770012F6AA20F7AE5242A611F7AE5243A606F7AE5245A62CF7810A4552524F523A20C9
:048497000030780039 :048497000030780039
:02922B00000041 :0294FC0000006E
:20849B00CD88B74B40CD88F284815202725D000E270BAE86B189CD84125B0220494B11CDBB :20849B00CD89554B40CD899084815202725D0012270BAE86CC89CD84125B0220494B11CD5E
:2084BB0088FE5B016B024D2623965C89CD8BD45B026B024D2616AE86CD89CD81455B027BCD :2084BB00899C5B016B024D2623965C89CD8D985B026B024D2616AE86E889CD81455B027B4D
:2084DB000188CD8447844B0ACD8137840D022716AE86D689CD81455B027B0288CD8447848E :2084DB000188CD8447844B0ACD8137840D022716AE86F189CD81455B027B0288CD84478473
:2084FB004B0ACD8137845B02815202965CA603F79093905CA61190F7725D000E270BAE86AF :2084FB004B0ACD8137845B02815202965CA603F79093905CA61190F7725D0012270BAE86AB
:20851B00B189CD84125B02201A4B0289CD8A5C5B034D270BAE86F289CD84125B02200435DE :20851B00CC89CD84125B0220274B0289CD8B885B034D2718AE870D8889CD84125B02848825
:20853B0001000E5B02815202965CA603F79093905CA60190F7725D000E270BAE86B189CDC6 :20853B00CD8447844B0ACD8137842004350100125B02815202965CA603F79093905CA601C0
:20855B0084125B02201A4B0289CD8A5C5B034D270BAE86F289CD84125B0220043502000E95 :20855B0090F7725D0012270BAE86CC89CD84125B0220274B0289CD8B885B034D2718AE8701
:20857B005B028152081E0BFEC6000EA101274DC6000EA1022703CC8624A61062905F899060 :20857B000D8889CD84125B028488CD8447844B0ACD8137842004350200125B028152081EB9
:20859B00894B0A5F894B00CD90C25B084B104B004B004B00899089CD8F6F5B085172A200BC :20859B000BFEC60012A101274DC60012A1022703CC863EA61062905F8990894B0A5F894B63
:2085BB00F09FA2006B029EA20017076B057B026B06AE870B89CD81455B0220425454905F94 :2085BB0000CD93935B084B104B004B004B00899089CD92405B085172A200F09FA2006B0267
:2085DB008990894B645F894B00CD90C25B084B204B004B004B00899089CD8F6F5B0851729B :2085DB009EA20017076B057B026B06AE872789CD81455B0220425454905F8990894B645F46
:2085FB00A213889FA2006B029EA20017076B057B026B06AE871189CD81455B0220001E07B5 :2085FB00894B00CD93935B084B204B004B004B00899089CD92405B085172A213889FA20005
:20861B00891E0789CD82775B045B08815204725D000E2603CC86AEC6000EA102270AC60035 :20861B006B029EA20017076B057B026B06AE872D89CD81455B0220001E07891E0789CD8270
:20863B000EA1012703CC86AE4B00CD88FE5B014D2654965C89CD8BD45B024D26560D012683 :20863B00775B045B08815204725D00122603CC86C9C60012A102270AC60012A1012703CCCE
:20865B00524B01CD88FE5B016B044D2619965C5C9093899089CD8D075B02856B044D260679 :20865B0086C94B00CD899C5B014D2655961C000389CD8D985B024D26550D0326514B01CD5A
:20867B0089CD857E5B02725F000E0D042725AE871889CD81455B027B0488CD8447844B0AAF :20867B00899C5B016B044D2618965C9093899089CD8F525B02856B044D260689CD85985B67
:20869B00CD813784200DAE873089CD84125B02725F000E5B04816D6561737572656D656EEA :20869B0002725F00120D042725AE873489CD81455B027B0488CD8447844B0ACD81378420FA
:2086BB0074732061726520696E2070726F6365737300676F742049443A200063616E27742C :2086BB000DAE874C89CD84125B02725F00125B04816D6561737572656D656E7473206172F9
:2086DB0020777269746520307831312C20657272636F64653A200063616E27742073656E4D :2086DB006520696E2070726F6365737300676F742049443A200063616E2774207772697400
:2086FB006420726561642073657175656E636500502A31303D00542A3130303D0063616E30 :2086FB006520307831312C20657272636F64653A200063616E27742073656E642072656157
:20871B00277420726561642076616C75652C206572723A200063616E277420706F6C6C20F7 :20871B00642073657175656E63652000502A31303D00542A3130303D0063616E277420727E
:05873B00215244590029 :20873B006561642076616C75652C206572723A200063616E277420706F6C6C2021524459F4
:01922D000040 :01875B00001D
:0194FE00006D
:208000008200808382000000820080A0820080A1820080A2820080A3820080A4820080A57E :208000008200808382000000820080A0820080A1820080A2820080A3820080A4820080A57E
:20802000820080A6820080A78200000082000000820080A8820080A9820080AA820080AB3D :20802000820080A6820080A78200000082000000820080A8820080A9820080AA820080AB3D
:20804000820080AC820080AD820080AE820000008200000082008E4C820080AF820080B050 :20804000820080AC820080AD820080AE82000000820000008200911D820080AF820080B07C
:208060008200810E8200810F8200813682000000820000008200000082000000820000001A :208060008200810E8200810F8200813682000000820000008200000082000000820000001A
:1D808300AE000B2707724F00005A26F9AE000B2709D6922AD7000B5A26F7CC80801F :1D808300AE000F2707724F00005A26F9AE000B2709D694FBD7000F5A26F7CC808044
:03808000CC87406A :03808000CC87D9D1
:2087400052115F1F081F065F1F041F0272107F60AE50C67FAE5345A607F7AE5346A67DF779 :20875C00AE5064A6AEF7AE5064A656F7AE505FF6A50826034F2002A60181AE505FF6A5043D
:20876000AE5341A601F7AE5340A685F7AE500CF6AA04F7AE500DF6AA04F7CD846ECD849BC0 :20877C0027F8A4F7AE505FF78188AE4803F688AA406B0284A54027034F203F9BAE505BA61D
:208780009ACE001172F0081F10C6001012076B0FC6000F12066B0ECE00134F0F0A88131103 :20879C0080F7AE505CA67FF7CD875C4D2604A6012027AE505BF6482504A603201CAE48031D
:2087A00084120F7B0A120E2511CE00111308C600101207C6000F12062411CE00111F08CE5A :2087BC007B01F77B0143AE4804F7CD87767217505BAE505C799976A6029A5B018152115FB9
:2087C000000F1F06AE500AF6A804F7965C89CD81655B024D2603CC883F7B01A12B2723A1FD :2087DC001F081F065F1F031F0172107F60AE50C67FAE5345A607F7AE5346A67DF7AE53415F
:2087E0002D2737A1482710A1492747A150274DA1542744A1682648AE886389CD81455B0228 :2087FC00A601F7AE5340A685F7AE500CF6AA04F7AE500DF6AA04F7CD8785CD846ECD849B8D
:20880000203DCE00131C0064CF0013A32710232F35F40014350100132025CE00131D00645F :20881C009ACE001572F0081F0CC6001412076B0BC6001312066B0ACE00174F0F0E88130D62
:20882000CF0013A301F4241735F4001435010013200DCD84A52008CD85042003CD85411E88 :20883C0084120B7B0E120A2511CE00151308C600141207C6001312062411CE00151F08CEB1
:2088400004C30011260A1E02C3000F2603CC8781CE00111F04CE000F1F02CD8627CC8781D3 :20885C0000131F06AE500AF6A804F7961C000589CD81655B024D2603CC88DD7B05A12B27B9
:208860005B11810A50524F544F3A0A2B2F2D094C454420706572696F640A49097265616429 :20887C0023A12D2737A1482710A1492747A150274DA1542744A1682648AE890189CD814585
:2088800020536937303035206465766963652069640A540972656164207468656D7065729B :20889C005B02203DCE00171C0064CF0017A32710232F35F40018350100172025CE00171DB6
:1788A00061747572650A5009726561642070726573737572650A00FE :2088BC000064CF0017A301F4241735F4001835010017200DCD84A52008CD85042003CD85DB
:06922E000000000001F445 :2088DC004E1E03C30015260A1E01C300132603CC881DCE00151F03CE00131F01CD8641CC10
:2088B700AE5005F6AA30F7AE5007F6AA30F7AE5009F6AA30F7AE5212A608F7AE521DA609BA :2088FC00881D5B11810A50524F544F3A0A2B2F2D094C454420706572696F640A49097265AD
:2088D700F7AE521BA628F7AE521C7FAE521A7FAE5211F6AA04F772105210817B0348C700D8 :20891C00616420536937303035206465766963652069640A540972656164207468656D7010
:2088F70016AA01C70015815202725F000BAE5219F6A502272EAE5211F6AA02F7725F000A83 :19893C00657261747572650A5009726561642070726573737572650A0088
:20891700725F0009AE5211F6A502270CCE00095CCF0009A303E825ECC6000B4CC7000BA14B :0694FF000000000001F472
:208937001025CAC6000BA1102605A601CC8A59AE5211F6AA01F7725F000A725F0009AE52C0 :20895500AE5005F6AA30F7AE5007F6AA30F7AE5009F6AA30F7AE5212A608F7AE521DA6091B
:2089570017F644250CCE00095CCF0009A33E8025EDCE0009A33E802605A602CC8A59AE5246 :20897500F7AE521BA628F7AE521C7FAE521A7FAE5211F6AA04F772105210817B0348C70039
:2089770016C60016F7725F000A725F0009AE5217F69095A5022613AE5218F64D260CCE00D5 :208995001AAA01C70019815216725F000FAE5219F6A502272EAE5211F6AA02F7725F000AC4
:20899700095CCF0009A33E8025E3CE0009A33E802605A603CC8A59AE5218F66B020D0227AE :2089B500725F0009AE5211F6A502270CCE00095CCF0009A303E825ECC6000F4CC7000FA1A5
:2089B70007A6046B01CC8A44A6056B01AE5219F6A5042603CC8A44725F000A725F00099012 :2089D5001025CAC6000FA1102605A601CC8B857210521190CE0015CE001390CF000DCF00DB
:2089D7009E4825100D02260CCE00095CCF0009A33E8025EBCE0009A33E802604A605206219 :2089F5000BCE001572B0000DC60014C2000C6B13C60013C2000B90AE52178890F66B0784CE
:2089F7000D022706A6046B012043AE52167B05F7725F000A725F0009AE5217F6442513AE32 :208A150088A300027B14A20084A20024057B064424CF7B06A0014F494424077B066B05CCF6
:208A17005218F64D260CCE00095CCF0009A33E8025E6CE0009A33E802604A6052024AE5298 :208A35008B70AE5216C6001AF790CE0015CE001390CF000DCF000BCE001572B0000DC600C7
:208A370018F64D26040F012004A6046B01AE52187FAE5211F6AA02F7AE5211F6A50226F843 :208A550014C2000C6B0AC60013C2000B6B0990AE521790F66B167B16A4026B07A300027B19
:208A57007B015B02815204725F000BAE5219F6A502272EAE5211F6AA02F7725F000A725F12 :208A75000AA2007B09A200240B0D072607AE5218F64D27C30D072707AE5218F64D27077B14
:208A77000009AE5211F6A502270CCE00095CCF0009A303E825ECC6000B4CC7000BA1102586 :208A9500166B05CC8B704D2707A6046B05CC8B70A6056B05AE5219F6A5042603CC8B7090C5
:208A9700CAC6000BA1102605A601CC8BD1AE5211F6AA01F7725F000A725F0009AE5217F60E :208AB500CE0015CE001390CF000DCF000BCE001572B0000DC60014C2000C6B02C60013C2D5
:208AB70044250CCE00095CCF0009A33E8025EDCE0009A33E802605A602CC8BD1AE5216C69D :208AD500000B88A300027B03A20084A20024057B164824D97B16A0014F494824077B166BCB
:208AD7000016F7725F000A725F0009AE5217F6A5022613AE5218F64D260CCE00095CCF0041 :208AF50005CC8B70AE52167B19F790CE0015CE001390CF000DCF000BCE001572B0000DC682
:208AF70009A33E8025E5CE0009A33E802605A603CC8BD1AE5218F64D2707A6046B01CC8BC1 :208B15000014C2000C6B0FC60013C2000B6B0E90AE521790F66B087B08A484A1842606A683
:208B1700BCA6056B01AE5219F6A5042603CC8BBC16077B096B037B036B040A03AE5217F661 :208B3500016B0D20020F0DA3000F7B0FA2007B0EA200240B0D0D2607AE5218F64D27B90DA2
:208B37006B020D042744725F000A725F00097B02482513AE5218F64D260CCE00095CCF00F4 :208B55000D2707AE5218F64D27067B086B05200B4D26040F052004A6046B05AE52187FAE11
:208B570009A33E8025E8CE0009A33E802605A605CC8BD1AE5218F64D2706A6046B0120454E :208B75005211F6AA02F7AE5211F6A50226F87B055B16815213725F000FAE5219F6A5022784
:208B770090F6905AAE5216F720AC725F000A725F00097B02442513AE5218F64D260CCE008C :208B95002EAE5211F6AA02F7725F000A725F0009AE5211F6A502270CCE00095CCF0009A3A4
:208B9700095CCF0009A33E8025E8CE0009A33E802604A6052024AE5218F64D26040F01200D :208BB50003E825ECC6000F4CC7000FA11025CAC6000FA1102605A601CC8D95721052119052
:208BB70004A6046B01AE52187FAE5211F6AA02F7AE5211F6A50226F87B015B048188725FC2 :208BD500CE0015CE001390CF000DCF000BCE001572B0000DC60014C2000C6B03C60013C2B3
:208BD700000BAE5219F6A502272EAE5211F6AA02F7725F000A725F0009AE5211F6A5022734 :208BF500000B90AE52178890F66B128488A300027B04A20084A20024057B114424CF7B11B3
:208BF7000CCE00095CCF0009A303E825ECC6000B4CC7000BA11025CAC6000BA1102605A6C6 :208C1500A0014F494424077B116B06CC8D80AE5216C6001AF790CE0015CE001390CF000D14
:208C170001CC8D04AE5211F6AA01F7725F000A725F0009AE5217F644250CCE00095CCF00FD :208C3500CF000BCE001572B0000DC60014C2000C6B0CC60013C2000B6B0B90AE521790F6CB
:208C370009A33E8025EDCE0009A33E802605A602CC8D04AE5216C60015F7725F000A725FA5 :208C55006B137B13A4026B07A300027B0CA2007B0BA200240B0D072607AE5218F64D27C330
:208C57000009AE5217F6A5022613AE5218F64D260CCE00095CCF0009A33E8025E5CE00092D :208C75000D072707AE5218F64D27077B136B06CC8D804D2707A6046B06CC8D80A6056B06B1
:208C7700A33E802605A603CC8D04AE5218F64D2706A6046B012068AE5211F6A4F3F7A605E5 :208C9500AE5219F6A5042603CC8D80161617087B186B0A7B0A6B120A0AAE5217F66B100D07
:208C97006B01AE5217F6A5022755AE5219F6A504264DAE5211F6AA02F7725F000A725F00A0 :208CB50012276B90CE0015CE001390CF000DCF000B90CE001572B2000DC60014C2000C9580
:208CB70009AE5217F6A5402613AE5218F64D260CCE00095CCF0009A33E8025E5CE0009A3EC :208CD500C60013C2000B977B10A4806B0F90A300029EA2009FA200240B0D0F2607AE5218D3
:208CD7003E802604A6052025AE5218F64D2706A6046B01200A0F011604AE5216F690F7AE72 :208CF500F64D27CD0D0F2707AE5218F64D27077B106B06CC8D804D2706A6046B06206C1E41
:208CF70052187FAE5211F6A50226F87B015B01815202725F000BAE5219F6A502272EAE5214 :208D150008F61E085C1F08AE5216F7CC8CA890CE0015CE001390CF000DCF000B90CE00157D
:208D170011F6AA02F7725F000A725F0009AE5211F6A502270CCE00095CCF0009A303E8253E :208D350072B2000DC60014C2000C95C60013C2000B977B10A4016B0190A3000F9EA2009FB6
:208D3700ECC6000B4CC7000BA11025CAC6000BA1102605A601CC8E49AE5211F6AA01F7728F :208D5500A200240B0D012607AE5218F64D27CD0D012707AE5218F64D27067B106B06200BB8
:208D57005F000A725F0009AE5217F644250CCE00095CCF0009A33E8025EDCE0009A33E8081 :208D75004D26040F062004A6046B06AE52187FAE5211F6AA02F7AE5211F6A50226F87B0685
:208D77002605A602CC8E49AE5216C60015F7AE5211F6AA0CF7725F000A725F0009AE5217FE :208D95005B13815212725F000FAE5219F6A502272EAE5211F6AA02F7725F000A725F000921
:208D9700F6A4026B020D022613AE5218F64D260CCE00095CCF0009A33E8025E1CE0009A3F2 :208DB500AE5211F6A502270CCE00095CCF0009A303E825ECC6000F4CC7000FA11025CAC6B6
:208DB7003E802605A603CC8E49AE5218F64D2707A6046B01CC8E3B0D022708AE5219F6A541 :208DD500000FA1102605A601CC8F4F7210521190CE0015CE001390CF000DCF000BCE0015E0
:208DD7000427034F206CAE5211F6A4FBF7725F000A725F0009AE5217F6A5042613AE52181A :208DF50072B0000DC60014C2000C6B10C60013C2000B90AE52178890F66B0B8488A300028A
:208DF700F64D260CCE00095CCF0009A33E8025E5CE0009A33E802604A6052036AE5218F600 :208E15007B11A20084A20024057B0A4424CF7B0AA0014F494424077B0A6B09CC8F2DAE5256
:208E17004D2706A6046B01201BAE5211F6AA02F7A6016B011605AE5216F690F7905CAE5219 :208E350016C60019F790CE0015CE001390CF000DCF000BCE001572B0000DC60014C2000CDD
:168E370016F690F7AE52187FAE5211F6A50226F87B015B02818055 :208E55006B0CC60013C2000B6B0B90AE521790F66B087B08A4026B03A300027B0CA2007BEA
:02923400000038 :208E75000BA200240B0D032607AE5218F64D27C30D032707AE5218F64D27077B086B09CCF5
:208E4D00521D1E22A300007B21A2007B20A2002F040F0D2004A6016B0D0D0D27151E2250C0 :208E95008F2D4D2707A6046B09CC8F2DAE5211F6A4F3F7A6056B09AE5219F6A5042703CC7E
:208E6D004F12216B1B4F12201F186B167B1B6B172008162217181620171616181714161615 :208EB5008F2DAE5211F6AA02F790CE0015CE001390CF000DCF000BCE001572B0000DC600C5
:208E8D0017121E26A300007B25A2007B24A2002E1E7B27406B114F12266B104F12256B0F86 :208ED50014C2000C6B05C60013C2000B6B0490AE521790F66B027B02A4406B01A300027B8F
:208EAD004F12246B0E1610170B160E170920081626170B16241709160B170716091E07892F :208EF50005A2007B04A200240B0D012607AE5218F64D27C30D012707AE5218F64D27067BA7
:208ECD0090891E18891E1889CD8EF25B0817010D0D270D504F120290974F12019095200255 :208F1500026B0920134D2706A6046B09200A0F091615AE5216F690F7AE52187FAE5211F65D
:208EED0016015B1D8152040F020F017B0B484F494D262E160D1E0B905859170D1F0B1E09D5 :208F350095A0014F49A50227079EAA02AE5211F7AE5211F6A50226F87B095B128152127213
:208F0D00130D7B08120C7B07120B240D160D1E0B549056170D1F0B20080C017B016B0220A1 :208F55005F000FAE5219F6A502272EAE5211F6AA02F7725F000A725F0009AE5211F6A50276
:208F2D00CA7B026B041E09130D7B08120C7B07120B2513160972F20D7B08120C977B071253 :208F7500270CCE00095CCF0009A303E825ECC6000F4CC7000FA11025CAC6000FA1102605B7
:208F4D000B9517091F07160D1E0B549056170D1F0B7B046B030A040D0326CA1E0916075BB0 :208F9500A601CC911A7210521190CE0015CE001390CF000DCF000BCE001572B0000DC60047
:208F6D000481521E1E23A300007B22A2007B21A2002F040F112004A6016B110D1127151E7C :208FB50014C2000C6B10C60013C2000B90AE52178890F66B028488A300027B11A20084A272
:208F8D0023504F12226B1C4F12211F146B127B1C6B132008162317141621171216141719BA :208FD5000024057B014424CF7B01A0014F494424077B016B04CC90F8AE5216C60019F7AEA3
:208FAD00161217171E27A300007B26A2007B25A2002F040F162004A6016B160D16271E7B5A :208FF5005211F6AA0CF790CE0015CE001390CF000DCF000BCE001572B0000DC60014C2000E
:208FCD0028406B104F12276B0F4F12266B0E4F12256B0D160F170B160D170920081627179B :209015000C6B0CC60013C2000B6B0B90AE521790F66B037B03A4026B0AA300027B0CA2009A
:208FED000B16251709160B170716091E078990891E1D891E1D89CD90235B0817017B1118B2 :209035007B0BA200240B0D0A2607AE5218F64D27C30D0A2707AE5218F64D27077B036B0480
:20900D00164D270D504F120290974F12019095200216015B1E8152125F1F051F03A6206BDE :20905500CC90F84D2707A6046B04CC90F8A6056B04AE5219F6A5042703CC90F8AE5211F668
:20902D00027B15484F496B0116171E1590585917171F157B036B0F1E04887B076B13840814 :20907500A4FBF790CE0015CE001390CF000DCF000BCE001572B0000DC60014C2000C6B077F
:20904D001259090F1F047B126B067B0F6B030D01271A7B06AA016B0A7B056B097B046B0891 :20909500C60013C2000B6B0690AE521790F66B057B05A4046B02A3000F7B07A2007B06A279
:20906D007B036B0716091705160717031E05131B7B04121A7B031219252B160572F21B7B77 :2090B50000240B0D022607AE5218F64D27C30D022707AE5218F64D27067B056B0420244DA6
:20908D0004121A6B0C7B03121917056B037B0C6B047B18AA0190977B1790957B16977B151F :2090D5002706A6046B04201B9BAE5211F6AA02F70F041615AE5216F690F79A905CAE521648
:2090AD009517171F150A020D022703CC902E1E1716155B128152409096905C961C00431FD7 :2090F500F690F7AE52187FAE5211F695A0014F49A50227079EAA02AE5211F7AE5211F6A59F
:2090CD00051E05E603961C00471F0B1E0B1F0D1E0D1F3F1E3F88E60197844290FF72A9009E :099115000226F87B045B12818044
:2090ED00021E05E6031E0B1F071E071F091E091F0F1E0F88E60397844290FF965C1F151E96 :02950500000064
:20910D0015F66B171E05F697160B90E603429F1B171E15F71E15F66B1C1E05E60197160BBC :20911E00521D1E22A300007B21A2007B20A2002F040F0D2004A6016B0D0D0D27151E2250EC
:20912D0090E602429F1B1C1E15F79096905C93FE1F1D1E05E6011E0B1F231E231F251E254C :20913E004F12216B1B4F12201F186B167B1B6B172008162217181620171616181714161641
:20914D001F271E2788E60397844272FB1D90FF93FE1F291E05E6021E0B1F2B1E2B1F2D1E86 :20915E0017121E26A300007B25A2007B24A2002E1E7B27406B114F12266B104F12256B0FB2
:20916D002D1F311E3188E60297844272FB2990FF16051E05E6021E0B1F331E331F351E358B :20917E004F12246B0E1610170B160E170920081626170B16241709160B170716091E07895B
:20918D001F371E3788E6019784429F90F71E055C1F391E05E60290971E0BE60390421E39E1 :20919E0090891E18891E1889CD91C35B0817010D0D270D504F120290974F120190952002AD
:2091AD00FF160B1E05E6031E0B1F3D1E3D1F2F1E2F88F69784429F90F71E0B5C1F3B1E05F8 :2091BE0016015B1D8152040F020F017B0B484F494D262E160D1E0B905859170D1F0B1E0901
:2091CD00E60390971E0BE60290421E3BFF1E0B1C00037F1E051C00037F965CE6036B14E66F :2091DE00130D7B08120C7B07120B240D160D1E0B549056170D1F0B20080C017B016B0220CE
:2091ED00026B13E6016B12F616431718164572F9131721887B13191A6B218419186B1F16C5 :2091FE00CA7B026B041E09130D7B08120C7B07120B2513160972F20D7B08120C977B071280
:1E920D0021EF02161FFFE603E602FE16491E4772F9219F1920979E191F95515B408197 :20921E000B9517091F07160D1E0B549056170D1F0B7B046B030A040D0326CA1E0916075BDC
:20923E000481521E1E23A300007B22A2007B21A2002F040F112004A6016B110D1127151EA8
:20925E0023504F12226B1C4F12211F146B127B1C6B132008162317141621171216141719E6
:20927E00161217171E27A300007B26A2007B25A2002F040F162004A6016B160D16271E7B86
:20929E0028406B104F12276B0F4F12266B0E4F12256B0D160F170B160D17092008162717C7
:2092BE000B16251709160B170716091E078990891E1D891E1D89CD92F45B0817017B11180B
:2092DE00164D270D504F120290974F12019095200216015B1E8152125F1F051F03A6206B0B
:2092FE00027B15484F496B0116171E1590585917171F157B036B0F1E04887B076B13840841
:20931E001259090F1F047B126B067B0F6B030D01271A7B06AA016B0A7B056B097B046B08BD
:20933E007B036B0716091705160717031E05131B7B04121A7B031219252B160572F21B7BA3
:20935E0004121A6B0C7B03121917056B037B0C6B047B18AA0190977B1790957B16977B154B
:20937E009517171F150A020D022703CC92FF1E1716155B128152409096905C961C00431F30
:20939E00051E05E603961C00471F0B1E0B1F0D1E0D1F3F1E3F88E60197844290FF72A900CA
:2093BE00021E05E6031E0B1F071E071F091E091F0F1E0F88E60397844290FF965C1F151EC2
:2093DE0015F66B171E05F697160B90E603429F1B171E15F71E15F66B1C1E05E60197160BE9
:2093FE0090E602429F1B1C1E15F79096905C93FE1F1D1E05E6011E0B1F231E231F251E2579
:20941E001F271E2788E60397844272FB1D90FF93FE1F291E05E6021E0B1F2B1E2B1F2D1EB2
:20943E002D1F311E3188E60297844272FB2990FF16051E05E6021E0B1F331E331F351E35B7
:20945E001F371E3788E6019784429F90F71E055C1F391E05E60290971E0BE60390421E390D
:20947E00FF160B1E05E6031E0B1F3D1E3D1F2F1E2F88F69784429F90F71E0B5C1F3B1E0524
:20949E00E60390971E0BE60290421E3BFF1E0B1C00037F1E051C00037F965CE6036B14E69B
:2094BE00026B13E6016B12F616431718164572F9131721887B13191A6B218419186B1F16F1
:1E94DE0021EF02161FFFE603E602FE16491E4772F9219F1920979E191F95515B4081C4
:00000001FF :00000001FF