From 7f0fdf0f8d37de371b019664267d8d54ea1137d3 Mon Sep 17 00:00:00 2001 From: Sergey Yarkov Date: Wed, 4 May 2022 20:48:22 +0300 Subject: [PATCH] added schematic files --- firmware.asm | 6 +- firmware.hex | 88 +++---- firmware.lss | 590 ++++++++++++++++++++++----------------------- schematic/main.pdf | Bin 0 -> 41089 bytes 4 files changed, 338 insertions(+), 346 deletions(-) create mode 100644 schematic/main.pdf diff --git a/firmware.asm b/firmware.asm index 6af30c3..7526887 100644 --- a/firmware.asm +++ b/firmware.asm @@ -54,7 +54,6 @@ .equ INIT_STATE = 0x01 .equ SHOWING_STATE = 0x02 .equ POLLING_STATE = 0x03 -.equ COMPLETION_STATE = 0x04 ; ; SW Flags states constants @@ -194,7 +193,7 @@ loop: ; Program loop set_state POLLING_STATE polling: ; Polling state cpi mcu_state_r, POLLING_STATE - brne completion + brne default btn_1: lds r18, SW_FLAGS_ADDRESS cpi r18, SW_FLAG_1 @@ -243,9 +242,6 @@ loop: ; Program loop cbi LED_PORT, 3 cbi BUZZ_DIR, BUZZ_PIN rjmp btn_4 - completion: ; Reset delay counter, set MCU state to SHOWING - cpi mcu_state_r, COMPLETION_STATE - brne default default: rcall OCR0A_reset rjmp loop diff --git a/firmware.hex b/firmware.hex index 787a230..808d49c 100644 --- a/firmware.hex +++ b/firmware.hex @@ -2,55 +2,55 @@ :100000003EC018950EC01895189518951895189516 :1000100018951895189515C0189518951895189550 :1000200018951F932F932FB710916000133031F460 -:1000300019B3107F62D1109362002FBF2F911F91CF +:1000300019B3107F60D1109362002FBF2F911F91D1 :1000400018957F937FB702C008EA52B7052702953B -:10005000500F7FBF7F9118953BD12AD12FD13FEF11 +:10005000500F7FBF7F91189539D128D12DD13FEF17 :1000600041E0A4E0AA2EFF27E0E802D078940895AA -:1000700073E0F5D07A95E9F74CD1772708950FED25 +:1000700073E0F3D07A95E9F74AD1772708950FED29 :100080000DBF0027109361000F9301E00093600003 :100090000F9110916000113041F4DEDF1093610088 -:1000A0000F9302E0009360000F91123041F48BD067 +:1000A0000F9302E0009360000F91123041F489D069 :1000B000109361000F9303E0009360000F911330E1 :1000C000C1F520916200203E51F40F930EE806BF67 -:1000D0000F91D89ABA9A31D0D898BA98F2CF209185 +:1000D0000F91D89ABA9A2FD0D898BA98F2CF209187 :1000E0006200203D51F40F9307E406BF0F91D99AA7 -:1000F000BA9A23D0D998BA98F2CF20916200203BC7 -:1001000051F40F9309E606BF0F91DA9ABA9A15D007 -:10011000DA98BA98F2CF20916200203761F40F93F9 -:1001200000E506BF0F91DB9ABA9A07D0DB98BA9820 -:10013000F2CF143001F488D0ACCF2F93DED0DDD0D5 -:10014000DCD0A9B39A2FA07F9F70AA27A09362004A -:100150008191981729F42A2D241739F0439516C058 -:100160007ED03FEFA4E0AA95AA2E2F91FF27E0E8CA -:10017000BA9800EF0BBBCDD0109361000F9302E053 -:10018000009360000F9141E0A39408952F9108958A -:1001900008957A2DDD27C0E8B0D0652F663430F0A1 -:1001A0006C3830F0683C30F06F3F30F0A1E005C0B3 -:1001B000A2E003C0A4E001C0A8E0A9937A95703042 -:1001C00059F700000895E5DF7A2DDD27C0E870308B -:1001D000C1F1A991A13031F0A23079F0A430C1F081 -:1001E000A83009F10F930EE806BF0F91D89ABA9A7A -:1001F00076D0D898BA9828D020C00F9307E406BFCD -:100200000F91D99ABA9A6BD0D998BA981DD015C0C7 -:100210000F9309E606BF0F91DA9ABA9A60D0DA987E -:10022000BA9812D00AC00F9300E506BF0F91DB9A6F -:10023000BA9A55D0DB98BA9807D051D07A957030D9 -:1002400031F607D05AD008957F937FEF76BF7F9124 -:1002500008953A50383208F008953FEF08951F93FB -:100260002F933F934F93F8944BB30F9301EF0BBB36 -:100270000F9143D011E033E020EF110F210F2BBB82 -:100280003CD03A95C9F70F9308EF0BBB0F9135D0CF -:1002900018E033E020EF1695210F2BBB2ED03A95B6 -:1002A000C9F778944BBB4F913F912F911F910895BF -:1002B00000E10BBF00EF02BB00270895BA9802E4EB -:1002C00000BF0FEF06BF02E003BF01E009BF0895C2 -:1002D0000FE00ABB02950BBBBA9AC29808952F9300 -:1002E0004F932FEF432F00002A95E9F700004A951E -:1002F000D1F700004F912F9108952F933F9321E460 -:100300003FEE3A95F1F72A95E1F700003F912F91E2 -:1003100008958F939F9324E683EC99E00197F1F77A -:100320002A95D1F724E69F918F9108954D656D6FC1 -:100330007279206C65642067616D652E2057726943 -:100340007474656E206279205365726765792059EF -:1003500061726B6F762032372E30392E3230323167 +:1000F000BA9A21D0D998BA98F2CF20916200203BC9 +:1001000051F40F9309E606BF0F91DA9ABA9A13D009 +:10011000DA98BA98F2CF20916200203751F40F9309 +:1001200000E506BF0F91DB9ABA9A05D0DB98BA9822 +:10013000F2CF88D0AECF2F93DED0DDD0DCD0A9B304 +:100140009A2FA07F9F70AA27A09362008191981791 +:1001500029F42A2D241739F0439516C07ED03FEF9D +:10016000A4E0AA95AA2E2F91FF27E0E8BA9800EF05 +:100170000BBBCDD0109361000F9302E000936000A1 +:100180000F9141E0A39408952F91089508957A2D39 +:10019000DD27C0E8B0D0652F663430F06C3830F021 +:1001A000683C30F06F3F30F0A1E005C0A2E003C032 +:1001B000A4E001C0A8E0A9937A95703059F7000037 +:1001C0000895E5DF7A2DDD27C0E87030C1F1A991EF +:1001D000A13031F0A23079F0A430C1F0A83009F19B +:1001E0000F930EE806BF0F91D89ABA9A76D0D89896 +:1001F000BA9828D020C00F9307E406BF0F91D99A70 +:10020000BA9A6BD0D998BA981DD015C00F9309E649 +:1002100006BF0F91DA9ABA9A60D0DA98BA9812D0DB +:100220000AC00F9300E506BF0F91DB9ABA9A55D02A +:10023000DB98BA9807D051D07A95703031F607D054 +:100240005AD008957F937FEF76BF7F9108953A50FB +:10025000383208F008953FEF08951F932F933F938E +:100260004F93F8944BB30F9301EF0BBB0F9143D017 +:1002700011E033E020EF110F210F2BBB3CD03A955A +:10028000C9F70F9308EF0BBB0F9135D018E033E09F +:1002900020EF1695210F2BBB2ED03A95C9F77894F5 +:1002A0004BBB4F913F912F911F91089500E10BBFE0 +:1002B00000EF02BB00270895BA9802E400BF0FEFD9 +:1002C00006BF02E003BF01E009BF08950FE00ABBCB +:1002D00002950BBBBA9AC29808952F934F932FEFB4 +:1002E000432F00002A95E9F700004A95D1F7000056 +:1002F0004F912F9108952F933F9321E43FEE3A952C +:10030000F1F72A95E1F700003F912F9108958F931F +:100310009F9324E683EC99E00197F1F72A95D1F7B2 +:1003200024E69F918F9108954D656D6F7279206CD1 +:1003300065642067616D652E205772697474656EFF +:1003400020627920536572676579205961726B6FFD +:0C035000762032372E30392E3230323118 :00000001FF diff --git a/firmware.lss b/firmware.lss index 3cf9bf2..22e0ea3 100644 --- a/firmware.lss +++ b/firmware.lss @@ -1,11 +1,11 @@ -AVRASM ver. 2.2.7 firmware.asm Wed May 04 20:17:39 2022 +AVRASM ver. 2.2.7 firmware.asm Wed May 04 20:21:53 2022 firmware.asm(13): Including file 'def.inc' firmware.asm(21): warning: Register r26 already defined by the .DEF directive -firmware.asm(74): Including file 'macros.asm' +firmware.asm(73): Including file 'macros.asm' firmware.asm(13): Including file 'def.inc' -firmware.asm(74): Including file 'macros.asm' +firmware.asm(73): Including file 'macros.asm' ; Project name: memory-led-game @@ -738,7 +738,6 @@ firmware.asm(74): Including file 'macros.asm' .equ INIT_STATE = 0x01 .equ SHOWING_STATE = 0x02 .equ POLLING_STATE = 0x03 - .equ COMPLETION_STATE = 0x04 ; ; SW Flags states constants @@ -893,7 +892,7 @@ firmware.asm(74): Including file 'macros.asm' 000017 f431 brne quit ; Do not change button flags unless in POLLING state of mcu 000018 b319 in r17, PINA ; Load current pins status of PINA 000019 7f10 andi r17, 0xf0 ; Get pins status of only buttons -00001a d162 rcall delay_50ms ; Delay for button +00001a d160 rcall delay_50ms ; Delay for button 00001b 9310 0062 sts SW_FLAGS_ADDRESS, r17 ; Update flag status in SRAM 00001d bf2f out SREG, r18 @@ -920,9 +919,9 @@ firmware.asm(74): Including file 'macros.asm' 00002b 9518 reti MCU_Init: ; This function executes once on start the main program -00002c d13b rcall init_ports -00002d d12a rcall init_interrupts -00002e d12f rcall init_buzzer +00002c d139 rcall init_ports +00002d d128 rcall init_interrupts +00002e d12d rcall init_buzzer ; ; Init important registers for game @@ -941,10 +940,10 @@ firmware.asm(74): Including file 'macros.asm' MCU_Delay: 000038 e073 ldi temp_r_b, 3 _init_loop_loading: -000039 d0f5 rcall effect_1 +000039 d0f3 rcall effect_1 00003a 957a dec temp_r_b 00003b f7e9 brne _init_loop_loading -00003c d14c rcall delay_1s +00003c d14a rcall delay_1s 00003d 2777 clr temp_r_b 00003e 9508 ret @@ -974,7 +973,7 @@ firmware.asm(74): Including file 'macros.asm' showing: ; Showing state 000055 3012 cpi mcu_state_r, SHOWING_STATE 000056 f441 brne polling -000057 d08b rcall show_sequence ; Generate sequence and save answer to SRAM +000057 d089 rcall show_sequence ; Generate sequence and save answer to SRAM 000058 9310 0061 00005a 930f 00005b e003 @@ -982,7 +981,7 @@ firmware.asm(74): Including file 'macros.asm' 00005e 910f set_state POLLING_STATE polling: ; Polling state 00005f 3013 cpi mcu_state_r, POLLING_STATE -000060 f5c1 brne completion +000060 f5c1 brne default btn_1: 000061 9120 0062 lds r18, SW_FLAGS_ADDRESS 000063 3e20 cpi r18, SW_FLAG_1 @@ -994,7 +993,7 @@ firmware.asm(74): Including file 'macros.asm' 000068 910f outi OCR0A, 142 000069 9ad8 sbi LED_PORT, 0 00006a 9aba sbi BUZZ_DIR, BUZZ_PIN -00006b d031 rcall btn_handler +00006b d02f rcall btn_handler 00006c 98d8 cbi LED_PORT, 0 00006d 98ba cbi BUZZ_DIR, BUZZ_PIN 00006e cff2 rjmp btn_1 @@ -1009,7 +1008,7 @@ firmware.asm(74): Including file 'macros.asm' 000076 910f outi OCR0A, 71 000077 9ad9 sbi LED_PORT, 1 000078 9aba sbi BUZZ_DIR, BUZZ_PIN -000079 d023 rcall btn_handler +000079 d021 rcall btn_handler 00007a 98d9 cbi LED_PORT, 1 00007b 98ba cbi BUZZ_DIR, BUZZ_PIN 00007c cff2 rjmp btn_2 @@ -1024,14 +1023,14 @@ firmware.asm(74): Including file 'macros.asm' 000084 910f outi OCR0A, 105 000085 9ada sbi LED_PORT, 2 000086 9aba sbi BUZZ_DIR, BUZZ_PIN -000087 d015 rcall btn_handler +000087 d013 rcall btn_handler 000088 98da cbi LED_PORT, 2 000089 98ba cbi BUZZ_DIR, BUZZ_PIN 00008a cff2 rjmp btn_3 btn_4: 00008b 9120 0062 lds r18, SW_FLAGS_ADDRESS 00008d 3720 cpi r18, SW_FLAG_4 -00008e f461 brne default +00008e f451 brne default led_on_4: 00008f 930f 000090 e500 @@ -1039,378 +1038,375 @@ firmware.asm(74): Including file 'macros.asm' 000092 910f outi OCR0A, 80 000093 9adb sbi LED_PORT, 3 000094 9aba sbi BUZZ_DIR, BUZZ_PIN -000095 d007 rcall btn_handler +000095 d005 rcall btn_handler 000096 98db cbi LED_PORT, 3 000097 98ba cbi BUZZ_DIR, BUZZ_PIN 000098 cff2 rjmp btn_4 - completion: ; Reset delay counter, set MCU state to SHOWING -000099 3014 cpi mcu_state_r, COMPLETION_STATE -00009a f401 brne default default: -00009b d088 rcall OCR0A_reset -00009c cfac rjmp loop +000099 d088 rcall OCR0A_reset +00009a cfae rjmp loop btn_handler: ; Check the input value with answer in SRAM -00009d 932f push r18 -00009e d0de rcall delay_50ms -00009f d0dd rcall delay_50ms -0000a0 d0dc rcall delay_50ms -0000a1 b3a9 in temp_r_c, PINA -0000a2 2f9a mov r25, temp_r_c -0000a3 7fa0 andi temp_r_c, 0xf0 -0000a4 709f andi r25, 0x0f -0000a5 27aa clr temp_r_c -0000a6 93a0 0062 sts SW_FLAGS_ADDRESS, temp_r_c +00009b 932f push r18 +00009c d0de rcall delay_50ms +00009d d0dd rcall delay_50ms +00009e d0dc rcall delay_50ms +00009f b3a9 in temp_r_c, PINA +0000a0 2f9a mov r25, temp_r_c +0000a1 7fa0 andi temp_r_c, 0xf0 +0000a2 709f andi r25, 0x0f +0000a3 27aa clr temp_r_c +0000a4 93a0 0062 sts SW_FLAGS_ADDRESS, temp_r_c -0000a8 9181 ld r24, Z+ -0000a9 1798 cp r25, r24 ; Check answer -0000aa f429 brne _game_over ; Game over +0000a6 9181 ld r24, Z+ +0000a7 1798 cp r25, r24 ; Check answer +0000a8 f429 brne _game_over ; Game over -0000ab 2d2a mov r18, seq_length_r -0000ac 1724 cp r18, poll_step_r -0000ad f039 breq _btn_handler_exit_state +0000a9 2d2a mov r18, seq_length_r +0000aa 1724 cp r18, poll_step_r +0000ab f039 breq _btn_handler_exit_state -0000ae 9543 inc poll_step_r +0000ac 9543 inc poll_step_r -0000af c016 rjmp _btn_handler_exit +0000ad c016 rjmp _btn_handler_exit _game_over: -0000b0 d07e rcall effect_1 -0000b1 ef3f ldi delay_counter_r, 0xff -0000b2 e0a4 ldi temp_r_c, SEQ_LENGTH -0000b3 95aa dec temp_r_c -0000b4 2eaa mov seq_length_r, temp_r_c +0000ae d07e rcall effect_1 +0000af ef3f ldi delay_counter_r, 0xff +0000b0 e0a4 ldi temp_r_c, SEQ_LENGTH +0000b1 95aa dec temp_r_c +0000b2 2eaa mov seq_length_r, temp_r_c _btn_handler_exit_state: -0000b5 912f pop r18 -0000b6 27ff clr ZH -0000b7 e8e0 ldi ZL, $80 -0000b8 98ba cbi BUZZ_DIR, BUZZ_PIN -0000b9 ef00 ldi temp_r, 0xf0 -0000ba bb0b out LED_PORT, temp_r -0000bb d0cd rcall delay_1s -0000bc 9310 0061 -0000be 930f -0000bf e002 -0000c0 9300 0060 -0000c2 910f set_state SHOWING_STATE -0000c3 e041 ldi poll_step_r, 1 -0000c4 94a3 inc seq_length_r -0000c5 9508 ret +0000b3 912f pop r18 +0000b4 27ff clr ZH +0000b5 e8e0 ldi ZL, $80 +0000b6 98ba cbi BUZZ_DIR, BUZZ_PIN +0000b7 ef00 ldi temp_r, 0xf0 +0000b8 bb0b out LED_PORT, temp_r +0000b9 d0cd rcall delay_1s +0000ba 9310 0061 +0000bc 930f +0000bd e002 +0000be 9300 0060 +0000c0 910f set_state SHOWING_STATE +0000c1 e041 ldi poll_step_r, 1 +0000c2 94a3 inc seq_length_r +0000c3 9508 ret _btn_handler_exit: -0000c6 912f pop r18 -0000c7 9508 ret -0000c8 9508 ret +0000c4 912f pop r18 +0000c5 9508 ret +0000c6 9508 ret gen_ran_seq: ; Generate random sequence of bytes for leds and save answer to SRAM -0000c9 2d7a mov temp_r_b, seq_length_r -0000ca 27dd clr YH -0000cb e8c0 ldi YL, $80 +0000c7 2d7a mov temp_r_b, seq_length_r +0000c8 27dd clr YH +0000c9 e8c0 ldi YL, $80 _gen_ran_loop: -0000cc d0b0 rcall delay_50ms ; Delay is required! -0000cd 2f65 mov r22, r21 +0000ca d0b0 rcall delay_50ms ; Delay is required! +0000cb 2f65 mov r22, r21 -0000ce 3466 cpi r22, 70 -0000cf f030 brlo _gen_answ_1 +0000cc 3466 cpi r22, 70 +0000cd f030 brlo _gen_answ_1 -0000d0 386c cpi r22, 140 -0000d1 f030 brlo _gen_answ_2 +0000ce 386c cpi r22, 140 +0000cf f030 brlo _gen_answ_2 -0000d2 3c68 cpi r22, 200 -0000d3 f030 brlo _gen_answ_3 +0000d0 3c68 cpi r22, 200 +0000d1 f030 brlo _gen_answ_3 -0000d4 3f6f cpi r22, 255 -0000d5 f030 brlo _gen_answ_4 +0000d2 3f6f cpi r22, 255 +0000d3 f030 brlo _gen_answ_4 _gen_answ_1: -0000d6 e0a1 ldi temp_r_c, 0x01 -0000d7 c005 rjmp _gen_ran_write +0000d4 e0a1 ldi temp_r_c, 0x01 +0000d5 c005 rjmp _gen_ran_write _gen_answ_2: -0000d8 e0a2 ldi temp_r_c, 0x02 -0000d9 c003 rjmp _gen_ran_write +0000d6 e0a2 ldi temp_r_c, 0x02 +0000d7 c003 rjmp _gen_ran_write _gen_answ_3: -0000da e0a4 ldi temp_r_c, 0x04 -0000db c001 rjmp _gen_ran_write +0000d8 e0a4 ldi temp_r_c, 0x04 +0000d9 c001 rjmp _gen_ran_write _gen_answ_4: -0000dc e0a8 ldi temp_r_c, 0x08 +0000da e0a8 ldi temp_r_c, 0x08 _gen_ran_write: -0000dd 93a9 st Y+, temp_r_c -0000de 957a dec temp_r_b -0000df 3070 cpi temp_r_b, 0 -0000e0 f759 brne _gen_ran_loop -0000e1 0000 nop -0000e2 9508 ret +0000db 93a9 st Y+, temp_r_c +0000dc 957a dec temp_r_b +0000dd 3070 cpi temp_r_b, 0 +0000de f759 brne _gen_ran_loop +0000df 0000 nop +0000e0 9508 ret show_sequence: -0000e3 dfe5 rcall gen_ran_seq ; Answer stored in SRAM in addr $80:{SEQ_LENGTH} +0000e1 dfe5 rcall gen_ran_seq ; Answer stored in SRAM in addr $80:{SEQ_LENGTH} show_start: -0000e4 2d7a mov temp_r_b, seq_length_r +0000e2 2d7a mov temp_r_b, seq_length_r -0000e5 27dd clr YH -0000e6 e8c0 ldi YL, $80 +0000e3 27dd clr YH +0000e4 e8c0 ldi YL, $80 _sequence_loop: -0000e7 3070 cpi temp_r_b, 0 -0000e8 f1c1 breq _seq_quit +0000e5 3070 cpi temp_r_b, 0 +0000e6 f1c1 breq _seq_quit -0000e9 91a9 ld temp_r_c, Y+ -0000ea 30a1 cpi temp_r_c, 0x01 -0000eb f031 breq beep_1 +0000e7 91a9 ld temp_r_c, Y+ +0000e8 30a1 cpi temp_r_c, 0x01 +0000e9 f031 breq beep_1 -0000ec 30a2 cpi temp_r_c, 0x02 -0000ed f079 breq beep_2 +0000ea 30a2 cpi temp_r_c, 0x02 +0000eb f079 breq beep_2 -0000ee 30a4 cpi temp_r_c, 0x04 -0000ef f0c1 breq beep_3 +0000ec 30a4 cpi temp_r_c, 0x04 +0000ed f0c1 breq beep_3 -0000f0 30a8 cpi temp_r_c, 0x08 -0000f1 f109 breq beep_4 +0000ee 30a8 cpi temp_r_c, 0x08 +0000ef f109 breq beep_4 beep_1: -0000f2 930f -0000f3 e80e -0000f4 bf06 -0000f5 910f -0000f6 9ad8 -0000f7 9aba -0000f8 d076 -0000f9 98d8 -0000fa 98ba beep_led_1 -0000fb d028 rcall OCR0A_reset -0000fc c020 rjmp beep_quit +0000f0 930f +0000f1 e80e +0000f2 bf06 +0000f3 910f +0000f4 9ad8 +0000f5 9aba +0000f6 d076 +0000f7 98d8 +0000f8 98ba beep_led_1 +0000f9 d028 rcall OCR0A_reset +0000fa c020 rjmp beep_quit beep_2: -0000fd 930f -0000fe e407 -0000ff bf06 -000100 910f -000101 9ad9 -000102 9aba -000103 d06b -000104 98d9 -000105 98ba beep_led_2 -000106 d01d rcall OCR0A_reset -000107 c015 rjmp beep_quit +0000fb 930f +0000fc e407 +0000fd bf06 +0000fe 910f +0000ff 9ad9 +000100 9aba +000101 d06b +000102 98d9 +000103 98ba beep_led_2 +000104 d01d rcall OCR0A_reset +000105 c015 rjmp beep_quit beep_3: -000108 930f -000109 e609 -00010a bf06 -00010b 910f -00010c 9ada -00010d 9aba -00010e d060 -00010f 98da -000110 98ba beep_led_3 -000111 d012 rcall OCR0A_reset -000112 c00a rjmp beep_quit +000106 930f +000107 e609 +000108 bf06 +000109 910f +00010a 9ada +00010b 9aba +00010c d060 +00010d 98da +00010e 98ba beep_led_3 +00010f d012 rcall OCR0A_reset +000110 c00a rjmp beep_quit beep_4: -000113 930f -000114 e500 -000115 bf06 -000116 910f -000117 9adb -000118 9aba -000119 d055 -00011a 98db -00011b 98ba beep_led_4 -00011c d007 rcall OCR0A_reset +000111 930f +000112 e500 +000113 bf06 +000114 910f +000115 9adb +000116 9aba +000117 d055 +000118 98db +000119 98ba beep_led_4 +00011a d007 rcall OCR0A_reset beep_quit: -00011d d051 rcall delay -00011e 957a dec temp_r_b -00011f 3070 cpi temp_r_b, 0 -000120 f631 brne _sequence_loop +00011b d051 rcall delay +00011c 957a dec temp_r_b +00011d 3070 cpi temp_r_b, 0 +00011e f631 brne _sequence_loop _seq_quit: -000121 d007 rcall dec_delay_counter -000122 d05a rcall delay_50ms -000123 9508 ret +00011f d007 rcall dec_delay_counter +000120 d05a rcall delay_50ms +000121 9508 ret OCR0A_reset: ; This function need to set the OCR0A register to 0xff for overflow interrupt -000124 937f push temp_r_b -000125 ef7f ldi temp_r_b, 0xff -000126 bf76 out OCR0A, temp_r_b -000127 917f pop temp_r_b -000128 9508 ret +000122 937f push temp_r_b +000123 ef7f ldi temp_r_b, 0xff +000124 bf76 out OCR0A, temp_r_b +000125 917f pop temp_r_b +000126 9508 ret dec_delay_counter: -000129 503a subi delay_counter_r, 10 -00012a 3238 cpi delay_counter_r, 40 -00012b f008 brlo _reset_counter -00012c 9508 ret +000127 503a subi delay_counter_r, 10 +000128 3238 cpi delay_counter_r, 40 +000129 f008 brlo _reset_counter +00012a 9508 ret _reset_counter: -00012d ef3f ldi delay_counter_r, 0xff -00012e 9508 ret +00012b ef3f ldi delay_counter_r, 0xff +00012c 9508 ret effect_1: ; Shift bits of an leds in port every 50ms -00012f 931f push r17 -000130 932f push r18 -000131 933f push r19 -000132 934f push r20 -000133 94f8 cli -000134 b34b in r20, LED_PORT +00012d 931f push r17 +00012e 932f push r18 +00012f 933f push r19 +000130 934f push r20 +000131 94f8 cli +000132 b34b in r20, LED_PORT -000135 930f -000136 ef01 -000137 bb0b -000138 910f outi LED_PORT, 0xf1 -000139 d043 rcall delay_50ms -00013a e011 ldi r17, 0x01 -00013b e033 ldi r19, 3 +000133 930f +000134 ef01 +000135 bb0b +000136 910f outi LED_PORT, 0xf1 +000137 d043 rcall delay_50ms +000138 e011 ldi r17, 0x01 +000139 e033 ldi r19, 3 _eff_1_shift_l: ; Shift bits to left loop -00013c ef20 ldi r18, 0xf0 -00013d 0f11 lsl r17 -00013e 0f21 add r18, r17 -00013f bb2b out LED_PORT, r18 -000140 d03c rcall delay_50ms -000141 953a dec r19 -000142 f7c9 brne _eff_1_shift_l +00013a ef20 ldi r18, 0xf0 +00013b 0f11 lsl r17 +00013c 0f21 add r18, r17 +00013d bb2b out LED_PORT, r18 +00013e d03c rcall delay_50ms +00013f 953a dec r19 +000140 f7c9 brne _eff_1_shift_l -000143 930f -000144 ef08 -000145 bb0b -000146 910f outi LED_PORT, 0xf8 -000147 d035 rcall delay_50ms -000148 e018 ldi r17, 0x08 -000149 e033 ldi r19, 3 +000141 930f +000142 ef08 +000143 bb0b +000144 910f outi LED_PORT, 0xf8 +000145 d035 rcall delay_50ms +000146 e018 ldi r17, 0x08 +000147 e033 ldi r19, 3 _eff_1_shift_r: ; Shift bits to right loop -00014a ef20 ldi r18, 0xf0 -00014b 9516 lsr r17 -00014c 0f21 add r18, r17 -00014d bb2b out LED_PORT, r18 -00014e d02e rcall delay_50ms -00014f 953a dec r19 -000150 f7c9 brne _eff_1_shift_r +000148 ef20 ldi r18, 0xf0 +000149 9516 lsr r17 +00014a 0f21 add r18, r17 +00014b bb2b out LED_PORT, r18 +00014c d02e rcall delay_50ms +00014d 953a dec r19 +00014e f7c9 brne _eff_1_shift_r -000151 9478 sei +00014f 9478 sei ; Out saved PORT values -000152 bb4b out LED_PORT, r20 -000153 914f pop r20 -000154 913f pop r19 -000155 912f pop r18 -000156 911f pop r17 -000157 9508 ret +000150 bb4b out LED_PORT, r20 +000151 914f pop r20 +000152 913f pop r19 +000153 912f pop r18 +000154 911f pop r17 +000155 9508 ret init_interrupts: ; ; Enable Port Change Interrupt -000158 e100 ldi temp_r, (1<w{W#2=lUlB$yueW zY+cQq|IyaS)lAaN#KF{zTto!P#nsu&$PUS4b)w5I?!3nd|3N?3*nozv@!&RiQ?@?4 z7!kOv=^jiOKr#ABBX^;w{7u#n@7#j*&{O6@xI_8}tXh!kBX2n89&-2q1wV1vGP;)+ z;+4VcZOf+q&iH5j$0ONsYU<{v_s6co$B;aL^>fz(@5utez9HsCz`%H#zAH90!8)tv zegBYskzap&{LkqDyl z>rk&f`a21HZ}8vZ{NHpx=QfS?)eKH4am@8Gb$xHg4SL>IdR{gh{BP0x?+rd~$@IN+ z6O?ZEmp>2X{hseHQ)~OjYd(+nbBFvtZcaa+Zc=+bRz4r3_Ui`u@tQ=8&ngNuqHdA( zdVZB*T1)XXMT@7T;pQ4ZVj?wHFExL>Be|v^2LSc@FJQ#LW_!zI*iutP$?Dhh{W5VO zzg)6=)kq*$CfbI=`mOR<+Ad zvR7X!E(r(fr(O!afn1nw<1noJsON?Z6>DgII{<)0$8`~v2c5S4Fd8mKqlC|EKNQIY zu!e)MPa>kj4k`*d+F?Sic}+3bn%ZG=?uM|gq! zl3$;68!T}G#_1EHwn+k-ynkAbm8Ok;H!nkdnX@&8oQFt!$8i*JOA_@9m>g5>pSN9- zww>ZCAp5KZ$TJ3xJ}L(|Cb?U!9K~NSmg`I3Vl{? z0P~z3oNuJj;hNesL*5^1gjkaMJC(h-h-3Ou)0^*;Df~C@vK~PB<%)A0YH#a|9-@}S zSP74O*)Cr@AWOH0PE@j*juH<7`DP*FAKA;tx9JkZenNx0)1)eB?;VmwZXR z`7+R~fL$82^1N`%Xcm>+nS9d@*H8a1N{M`?f9>iypstGs73+cj1C{^qN3&iW`O3`i zk1xY`sP4vN+h0}0(_HLD?*xZS;WiE^D<^JN{>!q3q2r?|Zw9l8<+Md_hONiD2mZhF z4fRg}w`wODoIs~3)v|)F=A$gy-OMc7PsORk5eij^$E_V0X^LZMxoim4y< zu_{c<>R-$-cWT+JX$OhN5)VOJFFsL|X3x(*?#trB)YJ7Nz7CqRb?{)=OnHG zAF$V{C31q?q9D|Eg7S@x9tWst7t0-2LRTPXT;rhZXQZ%+i>g2{r7Q@M`l8F&>IrPYewX60)2T$nlQ~c#SBDjSO8o}5a;qFF)6*E@uL2ih$ z-jb^}wbuUVdm|D5=lJgn0cO*wMPFF@9yFhnNV@EAcrZnw&i`!DAys@Cr^dNcK*p3B zystM3&2p?VP8z^uo)dG6?wuVih2ug#(TUeK|01wz9GbL9;Q~=8ZJ)QGF1HDS)|XtR zFylZAN|fL`D*hW$p$O`ByL(66$kZ^~PrrCy9Jttz)xMQIZu~M4%_;-d;jPS=9fBIo zkWT42A!kcvE!eFEil1g077D5qwuPboWM#psjh4^guAf2SXe+?BL183hlWVci5UuiN zj%gd3>&9qf*%zY#ml&5Zc}3-#xtZ%pj$>`yKM=3APt?&fQ+X7ULCh4Nc#*p1jyY zZH8KLr?pFPU5PR>wV!@uYPE*sYPLozGU^_vn&YIQ$-nH$!jhz393;UWjjLR#A|=VH zT41NG9lBy6{l2>*z(Q(xYP&`BU~D^fg{m6z6f?(y*gK=af>_u-z=R!D%ctW=q*F8zQ{<~w`6}e;sOfjH z-bZ4j3h!d;0x`Z(j0iE<3T;g)2tMJ>=GKDYv4Z$5$!mdcXx)=!H>{k%VPsik{M@9? z!EZT05}@TmH~2<7fwL}{E2v(JZ(D2_FbNT4X&EmL4o)Up!zb{yk{@?dUvf~1OVVGC==t`Z`StDYkaf$mGFe9k z?NR(S&1Sm|7s|6vs~1dfY6W25ppD?Ni%%m;p>M4f9Sw;OMh zXy|Y}x*qH7m2=x%LgYdtR6j7^RFUV7OZ@TDALkR1_HBSs^#qJ84l%pC9rG=4!~!Z$ zS+<`(n3grLj>U~sv{T@0H`gaNGVKLND|<=YDR2}?B4$K8H^ zlT6xlhtd;jG=}lDu@*flLg+_A8&1GBE0E0feVw>Mc9+qeK2KeM+j8U%X+f&sxJEar zsj}@El~9ZbLW&`VGedeKn?^PJXj$kOH=}+rL$QvPT;i19r&68-xF|CFeOw(?NL z+FWCDHV!qV*|>vdK>T+>{Ek{pSh-SdEVK7j_F;eGv6*TC6IiP5LXPK3KUzak`*l60 z0>4YAe#vvI@uS0r-;&b#DSXC2YgTC?7tO_N@Q*A^rOe;6+$Tk=Z#;S3Y<|L(NGi=0 zZTF499djWPX`u1#XPn7T@BJz}!^wvO)>iUbYC7&F*9nnvPi%u4pGs@@Hn@t5BUHPa z>WZTiOa6^ZKQ=0DoEqc!1GT;bQc(3MZ2MEeRl$XU!)a{W6dnhAb>i!1v*q>1iokp4 z-dFoY7-M3Dgk8)r0e;6JC5?^{*%L?C%+7}e(6D``%|IH=CYrBysombvzR$UUW@^=1 zm6o1I$2ZLg>o~*ohlQq(O&Bnr{*P4(O+O9|!(qOBl(~_N+o_uxP_Zsn4 z#Tv}r^&RI7mxgQ}$hSX{%ps^2+1$*JUc+%UD<6xOe)pOF9?#>;Js$5vr{m-PK{u?Q z7r9N#+*EHJ{vVEzctF^qQmdq8h&MXZD$-*Zr{@PFU!#snwPA_JRp1^zC-Y!LEVg9p z;6#yBpfB9_ND6e~K@}DxmqsZCnXXEaq5a&HpU^zU7;}cYUFuS4ZFL%U<1s-IIT_2} z5qXU8sDrx~xF5Tvbg_pzBb4lTMd$9a$YCDggfuF*4wgCz!}_*J?)J@?k&&`R9uR)H z&5y}YP=ch6`3DfAsoHU?T?;F4h<4}rOmy)b(aqd1MvCo~?r@no`FFVQ?4tF<)~ zDJa7%;{qF-RK3sS;e5jf8;#mlwL-LXdU^QSIlrJ$$SGafVV?o9ge0<#2r4RzMx%3X zIC5PUjka!%IlYC$o+`w zzXZoT4z%w<>gT!rf|%e!NI0%V=Mhc?$EaKV{<&)yrDexNiDMf$(>0kTOCVhq`mBM7 zbs7roCf13XCWZhlQMVLP#|O0yZ1b31jvuh^W5_DH%jQ8GxfPT2Wh{!m4h$~oR3GMR ztJSbWp-gHyRv_26T4tc!i6>`-Dq0f1%pYPSb&O3(1!wf#=og5-!7#98iY~wD{wP}D z5D2U;`*MMGBzDNmR9ZE(eGaNYX=cds@z&;{a)=k=RElA^&Pi?I>l$3%BG)NNQ6x8C zfsqf7LFZYcNzVL|2q%D0zs0=f%m=<8L>#2)#xP$yC8U@RzEP+>d5oXk4coWoq==ny z$KW7=Hxf_^v4K5^f%MI6Lr2cM2`N`}RI7Q#t=4FX|dfHXPw0a5x%+qx38R!-YQTYio_TmwX|3f$)tf+ZF zY?P^+1Ur#{R%8!_4+!@Ba&BCCK( zEM%ZNe4S&mNz?QOj@zn-bUm4XUC>^mta#Mj1LuknCJjbwlw4Fg}j_cq4pjF4jp*CEk6}eeRh3s)S_jTT%tv~h;0Q~ms z2wU6Dk(}XFp~{o^)ze{70PZjV$0(Vh2_L3z-RdxNu6-K2S_GlQ5YVJFWD(zbe~D~C zfID>6&jQJ;0Nx%CBE|j=Ve335=gaFdzQM;x_%4Nbb&=0w{735M#`SY%?#F9xj}USs z0=oD4L$8K$?t?*I6_o6qfe%kOM($#}E>dhzq$ zRj)208UoVgqrEEsOn0X0n`&X zhAlvH?;40i40y2>@`{N|W?n32(SY((79$@6KILT)kqH}4jKZHN-3y9n1(FIahUD|g z?vnH!cd0c_K2+&m?P|NN=d_b_(Pm)dTDz@Y=qYb&gMi_eGpKgw3XkUVm%X^SE$X=a zW2$ohXEgs0%+Isy$rEnN{7p6VfZNPvrZn(67=0^-qy4-V!s$g1-jQ#~v=KUC^8*^q z^yM2BM8;+$W`ICJ5T(3uUYQMinffDcp&n@f^AB&7Eyca9B}9l)6B~x)tBHm9zjWJa z{K}Q2)vG5?XNHh^t#aHJkkgm3fw2Si5;~8INw>2JAo104a?uWaq0s%H%s4bPb4Ni` zagAkI(dMGL^&RtM?FV~ixs<*+H6@$DOZ8w#feiRvOV(hBWub`Dm5dezm-P&3Q@vZ$ zK6W^M#`Z1r-XFNcO+6{s*RbJFl3hK*e*Vv_6ttS&cISkBJs%rn-7GCfy#7xEmmjxZ zi*GV}J|E^=K5t(A-=3FqKei7)KX^C&yv~^S_s3NpVkhQXednq5x4;aAv;7xOVesI4 zI!-5p@#H|UmRj=aaU~{+a2H`s9pu(mZbN&p>l_{-lbduX=~nQH@-zogc1!K=X5wCo z1YA)&yWlGfmq0s>&En`r@)s>7vTZ1g;iTgFjg-8pv=Us#RRb5t#gV8VrFHTT!Ex>y)D zESM!NnwrG~M;`-x=8#}(y?bVsCYY?BkEs~e$uW^l?zvedHnoLIYC?2@NzMMziKi;J z+U5nfxVQ^E*F0^Fgf==4{?s#UJAkRl!{H&!b$#Q4Yh2Wsn zpE#&uSy}Q3@YK`L0P6yPyprmb#*asi@!Hu`o>9xzJY(PlG)Jz7-dKTQLKT1I1XDE{ z-bPNHrrT>{Z;IABd70>4$}v=9oAFaAQIVM~x(Ku$XE0Ggs5nR$upCf`3<7_%!dE%r zVj?l@XW~O0@3Vvd*aA{0PlQN+FASO`&F`4m z_E8FC+l|NDZ_-a}cr_-y+6#jU&qWNpgAM0T)>>2MpNaQv>=1aaRm#4V4PgEraJpcE z=_B$X5%Lm{wi?$4ZO+t$epkl|`x>#nrOUlNDN1{e3OL;>LO}`;-ubsb@r`2yT^n`% zu?l31%t5U>Fx~5l42g);F6Iv1m0@Ffb#`oKN0ScVKhV3R5d9z~q2kfviiImWYV-;^ zHQDtuRS<2~zGXkW0(B+9`a+&A?w=Z=fu>mpP+ThKVmc(yp2@Mx6^j_#10ceQwOy4NeHn0Ku3 zB5bbp*$mQ1^BobcMf4~3aTz2M{R9NHNGQt5$1biV)xnwnJ&KO!d}tUL!zVEEg$vi( zu7$RsFYOWqM#caMc1uxwLfRy%d3Y5L_D{o!*-UD_nhR04{0-;4?pnC9IE0n;y(QA{ zSFDv>`m9i}7ySIS!>CI{6&<_t9KlwOIvT1@Ikg{q1NsJ;axz*Dm||>JX$sppvu7D8 z$cKBdoeyti!fDpIhir-5SqhpxJy49^FOH7EY_#7>Q?JB^n@SoZIo|X7liYy)w_)u0 zccZAZ9l@o)eSE`WnPF>i4H?U7OTkCo5~q?>nF)2^>1m^_;EUi66^jhv(IqxN@PI@9 zK!TiV1_48`gWT-UI!DM9zh-SzN5aw;*H#S4s(Ws-qCkbH(Vk^@HFba~383jQ>Z&<+ z%kPxDcjuRgqNhpU(U{UZ!gXnojOr}|hVr7na>5ykw|j+(dC^w3kE^Hn5)sPddg290QH$D)nEQDLXC?0fX; z-$q3AE*`XYn1waNE@J4;rky5FHDpNl)lM}$Zv7_D=x9cGG+BI3J1u4J@p*Zl-r3m4 z6kN0DiU;&!TMjaUg4OJWzKQ(LLf|2X(#5#U?-o;MGFLmWtRFKc?{~I7}c8hHhCXCRx zmR~moThw`@aEAR|KSOMqZo51bE6G8>T74HV?oUKm6EGH&+E@~aQc}u9t38RdIs`ln zqK!Jc&5~(U;#*Z2C7Bd*Cq2BEcWtkq+uj}$Zxqb6yj+_U|9j6cAbg_PNp%1CdEfH6 zeQnQ8oKwS%YcA6mr2v)JWf}HGO+ypGc9WMKZ+Bhj}?VcI#oZe7!=pN&0SMtuWEwatwM5 ztMv)g6&Q2roo*K8!MepE^yE(C?VWb7eoC>bRmf5|RCr8Tukt57n;l=MvKHljmK~?9 ziFyT>T{^$+{XPCIj$!JoxE_^&pPhj_);kaF8CM+Nt}SEXD^FrDhwpy|d+)U3nKO_> zP<2N44T6(rK&_^9;c?*Ufg?NkZ02iQL+kc zr|JuVOidf1ciO*t8~aJ$S)e@~-Ig&c$9o9P3v%xk+ zu{-UNrP=NAS2P-|nOrbitCeP!2wQ!UGL|B0F7lEky=qN`_18@hE|fR}dGZ?ek_dyE zv0l4GGDMy_1g*1o@0iY-*2Y8~e`_+v3CDaHt6`rq>RrA+=1b~&*ejPLI>w}_PRrsC z@D9U`v3p`i<6OOmwaAfosUN!D!^x^#n6Rg;{FZwy9?mD{FWVaPbaTcCU=6l7WOW%9 z+iuP7M|vYKdD_@8ZwY#}DISKZ?Y3=9K6>fcN17@slMKfCQp3d@+qvCZKGEGI)IZ!g z!wxZDSJ#$u!UcKygcGsC+sCmKTC2@jwkFo<`?tGkRZxy_STxVZcueAm97;oT7EuLa z3YSi1gmgXWo0)Q(yUgo_E=k+uKICm${gPvJ=4lan35j%`gV+8zR?sf$W*JGsj3Qb< z*HhQck`-YCm|%w?JpO6<Ff_S{iqRTeqp}U0b(? zL2At$e4z9KM~E4&I-L%n$k{BYCc+b9c+!Iy{Bm$Shr({aE1~;}KYrbtM3Sr9cJjhP zG-c0=>crk#mJrY?ym`lx?7(^6?9~l-fiAd2&zxPrl-lLmO<>cP`zXe|T-9wL#WAy@ z+eJP!y$FiStk@U-m1f4ri#Q~4lD}Cy6NE>8WE>AUL5-@}RNj74I;TTA$3Pyc?S)-@gbl-xb8_ZPXtNx@ z#Ljj-%^sViUpBF z4LM8>T2eSZ#!7N09I3#T^s^?zW!czrur+$h>5&~L)jV)~leqErQA{#)emaAZqc>h+gw0nhl(y?K zj)eHD-AB6d_&g>v!|N7raI<}Wn{Hy1lP(NLQiq6Bok)Wd6^7}aIN)M2U|V?_*EHm6 zcP>D;YQH;?-8TdC0R+}p4ByJVC_DK3CSVD<&x7*)J7K6GTuRes{iuT^{_|CaQ$$P zl_PF(@?wl2GeU|aJx!ncGd=0~Pdd;K8omtR(K=;QV2Y>zza}B-ve8}w8Fyjm2bVQoKHuk(}M7-&@$N|I=~F*SF{KT;IJgP8!r+O|yT5VWt7C@5+{a7DtT+nS}rLSf13ojq!lw zb3mul<|U5k**q41dw1n-*{R_jfMxO0(_^7v)xm@!iSP! z{fNQ)EgZYR!qJeZR|4zPdE%A*-B370$ts)l>LYS{B4E&U#6OHt|QWETcLwZl%bYQXt{GCw;)1` zQr#1%p}-b>Kk?*2SA11E&&HFXs+iS-$R@$B0M*Y0eczh@J)4@s$E96{mZ*ps{dX5K zrIi>p!Ti4EcWF8N>@W;-hh(En=k2Eq8RKr2CIry1DV^JfnZgb25?*H;7Y1BGY^*qE z4x>~f-Erd0P-)+x%GGrUdmPjI;oym6()imG^zjt@-o@>6oe{6o<#eF_y zZhn@0-fVv5qCfcg3v$y|VDyRuT@jriSV9!E3RWQ>PMPa% zK`5#=ld>=@MtCBvAoFF)^fxd8d(-^Eae>w-t^`|czq6}k^iU~Fl=L7|>yX)t7JBqq zAALQ~82~=esfe%I{?w$X(id!%!i#V~;M6sdv|V?0M(a558(MmR8JkF^>UOi6k^R={ zhMGUeIhi~**(%4+mfJ4@a^V7xi#e~jX%-vI>jkF8BBnHf=yZsR+|lxI1(}u;Sf)}syaFbT8h9V!6ontUu=`JNuwmPg0u6U+Jcg`u2)Hn zj)e{Y9|*Rk)OqV*;7zIZn*S1*&O*b&fQPi+aJG@+}HU@1|i_9eB_aux-JF^D98qxg`m!rhs{b-2U>NgN)rm;VA=z z(m2H<)0de}%9u*c&A!iNMK*Dw)JkAgCBL+a2o08q_&Q+u^mjkVbqZXFZWE=9F$ydf zYV(zR&I~TKmBU`elLRx#eS5}~Lt>W;Ux<1D$abM?GTc%Ml}?O1KjMxk9U!TQ;K-Xz zxvKAgYQQzbm|t6;kG2SF^X+Y3bOxcQeV_T;YED1>KIg|%FRS`=kRz`Zd%C|iw+`OC z>ptHNnA8n51wd7sjI6DYk;eFA4Gj2(VFRJdJ!oK1NRR#$!=iOcEIL{xv;dK1t>Q%* z5!$?8QI8#u;;$AZf5Vu=Jm}$4Cr&w@(>rSzzYj;VkWz8Ykr%Wtbx2Rn8QWyW}hv6I0n*>+{neY7QH^e4SZG%zOmyasDN9zNEck_j=yPHze`$q@oa z9Q8LjVM<2VTC9~5SU5TH?WZ7BGbME3H!}8j%!<}6L_2k_qAnpiV3-;$prf|GaJ^Lr zAZ5(7>d_p5zV0Uf1k$)cSHe83O%W7qJxzDU=dVX{IyVZ5#VT%AHY?QSLqL-VPnIzw zHX}`|eu#*he8%M%bfO6B=Q9H<5$bj%{$a65@ZDW)G=Qy7Hda66$t&w+y2^}2U>a^! zLE>z>BsK2dk2M=@SOw{WzZx=0W?=X~H(#dYu_L+$)>E}0bDCC@X47ar z7aRJ;%`ysh$u-crp8dx#`t~Pl4yFfLSOR9;qydXiLxMXxc+0_;3ptIwvXRh z@(Io+qXr^mm7et`@{TDN!~Rk6_#Q%_&!gjxLMMV*$|zbXJsdz$rvEJ|TkGtU3BBDdSmx0OlSo;Kp_k| z;W0=x@mF<~6~`QkxR)JYKCGO2(^gWlLru&bKkWD6Y%%QbFALU0hNS2TV@=tPahL{k z$}(8m2um77a&C*}s}wgFa&T4*7ROOEC*yS@NCEG4B+}k`$KqK;lvW!^?0*aFjbQ51 z1_|t=>)tW-^RSW0Yi5yVrC1`kbj;%*=&6Mtu1PN9>a&sN$}s0K2*eosgD9{nxPNxD<(6XqS?vrrG9)nU<+ zY?WhKL}sC*XVY#`eoQO{4{0*W$x=^m6(c&x?gVyc8UsV;!{l?in`a_B(718 z6kWuO#gJ=Wl+9J&9Fik{S!{#M^rPo4lZ9Z*0A%oqFGVd!gAbX{JjmPp26sh3(a5Ri zrE%F(n<$`2)0a9JVqE#LMyj!+c$G;~kgyP6Vy7Y3ErR630cXV7(0szInP1plNN{Zl z6(199)5=tE9eYCc|KDQS6aKaT6aK#kKcZlX+EdlXQ}@R^+^FTsdF5o!lYu}*pq#~~ zk8Nn0)iZ|`JG3X%{^@MHLM@Wfwk8^EojYOo-Ws;iG>KfJ81wI%?3B-XuOmat&&arC zuWqM``UldEaE}}B{jW!o7Jm->j>pZLESkMP^F?klT>^<7u|}H%I^vOJF(_t8;yvwN zhb6utBw3b%C>iF^ZGk_eYAkHg-j^9UR6sB%VludCNBuFLgbU zE0<>#CUTuC<73CDkW0cTxYEjt6k zhu_-wdRe_&7au0crP}tYVo>wV0)Qi#iBJPh>N2}A30FL-2Tp@#{Y-jXUZOMbo#hxm z6QO+5ejs%7UDUO@OKVdDp8XEt^4^+B<;9(%IVvGeG&-DEnO)Hj`fEc}0XNzphAg8B zCsU-ye(mIsw8W!{w);Gv7Mcv!E}W=nonKzXI!K_JduVenW+G}cLe{Wk8O&Jc9n$7i z9LjSnCaazqH)7|Fr61wC-Ck`n4&}OV@OHJ-Gud$$I4+%@_N@IKxj)q$O z1u9DU(x48}M&HOH;xyZ&aaEq*+~vPGs;&DbvNA(U`Cjx0>fx4ptWgF<)SBQ{e<&=k zg(EF>KC5h~v4*&-wpn|Nke*r6VtY z#f9H^Lv_%@U`+@8!n~M9F;42t7pWGg9ytH&CfD8}|5V(Qy6!k-G&G8jDdjj=esN(R zoe(g|2}M#5|0u!9wzcLc$;mbyy(!xL)#fTI%fi4|Cjy#9X?S9r_>?jltxK_Ym>1u3 zvcwKNFBz%sBuX{jbI{QRltJrG3>GC9Wf;%wW{;l1-Av${22W=`mw$ypp2{e}Zj2Sz z_2nkW_f6-|RZzjR!RAh(DkA84W*OAw`{`<9yPxUnTjJxO4}2RUemwZH7@oRtbC_K? zOtZb+mcV+TbtOY6sY?Cj{@THAz~)l6+zzg3b=gGL>G@gzIgSv>w_Qwi@DM`re$#Up z9@c24;0Dtn*C|$yT{~0vywz7f%vkt)jhw`!3?D#|X5%IHq;D}ueC)U|0srHUM8aB7 z3OQQ?PY#DggB^7_`lroy#}+`}F=%*=D(%JI*b<5;y7|CepgX6tj8bS=ZRbOHI53fu z?2KN|V|;2kOA!v1>XbNyk2>0ngFQ-o8Iyd?6PyB<(};Xg{TuuIF(m!ED&<>?jZLV% zLseS_1R6B2BAlM74Z3v|xQZ25c8OA_sQjG*{ZzfL-tTh#GM@n0u=~^On4HNjd`O64 zBaYyRtNbjX7qs<7ECb8O%VUR##Q-Bn8Xl|p52b{oi|^bCF2zv|E5d;hB|`Tt4wQM0 z1VSew_ED4ATP(qQlQM%Z{96|)i^0**S0DLsOCUO+@O?xC5}^wUqkr#G{KFm@1O?rK z2eSz&iC~WmW$JheI55ygpMZpppCENqP;(jfVZRbCg6S@SDOm{YcFFg;VkQrf^jWqR zn;|lY=Mt3QSkAfv;WU0L%myt!I1}vt>~{GUJF63ZIp|FICRl?FUFAj|onBv6U|WW4 z%OAW47^ik;39QMWC`1Vwq*S}grZ_RNCa@*`u>k$cu9ATJ+p&h1l-JIh8?uV;>x+5g zp+1}|hrR#-Yj$+1(y%=3Zc*a(%$UcKsgNs&t^ff`HgdR9m^|%3QR4R8nB$3QZimu? z=l?~C(u329DcS#re{*%Grey!{PrUpmcAx$aSbFmkyK)6qUds}@E(H+BlzwExjCu>S zB|pRQ{hJ-lO9VI{{kPulgqjJy^MCU8K*Y8JD{KEUvj3s_f1@lhUiQcG*#1klfHqoo zWvbGW1np^2;{Dv1^Ra20YrU?3HflCgxKfG)?RZh*^W2!vk!iOphk-ykYxYE{(t!l+ z?LQe>ARX<$Q2xL0->PF%5myef|B)3^m5SwQ=kpSe=f+%*P1{{L^aKdd{;Q3|f3^8n zgk#gz|7wH!Uu`642g(v>+&Yw++fGe0OO*Pb*Q*olas*Zm$`S$f$9pd#u9)PP$A!t- ze(u)q*_?cb{^HNGUk@i@7l@lfwtwBDv3`8q4_r+Q{(Ykaal+Yud6wJVi|UKV`f5U94tqz=n-Nv2EB@3r4vt7pgk z_4`hXY4t0$s=*pUwrxbS3`Mshlhv|)V5P`_I@^;{;EyrEYD~?zUm|oxTt`=HzPs&z zwzbYxmz)uEh+O~qs*;|!MO)Veu|<~4qU36FhEh=!u}k3^ajxQVkYDftS1#+=pHs{% zEPC|l6gaOh?95g8{QA3`6xBU1W5@PtEUt_dE6=AQeW%vqt+S@1{^Zm?s`= zfl_$0Ao^nP`LK)zJ7QE;(xW-rKy%l)U|>%9iU2=CgyxdAXevUO21(< zfy*o2=8GC6OC^LG+q@&i6eC@sL$N9{?6mu<4D7MKFTP7NPsgK8Pwf=XyS}`?A4#6dC?gp`^ zQ|v#a3@=)iF_x4uR4TXjVudXf;)zZCD~KQBtBB;Sssz_p(tHl=Af+}A?DcqsnWq%# zg33Gr8Illqt7fsVV3s%;{g}DQ?8_da!sO=@IBR2sDa@-P$zy zqBrw9nR4pPY}-IJ(WsV+yBLhad{oTwz{g9{7I$`y0~{iJ0Ic2@@& zo`rBmIIddh7by%I6BT;tXULR^*;}JYrfO!Z^%)gTy;Uyg2fei+}`a=`IlxqW@=z*oxY!R+BR|Iq zdGKz0Dv@IUJ_jiWmj=Jn9_HR%nunXpLn|KXh|j!ITfw|liAQkn+yon8HU(2T|E+P5 zdm$bSnbr1gg_ko;nxWMfs+))M-e8&d;LPh<|Y*8GBe2y`N9o!m+e-+?xFBz?0ELv16nPxt8sddf>09Zn8$6ZXBbRf#gBkvpK)(OXx2T?E zBaYNp92%FlU?UE^h--Q+n%n+40SB|RH!#I@a3&hrT0XAo#e|s%N2r>=f4t*Q^jt== zA|F3m)kEobzEQex_Lb*0K<(!|@Uh4HXy}Wz$ zTUl;r*iAzr*s5$_G23Lp&0Plb**?CH{n1)`ev8iiUO35lzoQ6lwoSIq^#ceN7_mCH zZb%$#CX%!#!%uMp-Ps?Xc(4?S*v4Y-vTA|E=?{BdFE~~Y0Du#@b?ao;6rS?JhIMh} zHeitX=VS|}+LZP`$AwWZxj|fQ>NzP)g{QmJepmPM3qFj+_c$tDFZv%`lsPWlv_?sC zf9|fz);kgHwL1qR+dSD>SwbX#evKd!H(Uta^1aMn^i_`1FG%;Bi4yrEmXQpv&eIFsKww* zrBHc@I_eEas@T?!*=DU_4~Kn{(YTO9Q;9ssaYD4we)BvIzt;cBjQRJ>_mxW{H5hJ> z=qp&3YJzhNr%AyZfBsCzxLqbe!)2w7WHX|xvIvBIYyESE2i*U}<0+#_btSrxI>hz|ly)|r3 zHAA0(p=GL>zp+W`?FI5{BfqN?eeuX^52>KaFuAy~8Qa-&VBOM%|Ii{FBBT&El*M3n+X74T(L6ARxqH>J$-s%`FZkk1 z`yiQJxB_rbF!x^@OMWnU`;kXLP5RNC*f56@-gCZ}_1%ijYy@xVoNs!a_g|hcs!N+} z`kUP}|MOZb=Ia_wRLT1}ccRd#!)b!h3e@|ro~r!;@BQ4H79;-qte%apI}TKFQ=3Xo z`X9}#1Mx|y{@%g8M6~pz9}hvqAMQcVj+q&_zXmq-&sW~g?|q-vmW*v`b}8Vz5NVGy z0>3}&MXkJIiF_T}1;sokdgxwVUN|8Rdh2#$OBf3XvD|2Nj==V>3bP#L&F^B$9XRo? zp4|qFG0e%`9x z;H7s&|4s0lb@;WLIY-n}M8=cI?=B=_xy>1ec2nPR^+rHKX6oS&Gv$(RtIKLm{xQ;h zJ(L5+e^TtjQ)#Zp3khP)w>3NDqkCWjYcz`o*_ttG#8=rC5u0-AoTApJPgVgoK=Rv^ zs6lW1$g493=prI)5zXJq{#=VGg|5+Nejqv3TZ_MjND7LK%02_-C?$%L(8?^%@e;g> z^;Od?4*E<{qX&+&$8^buOAON|IOXN3S?)95Zs@PGGttnh1M_x&=D`1|ktx$VhAZ*g zcBq@x^xx(Ec=^@0Xp`Ru+qaj?)A|yA-DE#`y9z@3;)uRCZ8Sj% z9RQyyUdb%}jod~idi0zMyoqdFuRWYe*M#-Yl1jKTOHvDq{2}9O*%QA2|CllA!-ht4 z%T9#$?Yn!SintAPH`03q|YS~SOp>~P;gM>Oee-e3u< zr#`HM(plA>ZY+h>aBu7Io|ngPMl?%5rGy?Y&lVrs>bE%fiUY)H3KInd@HCU0-#yz5 z<8;QcUUsAo?y2BShd}n)9E-GzG2Y0sT?v>0X&Pk~n1d=z|eFavHO(EX~< z2oDg%D$CtD{8gxMAfMW^vMIV4ounwbgkp9%R{O2pfx`TwA_o9(q(p)X&L4Pf6LPmW zd_YIun{N{iTVxLnDnS-Gg6zYa7g{2I3qxOSUK&}?8QtbV#T=FAVoLm8;*GqD7g-cf zHs9XoG&T(*+j716aZe;pT*>$>M*0fYrcNcFH zsTHh#q`wmR29a}@m2ma5S2Uy99jS_ark^5anR9eBc5{0rp%>x955Hj_OECms&rL6X=vfEAGcs*60KhB|6 zD32)BD_UZN0_F3GxkIhKfcE>kNd*cOJ9o0ExwL_b3d|x>BC$~GVSeQYG)Q}S;JES9 z<^uQ59|DYGLk!Gc9VsEA5z-izL}e~4CIa@;NB zBg|RiB_}F*HJ24vmQX4Ogjwne#=Uw4aS^&_L>Wz^yUBPwzCHW-=u!k1-|*EN zGuVhny9+{Kkq|-h0A@HJVIl1%Q21!VLogSahwy!QJ~@dn+aXNY_j1~XTMsDSgD_Z>7Ab{CSGF`hFH?^#4yj1Fth(~<+v?>9 z&9`l`#Axk?ViGfsYA?K5)%%zz#uvq$NunJ zPs!b$b%lv=RH0_o(k0Fc4UUZl4!q_YJR%4AO5jhGtfik+m)&twbu@lWS&8;JrW%48 zyI+B2<+2a23}UythsYW?8u9McNYN(|NU`3^ug%0yw^pH6Pv2s_mxYXy=Uwm@8<~Vz zflR_K0bNrbTtY@lpoI`HY;UwafxI}I^)l3vNmvUy%w;0Q7Q~2~<7dc|?bKyM-Od?s z(A&^GCsJk$)Kz-Jas-HUH?IeXVC+DnqhSJu3PYfgJgbX~MvE#>;n9P>D~j}(xIR#- zV6cv|SnAO>$^?Wp-$a?lHU-UwYc;J+Li-l`rhT4K2K7MrS#2WSz_V+QCNVwdWW6ma z0WEM2A$;GNHoi}xE6g!%pw@oE{o?^<{zjQ!{+K^@GUDwmcy?!Xlze$mGPPFtTMx(# zPCC?MkU0Hq38clB!ub}Pb{*=3_u?O6+O-^p_S}A+3A$0ff5-EjdXZ(6XsPo9ZFyUa zt>7blz>()DL1n3pii&Px(Y-VELop_%nxXzhFhb=nn6=e(>1@X|w(iZ-jKwha?pe)c zNAc8=trt&jTNqtu>sC47;Z}osLQ&M4l8Ntw#TCYRerLXwUj)S<&qpJ>lQ+#|uh@8M zbZ=n%9CZaAbVzSVcWJa^q?574EZMGE&b|2+jxOCdreSfY>q1d^)!~F zE;e>Mvtv$)y^@Q>cZyRAkA>?ajs;L@xXFoeqa1XJHrSV82#N)^HyG^&sw z*RPn$q@CC_S9T@!=Qybyg~^NKNEpP2>L^f^DlsM!=r|C(Iub!!HHXXA$AITwD<)a4$cR(lDU@oYJwwN2EyWT4!yV z(}ZjpFB=0y75ecVv+m3c1%9t&Lu2+#>HJ- zw_ivzlwfAa{J|J3-?{k&o^_Xt$dWAT12!PfOJUOqP^8ne7LD33O6nF{} zTtLF|1LE<~`Zn&Iio#0gq^tTd`?`LGp>GH<>Ka!SiV$(|0g*b{?z}pU#C$_ybO%@U zj;ph`6zEl>Ce;l5~#C1*?sgPE_W2r(9zgt{F**D5~#n} zf3Q?A34olZyK6K4T)R)3N1Xs_l13WcW*o6jY>P=^e&s$ocNg0@CKS`@wnrO~*UMv@ zY8xTne4PYiJPOz|>eU$0It7z(U1JoJATXZ<>~*GV`_4Wa$nItMjSXkiC2*v|kz~1# zW{kl}9S;HacGM8V@K?Ot>|}h)N2D zEW4N8_6AdUneiOpZJ*Wnh`MFuymq7%+B%D|?_MTHsA)0m67K;E%5>AddIVS>tl+(P zy#si|DpaEWI|(Tou*d$qZF5u8D$X^w6&hVn|DJ%Uyy^PB5kPcdYurmMsgw*&d?FRd z8%g$hngsoK7*Q|mQ<^T(*mKr4HD~~lM~f&l|DO6(3Oo+7`I?B*{^qc;M#9ala)^rIZZHVAj@7?T|D z=ew4YpdD?b0&#k3gg-Zxc!#~IQF%gntJ8cT6?o%K^PVx~^Z2T6jA7UtB)qW*kq{}AMm2X!KGm`34G5?fs}Ny8}JFS1hLWxEm0t4hguwPqq3A7yC*fCms zC_fW>vua60xQrt}7p!iDR*M7(k{Of$2X3W?uF?0N&+}<|QTJ7|S+uW~-uRcgzb;ti z7UR-^cj=HVO}7qTBl2jB%WV*IG)|Wl5trEd72UtIH730iLhswE`8Z8$0%zYM;><8> zGi9J`TYbP{lNuskMVVwrk-$exX89VXI6X#9I_^bGI?k;$-F526Lq;9KL^_U@B_@r| zBVRvg1Vb7z>`UtAU+4b zj5%G7*}_Dk!DN*k;=sPZ8?)2;DRjpV8Gal!hf4^orU4qQ(Tz5arT5m6#4`AFJ;8xS z2Vx7OO62zyZJv{OyIJSOM9dCnENGQ!`dmU8#Jxs3%%Jq}<{ikZmsC8x3l%X&;x-tF8cx7vZ1|OP|wyK$#fM_=}g+-#u%mTjXrEEiK%S zi8$#|wkMBzH_(oC-lwB~x+|zqG8`l4d3k|^n_KM)m~C6boU-TBLD~sKsA?xKY2bOU zczT?ZAI`TPzB@C~XyAF}Rpw=M32V_vucQCaK(E6FZQ9R0*@$igXcKJl>~w?BJndqi zY}`opzHG5;?6*PFU3aDZYp6J(m*q9M;jW1*YorA{Z>}I z@*D*7-1%C*v(W|~LOJnc6OnptDH(VWWn0FakPTK?wzYojjJH z>v|@8(38M=0!FymMqaHM)k3dI)TtZ`%TSU%WPBcC?z_haUA;bqrqziJVT{)hL;e)$ zyewzz!R~xyQPxjyT)|0{QhL+w0pZ_#m>LRP$?75w3@w5s zv#lt*kdcBWmOEgM!om_dvOv(Q2t(|gAHfcOeS;r-&_nGq+6S*rWfBO#!v7_J}W?vS+(w<9TN}iEUtVfA!J|=V=Jwt_PcFJ{MpH(b1~`-*cmbyRlbzz53}^ z9(1n?OyT-o-N7zM%n1dXJNad1G9!^^oMqpSLVrEC+18Dg$L6D+3AI3qiS3E|R@vf^ zjQ+ag3-}-un-QjFkhmqTQ5V^@fBuGrKmU78WGPGZe0cLJe!&&H4bq2N1%$AdQz6+7 zXE2RCXLm%S+Y)c7G($>1Tl!=>Ed!V*NGdAYf@wq=3JChp`3h74FYD^>10`j3&L5|b zQWiKrS;r1UmzZTT-wm27|LA;~;d}YEhe0|LrG0>;kJXBhLHTlf@?4BIQZq1d+{dXhn`C)K#? z2Qmy3*ZL02NYYy+y|}kC`k*djnYG3dkP$1%xXUSSVtU|OMu%Lj?Wx+^@qY1vtP0fW z&a=Mb>@ZQp{N?JEtZHAYcQ*<;^^N@z}fiM|CIw zQdfhD7&8lnp>l5Ho|=ibm_dbDE8d@NrPVu=FaxwTpkD@I9F1Izlli|TPH|By zQi`5RSm>9sT=tdUBu&IOHdL4`yF?v`6SAej7TLjIV!LE1N={wZTiFjfAH$!(3UZ=s zDZ2RsPImU-)L=`3GBx^31)>CqbVi)D%vMMG86BIp_X)=W^o?Vq73qkCDzpixO#A&; z%W4!@>GE9`2B`pW2t-=!YpF_kG}AFl*^_TX9&||FDP!V~yeTL#DfMp8ek)m4+Ce3E zd8~T13NK%cTn#T@@B}Y^o49uGLH{m6;S8@eFjCcb`?wumo~q?J>!8h!6qF!4@ogzj z@>?ozig(JbjQl|2KS28jsQ(2nPz=QW!gX^dJH1lg49nOXQXIu6OZbGV!7CnGK7{yd zc5x{BK0B1l6^=~5om2~CuQ^ue-2fE$#4bjege-AD)yIcnLur|a_WVaHGV3YDk^C3= zGKTmDi<^6ziUH{*V_xj0EZ#VY)-j%VmsD3WYu#W+l@RK97j{PTU(oai*qO|$Zmm-5 z=kH=AmNl(TZ@BGzEGu#2DVUJvdV-5evqGZwv+)=|g{~MPY$-Kk^%OafA`e%{uxF8n z*Py{*M+xu};ks=c09k&qzW{RnV%Yywj|N{At9Uj1?Ok zv{zhEwE>mvJ!R`-m)YsPwvp!R-^~*JyHx%2399^e0Y(3>(E3NMYpj1tiGVz9qju2++3UnM;4PNuSsd%Ht-3Eq_F9zODruiB z(%s_fEcC@k5)By&q&Gu62|43biLGe~;P4`lI%b*)QgfMtWUJzd+0p!6!8$oJRKb#S z8hx>X6&OCuH;ZKN0{e+j5I0?i^HP!OflUOlwX zZE+*WXp;&qxCjW>wd3ygulG^}UqN|S>8I&;iUoU)CO+iAYV|42;7JpHku8{W=Cm87 zE?8yT<7>BJ1nL$x*h-zF^12xUY5G2N)6~gv2-!}osUQ0^XBMa8!?Es8NN#`{^JZA~ zThF`VP1w{#7g15a)$0xc#U3bc$V|TSbN^^T1a@C>@WZa#uO9&~XL+ONU*2+EIp@J} zU3r%^%FHQSr}L{eCQb9#9T(Sa8rUZU#}0y?JoesI^vk5;Q=j4h=+==$Dg~Fkazv5| z@G6~Ybsl)76$|%KW;#o~B}k1|)Wr8b)EWHJlU0gIAD{zi!>yjE~brR}Q z?Hfl0=1QlxDY6Cc#FT-o=(q6_A@~*+yQT%ffz^m#(#z?{9B6|9UYP*QV6(P8f4%4K zG!C~Edd?pQO9}jHh1{fL&h>rl8V8jndta9iezZ8?9Bgp8s1OT4t=E)c!EoM3t(H>O zWhXur`|*~pCb#+2g>rU%>}mCVpVQjlQP={GcKQqD0ha7@ulQ_H*Bsj)`HXP( z^>OyG2kf&3YJz6i8|<*e+_F}&2X86{6uzWPtHf_u*uu>Fb)X7pokj|RI&`c!wN9m% zkA7z5m~~@^qw|i-*I(r4gyJ)xMjYu=e4bgAcY{VaLU$3W>0lF@>an4iquTz23g_@K z9D)PBA7xFS0^T4vH)uv4x(^$6kQ^I!67=122q_dG1Va@X(tlv2tW8n~ok~iQT8VZO zf$L#l6ik)wC5OMd-Qmgp5i79P!#f0Mf@=QNkAQIXtH58G1!RP1C$us$k5<`cbrUO9 zcT3lJ;>B@fe(?~G3+?A7ktlX>6Q4%uja_EUgOGJL@IlxPysTssX!iXs{(PU)7b@kH za=A-Md>PUCFxvT8*ZJCSh{WC?+;+?!!K?xU?n!l39L|YO6kS?uNH}doZH!EBTv*^n zIZY8|Q(k1Js1~XyXJ)?Q8r4)CWmTp~mw+l}oj6x9CrM~gg(`Ilnyum4&r$}QZg58w z<_(0v3H1s@Ou&*}zF*mWoE7+@)SX5)Powz#k#U(!H@n9Q9XV8SvQ_J?)N!vfj^3`H zAhlKP3;IQ?as?iNdDpP^6K;4@0}1F6onRNG$i-vIV+azF5lQuRBsvWKYEE=8Ha zWwBbIU`Q}p5JeU(yl z*A^{%vrc1W!{cSlo}|kf8;jJthP!KV71i!G&d6DS`0)sCB{H`kg-`Abw6>ZqC~hv! zo^afqE$t9lz|}Rd$rBrLznK(F;b(|m1KB*D@7Jr~1m03_rg;yWg1{8`=p&(mt0I{X zi-TCFHgB<9!vvGs9RZgRD5*oNT$#_byvB7|tUutM`>-GD50MU+jb^eDA-Mw)k+{)u zKe>%KL2p`~t382(g%KPDCz8z+Fio+P4M#QA?*&6A(nmSSI4~!&hE{n~6gctY6kwK~ z+!P^fUF;D)96pN5+N9DaJu%a%pD{U_Wnb+Q$jHW`MeJ5OY4}v``2Z{MPk(N1Cr)$X z0ex2ZlcF=K_&s1bAPt8~%`95b{l-yhOm_lB2wVmfmo`p?I1Dvnrb)V`GoW_)r_9=O zn;mbMz$Gh|C`!#Au!E#XSI}vBoG~fEO7hwor&1as2Y$dv1%zWzSbA8PU)cJ-MEK(V zJgM@1m{|JUSRCiUV3{?Dki6rC8>B(meO+LdxhZwIr{&OLdQyFvvO@K)Q#(x9M^fgf zv4ELr+TI5M3*fR}t+_Pl_&FzeyTr3LTqD5h>$Uyy!j5`+#$@)S%-t!qI{C+>&}goWf@=*No2+4%Z>ja!=s+9}K;!EoX@=Iervf*6k1(iy;Cnwov0!T+B3_0hiD*IJf z3;|_L=%Y!lEv)@B&8iwNcI7Hsd=$Hm6$$q@+fj*|fgioOP4rWe1#Kx<#VFxMjocI}sXNWY9Ts zi#tZqv=fxe182`@ErQs`mW5(e&=VcJX<*>5^a@v5H!YsqQdxO85q@mR0~wZd-Tgaez%c+&*Dr zKdF;-LSA$}ZfKGBn@`BS#qfM=9kc?R1p{N@YPTJB?i(7L*wgILclAtImO`Hi% zksu=WM1|;=lvO4;6G;?Rei8nVdYt|1Lx^{cT1f`zFfy>xaigbTcXFX{5Dp+>IfqJn z1-NBo@H-_p+fX*)6|W$=9;BF=e#7Ss&teyo@|eJ(4OX`VKXz!(XK}MT00_;5=;^`O zM6Of3muQwjj$Pd)pE=B=ByraSu8uRJ*K&#F0sYq)=ANA)!+` zoi-ye4Z4fJD1N7)O=`4p;?Qf6HVr~O*&R~7b?J!Z%98uIN{ya+m#J&%CeR@B?OY}K z5ijEy;dKnd?HXtf8EIEqM*Wo*{N}cdk9~mPSSGR84j7OR%9xFIr?0nt1Z`(AfZf=O zMVA06=@k&8^U_Ap{%91lM!z1hM|#Jr713r#d({IRf*T~F{|}k}mtg;E_>Ts1{~}T? zYy^Krn%^lv1n0l)R=1Ywt8`HuIQCc7jJ61Ex!*%|(~^dbUc4&SCXM?iP1b$g9saccn)8Ib+k&J}`3Isv(1fJ$3;rYi zibeiW)rqdIl5%zaDR@b_f6BiK zsM4WNd1Op^g#C}n27_n_P<*|@SeaZ<9D=cx-|ZvG(-4Du_rsbuORq^tW9g>&Y{TW4 zYyXrzw0?a~>7-S;anFFG)j3ssZO-P)?wqUi;@oG&Rxb2CbWUhT{S3IGxpR^Tu@Zr7 zVCxNK>oQ+`_u2|1*J`y@5JR8~Fe4QOk%|0%dhxqr&P3aHYqPq}1F zxdhtUKdN<-zo@v96k*!wg?ycMYe673!pgw0hi7YLW8?o5s6Y1!2^%#0WaM6*{Mdb3 z@}7GwOrU6L(Y*4fNu4j7?`PAWcpNW*6R$5Z`x{?1-`;lV7g7ZkHhxEQaQ||8^>KNZp<&d}DtT}L zF}g+@&#;wS)DnMGltX@z9seq3{N2+k+tVuFq|Y7ssp~_`%USY2CFJGoPx)5?Rcsf| zeHPDOga0wvx_PWz*&;gV>XmBC=?%>}uU5q;<_q%nKHe0SuRnjgx#7KaHtZbG<~xt) zXR~dldX)A;;IGrr;$rXBpd7Q+cagpVgl2Ag4DO1#Lz|Ml_Z&$wZepR`zpztHC7fTf zNkRM2vg88{rh9@M-5nWZh?*^)Vrk~CCc$sB`vynKC`IuFsjPRM_e;(3#m?I`ZOMu} z-XDS-2@qFk1Q|e@ip@~^l^(-XHz=w>Ntg^tQ_kky)7I~oX>1u-2hJbz;4qXp1)9!U zAhkt8>*WY^zqlYmKkZo@ub8M&b?3R_N);gZf9Ggj+)$Nzt;_KeFtL!kgLnTgFF zzIlnz{kiG-^8sJ!p?|W|>tT6Nn-Zo75bAb4NN_QsyVj>@qOwUEOcMBtQr}}W3H~4o4lp$`t;Iuag{RE&o?J_iM6A-F7^8~Y z&|1RRfmQI)i5-R{SJaE89GaebdV{WFZWIS zF7Jkz3=k~>wYzY%wMH=9UugnsjN6(;Evcr$pl3aQR-7?Z%xO#R6uKI48-D8wFih z>@)BhIc`XQ3L`M<3U-!tjr;t1L!*#5-TKnhc9?b4j&-LpS~QCuvBz;_bEDi*IbL0q z1Fp{t(_XTPR!fhJ{VD1CJ-lsv6k2V{U6}W(P|B$#l73B9K(#l5)QM%nR7Vusa-$Kh zZ-Z^kC;w9b&3FDM^wd);ZRYY@QtVWyRB3bfzB2;|#gTZ^Rr@iE_F zm9UpeD^KhIy^_l)L&P9{;t-kGMkE7~Aty^w!3;R{4ub@(QXwVPAug_if%tq(jjg;v z9HW3WmtUEDK%s*8R4vmu!I4el!T=oU{R0AZZIUR**3pJLoNz^vx&>{46({r^_d6wY z7z83s_VHy|Hhki{x;>xn5edqHc`EXX{jK>TK5cReCx{u`7~ z|qGP2dgDD4` z&3>Tm+yuOmE;hK5E@Ff`^{RMD6-1aPm;Eemx42gFpcz@^s-ai>2z@Q4@QxbIEQ5Jw z9!t%I!nRd_LR6h}`B<6#DPD1TI2|_j{GA4JQnfw8*8=P#J(nDpJx;-3eb7Ak8323w z8cF(5@iZ4S84XX=1WQ4BKjKI_-N&mdm_BA?ni&O(blkw!MT^GsyM%M8s^oJiz(dE6 z@hfk0>h)yaQZHQ}pqH*Y2zf{DcA<8kt~5HT66(CxA^k3jGj^ZQcPQ2y3B(>cfUaDl zce{CBx*Z^2nb&&ZJ7fRAt5$(pv>^ZzTuWWix4a+PqpuYq@6__-9Bcar)Q)C4HPz`~ zzV>)LP?aY~{|kp8R@vimNbx`LR|Ekb>fETBe!CaiKOiNh-|mDq_Zv{>q(HG>>_711 zYqbt9?D1|{wNA$$_{H+7by{GL3qay8_+R!{{7-|w?R+Y#*HndCtXT4o9YG7I%B%5* zf~qzw`J*6p^p9awmF3aQyDr#i(Ly}A0tBU^_!YKuF_i#>!^d%~Y3DLRZNAcACm&GE z2ZS9K;`@1j0Hpk4W&Z;2ANCj4EX0*6Op<=CTCk*xvZ!iy0}44WG)0z#io@#<`Bicp zag{OF4oYQV{b)7hSggxdu!!G_1RkN%`zT%^(n006I$0T@#j;uH_KIT8g$=Ub%HIp{0=Omb=h!U z9N%OqLsed!knCLmg3c5DYRw+UU|i>4kzTaBouhg;djspaR~1PXx9 zZNirKzE=;Su14go-uuQZR@tqWI5ae5{E>?$1@IZs+Io(fg4wFxMtL?rGqXlO>2pJQ~MiOqR+-=jOBY zdPckr{}!EUbde_y_2OJ%I ze4b{AWiE_0`zFoTeBTc47u*D?e|}^;ldHH)d?gXETvN2{tk=5v=ue*9VbWp#W0M-5R|+6ZcLSh@I<$-%8*%HRCUwD>Wtgo!$iCzd&+ymn$F0 z!`c4cUpK}rBN!bcP39z53xe?hTW&!9g;ygx>wbV3Xp+2qsLtxb`_x`46BxXrdvG9l ziTLGRMRHX7LP?p*kYoqcV##QKB`l_i?*JC7g>rG-IU2>aYi87zC19kioaf*i8lS?b*fi zqp9HGz#du@WO2AY-X$F9)ea>~>wLlC4s>FMm+bGNjOn|A?K65$1@-_wNs|;!(a9C6 z8G>}eeg+%M8=l)2p=D(^)h`s)D1Tgk~g+b?&A=Ddfd*-*3}+H7E^ zm#KAef3DiT-uXU&UP3uvg%=S3C`cB;I26Ek52AtkYHj03&oY(3TbaVqO%2#@^8nO1=@SsB{AnDBGD?=BTvt#3@Z zwycuk8x~|3zS~GD(H40vI#8ubOeT%uKF}R{612c~>rk^p8`w-W)h+`Ji6Gz2|M z)?PA%KC^|k^p-KBu(EUDgL#-Ym2puEC6!P2QcmS`}+r^B#=$c z*F>eP>5ogj*?3I98HFS~#gR2#j+E|>5|BpEA&w!RUkyDrO{>SN97i0|?P&8+MB=u* z7yL={QsnTIY8o>i7acIg%N_)=D2yd2so(8fumdKfq#h&H2a^n#iSOZt2q>%`@qmn* z87wq4S=2C$cPviDb#&q2)4TxGAoPqb&^V|zZAFOMk#W#!iAee=W9O^!aEz++48f@7 ztORHHqn*i+N}pUH_Ke2p*Az-()}Pm^+rz>|$xI+fd3@ZRa6029yAFeBBa^UBlBLPh z;DqoPO3~gFs%RgdD0Pv|OhXlU4w(sq$bt1e}`o8V5# zJWkz_bX)(#ilhra+%rU{teL|Zq}|_m(Z~wbc($H@@gy!yIw>Bq_{TOMxVe=0Y*In@ zt{~RMYdpiNc)xt?-uwcsl7O#1hye!AA}p76!UVGDg}KO~qU?hs3F`<34Tl-0tY=_T zydP_-btFs55YW!6J?8BR%UtnTYTPk!zwc!pW2TRz<$AaPgBCIl()xp{7OU{l`Rd(y z`M#{zbf>e*P~}%;yxGBP?wIQo|5?7`V{%2fQI=Q#<8@)*W*Z|XKD)Jc69d}1mAHdK z@{?>vzMgpG<4R&*|I)N2{p&ywVRcCn*a8gQ&>jhRJHZ7q=lhrq13Ovmi)03ti)(($ zDt5VP6fn$ZZh4we8;;Yi1gU+Xc5|IcQs@QpEBe6iZwm$X84bBt@8Xh+uy-0yGF7*Q z`zVi5SG|k6X8il~ReO{M=T)+riP|IQVB_HvZe5+%wxJ7pi-~Da@$bXU$q&IbS;tq+ zL7|J;*g<_-HfmQd=N*=!c!DTJ*k$f~s}o)R$c9GWJmL@Qry(D1)N2iVZp`VQZ>nA& z%NjAqfdvI=M-WPf=Wx>_-*4rXvOGW!^s(gpn#P!d=jBdXz$-i%hrMM&LHPjkUm0GQPsKo@pGDbXa1@ zj)sKl))I7H#<&)AUeEX-eWy+RoteDQI!#vE>b!kR^mtW3`3dKuAYg`NhD&ft`QTRP zVLMyGR^3>5JKTDcR#U&7DZ|1GK8InR)r&YBag14Onf>|AAaoU%sK*FH&*sNXyDt}A zzbg)3>^MZ5aEP^{-s7?VtOtq^EF+vZ z7t_>jNv@9jtrat31kyB?s zF}9kaN-$xLDMdRH5jrDSBU=Q-ghf8-FW2|Flb=fvl9y*)-;* zO(C|(@rao5faa*s5L}U?$x(KWq7XI>+&cIo-@-|JWrGdp!v?J(YA-C7Q)Z*X##WWA z#P=D;W(|?eHY9yM+QqRY*-B<0+WERK{v9it6DF3--K+_lT$q-DK<$czh-~|9ztCB} zA~aH|LFDj&+KA!Rn*w2*4g!Vq3aV?H$z1E$Ie~AnbDX_4Hdsb3jxz*x>DVMS>Da1U z!`2BOw{nJ0S24H?WWj0-Y*V?;qxown>SL_y)|!Yu)lvRcYXCZ)5d+nOg}i&rX_dnz%xDy zBJ=-}%O4#}|6%_V0+Ho^eE~)8%~^Z99%;$j<~o(XNme*F{exw?E7YQ*q>(XBva7q! z(!t)?HVLw~PSUBnMrG0VyP?ar^1OkCtNYcsfn8rD>7rxkJV?Ck0&3 zme3_$?VVz(iBvkqkznVd2yRlpjKf?6f68>u38yK4oWoo+9@|5r(84>Xsp(^Jj9L4_ zh$Jtumf|QT?H%WJ;FiRss#AOx;c|Xa`~ElcNprH|Zq?hb&RQRQtv>i>P^OE;@PyUn z9(r$08g517f1s!w+BS@5M|sX)Y2dd9M)SW%@8yvXOiuUw+C(7sHN}AgtRI2{OoYPy z{9SJ=Pc*-Mzy?-(Pd>4{R?Oc;?&qIMpsnH^Kf~@GSbsiwAE`X*A&oq}>G5eu2+f5gz{l=+>#;>ei(NS9O!0(GI{dHowT^cfD0)iVlU8s!nRvCSs{euM$hM zke{xp%93#}!!719jCEjeRk|5kBnv14Yglzq1>Gg#?cGq_tYakDnnU013BJ`TVbnke zS9?)3uicqWZEZ>tFp6c!=<>^%rj36mw5x3-q41D#)~cFM*leUa0?r_*$mc!-N7?4m~vps=Tv zCG%b)H#TU{0cy44vR-<*FM6K2lkhO*{%-+wE9vmeUX6CXJazt@waps24isQjYa z#OSjLBGmtoLCmyPZ{z2l#7j7}0eUUWPP_jm)yB^&=2-{%-t!GhBvX&4R&hk6EGw8F zJrLQk^Sv}-8YEgt^_PJFu0%&+)U6r*3_*Lwnd@AgqF`>{!)pRRgM_Q$$;X9O_QP#T z7{097)EN&itr#L+|DD~Xb!(4prLos41UcJSQq?sCV3&yX`FCb6;K zQ%jzmO{fB=Rq&+ta}@X7i`!;RRd|aaNaGr=MQ3F(^l=Mbk%_dLyffHJ2i@}?117K& zAGWsc(&c=wZxW;D${A@zMv)p0D}s?;n~Us6osN;BCLnY443@%$%f|f|!u#4*!~2kN zUHcu5k(82d#N3uOWu`eEK3Fd$L8dL_W9k$F?lt%HWgmMcEdWCQfUr+fTn zFV-MHH#T+lXahI;8jpsL3+uou%jIq3O|vXYj++I)_k77S{HjcwO6#>>bL$a$K%t%@ zT|{8BMCCCNE|=Ej;wV9Q&8{b$7LlA}erQNR7>_SVk|TWztXXJhKGC6i;p1dYo;~Z8 z&6l#WK|&Ajx6avhX*0YAGF#Vh0KKiwieY8h4IT5!)i0yQc}Ro%m{`{dex!t%T6GYJ zS?O%!rB~g)Pp5B>TJVAx60<@ymc3i>5{Oz@IqtCRuX(r)tt<9CM~jXTBrNpa9gIH= z$JUrhI20WvQ820?PBT}`j(vP5zG8TXb+@qE7}<-oP=9+_Lq6?1vlK03$;Vo;-CgL6 zlRjr}t@#8rKbl424|8(lnlWXyWJ_3puZ3&;&4`oh~w-WdL{-3Ig?o`iE6g{3Z4Kv^KJe`L9r% zEwdbwfqBzz2T{&oZ485NHM$8j+v_@Mps&twh$~qoG4?k;P6@D!qGk-g&sE4gX&qQ} zQn&d6wI@8PbBPvGC%FF}8izPM>LSP6mVB+b8q&n_*mm1^8wig71uwfb6Px*E|CtKGAEQV8f3ctYDWc~;JWmAF_KpFpZ3WlJ4KR>zddF)?*zg2A2?<%DI(G}107$| zJB)*dfm--}P5qyf63=+$Otjr43|sd1hgqu*K9n9i9ljf~Uvt9Ih_i3f{CPnmVXmBd zyRExxwD4Asea6jEOkZi5Co{|wV_5pNhkYE@=UDaRrF6zbkP5FF|B(VZ$)+|& zXhw*0uRLfwVf5#uPi&l!3KCabuXaMGGR_Jb0kkI-I9^3>SS*>s{=8w4rjz%i=JP+0 zPHv!yk?viJ>P5QeKF#X{OvzP__#Ck(U4OTy*)Q2vpHLdC$ta34~cHfMDRJ|jJp5La`z{TC;c-{#Ys_A=Gqm5W;3t)werrpPcJt8 z1g|NEB-D#1AVs=V4ZpAFc>_6QOEss3v9g8^4)Z_ZhR`=IqQ%hpc{b_thh& z$r(UzQ^hD5eI&iW<+FU!4#}$E#;|R*@&_hQBnz_A6n5A%9j6QkK*QvPWT zZIZT7bHH-Md(HRTLyoky&`yFr`pT*H1`WmR>SekUWXZe0g0bCi zb}DLhax*e4FNAN)aF>R6CnTO5whJX*vVP7cZOp+_TYY1VqiB6=@S3B%`4g*;ybM}w zbu3R-Phv6(AT4d9+dlfoPk=+ZNJx8GpRHe%ludemhjeU>>U(EC^Ka<|U%kzL(;X#! z4}G+-!5eQSUs+se=kWn-EG`OY(Y#)wcPR}Gr`aP=&;$x#@qAt^E&!e^+I)lYcQh^h zEZ{+yP)c@_^^KhphVg<~j$IRK219{cd0=~c*!Akd^FR5X!;GC<;oY%i&c&aGV5FP9 z&FL?BvE)s2;q^9Vq0Cr~QxtXQ#?DC~Fwx-lES|R`kX#|25Gl7_swlmZynueq3D5cttbxHzoB&AyZ~W9gg|HslUbU>N9%Y6=J7# z*eUserYi0n4!92_f(9MCv}lHpbDzCe%QZs;E84T96WcsSCNpk4L+;(p`sQVE@6A%} z&ZHVq$+2a{XOc?K?*(Q`(ovD`>xc1o9X}+^j!KK!bUHw=4lk~!$RDB(&KExpRH_ND zjKBWG6D|^3+sffLfO`lD~FE&vAT}b&c@>ROEPSAEWSqXu9ZA zW$1-|h#LdsC0ox2y!rO6q+2ZwB^@jlI1v*%u`K&IjnFFNI{PRmTB^(8TlJ1D*K&zv z1$`+m4bzt@sVuz9_;}u7b?tbUO>m6^-Vwi+8V57tmoB1jdci?oz^G&rO4MabGSh9_ zxqH{o^A&OaHXgc!QRbat$@A$-7Kp2SD#mAuOEQ8oLW#v%)VxA0hmVPX=Z4bYN8o4Q z`>r)v+nL6>k+<53y(Z5&lu#US;kCI358G=DUXO=2{SfPk_S1s6;+eYGs#Twnrx#S2 zb~?L6%+l!2R~VY62>ZUeC9HEXB0SLCQugL@s4(5Io{uLUDmq~~`$Ndp?|X0>PAAAt z%^7?(5l0J;99xJH(yh#Dz$r{O7nT*4y{7!q}l4i#$^`@#x1WW($4N%cCCc?#LxZN@MN8LGoyVOhO_<|z( z{Nc!i_Ip~&ZaQZz$a)Wk1UZ#+!PTMYyj9oDGtKyY)w`XvcLYvBP~#-VX}h`wMY?S*KMh$J0|+(+7J`a z=##BH&B=}M_iEwq5gaN|f>m;c18_<9j_tK4QTH##(*m`Ji*}+wudXcL=l&3$H{maW zGv&x1W`_G+x?l>ofhm-pd{mA%g7u#eX=2(o9_dkzC$S$?w<{9v!$-Nky`${fTJRZS`EL37VT_>rOrhhJ7oV=b>Okn6e1~a- zQ9I<4W*Z20#reIWq$!-5HJu4yx|U4k)Tv=K-ZZIZP;Zy=ULH8$V00ck=+5ZlDU_Am zFn*;eIEoimwqtcKm-d$JmHKYrcE67`owC- z1c*oR#ojcUDar^Kje@7f61~gQz<4VJxNun@{q0(P?_$taPAc;$2HG(eu+wAsd-a9+nkubEr$t{oM4knUDbLVy}4 z<%8|%PVz=z8E($tQ`EuU06kTrgb$7)<~m57gRKUl>>Fn(upL0GC4(k&vpmdpv{Wl$ z`#MEmq*5jMDMJALAdx@(oKebz)?fu6q39LvBx#vV@iA>Eg}xtfzr;UPR}UTHW{r~XY7X2rMP4fqJg zbORq20xy5vn(EHz-&k5ZlxP_wbj4%etuoIgZEAmWc$tS~Y7!W-Qo6%EFS$51WzLBaYv=DVK}$h0Mw88%2WoDeP>N z&X3)Z z?Pf{8Janm5M?YJu^hJ!--5P(QU9(@~d@c+^ec@w1%WjkThmUow(fyD7uf|S{3s+K= zwyP;=Jmq^yPUcVSLgUE{M-&i24yItL&3k<}G-p1NVI;)UFS19<{ALUyEk5pjmah;%a^|;&rl$COn*Z~*72-h zjAqafD15t=&^+{$kDJ#@*cpXJjV^P^2m!G&QOqLa<)O-CZ9|x z-?dJJj~fq_1K+0&e6?oE61wPVR{Cevwb@AvTn-o*R3zlPr;g2X4XEX6DP|!nuY4mD z=)b;d%URF4C*>WOwl)`u6Zo!q==AB~8P=CeR4bxNNk2CyRF0QYfA08Ve{PHaJXyE> z{LvvdIGO<~84b$@dsoNOz)@V1$k5xsac4aXdQVgZ4@VXc{%W>ifuNvi=S@nBYBP75 zxRP;7is-wDeU|{L7NH?>u1LWL=RfD72Z%u5rTO8{o{Voh{F1UZO+$*JlAWkK?cuS ztypAfSJKMQ;RTmJt5W?WFBQ+FoxS?;MYR%@?qXZHz(6y&V%R*>VfStXgo_@IDo3zc zZn2-cSB{4fVPQx%rcOs(yw#-ZFw?U{3oQo-4Rs5c-`tTe4ZRCoqi-cOkVI-jHuOC5OQ7Cyr-_m zcMqy_0Siob$e28z-8OlbrbSb=1Wg`ZHfHsXG`+j#514AA%T$Sjara82YzT~R?9Kf-j)3|UL4m5@-Mq=Rf?RlsyfneX zPG@vAKZx6P?W>Hiq@Crk;p12v@7PS7;freoczR6AJRJ?}Y;ALjpY!l_N+WpCrusdP zc;kmX7Oewg8L>B=XV&=m(-2uL6X&zQz#YoDwc4~y%R#m|p_W1hKt2=M)plB|z_Lp{ zUY$hoYNd`z6%aYv|M*H(&^5B7xrU>I-jMwUY(vnztQ!|gcq5ALHh{ChI4(!@J;rvk zt?KHIYASty*TE{^k4z^1!0DM2wMFOGgMvX->QBgb8!t#I-+w9;%1^U;hFN;uOP^m! z-!GoL=Ap!UG7(i@=1Y@(ljP4^aWJ8GpT*`fP1f&0cWI|$^uU@= zaQ6Po;cXbbTl-Rk@p#Xfj59XdOdn`g`+cb;KuI=ak@D0ZG(ul!_kju)ZOGET@h6tV z;tERkZ1whY$@yTYrirjs*C>t6*SH>!h}?3a_#UpT0wdk({3_{wIXil?^-qlH=1Df+ zl{%B?$>i6_45?XlD-C{KHPF1;RZCGTDmtt##7EU>=`2=iin;!1t~n(A1dX9)ZO7Jy zL&N)VB`7Xk(OoV={zTF-&>DL=AK3gv!QTugX`+)Vx_6h zYY;@qV>+{@pAcK?TX9$mIv>A~y>+?2%U6yo{6!Q{Amw7-a|}d<+-~c72|AbxnL^ie zdYO}YQGr?S7&@<0n!6_r9^2WmVeG;qdl3DNVNJ!{QdcbEtnkKHxxv%&U7FgUU@(Q_ zR;G;3l?kXYcj}lqTXZjaw)1s+@8EosfPNTfUcxh-XDmU>oty_BO|61h(?u)nlAglG z99Y%_?XA1^hp)PC)mjR5ujIyaK zHG;aju^8_lsU3IwjR+-~le2bTcGg1*=YLwLSwt}$FFA)nHY2ZAYfN9v?UK{h13izU ztQh{1V9OsSY$ZtMR8esNh+_;J6by`l42{ed`4^`igP*OoUid7axx2eD>~E4#yYxLs z#>X=-L8LAuTstHl{SaeJ^yyXPqUBi^dm&IMUj_jueBVm9S1?z_*wyK#9Jy3TeymoxBV_sz#aZ)g+Y z)_2}QjE2l^82c@|HaeyHht`nQoVFC1IHinwqxFhSeev%-L!0_b8g(llYw90PLRNP< ztK#fOb*}_6D}f-oJ%#N4R<1L3^cyjwDYH8o9aft!-sZRxJl^y*I9M8`4S5Dqr;z0O zbfiRjN`i7v{4$m{J$Hx2XI0-L+a%T6YIHuR+&{#%WxT4Yf_)^us!&Yq+E1C$f?=C- zPMq)N*W=ouY25~zn%alf4Y;?d)>0#ck(!ps-ovm_VgRB@0rNR@61toJVrwfHW7s<= zIe5+L-B4^a3i|{@O42$ z_pJTosmGHxE&BDU;LYGEX9Z&6Q!PL3^&m4(Hh74~4cWJ2O!eYE?FX{rn@SR|7K+!} zn&t)gf)l1{V_u3!n@?)4E^S^NTLgU!8<13DF*pe7OmGG^5cIhng$? z`4$>)Hk7Z$LoVuy+u`UAQ5Qu~T%|`}9!7lIo!R7skZwipuH60-K&XHN6a_^2%==|>Iol2+N@ASo+Q(Jn3VVY9A%>b3sqV7H}`4+tjK5e%= z3vk2=hg(X>T>bYI_PnfTmWsKg-4Cfsc}@6(T5TE;-Z?qHLG}&GFa38I1qK^Gr>4nX znH>D&5NZO&obB!%e{&8c%xe?UEi<#;8-4NQW0?dYW@~FgCCGx=az9JOIB+xhH+1s! zXMN@qx-3>GMx(fcwnk8|`@}aH7>lH~Va`54-rR5eDOeb!2d|P$Yq-gLKqoK6`}QdD z4reC{_9Un8Q(Jh5y~R-?Rd?}SsiVZqQk*s?L~#4vv&OZrz`d6I*(RbG787K^%2ucz%V}rN*yj?+0;@ zHex;>CHg5`bb&JkFh#Ur2hxXFnvs@r@n*X3^zt{HpD%pJE)IpYiCIc!Y2@e4AcWdv zP^^$(migykQa+B71-Y~9wOvN|DF(w&AU9{_ENf~7)wjy4d~U)eZZ49lo{CEM)7S5t z{dta$KTs2iaq#r=Kq6cLq<2_5XMhYy0(AN+tpJgh`xBJ?1B5~W;>P}NNRYSz!U+i= z?LCkfFOVeZG#nrfM|xttJ?xR5Ad(%3w22#dVC{{NULY%R19eT1xG~bt3nZ@XO7gw_ z$1BYGcS}tyX&kB3aX{Cu0mN@29Z(1u)(>PQLBix^q(HI?5Nm+=b&?s0(Gw*7i;`se z$Fw1&!V~#xJaH`~+6U={vPYbf{4w*>GrtavyzRVx#c~>v?3NuGHRCAB-?8+TlM)r||!v`_Bh?TKnG% zcp3^wT$fZehhJ4ZEiL>Xpf>2V4F5!7pwm?S8>$UD4GI328lDRF53;}L*%Lrwb?^jP z0Z#P}2mI2T_o=@B>Ut{3KYdC1cJQ`GdVqv960#C9QW7!{38_B~up}=Hq^JE|q$@(~cSmEC7naBn7XpoSI&DiQQWO5sm8M7!Pts&S;*wWoe?N5->p<#Y6HlZ* z7W1o#osfD6f2=pDH;qW*M}3CqS4IK?A?58)J1-9e3XSymwW=7Q0+6H}fW+ZgEJ+f-vP)XTFpgM|n2oJAc`I3>4gUAB}1T=1G0{#mo+{fGi literal 0 HcmV?d00001