From 96faedd40efd0a8bfb6dd907fdfa5486044e64fc Mon Sep 17 00:00:00 2001 From: EUtrilla2002 <100451242@alumnos.uc3m.es> Date: Mon, 3 Nov 2025 17:27:22 +0100 Subject: [PATCH 1/2] Fixed local debug --- gateway/esp32-rv/gateway.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/gateway/esp32-rv/gateway.py b/gateway/esp32-rv/gateway.py index 244a5d778..d902a52ed 100755 --- a/gateway/esp32-rv/gateway.py +++ b/gateway/esp32-rv/gateway.py @@ -464,6 +464,7 @@ def start_openocd_thread(req_data): return None # (4.4) GDBGUI function def start_gdbgui(req_data): + target_device = req_data['target_port'] route = os.path.join(BUILD_PATH, 'gdbinit') logging.debug(f"GDB route: {route}") route = os.path.join(BUILD_PATH, 'gdbinit') @@ -474,7 +475,7 @@ def start_gdbgui(req_data): req_data['status'] += f"GDB route: {route} does not exist.\n" return jsonify(req_data) req_data['status'] = '' - if check_uart_connection(): + if check_uart_connection(target_device) != 0: req_data['status'] += f"No UART found\n" return jsonify(req_data) @@ -529,7 +530,7 @@ def do_debug_request(request): kill_all_processes("openocd") process_holder.pop('openocd', None) # Check UART - if check_uart_connection(): + if check_uart_connection(target_device) != 0: req_data['status'] += f"No UART found\n" return jsonify(req_data) # Check if JTAG is connected From 852d29aaa8b6c7f9968a668acb439a489e86b929 Mon Sep 17 00:00:00 2001 From: Diego Camarmas Date: Mon, 3 Nov 2025 18:32:31 +0100 Subject: [PATCH 2/2] CREATOR gateway updated --- gateway/esp32-rv/gateway.py | 56 ++++++++++++++++++++++++++++++++---- gateway/esp32c2.zip | Bin 22661 -> 22780 bytes gateway/esp32c3.zip | Bin 22661 -> 22780 bytes gateway/esp32c6.zip | Bin 22661 -> 22780 bytes gateway/esp32h2.zip | Bin 22661 -> 22780 bytes gateway/esp32s2.zip | Bin 18542 -> 18542 bytes gateway/esp32s3.zip | Bin 18542 -> 18542 bytes 7 files changed, 50 insertions(+), 6 deletions(-) diff --git a/gateway/esp32-rv/gateway.py b/gateway/esp32-rv/gateway.py index d902a52ed..1984e3ed6 100755 --- a/gateway/esp32-rv/gateway.py +++ b/gateway/esp32-rv/gateway.py @@ -36,6 +36,7 @@ BUILD_PATH = '.' process_holder = {} + #### (*) Cleaning functions def do_fullclean_request(request): """ Full clean the build directory """ @@ -81,7 +82,6 @@ def do_stop_monitor_request(request): if error == 0: req_data['status'] += 'Process stopped\n' - except Exception as e: req_data['status'] += str(e) + '\n' @@ -151,7 +151,6 @@ def do_cmd(req_data, cmd_array): return req_data['error'] - def do_cmd_output(req_data, cmd_array): try: result = subprocess.run(cmd_array, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, timeout=60) @@ -443,7 +442,6 @@ def kill_all_processes(process_name): logging.error(f"Ocurrió un error inesperado: {e}") return 1 - # (4.3) OpenOCD Function def start_openocd_thread(req_data): target_board = req_data['target_board'] @@ -462,6 +460,7 @@ def start_openocd_thread(req_data): req_data['status'] += f"Error starting OpenOCD: {str(e)}\n" logging.error(f"Error starting OpenOCD: {str(e)}") return None + # (4.4) GDBGUI function def start_gdbgui(req_data): target_device = req_data['target_port'] @@ -504,8 +503,6 @@ def start_gdbgui(req_data): req_data['status'] += f"Finished debug session: {e}\n" return jsonify(req_data) - - def do_debug_request(request): global stop_event global process_holder @@ -561,6 +558,48 @@ def do_debug_request(request): return jsonify(req_data) +# (5) Flasing assembly program into target board +def do_job_request(request): + try: + req_data = request.get_json() + target_device = req_data['target_port'] + target_board = req_data['target_board'] + asm_code = req_data['assembly'] + req_data['status'] = '' + + # create temporal assembly file + text_file = open("tmp_assembly.s", "w") + ret = text_file.write(asm_code) + text_file.close() + + # transform th temporal assembly file + error = creator_build('tmp_assembly.s', "main/program.s"); + if error != 0: + req_data['status'] += 'Error adapting assembly file...\n' + + # flashing steps... + if error == 0: + error = do_cmd_output(req_data, ['idf.py', 'fullclean']) + if error == 0: + error = do_cmd_output(req_data, ['idf.py', 'set-target', target_board]) + if error == 0: + error = do_cmd_output(req_data, ['idf.py', 'build']) + if error == 0: + error = do_cmd_output(req_data, ['idf.py', '-p', target_device, 'flash']) + if error == 0: + error = do_cmd_output(req_data, ['./gateway_monitor.sh', target_device, '50']) + error = do_cmd_output(req_data, ['cat', 'monitor_output.txt']) + error = do_cmd_output(req_data, ['rm', 'monitor_output.txt']) + + except Exception as e: + req_data['status'] += str(e) + '\n' + + return jsonify(req_data) + + + + + # Setup flask and cors: app = Flask(__name__) cors = CORS(app) @@ -589,7 +628,6 @@ def post_flash(): def post_monitor(): return do_monitor_request(request) - # (4) POST /fullclean -> clean build directory @app.route("/fullclean", methods=["POST"]) @cross_origin() @@ -614,6 +652,12 @@ def post_debug(): def post_stop_monitor(): return do_stop_monitor_request(request) +# (8) POST /job -> flash + monitor +@app.route("/job", methods=["POST"]) +@cross_origin() +def post_job(): + return do_job_request(request) + # Run app.run(host='0.0.0.0', port=8080, use_reloader=False, debug=True) diff --git a/gateway/esp32c2.zip b/gateway/esp32c2.zip index 58da74b16277c1fce06c6712ed80828643866b88..81665255bf06306bc13b25652608b05f918d8fb4 100644 GIT binary patch delta 8256 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 delta 7926 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 diff --git a/gateway/esp32c3.zip b/gateway/esp32c3.zip index 44c19aef885950cb3dbd1d3b623a71f05213935f..ff7e003213c7f2efe3d5cb7c3912553d8feb0eb0 100644 GIT binary patch delta 8256 zcma)B1yq#l^Il52ySqE2W61>p>5?vK5LrNSL68n%=~7Zaq@_VxLg_B)E=3yTzv}(n zd%b_X*YBKf&z`gMKJ&~oGw+@=^P~dqssavET^Rup4e<5ZjIxZwq++O^L9yeQMX_^# zgbsj1JV5{e5UpUpezhY2zynae+Cih(*a^QHzF7Q+A@m(vC+c5z>ZBaMu!|$TME%n* zbf1>_o8$k7_fN+nbdo;@tcs$`MnL$=ZGwdH=O$1bQlY>3EF$D$`)LgS@M#D#*?NTp zg(DK6=I64!Z=<7)3PAYj!Kz2BxNzS%ToTItoI{m15#BeGI5nQ1Tf`+munuA@4OcG% zKrI9Sz?>G87LF3~cmc((`k!h80DI!I9{lmeng@U2{rNz#Ni!VF! z6|q3l;GSIM8vXn#VebW70W31)C`jhpNF6*C8&)w9Q4zZisSoAKRJW+7mAOfgsl-m> zWA0zv1pSEQg58O@1M*2}5SXZ?TO2#5H4l6F z9G4sc_aXIUO${xSFvn%~iEQo)CC59(a;9Y@-~s^++DTyH<^5`7JaQ5Qa-b z^N}9U+HTkQ&dWA2nrFr)m#SNeGXxG-#(#lG%Sagzeh6=Wso!(Ya3DJx((#v zYF?#f5#=C}-h}5e1H=$cZw6%MY-Y*LVdbkK_>(UUtMENu+{-8 I+pwBDe|<2wD$ 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 delta 7926 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 diff --git a/gateway/esp32c6.zip b/gateway/esp32c6.zip index 74674369753842237d3ead2ce2415ccac602bea7..5c71d02525d69e697429d525f4f1bff62f280c5f 100644 GIT binary patch delta 8256 zcma)B1yq#l^Il52ySqE2W61>p>5?vK5LrNSL68n%=~7Zaq@_VxLg_B)E=3yTzv}(n zd%b_X*YBKf&z`gMKJ&~oGw+@=^P~dqssavET^Rup4e<5ZjIxZwq++O^L9yeQMX_^# zgbsj1JV5{e5UpUpezhY2zynae+Cih(*a^QHzF7Q+A@m(vC+c5z>ZBaMu!|$TME%n* zbf1>_o8$k7_fN+nbdo;@tcs$`MnL$=ZGwdH=O$1bQlY>3EF$D$`)LgS@M#D#*?NTp zg(DK6=I64!Z=<7)3PAYj!Kz2BxNzS%ToTItoI{m15#BeGI5nQ1Tf`+munuA@4OcG% zKrI9Sz?>G87LF3~cmc((`k!h80DI!I9{lmeng@U2{rNz#Ni!VF! z6|q3l;GSIM8vXn#VebW70W31)C`jhpNF6*C8&)w9Q4zZisSoAKRJW+7mAOfgsl-m> zWA0zv1pSEQg58O@1M*2}5SXZ?TO2#5H4l6F z9G4sc_aXIUO${xSFvn%~iEQo)CC59(a;9Y@-~s^++DTyH<^5`7JaQ5Qa-b z^N}9U+HTkQ&dWA2nrFr)m#SNeGXxG-#(#lG%Sagzeh6=Wso!(Ya3DJx((#v zYF?#f5#=C}-h}5e1H=$cZw6%MY-Y*LVdbkK_>(UUtMENu+{-8 I+pwBDe|<2wD$ z9%V^C;TZgE*9_Cs3r@ki7PKL}!frU$1YDp<2CATd*3XMlxGMDAW4Y$ynRLBmDa>#f zR6vz5rZzCD=rGQ9t=K0yo}`ZVI8n^In{h8|lP5W~*XNYQP9`C$YEf~PpmM>>d+iD) zCtg?tURq~XV$t1^vo9x!JJPG#*eA?u9I8Tcyo4ipQ(8yW)JVz}LvP< z>bH%;Vjz=z#v?`bcrDbDf|4yzaNK31x-G@pU>A>uB=G5VR1%zi3Uz>2zH6ln4nPG; z*v_xrkK;RwfJXqK^Xwa?Wh>gkk=tfG>)gOL}SsfcdQa#ZN;Q$08YBRU@mXGAYmSJu4~= zJuc^*D~zT%#h^)k2Ryp5jS=fMK(KU@KZWb*MvsDRN*6>b=A6#j_~J<%4jrqM)7Z-6 zsfkrApKeFs2(S>GDmO#U=ihoSp`dM?b|~A|UT0n&hgFvJN{LvdX!~>=oawBJUN{zV z>zpFGme`|zG1nSOGb@Lg()L9`J%P^vt`RP>wb_}Jvwe-g(@FvI9IJbQWmOeUY+($Y zuE^o|s0(smR#9*Yt3L{q_t8Q))co*V^k{1k2(_G|cMWPsMc1An7YV0)Od1{VqWP6A zRD&a)=1%&AS~-+>qLQM6PqK9r2d^?4E#63gv*>|C(20G5C%voUm%3OP$16Urrr}W9 zC~C2CbLfMO-8OV-?Rz3DJid-Bc{JuSX?roMK4=iH(cIdHHe2G=nNA7)({gOith?_{ z0TT!!1E8gd5slCCdDa+)qGTw0xT+MSx1O#HQ!lzR86!XKm*ygrTa2PX*h)lXxAlb= zA-Ba2e5kD(&z7&sL(Y!XVM7AxbbWHei%Qd#DV^2^b&OF~OHWGw6uUJTw{}%zVT)w9 zJl6q1f{ckVJua2Cc!-b35{)0gx6$ZBS=(A!CzQoou2IUb(OW~5)tPRE)9O>Bs^loV zY$4fbD_R;b#;>z4y^g*mGnT-0i6Hi{5=G9^>JjMFcHUz-R3*SDKq#_f>&kN*S8cu_LK`iE(%zQ2JZ756n4eb1T=?Y5DjAzj*|m7 zu-~zjTfH_5G;&Gp6lm3>yzd3l)zD^Yc_4(=F@JU&u};Y!nNW)H(3K)zx_ULOsvTUN z_fEdsoa0P^8jPA}P=39PKu8rsmYy3HF=`x9Np%YcV^RS_#QHfF>3xi`y%k6N$L|}< zAr33LF|Q|!DfT=0I(weld~&XgN+T717ko^srxy;~7(sVE>RKhw0=J0u$>!uxp~&BA z6JYRoAV=MSP10jH)hg8W$nx>dk?XE3qDcYt=#fX@MexE80Co zBBHr-@J{6n#r5R7=5hR-;PJc9&2M+$AJO)5-LMV}VYu|}xzn_d!Og1b8_3EDSp+fQ zoH*Pu`&{ahf7GSkQQzJ^|Dn$U8EDO~y*i30#?->`oK=%2UAxyliFaFkxI1yB!UeLz zz@w!2J9FC-f7`0D-bed^?TYFxG#!0I!V6I(dN8Jmj(1_8+0RCqD z1krz#3b81quhVmvvHW4UNY=-Xp-YevWzF(xmgNLdK};L)3DddLJLf@f1O6Va_2Hs5hZirFF9?bio^_3FGY=po zSS#sX9G08#e3*VApLeNb6BHb#)U|9~HoJ#edfB0OGb|!0DteC?^h(irVGg5=%iG2! zLnlV_Va3i@C;>~%?FbAkAYT(WQ4vP_a?82 z3vdOk15Su@+fJGd(Azpn+;7;0oGRdb_sbXf*a-d3ha)u3oVLqusNQnDK2~3$UK_GW zkhL1=V2G&@9S}!?f(|2?`TD4hvHvxM-bZ z(ew**B{U@h8-d>OXb_d@^b=YjWx>{V%?+KD-w?kTSULEv7DkVhmA|d`PG^pooc9;j z%e*h%m1r;Mbm2zho)nKBBI%@rFb&h`6|`4MdeWxP1gMa<-rj2oiOM6qU52;^|EMj< z_~x^XO}~A8wr=XQyI-$qt4Buiy`32)rWGi3MQS~*_k=vra|n`;=k=j0@y%h6Yn_UW z9hsNf=@jn<=?2m<-+^%!J(5_DiD-0AzS^5&@xnX0_yoGH`HzQM!_Ktw7qzpr4`WV? zggCw5HdtQmEbgwQSw^j#Q^=Zz&KqRwN5tiOm&u!l(q*OWosbuMj<5R7?460*D0*BO z)=52oyClj*XRH9h!FdjxK)cd4bs9F$SWjhq>?_zw#pWTi3Ei)Q7RtXxE6~U|)SQ#8 zm79JlMpT|rn%__m_f-5nrkScnkX3JVMdeCL7e3zZlp{_O~&6m)MI z`N`|L0OK|x_bm&w;W=Z>yROlq9bDjl(-~lOf@9o9uvdr+`P%gfCF}SpGQw%BDl6F=mVu*bb zt>c4rNrug=!t6Rhphb4`p5v7TsEy%F`&B1ZbAagDloQ|isQE>|BjMyshjxC~mZnnv zjr)sKt>GLAi0(98e@GHY`qb3j}+{DQdyG4mI#rsP0 z9`gsq83@lU#h>aVH50}0txsGcjMtbV>G=sX-U@H44~ld5v#rhuTXbo1o3n6q!imCg zxi6cA^AXhKMkDI*aoPYMx!ja7QK2aH=w3t>n3w*I6eLJ^Oyq(56^OUAAVXji6~*+aTHrgNuH{**&Hfq2Yw zVzuE>k?g`CGe48jGlCIj2PaOjxKZK9^U?vSPaoqg!mv)`<11(N2u4s|L~b^00^zcA z?oMu^!9iLNmjm{zs_3Td@+ow*cS8VD)Wcnu>Z*}TxP}}eJx?tq-%~Yx{BR@Y@pA3a z9E(8Kpe2EP)Pd_G4yyb|q|`|SyX)IBt$3en@5x&o6}sb}!8@4p1ctxHd1vTvb<JU59O-}e#ljg5ka3nTUfyl)~5rwO7T z9p7ev44p_-sR>rCbq8OGsLdwk4)5lW7#C+!6y-8`p%y=X(V)x+N;i@dYa+JDg@QJ5 z+^}yrXZZM$4k}xSZ?$+vXeg2c7DsQXN8#+C`iV?nT1XMCKeUz)x<#iR96O(CMinqZ zgImsq!O=LY<$7S_<6OfjuuhA}d*1fp26+<>GQP-(s_@aO4Zn=(wrFYY62%AcBb`pY znJHSipzb<>3B)3j{;BHG<;H!a$rbB(n&f`P*DSoOKq?_lIlq@1G5f?-$~u1PLocut zk`VfYB0f<~ZCx}Ma0;b$l5lW^zMhwjHjF{JD0%Lvh=Q>?Xx9FS?=`uON6}U?H1Nan zJ&2l)Qh^n68Sj=*{#@Yd&;x*y%nMOkK{r7aQZa=NfrG5sJ=7~hhV7Qb+EYsWxC2-H z!FL-OcuSSd+8UOHnnkf4PoMya_wJK>K&(9r@VJwf(^^h7Q*oeZv07Khg*|rBGefO9 z#nJ0-4Q4ch`HXyy5$`o6>FDu&*AV=b9Y_YbJ(+lXKqt2j<#?r^g*8Z+2V=$M{X|RH zBsVoqNXdpNMa5jlR!_3R20U56h|?I-i97tbb$AKd?URs7JobW1-el0L;I{&e_Utn; zdA1<(Sdd`zIG&1!=)v^T_Ee|%?)1maf{F$I{w5tVxBdJPU!4n!jMjvOJd5+x6v(`@ zL%N-k7ZJ9N6+^ckF#UsWaF?c6VZ}ljvz$Ut-xkMwx;oO)ox&zJr<83g5e!ILhe3!T z?yVpt&R6*vXd@EdYYsx2oTO9rY!yr2`RklY8h^5G}a7yT$nL~8B_Y-UNYjJPt05=Fs;E75hdSLzp4;j7(D zyU7h%$u^(WmliJ%Zw*B6msXm%qXs_JHjy?1DEP` zXWHBeu5Kqk-bh^g)Lr7R3GQYw;-oMmqaEct zlMg?YTMnnadOT@zXSTt))^Px{@bUGD+k%-7b?ldqUuF(YVDI_JxXaPZ_!rY%jboFM z@7^a`gIjB6z2y3lQQ#?OTJiPcNFkN4s--^7*^ZcWJ+%@|l}nZzne z6hl06yDMT?ZB8sv6#B}h1 z6v1w5em7#|&#+A02e}%WTQDRycquEZkzXR!Rvn;hVNKCG+yG6_+9FJkhtF__HFSon zv1sSsd5K2)4cAwh#UtUJSDZ!b`1E9yji%_^IYm( z{#IOt`1IMUyK65lDyqbS zdMPh^@^7RA-U^f-T@RmvIIs9XDb(F(nNk<&5{m2FbnQ3r>KH$apLv*=e?B~|a%Ad( z|2BaYV*SPB88)Ovhx^+Y_`VFo?~R^E@BCusU4^gQkAVL7@p!2W-!J$b%NQVj-k&>#)(eMx^T{CfE1%X$j<(I-n0dNHHd#9(EEK5 z&&?t9b3#=<923aj7>SDiijj|a!FNV7BEJ}vSA~j{e>X`aWBY}pF*0mqOgMNdguhk| zJ9kO7_N2cqJgnUw@bg&;a_eX#eIMxmzm><=lYcHV4EsKLF0{bT3BUmWgaDGS5CGU$ zKwh8>007NkBVqh49B7mVDNMoKF4Z)g5wZTQXEA0N1X_yz!Q0DIC2@K94t z65!W`#DDNl+~6}$gza-oZvg--Kk)wm4}dDsu|xii%U?R=Nbw2q!ng>+UhE%mCSb__ zQ`N@G!p_+a{O{ua7$EdSjR0{^S{)g>s7@yL?PYh6?KE-bp ze29mRDk1<7jS2uz{7uxnKonL0)Eqr9iZ*Tk_UV+GC*VifanLHmz-aLNdGm< ze~R)$7i0c`^Sz5XVGZ@a&T%rgbN+3eFxcKpdc#NoYGDOP{sT8KFZ8tz9pt~u-_X^8 z#_AKSNYY^a`(u2veE;BO`Ow-N?DCMy?cdw;ub3%dy#9RtcWr(T`pIqRqBikwH+r1d zXmB$u3w^MX`0@T4`vwFx(IJugjc8@m>)85WnN);Pqy0g#BM}%OmfunAKAGQo8ceYa zSb6=Z7zymp;D<~;w6gTFbhQ32#s0d`D2Bwb#q(g`7O-^u{Z7dXgqMdB>C*lV!Hs7Z v{OGVCMPMsrf**ps0R2VK=8p@-7VPBs>x3e~czk6-27tmkNlOhDGXU^^S3536 delta 7926 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 diff --git a/gateway/esp32h2.zip b/gateway/esp32h2.zip index b3540b869ceb15945a84985e62dc1d1bd2a942f6..97c75a16fdd7c870679b03da22095e13bd6a032c 100644 GIT binary patch delta 8256 zcma)B1yq#l^Il52ySqE2W61>p>5?vK5LrNSL68n%=~7Zaq@_VxLg_B)E=3yTzv}(n zd%b_X*YBKf&z`gMKJ&~oGw+@=^P~dqssavET^Rup4e<5ZjIxZwq++O^L9yeQMX_^# zgbsj1JV5{e5UpUpezhY2zynae+Cih(*a^QHzF7Q+A@m(vC+c5z>ZBaMu!|$TME%n* zbf1>_o8$k7_fN+nbdo;@tcs$`MnL$=ZGwdH=O$1bQlY>3EF$D$`)LgS@M#D#*?NTp zg(DK6=I64!Z=<7)3PAYj!Kz2BxNzS%ToTItoI{m15#BeGI5nQ1Tf`+munuA@4OcG% zKrI9Sz?>G87LF3~cmc((`k!h80DI!I9{lmeng@U2{rNz#Ni!VF! z6|q3l;GSIM8vXn#VebW70W31)C`jhpNF6*C8&)w9Q4zZisSoAKRJW+7mAOfgsl-m> zWA0zv1pSEQg58O@1M*2}5SXZ?TO2#5H4l6F z9G4sc_aXIUO${xSFvn%~iEQo)CC59(a;9Y@-~s^++DTyH<^5`7JaQ5Qa-b z^N}9U+HTkQ&dWA2nrFr)m#SNeGXxG-#(#lG%Sagzeh6=Wso!(Ya3DJx((#v zYF?#f5#=C}-h}5e1H=$cZw6%MY-Y*LVdbkK_>(UUtMENu+{-8 I+pwBDe|<2wD$ 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 delta 7926 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 diff --git a/gateway/esp32s2.zip b/gateway/esp32s2.zip index 2a9305b19718e91c971be9b9c6efadf50f8d0deb..3086a75c58397126df7c3377bf9f6484baeb663f 100644 GIT binary patch delta 1058 zcmaDif$`l0M&1B#W)?065O~p(JdsyUWy>v&%;gU_GD|DC85mi>O>fr z7&t)cCcALyh+Nu3}3Fqs8 zl{DBZ6X)RL_J-Kan#}8v1UBllvlb2&TrTIikv(7JfWvQ_w>tu28TYB;9!t|vIH33I)a#~#RbMj#YXy}A*>9{pfJaX7?5d*sCnZm$+D!; ziD5FQo2)%y_0hZTB|a_&+S3WdQc&9&f$X=9fsB&_T@{Hj!|?{^%10aw4Et3X7=%#F zkYJj;(N&TdGp=|3c#^Ecz_9!{1A`!v8A}@7xF_#-lc>k(7wjR)ixQGw%n>1(o0yqL zY;Z>FnScKn1`Ljj$zksNz<{;3n4IaZq=eHkh=}0z07b+zi^*CZ(!{7=>kd-?-*WOP zcSYQug_|E86|mRYkez{{PK1F$1SP;CY!RMKPb^6-Pps6-D9O#iorGA~fL>(a0>VaM LhQIE@0^$My@Q?&L delta 1034 zcmaDif$`l0M&1B#W)?065C{x$n#e1sB58RqgX=O&W@!aC10%}|W(Ec@0a7Qzz{J1- zQa3q{(LfZWurByl28zPTiy7;gK`K<4G_b4KoW%5w1Egf4zYca46DOPo8JizKj7JXSb-zd6uKkQuDxvjq;f zPd2hVAI-=l#|#hjXmIF52@VDcC`*9huOo<=T3ldkRBWUl8p6uJ3<`6U@Md5L@CKQN zh?)tmk}Q84ofsysbyZX%Lj4D@dQQg4yl#^Agw;oTzchKeALy<(Kr9AzEhCV_RnVPIH(oPj|Q#m=Kbh!84H$xhDCOUq2h zA5>@oKY6K}aQI)xVta%^xrv#1#D;gYp85BWVL<<90I@WR+jiMc=66>jCOp=L{vOSXX(7WcN%D?8WRJ92#US?oF^B!OKV~cS5`Kl76vXLYy{@)>nv&%;gU_GD|DC85mi>O>fr z7&t)cCcALyh+Nu3}3Fqs8 zl{DBZ6X)RL_J-Kan#}8v1UBllvlb2&TrTIikv(7JfWvQ_w>tu28TYB;9!t|vIH33I)a#~#RbMj#m4%fA*>9{pfJaX7?5d*sCnZm$+D!; ziD5FQo2)%y_0hZTB|a_&+S3WdQc&9&f$X=9fsB&_T@{Hj!|?{^%10aw4Et3X7=%#F zkYJj;(N&TdGp=|3c#^Ecz_9!{1A`!v8A}@7xF_#-lc>k(7wjR)ixQGw%n>1(o0yqL zY;Z>FnScKn1`Ljj$zksNz<{;3n4IaZq=eHkh=}0z07b+zi^*CZ(!{7=>kd-?-*WOP zcSYQug_|E86|mRYkez{{PK1F$1SP;CY!RMKPb^6-Pps6-D9O#iorGA~fL>(a0>VaM LhQIE@0^$My^lJn? delta 1034 zcmaDif$`l0M&1B#W)?065C{x$n#e1sB58RqgX=O&W@!aC10%}|W(Ec@0a7Qzz{J1- zQa3q{(LfZd!pVyn>zP3+RGBoetJs{x^o|3hWTL+gb`=vRoCX__YO94^!R95lrtI9v z?g{2r$Dy>JJ6{KE8l#0Waeni#FvM=wvOFKn z$Rx)M5AxjfZ?wrh?!bkU~E)utREV}%D@Z?bBu@qnTCj(39gbXe;b_` zCa-l>R3bwC2e5ih#>u>HlJ4 zU&ms5gh9E9nR ceI}Q_m5#f|7QTPG>Y4H*-z$oS0W}n*1AiwZfQ()V3;gpCF?{~ uJV$5gyu5cBXr~$z1A_>Pz5ARe7r0AnVhvYTHlP*;E+A|K=IrY(ARYkr#^=re