From bada4182d9ae7352d48282b78fca7b46d87e687f Mon Sep 17 00:00:00 2001 From: Matthias Alphart Date: Thu, 2 Nov 2023 08:53:20 +0100 Subject: [PATCH] Fix numbers for module defined group objects (#319) * Fix numbers for module defined group objects * upadte test project * fix tests * stop iteration when module instance found --- .../stubs/module-definition-test.json | 4 +- test/resources/stubs/xknx_test_project.json | 120 ++++++++++++++++-- test/resources/xknx_test_project.knxproj | Bin 1237655 -> 1238149 bytes test/xml/test_parser.py | 4 +- .../loader/application_program_loader.py | 1 + xknxproject/models/models.py | 37 +++++- xknxproject/xml/parser.py | 2 +- 7 files changed, 148 insertions(+), 20 deletions(-) diff --git a/test/resources/stubs/module-definition-test.json b/test/resources/stubs/module-definition-test.json index 08068c5..fb52ff0 100644 --- a/test/resources/stubs/module-definition-test.json +++ b/test/resources/stubs/module-definition-test.json @@ -96,7 +96,7 @@ }, "1.1.1/MD-2_M-2_MI-1_O-2-1_R-1": { "name": "IstWert", - "number": 1, + "number": 41, "text": "Kanal B: Küche", "function_text": "Temperaturwert empfangen", "description": "Beschreibung KO 41", @@ -123,7 +123,7 @@ }, "1.1.1/MD-2_M-2_MI-1_O-2-2_R-3": { "name": "SollWert", - "number": 2, + "number": 42, "text": "Kanal B: Küche", "function_text": "Sollwert vorgeben", "description": "Beschreibung KO 42 (U-Flag)", diff --git a/test/resources/stubs/xknx_test_project.json b/test/resources/stubs/xknx_test_project.json index 88b62f6..1755de8 100644 --- a/test/resources/stubs/xknx_test_project.json +++ b/test/resources/stubs/xknx_test_project.json @@ -2,7 +2,7 @@ "info": { "project_id": "P-0242", "name": "xknx test project", - "last_modified": "2023-09-29T21:48:57.7711452Z", + "last_modified": "2023-11-02T06:19:30.3859365Z", "group_address_style": "ThreeLevel", "guid": "7aceb083-274e-4568-806f-b8f9df992873", "created_by": "ETS5", @@ -401,8 +401,8 @@ }, "1.1.7/MD-2_M-20_MI-1_O-2-2_R-3": { "name": "RTR1 - 2 - Controller", - "number": 2, - "text": "RTR 1 (...) - Ausgang", + "number": 935, + "text": "RTR 1 (name in application) - Ausgang", "function_text": "Command value - Heating", "description": "", "device_address": "1.1.7", @@ -428,8 +428,8 @@ }, "1.1.7/MD-2_M-20_MI-1_O-5-0_R-17": { "name": "RTR1 - 0 - RSM", - "number": 0, - "text": "RTR 1 (...) - Eingang", + "number": 333, + "text": "RTR 1 (name in application) - Eingang", "function_text": "Setpoint temperature - Active operating mode", "description": "", "device_address": "1.1.7", @@ -455,8 +455,8 @@ }, "1.1.7/MD-2_M-20_MI-1_O-5-10_R-18": { "name": "RTR1 - 10 - RSM", - "number": 10, - "text": "RTR 1 (...) - Ausgang", + "number": 343, + "text": "RTR 1 (name in application) - Ausgang", "function_text": "Setpoint temperature - Active operating mode - Status", "description": "", "device_address": "1.1.7", @@ -482,8 +482,8 @@ }, "1.1.7/MD-2_M-20_MI-1_O-7-1_R-45": { "name": "RTR1 - 1 - Sensor", - "number": 1, - "text": "RTR 1 (...) - Eingang", + "number": 1438, + "text": "RTR 1 (name in application) - Eingang", "function_text": "Room temperature - Measured value 1", "description": "", "device_address": "1.1.7", @@ -506,6 +506,60 @@ "group_address_links": [ "7/1/2" ] + }, + "1.1.7/MD-2_M-4_MI-1_O-7-1_R-45": { + "name": "RTR1 - 1 - Sensor", + "number": 1448, + "text": "RTR 2 (...) - Eingang", + "function_text": "Room temperature - Measured value 1", + "description": "", + "device_address": "1.1.7", + "channel": "MD-2_M-4_MI-1_CH-81", + "dpts": [ + { + "main": 9, + "sub": 1 + } + ], + "object_size": "2 Bytes", + "flags": { + "read": false, + "write": true, + "communication": true, + "update": true, + "read_on_init": false, + "transmit": true + }, + "group_address_links": [ + "2/0/1" + ] + }, + "1.1.7/O-3_R-3": { + "name": "Objekt", + "number": 3, + "text": "Manual operation - Input/Output", + "function_text": "Temporary status indication", + "description": "no-channel GO", + "device_address": "1.1.7", + "channel": null, + "dpts": [ + { + "main": 1, + "sub": 2 + } + ], + "object_size": "1 Bit", + "flags": { + "read": true, + "write": true, + "communication": true, + "update": true, + "read_on_init": false, + "transmit": true + }, + "group_address_links": [ + "2/0/0" + ] } }, "topology": { @@ -600,7 +654,9 @@ "1.1.7/MD-2_M-20_MI-1_O-2-2_R-3", "1.1.7/MD-2_M-20_MI-1_O-5-0_R-17", "1.1.7/MD-2_M-20_MI-1_O-5-10_R-18", - "1.1.7/MD-2_M-20_MI-1_O-7-1_R-45" + "1.1.7/MD-2_M-20_MI-1_O-7-1_R-45", + "1.1.7/MD-2_M-4_MI-1_O-7-1_R-45", + "1.1.7/O-3_R-3" ], "channels": { "MD-1_M-13_MI-1_CH-80": { @@ -629,15 +685,15 @@ }, "MD-2_M-20_MI-1_CH-81": { "identifier": "MD-2_M-20_MI-1_CH-81", - "name": "Raumtemperaturregler 1 (...)" + "name": "Raumtemperaturregler 1 (name in application)" }, "MD-2_M-4_MI-1_CH-81": { "identifier": "MD-2_M-4_MI-1_CH-81", - "name": "Raumtemperaturregler 2 (...)" + "name": "channel name in properties" }, "MD-2_M-9_MI-1_CH-81": { "identifier": "MD-2_M-9_MI-1_CH-81", - "name": "Raumtemperaturregler 3 (...)" + "name": "in application and properties" }, "MD-2_M-10_MI-1_CH-81": { "identifier": "MD-2_M-10_MI-1_CH-81", @@ -757,6 +813,40 @@ "description": "", "comment": "" }, + "2/0/0": { + "name": "channel-test", + "identifier": "GA-19", + "raw_address": 4096, + "address": "2/0/0", + "project_uid": 66, + "dpt": { + "main": 1, + "sub": 2 + }, + "data_secure": true, + "communication_object_ids": [ + "1.1.7/O-3_R-3" + ], + "description": "", + "comment": "" + }, + "2/0/1": { + "name": "Temperature", + "identifier": "GA-18", + "raw_address": 4097, + "address": "2/0/1", + "project_uid": 65, + "dpt": { + "main": 9, + "sub": 1 + }, + "data_secure": true, + "communication_object_ids": [ + "1.1.7/MD-2_M-4_MI-1_O-7-1_R-45" + ], + "description": "", + "comment": "" + }, "2/0/6": { "name": "Windalarm", "identifier": "GA-7", @@ -978,7 +1068,9 @@ "address_start": 4096, "address_end": 4351, "group_addresses": [ - "2/0/6" + "2/0/6", + "2/0/1", + "2/0/0" ], "comment": "", "group_ranges": {} diff --git a/test/resources/xknx_test_project.knxproj b/test/resources/xknx_test_project.knxproj index 57cf81011c8f3aa447ed87c732af17927faa1f0e..f14da63106ce88290b4c3e9b5237aaf192f5a55f 100644 GIT binary patch delta 42732 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%0A7Y2Et;ItSg;#U^ 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�ebkRpuOfRXn=>2}_`KeCrA1v~&bbpo|D`e8lIr z97@ih(nXv${`29<>kC@`A+q?v^tjbY3qcd~)Sm>$=i8v%y7AD7 zO%Y~k<<47FKnQO^1X3&VcPE=d*Abq|lG>fG)%&%>90d0&gWnhzz2+ums~CDED&eQA zHPa1!7UV;Myi@PB&8pDbL`!smJiV0F-@`|0w7*YT&&{nW_*LqE6V<@hjbNgfDABhg z(^!jGz!Kha*}!5mo4lD6%NknOuGw7JvKSZWh^S(V)YGS}8Y)Zbo$=0+FOtxZsg0pJJq90Fx(aa9G8sqM>JwAar8>N;i@-fAm` zaazI8GLNiRnztwnA}TJ!BgizswTI{a{dgT~#@|LaPFn0`Twf>_fT0&)6&gi~6LaLm z{z7cpE;3_O)8EWrXUx~pR@D^yn4E?;rW6LW@Ii2;4Sy@lsxAfeR#zSL_5|DMro)(` zBEwdLhUhwugWqhYlbE7n1M;dI63wOrw2hiSzK)`--KEaf>4J%ZuSIRMMCJU*Km4UM zZaHCjN)|3+Q7I-131WCgV*F@hig9_X`Wlqz)ZpZ_KHIWfLx8S~*BZwUBtlY}9=s!+bBo11eqKEA@OoL}6-UT& z#G1tB@|4{<4waYY7eJ0k*M^D*A)+X({%}j~)(BEO@ZJ%n+p$J@Ao_Bg1u51}=;M zc`-R2suZ$vY3P#6!?oX`UmNDZl1IjySu)nvQx#)hX;rHh1^BA;QdWm1p}@9gCz_^s zv3jv{Ml)8Hu+f%iSGy1{@m994e1q6PtzdS`>*g4vw`I3w7I8 z0?pKVd!iha0$j-8L_lM{;xo43)9*E9ZHmAayppgT=PrlEshS_da+qmX$tLY_oq6yo zWT)DND!Yfb^unD6E1MrtCFZ6$+GXe+$xca;AjOciQ06L8?nhpW^-ar= z2A-Ll1=RW5kU{Q2(8C)Jq*t=_8aEO}YXuCTlh?{%0^0HRgi#)`kevHRsN*ITRN}(3 zB)*;CKv7bKBeJS^|BCX9h2;Q_JRH6yt&1I%7V+)S$!~L41RO<{_atIcpZ_%W*c*^M zcLfFih#gM-DC^k`Iy!XJtcH7<~W>~y?6 zCmKjZCV*A;k88sxSvJ|`GI=t9k!cIv2rj&B;i^-iJee9c3_*n$C3VDt;rw|E?YKwJ zKs`(~7jut+-7vn>x+Nj6y18h}u9z57wZ;u(s%7BG(H(zvfX$IOqL$)(XG#!CMxr^e>H7@d7PgtV48UR)1~X!N%B!52RF&E?VC5Jm7MUX} zyo;Ul93w-ok?Uv-BSs#$k^sqUs6R0cXUxM~*48cLx(n!h zGP9iJf4K)9tFqJ7NgoVvpTF}tBvDp!_2k1S0Qg5*PLWsfE7@CpzL75 zrA#&NuzrEd$k7?$D9u+?9H$FxCIL94l6Y0S+J8p{M=aO~5NduBM`8>>j{F*AZeej? zRxzh~ix(S=C)VsDQWO`YE-Ajx6zKh&7W@s-cuOSkW{t?xT@19IcACTYOwv9qC9`%{ zzc~a8&&?rj#EUFI3AzcNW-Ws(l1?~ND{YrGu$ zbnRUMkfJ69(re+@@XOh#pF)b-bP#fml+qZzo?#^>o)M_?!`ll4^`Q$!C*zM}ZlDxF zzOqg|^32tGX?jw``7Jyvgc{&=UUG|ceW9+VTM9m9Y9(HRM99@UF)}8Q>-7sHY@FaD zo` zgw$n@Vy%okMOi;?jz)U;D!1vkX8WK5gyu6~o-(DCIzrcH!cB(!Kv@MmG)DHRf~p#Y zPTtOHV)-C;J2WU+pmq%asX-8uj;~-ruhi*>2<{}TLsQ$ewS}R29Ky*&0IDm zuA)w#wMJE?F4A`Q17X$|BH_HIfMkn1LW1Dq1dp|G$UJTA+}Pj*gDGg`rjD7~kWE*x zL1hG`P4~A!)uWVf&*?Nth(0Gyk4*?TZV-hmwiznQn5r}X){_-^@(ju+HF~pGpJt0n z3+VD@3c5+F#H3cQkJXGt2^?Xh+HZQ$KY2sq1HC=?wew(j@N4DpR3DTJ<$5v@-C@Z1 zPh|Fn7SAxiZ3ZzU=u8`r!p$vW`=_xqnoBE>q@^2ZesS}(Laf&@CW+QB76JpGz?+&6 zD+p*Yb1&hQFJ@xd7?xZNmGCX+>dv@km4I|rl~xo2IYakv#Sl1LSrzb>H2l8d)2q)` z!gCYNNOh`$=+vwY{QD6nN2lZZ0=LZ0W4ELwON1|W| zVoB4#h)MeC+rveqw3v;|%;pEADI|7sG1|evIhGqceGi(#>jk@>3&P=`W`x9vD*zxt zVz`~Iq)C@UgNLRRb&&nW{{l9nrU1oTQJ$*WMZ2>dajGPw_IG13>tNkoDC&8@z2Q4# zIVlMnw{j>xGzG~(;zE8vmBJ{bI{jw6yts(gKz++uJ;m}gG5!~lBJ%Hf;*X$y)?++j zC{&1OMl9UJ2`0s&ptSNFEYtQ8!RCO`I#ZK6w4p)r0XvQnp@Bw{uhFgt2y6t*gm4ij zbw^yevJPFcmu=ubyKNek4PpLHZDe{Z`!s3LMTG+afqRTc&!bKkQtUhzs8CoeFB&m? zC?H7_Q~jP)-)A-8w3>KaaxOP`qhhZQ@JI9@Ym`8l!<0>q#**}w1e^7_4FJ>%wKu9U z#Eh@$(sKqKJ18gZL%NW~fyYA-WPp+{gG{L%aR#BM%^^@nphgck$w?yV5wH@$W-y12 z%W^XA-zXVfrY02?+vB%kilvFq*5^1m*X~;0N(p^;s5-BWdxCnE2yui++ryE19E`^8?^9=b?&)_ls$XcozN6L6r=b1mnpTEGu4YtpUoO71qrstT4VE@mtEZm6>#$W@TgO zu6(B?9(BMw4_zD0!!L#_ix=(JI`1^VbZD;|pMjQ8nC&5REU_iQbpnvMSa%G<<_sm^ z+`k@RMILHfX4}YQh(HvXhMxQ_hvbN@_S7cXl9;(&$S4e9OO=k#z-eUM@Jv@jj4J5< z$68i0yoNL9X!2{sI46cI*w2?R3b<@SwfqwI3kiO^lOMkk*i@R>CRX_r^gI>PDsG1( z=Vbe&@1&4ID4!{h>6`%7OS3yWJf5CUAr(SDAK6ImIsSD0Zqo7IIsQG%o_PRI9T?4w zjbZx+5I*=&`~Y>2MoU?ijhZG=hvrTUf;HejyW7Ysi-t~SL!B*IKD*lcB@?LCzx)+6h_at-Zq*Q3;TmV2jajXYW4=1od-K+Z z3p6e^>c>mnuC4y|HJ+Kj2Nc{!Zdsg9^O>oZM4{9_!fR=SmAW5^W5EIr9TXO&`}9a_e5rT2He6#dU~KhhD$I3t2QJlMSoMKLquF_ z31*cuq5W?=^m#J>#e5QxZ>^y4r|2+TN59s7m-v@HGR+0ltBYQORw<{G8s}VrLkCv8 zru`$br&|CTKLa{DM1|eU^-tx1H!9PTEt%!lpRg(tp$`022rBiE0&@guuLp2_=oSl3 zE0~8wNN*#A)a?(U*WLzP3il|~z;e!guRmOWnq!uzuo1pc_zKC;^gSxq-ss^8?kELy zL_InVZE?D(;2|eOt@C{7;GiFV^N1cv^t$lp&iM^sGPsZMXhRS3=Sv>sCeWrx^UB^# z8YT=Rl5E^Aos&C7Z~U=|1Lnab8HyCfK2-Cy9qK&vy)!T#CQ`51wVJ?6e>?47>HKWo z*gz7h>kg0N z)P5KM_bXeNJF6CuaM>6${H-U=*K0gh1VfERDy@%dYZHx%b5+?%O~WZ_BrDWT4P#;` zH7r}e|2>7TXp9^gUjs0p{;}yuoXT1cx8$kJlb$Pbm^i`} zn5U}jp{-2AL|>ran6HHf%i8KeHHva)YPiBx{-ZI$^fU>(j<0HYWArfT={n`k2uxeA zPHI)N42V9q*O1%Dsf4gZzMa6QttTW7$&J}!@XiPVRCPi1xd*J-?~Sx=U4ictMnEOq z1*OwRp}7ey(gjdSr+6laof>Y~Dyc;l3{GfT!CN8tlbHJZd)^1S+n*zc z3d|y#aRrrSl+>o8%{le1`$#;9(lx>MsIs{lQiyLUF_OWjFXQ?r)j;NIO#@xcekNxj zp-2*WW1l_k-l!Nfq{5KVSEGWjG^JK4)Ua3f`bbreaN7W8FzXty9&Tq7p=;#1S;39~ ztM>O*j$zqvop+=0mqAsq+kfKz*Kg7uapNSzpuJ!LMEn7`erM--=n6Tz}{N!hAK0LZlx@XDjn0) z1kXZN*XRKaULdbd`m0j#gDwvR$TGi8^_~eR5|#Wcy96IgoYhN#)HhdDkX& zLobl#ijP*o9pfCjykGC}nLk)srp+z0{)`w1^ll-|SrQK^NethdGd4k&~^vM@~4iDqO^!` zf7U%vzvm>DY*n_`%=vLQEFn8Lyg%sQ1#_QO*AKDhSue~1iM|fn}bT(VzQ{#NYDWTCw zKMOuruWFi6PP*Ok#DO`TY0Dyo&SM>1UK8j(gHeSY}^cHv4L_QVIH#+jm8+hS1m_9_CG&BV5#bHEXiL ziF8w!m$1?Brx_}xPtN%v2ib#YKkB^Pi4dbmvEm%s?T0E3y95&s7E2!+j7GEkyb~3I z3k$~Q4#`$X_$WKbzf0^1a3rHbz9Il*&t}NnAgH!MARu!(L*brv*sBbIYx3Mh;T+rT zml@d#IR<{H=p}XV#Z6OljyEt(rZK_>_r((MH#(kxju;mMCk%C_c7k;Yt9qblwPJ|% z@Kf}mB5-gV_G5Z`-NB-FRhM*I6NDTnsR&Te*2#>QJ7!+sMm4^uk?HtT%G3cCZ8Avn z&N!E*606=UAcL=B`QoMwWl4gn&BiH{E$!&Zu*2B8Tq$tO9SYQojt(k$&JiP^6H`+@ z-i&{AW=bmOjKF0@1U{G(iS8)IfGK(3QyM39WJ)UNvvA97mpGrun>^)bLMx0$1>#8@ z#IuAEW_kH$w?V^8K-0WmHhl*e4@Qh6Q%mfQbwGXSvWKH`Ev3-6&qJTow>HMwoez6_ zH&mD#ZANe4#h0@9E^r>6MFg?FGn1{jTT(1QSkX|lqJ-AKh<7uW-|fj$`^LqsNlc~h zOE674`K<5Gcz>aV9X2+%vzy0YgK~a9+|cF{pXAP^XDqx!16w_XC~FN6OJm{HSVJmo z&I_1e#L((nr^vr!C9RFv>87k`BKzGo0#e8Y-14zcd*AII3;ZJ#YGYj|&6%eAf*zOu z_la9bAJ!EV*Xp}4W~OD^FL*)aNdBfWD&$|c+vrZbeu59*R%O@X^l=fONv1?w`E}`So^YAw{ zhK>9}j~7=`F(v5%aos6ihF+y$TNnDjF-F?gz7BOrPBHiaeh8!=Vd5kKR% zvRb@2z42(HqT5Fe$ElzV18SlcT~0>Uhci3wXuo z3ps8Kr(Ijjg@BYfg}tzX+O<(-pMCDqncQ~zt+n<(aWlxx2TZs16T}P|7F01WFScR& zm#-SwGelfIagn{JB*3<2diUigOGUEDEW1n^DT^uLGn`}-;5YQU1K+k9E|-_m7>$hG zf}GnV>s}`DQ~_qD{mm(DF%_;@mLZuHdXN7du86t;g5{^%5Mv%#6H^%=!LKf|IkE6- zL&Zx(Gk-5t!y9I66>IOML9f{I(dD4>;#4^tt&DeSn-Ef3sE};+2KeF^*QhqH7Mip*79C+0OyfCqON%1_c6G#f3U-|IN_6)ZWG4Uz|&f?BleIa7xvgJ zaY&m2h|U-qJC?AKxK0(_aGZprypPwQnk_Gmy?kL8Dh-{k7`(Bn^dVTFs;DL~ zDO}|K`O;vt-SmxVDQ~x2t9<&X!~QhiLrasw%JT%dW!qOP1mCYsP(oz+J2jQrCK{H7 zU&q>ugpRJ-_rsXdE27f7=j@Q(me$%30l#c@fV>sIiiNF-qcvi9Wv98zf|UX0L)H-z zS0173qMwfYvIHl)?iVF4{&}PgC$e86J4Ko=f@T629r7D=IY;dF#-}tEV_`I^9Yv#A zJ<3D<2|f1aM|Kb9Cwz0)L@9^>4)St%5UDQ7Gc zTUF-K<+QyGmicTTAKJINPd1 zi>t17Yc@X11l{V!cp%)k(LKnn;yKVeRNK>W*G{+rPb%4MQwa z;o=1gF7R3YPP#kwi721WUS@|l)tP!PcBRLmtT?>hCGYDI4+zG=>lglO9S>!w$~s^L z3(6sN!D$7N#K<_{B(r2@dso{Gg5I{Pdaq?*jPCE$LAUPuh9n+W1{*N?Krwv<=n)T1 z_YEOd-4Kh&VVNmy`)&wpwFxKDrxy}(y?!_8Inb;{h?TBHFg8yv^zP~GP(vz)?=jV) zM9wYX%RynL{kz21Lb_yVC3@P`hSLpaqidpm*PyL06zD2j`sPNNd_^?c>d<-D^}0We zdxA&7j|-^o%@od5!W=hjcB$$Cq+`E7%qCMX#4lxZR-jKaX`sY2_?q4Oa7z5GQ*ikN z>O=p$zZnenNYNvAWC-af*l|rZ z6KkHtbM^PAF&8P1i5-!ghEOwHa8}FmNim9kAMyOYa_zktuQ`F!ir|sjucd)vPB>bYTBkEejq_7S;2|kw zM)omA|LM>hEro4}0_GJr$yC?1+kJjl^+zWhWhO)zeqTU86dHKf))LhVxzFvtSvt`X ze(8bte*j-Vpuhg!tAW9Q1M(hEG=KTt%yw4G4o3`z4v_y?uwu(hgVK+>GYkd-ZXC$! zyJ_ey`G(i(=gi)PbnuqJLM7Ce_|L6 zEFcSVwsSvs;ctT%AIRIZ@E>rq9)377oAuSj>S?6548?Mkg!PBx{@p0z8h@7^r`T~I z8zZGDttP|8BUn{>%0gJ5p0?Zdgxy)o^>k5TtQlA;jU+urb7{4u`-9OXP7dtstmtu7 zsB=>=PUYD}T}uYj-bhMVyGwiQ#EA~x(zw*%6jZ| zG`ZrO>MCeArgrUTJX*vs7=Kh`^OR{=J|re|lyK&je&U{CFu;f`^5(r6ruN1yf4zpm z03&k73t{x?%ObE>$}kvmymiO}5WF08%@>Md%J^O<^q)(?&?NH3ONwNgV_lO4juLcD zoS3FQE`1%D!5}0u$E$-5iENDlNMw#j#CBKuhsHo7vcE53RJej-M1LSTVek;yb=Oho zWC}`e8AFK3s%vml$Zxc-khpbgdhDMe9Za0qt* z{)Hq;K{2ShSah=!Tz^LXYQXFdJ30s)3sgqVj9x!2)=U&9yXdjrSf5T)W05*WzqxW- zz3R9gjJL^DdNeM+={9M-CvElhU|{zg#yD6{9agk?d0ad6JHa62>*LCVsaR5FIT-I} zU~rslXKX!rq&r(Wd0akSM8|x3T7(z6KBmFm8Llsz(|j(=Hn+g|#I?y=9uX&7;A?O@E3 zo<;W$!~S-%v1-&TJ+s^-d>qqc4{-1kuhqn`R%#3sqXb2 zHy^;9K#gqfvozb2n7J_!B48!pxBoo};E#@C z_&f5x7^a4yZsd9AB~`wmZXzNu)ZgfQ^jooXp>>dX)a@F^rA;?Ar9*b;Y|I#h^8EvJaNwyZw~!ZWV*o$i*&b zrSFH;F+hzR&*pjgz2{v2yj2WLH*YWX0A=6Gz|=7mePd>J{oAFJmoptNLA7)bBvZ#w z^o@5pjDJ=a>Z?`3(i+ErG_o&iV%`;{H;&2k$g}(s)77ZA~WOHOao&h)BSn0m}j>lwkWH06nb39S6)_-eFSM=^<=@Kw09hp;S6KQPrvI`vs z*QLV&WtfsOm33;MYnl1Nc-WVJR-LJ1ay@dZYMiFSj?pRm<-#BWXCdmC| z1vZe)H8|L>C#*_u{B8bgAdhPw7QMmMZcd5T^&G4NAHa1Oy&Qe}I@y-4?`;fh+}I~0 z-%VU9iL4cg{&^b!8^|)5fpO`rzJE=B4dj;OY)HK;*P`Om*JB!QBVYqLBlSs!d)g04 zWDS~3B4gC9c1i8YFq&GE9-{{R8Z&!3^;!+Rr7)2)@fVLwv)7n8wPnlQ)SO4Xy-(Mw z;8ktsZn0<7z7WrBuhmeUQD1pfqjfkJx+k4Z?xvT{#b9SihaV2Md|eDSDu4U5*zIhA zZuk7B_y_{l78fDCgoLz3b z&2tT8<()n}J_rv4s*(nVS$j8Rea8cefjeaO?N~AJo)`Zm5A3cl6Dq$4FtmqUz1`4Tf#AB4 zPGkq5i9tT(+RYUBU{!v(*~EYXb7Qdx{##IbLTq9(F*3qRU75P4B-q^>svCx@0K`9L z?WS2HbQoWCl|f2RC4aWPoh-Wg{%AD3J+rG!x$cR6s?U1MS)eIhcFte6!R6_&OL~2? zqFLLsT0OChC@a#w9?(l?b|0a5R$!qusi5U>D-pT~s35?SD!%>!0bL@s&AD6N6aD z;5>DKW0BuVY+|76#?u^u70fT9>$sVb?e%RLr7u=DG4zF;%st?xJ8KDp>}M0Ex9shm ze<5|>G1J7*7_vBXf<%x)niwQQPG?n`qXP#wwa88WCv~Q)iJ>)QhBhWDr z8L~SYQ@M2Ce}5ALWXR;40NW}3l^jeHgIUPnJO@#@58d+JbxjOtA&)b<+9ZE}PW}wK zlJbQbk7&l&mtX4wK-80bQN=dq*?e!$U_76!qP z-#Nd0T?k>do(6yXUWf9JMzt_&I>`OZX=3^JL$olAh=1JAJ+KBYC2TVDDfO6wKk66~ z{enRbWQ|s=XkEJJr-cCwWQ!KzbCNl7DK*{Lwwvd)^6Q5d1~HIN+V~D@_`6%hkOZj#dPUEG`u*9$JK65>UP9!s)KpSqHnQ){uImT6OfOZ{ty7$fEmVY)>BRDMg^l5om&g9cVx8@6_=7;^jjh*vYPGoSm?JiEO>P42t)kz(u)$sy! zqto(Id2|BB=+c+rAWnyyySS>f*?~B9T1UGVs;A>2rF}y>c2X&*Ta%qU-%QMj*&5e2 z<7v8{v1$LOEFM}IG(^_-PId|{v%Q!8EMveA8GqZm`dB28|1jW(%*!J166@wI&ZQGb z3qyhIP3C*K_E7;x_YdJayYk&FV_*^4n)92;)i8`;hdgh} zle$-~g<(bHZANcd99Y58D!q7XV{i?*i^rTQkEI1A1&$j45RtkNrH$b=_U4v&*bmoh z%YRJEJ!gX?tHUcoO7r0ZCFmp|t&M>+_GbMfla#;qa(_rDFIkoSDgmaA!L}Pq@;WEz}Y$n@^+N@`m-fz#(4rl)L5 zXAe)=Z>?k67*K26T=SN0JZcOa;KkP$DSsEjrau>gVK?Mf&dZ&ym)dWx!4zk`EmV^{#WEmidu1bzrcw>dHxP3xU_LieOr zx8JqW-MGcB#Rj{*^lSBVZ?BA`qcPRQZNTgNNS$gOaF|Yc$A&>vcWbM=3Z2yDaevFN zUk;{c_2$*lXghE9>gS`o+Kb|2IFq;ueW_`E?P;T?{5V}F?Z&x#Hs_)KbT<*Z?y;`) zU411E=<~jN@P*!)>u8Td^WfFp=s5D3OH&Y^l%LZv+{OSMa?T2zA?RZ1Cm7opQbUf| zmz$yBWQxG`J%iaxLQ9u{!8YWH9e=o9m`x;t%iL`Yt08}^9GuG!WtjCmWQ~13=94dN z8X&s9q?|~S;V`s_tg^g8<`QBKLx;#DtE9e5vZ~@RAc!2Z`W9Fu1z-RWnP;CL1ua~a zzBa~TxDR<~HEF&fa1j-U0l%BK0;ge;o!*_L*?Wqq&;5+`;*{K$5{E%PWPh<8Tjy+V z!G68OpE9oC7gIx68<0?hVL#-t<=y1<<+S`cDSy+0!;l^_+73EX>a!tBT}hKUsym(x zhf?V`$#WR+LzY|P?AzrV>NpJOA-k>oU`Ahh~C4 zz|l>9^b#$PVT~K3t~BSgLFp9-j{yzj)HQ&eM(%yb11BPbg8>fY&41+yyrzK1WN_qv zHTdxhMxZx|m97Gl#oOP$uUxX?WB|YPLtM!`CaohMEUzn^IVrteOj<`4*s&z=(wG`> zyrNUwgHirR$0T@Uos<(L z^TONLaEoAVrCy@Iw31p5{Cgm{pS*ptz zcW7~()u#L5+F3nW+_@Hr?Q}3-SdJlY40rrA^^cWs07j4MR)1n*HejZpI(5Rsz6+G; zUC-Xc%kBBjzZ0E#`_gg8Dcir(caGdX?ba<`nKxNsDG2j{y`7Iv(=NNTN1-tkhcjkN zC&%T~>b85Pcv{fv=?NtK+H9Nugmp;#82s@al4V@(Ne|k|%;%;%`_AW{+*4&SU>s%j z`1quGtlL`}vVU!^d-A%~)Vh1_wA@4!Pl=uGXwUc5NpG`Wv++UTybhxdR=(!WPV;tk zey-Nnvtj#4oAbD})lSak(LO0#HQEpLbV##XCJZ-QwF<{*8ilL=h~Z;3xCBp)%7H!e zcbaTflgV~_PEXa%`BB>nTjM{}z|_#d)Jj^aKOVNBAAkET&^V=b&tur5*B%W$zuVo2 z^5bT{O#5KHH|XBbvCNhh^(#;3yZPP|C$;HW+78yC+YA+65D(#iZyb+ourQb1!Me3S z_1(LZed+QuX-jW9E1o;6pzv(t>MAoi|X*OS0aV1iy>9|bX+h*Q|a zHGc+FzaI44zXgNN)qwf(7sa7@U;XA0x%qyIOJHnSrU`iQ*n(5?iOPP3&D`_Z8=5M= z>#}cKd%qe3$|)|$us4>MWN%X|T@zDO6CZ{ih_fsEOV?B@s;LtJ*U8>>OF&e;s3n;HB#dwP+6%-A{jA-F7ciIlrc@p5AbLX|Ln8VXPFOD^n~J^9fRO`MQ&w^*y}#cAb)B4tFuFXe^uqGXDfS}}9$u~&l+q6mu=@Eg z&A2aed@)4tir+)l`sETCy+mqbWKX4S$u4NAMci6V?nv)=l(_sK@XB( z3&uUBNni#yN_z@(l_W$mAK5=k(wOq$a1&T1G>bzgbDuf?27K3KVQw_$^ThYm8Qt(`Usz2b&(QQIPX6TBciErHh6im+<=6t!U5u0)rN$okF3Xp zdsw}nDbY&c&n2*H-2A|*jPm8zz=65Q_lfjc@lCWO3VkSxBOav_K{#7V{K-G{UG}bPj#>6PQJ@oU?BB82q_UeGt-XyPmMj$t|i$l8! zTn|)K7ZyM88-G9V_XMiNcJU~zr0ZmrM)oG#T!qiuZ~sPSo_=8Am(&_g`vVD|-11=i zBg@ZwD+toSfy$;tlzqU#L2ON;{eknw3UK4=iKJC_Gzn&@S;hbD{}9pm(L9=O& z0$lOa$FH48ecsK8C@a40n+3MDm&P&tu^Ik)WP%%0IDemJH-iU+#T8DgUjuN5h`7Re zbp|QP`8_V}d_sL#IKQHG#jhB}fpO;Fh~RqR1AijfZ-sFrv!@VMRv1GJ%O~4s#cvgW16sN=^8=Ni2ziLWg%BSIVFVPJA6ROx z|A?bT)eo5LzCKCzmCo{sEE8IMSNbXyMAUV;!2mlV>mXN&AM4Fmi7L$VWcIeMB8%_+ ze$|iH73qM;E>|X#DL&p)SS!GvNp-w0|A^!Kw0{ICorMSeRp)0Sg+gI4`6l!bJ0MZ5 zl^=gz#S$3p+6OrF_iHGGmWZ<+Ej({#ZnU$a<#o2q2#Nd1m1MB~d6hTi2HC1?1r6?w)aVwjIKCd;9kJmpTy=akygPE^Te$eh#uvQ2`QfulYJfigVZ_fB zU4N%e86#jASQ2P)&e65xYK@^_N^&fI5rCKk(md0mm-X2JU>)lY-69Oc5tg0XI z#flNwEPp36vR1@|7S4QX=vfiSUpw=;U-3f{6Q*8#t!-?r+|bIM|J3Iyi4!4EVetf* zgzNPy8xrci;@5Zjd(TbM6@g2o>cyAaUVlxz+2C3M3E;06UvVSrFow!*xBUJe00030 z|Lk4eZX>r9zAw;sAoikgfNEvQmTaR*0m=XCpEWGSM)#(mG?c^+hof>ha;$gg0~9F` zEU*obi$#kT$kjF%o%L;>spQN^mN%QAJ>(IlL36R#*k0lDA{SpUe3v5Wn^&L|NT@MFY+XdMudo$tV(EQEd zt4BBpcc2IlN(TwYc>8Y`3XTaD>gS|z6ywA=@WA9z!s}@jM`WXeg02asjei{0BK~#I z;$IU?9;NvX_%s$#oPYMlK8}Ah!7NgOykROCPB+8fEU4lMX9{~yg2|;^?Wn$*=94#y3lQ|AFFqN#Ybl(CK%B>;dh=nUv@{9Tz4n{DW6c|SZBj4hH z12aeg&V1$=&u78pamxdf7HTR3vhlBPaKM4-;yink8x1D|+y?W*xqnTpP#1I?%nm0^ zh()PB4A2s)Z7@sZ#!HHNQy{G@yr0F=99>y_3)4W^J|X0j?{ zzF<)+M@TH(2GdBF30m?9QY37HiR9&gsZpWnk;#-wnZvw9%A?z0Ch4u8xwQPCt4jGj#z33uH>@y zdO5~1=#VIR2TUi&?9Mg`v1Xh*a3)cM+!1i55sl_1n14RX-BvXGN7*|?UYY18m?~Cy zf&~~%B|ieVQ5U{z`7?Ao7;#ETrd5TK)+`paL4t6SVk&RAo z|MV2W2ii5T11zzf_Fj_R-PT^M;eXSEDWW%L(tx{6qlhX0cH4p54G~%2L4aJqN;FIJ zX@`H4?SHzO3<+D`K^A>r>Yb==lS}{h+JoB*3s&Djqur==?=|yorsk%@w%R{`NiO0b zO)y}A3&3MG$ljy@!-EDc`MRds8)HNV0}4KdQao1NRPz|9;3swR3ZNtJ?08X*lL%`u z;q#{t5Du8Kl#YQBOyeCvRTK(4rNzJnX3MMI=YM$a2|uLRyEh~mkt1dc5j?ZOPb!|= zboTM#f#aK{%w_u$1)7Tn_)*NY`TTjK>AxJX0O1+8$rR<+?P%K*Hv}{!h1-$_9@ZvXoR%D z4S#sMsB0pMWC{(KTSUgAvQ2O-J~+9>#N{xv4%jqLIW#Zs$S2(*;5 zu?bE(bAXqz9#J7MmlsT9*`G`vY`c?q8GBpN3vPv+2|ArJi3bgStH=rC zb3|NVPB_orjkKMiqCs=f#TsPwo}e?tK7T|5o~idV)h08s>L$`NvCc~Ea3I2G&gDGl zm?=XP42$~VgP}vI>s>a=&$2Lyxy*37Aa$}|>*;jF2+dV?wlu@3Y2o$7L5K8_Ru^7V zbm=fmr--WxuPS=?ayU`3EKhzUHDcUZX(SJ6J4~gSnowb#BbhQ~c3yp?7$36%&VL?k zJB*{3NV{n=W6G4`woywuQqXi%?+k3hg@YNq4GyT_AtXK>JuRTgszf4*X!cthP!ZXyEcqQ17pE8bg>*-&2bc^l7|$RMhrx-&zOpY z1jetKx-+Sj^>Il~e-7hh#h%d!De zY2)>gWt#7$jyYr`tYFIy4=+whk111ckyL7X4nKRR=bAmHmw}fOE&=P8u$K}Te}V-( zjga=9=lIfSqXii7GB*+9%ND#OJmj)&s_C)^j{yzdgs^gR^Jx?fnnVA=PVo?p=Bgp= z=aLZ=fPIIH?whqsJ{SmwSd6pfz>4hqO{@Hu=u^c<{%s9E_mH1jPYSxpt3*V-_m)F@cWpo|PH@R} z7RwPIrz-!!IyvBUAS`1P+Szdlp9@_66JQGse3oQ=*4wSD_25qnUd0KwKbK^h5+yn> zXf*v5c|k>-nn0Mp!-Fswgg-I(cyI{Aq!t>y0>oNlr!=<6ufMqe4Fa%jrx4dUKPC9f z2~H889+$(K5-bn4@v?X21wsg76Q|1zeh`=bni5Av+8?i3tJmy7bZxftQhvEjPR`Ge zb3FV}TuI=UA&#zUjo%(zJC}-^ z5u8MOlI%D)FLJcncYvbx01g91M}S|b$`=sP9OfrEVAsiZ?pZh z#GA{NWF*m1_I8G`lx{Lk%%ybGDJB>*IyZS~v507<0_QA~IFPZXRnc_D!-@GpO6=YW zNFq`>^uFue#GTW4azCh)v@=w3SWl{^>rAKdJXZ4kmuANkv!b)?t@hpObklf#h%m^$ zd3gQs=c))kX94$@tDX`g0}tQPm(iXQ6dw=Y@rcBBMlr-usKQCYKJ{s~T*Z{2(>M@x z63?=4$d?445_J?0uXS1#fvNEXW|wp$$=l#V^Vi3hjh_-Fe?9zV@czq(@9h4=b7D8K zDY_FoDo)qn#E!btA6VvUNl#Jz*in6o=*Ld-({wnwHwji%1gPi66D0S$crN18-q4g{ z+~iK)O$4qDUkl7DB3=!J~|VmsyB)z z+1EOMe*_vEA(#@)l5#p=UXPBst4RZ8h&s_+B=(_%YN<(W%t%e}ua=l}oQfHSd%EjK zG2PQqKDq|?bd--Gxu>Ie6xBT)#iOY12~K}7Ya%zvC`L`>CKbghKpcgl2o=arP$#-v zyac6UgKK^;D>gTEC|bqlCK1J|*xV$dSQVR_e=HQIVsjUQ+GaA7l1(dl+o&*K5h&0c zl%Vm{rqMQnk&U7WZ7-x;i*<(72C!l)_YMxcUGZ&y7GQWaz}_SL8dFDo%D z{Xg`0l|TLdcizT7Z&rq45hT7yRTv!he`P}k>Gn4~{eADa964Is-}BZ$?;C$PbiDVC zo^5|)```IBxuTwC()Uu?h-56%Eap)6${%gzCHeI<%7S{zt?(6Fh0pXci^NxLCDvj! zk|wG0lT-vX7HzNDYHO;XmdQk05so6Iw!ss<)=uru=j(MD5X-T4;9%I4&HQ>SfBi%f zYqEA6ye*2T)$F!ab4ZLr{3Vdfh!yRz_F1G7$sp);TS0yKd>n8cqrKLuM2$<+K3h#k zL@-LM#kxNChjFZGA!*UmnbEo;AFd~9ESOwoUxxdkfY4jXI%B_+&)1|M)`d@QBI}HO zM8sm0T#j|h9+Gh^l0;U74{Zsxe=O^~{kCY5+sHa+4~V!fW0)n9$QQMQT9a{K; z#kKb7V!7Qa=HTCp=BveGrdTTOlTIi@_ESLdMX^xK6%Rn$MEeZ!Mj)fwOR?xY=&O zpL1YX>XTrv?D}?Rd-@=FfBO9Db89r8Ayzxk`|6H70v_J9mxhs~uViu0!La|J2#n-eIt=m30c(-)zVK{O| zm~{(Sd%j9?oUYapAfBh_nTI>Gs*=j#C z=k>#4mbi!yA!7RLQXoiODw8*a52*iCzeH@(-KhHq?K7Zr2CSzmN=wK3{F?M-5Pf<* z1#oD#zlNcM+_ZAHie;$c(AUkwf9mRfUmu8P{siP5-frA|2d!VH*y7)iP4B~3v;|;Y zpM532%HC@1#@%`VfBQ{pOB9eci!vue79F^WK^& zcjxxkNoHi;AQ?i;Q7>p{-s|enyw~ZWdGC%In)mLYp?OWMfBpSC7@cSIdGt&$ErZMj z7@L<^MB1Ov4UrSts3zj?v@a0L96~t#>+SP}x2qgHo^dnezV~$7NzFL!+kx}QzL#Jg zDSrn0MEATKXwNz`EYe*bRrc+iQN=p+p3WnXmUTI~Th@*)f4U3#0!dnTEni^3YnUiNO>xi66{H5l@YlunV6i2A5f*y1MKd`Pk75`S z8*KK_jJIW_Eoa*ngF^f9`#aF~u>A?xaKRNmyO=V$5BhI7Z8{o=0~Uj77uO+)oN0fm zhZk}$+IMr`fVFOFAChabpHqH-hA$~u zKbbR|AqxNJCNR&H?Ta%+ck#tmYw4>Cx*vQ1z2SMNti+=`it{c$2U$9!-7M}oLwm#d zyK5wAo?)(1Eb1Nv>ed66s(`qBbOqYY369XUuLeJuN?@Q%%2& zI1o1rf9H?%dN2wKFRq!%hohmihr)}?(BO+PhF%jsRuKCY!8<3J^h3{tZ;(>^6^Avmhbxj`?n1aC`DCVWMN-LK30EYS z%p9)PO%vl#g#(TmhbkOX%s0RwxnlYW1`8GQ%%3=t*jPzt3obt*AY$&Z4+jggjeR&& zm~ZUELBh;qAC3uT9sAG-a1DgCl7^jL#1J?NWF&vVh<-e*TvKpf3lt# z2Ze8XWj)VQuPC){k`IOrNxxUtx*tB6i8$36!S{yca6at{^x7x#IqHLL-I^blRW;18 z4cNL&4~RthKDB-9%knYN6g3%>3$jkthh!3o>KM5o`&II5xhR%d0B@D#J7rPpiBCGV zp7@lg^a;O8JO`lw)jx~4md}vuf3Z&72O<$y8QM1#ih96rh-yAfZYAr?J)jbXp3R;= z?E`<=v?B!Y>4@rm>!`Ev={s3nz&Fw~a|J!EkEeCelTS7CDNo;iaEd-P>H<*b6nZ+O zeCq2i)>_6?13oI?bRmvE<#HhoK251zh$T_l8>B8wO*p`mYih#LrCdV_k}V~lQm|+#Lm1+?(hbKk40QGkBHuuVV@Wv% zIvhsIHqhZHQqF-6hmf)jbZC6E4z5fMs_a3_!-U@2-*8FtDPO7@e~&r@H@enik0;)) zjoP^0i@8OMcA?cq@}k{pwUN;1Q+{@f7G>&smiIBzS%znUDUH|EDHl_s>j-I17VyB za2_?OVm-0S^p5#;Y{GJL@epdfYX7|eS~Tu`>$tPD=s{m|&#sW7`E=D6D%K{fh7C7& zl^R+4ZBFr`gL=^jwI30iN*gM_5i@!byRekYi#TL7q4y$wU1^$62N|2KFnerd=Gekg z^De!(M#U_&ejd zD@`FH&Hjxsk&TQ%8FvaP)hiG3X|wY{nw<>NXIi{z-Ht`NNnP7uqE|8)KX29T7F*hM zb$hAw!qQ~$); z8@n`XOj%+VvBQ*m+`_Ihfr_poU+WO=vAg`4W~(F@ww=2MIQrGR=b|i%iXXYBKSXG>mE2wa{!a-4N)*x82!dx;{g1 zS#=nRf7shnOx=P~yV0T}snl+_=%g!6xq2x4MpNF7oo1UUOUG`%%Jdn*EraztlI6krrK<}>2kNYRrZ*s*=tH4)2OAUnMxEnh+*x+gJYsG3=x}OgEN-tOM9*` ztY*8ZBG-f2Zc1BJG5jis@r~0OA{ZsNk^Oelf3?$8`|rd*WI%m+7(=p_27`PxEL1?v z99eho@5>~GZ_yS?49|Kn%=}PMpC|j0-Is}=CS%%x6@{_(L7yN<3o&-jX?d>WeA;X} zbp~bCdroO@?c(>GCW)*J3%^QlCe)r&<<6SZ0bf+h%S0lst6Sxu>+i=QFc=ePb=EX_q zRq8bW2zV7-7$#LXRSX^^0arOZh$mNBmcm+hDWwPXN3!U`J%5qB~7DRTaKU^J`vcY^a)!Z9_Fz+Ea*+ z5v3ouK;CFumxd>!HxfLh0*|dSM=z3E?N0QPu&VUYi-%R2qnCnKWsF_~vC27Pf059t z95WUUSLK^%@U$v@+k~f8S*(OKlFqSQe#GLcjAI~{R^_SfI9io!48)SEd}AOMROK53 zNkG-|{8yE%@`yu0s--x6pUV|Mb$bWCYokZgDQ;^Gb&pbI?#PjlYIizv5;XN0-gXX7 zW$w@^=v2lI-8xR58{O+qV|Ncye`OA9B%|7$uqGi>x4PLmFqJu;Dacf=c*fDG43BTM zhg0Dd9S6emWlH|oU2E?RLdv7Ikv*2G+vG3~sI7xRQ;o|ac>5`8Ro2b%yIGvbc-$2n zwNH$ad(65;KN^h2GD)cQARyE@R<%%(KWE#zDjyTgl0zj=)Yh5$#K?%Mf6|)>1ELBq zR)#?(-(LDsL8zxrg_S-7p}Mn8^@uVUD*17;=TO5$->}QbtG@j(dt5~zN{#yTQHNwu z$+MDm>i$6bK6JFd71AXjP)~~9KMy!dpmrwz*_mAEOfGj?*Ia>6SI&R9dUbi_@3$Ve zmO8EJ&g4|5b>1lwwN&U7e}nqyqkF4oKXwH|ef;C{%GnFNF2tdzEH1=Bs0=Q|QmCaL zodQr-CTO4diJ(tczxw{snZ?fOORF>Ab|z0d#hyO;;o-{1mz@Gnb)jjU>$F;()>oC4 z)8ByAoI+54{`SV>nd>W;K5_~_{rM_~Dg=1CdgaU2^UEfy&vzzoe{@=lrhQm+iaY)J z>ciE$r&s5vR~}qmB1~65zxdPAH=WkE`k1w-D-n_| z?Mz-boy~1froV1I>`dO){|WIhd5gN^LC~h_A$z&gn(0hZXI&g)${49gwv;hakw7U+ zq#|ij-bh7~q}`5Gf9oEp8-o*$FJ&2=aAYaVl!AmxsmBy7QOYu0;*ip{vrazGSq}ib z^BfK$Wtr!21S$VKhhs^(<~bZk$}`WQ3DQpM%k_F=isb3ppO!8@TAFnWB{fHG+8nv_ zJQ5K^Y1w7}vUq;$1?;j_`(=^3JmD}>#-6)e z_v>GI_kTSzf2u_o2U|byy&}i{;2#?J{qW#Ze|i3u!Mz6uwtdO=FY=yE60HigL>?Cv zd1zo%{w*2s%%6t_*3O(>zqqn?{=2)arM1gv*WaHR@P@Yk_@Re?{v+#q!dBn`VYoXhme>LwmSGvvbx~(&$az_WBwqC^x zAFQ8Q`FZioy^~-3bn`+l&_6FyFXz){Iju$ByST7EH@!ap)!OYV9K!bg)>hfwe_vbs z_5!1_z1C~CC7vwG95wFK|3}6hd3De_zH8@a*3X_KR%0F0weLP&`}Q)i8tWk5yYTk< zw{yg5fA(2#sn&nGt@pA$MCwG)wBKIS$!wdS>&fc2zRt|}8L_?tw)*a@e0;ZgeeI)n zi3M4AL*3Rp-R3Q>b$ZI$cNafdTX>ULjdh&{DR<`2QD;c&;@oXr$)a_t+x#LkVebu| z5ZYJjZWE-vZ=^MEQH!!p=yw(`+`TqKpVKjwfBBnk>l+ih<~+41L~cLTZG8oS8!`z3 zww7rYAgL}=E40t_&1}tDrypluT5r#u?5>=}lx~#jYx(fZe(6J0SWLbArT9!fvS)&O130;v| z_(~*^CSI$3s5AGl{bjvWlR3KLPLZlbLdf9B9qEvOSO)qeNgx!-kn?sw9i`(1VC zerMfj-2kx9 zf5XA=x!qnr<$8OK1W11&(r!_teBCyZAZ6^ft!>e_uu-MLn$&?Rc^grtHZYDD&Bee- zc9h@1NQ899IJ?D?^4S;3k#gA=gNz=XXwR3+lC&ehK%*lO3^P&16>1dze_0iL=n6JE zlGI3N7Yr^sQdO~x=>=JLxQB%fWtQQICp-)zdRX|baG@^<+7liO6?!z%TKTjOZ=tx* zXLUg;Kc-JT_NDeHR0{ePvd+xM+VcrRYPK(@F9?cO603#ou!9`E=#S#e^OixV6~iqJzs)F(hS?%I$e*{+w+x*ESN1tznQEv_X!zf zHFg(Z&tUNQOU}Zc$Am~Gr7pVydd9_ZQII(hif6rLDb5fR=L|J!F zu*0j_LxoPEos%l`MIbb3^F%>*%8*_bhU}DjQe-LmLk8 zF!2C zLPY*6KF|C9p4q+Ty7yeyeC|^-XU}(bXAW#)DCDDE=CphR45GG_X__`#a}V;UWyR$m$mR`j9iRmNFv1iAc zP8hUEEn}XAy%Uo~t!ulK4$J1kE7O*abz-7hmPZV7G2;zNENl_Xi|DDZnmK#rj%l); zhKo6G^lF|zzHO+U6znIYyRj|#q(>p(*B08T#fCi}?nCNMtzMZgo?1aIrk)oAD+(Rq zxc*sJHt|2%=IbJgjM6libsZiVX$q~{9d`;v5TdEMBYoAb``dh2V{l^@m&4iB}pV;V!yRX8(IMY1`BG=%s}N5Wrtcu^p;+~y$S0(ooIF+ z(dT4x+Z)R7sK=GPsXG|J#}&M?(IY9(NwVSB7tsH__?i(oc5b{2?t>2Lie*YyKwwnwquvt!S?+p}*^ zc8U)dJdDVyoyaeMpfy5w7U^Fho>CYY(7pa;6R($iHTRJj8d^|9yC#XB$zpY?qp9II zsFLCbWiq`g6kfvz)r-QV)O9`@vG1r{*<|NJvS>?8%9MO|@18hg{@|unQQlCGKrGv> zN<*AtgIvb(ew7v2j@U(^n=^4gs3>|Adr#ZgGa}0HHbU0hmrqL=x1-5mWKY+%X+$)X zQQei9OQDpb0>(=sNf5Sd9x8jviG4&dAR5U?!7EGtse%yR6UjM4*xBGHvUa-oWO_qo*<0H(O)Lkg$u9r07W$WwqtethzX>$*Cj?4HdEG$3q zhnV?u+2uLUqT+efMaWf2ZQ^kj7q#>C2(!?|Z$)l`7$x`4Y8=A?qm@g0>f|Lj1y;uu z_0$gT>|k$+kXY|%5HAUTVngh_xWasvbNcBa{GFDCVRdF?RkFlYQqK6RpWf8kmQ)G3 z&vw!XZRHEI#TA=t;?C_n8Z?7GTB*bv_k=ghCjG*iaH*-UE`1~olhWBtaJt);KvGrO zHPI~^K+6`Dn<>p(L`!REV^}D&Ix{O8M^soV=XWbOPK(r0B+oeu+uZmV)Sn2wt6IE;zkLEO(UJ%XgUVM0E6# zbM6+|%+FY(%J;`xY3lFneeeRsM{Pay(rvY!Cr(0}-U}@r)QDM|4o^Oe`e5va&wJ}t z|F1q0Gfv`qfdRiAt2v4QM8j?3E>aCl=2SRs%2%0hibyf#mFP8hw2B}3?j7t;1sl;m zray7wyFkb3^BDM2ol4)cTb@=TjMabYN}ru<>18jHems)IIXJsn_0wrC_>-l9=1vKb z1^ldit%we7Hn4~3I!W9z|houwc1-DWRRYfGiS)Dzq1<)}Voxl6pX?&Vdt4T^65$)&@lfD;C++a3gt zc*h8jOZc%(e2LlAOdXJq^>1u8_L!D&TpFv7Q;iM#;dq;j)#VCTzYPu%%Pb18D0l0n zq2d&4jE(kGtRm@%o!YuRiTJqnODu@v(!>b!2^9;sB^;I?$NSFXCt9sZmbHFm3&p*9 z!EUT+A~Iyfuq#vQau_Kd0((Z~`i(Mj^v+#3Zq)OM&m29zKgqbUU3;1mk7yK>(wYnCmDt_Wi5-J9|p%qUi$!If!eXoyi@Uw3e2v z#ldVLl(v-JiKwZBKbo!h@Y4DF`ooUO?;1~inP+!7HlsiGchg=qRdC~GW=oz#Jg7E1 zo{CNWlyn~P9+firt^in>KWy7yY_u9D^6`$LKi=; zu!Z%iOE_S+$IsOHtM@`b&d&>*iK$rFvZ+9u#jxxrP|s6-W!0rBOs3!av?~jYrboM> znZ4^Tooi#Kreep3TRrQuOd)CrlIF9QHtb@?FPSslwHHWkdw{rf4Hu1M64@+2?I(Wv zhAUM}r>9C#Dt1uZDf#`oeX@-{MWEvKOvK+>O4r@_1x_17LV0Uq?G?+ zp*#MK&BlU%$5wr)eMqHQsi5APQYA`(81khpn)~JZU8oJ_8(B5eSn1ab!P{>{F378W ztcX=TDO zY95yOW&0Y2TVY5lYy8{73_LTxgd=ffRR0o3Wrw~zAv|QIT$+gSg~4UZaoF&NZ|w%D z;Tz~<&La9P7HI}%Y8isD(Efwq94owzZ2%egPu=U8=YZQtBg`=FsgO zuwa;lL$L|MA#|BTc1A5vFr5k`!yfxHYclgLmByr0nQ1-49rn&sog=&wO=tSuZ+5J` zW&TP^Ecx9WQ-YrqtCg4Hi*4HXhR6+_Is=r+Iy*_%Y!)csULbO z#38HhoLM+68{30n(DF)&c#QoKJSAM$IWI=Osq7~a<5>IO!r5HAP2z9|ot;}HUd!Q= zwyM{9u;`~6IE`cg)$xN?FD1N#m=?`wWmE;_Qg-@|v$UexV#Ra4p{-(SKz_rv_h zBChA~gK*@XeRaxU3SVk`=_xm&J&!XU5Rjfxe|&(bGW$K}$II=$VZEMLZWr?tXj;EWwY7LpKVBVljCd9c<7Y0x9gT5eeDeTsZZX`vaV-FHTLO!MF;@llE_ zxu3hTf%X=~z{zDshsEiKMD`an0*7UPfW3PuFd9}8a z!S#L7;_c*Jf!<+%_OD-7n43t=&!}+3qg2zhURxXIT0og*N;^eVklkPLgsfB^!`h&%O-r9ung)ke?_PIN z7Cl0QhyBwPVZUl5Wm031+wyy37o3gY$Jb2Lc52y26s{@}8mA9$mAt-k^$0?zt^4Q# zt+R89|J@s=uh4`sP{LoxdaCUVU3dGl*!mj8tV>rdqpCQS>&~_(_C99=q#Gy5^7u^*|LVA-3XI z7Xz*i4QbBQHfxeveNPs*lt$&Ju5Q1MUq(q55g1JOQs})bguF!FA`<*H`GM0&kHJ>~ zp>6H45LFnMGP1R?GzNi34GljR6=iUo*T9Fvog~39%Eb2yilnqla$4j?iS4Bg9?A-< z=QdB-<5n=_Z_C6WS&Q3M*y9sp$TV8y?oMeQ=C*dmBqvvIwpBdcWTVgIJm~AN_24of zF?9CZWb21({!T04G~h11uN6T(AXYHJ<&MDFv%-SzOnd-qF<-qP%ro)5)a_&z7>J{sP9)%o?pjy3uL9>|l|^+kk*`QPZ;4Q%!^CB`bHt_! z`^Uh9eX>0cuVEE-quAGbMX!__uFy*lp6*gI_OiFXILu1p+oNRcVIO{RsFpUeODXh4 zx9%)i#imawP(hI9~I0#!2SxiV2@2nT_|x16zApt$?H96bLwx zv@KERUE1PWi&ufHfdZ$h%IeeP%C#)`)|ji8^d_8?$Uz>4+_Y06AK)|K3noVwD!HI!0(?EGTy#jO>UloriI#TAm-hI+wvN?OsbSS2#`PFtNN?qe0BQRShX5 zI537sOXkmdXAwM+hcOHdTQ48uNT_>)@2!2)#EV$$-9I%)bw<3$@io7`g(un#tWdx?tVxC9x6xe znY1Y5bfn(^1co>)|GO_xv0CPC1wyGnLywQR3ApRtDUB*wXQeLCv#ky3rU-9siG|L5 z;I0>5)gezh%c@FD9Tc>n=G@950xOT0BGMCI98JV3nS+up_Ax&>lAZ(Y0g3Zy(vGu`}(-uRRZ`4?2;99%M)xiggHgdSs&R$a$}9VG_>jywI!w{W=P! zVJ;orvrWgx4xcG|ToVhb36=c+4G2Y5XYh(M+Zy?75WtP{lpsUN zy-tjcOV2j;_D+4gjgZGv$Y{b|l~M?LScS^uQjw(KTF!5pE&*;?I1bkv#0O00#B|rl z=tiA<2)V9?o3bHEpe~DjtRgfbUZb7kGk&^92!&D>X`CDMN73AF?ZWFEMiH5+XC=&D zcp>H7t|Id9LPluER>?WrAk@qnWG3mi*7M*lkBA;>!1=qMWyD*^>rSZ`>(YNXFuG$- zfB(D;-N<{tt9Htxt(doT1;Kwd``ojjwIU|BR(Mu&q2zVv-tpO*xsQ@aX2(@EL+IM+ zkzdmS*Xvh)zr34gGZ!eXSrT4&&TnU1oomOSKTQi8UB7hvZoytlQ3esh=)GOvClx^F zYR0h%Ww(vc@{y8X=aF%YrF+b6mRKo$BX zN3sn=m=U`qIX7JcRKxgQ$7LR}kclAFjVPxCO*5ft6duoNY{6B;1x)qC4?l-f#A^)Y zGFoR3M|I58T`zEFMj9p}eQKu2y$xf`gcN;WCuDy3eGDRb)I^CeZJxPEp3GzXF2xgE zg*Iw82tH11d+kUqkJt^5iPj`D!!l40&iRUc|4gbXI(@a`d0Y@Y@k~a3esPKEh@M89U`NID|^g3iHFDd7`VPFpw?;{Wiok09K^ZC zi_;coP7`1Y#&&D~wd0OF6;*81G6^Tsv&|wP-b&-6qQd)Jq=GP%A3qI*eAZG@^4n*DKO83FuA*Ir->qX^UQ^2ugIbDx2>R39Rw_<*(9?aSr6cx zR*6B6(J^3p`uPYltN6A%C);@B<6v}C&|C9?#2t@m!@YSG?>U2>VSM`b7yj1T+xHEJ zUi14;8Oy#{YfYWbJ<}I+IB9(#kulJ3^}|C><#889O+?a`vtLiO)BxVZ)ZE&={(;uL zANEOx8XPBzP0jGsN8;(d;spx^f~^fA+s`WI>5PmI_d=A-nP7^0_6T@ph3OlR_qAT4 zK`F!jMa$@O^|s7h+l<>5Zw4nmVQb3F4M<*}_&#l1@0{~VGCtDbE4}IbewahpB&kbYlfn zfEBXf8>%K}NmxjFBo-sgwfON31ymq)YaBw0o|uBXI}Txz;R}?%fq)8tw7b1E!D+Qv zperF4(4GI(pDZ02I}YK8L7GZ$oPY{&Lhhil$Dq;zBPF!KP*{$0?F|J~Af-BiDs+M_ z(qRI^22*FKyMcfTgc|-pICg&^Dx{1(m>L$C@RtNCkmQ|2k%%y)$|U3tEUxY^1XLiD z`UgtOMAo7p+2_6WH)RAW0Mg!-IwW60O)5S!fIw9LX;|VCFjBA-d>h8}y5YtOr~oUZ z(-f*@6??!)mtHUjto2>v4FyynHUEdg9RVY`M!}pgctz6<1ymsQWEw?LPl1t=(r}P{8mKTW^X2R3Li&2kjucLFtepa}WwyP3^WD z6sQ1Hdp-r5vlt8l<)OC!*1{fo{RbkC?7V@13WUTKP=)MGBSapi6LQ1& z%DZnUpaQ8<6oo!Ug6vy>z+po|y*Ch0fe>^Nm6g>T(Vwj7k@|}eh|Ex9-(M7<093o7 zk1aa}b#>1U7X*U*=h$-ML6$EVPUgFH;zCBI3f*~P;Id)g!Ea0@FVVDj@>{&1wh)ea;dp49%vvRD9`jG*-dF%4IJAG$K#RWt-JfcpzwASLtw0!LfC1gV>HkIlU+{#6ic3)& z;F#%0POm_qGQe2s-!#zaX0DGq`hKD|@P9gsV-P8^3Zdo#PW}H)t14olMnn*Z4fUQQ N27$7NQPVll{{bn3_=x}j diff --git a/test/xml/test_parser.py b/test/xml/test_parser.py index 79abf0a..1a535a8 100644 --- a/test/xml/test_parser.py +++ b/test/xml/test_parser.py @@ -37,7 +37,7 @@ def test_parse_project_ets5(): parser = XMLParser(knx_project_contents) parser.parse() - assert len(parser.group_addresses) == 17 + assert len(parser.group_addresses) == 19 parsed_gas = {ga.address for ga in parser.group_addresses} assert len(parsed_gas) == len(parser.group_addresses) assert parsed_gas == { @@ -47,6 +47,8 @@ def test_parse_project_ets5(): "1/0/3", "1/0/4", "1/0/5", + "2/0/0", + "2/0/1", "2/0/6", "2/1/1", "2/1/2", diff --git a/xknxproject/loader/application_program_loader.py b/xknxproject/loader/application_program_loader.py index ceba587..f79c8d5 100644 --- a/xknxproject/loader/application_program_loader.py +++ b/xknxproject/loader/application_program_loader.py @@ -152,6 +152,7 @@ def parse_com_object( update_flag=parse_xml_flag(elem.get("UpdateFlag"), False), read_on_init_flag=parse_xml_flag(elem.get("ReadOnInitFlag"), False), datapoint_types=parse_dpt_types(elem.get("DatapointType")), + base_number_argument_ref=elem.get("BaseNumber"), ) @staticmethod diff --git a/xknxproject/models/models.py b/xknxproject/models/models.py index 2c5dd1e..ea976a6 100644 --- a/xknxproject/models/models.py +++ b/xknxproject/models/models.py @@ -177,7 +177,7 @@ def module_instance_arguments(self) -> Iterator[ModuleInstanceArgument]: for _module_instance in self.module_instances: yield from _module_instance.arguments - def complete_channel_placeholders(self) -> None: + def _complete_channel_placeholders(self) -> None: """Replace placeholders in channel names with module instance arguments.""" for channel in self.channels: if not ( @@ -197,6 +197,31 @@ def complete_channel_placeholders(self) -> None: f"{{{{{argument.name}}}}}", argument.value ) + def _add_com_object_instance_numbers(self) -> None: + """Add module base object number to merged ComObjectInstanceRef.""" + for coir in self.com_object_instance_refs: + if ( + coir.base_number_argument_ref is None + or not coir.ref_id.startswith("MD-") + or coir.number is None # only for type safety + ): + continue + _module_instance = next( + mi + for mi in self.module_instances + if coir.ref_id.startswith(f"{mi.identifier}_") + ) + coir.number += next( + int(arg.value) + for arg in _module_instance.arguments + if arg.ref_id == coir.base_number_argument_ref + ) + + def apply_module_instance_arguments(self) -> None: + """Apply module instance arguments.""" + self._complete_channel_placeholders() + self._add_com_object_instance_numbers() + @dataclass class ChannelNode: @@ -254,8 +279,10 @@ class ComObjectInstanceRef: # only available form ComObject and ComObjectRef name: str | None = None - number: int | None = None object_size: str | None = None + # only available form ComObject + base_number_argument_ref: str | None = None # optional in ComObject + number: int | None = None # required in ComObject def resolve_com_object_ref_id( self, application_program_ref: str, knx_proj_contents: KNXProjContents @@ -294,6 +321,7 @@ def merge_from_application(self, com_object: ComObject | ComObjectRef) -> None: self.datapoint_types = com_object.datapoint_types if isinstance(com_object, ComObject): self.number = com_object.number + self.base_number_argument_ref = com_object.base_number_argument_ref @dataclass @@ -314,6 +342,7 @@ class ComObject: "update_flag", "read_on_init_flag", "datapoint_types", + "base_number_argument_ref", ) # all items required in the XML @@ -330,6 +359,10 @@ class ComObject: update_flag: bool # "UpdateFlag" - knx:Enable_t read_on_init_flag: bool # "ReadOnInitFlag" - knx:Enable_t datapoint_types: list[DPTType] # "DataPointType" - knx:IDREFS - optional + # "BaseNumber" - knx:IDREF - optional - schema version >= 20 + # ModuleArgument identifier that holds value to add for + # communication object number of ComObjectInstanceRef + base_number_argument_ref: str | None @dataclass diff --git a/xknxproject/xml/parser.py b/xknxproject/xml/parser.py index 7ffd49d..272d825 100644 --- a/xknxproject/xml/parser.py +++ b/xknxproject/xml/parser.py @@ -229,7 +229,7 @@ def _load(self, language: str | None) -> None: language_code=self.language_code, ) for device in self.devices: - device.complete_channel_placeholders() + device.apply_module_instance_arguments() def _sort(self) -> None: """Sort loaded structures as XML content is sorted by creation time."""