python310-doc-devhelp-3.10.13-150400.4.36.1<>,e9|k -@[""bN{< bo0:! uJ՘RVrW(i<6ݵ%.^t,j5Ǭ67ħ@Ǩ-o>7?7d  . n<@LPi > > T> > > > >>>(`>XԐԠ(8(9ؤ:BFG>H>I>XYZ0[4\8>]0>^%zb(c)d*!e*&f*)l*+u*@>v38z7 70747:7|Cpython310-doc-devhelp3.10.13150400.4.36.1Additional Package Documentation for Python 3 in devhelp formatTutorial, Global Module Index, Language Reference, Library Reference, Extending and Embedding Reference, Python/C API Reference, Documenting Python, and Macintosh Module Reference in format for devhelp.e01-armsrv3ySUSE Linux Enterprise 15SUSE LLC Python-2.0https://www.suse.com/Unspecifiedhttps://www.python.org/linuxaarch64A+>U:I9.g6 4%h6c]*fTZZ)A] DLJ&X8#/"K6Q1)>Rv$y=vZjNJzkiy/DqU[ L`8)|Q=L0B:~fU\tFS_)$DB03-absH$m>lh9sz,)(1`J  M '75FBhkWYu'#i{B0HIEuO3H8##r,98z>x ۃxFSP-t9Zl:.a 82B|EIj!-/E *Cw4=$6_g((BĢ\d *w+u\eKpl}<;}"IcM9BM>ovg>}GQVYS8<Z53:GNm!~RE@%m;Y!&\LSM>@ZcZ/1VVq&>H'1w)N<;z\t3g[ٴ.3f`plVs@Ts@"p|*2:WU2n'm..;K#9)1blc7Cfd?~7ZKWW23k4/v.( 9*?zȥl8%Zoo/K.Z͒*S#q2;Z?eky~KQX8Q%&SR_79c*IpE98XEs[6DFNaJlJθ;&S:fPGQkR=A@0Djw>sS`_i9Nv^;!.9O:E U T9aNldobn7GWrP]<ؿvh1u:KLdEf1Ώ8e D|1+_Tnz|!.C?,NM@UY`}{f)B[MQjOYoqN&'?wY&jl8v| ٽQBuy;[J13p2^کt7/|Ui BY3wY#^LPT~A=I }H[,vG' 8rBNo2AAA큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤eSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeS69e462ee2339a85dee96682acae8a9ea134ea1c4ab2e08db3d6372ba03312844d488b23208c21fe601bd6b2d4ba6c44d334bb075babbf7f0f751318903b6c5d4382828d64e88644e47e695d717ea8432ec1ef79a17f2d209b11aef4fdbfa4bf570d752f336a9ee7af4a56b8e5b3696b962b69793b274f76439165823c69cf5e04bd5db0b21f178fd8b16f7d999d0da20a00ca8d271cd556cfb1d26dea91aac88b21a9ea9ad785299a282cccc4b9a93cf9b1f028f65b0e90c0c41deea019953beb5528a56a8b0f2e5da3d6f20f47057cc0325273ff152816c202f8a114cd07138ba9abf87cadffa7027ca298ba11ceb6418f3a9abb32ac988c8d342e7c2b3fb2e277bdba99ffd0fc3356293aff094e234837aaf9fa301c6498c50bd7a525646ce97e48f22946a092e28d4306491653c06183fa76151614d10b8fb7b51dbcca7add5cae8d8abe8a32ebd9a01374bb520640353c89e0d8a23d52d21fbbc7b04f600583d4a896c950c9633854df40de1d2805f768279e280b4d14dadeb4a90c80fd0f1af795443875f7184331d307aa28dba3fed73126d1d27baceedcf376de52a30f3d74d09f9a0d5c08e9ef211afed3397ace994a39748325ae53bea62124348b15a001934886bdedcbabf89f6a81e8253c0c1bb47ac18e9c7b859f0fcb1d92406b25b7b6e60a7ccea7c9250ffef1f4ff37d9b2744d34e196f8b34e5abbf02ba2f5c4bc9a16aebf38c4b950f59b8e501ca36495328cb9eb622218bce9064a35e3eeb6a6e8f593c5e58b735cc9aef0a31d2586cc36d204c0cc7167e43132d270ee8416a3b2c3bf16d64f6b5b6d0f7b079df2267614dd6847fc2f3271b4409233c37f7f6a5894f1d19ddad6fa392b2ece2c5e578cbf7da4ea805b6885eb6985b6e3d004ad6ad7e772d6f3c61c65a7fb255e2b36d8bf583044c08ab97e7e5e6b8442dd0fbeb27b75fd2c9163de2f25926bdd72f8cda9e2ed8a97c3002675f0847c9d647e7fc50db3699f1ca41ce9a2ffa202c00c5d1d5180c55f62ba859b1bd6cc0083123c3599a71848687be4406b4cfa4730c0431c9219bec5a5732e8368c0b568654115199b96a130cba02147c47c0deb43dcc9b9f08b5162bba8642b34980ac63ae173dc4842351fc1c8a551afbdb58cb2b295490782130daa4f359a6a80d72565865be8bcc0af888594903ea0112f6c8d923c5726c4081e8c856110cc7339cef0e2d097ec6582b8a0e035a7630ad3052bbb189f3abec9cb29822cd92d9ed86ab7029cabd6297c2a33d33024ab77167f9d7b2dafd5445ee24ca6e13a366426d46c7278fef0b7d6748faf50278bba7f6d78a85a9bce97f75700c9e434209491709d23c599fc95a194340402cec351ecc78b946ea27cff1da0ecc2b1f8b1a648b1dcc10f799cd0f6b65f95c4012445497e5ba3cb9f51964a9468940b27bde98b487218fb1c1fc72e9af6b866f430be2a67fa376392b4db2f4dbf32772671b6ae55cae67a3947a1a4dd4917ace15fc54f8c9cd511748fff23c96a0fa5dbf749777aa88efe4e384002d4246a2bd2613b198588b8c62d20e8cb058ca5a35be1a11e913f51ef36a9d2f23f3e870ba2119c5a0063091498501e1d41d02f06842127c588881e57e4ac1c383b6fee9625048f704f96d9e1433224471713d9d2882a696b9990a5feaee73a891010ae2f5ce2fe3215cfff383b8b2d559e3bbc5c1fe83805a0094e2408dc86ab876513f085b73468389bb888fdcdb572dc28f595c34a7c79772c4d783cb54f4e72c5eef6828f56d1cb6e960cd7f3668840d1c796758bac131aed7599a6703e4c3f3261005427d53c063b7d2b311442dfd8ebe59c7bd6c83d3a6e8e50b61d25926f49f8fe29d15d2ed812c6cc804865e1856ebe811224af8f5406130a66e44cb43c7aac60bdef82f20c8b4126af403a84ad87356f9fb8c28a977552299f4ccdb573bd375059f62784177afa446068c4fc6549aa552ba3b4009dd846a0a8af77a9faa9172d77f105c03b714ebecdbfcdad4616f93bc2e43e7fd2b03562badd968b451aa7803a1ca958f0a536a1cbd5739247d64237fa33779333e533b6ebd5a7215fbd76cfa7a8045f8f00d36226b51ce13609bce78fa000b8a1a1602317cc8927a564f237950a716eca787ed69cf92fa4f768db7689695f222b6dc2ce4da49f8c2890601b8dac04a4a4ccc8381cb621f413790ead2d7e72f82d2a2379cbcb500f49656ddf2e16c3143bdc8012bd8007936961f0c6ad73bba510549d5b5ff7cb593bf1001bc9d7417c4df2507f7f33f1e2bb9ee707f8afc77997876a4fee92fc8aa71ab010aeb867a32fdabcb2a316bee44b383824b03b4b88c56fead184ee7f9d7bf2c9e08b336a68449582f167c2a2cfc85a32374f6cf426719764cbf0a088766e762982a47eaaf20dc60807a57b938fd683215215159c8a7f14d21ab74e799cebd3939f6a6b7bd78350e0f4a3c6087d6145d1b07621377c596f1c0566ee241a6a64c95abab99a2f9e7deaa39f9fb5c047fe8338b8cb7228e45a3ed8c87bf3daf073febdd0e10a56d505010fa280b6d902946d5591712c3fc875344e6b436796e94e4c5f47c908587b132d9ca16b8c29da88cea0c24c5480e0605b53e86be74754cb7cddf574aef06c61ae1e46b6ebbc61719336225d453ea90e2e0157f87c7cd1265d2fbaf2928334d6cf580ad8fb4799bd03bae1d577576a89c42fceb75c4babb93bb31bfdf2962183f0bfc9da2a8af800662f175257617c20dcf832fb94c44b2140f2a1031e2b7aa43ecabc319291e74705b2f3d566868e70f0dd741fede1daacb6ee5bbc8a95e2e686ed589f7a9679dbc0608eb4c8f4f83223821ad907abc4ce9c03457795218d6ea07ccd0fdf45d08aabd275068641a7c93675a8e48803d106bf3e71f9c2f97aedef83917732c6f8cfb6dcc1b76bbacba56d575d55b9b6705b0434fa29652a2e5e02e2a63327fdb3dbf80fb0385860623282cc450a4b8659d9b0b27e64581bc77fde3b350ab4e240153b042073a8066ac0af248dae22c818e06031e19e8ebba060b7f70ce261a8bac4e1cdd471c406573c0f2fd43944c6be9d6862e4623f39de2f96c90c1a370799a44c87a60f0228001ef54ec1403e7f0f01ce248afba72660a3b501cbce3b196f01e6b0faf735006bac04c079afa28e490d108f205b2eb63286237835f0ab7d3423db31e279d7ff9a0de8efb96bd53f0fc0a5cf82485c0580fa06843e0fdb061cec6b8ea62619513d4e89b2b1f86ff8e9c0b17d189c9bed09f4649d63a3a9fac0fe4dc9008d5a1077a1ede0aa678bb75c49851dd1d311d2768cee250e462e239e441b2fd1c77b331b3a81fd1c4ac42a873d38197f7fb2c802ef0c54949d47600f2b3eaf59088edd3783b5bb36873f89dca3df040592cdb5221c9012d2f9e5b2f414f0fde043617247e1e858136fcc5f40587717d5c8ac45f755d1f721e0d52fca45e3b860e73e875876b4e8f4ba804a5c755363a98d95c2aabda4fcc07b795afa28dfec55d92342d98150abc8427c916edacb9ef1582188a49859b3883581a2437345490cec4e4f93d394a3681531fdc6136a406eb97071afd48311ce7aeae7a9aa3a8fd99efba0eef336074d2daeb8c83541d4d6e8eacff4d12ad557280f030cf3791f61201e6e2b516fdcb8df36a7672ae29810bc34923ea37c188a65fce05d869b4e18486fe52619804600d774ffd2767715c0960ea0c1b2446721ba7f83415668e1b09c89a923f34a94894ef355334cb8259c3418cbdf86cfb9d24c62a3b2027aa7973e4e8b153c6429e47c391ece36b0c39a792ba30d183aa3c2f8cfd22b808dfc71107b2729aa91df13dc96b45c2e8ec03ab6aca94fe57e52c29dffee745bb3c1a41c4ece78ea05b5d190a720e1b2a642ebcd80c8f5f7e112f19d574325074699bfc9de29114f48795cfca70ae9a29b429cb5118df53b50e9f2d5717c83dd5350f4b9f607a6190a4a6d5f8899152d18075963d408f0a8fb4be438a6b3c6611fe694c87ee1db1e0799d0366435f1c426c9368121c327081cb9ac48077bb1945a4a643c1d55464005b73e5109f1d45b4e0aab0c205eabc17163408a569d04007c907c6c96e863810fa5763dabe227b5212ea1172b0c0949df6716dcb9742b78ad2878833e5b0787143d0a05b332117e836704f17ac9d718bf233135d3a2a35d553e4851453636092bf8e33f3531777a7ab2d786dd9f4a5c0f7ec5d851fc2877833803fd94f8ee04d609944d34d14a8d0a8a2b0a4b34db2261429b9ad4cc0f8360c25df038d308b038b2dd41e1faaf3b95eb15a19ec2eb358302d6f174a7ab872cc71af941eb8fafb6dbfa0b5c8c4aa122117fac7e3802f0948c93ab533d984be99125281b62a9d0a6b12d4bb4700f65de8c56b1bba190a20b2564d6d9ae06ed31e951fd7efaae83a2c678aee1ae964c9fce6d3828db8cde7b1faa523976356e76d583b2e5040451bf4e0fe73600d7e090632e6e279cb320cbb16416cf696875df59035824193fd260798ead951f239e336ac934ac38a2025dd5bd776a2763d5cc9e300070ab90f5ae8dbf16cbf6d8bb2b8327c6920a5fddc3accc65bf3949f78e84cbcd464901ba0b1eb921483b0f7fa4013a8eb01a75d9eac8eb6c19cbe4038f58337c6db610806974c71049fcfd56672316fb2db35cf32ba663555b9c8ebea777da41ae537925198623ea752d4dec2479cf10da30e022b353050c0dbb49663ed800cb0e8df6203ed3d4c4b297222b0a6b895b49a5fb06fa8d85be8fdd9885d7d4a7bc04b628ed54ead1e1c49e1eb279830faecdd24ae22cccbe94bd167e1836b9973c4b50a8854dc79c5f075ec4f923b8ae8a07277ccc8b2d72ed47a7b24cdd488db94891fd20182c3d541ca48677b4e187131dede8594d184dae8f4660fd76bee4b2c318c392cc8e4e54e9b05ae72c1cf5f7f9f48394a5221a8fd8d24e327ae830a5040245f383e174339dc2dea0ea35fb2bfc1f70e93dd9c825296593a26625257bbedaaf7107b02ed9337134573208d1e8970934ac65014b84381039ce6dc6dcbe12c713f689afed19011945a3bc0b67ab170abf2d03e8bbab34d9e646eb68b185cd0bf512335265e125753a3db749bc1dd0cb987e4a0e6f351d9b918f6708ef051e88a66dfbf3aa046660c4dcabc0e270026d27bbc9b3a8f503f171419dacbea25bba83e7d742dc534451b5f5cac42caae6dcac0c214e11f632a6ad5b82658d667e3507b5eca5aea6235e5d094eadfb05181499127e2f0b92357f18a6bbaa99aa971fa9989b45a6c1bf1dcca8fa73ecb81fcb1aa59c5e8056237dc259fbc03fbbc2b7be076af340105c4d8836a00b53e35ad2f1d0edef727b23172443fa7fb8990444a886d81641f1ad16edf6721cdee1629b4eb182e0f6c6f3b14831a2cc7d8b572a5dd4fb852b0d7118dbab0d4fb4152a02dff25abc4eb2b247218d8b02fba0d06aa747eb10285dba80d6ed2c8e8837a850c759dd69dee08b80bc2c0e556657755007dc8a01d8a0d05de9c25852a74b25a524b7f40829c4bba76f8c69d18818726cd0ba0172ef5e482abcd0bfb8ef3cf4a0ddffc81a51958902f0501eb37cd7b3dec3dd42f73fdb23ce6c98fe80c0215810951ef2d6752351ec0f05aeffe88d7ce420b794477d090fe6d85958b069471ded40050ddfbe21377b83e6c222acef08c4815998576c905998ef3932f706954d1eb82f2e1f8a16ed96a7e5787ec8e94a49150efe93bf5bcb3878c6a5ed1947b0eabff65f6422581e96b7493a603a0527417100d5c36a08cfe27618cf6a979323f9450cf49c99d78a338ead00c6aa3d844c1e6e7faa2619078e700827e1a44ae53bbc6a30fb8c665c79098a90cdae9f1e30cea962af9b8073600710f7436d37f7a4aaea4f47120888719c829b34bc07370ae435c33a0aeadc239cabd7d46aa9cc04d7a4d92a525226819091cade8c14edfa4ade03ea8c0f4e9818a27fdcb02c58bcbb12bddf4fa4e617df0f978a9b0062d8231226c7d204bf93af9ef12a9179ad09878e1b29bfc8f273c905430c98eab1e2c050daa13817bee11f9692f3b00b217509e9515ff0b0a8e373544de95efee0bace9fce9b2a3a7316abd6984c1e2cb4527fcec91ff4fb5b57b86956937b7faaf54ffcb3f17fcce8a8a3221757125145a6addbe9cd60e410363b252e9cc884b1e66773345dc3e187bfdf4a4538eae97f686b00cc7fef2a268d9a03cbdc04ce9e77c920280db3ef221ce3c08e6ecd6044a5aff53b4c17d1a47efc0cf6b02d151c1ad3522a274be016e37e9f1e95bc99419e20910f9837caa2062df5899f31d12b0d8a4e6eb0ef1ea20b35e9449128dedcef3e21da08cb2289bb53f247125a78b4692320a45bce2fd3ada6f7f859ba4086949e51490b7c484615cf614966f019059371c9d6121ef11ebb1ec8bb164747da8916b3efd76565d8aa26e6161c3648b2521487add7f3cfe2fa77f299ea9e3bef85bc7b5523c097150fef22eef4bc755f39ef6d6684a14948dc7f9eedb5cfd43d455bcf30da12c71cae65b8464dfd438066c86fbcf61ca5771e50e215efe31dcab9b1d53e415ddcc0f6a3547e55bfcdd9764d0a5f8019e76624b455fbba8f6c19f68457e6770f376f292d5f4ff96ea07ca8ebada2b8ed31171ec0ed548513a1ffc9c3d0bbf3d255880e44b9c973afc7c6fbf9e16907f26a4342aafb80307f398ad47dd6c69999c494c3a80d3874624a4f450dd5507d4dd1ccbf63e35b1dfcd5e4059822b1b625af5e120418a2c3580d5c5f2005e767e31696c81b7d0641899f77f0f56d5c7afdb7d738cc31c36ea44773339fcd717d2789c2e53fb8cdb18087c0c957dfb6596692d32f2617bc5a16064218095177f292115d7a356d417a80f2583357cbb9a819166ae77c46e320f8d4c5d2702e65fede5fd9f16c02435c0e8f28d0de2dba681ce6c04550b69315e1e28314c6ca0d4828009a65aac1a050b4cf1892c263c5375b8d27857bf8f7c326d26c45fbfb14ed84174e70231b06a5343e6a318836399aab687abfa9f01ce1a2587ed699d5fc206b7d1003caa5358bcb51138fe68db24badfb97e9c82b5d204e296fa5c9a4596263f5af566f7476bbb4d0336b392cb3655365cd26cedf435dc6715d07fea2ee328b26cb5071e965ba8c63bfa55f4023688dc296b634ae97f754f4a32279f238fb3db99dfaefc0ad68872d6f5d82bc319335e0049559b75d5846b73ac6e10c677d47569523ba7e708cee3d24d4012c20f218f91727fc1e1dbf1582e5c414a4585413c38dccc3198f57399851e9dfdf039465728bb717f83a0ebc4a0d22f15136a616dc494fe5411850ebe54dfcefe5593060428fde643a65b91daf5302e41fb810c4af75f230e160deaee88ab0e4b467c7b2ab37c2a661bc85cfe6ca55dd9704038dc7efc3aa50ab78a0d6cfe56fa32e7f2acd030756092a224f5f1601e48c85f4a624c19da62c94fcc02641c9b6e3d11c8f5c07ddd52aede8e77ac5c934da48264ad3024414ebd34134001c1399f4d2d49c40f3283151f863d2952e6a2ec53f48291548f55a4e5e016ac8304d8365f76004c5205dc43e427b17e5bedfbf0fa6333c73fe9801f9b28ec5d370f0242e909f543ec8f03e5ce353d48c88101c59d2bd73cc32c981b845653bf6ff980325909faf841e41675e1e263c8d6e71a7b9502c3197f50e2b817e742854b37b7509ca8187586850baa80af935b0db01805f8411e4992bbb4b48d8cc558dcb5f2759dc63a0b3f086e3f5738400c9aed818f285879e3f9b00496778384a891ba46f955548c82b0a9be6fdda22c9d36a178c4e8d6eb3dfeaa88b811a5adf87fae419291de579e1b1614cccfb7c7284ef030b3bf03fc67c24418b2d3d2a3d19b3b5fe25a6f87805e25036097ca5fd55efb8ff4548404460b737e7587e54780b67e9ebf00d08583b906c28c1f0c268681d33a8dfb9aaaf90dc3020656be4f33b8171e1c28d70d8812e7d87bfc3ef16cba63d93bca44b2fbd8e9864d85b21630bbec01984faa0154be4fa207971a720ed334d9bc9726a682addc66e5adad5717f964133b39f649b05f33eb4bd0fcf997bce8898d93f1374c98b3a8141b55eada33ce7e06eba3be7cc0bcecd10c2a3b660a8a6f71ddef15f093a9df576c0b8ca8adb779a70ebf87dc555d5bed8bfa53c611988d1b2f1a6dc7eb4e15014ca91b2a0bcdf81c2af86ef268224d81aefb7ac3f1f706edfbaba9f78920a59ee995f594c06d1dff7076b2ab3d4931ff516792c53974cfd3855020ad1a6b4e525940d51a1c561781eae0f3711cc1f77c9b4ebb86d9efabbee3289001f2aa969c3774184bfa481b8c60790b804eb62cc38345684b994d1f2567e6e592644c998f1f5abc312ce779c48d64853e8362b61e514a3230d5b1c3adec1928f40b9520a6ab04f35550a0a21b19982d92ed533ae385f58be842c0f5a37c6a62859ad4c3875593d77088e533c0f8b741af84ffa425523d67cd93a1f9422cd348923d28349face01c26ecddbd8a9bb56f0aa6cb7f13cdfabbef3b06aecbdff14fee643798fa3bbc03d3ec8500bd1c19ea2d7cee7adc3982bd7eb8e170c009402dae8f640a92d5b56a44ad98119924d56552bd9c9a55980b81526b6faa96226eef4cdee93504b85f92a5235a8b075a170c6620d7f935eae324d08a41c1b884a6b101f77ab5164c70674af441d60709bdec25847934a2456b4c3ee779e410f76a1a9c44b0cb0946aec6a858fd52d983b2ed8d46cdce9d1e1ef66c2fec5497b8ddb479bf0ed1a5d50537ed43f7c502c4610b8dbc16448a8a8865386d312e74c54d7a97dadf718c8fbbd6cc13f1bd185734e2d094b84db78a0e72897a04a39be7353e5441ffdbc9c539fdee71592db3afe19e5975d379aa0a4b3c7fa6f5fe86132f19a0ee6148a6a43fa5afba0d02604d77d781d3c79177d4836f7a4a673ab8f48245c68f678fed01e0440cbdc013bf06869eda7447d6655c6827e2ae03454756b4ba88a23afabe75675fb53fcbdda93b4fc870e5925ddb6e281fef752cf53b77ed2fba582e99b643ca4e99b5472341a26ec65a5880f20db140b18032526d79733534621d9da1eb7210ab103a2dffe6f5ca550edf1c52130c78b8f83f17e07b621dfb1ead80c8f3a97f060b159ceef83494a0f050bbe405802535da54a35de4aa3f508010d8546f25eb1e436fad36ac5037fcac8dafc9a63c964a8190ae7212d0c87da3391eaa9a7999b7e8f768a7b0a65e4cb23693ae999aeae9bda8447952701b77e9a850c64a2f46945995bbeafe165ea265496544574cc4e25ccf56eec53488704e31ec16532b73c4efc50a6aa99ea76a35fb91e8cabaa3b4de3ba0c1384fc5c629f2962eb4e0f7cfe3a77471db9330ed5ad5a359dcf3a4620562562cdc419ea3a01a4aad4e5bf2000a53c92c5aaa6381a1ba27b8f9cec83cce86677e611bd31e54197b6fd40cc926c58cb5666486bf0e94646cbc44ce7ba6241b350e39a179346edae778280e4f4e1a993816b2bf06d1754ac0918758a16fa559c876e9b0b02e1df46b655d04102b1b79e4420c9af8f58ff718320132558a696944ceee7034c066f5e97663ff22d756ce4bd3485449012937462024233190f20327f6ac542d9453c737a17a027756fec0fc6a399d78c60cf79d1c91f9894fdec7e70e6d1f788446c848c75163057871fe363518ebf52bb5443da8f32fb725205e6c01339504efd2736de5dce9526867dd4ab1ca43e35c5a66857dc1a6d923699bc412205093b6cc6bae395bb3ec0454260f4ff1a5e0d12c6112434c99eba9306ae7d8bcc9dc7139c69dc5d1fb6312ab43234882d9a75401454ff675779182fdad39a77dafd25fedd71a78bb02d5c6885d23f812ac3fc22326bb9000678b6644b93ee01d9777a84e1b08c4689fdc576b7bbddfacbf8879c74142bd9e8e4105b05196c164bab99050fe48bb57dbd7d7209acfc28ad8237c51e7f069bc48dbaf265b48090b3dfbb5f8fcbe1c0e762ed432451c58c6e42274d04cc828a4ec9d86f28ae1b95e44eaaf9346e17b55e0a97d22f1cb8ebbcfa9ad1e96a20cae480741371f66a6360d0a4484f88748365bcfb5191bbabcf075478b4023759c5179cdbe68bc3da0736f1b05175a7a72cd3c5ad0dff055f2336d6ee7400fe82bf96e549f30223e13680c43b74ed9a05282cae3199c8baa53572defddac74e7b5f23258dcd1b2e05fc64f6f2849360637a06d9099d91596b48536d14a9f08b661f7641bdaaa128b8f7db22f791a3f3aa343d4dcdf94c029b17ae12e55d2561db5e3cc20717c52820bcd3e19d48d313fc4a99edf925f5eda6acde3c09b52b25ac0f80b0d171f46461e8101f06fd7eefae77c6c8f5f6809333697f6b36011e9be352f656346fc1305f68d5f2c49bfeddcfdb2c3c0e3d60f00d7475af337155e85f630b608e45bf8e727716ca540bfcdc0fa81d948d1bd6b877f480d939966d9949e9dfffc0fb16ed5b57956ee1ce6c05ebb6cdfca6473e361f454eb60be2303a4e33d2cebef323c212f917e9eb895dde505972b2763ff65e1762fbd647e89cb7a3e2d65500cd61d6e6c975c96b5915248dc2eeafd432fbd4e781cb441d721752f33802a435e994201d0e8d65881a8d5568dff759dde014e7e55061bdec29d03b95515a5d4ce268bc07713fc7e2c967acb82ed9f7a78e4c7090f49569a2a981a0aa6a7892bd4a3984e2338fedaa52a68bd6a097501e029c3cdaa81af2e52059121473e5dc383c390f76825147a3a4d5277c6d126bb6d5030f35e1b529dd0f308c2c5c3a9409e75d03cbe8b66382311ca9b1e72204a265fdedb94e9ed8cdf01f3642335875c30958ea593377b5f406e69d925efddf64ceebb65b7aa54b196872f0ee716628807c25160ee19ff60060eff5d4dafef3dccca39ffa8ba09f280bae9fb395316c09748824958da55cc74157d5408b64de075337cf2e3fbfb03871c41be6e59720f096a3f4236592c85952c8c5a3a71a8fbd8b76a22c15dd0566d0e005f13ef94bba7869ae325b6f83a073c346be13a5058f41d1f344ab31f6a0c64902a8ac2f1ae90c21952faeb66970547032633e1911602a9be44dd8f15c29fe3ad160af2a94d9f45eb8ea591fd8f64ce8410d91e0f623258e908abf8cc73826e65158dc4ce6f24ad5b2d3dfac9d047a46738167b2bbc965965b2c1d48eef059db054ccac2cc17e1701831dc9526970a8b8dfabbc3227abb865ad0ce14e7983020964417380900009d85647813b7944b3a717ce96b9b21d666cc3fadb7e38e3d88b2ca33efd1d4cff150d5ff32a99a54ad018f06ebb414ac96f6d1411a8e795d905b4911de1105530c9aad193ce108cc644c62efd8921ec9a37d5c3ebbc8c40a51e3ad1ed7890a1d9508da490af64d6629e33ea2010078e72f742d018b48b3f1133042fff095fd66accd8a5257b3f8725f24214b7ddf8b905564275750ba1a25884ba4f3c8f4893d436318847228c2862e2c3820bbe3316c47f371c35c3ab55911dd34002900474537b873500b14ab18ab5fe8601389c1c4e0c962a56cb67a4cf3211ae0b9430426d439a1ccbe658d9f98e9f1e7081aead28d145dceaeecba39728053ea26479b2a61b3edc8e69196b0e245050a48d6b144e2fa9b081510493c0c3959e1ba9032b73525d18873c7c2f93c403e20c3bbdb89677e7f84c94b3e19d7ec6b1e8e3c9fa740f5b434f09d6af03135220e145ad8da89bcab56fe778c7fc20d740db65b6a7f082302a070123afed8dca553345ffc054c01ab642ee224250ca4818d4f892a17293e6d4783b51b249585e084c5ff3893ab17da847eeff6ac24640b5fce9e9dff4601a9d3f4c017b277028255b7792fb7f80e7c8dfe68513a45981931314c710d41af1fefdf4d3aeb6f4de9929c5d24162c54070772be0e76a010e18cf9ac54434c67eff2054bc3847397a8a5e3ccaf3e57a2f628bb7490e1cb3449ca19642b36401f5e686617eb880f1cd8d996fab17861d43e5bca10566cf86320c0ceb2c7a880c77fc89bc9555c9805a0067789f7ec8565306cbe57324623f639046f96f9d31712d457b59535f3323649f5a76eb141ff4940599418c1c3f256a52f24f3e7393eabac0594c635e28c255dba4331e5ff53f7d9fd57abaac52c6d9865271007657858bb068247fc55ac91f241c5e9d6a71f0e0a25623b8eeb84d7476ca4b113e1de0efdd1370131fcf65536b2d20b1e9b24573434c0e85a03c3aa6efd5e024c510bfab56690a97c95c7c1d7042e051d7e7ab6b2f48247aff7b56b3e021ed84410815c7e320b1540db262c487eb99d4ceef3932b46d97a0dca726076795e2090a2d5aad5f8fb7015570a1dd7b0863155c8aa5f270a529438415897f600d5fb9113d480417f744b9274a822a08a37409d329f838e6e7633286541c2d4be9aa6e1a98e0f0154cf38545c1b61cccacce7ccf0d124928d2625919c558a28a148570851916b94a53d15fb739aefbfa4baea19ee9cfa2d67a9234edfc1f78fe4f9a8fc0395addc36281c6b7c31150923dcca4a47fe1c86d3ca509bcdf3e1e3edb734f89b070362c9fcac52a1c00415aea4756f3ef2e368f6aab051e271283d136c8f8472530fdac968232b732b33ed2cc4495565f69ebe7daad6f551252adf0a4c61da7e48c33ed9f6e3c446ce0351acd68ba82a0cac6e7e18f01838a51326d9c9a3960e61a6bf7e3dd965337bead95da3b281f027cc6094afe26cfa480cadacb027e1da808609784ae8ef1b7715903034a28cfbc6ee16b851e4f89cb3552d76880f2653d52f14beea18dd8934eaa1aad8e553b7eb4fa5c85021d10bfeaa522961c73d758b58b8d6a98e95593ce58ed8197f7cfe91a133ba4a2ba91add6a6ff552ff37a4b489dab891dd73d2c52c6344ba64c1c003aa0cae0b465c8e840e13a658c899091efb671cd8f41f3a240645f332d69127401d815478b70ce030f0af0cd0308c793b4682f74c379f87a2f4df765805e5d74adb81fdf4e71c06c79e9d41f76cc7af247abe369ef2bbca798c971b23a08d61bd55b0e1c0af3f58ad1953023af05955d44a786a5eda6e1e771b2e2ac532e4fd89d3f883d661a30527836757b31e6df6d3ae6a8cc66eaaab4bd60ceb86ba08a3652290060092b20a2e589c171d172e6aad062da207d8286dc939b98424ea69bc8c9f1c3bfa859fc2cd5f72847d31af1fc749d567f6235ec6a22a7c52864f3fc07cdfa3be971db4fbd3475fde76a095d00bb2067e57d7f63bd5aabb7c62c383a48276133adc207b12b436ef184e285aa702b81c951c8431581825c7c16c16c83ba4e0d7bd8d67cafcf3ea58e1867b0d7e739c797ff850d73e2aea16b1db577eeb9e7ca030fdddee9ed9b365d31edb37a07362722a0e534eea6c4806aeaf435b7dca505b9fb30070b6452ff485c0097b88d8b04960832e7705bbfff2bd1ffa8558ee385543b298a890a803e75717078f21b37016d8f9ce4c16cba5debd303093e3f20b7cb7ba9ceb35dac1c81a8f3c63fa23eead13fec1dd2670af8eab1ed83a01b905ef0af19e63d995f9b2d54832a99a2b9ffec37b2aea829fa1abdcd8f2ffda2c08b3fde7c0b337f67bc4505ca1b29daa05aef8c36f7cb38acacd4c018cb7747d7c766fbc1762f9a23f0a2387c916d7af18e55ff91ec1b13b96f1595103389ff2c80bbe819a0856e86bb42c4548d6b643b85a4e1e091e02978ee58c0a808ffad15d4f1b39ac92baa4d4151b4566bd9675057d8f08dce1a293603d37b9264b89f3cc28a1118ead36b65768a3af8ced0cff06e79fcb42e4d4422773e84b9e76b99a3bf33340718c146523a3de90279c285bbdde75abde9563f1c5e4e5d492fc41ff71a3f42dadff32e38bdd5d288a23a592a03fb1ab0c67d65d71f5fb714cea3725bf4592f3ae3876f155685faa69032bbf802e15adbfbb0c52d3d08fca2d18e50d77ad80339bed4114e02ed13244d06c68513b3bd694525b893ab266088954a7979cdeb0e7a167a7719cf624b687d6ee487affb2d7b8d43b2ea40c45b726d656d8b73860ffcc544acfc712ad3ff234e2122ecede6b3155a4a97db4aa0034c466695241b2090e03c3e883afb8cfec77512e00f3d6adfe4bf6db62bece82d45fa0c9d171afa3456462a570d0534caaa887c5389b17e86737626edea2617d46fa4397967a28b0dccfc9203dba190c51a8477eea091e7cad77d7c8d7ddc589faebc5cfe18d648b1a883d5d3dd319d0dda9dbef50d2f8d7120349c49725651c1eb2b770aef33b68f9dcc74ce1b88be748d67f3aa9333a8b8eabb98574aad11923b1f9499e148004a7a2cedeb16bdef4812dab261c73b19cdd4c0c0fb1b043146d41d842629d73640a4984e691bcc8e45d6c5b8bba3aa6203597e4e333f6dddf3d439e20dc91e541425b63393ca4451cad07007c04f78235cdc13e87952912041a295465619e70f0d4462fb7d2026589ded5fc3a1b37868beafa8845528261408f52f87c1e240f4010eef09debe5cedca98dea095970c8f52b1fbcabb4d4ff770c093b1a6323744cf327359a9f2d4bb3eff3f6b900186418a6515eaa4097040a8f8c0120976f7d5d391af6567a56c5b89ab0aa35c215a272d6d6d5651ce22662b06789f7f44abf0c609b742fb1a55e47179d8e0ae0299031f2810bae260b807b13912dabcbe7e0b6d2b73bd1bb9b1cb3bcc182f16a5dbdac6d5948f415d55ce25999334cba7437b01ed62c405ae2e49b48df6deb9c1f8ad14e41e236002ddbec8a35a26d2686655af113a851c0d9dbe9b6005a552908068ac55568a3cf5587cb9ece204d2912356ce1b3c479a5044d7773e44c2597caa189927709439e2c842a2bcf36dd669f19114b4c3ecff4605ac1a6708ba6dc29b7918eed3a1f23ec3e3f15be6880531bed2aa20775cba428a4568b0640e2570b8a3e0ea4dbc9122e11e7f36cb4812fcda5f35c33e9fa8d28ec1ecf58e30e8a18c6a39f0169804ad43a8453caeb0e31c2938bccc2148999357caeea635c0703a915b1c807f787b19dd4cc0eec9e463c548013d557681aeadc8babe718f02c007a4c2bfcb46eab6c9eee293a77e11e584fb011a488f59219a02621fc881fdca8a25a0efcf78080f7c4b8b87d194f9c894c33b448312433ae38725318bc2acdcf33f36341646d3debc8b32d199d0138f9f4f656b113e7b074b72a44fb8106789f65930e854857e94ed41f68b64847c43253cabc11c4b11ca2fb06585b99ae97c0216eb9c02fae2940b14f800d98272df476691807b2bb87af2fec28669a1226a6b6efe7d9fa83f27415b5ff165d7ee8926077edd7b5829458c8d24c71f32a1bf0304cf22ecb84769b821b6db990963faca43baa48fb11cd278820318d069579898870bc73c4f753b3f79105f0e44a3393cb281ae514a0191ffc1f7a64404f96262fe5422f47c8f6551440e4b81d1e352ed3953503cd72ddb64bb554dac5f9dfd5e3fcff6cfb63e9dac2dacc005d20286d8cc3f8dedf1ce347142b65963befec275b8786301965f135756bfac038931f832c04dfcf9de418f7ed1cdb5473f718fb86312e479a16c4c0df8eb7cce2a409f1fec6289f779b4f90807a55b077021a4f2eb427baadbbf055c3161f95faf3527fc2d6a2c0c5759065f919a217625fa906f3670bc800d81b27fca9f0d9e5aaca99a750de33b1a2b1ec2fbfd3bcf655ea33d5fe4840231f960921b92d58a63a9a1e1c4697d3849a2938bbe6cd53693c71c93e92132aff613d8e317fe6c6465d7a9aa9000886ce4065cc7810a1435b60c95391156e9c2882e68462a7dbd9925e33bbeed1eb388b2b0e2174343d1b24b7089e5ebc5fe854e88a14a546380bbbcda8347666544c7287be8062d8c7edb006326f037729b2163e92121c121a1d826cbbf75387d43d70b1b4c2598c63d8004715adb4c01ce54f348d7147253f13f6f3a09504a12c76ffb90356a2cb09e77827be90026ecf5001ab5c2f08ad67e0d4278ace3d9149a864d391ee059b57b7435cfb55360de7364f57d35a60152745a035225be1368d10acb6a8c1424b611647801f4ac04f83ecbe29a04a45bf73b1f3e5e0296e7f8daec086d23dcf27713a40ba2be7e82053f5ef1e3c850c74511c1caf46f0206a462ab8fd3295ff20ddd16b24d9b04d4c459b7d8a05b644d11aac36765979260dc636b4d84776e1b5bdedbf1073c377991319e71ff2e33d7df02c37f1c4ae2258a74f6379d1ea0b7b088e718c55eecfa717aa64fda4a460c04f8cdee8b0d737612a4462deafbdefbae9e77e240ad10bf333e050cd426fd4dddcf5198e2586df03626fa76fb54bfd1ea208ab2958aa13bf8d2963346cc3659cd0cee361182e5a8a4454ea5bf267c7b0c355f3dc26dc8d01fccf54604fda94b2ce4e581d488844a04c6538eee1d3d1e3830c9612e5e18833da5a7746961072cb79394aca71633766cf5c8ad1f6f2b0e554776324e52228790e0d24f0034f79a2b5ed4cf2bb26e1281010026a002221e9c922384f10248a84c7bbcec39c17cf41b50231548c4b7ad7200902a823a775d8232d7860a502b5f2894632c2f3ef853214ad77065b384de75e7bfa96a1f82d3c9c54fcefa62d97aa96980e3f061ccf8ec2607be625d8a395a770f1dac786cadd3d94c20eb67a40302788a9a5b45722ae01e36ee063d1084c14d77ad0287f412a272399353ea58ac2568b517d09feb98a562dab7ace3f93cb914a5e020ac3e0fda4b6500f3c214deaaf7325470ea65eebaf93db9f323da84224eb169b57a6ea54be667032a2e81e76a02324f4e9c752c8b38633fe48c2f4d151e1d9c366652c702c98bfbe149fc955397cb3c3c3146a76a5040fb19978097bb19dfa07a2d3f28956499782ffd30c2b73de97267503245328883e2924aaa69c81ffb29e74a3db431ae0ec28a9aae922630e985469fa00a6634b1b9d26fa888eb9892a61919ef6e7265f4109a90a96635a2be51fb3c72d183946f9c821e4c7778aa0ca3211e49b0aae04eb4d65061d5d0e7e6b1a7339fae33318d938e2df39a1ac4c8b5c56f853685c2477edd197a3bba9014d86386d5d8e04c5806f72a8dcc890c1e666b7015c984290ad117e896d7f1627f605f32641d1b72e9569617c98b4e21297aa2dcb55ab3df5d332248c5a16f8867a3b6d390a739cee2a882f7e1e6ae706a54ed88fa3fa89beb05c255d8d9f1f1ee8de2188e46e812fdc0ea4ea83dd35c68d732a2118301c1e4ce9ae857c32ff67df3d394318d702daec0683b9bc0dec5b6720618dc4c757fae91cda97ae44830044ce321525687b57dde65754718eec6177ad1f674f7989b06939d607d7b094c223180b6dc9080e10f18a5b4b835436461691fef48db333c26a9a9ebfbec54934f9f39e01818aae47861298464bb8aeef8ef610204bb91402594f73cde11f964360ccbeadccf1e691b0305ba06c877d29697b8d3d559ea09ad58bbb5537e3c64adca1056c522f46080a38af9cce1c40af3e877375b68d54a9ba537fec2826a6b3eb8c9a423b14781eafd216e5f529ab76c9eacf907111ab5f469e0069eb7bb146f0f5cbcd81d0e2eea3aa3c669ab08b5e0effb4122992aa3f479f760a15ecf546b1e68b472cffaad08040d400ccbd55126a604b09b99ae1aedf162b9ae69008119ac1f9874baeb90ef513fe85e02ebcd895e65462fdc128f85ea67c3b2b6a6dfbf8bb064e6810478ee79b55746cfe9883644372490d246adb24d04c02bd4bd59e4e630bcea9c26f6bc595998102961bb9b9d2219827ccec5893ee578e16028f2d0926d1be732064ed3293c5f0a90ba238eaef8240ae691a406c47c7316270bb0efe83e6a83d5bc64ff59fa823f59a809168d5742e78e2a6b8d8b55459cd92f677f9dbe8a1d18c1cdc3dffca3a7f99f02d5dd7f8590d49e25f9fa26f014944ed8627d2f2641715b6a4155ccdd9d26a6d0f81593a532a524bf857fbae5b903458fe62fc77f98728d13173d2334fbf52e53569d58d410166131c3710d45c2123c98286d660ba6469c632c1ebfb797b97fd100fb71f8faeecc8aecf07d8eefcd0366a034c74d66196f5310364185d470377edc2a578a8a9f8999b0baded535702a2cb440c393ce16efc5eed998a2979698898dc6f3655da4e517da73efa646a6882ae1cc0affcccbf0c54d28e197497518fc726c19882bf44c86b89ed2e45f47fc82e6fd5168c7bccbb6f8ef15c7e6fec586753165bb7d6a01859a3fa7b5e4f49fb17c3145ccb6ae6f12966057e07223a5c6dacff41ac5fcdb0986af2cb51351b4780dddc4ea80c21adee35bf263eaedaa5a1b88a53be805fee4f88d1e98c619b70a290d349213db674753b045304d0033775f24a23528d2b0b15bed4bb846840052b102ee5835ef7cbd0e6e6c7be284eba9f750b8bfa546cf34b60c328a70609778c26f7176113c06f85aaceecade61bac4401532fdd26d40b7f7a46bf255dc0d74345160c93cebaf55cc1977be848ca0113337f38457ae4759553c46fb6fb0391f6254291798f7c0ec0e17f6d8dfa0ff65eab7bc518d9b16b122ec189d9ef4242580b735d9bccc5458fe5fab276aa88c901345cc1c4dbc325dc456a67ec2f8957d30b9aba9613490f7dff9a370541d2f6e6254c3f2d1496f207ab45fbf3f107a16ed4b02a79e592d67711df34b39441ba81bf403dd770e4627f65c502a819fe21c411ed9dcc5b70a103612151ff65e3ac522c854df4842a7cfc508ee23b9716afac908239fba26f014609b326f978f9342c92b706aa3b73e109e717bbd06cafdbfca9d58c0b4bbd609deb66d9be239012233ff5ae2d2a3a02d091b65b444781db3d554ec816ad1384d6a9350b10f7e1b533e570230da06cf1f1e0dfd5bbcb7211e9c41ba9f55968f7dd10fa22705bcd14bf9f3b0a4ae760cf61a5abaef1f07ef3ea19c67dad389bb472b5de60d116c64425be95c8a099599c47e347a598f68eaa46be87a29e31c27c175962ab88da3deb30879f825d544e402a6fa971beb7be5b6a260b242c835dddbf2c4f1699c744aa8e20d6dfb47efc9c1283a53f04b46f4836c66578f6c8400db2b54ca7412dc27f8c4bc785993ced13f30d2fc6e54367ae5091a18135f118d326852bb8df88daca4113fef3cff0bac4a50e4ed542b14ba0c85309ac79382ae33fb1e00041fd1a9eb265a949f43785d26c46d2d58c4a1a7cdfb5c456820560205c2cf5a9ea9e89f76e96218a92004719d2c9d7cc8b253d4a20e71b7f26ee4383013cbec811a3774aeedbb3d3419770de0741d6e3645ce7ddaee1f564d27da98078188a75c5376a9037b1bbe41ab3830aa6912b5cdc9cfa20bb6dbc0ed12f6742b6599ce2ad8d299c8d7b3a0181bd1bd1e8707d02c7ce97f21c61156d99a944aac18e2b4d56a187ac258548de9d577ac3d097212ff3eb834427d75045841072c6f58bcb9af5df05166299d5221be568a71f72bc61d494e4dc0f27c5ad85f782ce37b48b385af6bed9312b73b501c3f99a044cda2aa0740ecf7a95fe8e097212e71e8c779295805d639cb2c96788a1aa6079eaddff92aeaf58a0ccd99aeeac6d65508179bcb51d20cea2129181b8590e46952e6d4995447a74444671acdebe7a7f94360d0203cab42aec465869dbda57381a75fa532af57e622bc5d2534eb1e77d1c83f8008f2a72f71748a880185b2070d7d169adeb4bd45c8a19854f3edbe0a7c9ccdf17fd93d77778b88ecd23b897d25902593658fc98ecfa66123fe5a7f9fe55cb52721b61e08534d4a05f08be82b2000f48f27fbb773d55f33515fa4bc68810cc47edae29303c4b1bc23d4d5812e0315888ef751276aa65a166c29dccb94d2e22a04fc41d5e1d42b59ea24f29945896b526245b676a5a1cac755e4509ac9ba9cae5e78482234ae0afb47528fc0541226bda183dccdcc4a5ce6fe630651c3035b5c8196ccd7d40dc87dcd234baa315aa806eb03c9be2dbd12a55b1448414ebf14d2653f4d9327c3a8807888392965bb857a9c86280bc60d2c2f87a4fa0dfdfe446aaac880e1acd7fb8b41669efeeca47c1f388a2f8fbc09f4ab1fe44eb70735e9e7b0320801d03d4ffe79f39fdb58cf1e45fcf0a61ab78cb78593fae1331d646926bd926b18b47155bf00bf8d19e3516cdb462ee0b56035aff8cd87999d73345c0f3bbdbc34933ee815dd0cfeec8a5b3b2b4377bd2e3ca2a549d3ca51d1a9c074c7d6fa5bbecff67217ee31f5812becd447d69b2f84cd3ff24ca692cbf8d1561cad460b1644405465196facf9b1a53fc48f82cad8733d6292259b325ba36c7c8ef7d8ab6c23124308dca5817aaf836cb66b72562c7cd45f3828c145a922dc8c11a619870dba83b28bfb5c5243b49191328864ec6a27ef441294f95ec734976cd39ff37f9cc30fcaece72f975ee180471710746adce7cad6a515de78f2be2fc56706c427d3c8696d2ce4d1951f92153f29b6650225f593e4920d7e769c5994c8fe393ad39eba245ffeae39032e033f431ba45ee05e556bb55d53cbfd0858f88d7f1726d034e3bc88529201ca542ebb23906092ec2a7d62052d84abf79af5107ffaaee20ca99c1c7018eac59c73a0ff2b946acd693dbe02e273453cdade0ed3e0be1635d9f9c0bd6eb78dbdfcba8fea72556c0196ce30a02cf17be3bebc162492dc7b5d7f3d8b0c83f499d7d06aac569cf55ebb52feb7f6be88fc4b428805ff9e4d6fe3c7e94465fe501edf141d1f9e1cc70f0aeb1d139d9dfce5bdc04e1356d1fc5eca2c9cd3f5bfe3eea2e9e2117f4a82829bf1a5a0d861dcbdfd4ffdb9edc295bbb3c00ec7b23e5d3a386f8e95323d5af68459b37a6fabde23921b1a39e34288f4e8e87aa60ca0fd2fc8d87b273c3df3b75f9452acd9cea4bf6bbd0feb406066cbb46b361cde66d91853c4f04b192c09c43ee4aa71e633cc36efb53d52b380e181e45a762b1273394e84f7c4af4007db3d9fcda3c8d84ef910451d3d673c3073fe36ae18cddd854c0b7a37738814fd9ecb421053c91da9e4c2689db817b95116b7112562bba67e41e0fd7ea1bb6f4957c76dec25127c620cb73119f3c87d2b9f8788c782f7a44ed9a8c755d78a6d23cba58937812c4cbd51809eac5774fc18fbd6ee76f6c56c08042b0ba6ec34489ad7f20bd7cf7fd6056471cea51af4ec5a3be85c32d75b5fdcbadd32744fc2be3a6076bff9ca04249a2237aa2f0d597121143228fa5af3d0c8d6d0e21887ff0d19f1fa5eeeacd564a6ec818eb8280f9ff3810e1320cf4ae588fb19d5570b92245dc7873640c5d2c5377b5fe0826655a66777c4bd70f4be2067e3a04387f6bbb88c1da35f0e29c3340badfb5e8d05493b94fac0cd57c28a3ce8b7a0a18d9765128fd88a8c915a9aad1d847e23251d0540f6269d7a6e27af347cc756007e34ccc40fc78ef174ced7679eab924bcd73916a10ee16b6b52bf2da2f6d0c6f18016dcc27e6032ec963cf943f13a03bc66de574a14b3af4f186297d9b3dfc45117f2938b7b13dd4846dc29d2cd5b60e306066ccef0dfb62fecfc595e5fe21da70162e17e3c85d8cd4e107944512755832829706c2f0d1f4b01d2d465e191ee79aa9ca204bce60b244eec871e3d3a5198c81356226f75935aaf00805d60928dba1963a139995e3a9192e4f229c19248a659637be0b3c340e6aa587ae6a1a39d132c3651e63e6c5219844ee7457205a0f11957e51dc5c3eea2d6cce7317f015ec41e5a7114a95b523b4446865026ee07f662d19128c41f10934ae7a757521f49e46dda425292ab9a44892d18eb0799b57a165e61cb5c1e519011b2e9469dbdd1ef0b30d697a9cc4584899b409e15c5caa158f99f1060d21e0f73567c7a99130a70159966024bac59d95c28fe9fcb88c8c3f7721ca5aa5644f4b9780a6bae743b1b2c2dffb3290d07bc7c794888ec2a8c2d22d0c9a5c96f29bd09ad5423d3f15da5e7653dbb717df8b2af0f8c6a9876cbd7c8b450ec63b6f8b0cc82765a9b98ab151ceb77be8ad07ed3bfffac2dba93e8997aee59bf31d0e05e1e63619d700bcb478c8301ca77734bf115ef3f6376238f114eea58633924eb233d6a4ede6c1265933d47509bde2d2550692411f5a07a69267e7507231a418502c3936efcf7c07d1e6637eac39f0f72fcc90d0ecb03fe2f55ef1720d3180e0ad116287abad9d1dc3e74d20321a6c0b5ea4cd0acd46e8f0e236d3c3114c92d9c6c4c13e7f1aee406d67def08b54cbff696afc17e9ca29ccae3a86cdd5e7fbfc09653d6fe6f91494a0468f1f9d99773fb64a3e42d3969c10efbf9ed400276fa4718422a758f5d2b362879386ef0dff7593fbc26a001ad00e15c9dfb9be907612bb983b177e803af3b57e5ea3742f7625408a614f9740d64d49fb743fbf52daee3a0aecb43f9e06bdfd3c5e97986dff13ed3eefbbccde2ede28354016b717dd00ff51219e1857e600336d0d323efd0022c828e266b122ca0fc05414549d99c78ba2011eddc7dce0556aef24b737f5a02811be6366f652dab90fb7a1ba5aba331b31ad85cf471b26adc073b2cb5df0eec4cd59ab9b21b2545c7bdf42f5b9936c57470c8b705d396cb9dba3e71c7249bd493e69387f3ce102ce071f25879f495ab771fb2d4c325c42f2d7a45ea79d992f003bc37158533cdb59a0eecb8e96302cae58669643577052d7346f9574492bbd96cf6e167ea4872fab20eebab4e5cf69b012071bf6c69a436344dd4d16fc28dc2dbf2f75acfa4ce618206baadb647c5a6062182739b269966bde9e74dab1b0205d1816d217d8ee3e84a921934b26ed908d462d8da46c9015c2831a3b8b64bd08cae99a85f5a7c18151d693a4ed87122afda9c5fd9ff933e99ed3589bfabaa9cd31120e8380dde69882b89e1e60bca36a5223e5ba0d8f18b57dd147236a526c3e958c6f5157b0b613a15dfd2c3a7faf7f4ed3df0f99a498caa771b8d32828c3e3bbdf04d389859b4cdbc6a9d308df99b8fa0276152f623e048494520618f4a81f4668544ca5d0640a9812d941f84b51c154efb13cd663fbf13d7a7f77d93794305c5b7af10dd54297e8cde58c4f5eea7b70d932669bb15c1543c958e13ad4af926c87c0b8f2cd96a90e711cf7c4e1b3d9ba2bebf896404426754b8ff790545e228e47853b4700dd5de311ebcd5c1f8a7f8fda0ffdf53d39db57ea749126a2084bcec9c2bf3e0a675764ca6eac4fbebb1c1113a4d6ab717c2c209135cb3083ecf19da084cddbd11c91a0e3e10b625250070357272064b78deeaa3fa3a0719584072471c8760ec01f69c24fc8cb13b5c01e96e253eb74398d7159b2e59bc6b1017062a0218e5bfd666d460686e4dc1b6b45d53baf0f6aa91c7da0d11cbbdaac18e163ba041c756f40a9a9b68d8164e7e707e03b2c7bc54713a3761a857b82f3c24804e50e809b1318c8143b7dfecdc2d66a6f462cabe470714e8273c9d43f16a7dad5177eb0cfa9fd9d807686e0a1c6f1530f129098b4a48f07f2aac5a88fc997dac3dcc293e237734d07b219c2a07100ed1540e8a668a85c67f84b77e02c3544cbb290d5bb5505de6b9145c8eb415676ad10f02a1aa9ed8daccadd8fdf0c12b5e50a87874f017cbc7d7612364c963c284f9d66e8de4b214ae52aec5672da7510591435d2b3a3ba950efb24ae034758154a7a75c4c53a510eddbf2061a733b89f2aa8064ca414c35ddc32117a3f6dfcbbce9b18712442c90a943daa2e79d084180672c99aabf7edfb9abe50fc17d59f6463256725a0bdc4e7073bfa2f0ef2db8b58c8b52a57fee302f1d93bfa5088b5e33f56027f4e610a690a62e15f7407d424fab81fee6821d3a4cff1683c92b2b35b0d1b22fdd3776aba3a0bb0c6e23639bb9d13830bd5b0d683d9c43820de36ead00faa1655a0bcae3790cf65ccc0e06f9a289027d982372478bf0628e38e3d4d7a068dc16f0f2f3aadafbf77a2bdff7a79c1aadb4c87bc04044f101eb88b895457ee9c2b6270d73a2f101c299399b8a6c2e7f025b061686eb3705461e17631d74f35b11bdc9c86d8110f16b9b73bebd11072832269bdf84d0d989592e508d3a72d1eb3a5cb33833d6da3b2ba7a5061bfd681435b21c96eb4cef8d871f6f04a84667c2c5a5b137e2f4200f00dcf18f652437609b33930a66c6d3cd13fa4de0a76473ebf6b9be26f02872610404abe168242daf82b1dd66f70f4236eaf5062499f5518045caa90350712481aa02b4be78d549b791c7add7073fc09d64ed396c603fc932767cd4e1ec7ae24aa73ea4ae1655bf21ac7c22aed9af9f9cf7b58f4a2a4db525cbf22a6c3c10dde720bff0ac4c1fb4f410e61c7c2c46fb8fe41805d7afa5f4be191b902896815cea150c83d1808da888880194ecfa9e492e1c30a0b990079ab64ef13b4a045aa23f7cf543fdcf4f21b41ca7b1b8deedd5ac97909a7323979882b60b7535657b148338c636ab509d8cd4cd7e8ca9b0c64b26d8443ac5a40e1537b02befd9b6d12d5a9545cf69fdbc831b043de9f4970efb7a88b24c168969277c178c41fe261535354ffbf45ebadf2cc108d213d04ece85748f36080563e1f704997d5129c5a9da81f7f0bac08bd054b0c7035cbcebedf055c7db532cc383215ed912ea867dff9b447922aee727fd919a13faab35da759418ee003e262e23697f76f5eee8d195b988f14e741ddada7b483039db282b06502030b832b0eaee9e8dba757a22e1ee0123402191418df7ea8d231ea9dccf17b3bd6eeacaa05b8ae0d24167e0e69be1922a70118b7054c3d7b80207dd19dc160698858aaaa00cb68b98321c1ec33c90f818edfbbcd122307487c62dec58e1af181df683975b066d57947535253180f345971cc0c17b57f29388cbb6b642bf29690438323adb16183232b2e7be842866a5099f02c3bce7866b1b5263dddb96ac8293776f33090d04548721cec729aabc8a953f02b4800fd321d750461213f09e28cc4f8d22fedddb7353fb1e6a80cb28b4de39f05ccfcce7138751a2f1a305379618f659e6c805dc18463b62a31cd768d969cb111d14ab392071dcd3615c64e5ca41d3383de276495aa03f3e7067878a15e8159be02b23d5156475dd16c4c1arootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootpython310-documentation-3.10.13-150400.4.36.1.src.rpmpython310-doc-devhelppython310-doc-devhelp(aarch-64)    rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)3.0.4-14.6.0-14.0-15.2-14.14.3dd˖d@dD@d ddJcdJcd@c>@c@cӼcck@cc@cRcOc'@cb@bbnb?bb@bzSbs@b?@b<]@b@b a@a@a@a@aX@a@aa@af@a\>@a,@a(a @a` @` @`g@``r```@`N@`/@`"y@`!'`_T__԰_ _v@_u@_P_|\@_m_O@_N7_>e__@__A@___ @_X@_X@_X@_X@_X@_X@_X@_X@_X@^z^z^z^z^)@^^^^@^(@^3^@^'@^H^|@^h^`^>^>^8 @^8 @^ P@^[]f@]f@]]]]W]]c@]]]z@](]]]@]V]w@]i]g@]W@]Ik]6]!]G@\\9\~\@\\@\7\+@\\s\b@\b@\Q\C@\4\4\,\2\\\\&@[[@[^[ @[ͻ[ͻ[$@[ā@[/[[@["@[D[;e@[6@[4ZnZ@Z@ZZԐ@Zx@Z@Z Z Z Zz@ZxG@Zhu@Z`@ZLZ"Z }YYX@Yo@YY@YY@Y@YP@YI@XӸXƉXqX@Xv@W@V@Vm@VVhVCV }@U@U@U@U@UU[%UT@UT@UCjU@TeTBV@T;daniel.garcia@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comkukuk@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comschwab@suse.demcepl@suse.comdmueller@suse.commcepl@suse.comcoolo@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comdavid.anes@suse.comsteven.kowalik@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comdimstar@opensuse.orgmcepl@suse.commcepl@suse.comschwab@suse.deschwab@suse.demcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comdmueller@suse.comdcermak@suse.commcepl@suse.commcepl@suse.comcode@bnavigator.demcepl@suse.commcepl@suse.comsteven.kowalik@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comcode@bnavigator.demcepl@suse.commcepl@suse.comdimstar@opensuse.orgmcepl@suse.comdimstar@opensuse.orgmcepl@suse.commcepl@suse.comschwab@suse.decallumjfarmer13@gmail.commcepl@suse.comcallumjfarmer13@gmail.comcallumjfarmer13@gmail.comtchvatal@suse.comtchvatal@suse.commcepl@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.comdmueller@suse.comandreas.stieger@gmx.decallumjfarmer13@gmail.commcepl@suse.commcepl@suse.comschwab@suse.demcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.comtchvatal@suse.comtchvatal@suse.commliska@suse.czmcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.comstefan.bruens@rwth-aachen.destefan.bruens@rwth-aachen.demcepl@suse.commcepl@suse.commgorse@suse.comtchvatal@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.combwiedemann@suse.comtchvatal@suse.commcepl@suse.comguillaume.gardet@opensuse.orgjayvdb@gmail.commcepl@suse.commcepl@suse.commcepl@suse.comschwab@suse.demcepl@suse.commliska@suse.czmcepl@suse.commcepl@suse.commcepl@suse.comjayvdb@gmail.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.comtchvatal@suse.commcepl@suse.comtoddrme2178@gmail.commcepl@suse.comjengelh@inai.demcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commcepl@suse.commcepl@suse.commcepl@suse.comtchvatal@suse.commimi.vx@gmail.comhpj@urpla.netjengelh@inai.detchvatal@suse.comtchvatal@suse.comtchvatal@suse.commimi.vx@gmail.comadam@mizerski.plschwab@suse.debwiedemann@suse.comtchvatal@suse.comtchvatal@suse.comnormand@linux.vnet.ibm.comjmatejek@suse.comnormand@linux.vnet.ibm.comjmatejek@suse.comdimstar@opensuse.orgmimi.vx@gmail.comjmatejek@suse.comdmueller@suse.comvcizek@suse.comjengelh@inai.deschwab@suse.dejmatejek@suse.comkukuk@suse.dejmatejek@suse.comjmatejek@suse.comasn@cryptomilk.orgjmatejek@suse.comjmatejek@suse.combwiedemann@suse.comjmatejek@suse.comjmatejek@suse.comjmatejek@suse.comschwab@suse.detoddrme2178@gmail.comarichardson.kde@gmail.comtoddrme2178@gmail.comtoddrme2178@gmail.comjmatejek@suse.comdimstar@opensuse.orgjmatejek@suse.comfisiu@opensuse.orgdimstar@opensuse.orgmeissner@suse.comschwab@suse.dejmatejek@suse.comjmatejek@suse.commailaender@opensuse.orgrguenther@suse.comp.drouand@gmail.comcrrodriguez@opensuse.orgjmatejek@suse.com- Add fix-sphinx-72.patch to make it work with latest sphinx version gh#python/cpython#97950 - Update to 3.10.13: - gh-108310: Fixed an issue where instances of ssl.SSLSocket were vulnerable to a bypass of the TLS handshake and included protections (like certificate verification) and treating sent unencrypted data as if it were post-handshake TLS encrypted data. Security issue reported as CVE-2023-40217 by Aapo Oksman. Patch by Gregory P. Smith. (bsc#1214692) - gh-107845: tarfile.data_filter() now takes the location of symlinks into account when determining their target, so it will no longer reject some valid tarballs with LinkOutsideDestinationError. - gh-107565: Update multissltests and GitHub CI workflows to use OpenSSL 1.1.1v, 3.0.10, and 3.1.2. - gh-99612: Fix PyUnicode_DecodeUTF8Stateful() for ASCII-only data: * consumed was not set.- Add Revert-gh105127-left-tests.patch (gh#python/cpython!106941) partially reverting CVE-2023-27043-email-parsing-errors.patch, because of the regression in gh#python/cpython#106669.- Add gh-78214-marshal_stabilize_FLAG_REF.patch to marshal.c for stabilizing FLAG_REF usage (required for reproduceability; bsc#1213463).- (bsc#1210638, CVE-2023-27043) Add CVE-2023-27043-email-parsing-errors.patch, which detects email address parsing errors and returns empty tuple to indicate the parsing error (old API).- Update to 3.10.12: - gh-103142: The version of OpenSSL used in Windows and Mac installers has been upgraded to 1.1.1u to address CVE-2023-2650, CVE-2023-0465, CVE-2023-0466, CVE-2023-0464, as well as CVE-2023-0286, CVE-2022-4303, and CVE-2022-4303 fixed previously in 1.1.1t (gh-101727). - gh-102153: urllib.parse.urlsplit() now strips leading C0 control and space characters following the specification for URLs defined by WHATWG in response to CVE-2023-24329 (bsc#1208471). - gh-99889: Fixed a security in flaw in uu.decode() that could allow for directory traversal based on the input if no out_file was specified. - gh-104049: Do not expose the local on-disk location in directory indexes produced by http.client.SimpleHTTPRequestHandler. - gh-103935: trace.__main__ now uses io.open_code() for files to be executed instead of raw open(). - gh-102953: The extraction methods in tarfile, and shutil.unpack_archive(), have a new filter argument that allows limiting tar features than may be surprising or dangerous, such as creating files outside the destination directory. See Extraction filters for details (fixing CVE-2007-4559, bsc#1203750). - Remove upstreamed patches: - CVE-2023-24329-blank-URL-bypass.patch - CVE-2007-4559-filter-tarfile_extractall.patch- Add bpo-37596-make-set-marshalling.patch making marshalling of `set` and `frozenset` deterministic (bsc#1211765).- Add CVE-2007-4559-filter-tarfile_extractall.patch to fix CVE-2007-4559 (bsc#1203750) by adding the filter for tarfile.extractall (PEP 706).- Update to 3.10.11: - Core and Builtins - gh-102416: Do not memoize incorrectly automatically generated loop rules in the parser. Patch by Pablo Galindo. - gh-102356: Fix a bug that caused a crash when deallocating deeply nested filter objects. Patch by Marta Gómez Macías. - gh-102397: Fix segfault from race condition in signal handling during garbage collection. Patch by Kumar Aditya. - gh-102126: Fix deadlock at shutdown when clearing thread states if any finalizer tries to acquire the runtime head lock. Patch by Kumar Aditya. - gh-102027: Fix SSE2 and SSE3 detection in _blake2 internal module. Patch by Max Bachmann. - gh-101967: Fix possible segfault in positional_only_passed_as_keyword function, when new list created. - gh-101765: Fix SystemError / segmentation fault in iter __reduce__ when internal access of builtins.__dict__ keys mutates the iter object. - Library - gh-102947: Improve traceback when dataclasses.fields() is called on a non-dataclass. Patch by Alex Waygood - gh-101979: Fix a bug where parentheses in the metavar argument to argparse.ArgumentParser.add_argument() were dropped. Patch by Yeojin Kim. - gh-102179: Fix os.dup2() error message for negative fds. - gh-101961: For the binary mode, fileinput.hookcompressed() doesn’t set the encoding value even if the value is None. Patch by Gihwan Kim. - gh-101936: The default value of fp becomes io.BytesIO if HTTPError is initialized without a designated fp parameter. Patch by Long Vo. - gh-101566: In zipfile, apply fix for extractall on the underlying zipfile after being wrapped in Path. - gh-101997: Upgrade pip wheel bundled with ensurepip (pip 23.0.1) - gh-101892: Callable iterators no longer raise SystemError when the callable object exhausts the iterator but forgets to either return a sentinel value or raise StopIteration. - gh-97786: Fix potential undefined behaviour in corner cases of floating-point-to-time conversions. - gh-101517: Fixed bug where bdb looks up the source line with linecache with a lineno=None, which causes it to fail with an unhandled exception. - gh-101673: Fix a pdb bug where ll clears the changes to local variables. - gh-96931: Fix incorrect results from ssl.SSLSocket.shared_ciphers() - gh-88233: Correctly preserve “extra” fields in zipfile regardless of their ordering relative to a zip64 “extra.” - gh-95495: When built against OpenSSL 3.0, the ssl module had a bug where it reported unauthenticated EOFs (i.e. without close_notify) as a clean TLS-level EOF. It now raises SSLEOFError, matching the behavior in previous versions of OpenSSL. The options attribute on SSLContext also no longer includes OP_IGNORE_UNEXPECTED_EOF by default. This option may be set to specify the previous OpenSSL 3.0 behavior. - gh-94440: Fix a concurrent.futures.process bug where ProcessPoolExecutor shutdown could hang after a future has been quickly submitted and canceled. - Documentation - gh-103112: Add docstring to http.client.HTTPResponse.read() to fix pydoc output. - gh-85417: Update cmath documentation to clarify behaviour on branch cuts. - gh-97725: Fix asyncio.Task.print_stack() description for file=None. Patch by Oleg Iarygin. - Tests - gh-102980: Improve test coverage on pdb. - gh-102537: Adjust the error handling strategy in test_zoneinfo.TzPathTest.python_tzpath_context. Patch by Paul Ganssle. - gh-101377: Improved test_locale_calendar_formatweekday of calendar. - Build - gh-102711: Fix -Wstrict-prototypes compiler warnings. - Removed upstreamed: - invalid-json.patch- Add invalid-json.patch fixing invalid JSON in Doc/howto/logging-cookbook.rst (somehow similar to gh#python/cpython#102582).- Update to 3.10.10: Bug fixes and regressions handling, no change of behaviour and no security bugs fixed. - Add CVE-2023-24329-blank-URL-bypass.patch (CVE-2023-24329, bsc#1208471) blocklists bypass via the urllib.parse component when supplying a URL that starts with blank characters- Add provides for readline and sqlite3 to the main Python package.- Disable NIS for new products, it's deprecated and gets removed- Update to 3.10.9: - python -m http.server no longer allows terminal control characters sent within a garbage request to be printed to the stderr server lo This is done by changing the http.server BaseHTTPRequestHandler .log_message method to replace control characters with a \xHH hex escape before printin - Avoid publishing list of active per-interpreter audit hooks via the gc module - The IDNA codec decoder used on DNS hostnames by socket or asyncio related name resolution functions no longer involves a quadratic algorithm. This prevents a potential CPU denial of service if an out-of-spec excessive length hostname involving bidirectional characters were decoded. Some protocols such as urllib http 3xx redirects potentially allow for an attacker to supply such a name. - Update bundled libexpat to 2.5.0 - Port XKCP’s fix for the buffer overflows in SHA-3 (CVE-2022-37454). - On Linux the multiprocessing module returns to using filesystem backed unix domain sockets for communication with the forkserver process instead of the Linux abstract socket namespace. Only code that chooses to use the “forkserver” start method is affected Abstract sockets have no permissions and could allow any user on the system in the same network namespace (often the whole system) to inject code into the multiprocessing forkserver process. This was a potential privilege escalation. Filesystem based socket permissions restrict this to the forkserver process user as was the default in Python 3.8 and earlier This prevents Linux CVE-2022-42919 - Fix a reference bug in _imp.create_builtin() after the creation of the first sub-interpreter for modules builtins and sys. Patch by Victor Stinner. - Fixed a bug that was causing a buffer overflow if the tokenizer copies a line missing the newline caracter from a file that is as long as the available tokenizer buffer. Patch by Pablo galindo - Update faulthandler to emit an error message with the proper unexpected signal number. Patch by Dong-hee Na. - Fix subscription of types.GenericAlias instances containing bare generic types: for example tuple[A, T][int], where A is a generic type, and T is a type variable. - Fix detection of MAC addresses for uuid on certain OSs. Patch by Chaim Sanders - Print exception class name instead of its string representation when raising errors from ctypes calls. - Allow pdb to locate source for frozen modules in the standard library. - Raise ValueError instead of SystemError when methods of uninitialized io.IncrementalNewlineDecoder objects are called. Patch by Oren Milman. - Fix a possible assertion failure in io.FileIO when the opener returns an invalid file descriptor. - Also escape s in the http.server BaseHTTPRequestHandler.log_message so that it is technically possible to parse the line and reconstruct what the original data was. Without this a xHH is ambiguious as to if it is a hex replacement we put in or the characters r”x” came through in the original request line. - asyncio.get_event_loop() now only emits a deprecation warning when a new event loop was created implicitly. It no longer emits a deprecation warning if the current event loop was set. - Fix bug when calling trace.CoverageResults with valid infile. - Fix a bug in handling class cleanups in unittest.TestCase. Now addClassCleanup() uses separate lists for different TestCase subclasses, and doClassCleanups() only cleans up the particular class. - Release the GIL when calling termios APIs to avoid blocking threads. - Fix ast.increment_lineno() to also cover ast.TypeIgnore when changing line numbers. - Fixed bug where inspect.signature() reported incorrect arguments for decorated methods. - Fix SystemError in ctypes when exception was not set during __initsubclass__. - Fix statistics.NormalDist pickle with 0 and 1 protocols. - Update the bundled copy of pip to version 22.3.1. - Apply bugfixes from importlib_metadata 4.11.4, namely: In PathDistribution._name_from_stem, avoid including parts of the extension in the result. In PathDistribution._normalized_name, ensure names loaded from the stem of the filename are also normalized, ensuring duplicate entry points by packages varying only by non-normalized name are hidden. - Clean up refleak on failed module initialisation in _zoneinfo - Clean up refleaks on failed module initialisation in in _pickle - Clean up refleak on failed module initialisation in _io. - Fix memory leak in math.dist() when both points don’t have the same dimension. Patch by Kumar Aditya. - Fix argument typechecks in _overlapped.WSAConnect() and _overlapped.Overlapped.WSASendTo() functions. - Fix internal error in the re module which in very rare circumstances prevented compilation of a regular expression containing a conditional expression without the “else” branch. - Fix asyncio.StreamWriter.drain() to call protocol.connection_lost callback only once on Windows. - Add a mutex to unittest.mock.NonCallableMock to protect concurrent access to mock attributes. - Fix hang on Windows in subprocess.wait_closed() in asyncio with ProactorEventLoop. Patch by Kumar Aditya. - Fix infinite loop in unittest when a self-referencing chained exception is raised - tkinter.Text.count() raises now an exception for options starting with “-” instead of silently ignoring them. - On uname_result, restored expectation that _fields and _asdict would include all six properties including processor. - Update the bundled copies of pip and setuptools to versions 22.3 and 65.5.0 respectively. - Fix bug in urllib.parse.urlparse() that causes certain port numbers containing whitespace, underscores, plus and minus signs, or non-ASCII digits to be incorrectly accepted. - Allow venv to pass along PYTHON* variables to ensurepip and pip when they do not impact path resolution - On macOS, fix a crash in syslog.syslog() in multi-threaded applications. On macOS, the libc syslog() function is not thread-safe, so syslog.syslog() no longer releases the GIL to call it. Patch by Victor Stinner. - Allow BUILTINS to be a valid field name for frozen dataclasses. - Make sure patch.dict() can be applied on async functions. - To avoid apparent memory leaks when asyncio.open_connection() raises, break reference cycles generated by local exception and future instances (which has exception instance as its member var). Patch by Dong Uk, Kang. - Prevent error when activating venv in nested fish instances. - Restrict use of sockets instead of pipes for stdin of subprocesses created by asyncio to AIX platform only. - shutil.copytree() now applies the ignore_dangling_symlinks argument recursively. - Fix IndexError in argparse.ArgumentParser when a store_true action is given an explicit argument. - Document that calling variadic functions with ctypes requires special care on macOS/arm64 (and possibly other platforms). - Skip test_normalization() of test_unicodedata if it fails to download NormalizationTest.txt file from pythontest.net. Patch by Victor Stinner. - Some C API tests were moved into the new Lib/test/test_capi/ directory. - Fix -Wimplicit-int, -Wstrict-prototypes, and - Wimplicit-function-declaration compiler warnings in configure checks. - Fix -Wimplicit-int compiler warning in configure check for PTHREAD_SCOPE_SYSTEM. - Specify the full path to the source location for make docclean (needed for cross-builds). - Fix NO_MISALIGNED_ACCESSES being not defined for the SHA3 extension when HAVE_ALIGNED_REQUIRED is set. Allowing builds on hardware that unaligned memory accesses are not allowed. - Fix handling of module docstrings in Tools/i18n/pygettext.py. - Remove upstreamed patches: - 98437-sphinx.locale._-as-gettext-in-pyspecific.patch - CVE-2015-20107-mailcap-unsafe-filenames.patch - CVE-2022-42919-loc-priv-mulitproc-forksrv.patch - CVE-2022-45061-DoS-by-IDNA-decode.patch- Add CVE-2022-45061-DoS-by-IDNA-decode.patch to avoid CVE-2022-45061 (bsc#1205244) allowing DoS by IDNA decoding extremely long domain names.- Add CVE-2022-42919-loc-priv-mulitproc-forksrv.patch to avoid CVE-2022-42919 (bsc#1204886) avoiding Linux specific local privilege escalation via the multiprocessing forkserver start method.- Add 98437-sphinx.locale._-as-gettext-in-pyspecific.patch to allow building of documentation with the latest Sphinx 5.3.0 (gh#python/cpython#98366).- Update to 3.10.8: - Fix multiplying a list by an integer (list *= int): detect the integer overflow when the new allocated length is close to the maximum size. - Fix a shell code injection vulnerability in the get-remote-certificate.py example script. The script no longer uses a shell to run openssl commands. (originally filed as CVE-2022-37460, later withdrawn) - Fix command line parsing: reject -X int_max_str_digits option with no value (invalid) when the PYTHONINTMAXSTRDIGITS environment variable is set to a valid limit. - When ValueError is raised if an integer is larger than the limit, mention the sys.set_int_max_str_digits() function in the error message. - The deprecated mailcap module now refuses to inject unsafe text (filenames, MIME types, parameters) into shell commands. Instead of using such text, it will warn and act as if a match was not found (or for test commands, as if the test failed). - os.sched_yield() now release the GIL while calling sched_yield(2). - Bugfix: PyFunction_GetAnnotations() should return a borrowed reference. It was returning a new reference. - Fixed a missing incref/decref pair in Exception.__setstate__(). - Fix overly-broad source position information for chained comparisons used as branching conditions. - Fix undefined behaviour in _testcapimodule.c. - At Python exit, sometimes a thread holding the GIL can wait forever for a thread (usually a daemon thread) which requested to drop the GIL, whereas the thread already exited. To fix the race condition, the thread which requested the GIL drop now resets its request before exiting. - Fix a possible assertion failure, fatal error, or SystemError if a line tracing event raises an exception while opcode tracing is enabled. - Fix undefined behaviour in C code of null pointer arithmetic. - Do not expose KeyWrapper in _functools. - When loading a file with invalid UTF-8 inside a multi-line string, a correct SyntaxError is emitted. - Disable incorrect pickling of the C implemented classmethod descriptors. - Fix AttributeError missing name and obj attributes in . object.__getattribute__() bpo-42316: Document some places . where an assignment expression needs parentheses . - Wrap network errors consistently in urllib FTP support, so the test suite doesn’t fail when a network is available but the public internet is not reachable. - Fixes AttributeError when subprocess.check_output() is used with argument input=None and either of the arguments encoding or errors are used. - Avoid spurious tracebacks from asyncio when default executor cleanup is delayed until after the event loop is closed (e.g. as the result of a keyboard interrupt). - Avoid a crash in the C version of asyncio.Future.remove_done_callback() when an evil argument is passed. - Remove tokenize.NL check from tabnanny. - Make Semaphore run faster. - Fix generation of the default name of tkinter.Checkbutton. Previously, checkbuttons in different parent widgets could have the same short name and share the same state if arguments “name” and “variable” are not specified. Now they are globally unique. - Update bundled libexpat to 2.4.9 - Fix race condition in asyncio where process_exited() called before the pipe_data_received() leading to inconsistent output. - Fixed check in multiprocessing.resource_tracker that guarantees that the length of a write to a pipe is not greater than PIPE_BUF. - Corrected type annotation for dataclass attribute pstats.FunctionProfile.ncalls to be str. - Fix the faulthandler implementation of faulthandler.register(signal, chain=True) if the sigaction() function is not available: don’t call the previous signal handler if it’s NULL. - In inspect, fix overeager replacement of “typing.” in formatting annotations. - Fix asyncio.streams.StreamReaderProtocol to keep a strong reference to the created task, so that it’s not garbage collected - Fix handling compiler warnings (SyntaxWarning and DeprecationWarning) in codeop.compile_command() when checking for incomplete input. Previously it emitted warnings and raised a SyntaxError. Now it always returns None for incomplete input without emitting any warnings. - Fixed flickering of the turtle window when the tracer is turned off. - Allow asyncio.StreamWriter.drain() to be awaited concurrently by multiple tasks. - Fix broken asyncio.Semaphore when acquire is cancelled. - Fix ast.unparse() when ImportFrom.level is None - Improve performance of urllib.request.getproxies_environment when there are many environment variables - Fix ! in c domain ref target syntax via a conf.py patch, so it works as intended to disable ref target resolution. - Clarified the conflicting advice given in the ast documentation about ast.literal_eval() being “safe” for use on untrusted input while at the same time warning that it can crash the process. The latter statement is true and is deemed unfixable without a large amount of work unsuitable for a bugfix. So we keep the warning and no longer claim that literal_eval is safe. - Update tutorial introduction output to use 3.10+ SyntaxError invalid range. - Remove upstreamed test-int-timing.patch.- test-int-timing.patch: gh-96710: Make the test timing more lenient for the int/str DoS regression test. (#96717)- Update to 3.10.7: - Fix for CVE-2020-10735 (bsc#1203125) Converting between int and str in bases other than 2 (binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal) now raises a ValueError if the number of digits in string form is above a limit to avoid potential denial of service attacks due to the algorithmic complexity. - Other bug fixes: - Fixed a bug that caused _PyCode_GetExtra to return garbage for negative indexes. - Fix format string in _PyPegen_raise_error_known_location that can lead to memory corruption on some 64bit systems. The function was building a tuple with i (int) instead of n (Py_ssize_t) for Py_ssize_t arguments. - Fix misleading contents of error message when converting an all-whitespace string to float. - coroutine.throw() now properly initializes the frame.f_back when resuming a stack of coroutines. This allows e.g. traceback.print_stack() to work correctly when an exception (such as CancelledError) is thrown into a coroutine. - ast.parse() will no longer parse function definitions with positional-only params when passed feature_version less than (3, 8). - Correct conversion of numbers.Rational’s to float. - Fix a performance regression in logging TimedRotatingFileHandler. Only check for special files when the rollover time has passed. - Fix unused localName parameter in the Attr class in xml.dom.minidom. - Update bundled pip to 22.2.2. - Fail gracefully if EPERM or ENOSYS is raised when loading crypt methods. This may happen when trying to load MD5 on a Linux kernel with FIPS enabled. - Improve discoverability of the higher level concurrent.futures module by providing clearer links from the lower level threading and multiprocessing modules. - Update the default RFC base URL from deprecated tools.ietf.org to datatracker.ietf.org - Fix stylesheet not working in Windows CHM htmlhelp docs. - The documentation now lists which members of C structs are part of the Limited API/Stable ABI. - Mitigate the inherent race condition from using find_unused_port() in testSockName() by trying to find an unused port a few times before failing. - Build and test with OpenSSL 1.1.1q - Document handling of extensions in Save As dialogs. - Include prompts when saving Shell (interactive input and output).- fix import_failed.map to refer to the python 3.10 package versions- Update to 3.10.6: - gh-87389: http.server: Fix an open redirection vulnerability in the HTTP server when an URI path starts with //. Vulnerability discovered, and initial fix proposed, by Hamza Avvan. (bsc#1202624, CVE-2021-28861) - gh-92888: Fix memoryview use after free when accessing the backing buffer in certain cases. - gh-95355: _PyPegen_Parser_New now properly detects token memory allocation errors. Patch by Honglin Zhu. - gh-94938: Fix error detection in some builtin functions when keyword argument name is an instance of a str subclass with overloaded __eq__ and __hash__. Previously it could cause SystemError or other undesired behavior. - gh-94949: ast.parse() will no longer parse parenthesized context managers when passed feature_version less than (3, 9). Patch by Shantanu Jain. - gh-94947: ast.parse() will no longer parse assignment expressions when passed feature_version less than (3, 8). Patch by Shantanu Jain. - gh-94869: Fix the column offsets for some expressions in multi-line f-strings ast nodes. Patch by Pablo Galindo. - gh-91153: Fix an issue where a bytearray item assignment could crash if it’s resized by the new value’s __index__() method. - gh-94329: Compile and run code with unpacking of extremely large sequences (1000s of elements). Such code failed to compile. It now compiles and runs correctly. - gh-94360: Fixed a tokenizer crash when reading encoded files with syntax errors from stdin with non utf-8 encoded text. Patch by Pablo Galindo - gh-94192: Fix error for dictionary literals with invalid expression as value. - gh-93964: Strengthened compiler overflow checks to prevent crashes when compiling very large source files. - gh-93671: Fix some exponential backtrace case happening with deeply nested sequence patterns in match statements. Patch by Pablo Galindo - gh-93021: Fix the __text_signature__ for __get__() methods implemented in C. Patch by Jelle Zijlstra. - gh-92930: Fixed a crash in _pickle.c from mutating collections during __reduce__ or persistent_id. - gh-92914: Always round the allocated size for lists up to the nearest even number. - gh-92858: Improve error message for some suites with syntax error before ‘:’ - gh-95339: Update bundled pip to 22.2.1. - gh-95045: Fix GC crash when deallocating _lsprof.Profiler by untracking it before calling any callbacks. Patch by Kumar Aditya. - gh-95087: Fix IndexError in parsing invalid date in the email module. - gh-95199: Upgrade bundled setuptools to 63.2.0. - gh-95194: Upgrade bundled pip to 22.2. - gh-93899: Fix check for existence of os.EFD_CLOEXEC, os.EFD_NONBLOCK and os.EFD_SEMAPHORE flags on older kernel versions where these flags are not present. Patch by Kumar Aditya. - gh-95166: Fix concurrent.futures.Executor.map() to cancel the currently waiting on future on an error - e.g. TimeoutError or KeyboardInterrupt. - gh-93157: Fix fileinput module didn’t support errors option when inplace is true. - gh-94821: Fix binding of unix socket to empty address on Linux to use an available address from the abstract namespace, instead of “0”. - gh-94736: Fix crash when deallocating an instance of a subclass of _multiprocessing.SemLock. Patch by Kumar Aditya. - gh-94637: SSLContext.set_default_verify_paths() now releases the GIL around SSL_CTX_set_default_verify_paths call. The function call performs I/O and CPU intensive work. - gh-94510: Re-entrant calls to sys.setprofile() and sys.settrace() now raise RuntimeError. Patch by Pablo Galindo. - gh-92336: Fix bug where linecache.getline() fails on bad files with UnicodeDecodeError or SyntaxError. It now returns an empty string as per the documentation. - gh-89988: Fix memory leak in pickle.Pickler when looking up dispatch_table. Patch by Kumar Aditya. - gh-94254: Fixed types of struct module to be immutable. Patch by Kumar Aditya. - gh-94245: Fix pickling and copying of typing.Tuple[()]. - gh-94207: Made _struct.Struct GC-tracked in order to fix a reference leak in the _struct module. - gh-94101: Manual instantiation of ssl.SSLSession objects is no longer allowed as it lead to misconfigured instances that crashed the interpreter when attributes where accessed on them. - gh-84753: inspect.iscoroutinefunction(), inspect.isgeneratorfunction(), and inspect.isasyncgenfunction() now properly return True for duck-typed function-like objects like instances of unittest.mock.AsyncMock. - This makes inspect.iscoroutinefunction() consistent with the behavior of asyncio.iscoroutinefunction(). Patch by Mehdi ABAAKOUK. - gh-83499: Fix double closing of file description in tempfile. - gh-79512: Fixed names and __module__ value of weakref classes ReferenceType, ProxyType, CallableProxyType. It makes them pickleable. - gh-90494: copy.copy() and copy.deepcopy() now always raise a TypeError if __reduce__() returns a tuple with length 6 instead of silently ignore the 6th item or produce incorrect result. - gh-90549: Fix a multiprocessing bug where a global named resource (such as a semaphore) could leak when a child process is spawned (as opposed to forked). - gh-79579: sqlite3 now correctly detects DML queries with leading comments. Patch by Erlend E. Aasland. - gh-93421: Update sqlite3.Cursor.rowcount when a DML statement has run to completion. This fixes the row count for SQL queries like UPDATE ... RETURNING. Patch by Erlend E. Aasland. - gh-91810: Suppress writing an XML declaration in open files in ElementTree.write() with encoding='unicode' and xml_declaration=None. - gh-93353: Fix the importlib.resources.as_file() context manager to remove the temporary file if destroyed late during Python finalization: keep a local reference to the os.remove() function. Patch by Victor Stinner. - gh-83658: Make multiprocessing.Pool raise an exception if maxtasksperchild is not None or a positive int. - gh-74696: shutil.make_archive() no longer temporarily changes the current working directory during creation of standard .zip or tar archives. - gh-91577: Move imports in SharedMemory methods to module level so that they can be executed late in python finalization. - bpo-47231: Fixed an issue with inconsistent trailing slashes in tarfile longname directories. - bpo-46755: In QueueHandler, clear stack_info from LogRecord to prevent stack trace from being written twice. - bpo-46053: Fix OSS audio support on NetBSD. - bpo-46197: Fix ensurepip environment isolation for subprocess running pip. - bpo-45924: Fix asyncio incorrect traceback when future’s exception is raised multiple times. Patch by Kumar Aditya. - bpo-34828: sqlite3.Connection.iterdump() now handles databases that use AUTOINCREMENT in one or more tables. - gh-94321: Document the PEP 246 style protocol type sqlite3.PrepareProtocol. - gh-86128: Document a limitation in ThreadPoolExecutor where its exit handler is executed before any handlers in atexit. - gh-61162: Clarify sqlite3 behavior when Using the connection as a context manager. - gh-87260: Align sqlite3 argument specs with the actual implementation. - gh-86986: The minimum Sphinx version required to build the documentation is now 3.2. - gh-88831: Augmented documentation of asyncio.create_task(). Clarified the need to keep strong references to tasks and added a code snippet detailing how to to this. - bpo-47161: Document that pathlib.PurePath does not collapse initial double slashes because they denote UNC paths. - gh-95280: Fix problem with test_ssl test_get_ciphers on systems that require perfect forward secrecy (PFS) ciphers. - gh-95212: Make multiprocessing test case test_shared_memory_recreate parallel-safe. - gh-91330: Added more tests for dataclasses to cover behavior with data descriptor-based fields. - gh-94208: test_ssl is now checking for supported TLS version and protocols in more tests. - gh-93951: In test_bdb.StateTestCase.test_skip, avoid including auxiliary importers. - gh-93957: Provide nicer error reporting from subprocesses in test_venv.EnsurePipTest.test_with_pip. - gh-57539: Increase calendar test coverage for calendar.LocaleTextCalendar.formatweekday(). - gh-92886: Fixing tests that fail when running with optimizations (-O) in test_zipimport.py - bpo-47016: Create a GitHub Actions workflow for verifying bundled pip and setuptools. Patch by Illia Volochii and Adam Turner. - gh-94841: Fix the possible performance regression of PyObject_Free() compiled with MSVC version 1932. - gh-95511: Fix the Shell context menu copy-with-prompts bug of copying an extra line when one selects whole lines. - gh-95471: In the Edit menu, move Select All and add a new separator. - gh-95411: Enable using IDLE’s module browser with .pyw files. - gh-89610: Add .pyi as a recognized extension for IDLE on macOS. This allows opening stub files by double clicking on them in the Finder. - gh-94538: Fix Argument Clinic output to custom file destinations. Patch by Erlend E. Aasland. - gh-94430: Allow parameters named module and self with custom C names in Argument Clinic. Patch by Erlend E. Aasland - gh-94930: Fix SystemError raised when PyArg_ParseTupleAndKeywords() is used with # in (...) but without PY_SSIZE_T_CLEAN defined. - gh-94864: Fix PyArg_Parse* with deprecated format units “u” and “Z”. It returned 1 (success) when warnings are turned into exceptions. - Reapply patches - bpo-31046_ensurepip_honours_prefix.patch - fix_configure_rst.patch - no-skipif-doctests.patch - skip-test_pyobject_freed_is_freed.patch- Extend distutils-reproducible-compile.patch with a workaround for non reproducible pyc files issue 93317- Switch from %primary_interpreter to prjconf-defined %primary_python (gh#openSUSE/python-rpm-macros#127).- Add CVE-2015-20107-mailcap-unsafe-filenames.patch to avoid CVE-2015-20107 (bsc#1198511, gh#python/cpython#68966), the command injection in the mailcap module. - Fix building of documentation and the universal configuration of the %primary_interpreter.- Update to 3.10.5: - Core and Builtins - gh-93418: Fixed an assert where an f-string has an equal sign ‘=’ following an expression, but there’s no trailing brace. For example, f”{i=”. - gh-91924: Fix __ltrace__ debug feature if the stdout encoding is not UTF-8. Patch by Victor Stinner. - gh-93061: Backward jumps after async for loops are no longer given dubious line numbers. - gh-93065: Fix contextvars HAMT implementation to handle iteration over deep trees. - The bug was discovered and fixed by Eli Libman. See MagicStack/immutables#84 for more details. - gh-92311: Fixed a bug where setting frame.f_lineno to jump over a list comprehension could misbehave or crash. - gh-92112: Fix crash triggered by an evil custom mro() on a metaclass. - gh-92036: Fix a crash in subinterpreters related to the garbage collector. When a subinterpreter is deleted, untrack all objects tracked by its GC. To prevent a crash in deallocator functions expecting objects to be tracked by the GC, leak a strong reference to these objects on purpose, so they are never deleted and their deallocator functions are not called. Patch by Victor Stinner. - gh-91421: Fix a potential integer overflow in _Py_DecodeUTF8Ex. - bpo-47212: Raise IndentationError instead of SyntaxError for a bare except with no following indent. Improve SyntaxError locations for an un-parenthesized generator used as arguments. Patch by Matthieu Dartiailh. - bpo-47182: Fix a crash when using a named unicode character like "\N{digit nine}" after the main interpreter has been initialized a second time. - bpo-47117: Fix a crash if we fail to decode characters in interactive mode if the tokenizer buffers are uninitialized. Patch by Pablo Galindo. - bpo-39829: Removed the __len__() call when initializing a list and moved initializing to list_extend. Patch by Jeremiah Pascual. - bpo-46962: Classes and functions that unconditionally declared their docstrings ignoring the - -without-doc-strings compilation flag no longer do so. - The classes affected are ctypes.UnionType, pickle.PickleBuffer, testcapi.RecursingInfinitelyError, and types.GenericAlias. - The functions affected are 24 methods in ctypes. - Patch by Oleg Iarygin. - bpo-36819: Fix crashes in built-in encoders with error handlers that return position less or equal than the starting position of non-encodable characters. - Library - gh-93156: Accessing the pathlib.PurePath.parents sequence of an absolute path using negative index values produced incorrect results. - gh-89973: Fix re.error raised in fnmatch if the pattern contains a character range with upper bound lower than lower bound (e.g. [c-a]). Now such ranges are interpreted as empty ranges. - gh-93010: In a very special case, the email package tried to append the nonexistent InvalidHeaderError to the defect list. It should have been InvalidHeaderDefect. - gh-92839: Fixed crash resulting from calling bisect.insort() or bisect.insort_left() with the key argument not equal to None. - gh-91581: utcfromtimestamp() no longer attempts to resolve fold in the pure Python implementation, since the fold is never 1 in UTC. In addition to being slightly faster in the common case, this also prevents some errors when the timestamp is close to datetime.min. Patch by Paul Ganssle. - gh-92530: Fix an issue that occurred after interrupting threading.Condition.notify(). - gh-92049: Forbid pickling constants re._constants.SUCCESS etc. Previously, pickling did not fail, but the result could not be unpickled. - bpo-47029: Always close the read end of the pipe used by multiprocessing.Queue after the last write of buffered data to the write end of the pipe to avoid BrokenPipeError at garbage collection and at multiprocessing.Queue.close() calls. Patch by Géry Ogam. - gh-91401: Provide a fail-safe way to disable subprocess use of vfork() via a private subprocess._USE_VFORK attribute. While there is currently no known need for this, if you find a need please only set it to False. File a CPython issue as to why you needed it and link to that from a comment in your code. This attribute is documented as a footnote in 3.11. - gh-91910: Add missing f prefix to f-strings in error messages from the multiprocessing and asyncio modules. - gh-91810: ElementTree method write() and function tostring() now use the text file’s encoding (“UTF-8” if not available) instead of locale encoding in XML declaration when encoding="unicode" is specified. - gh-91832: Add required attribute to argparse.Action repr output. - gh-91700: Compilation of regular expression containing a conditional expression (?(group)...) now raises an appropriate re.error if the group number refers to not defined group. Previously an internal RuntimeError was raised. - gh-91676: Fix unittest.IsolatedAsyncioTestCase to shutdown the per test event loop executor before returning from its run method so that a not yet stopped or garbage collected executor state does not persist beyond the test. - gh-90568: Parsing \N escapes of Unicode Named Character Sequences in a regular expression raises now re.error instead of TypeError. - gh-91595: Fix the comparison of character and integer inside Tools.gdb.libpython.write_repr(). Patch by Yu Liu. - gh-90622: Worker processes for concurrent.futures.ProcessPoolExecutor are no longer spawned on demand (a feature added in 3.9) when the multiprocessing context start method is "fork" as that can lead to deadlocks in the child processes due to a fork happening while threads are running. - gh-91575: Update case-insensitive matching in the re module to the latest Unicode version. - gh-91581: Remove an unhandled error case in the C implementation of calls to datetime.fromtimestamp with no time zone (i.e. getting a local time from an epoch timestamp). This should have no user-facing effect other than giving a possibly more accurate error message when called with timestamps that fall on 10000-01-01 in the local time. Patch by Paul Ganssle. - bpo-47260: Fix os.closerange() potentially being a no-op in a Linux seccomp sandbox. - bpo-39064: zipfile.ZipFile now raises zipfile.BadZipFile instead of ValueError when reading a corrupt zip file in which the central directory offset is negative. - bpo-47151: When subprocess tries to use vfork, it now falls back to fork if vfork returns an error. This allows use in situations where vfork isn’t allowed by the OS kernel. - bpo-27929: Fix asyncio.loop.sock_connect() to only resolve names for socket.AF_INET or socket.AF_INET6 families. Resolution may not make sense for other families, like socket.AF_BLUETOOTH and socket.AF_UNIX. - bpo-43323: Fix errors in the email module if the charset itself contains undecodable/unencodable characters. - bpo-47101: hashlib.algorithms_available now lists only algorithms that are provided by activated crypto providers on OpenSSL 3.0. Legacy algorithms are not listed unless the legacy provider has been loaded into the default OSSL context. - bpo-46787: Fix concurrent.futures.ProcessPoolExecutor exception memory leak - bpo-45393: Fix the formatting for await x and not x in the operator precedence table when using the help() system. - bpo-46415: Fix ipaddress.ip_{address,interface,network} raising TypeError instead of ValueError if given invalid tuple as address parameter. - bpo-28249: Set doctest.DocTest.lineno to None when object does not have __doc__. - bpo-45138: Fix a regression in the sqlite3 trace callback where bound parameters were not expanded in the passed statement string. The regression was introduced in Python 3.10 by bpo-40318. Patch by Erlend E. Aasland. - bpo-44493: Add missing terminated NUL in sockaddr_un’s length - This was potentially observable when using non-abstract AF_UNIX datagram sockets to processes written in another programming language. - bpo-42627: Fix incorrect parsing of Windows registry proxy settings - bpo-36073: Raise ProgrammingError instead of segfaulting on recursive usage of cursors in sqlite3 converters. Patch by Sergey Fedoseev. - Documentation - gh-86438: Clarify that -W and PYTHONWARNINGS are matched literally and case-insensitively, rather than as regular expressions, in warnings. - gh-92240: Added release dates for “What’s New in Python 3.X” for 3.0, 3.1, 3.2, 3.8 and 3.10 - gh-91888: Add a new gh role to the documentation to link to GitHub issues. - gh-91783: Document security issues concerning the use of the function shutil.unpack_archive() - gh-91547: Remove “Undocumented modules” page. - bpo-44347: Clarify the meaning of dirs_exist_ok, a kwarg of shutil.copytree(). - bpo-38668: Update the introduction to documentation for os.path to remove warnings that became irrelevant after the implementations of PEP 383 and PEP 529. - bpo-47138: Pin Jinja to a version compatible with Sphinx version 3.2.1. - bpo-46962: All docstrings in code snippets are now wrapped into PyDoc_STR() to follow the guideline of PEP 7’s Documentation Strings paragraph. Patch by Oleg Iarygin. - bpo-26792: Improve the docstrings of runpy.run_module() and runpy.run_path(). Original patch by Andrew Brezovsky. - bpo-40838: Document that inspect.getdoc(), inspect.getmodule(), and inspect.getsourcefile() might return None. - bpo-45790: Adjust inaccurate phrasing in Defining Extension Types: Tutorial about the ob_base field and the macros used to access its contents. - bpo-42340: Document that in some circumstances KeyboardInterrupt may cause the code to enter an inconsistent state. Provided a sample workaround to avoid it if needed. - bpo-41233: Link the errnos referenced in Doc/library/exceptions.rst to their respective section in Doc/library/errno.rst, and vice versa. Previously this was only done for EINTR and InterruptedError. Patch by Yan “yyyyyyyan” Orestes. - bpo-38056: Overhaul the Error Handlers documentation in codecs. - bpo-13553: Document tkinter.Tk args. - Tests - gh-92886: Fixing tests that fail when running with optimizations (-O) in test_imaplib.py. - gh-92670: Skip test_shutil.TestCopy.test_copyfile_nonexistent_dir test on AIX as the test uses a trailing slash to force the OS consider the path as a directory, but on AIX the trailing slash has no effect and is considered as a file. - gh-91904: Fix initialization of PYTHONREGRTEST_UNICODE_GUARD which prevented running regression tests on non-UTF-8 locale. - gh-91607: Fix test_concurrent_futures to test the correct multiprocessing start method context in several cases where the test logic mixed this up. - bpo-47205: Skip test for sched_getaffinity() and sched_setaffinity() error case on FreeBSD. - bpo-47104: Rewrite asyncio.to_thread() tests to use unittest.IsolatedAsyncioTestCase. - bpo-29890: Add tests for ipaddress.IPv4Interface and ipaddress.IPv6Interface construction with tuple arguments. Original patch and tests by louisom. - Tools/Demos - gh-91583: Fix regression in the code generated by Argument Clinic for functions with the defining_class parameter.- Refresh bluez-devel-vendor.tar.xz- Switch primary_interpreter from python38 to python310 for Factory (only)- Update to 3.10.4: - bpo-46968: Check for the existence of the “sys/auxv.h” header in faulthandler to avoid compilation problems in systems where this header doesn’t exist. Patch by Pablo Galindo - bpo-23691: Protect the re.finditer() iterator from re-entering. - bpo-42369: Fix thread safety of zipfile._SharedFile.tell() to avoid a “zipfile.BadZipFile: Bad CRC-32 for file” exception when reading a ZipFile from multiple threads. - bpo-38256: Fix binascii.crc32() when it is compiled to use zlib’c crc32 to work properly on inputs 4+GiB in length instead of returning the wrong result. The workaround prior to this was to always feed the function data in increments smaller than 4GiB or to just call the zlib module function. - bpo-39394: A warning about inline flags not at the start of the regular expression now contains the position of the flag. - bpo-47061: Deprecate the various modules listed by PEP 594: - aifc, asynchat, asyncore, audioop, cgi, cgitb, chunk, crypt, imghdr, msilib, nntplib, nis, ossaudiodev, pipes, smtpd, sndhdr, spwd, sunau, telnetlib, uu, xdrlib - bpo-2604: Fix bug where doctests using globals would fail when run multiple times. - bpo-45997: Fix asyncio.Semaphore re-aquiring FIFO order. - bpo-47022: The asynchat, asyncore and smtpd modules have been deprecated since at least Python 3.6. Their documentation and deprecation warnings and have now been updated to note they will removed in Python 3.12 (PEP 594). - bpo-46421: Fix a unittest issue where if the command was invoked as python -m unittest and the filename(s) began with a dot (.), a ValueError is returned. - bpo-40296: Fix supporting generic aliases in pydoc. - Update to 3.10.3: - bpo-46940: Avoid overriding AttributeError metadata information for nested attribute access calls. Patch by Pablo Galindo. - bpo-46852: Rename the private undocumented float.__set_format__() method to float.__setformat__() to fix a typo introduced in Python 3.7. The method is only used by test_float. Patch by Victor Stinner. - bpo-46794: Bump up the libexpat version into 2.4.6 - bpo-46820: Fix parsing a numeric literal immediately (without spaces) followed by “not in” keywords, like in 1not in x. Now the parser only emits a warning, not a syntax error. - bpo-46762: Fix an assert failure in debug builds when a ‘<’, ‘>’, or ‘=’ is the last character in an f-string that’s missing a closing right brace. - bpo-46724: Make sure that all backwards jumps use the JUMP_ABSOLUTE instruction, rather than JUMP_FORWARD with an argument of (2**32)+offset. - bpo-46732: Correct the docstring for the __bool__() method. Patch by Jelle Zijlstra. - bpo-46707: Avoid potential exponential backtracking when producing some syntax errors involving lots of brackets. Patch by Pablo Galindo. - bpo-40479: Add a missing call to va_end() in Modules/_hashopenssl.c. - bpo-46615: When iterating over sets internally in setobject.c, acquire strong references to the resulting items from the set. This prevents crashes in corner-cases of various set operations where the set gets mutated. - bpo-45773: Remove two invalid “peephole” optimizations from the bytecode compiler. - bpo-43721: Fix docstrings of getter, setter, and deleter to clarify that they create a new copy of the property. - bpo-46503: Fix an assert when parsing some invalid N escape sequences in f-strings. - bpo-46417: Fix a race condition on setting a type __bases__ attribute: the internal function add_subclass() now gets the PyTypeObject.tp_subclasses member after calling PyWeakref_NewRef() which can trigger a garbage collection which can indirectly modify PyTypeObject.tp_subclasses. Patch by Victor Stinner. - bpo-46383: Fix invalid signature of _zoneinfo’s module_free function to resolve a crash on wasm32-emscripten platform. - bpo-46070: Py_EndInterpreter() now explicitly untracks all objects currently tracked by the GC. Previously, if an object was used later by another interpreter, calling PyObject_GC_UnTrack() on the object crashed if the previous or the next object of the PyGC_Head structure became a dangling pointer. Patch by Victor Stinner. - bpo-46339: Fix a crash in the parser when retrieving the error text for multi-line f-strings expressions that do not start in the first line of the string. Patch by Pablo Galindo - bpo-46240: Correct the error message for unclosed parentheses when the tokenizer doesn’t reach the end of the source when the error is reported. Patch by Pablo Galindo - bpo-46091: Correctly calculate indentation levels for lines with whitespace character that are ended by line continuation characters. Patch by Pablo Galindo - bpo-43253: Fix a crash when closing transports where the underlying socket handle is already invalid on the Proactor event loop. - bpo-47004: Apply bugfixes from importlib_metadata 4.11.3, including bugfix for EntryPoint.extras, which was returning match objects and not the extras strings. - bpo-46985: Upgrade pip wheel bundled with ensurepip (pip 22.0.4) - bpo-46968: faulthandler: On Linux 5.14 and newer, dynamically determine size of signal handler stack size CPython allocates using getauxval(AT_MINSIGSTKSZ). This changes allows for Python extension’s request to Linux kernel to use AMX_TILE instruction set on Sapphire Rapids Xeon processor to succeed, unblocking use of the ISA in frameworks. - bpo-46955: Expose asyncio.base_events.Server as asyncio.Server. Patch by Stefan Zabka. - bpo-23325: The signal module no longer assumes that SIG_IGN and SIG_DFL are small int singletons. - bpo-46932: Update bundled libexpat to 2.4.7 - bpo-25707: Fixed a file leak in xml.etree.ElementTree.iterparse() when the iterator is not exhausted. Patch by Jacob Walls. - bpo-44886: Inherit asyncio proactor datagram transport from asyncio.DatagramTransport. - bpo-46827: Support UDP sockets in asyncio.loop.sock_connect() for selector-based event loops. Patch by Thomas Grainger. - bpo-46811: Make test suite support Expat >=2.4.5 - bpo-46252: Raise TypeError if ssl.SSLSocket is passed to transport-based APIs. - bpo-46784: Fix libexpat symbols collisions with user dynamically loaded or statically linked libexpat in embedded Python. - bpo-39327: shutil.rmtree() can now work with VirtualBox shared folders when running from the guest operating-system. - bpo-46756: Fix a bug in urllib.request.HTTPPasswordMgr.find_user_password() and urllib.request.HTTPPasswordMgrWithPriorAuth.is_authenticated() which allowed to bypass authorization. For example, access to URI example.org/foobar was allowed if the user was authorized for URI example.org/foo. - bpo-46643: In typing.get_type_hints(), support evaluating stringified ParamSpecArgs and ParamSpecKwargs annotations. Patch by Gregory Beauregard. - bpo-45863: When the tarfile module creates a pax format archive, it will put an integer representation of timestamps in the ustar header (if possible) for the benefit of older unarchivers, in addition to the existing full-precision timestamps in the pax extended header. - bpo-46676: Make typing.ParamSpec args and kwargs equal to themselves. Patch by Gregory Beauregard. - bpo-46672: Fix NameError in asyncio.gather() when initial type check fails. - bpo-46655: In typing.get_type_hints(), support evaluating bare stringified TypeAlias annotations. Patch by Gregory Beauregard. - bpo-45948: Fixed a discrepancy in the C implementation of the xml.etree.ElementTree module. Now, instantiating an xml.etree.ElementTree.XMLParser with a target=None keyword provides a default xml.etree.ElementTree.TreeBuilder target as the Python implementation does. - bpo-46521: Fix a bug in the codeop module that was incorrectly identifying invalid code involving string quotes as valid code. - bpo-46581: Brings ParamSpec propagation for GenericAlias in line with Concatenate (and others). - bpo-46591: Make the IDLE doc URL on the About IDLE dialog clickable. - bpo-46400: expat: Update libexpat from 2.4.1 to 2.4.4 - bpo-46487: Add the get_write_buffer_limits method to asyncio.transports.WriteTransport and to the SSL transport. - bpo-45173: Note the configparser deprecations will be removed in Python 3.12. - bpo-46539: In typing.get_type_hints(), support evaluating stringified ClassVar and Final annotations inside Annotated. Patch by Gregory Beauregard. - bpo-46491: Allow typing.Annotated to wrap typing.Final and typing.ClassVar. Patch by Gregory Beauregard. - bpo-46436: Fix command-line option -d/--directory in module http.server which is ignored when combined with command-line option --cgi. Patch by Géry Ogam. - bpo-41403: Make mock.patch() raise a TypeError with a relevant error message on invalid arg. Previously it allowed a cryptic AttributeError to escape. - bpo-46474: In importlib.metadata.EntryPoint.pattern, avoid potential REDoS by limiting ambiguity in consecutive whitespace. - bpo-46469: asyncio generic classes now return types.GenericAlias in __class_getitem__ instead of the same class. - bpo-46434: pdb now gracefully handles help when __doc__ is missing, for example when run with pregenerated optimized .pyc files. - bpo-46333: The __eq__() and __hash__() methods of typing.ForwardRef now honor the module parameter of typing.ForwardRef. Forward references from different modules are now differentiated. - bpo-46246: Add missing __slots__ to importlib.metadata.DeprecatedList. Patch by Arie Bovenberg. - bpo-46266: Improve day constants in calendar. - Now all constants (MONDAY … SUNDAY) are documented, tested, and added to __all__. - bpo-46232: The ssl module now handles certificates with bit strings in DN correctly. - bpo-43118: Fix a bug in inspect.signature() that was causing it to fail on some subclasses of classes with a __text_signature__ referencing module globals. Patch by Weipeng Hong. - bpo-26552: Fixed case where failing asyncio.ensure_future() did not close the coroutine. Patch by Kumar Aditya. - bpo-21987: Fix an issue with tarfile.TarFile.getmember() getting a directory name with a trailing slash. - bpo-20392: Fix inconsistency with uppercase file extensions in MimeTypes.guess_type(). Patch by Kumar Aditya. - bpo-46080: Fix exception in argparse help text generation if a argparse.BooleanOptionalAction argument’s default is argparse.SUPPRESS and it has help specified. Patch by Felix Fontein. - bpo-44439: Fix .write() method of a member file in ZipFile, when the input data is an object that supports the buffer protocol, the file length may be wrong. - bpo-45703: When a namespace package is imported before another module from the same namespace is created/installed in a different sys.path location while the program is running, calling the importlib.invalidate_caches() function will now also guarantee the new module is noticed. - bpo-24959: Fix bug where unittest sometimes drops frames from tracebacks of exceptions raised in tests. - bpo-44791: Fix substitution of ParamSpec in Concatenate with different parameter expressions. Substitution with a list of types returns now a tuple of types. Substitution with Concatenate returns now a Concatenate with concatenated lists of arguments. - bpo-14156: argparse.FileType now supports an argument of ‘-’ in binary mode, returning the .buffer attribute of sys.stdin/sys.stdout as appropriate. Modes including ‘x’ and ‘a’ are treated equivalently to ‘w’ when argument is ‘-’. Patch contributed by Josh Rosenberg - bpo-46463: Fixes escape4chm.py script used when building the CHM documentation file - bpo-46913: Fix test_faulthandler.test_sigfpe() if Python is built with undefined behavior sanitizer (UBSAN): disable UBSAN on the faulthandler_sigfpe() function. Patch by Victor Stinner. - bpo-46708: Prevent default asyncio event loop policy modification warning after test_asyncio execution. - bpo-46678: The function make_legacy_pyc in Lib/test/support/import_helper.py no longer fails when PYTHONPYCACHEPREFIX is set to a directory on a different device from where tempfiles are stored. - bpo-46616: Ensures test_importlib.test_windows cleans up registry keys after completion. - bpo-44359: test_ftplib now silently ignores socket errors to prevent logging unhandled threading exceptions. Patch by Victor Stinner. - bpo-46542: Fix a Python crash in test_lib2to3 when using Python built in debug mode: limit the recursion limit. Patch by Victor Stinner. - bpo-46576: test_peg_generator now disables compiler optimization when testing compilation of its own C extensions to significantly speed up the testing on non-debug builds of CPython. - bpo-46542: Fix test_json tests checking for RecursionError: modify these tests to use support.infinite_recursion(). Patch by Victor Stinner. - bpo-13886: Skip test_builtin PTY tests on non-ASCII characters if the readline module is loaded. The readline module changes input() behavior, but test_builtin is not intented to test the readline module. Patch by Victor Stinner. - bpo-38472: Fix GCC detection in setup.py when cross-compiling. The C compiler is now run with LC_ALL=C. Previously, the detection failed with a German locale. - bpo-46513: configure no longer uses AC_C_CHAR_UNSIGNED macro and pyconfig.h no longer defines reserved symbol __CHAR_UNSIGNED__. - bpo-45296: Clarify close, quit, and exit in IDLE. In the File menu, ‘Close’ and ‘Exit’ are now ‘Close Window’ (the current one) and ‘Exit’ is now ‘Exit IDLE’ (by closing all windows). In Shell, ‘quit()’ and ‘exit()’ mean ‘close Shell’. If there are no other windows, this also exits IDLE. - bpo-45447: Apply IDLE syntax highlighting to pyi files. Patch by Alex Waygood and Terry Jan Reedy. - bpo-46433: The internal function _PyType_GetModuleByDef now correctly handles inheritance patterns involving static types. - bpo-14916: Fixed bug in the tokenizer that prevented PyRun_InteractiveOne from parsing from the provided FD.- (bsc#1196784, CVE-2022-25236) Rename patch: support-expat-245.patch to support-expat-CVE-2022-25236-patched.patch and update the patch to detect expat >= 2.4.4 instead of >= 2.4.5 as it was fully patched against CVE-2022-25236.- Add patch support-expat-245.patch: * Support Expat >= 2.4.5- bsc#1195831 Obsolete older "most modern" versions of python packages (python39 for python310 and so forth). For next versions it is necessary just to edit the macro.- Remove second superfluous BR rpm-build-python- Remove second superfluous BR rpm-build-python - Add fix_configure_rst.patch, which removes duplicate link targets and make documentation with old Sphinx in SLE - Skip test_capi (bsc#1195140 and bpo#37169)- Update to 3.10.2: Bugfix only - bpo#46347 memory leak in PyEval_EvalCodeEx (especially visible with Cython code) - and many others- Upgrade to 3.10.1 (jsc#SLE-18038): - PEP 623 – Deprecate and prepare for the removal of the wstr member in PyUnicodeObject. - PEP 604 – Allow writing union types as X | Y - PEP 612 – Parameter Specification Variables - PEP 626 – Precise line numbers for debugging and other tools. - PEP 618 – Add Optional Length-Checking To zip. - bpo-12782: Parenthesized context managers are now officially allowed. - PEP 632 – Deprecate distutils module. - PEP 613 – Explicit Type Aliases - PEP 634 – Structural Pattern Matching: Specification - PEP 635 – Structural Pattern Matching: Motivation and Rationale - PEP 636 – Structural Pattern Matching: Tutorial - PEP 644 – Require OpenSSL 1.1.1 or newer - PEP 624 – Remove Py_UNICODE encoder APIs - PEP 597 – Add optional EncodingWarning - Patches readjusted: - bpo-31046_ensurepip_honours_prefix.patch - python-3.3.0b1-fix_date_time_compiler.patch- Remove pdb_adjust_breakpoints.patch and instead just adjust location of the test breakpoint in Lib/test/test_pdb.py via sed, because we have shortened Lib/pdb.py by removing the shebang (bpo#45964).- Add pdb_adjust_breakpoints.patch fixing expectd results in test_pdb_breakpoints_preserved_across_interactive_sessions (bpo#45964).- Remove shebangs from from python-base libraries in _libdir (bsc#1193179). - Readjust patches: - bpo-31046_ensurepip_honours_prefix.patch - decimal.patch - python-3.3.0b1-fix_date_time_compiler.patch- Move rpm-build-python construct to correct place.- BuildRequire rpm-build-python: The provider to inject python(abi) has been moved there. rpm-build pulls rpm-build-python automatically in when building anything against python3-base, but this implies that the initial build of python3-base does not trigger the automatic installation.- Final release of 3.10.0: Complete list on https://www.python.org/downloads/release/python-3100/, but highlights are: - PEP 623 – Deprecate and prepare for the removal of the wstr member in PyUnicodeObject. - PEP 604 – Allow writing union types as X | Y - PEP 612 – Parameter Specification Variables - PEP 626 – Precise line numbers for debugging and other tools. - PEP 618 – Add Optional Length-Checking To zip. - PEP 632 – Deprecate distutils module. - PEP 613 – Explicit Type Aliases - PEP 634 – Structural Pattern Matching: Specification - PEP 635 – Structural Pattern Matching: Motivation and Rationale - PEP 636 – Structural Pattern Matching: Tutorial - PEP 644 – Require OpenSSL 1.1.1 or newer - PEP 624 – Remove Py_UNICODE encoder APIs - PEP 597 – Add optional EncodingWarning - bpo-12782: Parenthesized context managers are now officially allowed.- Switch on option --with-system-libmpdec (bsc#1189356).- Reenable profileopt with qemu emulation, test_faulthandler is no longer run during profiling- test_faulthandler is still problematic under qemu linux-user emulation, disable it there- Update to 3.10.0rc1 (the penultimate prerelease), which contains plenty of small bugfixes among others: - bpo#38605: from __future__ import annotations (PEP 563) used to be on this list in previous pre-releases but it has been postponed to Python 3.11 due to some compatibility concerns. - bpo-44600: Fix incorrect line numbers while tracing some failed patterns in match statements. Patch by Charles Burkland. - plenty of modifications in types.Union- Update to 3.10.0b4: https://docs.python.org/3.10/whatsnew/changelog.html#python-3-10-0-beta-4 - Remove python3-imp-returntype.patch which has been upstreamed.- Update to 3.10.0b2: - PEP 623 -- Deprecate and prepare for the removal of the wstr member in PyUnicodeObject. - PEP 604 -- Allow writing union types as X | Y - PEP 612 -- Parameter Specification Variables - PEP 626 -- Precise line numbers for debugging and other tools. - PEP 618 -- Add Optional Length-Checking To zip. - bpo-12782: Parenthesized context managers are now officially allowed. - PEP 632 -- Deprecate distutils module. - PEP 613 -- Explicit Type Aliases - PEP 634 -- Structural Pattern Matching: Specification - PEP 635 -- Structural Pattern Matching: Motivation and Rationale - PEP 636 -- Structural Pattern Matching: Tutorial - PEP 644 -- Require OpenSSL 1.1.1 or newer - PEP 624 -- Remove Py_UNICODE encoder APIs - PEP 597 -- Add optional EncodingWarning - Removed patches (assumed upstream): - sphinx-update-removed-function.patch- Revert previous skip over test_capi - Add skip-test_pyobject_freed_is_freed.patch to skip failing test on SLE-15.- allow build with Sphinx >= 3.x- Exclude test_capi on Leap (test fails there)- Stop providing "python" symbol (bsc#1185588), which means python2 currently.- Update to 3.9.5: * Security - bpo-43434: Creating a sqlite3.Connection object now also produces a sqlite3.connect auditing event. Previously this event was only produced by sqlite3.connect() calls. Patch by Erlend E. Aasland. - bpo-43882: The presence of newline or tab characters in parts of a URL could allow some forms of attacks. - Following the controlling specification for URLs defined by WHATWG urllib.parse() now removes ASCII newlines and tabs from URLs, preventing such attacks. - bpo-43472: Ensures interpreter-level audit hooks receive the cpython.PyInterpreterState_New event when called through the _xxsubinterpreters module. - bpo-36384: ipaddress module no longer accepts any leading zeros in IPv4 address strings. Leading zeros are ambiguous and interpreted as octal notation by some libraries. For example the legacy function socket.inet_aton() treats leading zeros as octal notatation. glibc implementation of modern inet_pton() does not accept any leading zeros. For a while the ipaddress module used to accept ambiguous leading zeros. - bpo-43075: Fix Regular Expression Denial of Service (ReDoS) vulnerability in urllib.request.AbstractBasicAuthHandler. The ReDoS-vulnerable regex has quadratic worst-case complexity and it allows cause a denial of service when identifying crafted invalid RFCs. This ReDoS issue is on the client side and needs remote attackers to control the HTTP server. - bpo-42800: Audit hooks are now fired for frame.f_code, traceback.tb_frame, and generator code/frame attribute access. * Core and Builtins - bpo-43105: Importlib now resolves relative paths when creating module spec objects from file locations. - bpo-42924: Fix bytearray repetition incorrectly copying data from the start of the buffer, even if the data is offset within the buffer (e.g. after reassigning a slice at the start of the bytearray to a shorter byte string). * Library - bpo-43993: Update bundled pip to 21.1.1. - bpo-43937: Fixed the turtle module working with non-default root window. - bpo-43930: Update bundled pip to 21.1 and setuptools to 56.0.0 - bpo-43920: OpenSSL 3.0.0: load_verify_locations() now returns a consistent error message when cadata contains no valid certificate. - bpo-43607: urllib can now convert Windows paths with \\?\ prefixes into URL paths. - bpo-43284: platform.win32_ver derives the windows version from sys.getwindowsversion().platform_version which in turn derives the version from kernel32.dll (which can be of a different version than Windows itself). Therefore change the platform.win32_ver to determine the version using the platform module’s _syscmd_ver private function to return an accurate version. - bpo-42248: [Enum] ensure exceptions raised in _missing__ are released - bpo-43799: OpenSSL 3.0.0: define OPENSSL_API_COMPAT 1.1.1 to suppress deprecation warnings. Python requires OpenSSL 1.1.1 APIs. - bpo-43794: Add ssl.OP_IGNORE_UNEXPECTED_EOF constants (OpenSSL 3.0.0) - bpo-43789: OpenSSL 3.0.0: Don’t call the password callback function a second time when first call has signaled an error condition. - bpo-43788: The header files for ssl error codes are now OpenSSL version-specific. Exceptions will now show correct reason and library codes. The make_ssl_data.py script has been rewritten to use OpenSSL’s text file with error codes. - bpo-43655: tkinter dialog windows are now recognized as dialogs by window managers on macOS and X Window. - bpo-43534: turtle.textinput() and turtle.numinput() create now a transient window working on behalf of the canvas window. - bpo-43522: Fix problem with hostname_checks_common_name. OpenSSL does not copy hostflags from struct SSL_CTX to struct SSL. - bpo-42967: Allow bytes separator argument in urllib.parse.parse_qs and urllib.parse.parse_qsl when parsing str query strings. Previously, this raised a TypeError. - bpo-43176: Fixed processing of a dataclass that inherits from a frozen dataclass with no fields. It is now correctly detected as an error. - bpo-41735: Fix thread locks in zlib module may go wrong in rare case. Patch by Ma Lin. - bpo-36470: Fix dataclasses with InitVars and replace(). Patch by Claudiu Popa. - bpo-32745: Fix a regression in the handling of ctypes’ ctypes.c_wchar_p type: embedded null characters would cause a ValueError to be raised. Patch by Zackery Spytz. * Documentation - bpo-43959: The documentation on the PyContextVar C-API was clarified. - bpo-43938: Update dataclasses documentation to express that FrozenInstanceError is derived from AttributeError. - bpo-43755: Update documentation to reflect that unparenthesized lambda expressions can no longer be the expression part in an if clause in comprehensions and generator expressions since Python 3.9. - bpo-43739: Fixing the example code in Doc/extending/extending.rst to declare and initialize the pmodule variable to be of the right type. * Tests - bpo-43961: Fix test_logging.test_namer_rotator_inheritance() on Windows: use os.replace() rather than os.rename(). Patch by Victor Stinner. - bpo-43842: Fix a race condition in the SMTP test of test_logging. Don’t close a file descriptor (socket) from a different thread while asyncore.loop() is polling the file descriptor. Patch by Victor Stinner. - bpo-43811: Tests multiple OpenSSL versions on GitHub Actions. Use ccache to speed up testing. - bpo-43791: OpenSSL 3.0.0: Disable testing of legacy protocols TLS 1.0 and 1.1. Tests are failing with TLSV1_ALERT_INTERNAL_ERROR. - Refreshed patches: - bpo-31046_ensurepip_honours_prefix.patch - python-3.3.0b1-fix_date_time_compiler.patch - Add vendorized files from bluez-devel to enable building support for Bluetooth.- Make sure to close the import_failed.map file after the exception has been raised in order to avoid ResourceWarnings when the failing import is part of a try...except block.- Update to 3.9.4: - bpo#43710: Reverted the fix for https://bugs.python.org/issue42500 as it changed the PyThreadState struct size and broke the 3.9.x ABI in the 3.9.3 release (visible on 32-bit platforms using binaries compiled using an earlier version of Python 3.9.x headers). - bpo#26053: Fixed bug where the pdb interactive run command echoed the args from the shell command line, even if those have been overridden at the pdb prompt. - bpo#42988 (bsc#1183374) CVE-2021-3426: Remove the getfile feature of the pydoc module which could be abused to read arbitrary files on the disk (directory traversal vulnerability). Moreover, even source code of Python modules can contain sensitive data like passwords. Vulnerability reported by David Schwörer. - bpo#43285: ftplib no longer trusts the IP address value returned from the server in response to the PASV command by default. This prevents a malicious FTP server from using the response to probe IPv4 address and port combinations on the client network. Code that requires the former vulnerable behavior may set a trust_server_pasv_ipv4_address attribute on their ftplib.FTP instances to True to re-enable it. - bpo#43439: Add audit hooks for gc.get_objects(), gc.get_referrers() and gc.get_referents(). Patch by Pablo Galindo. - bpo#43660: Fix crash that happens when replacing sys.stderr with a callable that can remove the object while an exception is being printed. Patch by Pablo Galindo. - bpo#43555: Report the column offset for SyntaxError for invalid line continuation characters. Patch by Pablo Galindo. - bpo#43517: Fix misdetection of circular imports when using from pkg.mod import attr, which caused false positives in non-trivial multi-threaded code. - bpo#35883: Python no longer fails at startup with a fatal error if a command line argument contains an invalid Unicode character. The Py_DecodeLocale() function now escapes byte sequences which would be decoded as Unicode characters outside the [U+0000; U+10ffff] range. - bpo#43406: Fix a possible race condition where PyErr_CheckSignals tries to execute a non-Python signal handler. - bpo#42500: Improve handling of exceptions near recursion limit. Converts a number of Fatal Errors in RecursionErrors. - bpo#43433: xmlrpc.client.ServerProxy no longer ignores query and fragment in the URL of the server. - bpo#35930: Raising an exception raised in a “future” instance will create reference cycles. - bpo#43577: Fix deadlock when using ssl.SSLContext debug callback with ssl.SSLContext.sni_callback(). - bpo#43521: ast.unparse can now render NaNs and empty sets. - bpo#43423: subprocess.communicate() no longer raises an IndexError when there is an empty stdout or stderr IO buffer during a timeout on Windows. - bpo#27820: Fixed long-standing bug of smtplib.SMTP where doing AUTH LOGIN with initial_response_ok=False will fail. The cause is that SMTP.auth_login _always_ returns a password if provided with a challenge string, thus non-compliant with the standard for AUTH LOGIN. Also fixes bug with the test for smtpd. - bpo#43332: Improves the networking efficiency of http.client when using a proxy via set_tunnel(). Fewer small send calls are made during connection setup. - bpo#43399: Fix ElementTree.extend not working on iterators when using the Python implementation - bpo#43316: The python -m gzip command line application now properly fails when detecting an unsupported extension. It exits with a non-zero exit code and prints an error message to stderr. - bpo#43260: Fix TextIOWrapper can not flush internal buffer forever after very large text is written. - bpo#42782: Fail fast in shutil.move() to avoid creating destination directories on failure. - bpo#37193: Fixed memory leak in socketserver.ThreadingMixIn introduced in Python 3.7. - bpo#43199: Answer “Why is there no goto?” in the Design and History FAQ. - bpo#43407: Clarified that a result from time.monotonic(), time.perf_counter(), time.process_time(), or time.thread_time() can be compared with the result from any following call to the same function - not just the next immediate call. - bpo#27646: Clarify that ‘yield from ’ works with any iterable, not just iterators. - bpo#36346: Update some deprecated unicode APIs which are documented as “will be removed in 4.0” to “3.12”. See PEP 623 for detail. - bpo#37945: Fix test_getsetlocale_issue1813() of test_locale: skip the test if setlocale() fails. Patch by Victor Stinner. - bpo#41561: Add workaround for Ubuntu’s custom OpenSSL security level policy. - bpo#43288: Fix test_importlib to correctly skip Unicode file tests if the fileystem does not support them. - bpo#43617: Improve configure.ac: Check for presence of autoconf-archive package and remove our copies of M4 macros. - bpo#42225: Document that IDLE can fail on Unix either from misconfigured IP masquerage rules or failure displaying complex colored (non-ascii) characters. - bpo#43283: Document why printing to IDLE’s Shell is often slower than printing to a system terminal and that it can be made faster by pre-formatting a single string before printing.- Update to 3.9.2: - bpo#42938 (bsc#1181126): Avoid static buffers when computing the repr of ctypes.c_double and ctypes.c_longdouble values. This issue was assigned CVE-2021-3177. - bpo#42967 (bsc#1182379): Fix web cache poisoning vulnerability by defaulting the query args separator to &, and allowing the user to choose a custom separator. This issue was assigned CVE-2021-23336. - Upstreamed patches were removed: - CVE-2021-3177-buf_ovrfl_PyCArg_repr.patch - bsc1167501-invalid-alignment.patch - skip_random_failing_tests.patch - CVE-2019-5010-null-defer-x509-cert-DOS.patch- Add Obsoletes for python3-base when primary interpreter is set to properly replace it during upgrades. (bsc#1181324)- Update to 3.9.1: Security bugs: - Prevented potential DoS attack via CPU and RAM exhaustion when processing malformed Apple Property List files in binary format. - The plistlib module no longer accepts entity declarations in XML plist files to avoid XML vulnerabilities. This should not affect users as entity declarations are not used in regular plist files. - Add volatile to the accumulator variable in hmac.compare_digest, making constant-time-defeating optimizations less likely. Core and Builtins - Allow assignment expressions in set literals and set comprehensions as per PEP 572. Patch by Pablo Galindo. - Fix a regression introduced by the new parser, where an unparenthesized walrus operator was not allowed within generator expressions. - types.GenericAlias objects can now be the targets of weakrefs. - Fixed a bug in the PEG parser that was causing crashes in debug mode. Now errors are checked in left-recursive rules to avoid cases where such errors do not get handled in time and appear as long-distance crashes in other places. - Fixed a possible crash in the PEG parser when checking for the ‘!=’ token in the barry_as_flufl rule. Patch by Pablo Galindo. - Fix handling of errors during creation of PyFunctionObject, which resulted in operations on uninitialized memory. Patch by Yonatan Goldschmidt. - Fix a bug in the parser, where a curly brace following a primary didn’t fail immediately. This led to invalid expressions like a {b} to throw a SyntaxError with a wrong offset, or invalid expressions ending with a curly brace like a { to not fail immediately in the REPL. - Fix possible buffer overflow in the new parser when checking for continuation lines. Patch by Pablo Galindo. - Run the parser two times. On the first run, disable all the rules that only generate better error messages to gain performance. If there’s a parse failure, run the parser a second time with those enabled. - Document the default implementation of object.__eq__. - Fix peephole optimizer misoptimize conditional jump + JUMP_IF_NOT_EXC_MATCH pair. - The garbage collector now tracks all user-defined classes. Patch by Brandt Bucher. - Fixed potential issues with removing not completely initialized module from sys.modules when import fails. - Star-unpacking is now allowed for with item’s targets in the PEG parser. - Fixed stack overflow in issubclass() and isinstance() when getting the __bases__ attribute leads to infinite recursion. - When loading a native module and a load failure occurs, prevent a possible UnicodeDecodeError when not running in a UTF-8 locale by decoding the load error message using the current locale’s encoding. - Correctly count control blocks in ‘except’ in compiler. Ensures that a syntax error, rather a fatal error, occurs for deeply nested, named exception handlers. Library - types.GenericAlias will now raise a TypeError when attempting to initialize with a keyword argument. Previously, this would cause the interpreter to crash if the interpreter was compiled with debug symbols. This does not affect interpreters compiled for release. Patch by Ken Jin. - CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed. Replace the special purpose getallmatchingheaders with generic get_all method and add relevant tests. - inspect.findsource() now raises OSError instead of IndexError when co_lineno of a code object is greater than the file length. This can happen, for example, when a file is edited after it was imported. PR by Irit Katriel. - Fix handling of trailing comments by inspect.getsource(). - ChainMap.__iter__ no longer calls __getitem__ on underlying maps - TracebackException no longer holds a reference to the exception’s traceback object. Consequently, instances of TracebackException for equivalent but non-equal exceptions now compare as equal. - We fixed an issue in pickle.whichmodule in which importing multiprocessing could change the how pickle identifies which module an object belongs to, potentially breaking the unpickling of those objects. - Clarify the error message for asyncio.IncompleteReadError when expected is None. - Extracting a symlink from a tarball should succeed and overwrite the symlink if it already exists. The fix is to remove the existing file or symlink before extraction. Based on patch by Chris AtLee, Jeffrey Kintscher, and Senthil Kumaran. - Fixed tkinter.ttk.Style.map(). The function accepts now the representation of the default state as empty sequence (as returned by Style.map()). The structure of the result is now the same on all platform and does not depend on the value of wantobjects. - Fix various issues with typing.Literal parameter handling (flatten, deduplicate, use type to cache key). Patch provided by Yurii Karabas. - Fix the threading.Thread class at fork: do nothing if the thread is already stopped (ex: fork called at Python exit). Previously, an error was logged in the child process. - The onerror callback from shutil.rmtree now receives correct function when os.open fails. - Fix os.sendfile() on illumos. - Fixed writing binary Plist files larger than 4 GiB. - The repr() of typing types containing Generic Alias Types previously did not show the parameterized types in the GenericAlias. They have now been changed to do so. - webbrowser: Ignore NotADirectoryError when calling xdg-settings. - binhex.binhex() consisently writes macOS 9 line endings. - Fix a stack overflow error for asyncio Task or Future repr(). - The overflow occurs under some circumstances when a Task or Future recursively returns itself. - Fix memory leak in subprocess.Popen() in case an uid (gid) specified in user (group, extra_groups) overflows uid_t (gid_t). - Improve asyncio.wait function to create the futures set just one time. - InvalidFileException and RecursionError are now the only errors caused by loading malformed binary Plist file (previously ValueError and TypeError could be raised in some specific cases). - Pickling heap types implemented in C with protocols 0 and 1 raises now an error instead of producing incorrect data. - plistlib: fix parsing XML plists with hexadecimal integer values - Fix an incorrectly formatted error from _codecs.charmap_decode() when called with a mapped value outside the range of valid Unicode code points. PR by Max Bernstein. - Fix pickling pure Python datetime.time subclasses. Patch by Dean Inwood. - Fixed a bug that was causing ctypes.util.find_library() to return None when triying to locate a library in an environment when gcc>=9 is available and ldconfig is not. Patch by Pablo Galindo - C14N 2.0 serialisation in xml.etree.ElementTree failed for unprefixed attributes when a default namespace was defined. - Fix a bug in the symtable module that was causing module-scope global variables to not be reported as both local and global. Patch by Pablo Galindo. - str() for the type attribute of the tkinter.Event object always returns now the numeric code returned by Tk instead of the name of the event type. - fix tkinter.EventType Enum so all members are strings, and none are tuples - Fix SQLite3 segfault when backing up closed database. Patch contributed by Peter David McCormick. - Fix the tarfile module to write only basename of TAR file to GZIP compression header. - Allow ctypes.wintypes to be imported on non-Windows systems. - shutil.which() now ignores empty entries in PATHEXT instead of treating them as a match. - Fix time-of-check/time-of-action issue in subprocess.Popen.send_signal. - Fix --outfile for cProfile / profile not writing the output file in the original directory when the program being profiled changes the working directory. PR by Anthony Sottile. - ZipFile truncates files to avoid corruption when a shorter comment is provided in append (“a”) mode. Patch by Jan Mazur. - Fixed KeyError exception when flattening an email to a string attempts to replace a non-existent Content-Transfer-Encoding header. Documentation - Fix the URL for the IMAP protocol documents. - Document __format__ functionality for IP addresses. - Clarify that subscription expressions are also valid for certain classes and types in the standard library, and for user-defined classes and types if the classmethod __class_getitem__() is provided. - Documented generic alias type and types.GenericAlias. Also added an entry in glossary for generic types. - In Programming FAQ “Sequences (Tuples/Lists)” section, add “How do you remove multiple items from a list”. - Fix RemovedInSphinx40Warning when building the documentation. Patch by Dong-hee Na. - Update the refcounts info of PyType_FromModuleAndSpec. - Fix tarfile’s extractfile documentation - Document some restrictions on the default string representations of numeric classes. Tests - Reenable test_gdb on gdb 9.2 and newer: https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb 10.1. - Fix test_asyncio.test_call_later() race condition: don’t measure asyncio performance in the call_later() unit test. The test failed randomly on the CI. - Include _testinternalcapi module in Windows installer for test suite - Fix test_logging.test_race_between_set_target_and_flush(): the test now waits until all threads complete to avoid leaking running threads. - Avoid a test failure in test_lib2to3 if the module has already imported at the time the test executes. Patch by Pablo Galindo. - Tests for CJK codecs no longer call eval() on content received via HTTP. - Fix test_site.test_license_exists_at_url(): call urllib.request.urlcleanup() to reset the global urllib.request._opener. Patch by Victor Stinner. - test_ssl: skip test_min_max_version_mismatch when TLS 1.0 is not available - Add tests for SIGINT handling in the runpy module. - Fixed a failure in test_tk.test_widgets.ScaleTest happening when executing the test with Tk 8.6.10. Build - Fix a race condition in “make regen-all” when make -jN option is used to run jobs in parallel. The clinic.py script now only use atomic write to write files. Moveover, generated files are now left unchanged if the content does not change, to not change the file modification time. - Update Py_UNREACHABLE to use __builtin_unreachable() if only the compiler is able to use it. Patch by Dong-hee Na. - Addressed three compiler warnings found by undefined behavior sanitizer (ubsan). IDLE - Fix reporting offset of the RE error in searchengine. - Get docstrings for IDLE calltips more often by using inspect.getdoc. - Mostly finish using ttk widgets, mainly for editor, settings, and searches. Some patches by Mark Roseman. - Use ‘IDLE Shell’ as shell title - Rewrite the Calltips doc section. - In calltips, stop reminding that ‘/’ marks the end of positional-only arguments. - Typing opening and closing parentheses inside the parentheses of a function call will no longer cause unnecessary “flashing” off and on of an existing open call-tip, e.g. when typed in a string literal. C API - Fix potential crash in deallocating method objects when dynamically allocated PyMethodDef’s lifetime is managed through the self argument of a PyCFunction. - Py_FileSystemDefaultEncodeErrors and Py_UTF8Mode are available again in limited API. - Readjustet and reapplied patches: - CVE-2021-3177-buf_ovrfl_PyCArg_repr.patch - bpo-31046_ensurepip_honours_prefix.patch - python-3.3.0b1-fix_date_time_compiler.patch - skip_random_failing_tests.patch - sphinx-update-removed-function.patch- Add CVE-2021-3177-buf_ovrfl_PyCArg_repr.patch fixing bsc#1181126 (CVE-2021-3177) buffer overflow in PyCArg_repr in _ctypes/callproc.c, which may lead to remote code execution.- (bsc#1180125) We really don't Require python-rpm-macros package. Unnecessary dependency.- Make python39-doc building again - Add no-skipif-doctests.patch, because SLE-15 version of Sphinx doesn't know about skipif directive in doctests.- Update sphinx-update-removed-function.patch patch to the latest version in python36.- Last try before this results in an editwar: * remove importlib_resources and importlib-metadata provides/obsoletes * import importlib_resources is not the same as import importlib.resources, same for metadata * The backport packages from PyPI needed for older flavors are specified as such for setuptools or in pyproject.toml. If a package requires them they typically add them with a python version qualifier and the packages have their own version numbers.- Add patch sphinx-update-removed-function.patch to no longer call a now removed function and to make documentation build independent of the Sphinx version (bsc#1179630, gh#python/cpython#13236).- Don't require packages which break build on SLE-15 although we really don't need them (python3-python-docs-theme and python3-sphinxcontrib-qthelp).- Fix build with RPM 4.16: error: bare words are no longer supported, please use "...": x86 == ppc.- Update to the final version 3.9.0: Complete changelog with all (many) changes from previous version is on https://docs.python.org/release/3.9.0/whatsnew/3.9.html Changes from the previous RC versions (not that many) are on https://docs.python.org/release/3.9.0/whatsnew/changelog.html#changelog- Buildrequire timezone only for general flavor. It's used in this flavor for the test suite.- Update to 3.9.0rc1: * Core and Builtins - bpo-38156: Handle interrupts that come after EOF correctly in PyOS_StdioReadline. * Library - bpo-41497: Fix potential UnicodeDecodeError in dis module. - bpo-41490: Update ensurepip to install pip 20.2.1 and setuptools 49.2.1. - bpo-41467: On Windows, fix asyncio recv_into() return value when the socket/pipe is closed (BrokenPipeError): return 0 rather than an empty byte string (b''). - bpo-41425: Make tkinter doc example runnable. - bpo-41384: Raise TclError instead of TypeError when an unknown option is passed to tkinter.OptionMenu. - bpo-38731: Fix NameError in command-line interface of py_compile. - bpo-41317: Use add_done_callback() in asyncio.loop.sock_accept() to unsubscribe reader early on cancellation. - bpo-41364: Reduce import overhead of uuid. - bpo-41341: Recursive evaluation of typing.ForwardRef in get_type_hints. - bpo-41182: selector: use DefaultSelector based upon implementation - bpo-40726: Handle cases where the end_lineno is None on ast.increment_lineno(). * Documentation - bpo-41045: Add documentation for debug feature of f-strings. - bpo-41314: Changed the release when from __future__ import annotations becomes the default from 4.0 to 3.10 (following a change in PEP 563). * Windows - bpo-41492: Fixes the description that appears in UAC prompts. - bpo-40948: Improve post-install message to direct people to the “py” command. - bpo-41412: The installer will now fail to install on Windows 7 and Windows 8. Further, the UCRT dependency is now always downloaded on demand. - bpo-40741: Update Windows release to include SQLite 3.32.3. * IDLE - bpo-41468: Improve IDLE run crash error message (which users should never see). - bpo-41373: Save files loaded with no line ending, as when blank, or different line endings, by setting its line ending to the system default. Fix regression in 3.8.4 and 3.9.0b4.- Synchronize formatting and fixes with python38.- Increase testsuite timeout to account for super long running test_peg_generator- Removed CVE-2019-20907_tarfile-inf-loop.patch: fixed in upstream - Removed recursion.tar: contained in upstream - Update to 3.9.0b5: - bpo-41304: Fixes python3x._pth being ignored on Windows, caused by the fix for bpo-29778 (CVE-2020-15801). - bpo-41162: Audit hooks are now cleared later during finalization to avoid missing events. - bpo-29778: Ensure python3.dll is loaded from correct locations when Python is embedded (CVE-2020-15523). - bpo-39603: Prevent http header injection by rejecting control characters in http.client.putrequest(…). - bpo-41295: Resolve a regression in CPython 3.8.4 where defining “__setattr__” in a multi-inheritance setup and calling up the hierarchy chain could fail if builtins/extension types were involved in the base types. - bpo-41247: Always cache the running loop holder when running asyncio.set_running_loop. - bpo-41252: Fix incorrect refcounting in _ssl.c’s _servername_callback(). - bpo-41215: Use non-NULL default values in the PEG parser keyword list to overcome a bug that was ' preventing Python from being properly compiled when using the XLC compiler. Patch by Pablo Galindo. - bpo-41218: Python 3.8.3 had a regression where compiling with ast.PyCF_ALLOW_TOP_LEVEL_AWAIT would aggressively mark list comprehension with CO_COROUTINE. Now only list comprehension making use of async/await will tagged as so. - bpo-41175: Guard against a NULL pointer dereference within bytearrayobject triggered by the bytearray() + bytearray() operation. - bpo-39960: The “hackcheck” that prevents sneaking around a type’s __setattr__() by calling the superclass method was rewritten to allow C implemented heap types. - bpo-41288: Unpickling invalid NEWOBJ_EX opcode with the C implementation raises now UnpicklingError instead of crashing. - bpo-39017: Avoid infinite loop when reading specially crafted TAR files using the tarfile module (CVE-2019-20907, bsc#1174091). - bpo-41235: Fix the error handling in ssl.SSLContext.load_dh_params(). - bpo-41207: In distutils.spawn, restore expectation that DistutilsExecError is raised when the command is not found. - bpo-39168: Remove the __new__ method of typing.Generic. - bpo-41194: Fix a crash in the _ast module: it can no longer be loaded more than once. It now uses a global state rather than a module state. - bpo-39384: Fixed email.contentmanager to allow set_content() to set a null string. - bpo-41300: Save files with non-ascii chars. Fix regression released in 3.9.0b4 and 3.8.4. - bpo-37765: Add keywords to module name completion list. Rewrite Completions section of IDLE doc. - bpo-40170: Revert PyType_HasFeature() change: it reads again directly the PyTypeObject.tp_flags member when the limited C API is not used, rather than always calling PyType_GetFlags() which hides implementation details.- Add CVE-2019-20907_tarfile-inf-loop.patch fixing bsc#1174091 (CVE-2019-20907, bpo#39017) avoiding possible infinite loop in specifically crafted tarball. Add recursion.tar as a testing tarball for the patch.- Changed bpo-31046_ensurepip_honours_prefix.patch to include fix from py3.8- Spec file fixes - Re-added subprocess-raise-timeout.patch: now compatible - Removed bpo34022-stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch: contained in upstream- Fix minor issues found in the staging.- Do not set ourselves as primary interpreter- Update to 3.9.0b4: - PEP 584, Union Operators in dict - PEP 585, Type Hinting Generics In Standard Collections - PEP 593, Flexible function and variable annotations - PEP 602, Python adopts a stable annual release cadence - PEP 615, Support for the IANA Time Zone Database in the Standard Library - PEP 616, String methods to remove prefixes and suffixes - PEP 617, New PEG parser for CPython - bpo#38379, garbage collection does not block on resurrected objects; - bpo#38692, os.pidfd_open added that allows process management without races and signals; - bpo#39926, Unicode support updated to version 13.0.0; - bpo#1635741, when Python is initialized multiple times in the same process, it does not leak memory anymore; - A number of Python builtins (range, tuple, set, frozenset, list, dict) are now sped up using PEP 590 vectorcall; - A number of Python modules (_abc, audioop, _bz2, _codecs, _contextvars, _crypt, _functools, _json, _locale, operator, resource, time, _weakref) now use multiphase initialization as defined by PEP 489; - A number of standard library modules (audioop, ast, grp, _hashlib, pwd, _posixsubprocess, random, select, struct, termios, zlib) are now using the stable ABI defined by PEP 384. - Remove upstreamed patches: - F00102-lib64.patch - SUSE-FEDORA-multilib.patch - OBS_dev-shm.patch - subprocess-raise-timeout.patch - bpo36302-sort-module-sources.patch - bpo40784-Fix-sqlite3-deterministic-test.patch- Update pre_checkin.sh and regenerate- Convert few dependencies to their pkgconfig counterparts- Remove release requirement on libpython, it is not really needed to be equal as the abi changes with versions- Add provides python3-bla on all the subpkgs in case we are primary provider of the functionality- Remove unversioned files from devel subpkg too - Remove main python3 files from -base based whether we are primary interpreter or not - Fix idle to be co-installable - Add condition to be primary to provide/obsolete python3-* - Fix doc to build in versioned folder so the pythons can be installed next to each other- Revert the full versioning of calls on the macros. These are generic so they should really just call python3 X- For the doc package we can build with generic flavor, we don't need the our-interpreter based one- Add provides for pytohn3X-typing/etc to allow BR on those still to work when needed- Change macros.python3 to use full versioned 3.8 instead of just 3 for python interpreter- Reduce some now unused conditionals- Redux the -base dependencies to match up pre-merge layout- Generate baselibs in pre-checkin too- Generate the importlib-failed using pre_checking again - Add back the information about skipped tests on the pre_checkin output- Use %python_pkg_name instead of hardcoding python3 where applicable - Sort out preamble with spec-cleaner- Calculate required variables instead of relying on their continuous manual update- Fix the -base module build again to generate only the deps we need- Replace OBS_dev-shm.patch with the upstream PR#20944- Use the %{python_pkg_name} on more places to allow easier multiversioning - Switch to _multibuild approach for easier maintenance of this package. All is now in one spec file with 3 conditionals: * bcond_with base * bcond_with doc * bcond_with general- add requires python3-base on libpython subpackage (bsc#1167008)- build against Sphinx 2.x until python is compatible with Sphinx 3.x (see gh#python/cpython#19397, bpo#40204)- Fix build with SQLite 3.32 (bpo#40783) add bpo40784-Fix-sqlite3-deterministic-test.patch- Update to version 3.8.3: - Complete list of changes is available at https://docs.python.org/release/3.8.3/whatsnew/changelog.html#python-3-8-3-final, but most of them are just bugfixes. - Removed patch CVE-2020-8492-urllib-ReDoS.patch: contained in upstream- Add #!BuildIgnore: gdk-pixbuf-loader-rsvg to python3 SPEC- Add patch bsc1167501-invalid-alignment.patch (bsc#1167501, bpo#40052) to fix alignment in abstract.h header file.- Update list of skipped tests for qemu linux-user build, test_setegid (test.test_os.PosixUidGidTests) is confusing it- Update to 3.8.2: - Complete list of changes is available at https://docs.python.org/release/3.8.2/whatsnew/changelog.html#python-3-8-2-final, but most of them are just bugfixes. - Updated patches: - F00102-lib64.patch - OBS_dev-shm.patch - SUSE-FEDORA-multilib.patch - subprocess-raise-timeout.patch- Add CVE-2020-8492-urllib-ReDoS.patch fixing the security bug "Python urrlib allowed an HTTP server to conduct Regular Expression Denial of Service (ReDoS)" (bsc#1162367)- Add Requires: libpython%{so_version} == %{version}-%{release} to python3-base to keep both packages always synchronized (bsc#1162224).- Do not pull in bluez in base again, explain the cycle, it needs to be solved by bluez maintainer for us by providing just the headers separately- Reame idle icons to idle3 in order to not conflict with python2 variant of the package * renamed the icons * renamed icon load in desktop file- Add importlib_resources provide/obsolete as it is integral part of the lang since 3.7 release- Add -fno-semantic-interposition as it brings speed up: https://fedoraproject.org/wiki/Changes/PythonNoSemanticInterpositionSpeedup- Update to 3.8.1: - This is mainly bugfix release and no significant changes to API are expected. The full changelog is available on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-1 - Remove bpo-38688_shutil.copytree_prevent-infinite-recursion.patch, which is included in the upstream tarball.- Add bpo-31046_ensurepip_honours_prefix.patch which makes ensurepip to honour the value of $(prefix). Proposed fix for bpo#31046..- Move bluez-devel dependency to base as it is needed for socket.AF_BLUETOOTH and otherwise does not work- Reintroduce QtHelp with the help of the new BR python-sphinxcontrib-qthelp.- Fix SUSE-FEDORA-multilib.patch, the platform agnostic infix for library installation is "lib", not "dir".- Move idle subpackage build from python3-base to python3. appstream-glib required for packaging introduces considerable extra dependencies and a build loop via rust/librsvg. - Correct installation of idle IDE icons: + idle.png is not the target directory + non-GNOME-specific icons belong into icons/hicolor - Add required Name key to idle3 desktop file- Update to the final release 3.8.0. . - New Features: - Assignment expressions - Positional-only parameters - Parallel filesystem cache for compiled bytecode files - Debug build uses the same ABI as release build - f-strings support = for self-documenting expressions and debugging - PEP 578: Python Runtime Audit Hooks - PEP 587: Python Initialization Configuration - Vectorcall: a fast calling protocol for CPython - Pickle protocol 5 with out-of-band data buffers - New modules: - importlib.metadata - Improved modules: - ast asyncio, builtins, collections, curses, ctypes, datetime, functools, gc, gettext, gzip, idelib and IDLE, inspect, io, json.tool, math, mmap, multiprocessing, os, os.path, pathlib, pickle, plistlib, py_compile, shlex, shutil, socket, ssl, statistics, sys, tarfile, threading, tokenize, tkinter, time, typing, unicodedata, unittest, venv, weakref, xml - C API improvements - bdist_winnst command has been deprecated (use bdist_wheel) - https://docs.python.org/3.8/whatsnew/3.8.html remains rest of changes including documentation on how to port your programs to the current version of Python.- Add idle3.appdata.xml and idle3.desktop (originally from Fedora) to make Idle3 full GUI desktop application. (bsc#1153830)- Drop intltool from BuildRequires. Doesn't appear to be used.- Add folder version to allow tarball downloads even for beta/rc releases- Revert patches from Fedora (F00102-lib64.patch and F00251-change-user-install-location.patch) into their original prisitine Fedora versions, SUSE-FEDORA-multilib.patch refreshed accordingly.- Correct quotation of platsubdir in Lib/distutils/command/install.py- Replace python-3.6.0-multilib.patch with two patches from Fedora (F00102-lib64.patch and F00251-change-user-install-location.patch), and our own SUSE-FEDORA-multilib.patch to allow better cooperation with Fedora and better upstreaming. - Add OBS_dev-shm.patch fixing bpo#38377- Pull in just gettext and let solver to sort out between: gettext-runtime-mini and gettext-runtime- Update to 3.8.0rc1. Overall changes from 3.7: - PEP 572, Assignment expressions - PEP 570, Positional-only arguments - PEP 587, Python Initialization Configuration (improved embedding) - PEP 590, Vectorcall: a fast calling protocol for CPython - PEP 578, Runtime audit hooks - PEP 574, Pickle protocol 5 with out-of-band data - Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict) - Parallel filesystem cache for compiled bytecode - Debug builds share ABI as release builds, also the 'm' ABI tag was removed (irrelevant since 3.4), bpo#36707 - f-strings support a handy = specifier for debugging - continue is now legal in finally: blocks - on Windows, the default asyncio event loop is now ProactorEventLoop - on macOS, the spawn start method is now used by default in multiprocessing - multiprocessing can now use shared memory segments to avoid pickling costs between processes - typed_ast is merged back to CPython - LOAD_GLOBAL is now 40% faster - pickle now uses Protocol 4 by default, improving performance - Refreshed patches: - CVE-2019-5010-null-defer-x509-cert-DOS.patch - python-3.3.0b1-fix_date_time_compiler.patch - python-3.6.0-multilib.patch - subprocess-raise-timeout.patch- Add bpo36302-sort-module-sources.patch (boo#1041090)- Try harder obsoleting importlib-metadata- Update to 3.8.0b4: Many bugfixes, full list on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-4- Re-enable test_threading on aarch64- Remove xrpm from subpackage tk description- Update to 3.8.0b3: Many bugfixes, full list on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-3 - Patches reapplied: - python-3.3.0b1-fix_date_time_compiler.patch - python-3.3.0b1-test-posix_fadvise.patch - python-3.6.0-multilib.patch - subprocess-raise-timeout.patch- Add Provides: python3-importlib-metadata- Update to 3.8.0b2: Many bugfixes, full list on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-beta-2 - Patches included in upstream: - bpo-37169_PyObject_IsFreed.patch - Patches reapplied: - 00251-change-user-install-location.patch - distutils-reproducible-compile.patch - python-3.3.0b1-localpath.patch - python-3.6.0-multilib.patch- Update list of skipped tests for qemu linux-user build - Don't do profiling in qemu linux-user build- Update to 3.8.0b1 (changes since 3.7.*): - PEP 572, Assignment expressions - PEP 570, Positional-only arguments - PEP 587, Python Initialization Configuration (improved embedding) - PEP 590, Vectorcall: a fast calling protocol for CPython - PEP 578, Runtime audit hooks - PEP 574, Pickle protocol 5 with out-of-band data - Typing-related: PEP 591 (Final qualifier), PEP 586 (Literal types), and PEP 589 (TypedDict) - Parallel filesystem cache for compiled bytecode - Debug builds share ABI as release builds - f-strings support a handy = specifier for debugging - continue is now legal in finally: blocks - multiprocessing can now use shared memory segments to avoid pickling costs between processes - typed_ast is merged back to CPython - LOAD_GLOBAL is now 40% faster - pickle now uses Protocol 4 by default, improving performance - Remove patches which were included in the upstream: - 00251-change-user-install-location.patch - 00316-mark-bdist_wininst-unsupported.patch - CVE-2019-9947-no-ctrl-char-http.patch - raise_SIGING_not_handled.patch- Set _lto_cflags to nil as the package is using LTO via --enable-lto. That will prevent to propage LTO for Python modules that are built in a separate package.- Update to 3.8.0.a3: - PEP 572: Assignment Expressions. - Other (mostly small) changes are on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-alpha-3- bsc#1130840 (CVE-2019-9947): add CVE-2019-9947-no-ctrl-char-http.patch Address the issue by disallowing URL paths with embedded whitespace or control characters through into the underlying http client request. Such potentially malicious header injection URLs now cause a ValueError to be raised.- Fix metadata of patches. - Rename boo1071941-make-install-in-sep-loc.patch to 00251-change-user-install-location.patch which is the original name, so it can be looked up in the Fedora VCS.- Mark distutils bdist_wininst command unsupported with 00316-mark-bdist_wininst-unsupported.patch - Remove Windows bdist_wininst executables from runtime package- Update to 3.7.3, which is the maintenance release without any significant changes in API. - Updated patches: - CVE-2019-5010-null-defer-x509-cert-DOS.patch - distutils-reproducible-compile.patch - python-3.3.0b1-fix_date_time_compiler.patch - python-3.6.0-multilib.patch - raise_SIGING_not_handled.patch- Remove building of Qt Develop help files.- Return distutils-reproducible-compile.patch which is still missing (still unfinished bpo#29708).- Update to 3.8.0a2: * List of all (mostly small) changes are on https://docs.python.org/3.8/whatsnew/changelog.html#python-3-8-0-alpha-2- Build nis module again.- Update to 3.8.0a1: * The most visible change so far is probably the implementation of PEP 572: Assignment Expressions. For a detailed list of changes, see: https://docs.python.org/3.8/whatsnew/changelog.html * Recover building of nis module properly in python3 package - Update patches: * CVE-2019-5010-null-defer-x509-cert-DOS.patch * python-3.3.0b1-fix_date_time_compiler.patch * python-3.3.0b1-test-posix_fadvise.patch * python-3.6.0-multilib.patch * raise_SIGING_not_handled.patch- Put LICENSE file where it belongs (bsc#1121852)- bsc#1122191: add CVE-2019-5010-null-defer-x509-cert-DOS.patch fixing bpo-35746. An exploitable denial-of-service vulnerability exists in the X509 certificate parser of Python.org Python 2.7.11 / 3.7.2. A specially crafted X509 certificate can cause a NULL pointer dereference, resulting in a denial of service. An attacker can initiate or accept TLS connections using crafted certificates to trigger this vulnerability.- Do not require full gettext in order to avoid pulling in the glib2 as a dependency- Update to 3.7.2: * bugfix release: https://docs.python.org/3.7/whatsnew/changelog.html#changelog- Stop applying python-3.6.0-multilib-new.patch (which is still WIP), and apply the old proven python-3.6.0-multilib.patch instead.- Use upstream-recommended %{_rpmconfigdir}/macros.d directory for the rpm macros.- Upgrade to 3.7.2rc1: * bugfix release, for the full list of all changes see https://docs.python.org/3.7/whatsnew/changelog.html#changelog - Make run of the test suite more verbose- Write summaries without em dashes.- Remove python-3.3.0b1-curses-panel.patch it is unnecessary anymore. - Add boo1071941-make-install-in-sep-loc.patch to make pip and distutils in user environment install into separate location (boo#1071941) Set values of prefix and exec_prefix in distutils install command to /usr/local if executable is /usr/bin/python* and RPM build is not detected to make pip and distutils install into separate location - Remove finally python-3.3.3-skip-distutils-test_sysconfig_module.patch - Remove distutils-reproducible-compile.patch which doesn't make really much difference in reproducibility (see gh#python/cpython#8057 and discussion there).- Rename Stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch to bpo34022-stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch- Add dependency on bluez-devel to build support for Bluetooth (boo#1109998)- Add devhelp subpackage and split qthelp into another subpackage.- Remove python-3.0b1-record-rpm.patch and Python-3.0b1-record-rpm.patch, as they are not needed anymore- Switch off test_threading for optimization builds.- Update to python-3.7.1. This is just a brief overview, complete changelog available at https://docs.python.org/3.7/whatsnew/changelog.html#python-3-7-1-final: Library bpo-34970: Protect tasks weak set manipulation in asyncio.all_tasks() - Patches already accepted upstream are removed: * 00307-allow-to-call-Py_Main-after-Py_Initialize.patch * 00308-tls-1.3.patch - New patches added: * Stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch * raise_SIGING_not_handled.patch - All other patches refreshed via quilt.- Add raise_SIGING_not_handled.patch to fix bsc#1094814- Add patch to fix importlib return types: * python3-imp-returntype.patch- bpo-34022 still not completely fixed, so we have to keep excluding test_cmd_line_script, test_multiprocessing_main_handling, and test_runpy from the test suite.- Update to python 3.7.1~rc2: Core and Builtins bpo-34879: Fix a possible null pointer dereference in bytesobject.c. Patch by Zackery Spytz. bpo-34854: Fixed a crash in compiling string annotations containing a lambda with a keyword-only argument that doesn’t have a default value. bpo-34320: Fix dict(od) didn’t copy iteration order of OrderedDict. Library bpo-34769: Fix for async generators not finalizing when event loop is in debug mode and garbage collector runs in another thread. bpo-34922: Fixed integer overflow in the digest() and hexdigest() methods for the SHAKE algorithm in the hashlib module. bpo-34900: Fixed unittest.TestCase.debug() when used to call test methods with subtests. Patch by Bruno Oliveira. bpo-34871: Fix inspect module polluted sys.modules when parsing __text_signature__ of callable. bpo-34872: Fix self-cancellation in C implementation of asyncio.Task bpo-34819: Use a monotonic clock to compute timeouts in Executor.map() and as_completed(), in order to prevent timeouts from deviating when the system clock is adjusted. bpo-34334: In QueueHandler, clear exc_text from LogRecord to prevent traceback from being written twice. bpo-6721: Acquire the logging module’s commonly used internal locks while fork()ing to avoid deadlocks in the child process. bpo-34172: Fix a reference issue inside multiprocessing.Pool that caused the pool to remain alive if it was deleted without being closed or terminated explicitly. Documentation bpo-32174: chm document displays non-ASCII charaters properly on some MBCS Windows systems. Tests bpo-32962: Fixed test_gdb when Python is compiled with flags - mcet -fcf-protection -O0. C API bpo-34910: Ensure that PyObject_Print() always returns -1 on error. Patch by Zackery Spytz.- Add Stop_hash-based_invalidation_w_SOURCE_DATE_EPOCH.patch to fix problems with SOURCE_DATE_EPOCH variable (bpo-34022)- Add patch to fix build with tls1.3 supported openssl * 00308-tls-1.3.patch - Add patch to fix Py_Main calls after Py_initialize * 00307-allow-to-call-Py_Main-after-Py_Initialize.patch- Add -fwrapv to OPTS, which is default for python3 anyway See for example https://github.com/zopefoundation/persistent/issues/86 for bugs which are caused by avoiding it.- Fix ownership of _contextvars, _queue, and _xxtestfuzz- Switch off LTO for distros with older GCC - Fix %files- Add dependency over libuuid-devel- update to python 3.7.0 Complete overview of changes is available on https://docs.python.org/3/whatsnew/3.7.html, these are just highlights: * PEP 563, postponed evaluation of type annotations. * async and await are now reserved keywords. * New library modules: contextvars: PEP 567 – Context Variables dataclasses: PEP 557 – Data Classes importlib.resources * New built-in features: PEP 553, the new breakpoint() function. * Python data model improvements: PEP 562, customization of access to module attributes. PEP 560, core support for typing module and generic types. the insertion-order preservation nature of dict objects has been declared to be an official part of the Python language spec. * Significant improvements in the standard library: The asyncio module has received new features, significant usability and performance improvements. The time module gained support for functions with nanosecond resolution. * CPython implementation improvements: Avoiding the use of ASCII as a default text encoding: PEP 538, legacy C locale coercion PEP 540, forced UTF-8 runtime mode PEP 552, deterministic .pycs the new development runtime mode PEP 565, improved DeprecationWarning handling * C API improvements: PEP 539, new C API for thread-local storage * Documentation improvements: PEP 545, Python documentation translations New documentation translations: Japanese, French, and Korean. - drop python3-sorted_tar.patch - drop 0001-allow-for-reproducible-builds-of-python-packages.patch - refresh python-3.6.0-multilib-new.patch - refresh subprocess-raise-timeout.patch * new C API for thread-local storage * Deterministic pyc files * Built-in breakpoint() * Data Classes * Core support for typing module and generic types * Customization of access to module attributes * Postponed evaluation of annotations * Time functions with nanosecond resolution * Improved DeprecationWarning handling * Context Variables * Avoiding the use of ASCII as a default text encoding (PEP 538, legacy C locale coercion and PEP 540, forced UTF-8 runtime mode) * The insertion-order preservation nature of dict objects is now an official part of the Python language spec. * Notable performance improvements in many areas.- disable lto with gcc versions below 7 (results in link failures)- Use faster find subcommand execution strategies.- Do not mention the testsuite disabling in opts as it was moved to main pkg so base is test-free- As we run in main python package do not generate the pre_checkin from both now- Move the tests from base to generic package wrt bsc#1088573 * We still fail the whole distro if python3 is not build * The other archs than x86_64 took couple of hours to unblock build of other software, this way we work around the issue - Some tests are still run in -base for the LTO tweaking, but at least it is not run twice- update to 3.6.5 * bugfix release * see Misc/NEWS for details - drop ctypes-pass-by-value.patch - drop fix-localeconv-encoding-for-LC_NUMERIC.patch - refresh python-3.6.0-multilib-new.patch- Created %so_major and %so_minor macros - Put Tools/gdb/libpython.py script into proper place and ship it with devel subpackage.- ctypes-pass-by-value.patch: Fix pass by value for structs on aarch64- Add python3-sorted_tar.patch (boo#1081750)- Drop python3-tk and python3-idle recommends to reduce python3 always pulling X stack bsc#1081751- Add patch to fix glibc 2.27 fail bsc#1079761: * fix-localeconv-encoding-for-LC_NUMERIC.patch- Update skip_random_failing_tests.patch (for PowerPC) to avoid test_call_later failure- move XML modules and python3-xml provide to python3-base (fixes bsc#1077230) - move ensurepip to base- Add skip_random_failing_tests.patch only for PowerPC- update to 3.6.4 * bugfix release, over a hundred bugs fixed * see Misc/NEWS for details - drop upstreamed python3-ncurses-6.0-accessors.patch - drop PYTHONSTARTUP hooks that cause spurious startup errors * fixes bsc#1070738 * the relevant feature (REPL history) is now built into Python itself- Install 2to3-%{python_version} executable (override defattr of the -tools package). 2to3 (unversioned) is a symlink and does not carry permissions (bsc#1070853).- move 2to3 to python3-tools package- update to 3.6.3 * bugfix release, over a hundred bugs fixed * see Misc/NEWS for details - drop upstreamed 0001-3.6-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3093.patch- drop python-2.7-libffi-aarch64.patch: this patches the intree copy of libffi which is unused/deleted in the line afterwards - fix build against system libffi: include flags weren't set so it actually used the in-tree libffi headers.- Fix test broken with OpenSSL 1.1 (bsc#1042670) * add 0001-3.6-bpo-30714-ALPN-changes-for-OpenSSL-1.1.0f-3093.patch- Update RPM group for python documentation.- fix missing %{?armsuffix}- distutils-reproducible-compile.patch: ensure distutils order files before compiling, which works around bsc#1049186- Add libnsl-devel build requires for glibc obsoleting libnsl- update to 3.6.2 * bugfix release, over a hundred bugs fixed * see Misc/NEWS for details - drop upstreamed test-socket-aead-kernel49.patch - add Provides: python3-typing (fixes bsc#1050653) - drop duplicate Provides: python3- drop db-devel from requirements- Add missing link to python library in config dir (bsc#1040164)- update to 3.6.1 * bugfix release, over a hundred bugs fixed * never add import location's parent directory to sys.path * switch to git for version control, build changes related to that * fix "failed to get random numbers" on old kernels (bsc#1029902) * several crashes and memory leaks corrected * f-string are no longer accepted as docstrings- prevent regenerating AST at build-time more robustly - add "--without profileopt" and "--without testsuite" options to python3-base to allow short circuiting when working on the package- Add 0001-allow-for-reproducible-builds-of-python-packages.patch upstream https://github.com/python/cpython/pull/296- reenable test_socket with AEAD patch (test-socket-aead-kernel49.patch) - reintroduce %py3_soflags macro (and better named %cpython3_soabi equivalent)- update to 3.6.0 * PEP 498 Formated string literals * PEP 515 Underscores in numeric literals * PEP 526 Syntax for variable annotations * PEP 525 Asynchronous generators * PEP 530 Asynchronous comprehensions * PEP 506 New "secrets" module for safe key generation * less memory consumed by dicts * dtrace and systemtap support * improved asyncio module * better defaults for ssl * new hashing algorithms in hashlib * bytecode format changed to allow more optimizations * "async" and "await" are on track to be reserved words * StopIteration from generators is deprecated * support for openssl < 1.0.2 is deprecated * os.urandom now blocks when getrandom() blocks * huge number of new features, bugfixes and optimizations * see https://docs.python.org/3.6/whatsnew/3.6.html for details - rework multilib patch: drop Python-3.5.0-multilib.patch, implement upstreamable python-3.6.0-multilib-new.patch - refresh python-3.3.0b1-localpath.patch, subprocess-raise-timeout.patch - drop upstreamed Python-3.5.1-fix_lru_cache_copying.patch - finally drop python-2.6b1-canonicalize2.patch that was not applied in source and only kept around in case we needed it in the future. (which we don't, as it seems) - update import_failed map and baselibs - build ctypes against system libffi (buildrequire libffi-devel in python3-base) - add new key to keyring (signed by keys already in keyring) - introduced common configure section between python3 and python3-base - moved pyconfig.h and Makefile to devel subpackage as distutils no longer need it at runtime - added python-rpm-macros dependency, regenerated macros file, drop macros.python3.py because it is not used now - improve summaries and descriptions (fixes bsc#917607) - enabled Link-Time Optimization, see what happens - including skipped_tests.py in pre_checkin.sh run - run specs through spec-cleaner, rearrange sections- move _hashlib and _ssl modules and tests to python3-base - recommend python3- Skip test_asyncio under qemu_user_space_build- Add Python-3.5.1-fix_lru_cache_copying.patch Fix copying the lru_cache() wrapper object. Fixes deep-copying lru_cache regression, which worked on previous versions of python but fails on python 3.5. This fixes a bunch of packages in devel:languages:python3. See: https://bugs.python.org/issue25447- Build the docs in .qch format as well- update to 3.5.1 * bugfix-only release, dozens of bugs fixed - Drop upstreamed Python-3.5.0-_Py_atomic_xxx-symbols.patch - "Python3" to "Python 3" in summary * This seems cleaner and fixes and rpmlint warning- Add Python-3.5.0-_Py_atomic_xxx-symbols.patch This fixes a build error for many packages that use the Python, C-API. This patch is already accepted upstream and is slated to appear in python 3.5.1.- update to 3.5.0 * coroutines with async/await syntax * matrix multiplication operator `@` * unpacking generalizations * new modules `typing` and `zipapp` * type annotations * .pyo files replaced by custom suffixes for optimization levels in __pycache__ * support for memory BIO in ssl module * performance improvements in several modules * and many more - removals and behavior changes * deprecated `__version__` is removed * support for .pyo files was removed * system calls are auto-retried on EINTR * bare generator expressions in function calls now cause SyntaxError (change "f(x for x in i)" to "f((x for x in i))" to fix) * removed undocumented `format` member of private `PyMemoryViewObject` struct * renamed `PyMemAllocator` to `PyMemAllocatorEx` - redefine %dynlib macro to reflect that modules now have arch+os as part of name - module `time` is now built-in - dropped upstreamed patches: python-3.4.1-fix-faulthandler.patch python-3.4.3-test-conditional-ssl.patch python-fix-short-dh.patch (also dropped dh2048.pem required for this patch) - updated patch Python-3.3.0b2-multilib.patch to Python-3.5.0-multilib.patch - python-ncurses-6.0-accessors.patch taken from python 2 to fix build failure with new gcc + ncurses- Add python3-ncurses-6.0-accessors.patch: Fix build with NCurses 6.0 and OPAQUE_WINDOW set to 1.- improve import_failed hook to do the right thing when invoking missing modules with "python3 -m modulename" (boo#942751)- Build with --enable-loadable-sqlite-extensions to make it works as geospatial database.- Fix source list for previous change (add dh2048.pem).- dh2048.pem: added generated 2048 dh parameter set to fix ssl test (bsc#935856) - python-fix-short-dh.patch: replace the 512 bits dh parameter set by 2048 bits to fix build with new openssl 1.0.2c (bsc#935856)- ctypes-libffi-aarch64.patch: remove upstreamed patch - python-2.7-libffi-aarch64.patch: Fix argument passing in libffi for aarch64- drop the PDF subpackage (removes the massive texlive dependency, and most likely nobody is using the PDFs anyway)- python-3.4.3-test-conditional-ssl.patch - restore tests failing because test_urllib was unconditionally importing ssl (without really needing it) - restore functionality of multilib patch - drop libffi-ppc64le.diff because upstream completely changed everything yet again (sorry ppc64 folks :| )- Update to version 3.4.3 - Drop upstreamed CVE-2014-4650-CGIHTTPServer-traversal.patch (bpo#21766)- Add python-3.4.1-fix-faulthandler.patch, upstream patch for bogus faulthandler which fails with GCC 5.- asyncio has been merged in python3 main package; provide and obsolete it - Remove obsolete AUTHORS section - Remove redundant %clean section- Only pkgconfig(x11) is required for build, not the whole set of packages provided by xorg-x11-devel metapackage.- add %python3_version rpm macro for Fedora compatibility - add missing argument in import_failed, rename Novell Bugzilla to SUSE Bugzillapython39-doc-devhelph01-armsrv3 1696327003  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>3.10.13-150400.4.36.13.10.13-150400.4.36.1     gtk-dochtmlPython3.10Python.devhelp.gz_downloads6dc1f3f4f0e6ca13cb42ddf4d6cbc8aftzinfo_examples.py_imageshashlib-blake2-tree.pnglogging_flow.pngpathlib-inheritance.pngtk_msg.pngturtle-star.pngwin_installer.png_staticbasic.csscaret-down.svgchangelog_search.jsclassic.csscopybutton.jsdefault.cssdoctools.jsdocumentation_options.jsfile.pngglossary.jsonjquery-3.5.1.jsjquery.jslanguage_data.jsmenu.jsminus.pngopensearch.xmlplus.pngpy.pngpy.svgpydoctheme.csspygments.csssearchtools.jssidebar.jsunderscore-1.13.1.jsunderscore.jsabout.htmlbugs.htmlc-apiabstract.htmlallocation.htmlapiabiversion.htmlarg.htmlbool.htmlbuffer.htmlbytearray.htmlbytes.htmlcall.htmlcapsule.htmlcell.htmlcode.htmlcodec.htmlcomplex.htmlconcrete.htmlcontextvars.htmlconversion.htmlcoro.htmldatetime.htmldescriptor.htmldict.htmlexceptions.htmlfile.htmlfloat.htmlfunction.htmlgcsupport.htmlgen.htmlimport.htmlindex.htmlinit.htmlinit_config.htmlintro.htmliter.htmliterator.htmllist.htmllong.htmlmapping.htmlmarshal.htmlmemory.htmlmemoryview.htmlmethod.htmlmodule.htmlnone.htmlnumber.htmlobjbuffer.htmlobject.htmlobjimpl.htmlrefcounting.htmlreflection.htmlsequence.htmlset.htmlslice.htmlstable.htmlstructures.htmlsys.htmltuple.htmltype.htmltypehints.htmltypeobj.htmlunicode.htmlutilities.htmlveryhigh.htmlweakref.htmlcontents.htmlcopyright.htmldistributingindex.htmldistutils_setuptools_disclaimer.htmlapiref.htmlbuiltdist.htmlcommandref.htmlconfigfile.htmlexamples.htmlextending.htmlindex.htmlintroduction.htmlpackageindex.htmlsetupscript.htmlsourcedist.htmluploading.htmldownload.htmlextendingbuilding.htmlembedding.htmlextending.htmlindex.htmlnewtypes.htmlnewtypes_tutorial.htmlwindows.htmlfaqdesign.htmlextending.htmlgeneral.htmlgui.htmlindex.htmlinstalled.htmllibrary.htmlprogramming.htmlwindows.htmlgenindex-A.htmlgenindex-B.htmlgenindex-C.htmlgenindex-D.htmlgenindex-E.htmlgenindex-F.htmlgenindex-G.htmlgenindex-H.htmlgenindex-I.htmlgenindex-J.htmlgenindex-K.htmlgenindex-L.htmlgenindex-M.htmlgenindex-N.htmlgenindex-O.htmlgenindex-P.htmlgenindex-Q.htmlgenindex-R.htmlgenindex-S.htmlgenindex-Symbols.htmlgenindex-T.htmlgenindex-U.htmlgenindex-V.htmlgenindex-W.htmlgenindex-X.htmlgenindex-Y.htmlgenindex-Z.htmlgenindex-_.htmlgenindex-all.htmlgenindex.htmlglossary.htmlhowtoannotations.htmlargparse.htmlclinic.htmlcporting.htmlcurses.htmldescriptor.htmlfunctional.htmlindex.htmlinstrumentation.htmlipaddress.htmllogging-cookbook.htmllogging.htmlpyporting.htmlregex.htmlsockets.htmlsorting.htmlunicode.htmlurllib2.htmlindex.htmlinstallindex.htmlinstallingindex.htmllibrary2to3.html__future__.html__main__.html_thread.htmlabc.htmlaifc.htmlallos.htmlarchiving.htmlargparse.htmlarray.htmlast.htmlasynchat.htmlasyncio-api-index.htmlasyncio-dev.htmlasyncio-eventloop.htmlasyncio-exceptions.htmlasyncio-future.htmlasyncio-llapi-index.htmlasyncio-platforms.htmlasyncio-policy.htmlasyncio-protocol.htmlasyncio-queue.htmlasyncio-stream.htmlasyncio-subprocess.htmlasyncio-sync.htmlasyncio-task.htmlasyncio.htmlasyncore.htmlatexit.htmlaudioop.htmlaudit_events.htmlbase64.htmlbdb.htmlbinary.htmlbinascii.htmlbinhex.htmlbisect.htmlbuiltins.htmlbz2.htmlcalendar.htmlcgi.htmlcgitb.htmlchunk.htmlcmath.htmlcmd.htmlcode.htmlcodecs.htmlcodeop.htmlcollections.abc.htmlcollections.htmlcolorsys.htmlcompileall.htmlconcurrency.htmlconcurrent.futures.htmlconcurrent.htmlconfigparser.htmlconstants.htmlcontextlib.htmlcontextvars.htmlcopy.htmlcopyreg.htmlcrypt.htmlcrypto.htmlcsv.htmlctypes.htmlcurses.ascii.htmlcurses.htmlcurses.panel.htmlcustominterp.htmldataclasses.htmldatatypes.htmldatetime.htmldbm.htmldebug.htmldecimal.htmldevelopment.htmldevmode.htmldialog.htmldifflib.htmldis.htmldistribution.htmldistutils.htmldoctest.htmlemail.charset.htmlemail.compat32-message.htmlemail.contentmanager.htmlemail.encoders.htmlemail.errors.htmlemail.examples.htmlemail.generator.htmlemail.header.htmlemail.headerregistry.htmlemail.htmlemail.iterators.htmlemail.message.htmlemail.mime.htmlemail.parser.htmlemail.policy.htmlemail.utils.htmlensurepip.htmlenum.htmlerrno.htmlexceptions.htmlfaulthandler.htmlfcntl.htmlfilecmp.htmlfileformats.htmlfileinput.htmlfilesys.htmlfnmatch.htmlfractions.htmlframeworks.htmlftplib.htmlfunctional.htmlfunctions.htmlfunctools.htmlgc.htmlgetopt.htmlgetpass.htmlgettext.htmlglob.htmlgraphlib.htmlgrp.htmlgzip.htmlhashlib.htmlheapq.htmlhmac.htmlhtml.entities.htmlhtml.htmlhtml.parser.htmlhttp.client.htmlhttp.cookiejar.htmlhttp.cookies.htmlhttp.htmlhttp.server.htmli18n.htmlidle.htmlimaplib.htmlimghdr.htmlimp.htmlimportlib.htmlimportlib.metadata.htmlindex.htmlinspect.htmlinternet.htmlintro.htmlio.htmlipaddress.htmlipc.htmlitertools.htmljson.htmlkeyword.htmllanguage.htmllinecache.htmllocale.htmllogging.config.htmllogging.handlers.htmllogging.htmllzma.htmlmailbox.htmlmailcap.htmlmarkup.htmlmarshal.htmlmath.htmlmimetypes.htmlmm.htmlmmap.htmlmodulefinder.htmlmodules.htmlmsilib.htmlmsvcrt.htmlmultiprocessing.htmlmultiprocessing.shared_memory.htmlnetdata.htmlnetrc.htmlnis.htmlnntplib.htmlnumbers.htmlnumeric.htmloperator.htmloptparse.htmlos.htmlos.path.htmlossaudiodev.htmlpathlib.htmlpdb.htmlpersistence.htmlpickle.htmlpickletools.htmlpipes.htmlpkgutil.htmlplatform.htmlplistlib.htmlpoplib.htmlposix.htmlpprint.htmlprofile.htmlpty.htmlpwd.htmlpy_compile.htmlpyclbr.htmlpydoc.htmlpyexpat.htmlpython.htmlqueue.htmlquopri.htmlrandom.htmlre.htmlreadline.htmlreprlib.htmlresource.htmlrlcompleter.htmlrunpy.htmlsched.htmlsecrets.htmlsecurity_warnings.htmlselect.htmlselectors.htmlshelve.htmlshlex.htmlshutil.htmlsignal.htmlsite.htmlsmtpd.htmlsmtplib.htmlsndhdr.htmlsocket.htmlsocketserver.htmlspwd.htmlsqlite3.htmlssl.htmlstat.htmlstatistics.htmlstdtypes.htmlstring.htmlstringprep.htmlstruct.htmlsubprocess.htmlsunau.htmlsuperseded.htmlsymtable.htmlsys.htmlsysconfig.htmlsyslog.htmltabnanny.htmltarfile.htmltelnetlib.htmltempfile.htmltermios.htmltest.htmltext.htmltextwrap.htmlthreading.htmltime.htmltimeit.htmltk.htmltkinter.colorchooser.htmltkinter.dnd.htmltkinter.font.htmltkinter.htmltkinter.messagebox.htmltkinter.scrolledtext.htmltkinter.tix.htmltkinter.ttk.htmltoken.htmltokenize.htmltrace.htmltraceback.htmltracemalloc.htmltty.htmlturtle.htmltypes.htmltyping.htmlunicodedata.htmlunittest.htmlunittest.mock-examples.htmlunittest.mock.htmlunix.htmlurllib.error.htmlurllib.htmlurllib.parse.htmlurllib.request.htmlurllib.robotparser.htmluu.htmluuid.htmlvenv.htmlwarnings.htmlwave.htmlweakref.htmlwebbrowser.htmlwindows.htmlwinreg.htmlwinsound.htmlwsgiref.htmlxdrlib.htmlxml.dom.htmlxml.dom.minidom.htmlxml.dom.pulldom.htmlxml.etree.elementtree.htmlxml.htmlxml.sax.handler.htmlxml.sax.htmlxml.sax.reader.htmlxml.sax.utils.htmlxmlrpc.client.htmlxmlrpc.htmlxmlrpc.server.htmlzipapp.htmlzipfile.htmlzipimport.htmlzlib.htmlzoneinfo.htmllicense.htmlpy-modindex.htmlreferencecompound_stmts.htmldatamodel.htmlexecutionmodel.htmlexpressions.htmlgrammar.htmlimport.htmlindex.htmlintroduction.htmllexical_analysis.htmlsimple_stmts.htmltoplevel_components.htmlsearch.htmltutorialappendix.htmlappetite.htmlclasses.htmlcontrolflow.htmldatastructures.htmlerrors.htmlfloatingpoint.htmlindex.htmlinputoutput.htmlinteractive.htmlinterpreter.htmlintroduction.htmlmodules.htmlstdlib.htmlstdlib2.htmlvenv.htmlwhatnow.htmlusingcmdline.htmlconfigure.htmleditors.htmlindex.htmlmac.htmlunix.htmlwindows.htmlwhatsnew2.0.html2.1.html2.2.html2.3.html2.4.html2.5.html2.6.html2.7.html3.0.html3.1.html3.10.html3.2.html3.3.html3.4.html3.5.html3.6.html3.7.html3.8.html3.9.htmlchangelog.htmlindex.html/usr/share//usr/share/gtk-doc//usr/share/gtk-doc/html//usr/share/gtk-doc/html/Python3.10//usr/share/gtk-doc/html/Python3.10/_downloads//usr/share/gtk-doc/html/Python3.10/_downloads/6dc1f3f4f0e6ca13cb42ddf4d6cbc8af//usr/share/gtk-doc/html/Python3.10/_images//usr/share/gtk-doc/html/Python3.10/_static//usr/share/gtk-doc/html/Python3.10/c-api//usr/share/gtk-doc/html/Python3.10/distributing//usr/share/gtk-doc/html/Python3.10/distutils//usr/share/gtk-doc/html/Python3.10/extending//usr/share/gtk-doc/html/Python3.10/faq//usr/share/gtk-doc/html/Python3.10/howto//usr/share/gtk-doc/html/Python3.10/install//usr/share/gtk-doc/html/Python3.10/installing//usr/share/gtk-doc/html/Python3.10/library//usr/share/gtk-doc/html/Python3.10/reference//usr/share/gtk-doc/html/Python3.10/tutorial//usr/share/gtk-doc/html/Python3.10/using//usr/share/gtk-doc/html/Python3.10/whatsnew/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.suse.de/SUSE:Maintenance:30915/SUSE_SLE-15-SP4_Update/cef239507711bc6d86736eaf320054ae-python310.SUSE_SLE-15-SP4_Update:docdrpmxz5aarch64-suse-linux   directoryUTF-8 Unicode text, with very long lines, with no line terminators (gzip compressed data, was "Python.devhelp", last modified: Tue Oct 3 09:56:32 2023, max compression)Python script, ASCII text executablePNG image data, 500 x 320, 8-bit colormap, non-interlacedPNG image data, 955 x 758, 8-bit colormap, non-interlacedPNG image data, 538 x 319, 8-bit colormap, non-interlacedPNG image data, 978 x 175, 8-bit/color RGB, non-interlacedPNG image data, 250 x 250, 8-bit/color RGB, non-interlacedPNG image data, 706 x 449, 8-bit/color RGBA, non-interlacedASCII textSVG Scalable Vector Graphics imagePNG image data, 16 x 16, 8-bit/color RGBA, non-interlacedASCII text, with very long lines, with no line terminatorsASCII text, with very long linesPNG image data, 11 x 11, 8-bit grayscale, non-interlacedXML 1.0 document, ASCII textUTF-8 Unicode textHTML document, UTF-8 Unicode text, with very long linesHTML document, ASCII text, with very long linesHTML document, ASCII textj4Ìͽutf-816d1fe806d622d380ec8729baab25b297f209ca628cbaf88a78f22371f788921? 7zXZ !t/!]"k% Pa ˺ x_(óbk~n0f}G*ʫJ+c#`),(>('KxJd/5:H◸𭬪wSrC+YH/ D_?= ~ökvgl΍E8<O{$EB9jP(/[MyKϣNC )T:,SoX@DCn(|2PmAiaө/ࢭjs~N{sXFCLڋ5"׳fTY534)(ou43KBS ́brϟ+MhM牳qh4Q2b}Z:6RѰM@h,oc?RyH+G,'RrjK填8&۶#I*07:DcO˲C-׋aQm0uX7lEcN ~{8h3DNx-u c gH6^YJF;Ȃy Acqp[SP;F_Kt= ~CGzӧVi ߟOnF2q1և܎U^6~Ur\+K< IË甲6ݐ1Fd#ؗ?ōwRل^̀YR+O,Szw_w&9?>5ྋx+8eOb\>f *+ղם)v[$|;a[ aW$jny u*Xw"0 ͔QU,_V!GQ-?tK|#De6^nύo5p[?t.}0o9gh0~yN[gauh/L B+!Dv,/Rk@Yd#݄U6Es-!)p}d/GTnZ;lm| +bҜq7P 7n49$8I4gq!Ed[6l>ɔ0Ι><=&>*^*"KE YP ز9'zjq6ry!͠j=`^Jd2D />ʻInc< v$ʊW b^uN/<1SO$.FZ4ݬZa_]`-Jʛr# 1'C]GഥwDN y`HͰ j\9n,9Cck*U66E @TjgySTdه}Z"Yd3h{G"LYB2S}?gnM7| 9RAo_/d XLMyn\#28kJۙRL4;7v)sv; 1"<.lq98 m];?ܯ8m4[=N4*rLP>"2ZNmWG%a[̸tGeKSv PTU¸|θYuf2G)hџX/u3aBӓh֝ow lpC gk_0^Y21Ӌ:f6#9a PC!3vC/?jI6G%cUy tR1~7l7jޙY/q!=hvpW!qhU6 >ߗ6P [چlz.^>м=o.K2Tyl8F HMA~*:_rL0Z5e =^a6$wS^ sN޴%U?.op\; p̬,:ҐW5ݐ}V>6|)KiIŎsh{}2DR3Z*nկrv\?/~Z3T[&;p^_Ɗ h!S5c(o/\0K<4Mm8} q4HzdL`v=ڈ0G \qTcJx_n rK땑"x;yWUR!LMS/(W,\Tu⊁S^b̅bau{vrD"5(l`aFNc̼DOjn"!L8Xc@bRFpT~ 0=$ W%2 iVi^c+wI-0]w|p[cIWqP@yXxMU_#EƍX7%Nk8"bҬ`2BReO%)P9gC~YQ{}rx c0`AΥ,Y \NK*7R>#餪x9%zp ye"m<[̌p9vQQMd6L2:4T[g6zNmu[M(ུZoooAɚ&:yTWK:'R'=UA5+zVF'-2^Pw)[=` hK=+TCTD/p b cNFU+ &!Dhtem0 `uM;pe@1މu2~XH𑆾iwٱ3`v~IY-Ю_FK&6oOٮMU; S)ft?t+]lg4 "_#^ю_%rrrwKXkd3ƠaC_ GuTiئ[Fj"P*h٢b<9Z()\TH<LxE>_2#Lmyh,2;O&S`#5#ov2Ik y{j5UR`Q@)\NiO `{ [UoC$& H ,$dKJTο7ё:ud_n3˽m?jF1bP E0'ل@A2-Z]b852E}z%zFʘdL!b3z?Kx\`뀣2‰%Flqn׆V^$eNN ӻsu5̲kHjR/\M՚_AC[FW"G+4޽~N:Eija"eZ6 bkQ,/"7lCۆTˍPr N:]Sj/6Q;#H(r;fT)"?Z{p3Q9ӶZ +_Mj')ooWX@cGWdV>4ј9jR 5 M ɾY> TC2fGF<R.Yl.P,&&ZPoePھ̻ݠS[@X29͌ BOG78duhϖؒaS)Q;Y5,%y=\ p^qPku3.;cIǁM|G8s5F_f}~x@:Ͷ]ڄ.4 *'6&H-j}F;upji$@ )ͶqKR %,jc ^ x1R7&̟dQN#ZKK$% ־벀 .(fֽEMpO?0|q\<JO@R,M{n(RnӿQ`82(lNV̪MЛz4Z)!i\hJh#/ML;zy2 Q|LP= PzD3Χkcv_eYʸԵ(k Ok(eقs32OzP15ٍ_O#aET+Ǥb7KXBHۥ6z=Ѩ d>)P`e`YYtyg?6=kBw 0̡ s0N 'lĴMlǟULyWkڈZy`}yq^T0. ) h`ոˠNÛog:ĸh@?.7rzsxv 'b^<쐽Oǰ?;Ȕ#cL救Tha5l8.X=xɨQ-ԙϴ{v1={G;=@OMo ƾ.c0tlUW \hsƑ9ݤ?U#B3bW}sTdr:|RRKoq40憼K`ռZ̊5*aL?0n{ዯ棉ah>W*f @ﻔgZ#M+[ٔIՄFK/xo.v+l؉-.ɧ5^@LKaV]0@׎FUKV |r,J LbKC13A4\-` q{]쥆-A݊Hڅwa+nIe%r(2ɚ|ͭ]qsv8zh&]ug/F,T@.G (70ʉp#ֻ,a g4V'q h8YL=5Xxk3暈El4 1jȻvRie~ECCbnE~>/BlAd:_ܾ0<4 FjȓsSI8=}`Jˠs7#IK(ݣƶ7ydq.E#3w l͕~Ş}5Q]pcψ ڶj`'A &Ȯ^ ]I,Mxd/;y#HKBCW\Yx_x.Q0c/( UPŧ}as/\3OW>ۂ-eF-j>^.NZZ.+X 4'\\XYRX>+4΂QҊY&S\SiFcDhS #GrdӮk)4#HʖHleQnXf@A0,3$YJƗnBnWW0f#Qt4<`κ&+ծ+tz2 XA@K֧0K2 9;o& th.h݃^ S\-̘];xئ,X i i:ْOvtQUձApz1{k1U'!_ƪ(6`DXo?"=06 %<^NQk=TirYne4vC1,w-՟聈9 `(!ocEQIf(8"inTNdعsv9=PR \As(5q_zW8YucNУa>;PV4e6nr؝s r=?o31Z.;2'a t>4k 7y RC)X^ tЩV.X9bM;.f ݚ6dNu<|g* ˓);7ЗϳGݺ_>"H=GY*|@äa1% 0%J'%T?NGS.)` t$3ߎ2]%-yR-}uo6bGQ>z6t ΞctxJ͹-zc19{yU4n~g=2{V@?|bT+ =iQ` cn] 0Ɵ.؂a菍C"KU,1(0?Ұ#HִBW>RD[9S˞+ֳfW›Rdl![)_V@ JzXxRupY/ڜtv.Ovd|T .AacV [jP.j9uwEYe$Gzg@bAu˼x`GsD'_βFG{eȰu}M?NzZ+ʍ@!㍁Hs9j0KwٻeV SE^W%S_5Du>)2U>cNw4)S_fu0BԪ` dܧCfg+evb1bs%m-b0 LZ[%BmS,x3?B ^` `YpM6py۬2]]^<bvYL QΊGJ8o 62 ( MŮ̙B{}e4. jhmTcj!/#׈h/:Q7{M4k&9tIn dȑ:cK`#wԟiZH,ޚkgٍ]m g 5zyNAn8F&?9 GyJ3rZn09UamDʥPS?ôʁ(.aΙ)iSYTBE 8r jӢqpAQw[!׽PBdc Q2ZPqQju% `rO BtHuKB:~qWpU>b\8h6{#yydLp 1O17Y:"Pf`FTR1S)M/dGW-'8YYOHɊ "8iU2lM!i[}&)6"i%ZUv`%u1yXL }dSJ5%E7eS 89^$_GTWF)0m џ=ǥMg2] n-V=xV5zBU͆z芗P@Y-KxЗoG yR"#W;#nROJpKv~+w&!EJ& Ni $ֈ}oS]@fڂ8/AmɯҋT' tϗ1 xO" 3VU~s?|e\Η/)oTß\;3šSLNZJT)P=Csui!EzBjP^!cE罍f.i])|8!P8r? JV!>qIIR:ry 灢i c18هXn!& pֺxM9wʅz_9KGK?YcN+m֥|ZX/x/=I-B w#A.krCP/K t]5X"we|e8yC=&,J:Via1(!>[b WOô]sʹٿ}Qǔ/FeɆ7rx*g4`<8 ;n|w*K΀r2[v3qLK"!JwPgPn=/#b0E@1;[ү4n*},ة*"M#/QTN*7ϷR^o#$l؛O)^Z`pSoӊ͆ҏ>*(i;G[KKPYL^T|JPiunjUf?iU!/U"D(hZ^M=%E][KbY4-C0nr:NR)ҒsHʼnn 9cm[tBŜ]}JD/ kmV>JͮGLH@ ۫[ vŗJNv]VV< yaR%7YOg4ED1/*>X};'9;|ۂ4{EUW(bL '@d%Ѻ=،zf')3\!b=*kvBf“hY !Zj,h̊eM/_>/L>Yr =լ< D;<ŋx@UF6PtQ!„"#(Z-5E]Rg \&DІ!!Ty5Zڣ4(\鑑\ Ld oVYʅ{262PHd^iU1D^JH*z@x@~߀Ck…ij:?^ 71@_P0gC'-|&9.WǬST)_BUX^o] }ٜмqY9J)e0_K@%\2\V>'QxR t(큢3-vSjvZ\ ++I' ʭiG&j\Zv&6),Aw gw. ߐAF:O֯"u2uMiuy_]x(', E2 KD7ߓld LIMhe{x)QNj|j~]iM,ˣ,; oAʠx!#&8AG-Nhߖh3&tie,v)} M.8s_`9K yrw Ĥ{X bP$620W|eJ|51Yn: IVm0dYKϰ%RȺsuU pjK.W! V hoY ;1yڅ@ 4 h)aް  ;q;k*BS&|5k\qIג ѱGவ? d~Jl0(:ćEu"V8tlV+MUy xN|I3A6TE'7_-;]IE,'bv:x]Q(Pt`fۤʻ0;0=!,=᩽񤰚S<#立Gxf[6+H͚Du~' '-ZᇅUpd0>s i%EمlLw ?.L+di_po59g:R QTZˠ=ߔ+b'OFa@|-(ɷMR$uO52G0̫;H쨰dx1>u4=R7S6@-!#ļS'd& e_A)GSYǿ,2>d# $eM 2,]]L:6fA23`^+f`-eB 5u:SQ ^K&RÍ-gMm"Oʥ dj8='&%IƬo*|פF[UvHzӓҴ.;̪Wo_cJdmL^gu㎻f->nϒSfxVb{X}M{qv^ՄG+^qn|NZKM8>=,xO.DiBlJ4{$"Jd䌘A`6J=mD2m`"aJ o[f]vezܶ/lrtkG 1UA` 'k_q֡ P顇ZrTV?w7l|4gTjVʱQ%"9sԚ! /<7so #(#W;C̕\38AfrʻB1N0a)瓑l#TssAP8dڰ7tn'fe R<WlIt>t.n[ ȧk1gt9 }6YNLl=^?{`^/祅Ψnڶ$R 0oe?FqKo'dm3.B+lX5EOXQQ8Uk^T眕]LC08S*>Yf76*{zkt3*eʟEzvUyʊ#O⁙9p~=t%#/QyQIkA̸%yP62Rq $yoq˪‡4Znpn\!4IӨME`m0|Ƴ`ٹ*LA EM R'9ua ?'smڅ ٷ.zɎg|[<W'C݊g8\,hãqI^vFIZw[JK|@5ÐZi*QD g9J;Lx|nhFGUPPA9~Ꝿ(,s#q)ohdW3"l:ۢպ|mXB5ݰ$L?PD"FT֙J|נ }DDc_zp^[C)`77'H`yrZBtWЊ忦729R`8_dIՏo?:V~=  {|5*Č)ňɞ[_2OCcY%CL:f3a[} $L*9K[S\5Tﹻ:- `KIG`_$²ݠo}窰^ (B:9$to@vRP- _LTlX}8L{ίY;DuMe`(Rgaw  7h4IZF=Id8bvךv=~'9Xw4[J9Mk  5h8~č}+3vfӿӵ3{yNv3YBSc3֟g`nc\w vAPwF<*et~ٱ55)]D hhzr,~/)vJ+Fh}Y#g7cWr "0ei^ADuXHFs<#^@o~rf;֤V6(#VZK}yX*GO^'_s*8s(yVY-v3?̑8Vŋ2)kQhlǩ(5[hb7W9ALȰ83v͜c*Mz>< Ҙ*%|aW6 {X.է1 zj#];ŠRp׃N\ ۈ5ĥBo^Gth wr3B}2?/oݑ6 D2#=GPS* EOO\>H:4 ^@ VUZNYE3ZEߤ% W#vZ+0LN~UsnrP$В|WWJMai,ANN +(5lYI椤A"Z/@}>ϱHaO( s}H;`Oh.EOSkۻV]2\QrTs~.#ɀ*n DǍQ+9 \)1#d$AI=\d932u7oqTm Pe 'Sƻ8sFooKwl~Rn03.e;`=+<_} ކopU$!b^6 R]Q'bUs }Ig[vj|2†V.rR(n 4 >iR?Q- Ptc6F,D }`*uBD6 ~$|轨VDr@WTc3ɔv%)2jn`erIFƒ>%~=i`4gO%K UMsg|rY"(?o2! K*B藣iU*[?<6:9 |WmIٍ(x 3@T|Ky"Q<0v#BHHN3c#3iD;+B<>3q@㚂@H qk d+kŘ/`67Ng3)~onHWR;%>;p 5(RU&ǹqࢬ>YH9>pgNZsV[X5%vW;$tw6QJIbT^J+=~& L=:8*x'4ֵd=r/' XE1]6 -K:d"߼ Ӝ[Y@ J=Lw#/ޯί{nH`bPPXx/GKm'$9Mˆ NByOo|ClXL,& m{-R{3M{ώ֗< ;06;؃~c}r09O#J'? ´K57-u/>s&^KLfY@ 'EM#ϼlS;3M1 pxlN9G4-בOQ=ُ1^~q,Kx3 _?nf 걟rr4f+)&tS!5t.F*`ctfhm9_m,|asSWs]x-l84[Xd:5eI$Na*2[P4v؜TϣXI.펄!ږ 4? WVC^ &Z7G|!Ń+MY qS꨸({n6p J\#'ȚpϙL(#Ll wgųjw\3XZGը0&r3dI"Yvw B./VNH ͉)d@Wuim]$d@F׬M]½/s:'kKyaCY`%GcS|XZUTX?X08=.fa?xP&79?ꀞݏ.D1sb8,o͍r璿.V3V&b#k74$Y5R^prYX(fwf㗎P'plG߰ss,(Î]X:N!S}FS8񉊵Ɵ`MHV-!+٭fǖ2h/ء;2jsWD7I" tRL }fyFnAVbv]qEӻ9~0׿xc&MiA7>P|A awᾹ6:KPs4Dlic4%Lv+o_XƿfbRzH|XUF vZq퐙9 t`UDʿӬesX ē%R{BD60(c.MZLwkX᳜k-檲T *CrW w p @VX( u9_1u4my?/\!| Vh:#v+ko/X4eb@4vwi G7^!tM bCc E=Eq)߀/|5'σU Em<` Mzj]cϺX'2 dԜA_뢑~["3/zoJA0&-FDj WIoi:3Eh2i v8 ejޣN/X4qIz&cɊkeʢuq`WIT>f~N`}!iun2x{`:߅\F>4eޅ 69 :FLJ% C}zgWÛTؗBAgDg6XGմy&4C:|$;;|?6t$KLqFZOzƣ"R6ǭn5V>uh?"/ҧGg#x}g_᤽ UT2ROMfhs?Z~ɶ,R= 'J0PEPOt`%sjgRƬI.ӊ_TmJ&˜{(|rP<2ETS$f'QwbGsz8ǖxE-&|6Щ/t і5@!Y%eg%(jS]n]vgHᤈ:`e`6qV4v5?dNp?(BTx+98>c*!U֍JVI|`UOͣP-4CN_jƀ)7 6Rq5BKT1 e=lk"/yS9v[H-ӸU1C[Acsev\&qkk`apP\ 0Oגκm yظ @2_ؼWQP&~swml :d%vRnxm-o3s3vcai ISÔThɽ͗sh)p|r.q<;e/HmixT(pHQGfR潬ҦhIʹc-heq$[*0ra/ rGv%0rUv>ᙓ5x?$w'=x)TAǻru}'@E.|#mseb2e&҆ ,Qn] I`ζ2gjLWd+ IubV 5uTfEbX+?u8]3vAZ c?9Zï,1 IA^\ 0fwij5eWX{ /|@Չ-Fj&0tES(h~?蕤\vt47d?Y>vHViei ͧe9A;bl5*BA֌%Lw2NM`D"ߒlSPTFV4X^E05xcHEDL(\71T`V]No&QHCT,1[ը>*ʯKPg͙9Q8"h:fHgjW*i.LU>-"@MbYt$HԒgCQL(|5FOƭoOە(;hHoZ)MYa[锦]ѤzKk/T1fNw'74 v8M@q6&:J>>}%e?֊aVJ9 5%t@&ݷIGYEZy_2kb,>wh)}VDY4l<7+?CE)UsBjJ1/R7} tP<“-]S< cm_wqn9q$$&x/ \":^7twk-R4懄>q+g2(DQԾ eڪ~#1Ewb}oVbD*W4|*VYT!:^~$3SEnT!wլgJnp=f~[]Ő"Z+ՋBi P7$HyA#C,H`4OrK#qQlktn)ԋ.Zŋ38ۓlY/EV]Ҏ o AuFl,Ch^"FXz$#+'`R9ʥwDA K~NÒISXT5xE `  duxyrU!P71^:gE2Ox4aar$glpl}Ku PMd8騾TFHJ `=H9ϻ\ۗCYר~q iJ;%O3z^O#p@ƕSr!9 @ 0M2f9ynh 'Fp yZ!j=T6<ƴ*;6dYUkAk5<!~h)uS#ڢG`W6M1+dX6m4T"g3дpG8y>4aj#eSUSLݚ4,!?#I&,qh Sލp eZ}ֶ-|G5 o lػ`iORoRg, #`AvkW[z*Pg; OI6T⌯hf{ΰ? _;TFVB`ě2iZF.v*Dl'dQʢJret79j9X>G@_a\g#*BM9b]3ImC|Z@Dr☃͵mG:G(6=GR!f` A "#u'w\\S4ӢӗoP"3z9vA _X`A[_] Eg\zF&F+=N݋քn6?ݛX?끤)>ze(QؔR.0$:۪uch]m*+˪d#AKd˓KW9/>5Пmg3M3yD8QԂuoz>ԘGpŭجn<1ղDׅɀ>1``i~c}#E X}#4.7TT-Wk| m6ӜqPf60G73~k3#r j/, +oLbi!ӕKDC\T`JIO[yoɯ>tW h@5M!_#Ta3r!gҭ'%_HhsY@qxVI${Ќ&J\B!Q1TC e'ᡇG]1QOo:24m!ysJ?B=g3GFLJu68%]Wb?*q~L^y8SHxkpМB//_B*7Iѧ79-/_d6٧_n"N8ZиE.TƧj{[AP ,^ L͢R;܅Bٷ+%t(N3\l"/XYr˾A%T{僟e'pE;vbf\RY !8Cp 7iHtVH><}=o/e/)ukȣ}3\wz":V]׼ʳ [r.xCV!T<$=▞e_ LsYӔY^9)5B)pR˲WE*fOxьfM¶fߙ-u;kwazaЍh+ˏg,ueñh9 6i'پ ]jepX]9BĬhd^D&4Qfɉ8`b%RQ e}1XuM{/^AH3M9OJ =A݌mdDy&~$c% .YC'ic u#ڢVϦ;u 7J(͇W3;Lڋ ax%.4e5s@6m8-Lң%ԽaaR v\+~6U%+qjҕPq#'ҩi!+Ilonr@s P5\VŅpv^iDtYq`-MB< A,T`8/(g*j~!@b5SX)96Yj ɐkyQpGN aC,ZEG񥬠k\Di֐~L*L9oi ހ=@ ʻ (^j;ęĈˑCZš?b Wv$RK2n9{\+rS_sbȄRI0g %*9]ZnH~x%ʍ+i/+rMPil_Qdz􎌥Uُ nkg cB H:8VWʑ6!T`uD'3~̈S(ouBjKyfz{쉽L<<$n an, XjbhG:U+9UΧ0xtYMg; ^AE~1(E@CnT܎4c`MP8cAl?z㟿G"gOhnjWa.Tcx6(kT? uoj'ӬskYZ k xֻwm=p0#1,*fht%:H{nZtɀS);Vb@ImO9G?@\Tɵ `/!c[9pwWp$ǭ5k 3b"\gTd ]DH(Q!#vJ5PWZ&WMV3b?`M`51ZU@s-"Ǎpdk?R׌/3=yXbqAjhEñ$B׆bDUKD|ȯ?FD#Ņz+?d:MM7pl\`|0QQ g0 i2!<`N|>ϲB@*D]ʾ @+Ҡr\I)z3 !B_*ܖ䍺sp!Na{_G]+DQLۊjFC:nZ9~teŁQ5=ã/IEget\-ьaq\O2(a̰P b}01Ʊ-OK: >IGn %0buijמ2h:RD`.~ NzNxk܈|Gз'ߕ|74]"m9l6TixsN ;s]L4 DaqTWM'W-f/BpQ9)8X7gǍ~la;°N{*V|*K!5΀ `VZvHYvz|b %mO p:Ko&q8:y%Ux\vk;z)xI!3b&ßʱDÈ_՝U,1r7VJpK^b#4m ة95n*j]~* >"U 6فqS,v:ox"u[fT1nB6_O@=6ޛ=H0y4J! -5lNy HHE4M6ɵs ~pEw؋NT/oȂEP0xRjC|~A3n ɰrqa9IJ4#3xgGOCkX=b^0Ta=LTEu+k~G1 .q]:圎=b"^MHK/@H+s7ği \q|౓`0$hɴ!D2tcPSecʂ b~/my )4Ĺ_.609(n~J]1+Wn8_ WO*4Q$D}lkgu]~CE 3mS uhzԀ{(wm]LIb% Dbo^Bk Zbg?"|;8(yXShf"@>"xέ)A3mIUUdZcHH"R+ w-9s:">: ;` g1,?Buy/̚ yϦ{.p.%ơ# %I+xL1ótYgڈWx{ռ6I /ek1S>A;:T5/[#q*'D">xσ5se0Sh & zorM/q.2f'):>QHF.mAZ:sF9yi|p{/ DJ\=Ñvxe&JhZlJwUQQddLnשE6kw8Ed@j&[Ϡ B~@E514@LF0F!Bc"AT߰{?mr- a'֪ BOcff NJ\r߆EԈKTN^ղ.8Re} keJ48Ve*mr"E"]{u,dK WZg"f![@a  QWq<{:P޴$)pf'\h4sޮА\cQjHA(ZSLNB~]OQ[g*6 5g_x)O{"Wz1PſuB".A|ͦ1y`_DcZ.P"e"ot.Jq6_$V3@X=3#1 {$w&O'څwD,`Hv=t˜cJ_q]rvޢSrberO.j\6z n/`v^fJpW]ьf@OsD_(7dKaO Z_5HCOSO+P"wgLn$(a#s=5HRx~s*a7k% xz{՗bMa$Z *{ WA`gJ+F-3U){Lf ^h LtITa8j`& qJrm)}K̡MlA] qQs<7R/Msm#7n m&7sD_) nRMO$!5=Xȋ g e|Md tKUuk]*kX )r gsYڱ@ ^wKFX<29#wl.zQ.L\nt( DX T]1z4I@͆b]08uk~N $q&Bq1=7 2m.(YuS Q|Vbr!N3"#pWǡP:EkӚ+\FҊ]r1jv+hxS+2wc!B^a׸:j]ދ)Qw,؆J [XvacE!:Q=Qá>7M)1{qg$"/2(cg[n`SISs^o\ jlo!bLڹڶgä2ƪ45H}A":0N[M~ICB'Wd4O$m'/42C>fW?C*0XZ$UV'l)ǻ8pK~lNg"6~NUyDUR9 ޿xJ40 @ ܭY/0{Y%m9׼<['sqmfE9yckUdu}\}7ﱞX|oj1/ s#Ӭ[/1F[m^-lҚ|e8QWg;F!a?_hz. Mu%.Jbz `&U qn %1Mt_w=|] ^X;MūN#d` ABIGMKD! tӲ<[s9XH&fta3ywRz1lPdQXB)qo¯]gO*̛eLJ+P jw ի{99!sJ#0BU vRQFNhm]6,kc>tK(9 %tÊ'r&X,o0!LnzF:ЪkˮAIC9V2/Z,mjqot=)j\;A½G~쾞gxRC I*V.߻vu}I1C̝]( \ҜNQO9~M4S.Ji8]0_H4R]d9eHv0YnݎCOt܊fJh=K~oE %?TgW؈47$, [}7ɯ`Lf^CJ]i1^ &9SɌqBT0ZS􋳦'^v/^ ;OS! iqb`x-4 apʐ<9tbNRǑ4)38{5?ڨw8 *J Sh(bLBELpW*5 ~Q ړfx\RsB  ,q(²Z2*3?uI(9졶 0F`q[>N۲@$+ZeGZӽQ.ůl 'cq?}{Y0g( i ;=GXn x97_@a\P6kt}ZBsOt h,x[&Ѥc!l[aXU=iZ Y/8oK ^ ]KH}Ebzi쯋ĶG{e~$\+&SF`p.6󚳸 @QeNx0B+YG @2U;\EtC-a^ V$kof{wL+Eg겴YFk>oromwlbG3#rw&VfwO(n_?9"({[ǙRASCɲ.,esoAeR䀽 Ӟ 蝴&ipCe<9K8\6stiKcӿhg ?Ea2qmp^.?dI(C]<,AX*쯐3#'O=8OU( X_kY2:CRVRffU.ԚrlhAD@^_jK"M1H-&n>'0 ~eaxN3̟Vog<='O3]:h+DY-'(Lvԯ3fz 8wIP M[x >QR^fWLBGY߮Mœ 5,Ub\x,TTV>*yL Luz%Iuv=CLcׅe \bEc6 ]t/Hh'w칂@DjW 8/K5Ņ[_ˈw2a oru yt. 먚"07f,XN+/ ;Ȼxn3m7ϻhՖ}*.,+{#~u:DMB)>ȗ)4LR_WfT mZ5r]~4ZTl÷<`KhCoQfwvNg31w̭JB2 cIe31Psyt{Z o,΅E&q D@ J pVhGUV6|TGEꔷJ8A(Ļתs熧Q4Yj6yXqogzqԏh^9pbQYu5 $0/xiuz%^5J4W&{B{(^Gpά ƍʹQFɿlf\E:"n(Nu;۽VXEeiMjbL?Ɂ@ GD9fAXք^WG/σd'nb͝:ҊPyO<&{/V.]$(hy"징 Rﵨz5YP̈);+jC-Vmt{`A$C ~o)@b"=R^82h܎o:^W|Mb-*. )J65FbSَlY{lI\=wiZtyu;ὰP+%yD* }͋j^,j{VkC,x%DﲹzFERF?'.]jpTzl&2AeW33DVɃ{O%sBԘ!ȩn#*t M2 f/M|څى9Q4p0%娡iqtM˻ rV4wKԧwR5xgd* L*P/!w'GP$k&b(V([r{0HLe+#hzcu43Y꫿v+n]PN^jOn&.:>/1-OäI8]j:l [lLUt^qY"X%e{w]uidDe/\R{N@3;x̴M4K,jiϰyztw2IFME!ύզ/=-9zWgc#cy{}vO%]O`LE93׊Aq'&WD03MEnk~MwYJ0#RO/'0\jo]G]i)8hbcOӹ]:H‰ 'nMSrʲGGS^MZ=2m>YTgNUpCֵx` {'A,G>Yˀ21qHPD~],>XilRs2 Ddx%lVf #P_J I2( |87o܉x)KU#adƅgxV}@"C^-YK(NtqCF@ƹu (,:* .~MYnҺulD$ȆuMLCGRqL~ $Ad 7h3a_Mކʟp*}e'K0vj2uw$ឯZs{O n  WTsNm3gd>bVi?iz cuf,}-QM`a\LNi_N\"[)_o2*]LyN쌢N퍦Odv 2[hooGޡ+M&A D0f=d6Jޜ-#tre䞌 T6+}<8bóZuxa">%3 EQŷ9G! 1cQ9j&hg65-2|jxD)-;&~Ym& iVr6 fiv)VSif&Hx7?)~|C (Hoi$p0ݝV:{^x8XAgkgp?w|/WsLRۅlM[]@ӇUe2?y%qėXU&p?&8`";_J73[ lZTE7pge<-`dV&O"ehY?\wԎdLފI;tGs܉ Vذ^ǿވ37ϣS=]"xȖЧtX*pE lpoɠx{LJ +!@)O7`3JÆt^^"Y(+l%]r3S> =\[tS:lK4Iv޷oxol__n`[4iT ̌T5%dK| r4N lø2jZ# רv鈽$(H;Iֶ;p'mڃ s1뉧5^p=V|dm KrmUKzT?K8OT^ ,Lr|g9/)YC~̋G'1 `<7X Վ{iz{].$m1oGJh^&>&lHw] '?n) =<ۺyg۰>D, rɕ_Jv"ݖLhr5RzGVq菡"LJ}MnĀ7[5 a *K)-62QE+GYsruƈR`,1Z—c\v xZ6Z.qEG8չ9.p06?4dכ;kOQV(e#nKq~~5"݃lߒ5އD_ϮV-ڊZ܌]B.~_zd.w k{[b?/"6hA,\HN<\_idkBC ,TVڔ ɟr|eBBXu]Ci;tpdk #? u?MXk4l˼tF FHe٥GWJUKPJS.0I\t-ն==,u{znBhYOCCR 9Gn/d4e3:V# LpMob9Y :ⷥ#U4# {b]%)H+5- V&iGuԧ?JF]Q ,~Ac HE-2Rßv4 Y=!dOGR{D F#xE(ū73ʣH)`D _DV}@r@s-(',]$u>U ʫ,2)qW6~D19S7p}k2uzPH¢JL'Mk[kZ͊g< GmB"s>ޮsZ"AJ1gcOP+Ugp %6<\Y"I,H:'c99K.]t ,eNy*, ?z[8I i=2Ƣ sS}du~>B6!.dz~:@)̦WGk0k}DhE{&/L9C 0'1:M/B}e؟Tm "A/)CΖ +e>_#l0ȸ~orOnk[DǪꍁkYMɯqJiQ_# -P Z6EnPI{uϥVPJX!F"\.zsHfBQ-x?ª%'c>Z|2ѐgJ WMf2MgN{ssX1MXG,*f֞%:K"p^G`WWRmHLTTN`ۆmt{rŠ$T'h,H? 8άJ\_[rWvD*;π0XM; mktCOc VwO9 GXM剣op5FI.(L#aXt/E%VW)VZ$$;9Ȩ,@XtLJk0TN]n㓃ΪOE،LHODQURjTUnD{6ĸ 1klg]k#awUGdc!i;c૗/)&sCrΎ쌴P%SOŶc!Rb^cq(xc ;%w϶] :Mv}jj4jz*@%r0ӕp|6]MO[wF}%(n.cVj# mjWZ{?.GhboVS஗(R<܄Y!ƬOi\e^|é#A"AUE],}pGCCC 2 j9sZ z%EVkχnq4H/amƔa>!WnVmq=y܋SWf"z`5'2(eq7y@)dbۑzۡ5CG/=~sK fʢ[Ctt.7$ȅ +BX=t`a=r뼩Xt;Z־cԱnxKk1}F6tVj:.:>.v({4:w .L源p8Ҁ[v7r}T%EgV*_.1P=5.sOڏBޅakC}!kv贞 W"vQmnEiFߔ죡 lc4Ri3Y&Aob(.^-1ltg@t]PÏwcxZ_d-?s= 5*bfKH߰ ?W-@8"rJ~c^o@|5}O شzRw5ˆQv`uVzdBKNn5\ЗX/'_7>˪vEzqbb깐cp4ɻ" O_A F U']x![ kRo{31\m9V~3 af!>X(\4,%z-%(_HܠmA޼ќCVWrEpXkRcS,'\ `JADqH'0C  mXrX9q XIx0h A}bpAOSyld&Ltv)B:xwwoZ jGe\yi1IR~E!5>:j/aI C1hD,i`s_"iu6",l,XpWʍؕ)f# K 'T qNv)M:LɷLyw|EU;JVb&NF 4 HyMq;9*iP4zc2dmc4tXD#Y+(_|p])WEfw%1->9S։͇C+ŝ A+ӹ7(8;HB1z;t}if8Q +JAg@O>kܮ[J5H\FbJ\PgPP~zG$"Nk%ɟi~ ߀|o4AEio< [T* .&NWIM˒%҅6ȯ~}\*BYFdÒWtX+nbg2x&(k0N[iƣ,Z-Lq+rgܨh.!M{/W@+2bvmP8֥Isq݃qoa~eML7D #/~,^ze-c `$^23P0X8Wg- h1cC`%yp$&`x"J UnZ~H^㍭6d^rR>[; ! H,:[3Lq揬7Z%5>cH(D)hk)[)w=ۉRb1mw#5I@C;u)D]nYHdĂ`K+ڡzL֒uj18 -`byn&tѮ82_ȷ{;U0,Yp2Z1-&rZ.=Ie\Y;oG `. cvz>)SEKmeMGkj8&ˡB;S3ORfO3g+>'Ё@+ekom|,Xk?pS+}Tx>vqr*9Jeyta $]f}PϦqbkj5 ݃/}`nrHuN6Y=X(gyj^L\: Ɂfoň8KرЗ/%iۛj4j];LD]3b™KYQoU6R&B3,Zl5w~RNZvy4{C4zC|Z|F3$b9ẀsFQ6aXM.|@Ƀz=iyZ08;Tkr`O0B:F"[pL+ "~6aaI+:ƴ,UA kW;A?x7)~uq%>VQ5C F'U`/`oJ><Y=b%WJo 7Jx1_ϟVNG_N*twsz#MWgM0׎t~J%?p#Ӓ[ޠ[Us maw.J8by=C,Yh`|2䢣+7LQ)D.푻 u|)3 &*biK渲]=$‰JV{·ie]BoaFʋRA"!>Ϊ_X0Vj+}Yg]1Z.zپz &ICXgzWMXZu%x Z+ހ͟.D {; c)'N$ĭP{8ڍll+ʬm蘦 sgw{W  !N eƴ[m>ط[ E_k*!bCjD[DsciE)]u*v$\//oqԐIﻤ Pc?7Y8G}S ˴sL uN8 V,W&sJ:6V]&3^=W5X^6+Xd,0:zGg.%Zy;(,0vA{Ej%G@dL #-κ?̟[r}GZӄO@u9܀!}J fꤩ]ѓFp.EDfCVq).bf茄|Y4Zն,œO}mô:7i =`\%(C;cw; ;o%;,g?VWo7+z[Q+]ނfhb$$5zʤSѻ+w hҍm]c>>Z5>^Y:(B9k3~3v_Y[AtuFpr-|b67 ")/Y \}8iv&N)C \.\leHl$S*9hf]]y!R8|P.gjvssZomy2qAY C!3]#)u¤37'(QP^>,?юCl\9Q]]ʉDC@T4X7yjMFA(mjrt$5d{c)tK>$a!m$Ta.5nKNBI,¯Š`4"5܇kd Im%Kghe ]s+ 2: Rb.["ߖat*E))@&O<9SB )Rx෉IVI bRO`(sVB~lAJV!a3v8>y2jN4glSW),dcW %#:%C$j+-wuJaqUIjÇlS8 '?D#B DZP,yQ&?9]`Y/ƅ9bF,myȯӼNҎ*Η‹Ǒq0n}f!߮lquka++wR}Y,\C]%ޖ=:*VwoD}вq:+x2K%7MӁKKGnWerz ʌ[a/(Wj!n4J"V3CsVv̫FfE^ӤKasTnY}JUAy譟猀ӃҥT{;LDNho]<^é R&\vw@Gٙ)LC 娮g۪_ȓQg!mZzNhޤdobm|0`oϖh/򀓼pLӧ.ˮ"Ձn{%E&]$P~6EjHS9] [.=6㟟 R1*܄ Op$\|Q"rҡfSK:cmӐGnv0ʀɃsLL,!{h*PC`Y:˕ciJaXRא< "[WMf:86#Jш!{mf~[XFg,eܝ/ tIWLe@̓ueqcX",}Y5? %O,h OvLA/lRk$7h*,ώON+VeB0bjj 1[VG55&l^۲}r 5^CmH 㖩)8]xҋ$XQqSR&0$FQhw9{T{L"[o[a-XZ}`7s{l3HwKi Lh8lZܶEaѰ?CjɓS?.8tDy]$ʫZBŗ}!Kǧ0""vW)-ok璒X楃8lLo(FZr&cG_8>aôddU{i:Ab$3T,K`< `KXФ OgQ`Wa<,beiLbaSd7D# Q$;:Vh=!2E8 p̀+R=q wX 8ς% =:;Bk*Á[l$ě{B=3v|:5{@W||=@yk4._Paf[AMs],_;،8q:Lmf)}~sUqPyTzyQP? ~Ykj^I` D ÃhΓ\ȡ`UI|[#(nmQKkCKnjwQWH<3x@%&b-$UZ7 ܨvf-b&Jd;Sd8q'&g 7FVj[(w~GY4dq}Uc>""sMqA(JSxQ} /Jk-GiMREC ?B0IZm@TFEuX䟓ġbaX6q‡ ê&2IBK.l%G5%&d[pMQ3Qɘ#s+j&aav(P*s̸XI ]`\e]4yu^ε~If€dqQ~ձY3JwrpafZ>pۊgNgu}fl>Pςe8:ݡ Ʀ4;)>k\&Y,@.im֗F/eܼp vS6:c;gQnSR9Yu&YN?H2YGo|b-X ~ik?u8$d1YEvvV%8ɗx}XOi$==r Uw!w](uu uŘD)!6ۛIϛ\2QSϭ<I E'TQ '(҃ܢȏj ⋃M2O"=2A9sn׀/.ՏHt@xi|we%_vݽ#u;uŶ8ځ[{s CMd::7r%K\"Pn@nWc_NǪJHMPA"#K(CF?ٚ'rz ӣ2iNvs]S>qYH>#ǯ B w3ʪ`^2&l})o@~;9?pnN̴V *H&h= fScC J%DxUX߸)'&&7隬 (, NAPޒMQu̥Cit\r_0^[,0W̓9#@F}9htLsȟ\# +\;mvo^eE<9ITMcnXkcޅHq'{ K6BmsGY|vΪXGΖ4,t&XxȅTxڲ%FJ_I T`beCƫq@،hMk߀Q@be4u.i i1ˏ ,\9~ʞ>j ng;CT Q J qjFgD>VսHh^>jvwOW<9at W xU %Au_^`eu07JhC}Rij e]E`c OǮ&Va^> nt4JZQvnͶDUҐZv.kd0~T̒ ^unz4djp+΋Qд÷)o;wP\}ȃNe zqdVg_@(%}zcG^XǶ FINaY?4,_!Cj<:hɚjo2 R;p0|SI-҃ lɔas[/ehE׎ H=sM! yKOϗ"aq(>7đGY \es+!_zLY( ݺ{Պ q=vNDŽ]V<+AhU9%+cHu*Zruə26G%G:VvhS.ı0SHϗ{W`O?"5'n܋łSt*{ .,}AM'0nNFֆa:#Z,?#30Y=JN/ Ц{$s[gJm`(1}\GRh{1qtfas@?L1QT' >kbXhLTB&羇B& d8nRSRHr&%^35qaޜo5)Z[y ˦s={p< ^ʩؔ]֠W xtm6Dk"P]PmF,l ,owEqc52Wzx=f#zX<+x,jRΎYqN" )VQF a`,S\L&q>Cs>zafwZ2BÖA#@:̟۲͙51)y(3?o:ZsƖ(tʟO"ۋi+s >&sI=#bj?57w Ηb~u;Za|뺇'^EhKbaQvP|mRl,9*^p2I]}tFZS ٱg(mQ:+oS'6~^yBu+FcT/{aP#r6sBa,R׏մ $n4u(5 yơsHŜ7E|C<ڪq'}ڢQ ; j~B^ #>CTDJ+]/yAFu9i2_¥c?Ⱦ݄!>"$x?ԋ|O;a!=peJDRP ڲ˘bpg\F^j,4i~vvKh6LݎZAD~P(2H1} vz]];k>:$+OGppA5G#'ظ|6vR t%~)W_:/«miWohޅ Ew\!ɪ49Wm4OHU_BNg0^+s,ãNˠ5ρ'y,l/ C y'̔1lqֆ/*>SvCLPtvwX?=7$er?W~r)JZUC3a$Q \NF6 8C_܊?֐* ?Q?hO-Ŷ_fAAKFA6t\(i?S$?]mSkp^m^TiM; ^1O:n9lB Zݰ)D(YOg '/CЏ&Auglh&\`ܛ\ V C(.d-OQ]Ăi<+(U;W"=/7/q E~/qX o d< aLũVOh㈒R;k^ѿ3qbO޽5^ ,82dl{[ֵN Fc`"?ubvl&:F=8 :ځTmE9,'әo6 VJtt4Z pB{ !Y}:zٔ "2³já kYfa{`p3VjLگsd+΄^Cʨ_m)[zhc97=N@:@r9ݤrhG|l-l>3`e`ycvVúeEƢbm/q?FgH ˺zv;\;BFf{;wʤ& 4:+d ut(Ǧ ;~w,l /(jO+ 5tX.ΐsT4$NuqX1{#q WP l6 x e9-OGv :o( :he;! y"lCv1@Pӂ1wٮ;!X&,i%CV|5=|.]k6e@ٯV ݯ:>QrO.tCj:̊myu0? qCz8hۄ+GxJ8T,'j Tजك"{7k<존[>vT:Ep2+ n:TGr?,C!x]R2h" g< VJ`Szufu[*l Ť)b>B/gi^=P1DGP;ThL+񽡎ozt,# 02QQQhU(k849Rdmߤ 8Dr(_&@uv ߜ| l,2W>V цҾ({y\!J헕ǛӗO؃YR"swdp rQ/\'r3o̜RM]8=c2ܦBJVa.W@vP mRBmO! rNd̓'D Ww02 bt*h1Şfq@eV7l?g.#C d4Xߵ[$x֎t M{͒əlo)'"0)&MyJkDFu[B #!|OH98R_%3FC^+F[Kv6z9mM&\QҘnvA2v<|| ,-3ݧ]JRI*k$srޙYxNoR*Y-}s_uTM*k0.5lq%~#ٽ>^4KZgA8adiU~MkdcXux+BXdrκ[D9JѶdFG斝a`p4qa;l}5Y-#`Vtw-rPC'a]R7uLP5?N!I$Hbbk[oY *oN13Ð=ә}nHLYjIF#dOQTfcmbjqI Y$:I! Bֳ)W#PaҠ$Ϣg5W1"Dڊ+۾%d+d~QUn / ՝9≒V"1LbD_ŝwj!*L-n&q.nc#@X9d݁p xJ s*uP 9ik?H"۠?c}?>~\zSU-OrTHȒe#ɛ!e>&MȣrԻ7(޵)ӑj3Jްd,h !$JiDsPiWyX=r`̂*O( !7e͢VLyߺkQX%jz\emnK"Zd[_e@{@/rNs;JbXy!J35B[8>@)w HiN6FPJR%r1Pڰ_<y"O,h[|C=kΈ=;Nirg FO0u FI%!*1SCBĊnsh ҽA ^9KE:(+U!,y*w&5ߥ:@* |%Q:y:a|] %#FcӁmy4%zKFqXPә:kH klٴ>Cq.rB6^FXeb6w*jwH(^)"j#ŀ,2)goV aʘuť6XNyeϢN+Ė$(*% Om9V.W7ȤpC8<] Té5t#0qۄ+Q#^GZtU YSEǟ3@_돼*,S4>$?lK]3jl"͙ì jqiL쮼6ѧ券o-%sp_Ëv ؎yM +T]xk$'&SX7D\U!\l}%-d. :)QYItNtU9Ƭek6 ~Ih*X5ٯ\4$3p3e1FO8,7bg |'fA$1<m];! !i)~(=hٯZY7ܝS}t|,`I.3 8`?瑑OAީ[zG|!t;`+ι\} bDx׭."gS*LA'1:`@/̈FQ3f>hav.#NPM ܄ [P` RNQ ; ڃTv+KQֵ Nsc(peLv[̲9KIW:tZOhu kO06y'ym]ZpE6, oz})>cKh,,Z:jpf;ֺ=OMߵ'PΆ*,fDQa+2i+:: *$?lx–DGlqȈ-7 N߱w^Fˑ~23rV*ϒYr^cݘ^V%R2n6x8^u #MR33-)`I51xe Imo5Ɏ0c `7 Q3Q!'w k~(3PiO {y?9t> ?GiЅ?ߤ%Y*=h|pp CzuڴQQXP-%@*á$- +;>JǚۅC J t~]24.^)};d[vń[v0?ߨ9աs_75 P`{E U)Al9) 2C(tэi0!O "?@E6JrY n_;W&@\p᯶@ xJ2KIRử _qT(D yQH a{&ݗOB !~$fQ+><ϟ(Gbݰ=45|]躏+R=5Bi)̟>$yzґIj>8MSa0*΀q/UGU^ ># jcw3Ĥ# '7EQơm#1edA1((em =cTr.3IMp?b"`cl/Nܲ M?NT,+4ݔfTD~$u1T:>HiAM* $ cCAC;G$iQ`GԲJ:lmi 9PIEVIK@mǰhdzedybLa_x}o)qz#RW3D=pmS9$_NrCl! i誕Dq VFDT#KcK50y 4ۉ~v HpAֆ3g"ӧ$rco) $#|Vh + lX|PTi/Hv9N&St)x!p$5_8 $"EQ/a:vERF;#]GKCK?}v@prp1Ĺޢ}5X()Znv`NWv>o*mm43_ƃ;?S:OO]o`5HRZޑy尞ӭ'ϫ&|ح2sQ)ymxfv}µxL^ = R^FMjb4Yfj[6D~J)h7Ҽah!qo=ed( rx(đi1ȿl O4xiЖՓ cq" fVOa܂D_AWhSUSɤ-b]>)U[Xwoq7;tRc8$]~,*mG1w:Ƨ!KQha nX P:+fGqXy,z!4UZ$I3SYlmAH3žKȹ,zT@ql v$1'6 < K*P"㰌HA1A?YpnBM-H]-hאHr``RJKI ^uDs3l{2_Xk5$o֐@>pqa{{f C[H:u$T\ .Mj/$('3֜UT'*CDoXSDR赬`D2v7Bb}a4O< iYz\dkIo&wg4Ef/.<>6$*ߖZAB+MĐ~<`UG,5fGxt(%#b T'ck kjr ـZ2|Nvf%WtiVE!A&CnU@^xC!`OGf섒Dgx}/LÜRDFzR<8=v`\]QZ^|"K%J-<x ExFƼ=0(o.g|61?HU?}8pޔF')M!7.u\1:~!Z(Yчl{L L* WJIsG=BdQlQeEiD]eYijv/O@N klݘ0M%4벴) }b*:@gA3r>|6 c8t៽_9#z8%O[ބ&PrsH|vL{S1u.)N7*6ig>셋<ܗT"bOm99Wֳdh|)0 klL_s|]wHFY@`b˳ViBY=9ub4 _e$_f?\׎jB]lst>:#?J`3hZӌʁBBL5~ ^$ BUE$]nNM7F{ W4;QZ>'}<\&,bbt"^ y寢Fn,RcEQ $Z$0?lDi|.c3C©Xl=T|zN?Ij2F1v|dMaR}seKctՁwoE8=or'r 5F\TAFyйGy%\cCH此}FHA#pi'4Cր;obw::d4U͍9=Ղurb4D7򭒙ɻכw-X<ٺ"ywCŽྪ%䵩˟ƟM}PϤ-')Z#|} [vzf޺(Jg})_]T^Ei* >ѯGXn7X !IY' Şl2: FN[)LXolƦF=רԏœN'#w/`Đ.\Z u RMA]ŊؔYU`r"m7Oxx_/X`A,`)On[b3T׬mFLwƻT^uCά01鉱Caӹt'J~j1:z2 ɿ )XACG"3646}7=m*Adk[er8dmT"FſH2Z@yz?Gx][f<) $QDG.ĶΡ23]`GUۺF$Ą+A{zZJƶxE}e]oXep-_ݖp8#tIZLՋ0ZL?ARQ)g-zmB{M8gohڂ=gѪ~ mK il(/>SJ~Cr`[q84ף${H!$eUOѪ %vPܦ=Q?69:Q]X |0ͯqXFANAOtLjEM.@PH! Ǩ~+S3|c>;ݵ)M%{wޔ7_h5tƦZ? 荥J}/T~$f]O]6.bu?dӪ nn1W Oݞ74ޜu"\P{֡]VN ?.gci^Έ)5bCw{A-B m9 Z~ HxUgD73{GMJ_cyUHI,"7A]SV}>i|Mр6#T9oDN'.)9\"qT(l϶ٹ=[fi,~ ,ɓmlCnVv~g pwfݼsѝU; `XhXX%#= 2Bk24&CkHkDݘI`͐ys<1$]E$xX cHcIN(I\Ɏ_44xK±ݰ̕сYE=܎Ğihc~{/w.ɯy|wl ҅qbE9V'eر=yrǣ%gPdǨEao20[g=`y-h( E|񯲰(^2['rcA3%8VϯlAB~Aӑ2eI/!1J4T'.Pk`yn^Q(561"ZZ;@sqo3^'+2pk(#E>ilb3g6+eeVݰuݭETi'fm߬KCq$²$uyrc#.ܥk98ۙLi,猜;:%NWZίdF!_v'FǙO#l4WZGj6ě2Gg3 89N(tVJPFϦC/_;l}P;hyo5kɋrX0:a=pewDt &̉c>w:!5UA'6 SI]b2=D[ `-98Lt-"w?q66ܔ ~ >H()($;"rk&+A@p zݞ0bi~\=woZ{^!(޽HY#7fcoU;u@f#6J1Gk+0tG^5:R&4)@%0T.1K;>>>ϭϿVod?%g) _ ȋ(ɛ1LC,2\YrB_^*H"q =ȸj{WR O ( a?SzБNP8JqP ԟIKU#Nƒa=oNcO*TH>VO& vȼw,$`}T~ h x,݀I%L,oM MV.س נ;+q[tጾqYn7*JO*pO<5)JCs[ *f*I)*H;~Uva? 򡕳 (~rvYd'x`9` #IT:ݢJ[4ǢygNPnJBE]N}gz-+{9 ('n\oYTƺFV:M?$xmv۔^րIQݤ]l ּ;;]=r{=ݕ\ܕ#.ѕk %6֕bߧ۾ֶ͜DC?,=KÏ ^;*0N0:jޫ(HB? \VW\^GjR"W[a,]_TI:2-'JٶdX'חɅfu}S(]Q Sc9 eKzv Sa_gu&)EN*h'oJM[_gXPq1hh~醥H+r9SNl5lFo źYcq}6גe9 z@~Q2e}`؍1$p-3(mLLcU|o3 eVA5Īz-zcVe?0}VZ;1JAM'C@[ ONped΋]MQN3ޏpya\ }T$‘wA:?E;Up ڹ ]窝Z/n>l'[?>\|%_w4.bnڿ{bֵG[y~f; m f;, Gl͗;T +";Ԩ]'._pwJzaֲI XU87ٚqOMíl:TȀkZf.*L+i%* ku5ZvYC|E0p3P3敎! ,%Aǐxۭ̓$+1tD*Eo)mm- +y]r#O*e1I:4J 9U%au'EJpL;aBEvYu.Db>bxσr0d^3) hfǮ`$޴d5ll(O:UqoiCrɓ^a܆$)YShE ]),8n˰%*q3/e։^sus^)y7#-&Rq@&O<ŵ܁Ka߳72Ϳz ~[Gu)No^`6ـmV!% Nƽz!_+TX% 5*O fsѝwXF_'U9Dd&bOM)0I}iС ~ lM #9uٙKխZt ΥjZ|Y޾o;Ogo?JB?HnN09>Ef F|G5ݶT>?c%/;¢5ePl8}NިL}y7؜mX p! `_gS4>' 'J<ɵx;\2};.ho̓|A:+H,͸{+1Y zMA+XZ/h\j[dm^K/hA Y"VC0 [b6iY4>WI5ete!鉋d.HoVAAZ9A,UW#H[ic燠ȓg?ڕ f_~]O.|*@:[:/C:5ŗ.:aQF7 *AE0>aEnS#kz{7~MEsJ[yI߃$ pH:ޤwf<7tӼݖA,{L;ķWfOax@7Y6mOʮO ۚj#;xQ[$t|Vfif@ZjmE/[=Y"\na[o'Nhlۅgp<MšCv('  9-X~.0h)2zꕆ_[VIgoڽ$R5Fd-T\27V@]?0Ke.ж3"Բ\$t25C&XāPLmû(?!Hr`gHBHi$ ϐ9~5=J`Ӛ<ݺ:*q ƛT-EMծN5kHg6N5THf7V⊤k/{U^`.' lH4/ǙZ-v!'JCْz>X]I>k_ OHF hFէr-IUbVFPy=(LO60Ah3$ UvudI–xRߔzO?V, ^O?hI }/P4 0/2+;͡_ֳŸ['A3!_Caȃ)0O{"[%z`;U媌 ҼY<ˑ F)+@GM;mFlktyJbvl>7-'ո1KнbÎUS4zy_`Px5.msK w#0PbW/zd U Qiآͣړ&HVZR2oMoqY,N{&Me󇴰erNb=Z.'׫b\_/OrSjZȌtvFȰԠ;Es^o¬XodE@0Z^ yMVbys=1p9b\ C\VI;6}Q{ oq (@"z~B\1Do3! =ٔ)0EKH_twY:[-(.ɳ*s9ok8mnϤ$+4Bl+/it\++nN".8bC&`M8+E%f?TekOMNy QWmxgsn˒WVkGzE://=˽RYCmC,!/ 9>ʄuḸ6O"B N;&c/\/I߿Lp$i9tsͶSDʷd£ӈ0senmm}aKb.eq(LvAvb[zp~u |<}2d#BxHN[HGz8v0JظW,xOKrI9S^^|v/=ՎqT;h}a~a5EZ^֠ Czn)XL64}T:cC:ڑ챒4PX3SLѸ8^=SxKsT %(JpD6D^c%g l? 8G xW#mȮS[)ݒjtο,NH}sAfa-JgF'찦qJ8S%0tÅ -R>j›U jg]5 x^Mﻺv=ga p 8V4m~ؗQ6>?DׯSxCԚdX߮Jg %DCh߻FqjٵW\k'}.+B`zOtݬ ^ `U1_Rz!=Ks}v2!$m='ȤҐ`Nޠd+~]nVqܘHNXoB+( Q/7WW@@ւ88|27 #@u}=Y>Ϫ0+W]-ŜKboI Eep1iʈ>f<^&ף@ RW7r|55ޣ&Z/|kћ"zoMg,}ſ`h Ɠ\O_qW E4}xwL ?@:7'׺-5GEݎvIIPKdQ01I%iZdM: Y2 Jk57ewd4\ tD>}5됍=J[}' ItBuPk;6hT˛?c ^Z oizR_lPGpCDŎZڸl SefhF3$э1E B"h#+HKXoGvIV5iF{ޗm]m ;Ae!g`Xz%4`//'uV QI KuewwQ%|8$`4{h_&/718PDtrGp%C\'$v+ˤ }y]_7&7te7p^BiqJ!]`Gktsؠ|" T'|2e|E{}&C,xǒ- Z b7S>J״dV!EIoMGE:`^#w}峐A_M,Q{0ƕVzV~ fÒ^e-R^x0Eau9[qk9wYW@dMWK瘡zG#)<C<5Y;]JO~Ј:qцo$ | ݳW_(%Jŕ(R0qcaORcnEAO?7luiOG5 /{4 &ػ+-/*KF9܃اizBVs _' j=@'<echrж[<9lWߚ֫}Y/eza*b?DvKz!CMD޶.AaV 8XWH ƅ+;50:0A{I7*ll"=ǑEݐ?kc )`mqߐ{|~ȃ1ŧ00.f&>cϸhVH_Qj)k[!n楨 rP8%N[ԯ%vnEhm#Ԡ^%e՞h5%rfTl&s~6 Υ8Ĥ/e6kCUH( ZP&.xu&Z|gwK(DL!k0AۘsLlm4#bN>r-o3KL Y HnI<[bӵ/ (6lvn'}$^Kd'&$ 3pHR~o\'o|Q+> J0 Q|<LπT_^/i^kE6C7_mîLXܦ_ݜIJZ<^(0id.>]#rw5C~NfňXS$_S*XnUІo .R|b*GXc2RyB'AEAJ/$9jZ7]f\~8M3 j^Ѧ*v%1<* 1靸eŋ Q:&l"ʡE%ɭ kZ!GDԏi9Wn*a4/Uh3A?G=!zQ_f})ZlP=~P rD,Gј̂iܽZbiuJ$ =P YA`{ iw$!ۤ4Ș$}nPiK)y >|XY)Z&z/?=ĵ@S(:ݠE(hа!",')1~OsV6o2kcޅgge߭~[ڵI_T LRlYBG3899/dQWe慴sM0"^q#LR~TS2Ԫ}!S枥5d 4(w0)O h UI@>t/_~8;'>!T-詣֒5jjU_5ɦ0%*X|LBƆn RR`m equӐ˩Ќ,IOx^tjC7K|4r-MPa)ʪ ,>+Z6hۭtʴ^'^d;ڐg߯KF@<[,Ϯ%xNvvv04LX-%XJ׳;)]--sSw@emfqI5yj1ho[6Œ@rc75ߦJu-+Hh)H9e 9󝖰dx4H)_M.f,Pj]6e+˞/G%"=P`;wjbZS7ɖ~8 ؽ҇B@PΧpR I'!֒k[UgTOhTD) )J O:ePv 'PS"ymNw]Y- ?zV z.κdX8uelz<5QOɓHeKJ |)Om_$Nbt,%G[^KQ_[\,,FlaK2Lkڤ"l)T_j!xWYgAzH Btْ7( h1i L=,0RR`)EafcW5m賡C $9U\bzBLÓl~rMq.}-~q0b> H ٝRvG (܍Y. 6\}FVYdۛT3AN$d2H",de&ȖJ-t)(`,CM`D0nf7-vŁв&9U~aERmE(-3+wjf'DjбjO 4DN=A$&I1P'L ݵ/^hs$AX%U݌%ϦGJ>(B.8aD%M6A)(Fz|̞b{^?`AMXED {pB ajXQ%:ZQ%&8B5kTT,FtPbq&â$CG4U!hy 7S-NAM7B, 6X?&=H(Z.IZݮB[:Y5ZhIL=Z.0.k-N>,BmFmiK\6%͉p7OJX .fq(Capu\I(@ P8ڨ_5X{A8zO2 0于@sn[3&Ao!PIcUk(@P>$e֥$}<5p-]1^u}}ZUkK6U,~V+)nf|9.-ZH"1b/FAjlV2e ,UF(r{7"PT4Juj+ FS8|7+YT8NUAܭIc1ܢPŖ z7Fۨv=q ءUB-V%!FFhKՌ&+"ѧG?qZl+RC~ћʬ *\!9f0 T'W ST JlclU B@{I1()ƀ z +D@7Ag)5ŀyۘ>xJ?ʀͣ"҉C݅_w^!4y*Z#l661 Ʃ6R0ID`0JگF)$.{#Uc_\,EFֲBDꕸph4>y)\`°ΏEwkW ;U+k5gc8T#-96$brjmco!;$-K\$NU+'&UtKU!Ϛech`h5J(Nk R4jL*J )y{)*Y׊Ȓ!LSZKVhHI8F[`6 f4,FW?&LP\zPy."V1A#$Wp)H-R-QPm`Ul3ƨNJ&7'^g >s99z`hj m{I+&5a)E9Zb1 yU5 &iHhA"cb2b0CTՖpvÕ!ɬ{xd-ߜĝêdmm\YSBI;N)QϞ.@]@]+!OJ>s",0fNiv͜<׏M{^]M0 ƩI>$f2,ar3e-ƉJ Eq*wYԦw`_eQ}Jv+*FSĩS[G `5{SUp7m~ izr۰L~4]dXеTA؀ե3h`=KiCK@Bq,/9Qk68QdۈMhbe/R;v@KqIbD?KCoMk݋ f44֥ Ҽ;4Q@Q^NF+xQ^L$@޸'%m "lR1ICDҺX)@ beAؽ';Eb47-&i@h1B(IAD/ӹHbQ(hG0<4}`U)%mӒmxeՌ1 (hq/_$#"@WQab)*Y1G*BQ`me:&]Kk3ҡ( Q--Bu?t:z'!(]OӮ%KVUKXFS;*o2ޓ-K`8nqD^0I2+54$ k@HhiJM{#uLN' Z# BnpIpG:'RxubȿMM؁ML\QF]<0gPkU숒T(Fg?O]*U4\&IhI2V`{l8Vώ+CH`4S2sZcGkIw}nB49@wD՚ ƕ_S\J*p( D}"&kun ͕,H h-ؒʂj@DѰͶ2#`-y6m=f?fx;j)[υ$׺i;6>L~شm/4TUm@f-DW8^qDIl0e(JS88DX=EmF(Ilcum\`Z3A+OsE(KcšȝzRU|`~nhŎ<֚)AG9I\7$'YIZIiSpcO#B(*?`=gM+7v"U=Ҕ$}zҡ0G=8˔{r@7 "4.Gs BRa1il #h6z׵$Y^wVV[SStS7uȦom 壐b:Y\{o T@FE" x4ˆʣzuXaջO][R܂h_\ȻFWV0ԩ;]M:YNwngz]=ZH+%uc<', %uc𝜄É mLp7/IZod4Sm`UOA E5U^1*!hl7KFS85KyT7>bӕhG0F 9* 9RʪZDwÿ5xrd)Lx*G>eaλ׷ +Cro|JV&BIC$сapI6Z/z((+AD}hT6-gm_B`M ?&ֆlm<#[Ӡ ،B&{EmU$P+0x `’1OLnަ)}J$u =_*ǖ[gUvKMpS,p㕧N48JY:8 k|Y#E]g>$&WYmQ|59e\]恟GCN%FR f! Vvļ!:^E 8ȝP^nYU-ΉhL-02XʙC9Z n"*%֒HC깜rm"g mҘ$[m\?I0!snIm/IГ6 ‹GˁƻCK%cPOƹR\|&0%3;qCws9)qk!Ei]5Z _!g(1&Y_o(W-I)@No2ni?1tPgǘl8UNiEO*q0XYHq+C·r~d&7kBa<-v9+и9rFHobfYdOiI4VΛvI-FIa;d ؂UdP0+$rkEz۬` چ yķ[I=j[2ɞƑMD~q 4eF% <݉ENYڱ4Z!$c-pN܁?x^$G"eq9o_/n-2'֨vxWicd4Zk~l=MR> L;p)AA"?߫TșK^3> DS>INV閛sg0o Yi2e"f߻3Ȭeަ` FblҬ?n;Gn`ɰ!.PD#hXܒt ,: +VpR' ]Nd#,TLDm9NIY1d:KxRtH8^ poL7q 5ed*X;(?gOn4ׇ*`mѫo6gRuR08u?Zx2|#xVG`$Ht*;mkz<,ݠr× <r E?ЇU@mk̍q}-(iA 9b:_ϙY]G@]k @3捑-uU|AzH Bt9v'wU*^x`9vTQ8q5:xjYt&a2)K5GIHҙ3FG + ̑FzZV1=&UnHrjT,H~ޤ X$ |8;L)dd'Eꖠ`r\p GٕY"1"=ۧM%B 7=(R"%.$)!5I1Pgs"h-: q+inQY&&uN1跁W)g`[ِ QfX(|c20 KF' 5aYmTF+dC(z`ÎIIY=FtKHHuL!9폤]tVx^u L.@SOvVlC+h pcb߮c@-g:pKk[bRkqpZ>YΧDiϮ.ttDݵ~^=\ѢC{ -ѧ]i'wKO.MM 4cs(:o[1sQ\qnzzLW0Noh+r  (Z ЬdI0@ɞf&}N"aԵ%҇tcL.s1FT&p]^|}B&{uN<W6:m@6{8zH_N0!!3KC km"`':Jr'JABO=cd?\<]̋1{WC Idє*"priIMXeL0e!YuzmҼsYܔԋHo)qSwnxTJ@( AGؔ/[hu#*̩[bEiCr7_vӞJ@:^G1'S_y،mROUh̫)VE6ư#Ta¿ FMӻhYR K#$I`(#yX7ohtc-"%w|Yy&.qi5(A3Oò8ɺRJPvzܭh1,U{kl>'yxہ%J0- ELKՃ,ΊG36ΐ]J";۲% dSNbÒ'ȇL;N)cA ݓxEؕWJ;xqZu"ԠP 3/ds읓}vC%äa;ߠt`s#&tIҋi~[& _Eغ$L$DE?C^t$yA+BVZ1eu@卆k<y,\s=6jkX[ KK֣dܠCk-Z6'[:ڦ(%XqjWf 3LxS͚%7Jzur z.A {oBI1)b@h e6u~ ~Od}d.cC>tI ~NN>) uq1f}2'悵%w7+GY"BJGy*{Aab`F_;k? El-fsEYo@9,C$.b81jxr>G aϗxAh +]:\/cJcUiе< DD!JY HD5[1ƭEL Ci `vkThۀzV@5&} :}ٛ ȸƸ:jCATVQLC,Lg&ƪ}-epR}n1&G5[neDh\o#?4C*Ah{X,ˊd e4!5[03+~4u"G V*޺5d2ܾL-rlNۤPSx(/oz2CF$tP杠94#vhϒ)Zњs^. qw9Av9`]x@`<d1Ҭ}5f#- :i4?9( Ϟ>n:~C%mAţ̓Lck}#`c+}v8#(Gkc!wIrф4+Gnā DԻ{Ĭ0EwWb!T"%-P5[ *(`p4Fo!hdwtb:pZ8qqt`[w./dvL߾]->8IbGy[3L@R/F#裂lxCZbI <NO *iO2vKf+(}z!X[PJE*'ܐ{:VS`b'zxP$#jzK^.Do ͈Eќ]꾅zbkjM B)ly:hr3 bċEkay*S`nN 7rcg>%#J;4 4 ց|P'Ob|kiAfNP]ϩGd hD"MQI8]a(&K-a{}ChLe}l>N.g鿿< ]wK,@*R8QZT۶hpCPPM$֥pkmW0+j\a%vIW%NN9 zONN60=4uУ`~dO;SǨ"c@fgE賯^/Em[lYMN y@_tۻ5AkXjIA׈+=zڇ^KK~q&Wp*=,t$|Y:o#I<-P'ke4\Lmy9oUh-vɔ6FAPEb͞x4(n2Iި]B SA^m5 :ŶɽF\m0a=I5dz xQ; ]]\p24>JQNessm9P(ĿCݷuzX\WEO^H=9.pσ8y7<8!_C ='ETdb,p/4lTِec``(0l)׋!urv{ Jx_0 G bp(ڥfCbz}fg+%/t$v9(e(btvWߦwWKHᘷ_~)7CHwgEh@@hA/nȗvyu(A F&G-_%qs}u I x y+|v'-/ZR8K{_^]Æ#Po=:) E֔ fFl 7K JP;B=VE^ꏛ$c;k9ZY!_zu2fRc#CI=e>8C6WUyyB߮$\} wd(ڱt&Zviz@!h:WС+쳡6DvX.31s$!x]6hS-c;lJE')R *usWQ~Uu+.?]'}115SU{`u@,q t^}& ۚ$t_ʹ;C&؅;5)O^4PuY'h,*VwtU$tbo7M MmSx1zd,c1'zcvytieZ.ĄNM68\O:ع`+|ƽrS?rb6_7^UHr08_LMgdo{`+bڴh)<2Ox~0>' /z[Dui|}c әDPd'+ ̭'#6h']C?Z&DTK/\'sxۇ-g:yeIl``VYt8܉0 :NO\ d"(vYXzXf4m>ƹ:vk neʉ{䖸uJbitAL8F;ޙ;8TEe($Cvtr29`>G:gxk@/ֲ@Lp?z*ﲊM MñCӉ2LW@8_xb_ B>{"z3pCb'mc?;p.{ʥhքid=P7oi !txY(xu{7^[շ NT;~Hcl-ۢM]Y\#yAuh_ 9rݕ ȻAaH։7X|#fpMqpGc;Yv t}=HYQ=s*hW'uzԃ!7]M%'Ȃ R#g.^6ľSUbjߌ8nPbG6nVQ\m()YYј1+>+u؆9",rG!.)ǚH}+2]=YEqCzBbҗp .@8=łK#tō$CytF6Buv~56ӻ_nz9 o?$CNoϾ^Oflu4~;}>=_N/4ax;#.W[I/Rc"E dX\?4{4vyuRƥ׋ƀL8Ї&QLЃ^_|/P$G`0=bc\]'%Z:ma7 36 םΈ^gؽ}x@8 [UF򹧞e9hqviJlS|WH3GF^i< ~2N`źqH &ɪHgMb&3ֻ݁}Iw(;`PcnG 'N`γ⤅ݸ-JlH8%)N=*ۑMgmYس &x;?Zp '7 YT#;*²DVܗ%yv*^Zw lmvQf9v9h'ςi{Fɶ r#SXեc()]4I'b%y2RpUPaBSr)J_k ۤ.-VEyӹ0D3>lDM&(ܼ6Uoe? ׄG2YfY! 9b*^+^UiYxb@܍u[>;lj3wNlSS!MXoN\0۸~ &r AK2u(`wdŶԫ:*lꄕ * ~!=Q>^d??6)|֋ىfm#cz\%yb,_'$m'{/W}uhFuؼ'.H_#e:)r GI2~2{OƊ[Ajd>> RȟF-OL15h˒: 2#D6I+efXSsF8eH %*ˤE+?.?<?1T @F[?U\%K54d9:C.E&{MXV+5D\@uM@>k_ 3hPhX2V:Wj4jpPryKJ5ɋfܒu!Ws,)$!*9Qg6\ݾ#XSO`@X̃yL tX"ė>*hˊxjg[%p+_4DsvG\_w{8$n%@*;u_۸Q@O*HP9ı خnVEnvUb쿳2HI8CUl#pTbU$ݗ0PTi"k0M$R!PXrImc'>jīL/,糋i~yytڹ+YfE JQ<+U=aIRJC#\+(/U+eĒx'3 M*kaŽI S n(KxĦ̇|$KvP62n D7J|<0}=J:G;Rsjm@DWG3(Ex}(\ B\KNJ Ix'FsG@*CseJs wAVa&"8=6 xXE!K: Uzu\a[2Jc QN@uԎ|N1Yj,K`AŒH9@ƕD&+Ek?Ugр]E4 SIO۔E9x߱_7B豨8-YgRoN~q(_'3$Nl|ƫAv8_):} 1Z[sth:J-eUm)0ݢWNo[$&H3V"vCYs횮>}DCbPԬ48iM?p#5Lu\Owؐ+ x>Ѱ0J'ٳqJtcnj̈́ wۦ6DαлΑcӔxJR/<XGz-D-0 RLqڅ5L:gO2wN:6&iZ`]-83*bTޥQ=(6A3G AJ)Dcp2z[v*eS r4tv TjxȓZWt7&n o _܃;ߋ1xUmҼ[+Շ)PΧ}| _,^7Qi9 ĔQX?>xp7ץNvy&Є*C/9p363{~-%[=d W3k \Lg ~;Z 46Sfx_wg Hᒥ3Wf\hJ&sC/0f4;LR#T"e1̜S32B:cR{BE-m.Bnuq , Iǐ=&.[ݰ !߹0KP?ɞ1dSk#5fK/qQ(ӥHʗHinDό;9ux֮\J&\h۾]mRу =I}hgvbWLcljnX^vI$KfQSDI:ca#ڏ?IF]P॥ow 4Z>doյ1'VR;vȋ,̌f &wa3%鮠+Tzkz kb$x|AUߙޝ 9~w=4˜h;SՑ_QgIC|RY:KcAl 3PNz3S_=! 쪘xmA h67^#݋654aoKZdOK,YK="K@-6ʢSVX-K+ U%+;W81>| Lzg]7 йT`Pڡ{6^4yn9anͮ)*).$_wZAGXW,~cCA_^>0$;`?/$$%OCW9$?X% ?!;Ln!O|G!O8 |Ycy4 $ ;~]tNٿH/Nt/WqIZ>?Nt& bh SԆcQ<նeft;{'5㭏+sұ胤,pw V|~xj?׻Po]ک+my J&ٝTxROd v0Cqi KbfHKa,,?J3i4IbϘ5 2_.,57Cg!_;kEJ:{6Ia9^0%H\K#2W:n5& %g) `y gYyöd.vXi5ͱAl[56@>! [j/@iO%@R1'NR); ^(]ʗjj,}J>j>1gHmlB֙.~\ bAYV"ZܤȺ^BF̏ t3O8EnM5dq^dQ4*R۱*0W[O ]tq-(7DaūI8**z [%cȄz) )?xkߗ^QZ(Dg脸4/5i \0(]5Q2]gz3.?DtXZN3 d>J=>)SA?+ U90- ?=ݜ c-E, OnQK)] t 8Z\a얕 )U4^;4jRH$I7#|Xa21sXdBr^Ţk0nC&v$klL)E GZ2g =ٓ4;bakub5p- 6,n:.Ż@$N)&j)׬r~ya`ViZ/MJ$]Ls;ٯi6{0#YCR$ۢzz5'1`A꽵M!vQ`:']8E:N.p\bW9`fI \5 ,03l>Ogn-J~OΧbCRQp!?V >OeR=D+MiH%=rlt]!OSc؀BI3: 6(&~,G',0FݬKd*P_K_fAO+1g1'j87,ۂת?Of4 /IbD!#GI{pPYbSI̢ݤIIʨufp9[!Ϭ0Jl ]Z~N=,g 8+8Bl\${!eР)VT= ry9I!?(` zBۙNA؄np>1󢉛1f\qѦ9_Y6[Blm1#\Lj!Fr^J}"HptٲWmUݧ (oGd͞L쿍U@*o 6D;ぴ.\•j:ek|E~XGh)^O&IT'XPd "\Idюgp%B2A2KlWS5ڤM6BMK!7 ;R ֣*{ak3nKش8,5/I:@RdѾ!/ -Ԣa!JpÅYݚEUJgM^#>n~WK :f5PW%U|-[~.ٝp OldR.#Ar*.y=Vas~ūȠF MLzfuZ7POq* 3P!-Mѡp#+q`v\"Ttꪶr ͨ~FARK)KX}<} giԫTPId¶R(AyKޖYcTvߵwq*cߐ8EW8 "WxI^e;<].ZC6,RIF(zQjBO(U\B]\(#_9|Ŋ w^ַq|NzM3fb*'Oh;3p&Wns_T5n-Xt:tiiZn-+Sn(sZ!B%u<ƺ]XnCZFR[5\LzI^':^e+"+V/W juTDUI.l.o J8j(;z=; %LhoQJ0|GWb q˻FtLw}mo*kH)DX } 3X`Rq;Ƀ;G6`6WuD|6t~r$ݼ{:̪5~`sE$[)p~s7i;K &s7؄8m[Ob%$gW$|O9E =%nəo])8ae1@z;8QOJ4+.qy"C.sPC&FpbڀG"\% ɨyv(%3p<hjugcMW۴;닫'W?Ͱʦ#l}{|TWe$GXWAo+cD`>]]_wmx{yS W $ˊ'eȄJu1?6:]D ǿ>?4cp|zkB-^jMe=:^U\&4*'x\Fyv9M@ 0nu3obA@ D(#)؝iקh W_=z5Ǟ Qb2s[Wvm%Nw94nu0d4RbB(i]R?FDϐ &MTnvĥn{/8V^&GEcKԅ&+,z4"gIa,/nWTîE /8g/+zHU<զ;R\w %EDk <\Hrp8ebK1^=lPxAZ|EH\JL%ӑAoT`U%ZAaPXB $^/qg Glo(^ISa0UkV\~ȷ0naM$kr -%ʿ}bml[M聯WS ~a!Xn}%g viDI-{X$,~%&$kˮ#q:Pƌ"ⴛ:urKb~AMJY4 | h**_x?P5Y̤%+{M ɟ CXѮ&4ʏQSū>NE!V 6?D? @B鿷.ޟƊCꥉ].sR /^j)~96%s2,tƤ IV0JwnД)FZjOJS(xpe~Nqjʿfs"7ƌzVQr1fw{4A]#0:3( T<rTJF$ˌ"theS/edoWl0jd3EFVHb1(Tea\%mǑ 0xX7oylm@EP(qw5\H $|XȐ6gb!J*mi2e ^H8Й9ɯ.BeL$(BS wI1Y)TŮt"LARUp=r'EpeSSs%%s>]`\J9k:LaFpZG+vzHLqsjA1*X%j'Ii||Iϸ 0m5rw٭A1RuPnu|ƉD*oEeW)NohI7dZ(`nFښ, /n~!-voJ1.jQMcM`LRqWR|laנekY[bCdkfQ`.ױ W,מgn' q3#rYBJD_r {TJqbbҹ ˅tvog :!(N%hGDLvUb6w7F˳ſx5+ޤϹ(uB sѾnsEĵm>(7U b(2@`uؔdRbo|Ph78_}FvhJT\G9+z_霧2?#WVIc烙Uo'[7džkqx׊!1@"G̈ET.*=ʫ/[0bmD/{t EDD+ -.Or-EL3^7h&Oh:"{\ΣWGN21)%&eo3Cy N2\zA&/W7R'GʊyIN 1!8mN| ;^W{KeP.YM$/NH^(M;sjq%AWt\ݜ͏A6FAB#zҳ6|58STûʅ50e!0/@AAGbg1Q8}u[Sꨈ8y#Ac\!nt .ԈaN~"6p ~.~lAtf1Iۖ~Y6]H*=U=O0Iy(T1Yt7+YYhFlvqWОNaA ?NwZZ#/KGHxXgs1=^BdB</ \&(7ē ~ 6;,ieO|;47v"H'JEVʐ5MT{M#AtX k?yOGsQ3쀁 z yAgkЂ8a"a\Oܻ.k[SOTuڢ)hoK^KEKTcII91pLw3)%r=˨M]՘+94&Q3QeeT,`^d6z&MgMώ{U) 难e ҥxiۿ=);_ 0憼stPP~!ۣdxG5W:sVT5eMOҧUA?H\Pgc%X;rb|X!Oӛo4f)0 !pgx\?B1dN$}/k8gz\̝{"rțڅ?Ը*`T*+FR'Xx2F ^B)*Q{_ 7bf_y%< R=<ϛ=IN4ȁiEogg7XY f1g-.U;+F(4ѬXPSe23⦹htguqbv*/ZsTYmÕRe*Xd)G%>=՞NPrݔƫ$VoR% {̀Rr!tB'&Tiݚ@ظ,M"1]k2J {}3/m>aC(3X~&Cr!LbznIR6m;ſ!\^Ov.Xz;vx=#|4JL|~+K:-7솎.7:f!XҐ-1?Um D"K)buQqȏ?fMS*;q1`p >&񣜟Fx b>#dI'XAL0%}k瘩S2a6IaaiɳZ/d2f4-6ޥtuȭ YLR`T2tq?Y^N)SGN>pCG (` ]zzÞ.iKd1ĞHuw?ĞgI}-YӅB[hn:rlr [7MWEGj{m+-czêkCI6/|͋-i^M F Hbo:\uO UvFnn,WDIrQ0t#/ۗtve:p1//wW/3~L8_ϯ&>} Or_^T|؄\̫ d!^NZfvhJwEW4g7brM-H||./g7+R~9W}9wHmz٧;pD;)Z^hv}}|R}Fj76FK#%wCy=+ YqD3]|(z1|>+ꠌ㆚ SBWRsqrCOu?9 X6UE6#Ң6rz77ۋFV>F4X$ Etܮfm&~2)YN/NfFO=XYJs:a鴟8|sCaђx,gcqzŲ;NcPquK8\v%Z(Ʌ1/%fyZ7Y1}Z4d!dQ#%02A [ȜMnƼIR8w_' Bbz>\I9j ;4f7E]rк`>YCQwٹ9`)72As:`&rRa1[(Qj0)JX33&.]絸U7:Q Xk0AEUkU5׍o~Б&o}fhm!3XRw,XBP;Gr2rOv.?]PP3oadJ>TmԖ_0?Huvm2qLP~:1x<(b}ģ%?a@ț{Gɬ<SiqH$~\ӷvf"t$}Z)}f [h)>)#9׿?t jp@ SY ::b|c'U(sVId:jX1+eII_MSR[O2S`RSvh% LD툉$PaʊV&"Z=}es_2Ct ѫ>u9/f1r{ODCRr?w^"pq9bSKe>\:ȇd2c{zCz/Abn.fb‚7,ͅ)RWصSʣ/ϵq1]L쬅Br;d_k\Z3nIKPh!ONGOd٦Pu\), uEFmGEXi4ߵdd {LC>G983+61K0i wIvoYpd\iE Z~V? ln7*,Z⢯ Ay*=n*NmxJjʁb\?% -QZgufQd"6|Xt$Qڰ\%ɏݖ{GMP0Gcذç(Ų]`KsQڱ4䕳||{@Ri=GYrD\YΆ>Nꨱ9Hcc+* 3dO V}%EĽ~LhTOA3bFL\M1z\>/_Bjщ@C"z-2Jd[ɢ=Nyüe)*sֺ`Hv0J[K4*02FDkmQzɃX౗T9ڧyjuMApۣw(jJ)qU;YfHŨAsQk͵"}9ȞUFMȞCߕ"[֜U½ža].)k&574dm1m ^oEg*a{xYſ*S^a!aY6,E5mJh<P:{e@σfEOqY99?Q(i bϚFOKr K\'9Ot?W4 ayNd=#qpTٳȧTfSɊeH5Zi$=P[?,7E jx@ Uʼ)Tă2dWAL.05>ckćP`/"4s ~a|ey#?AUѺJeU_ߪXVGZnO$R*4zSXy%%X,ݬښM7$=FkVe+${#'pxg^Ĕl%.M·W^eN"I":w to^:jE#RjJVpM4* [ZfVДUAF/ k<(5X|AZe K;?/)jЎl%1S_L-4Z(qL6?vi +!NaGP+>p{=gy0tV4EG#xI9pJ{bZz߸p1zt_oMtDzv>79%RpHٞT\5mB8^-&%O_pIHUfb:p;ʓx`ΣB8,\&u;sMc+ָY|U:74N's Qٓ,f׍wHCJ)bB8lOT*+.⿿8\/e|}u! 7y GB1((rǯźaJ-ȖF?J59qLi]} sf)\P\&k EpC-w= [i2j.I^к( m [gO'eIm}KfyaRkXL3(Z$VsFgMA\phjs"Rf{0M.`,͓{ٲ9v[ZQg-΀NOeZWd!`Kz'~C6.oFm6-#xm\z޹ֵG{<ˋWNa.m9!klOG-P_8 >q;YgĖF 7mpKGYnЅץeH#; fdaT80F7;֙Di|r?e~ҥ&q1Ќp6MIv,m{Fl5F|j!\K,g亍] _ԸI'E&a8!<$َ'Q!b1qBQQ^J8'Q:!/u4l;N= {dRžokEV7"a+ﲊs](-A7MU9_yw\e$𱘈}58[v[|y0>4Z{28ʬp[PgYfR]쐪_BaP=CdXQ4`gLx D:<ݭ1̫ΊE1/+?ʍN 1ۻs ;pb| i)HZ vՁd'._7zK6o.ȟ m΄DP}Qҭ/Ѷ /D%=E+0#UZOJBgO"o*,Tь{vkR3oLT*;zV*| 7leDŽ(sG~N0v, T+ZI(ECs4%b= @Gy6ShDOgyCQhoPr+N!퍒䆖Y:7$UԘ0K6 <|U7Z P2)1u7d̋23nnvL6pC+U!quE79 etIsfh- Afe^d8HD(rVH4[$rtYBr&iNaNbzAv쯩-h#5BɄ)_sy0J3>֗WPߺzգ#5Y=xAdOl*%;?"?4ꛄ^y^$EneK؂N:R)":iq(R3rf }gS@+]&$+VB[oISCЃ spsNa.{=p=/:*,3%z;);0/R)V^H̞PQsxn*iL,YkO^G|'Ɉu*lQRNo`R-=Qږk$ *!֖{bR[0~ʟEJn7#e=bWk.+y^mU\kA]Yv**!`c>F^DŽR%H`C< WP^>f\6ӮMKpV<"݉: f:Ӑ\&-gy"3rUHqʩ*PI SĽE,ɓG}fX]a HH\5ƂZ׶lT ySVXfZk1.z,)v-";Af+i0E{"N=2Vbz09Dҹݟdv4<ǡ|8'P}0^.dTٖv^Wrx i_߇!v+ ְU$A16;.qYF*+ƶtXz#yddZ.HWLH&@fYBlUNV iXAc3XvPފї9Hu,"'糙OjFyCɩϋQRO2# e~JJ*JkW6so-^KDh *ފ(]I5ral)YT$ܐ5e]`Mle[,tyR>; ԏ飸:3ԅ -)zYJgݟX ?IFW/QRSi&SP9O`^>GݰTL<pLkMd${"ˬLҗ@{*=s]'%@8Dk vö(?T\s;B oگv5r^x 2e}UvKi"d*vE^;PͩoN&UdT ^aHzBاG^?GO ,r=H}(IQZ(%QDa4r!"Y%GZBje+=pDj{ReS*W_G$lʗ هY~{/]ѭOv/$WA./N T.Hv<A3Ѽ VTٓ\, xBlA?);gM*D¡:^tӄ6 Ր{}~p{Y Gd6lMM O0q "b{pe{_ِc ;kyFlm72Rnp"82&9O ˖%nKWKQ1rƺwH^6C] jӚQBg9 h4[>?Q .KXJL=ʍٷ"cKj[ݡ"'\2 JG#eҧeZkɮ<<-R.r~8eZ<'|TMйhZozCa= ɺ1Ӂ{Ff:A[5 o!W9#na")Xd4JDx-?_aX'\^hLѿH.L@+LaFzZ`Ҕܔo hMŘhu}8̏6zg|@@HBI1G M1K߽NRb ]h~$YakuTDMEPZ9iџ5S[4_wغWAJy&mO`}}p>y?>IcVUFЇ ^\CwT j;iMy~heuXn7I1m}̗ !~c=u;<ƿoFO6zgnqmakG UG|C.P#*8w- s[Rr#BKa )杞#3H{)8l@vŸ[V^YfK.zX 86UE/,_K5!C7scB;;wU+9r_1HwAufH`Xi0.XkFH;I8cFNtT7P[hzBm vw.Nze#Pꡥ;@ k]TkȽ1?#(h@nΠdGz;*Ў>.x#저˰0b؂̯cnō܂ڷ|l6a}#1}ctY3;kΨM2{e6vE%G0{ݯ-<'gCi@vzC{-d=Qolu~cA.|P-)*x-.~Ը;̿adB}!xo4dmstՅ]tBHGJ"# ?:!fh7k:;OfME^!s^˶pi$j 3<M4xyQHo2/6aQLaަh.xC >hvtޚ0!ЛF$]I?B}_֍YaE蟌^h!{-<[Ǧ]7 (3 %S p6m](|-y7SnxK?U{VۜUx\ڀ>FhA;7[P U3GQC] mvpm_d#m}h9ᣫ~q ۇ0.l*>g?tށo)i |@#>B{㓽=tw{ tt lX^6MVaf3zHYw|^gINZY3d0 MT>[>ft s~ 0`VK; 8̖`$xD 9A8F/?'<&&g ֙0`tM0& `fvo8p8Ap?3 a #p[g{2mBWξ9 %蠆OAzw&_vYGduwW_:kYpPЄ 5白֡䌨=Hw@t%\f ^ar~|TzvM-XC6;gķ=!t<ECƂ!)nEjIqM'g +?}.fm3Ι~rxg `F@ t!P(],A/8*Gxgp.9=qdm|h0&B0&SnCY6g9 @.8@ 걗hAp`vWX2s`hm~M@ k}khq/g8Br#3 ft㠉kp^Z&xpaԅA:\)vë5ndkQwGK=y~,YVmTtO?+3xC74A+A3v :8 NjLھMG/G3O󍺞RJ Eg<0]͓xp! E( [|¡tHYHF$R 8ujZ1.8q=hꁳ2Qc}j\07k`c࠹DG}`tNpѮf2A\rM^A8ht$p6"qƀ8:fC#q_&:o7+(-m<6ݓcZ+gػ(: EǞlAnS6a~z;j;gN{:ͦ>d$L1=vi=Z[ л`njn[}2N 1t CO{C1wXA;lk<-{ U7_ׂ9n >Lb`8XAp4_&oL'j tpwDWn@3AW^C2ܡ}yгCC$-x؇= !lL6O#=Кӌ->nŖ(|[;}lƒ~tSk=)]vSg[EgA& <]Q=, Ea>(?ĞG؛0{S?^BE-ZrFz'vzo^qҗ:#7<GQ9`a}3Cly1ȍrN (j!w}-!87xd/#>kD2 W0aΆ@}[Ε#x 71[-*enFm~>r=~4Z'G@Ρt7r?Retz gIyiU 1WVJL$}Y0 -vY҂ H !t`лY]ao 5 h.^*7@"N[U,WSG(hH;QoX# ԨS :Ȱ}_uHQIS20W?DỠZZ T62BU==j&,7bݸKQӹPT,5}ڇZ>u];YçewCF$cԆn@҃-&$=݄C&$]ԸnBCM&$}nBB9n9YFݓxBid-r=YuO⩃ݓxd-OZ|*xyd-~@8YPӟw?vNǮw?ᝬS>{'kZ>0?n<]OQX<7C@A_ :ll5'N>ѠO1BugNS) ԣx;jŻ3p]nCW+LBWw:&}\MCt؃:3c>mCeD-14Nh XF$}HŐdY\H3B#{g+h8 `cnjS@c DZm+Zi`0G# >8+h `z&%;lڞ{`Z=AK{H}Zpo ֟E5}ѤP}{[g`*`sFlYƺ`FXw#ޣCʣM,6r:oR:Mw@Djw@ClzDێ>TLENG*wA tI`/W;@6j^1zR7n, ⢽g\~ރv?o*Y x7csnq9! ط>8um)}A?r2'F^G :e-:+~ Z⁆ sԆ{1'@ e9Aэewi(bywx0ppokadH6#`^$!|g1@(:5/h:ƻPp&;ӟT`牡 }p9%l\&` a|G` caQ`Zc, r`{P! _Mkn#>v{ 'lqor`Z]ꄶaKW[Ҋ B7-wF2Дw0.t5XNF}*h1#_7.N| !hχ_kSw]=xpЅzA11 G3^|D} Alu==[2-^< u00 6Th5k9&I674fBϜ =-jxg]מAX9sGWzAQ38P!$Zs- mbmCWXS^Y[tCc/1\LF!\=V,NY;X_kDHGdG$YFp!Z.]DEG{B<;<:l2G&,cIdD:bTH}Ԁo]3ON$@;QҠ= D(E(~P:}tA 调 !% J0FzHsv WJ;o8j 6?>::1Z[6x1tMκQ~#Exa&}tGӈ4!}y"ve#1h[q<5@'x |Cz]2?DQl#:dlr+zmo8η Cח&BѣpC~zH%Cʒ(m'6UH*Ƴ!Oya?nF]?}͗ שyVobx *A5@#G:==jqӬl%՜i> -RRK]?oď\}J}#M_7`gO~8 7q[5D"ݯA5->.Mlo*Iډ\lPc[^s(bẽ Uzu,$,/ z1#"R~ Nc6tib'p8+y჎cp|N{%%wXxX#,(2+0@&~3!d7 g'#;0#I.灶S.z`X́GtuLj,s A'2$qŏńC1,]pXXHW{Fh4;}N l78ʖZUv  ж; Q6Q'<'Ij X]UW1&wzA` h:/Lic>@/,yBѩU[6f3>TZmOoP)]Q)}/q鴰xީqe9V9@pS ƒמIo] /oz5.pǠ/=t# o:!ka!\G|T:St#kl!1\`0(aR(SaF>޽~Dgz?_oo?uXzv1A5Uw{ w}=ia[Eq|mY5~}d]݇K ~3_{Q{>hRӧH# $}wV1/0ꙍN-ˇQ%YH.ڬy*"sTdʑ|o/OE~нlˋkVq<:śU>/?e-y~-I-{ U,/ dQRiebb55L%tTl|<3`޿Lqv'7ۋ/Ư] z]4i3‘Gd6#鲆ڍ9dğ)S|. ﰫ#fOjF/_ v:?_ݞOOHS+R=--|lӆSU$ڰkI_l=یL2雤v]LY0:YI45_@|q{>-\Li,,o(Ij%JVt:Nx Vq-8e C-@48kFH|zCK$&P26!t%DFjz擪/-~~1|P,j:Eɐ6yub2AR%U4.\:>HW,=I1\jj9T= Zo4;C# tu˘qmB}ٺǘMkdRq  icIUnw6=I%!ꫀ,6ј/1IU`!>6~ 0Ȑ?1CO-wQ Qj|tQHCFys)F m_^f%KfIwtv}w;_?9 Yi!*H;2_LfFN,O-1W:f!D"J&l9T&4 ti -I[Ayoӆr-l4@)[Hx7d'F#ox8@rsaO2Co/?JbY|O'ckXsbil$|r>m6i _cje) I2_퓿6k֌ڍt@j[dWXq\3$ %M0*dޥVHs$s#>KPɷ%F @rP oI B}Ar^DHr*Ji$N ڋmA= XurY(I>\LSF'dT;S-&ps![`fGmH?4.J(k[By|3C0)T_vA&iR.ň dX S=>v @:Hd W \G~<)>|<$XPApT!X]@S!{ &FkC3gxq  |֘U*,[ 5⠱RTGJPl POO=BG^Kj[L ´TyY @: D?aSX I_ 0HʢX* iˠu(wiySĚK:VjtArJRfv]8!0ݦEjckʛ𧜧P8Uo,T{x)Kф_%(op?N ;4y!8 $^_&ZQ#;JDEo>a̪/5X/'WW %%A #N8-f7"Ae=.Jn*+So͔$23ۻWI%[.u Z?8`ZY(\MR+5iJi *G5*߅s/r^{-_ ]-M %ХlE6wX,k:͇M8W}#<$yQ,fyL"k1ep Πj, Af$i p?V!~Pyuy$wpqz;*Q9aLpЛS} 0Vɫ ~U؀痛)+pUIDJ7J+":~ 0 pG9_~9pKdrfE1EcE0XsRRm/[K 0 G7Ȱ V;Oih󣤷rF89#YÌ23BRZ3 dJ2y%B2Z~"~ʷ橨΀&lYWzG\GƢ/%ؒgh8b¿wRj> ƢUR+$s":$\5tò٨I6'ܮt{ZifٸaV)wC[Ɩ9bVjz7GoF)B8kwncgw%S9 sQ4 ϕ}OvȔP%jvud*sATD#[>)gt"]jzG\iO#fH.+Z)N L 3xqklV焃73* iUescqA0*cBWo/wT# VibyX Y˰99Ja 1 < ȫr:׻z-&ir-߲y.t^?lWr7eTQJ7<[Tp]a1rps^US 6UZL-rK.*:sR maܰ+$3 )xT\Gy TG#}@x tCw,:OۨmE#m#WiL["S%wPJ7" Z<VOS|OVf=KOKE[5 2qxaaTZw#J |BBsT,nvx)4s^ ~Y앶$7_Pj4=4|<2|F.M <|Tp[u 㨳f/AeqT^AZxByd]++|⨴Z׆ܔd Z/fq~>h[tTҠHTnQVKDh^_2gւKG7C}KHZ};z|WA^6< O&| \UJ E?uCZ?i/Gɯ][>MF/$L߱F&i 3v U>JCR>9(l7a>idY*ӗM@봃C%UG8˃hѪ$΋FQǟbtCm.Ho&Q RYWe F YªFsa ;%ב3Ӱn4ďgi[pՏ8&,31g|7asP}@=y`;a*;9xU,\`V\iIVDʏEv$9 xvyhE/A>Mk v]'J^U,jm#c=Nrq$YpT:) Z{ww] 2^HHjH.!Od]Sɢ(r5כ '4B":oCaDObXgZPT_|aGl*ls9;knv\AaA-n/*Q͎v|4d^Qb|>ӜѽRu]Z Á۠:D B3Ρ_H0%sߊD`,f,Y!iC}vC'&>W;_!麗4׶ ') apf3ߥXҨUfaP@]'4rzV%$t+:Y`Do0Ȉ,FMy(?'?]U&el:\-(*c\imOq܅w 4/OuO[Z# To4/83p(CGޒq[MIk]8dJLtl;=%w՟su"'Q[a!}?WqFRֲx[r^dO&sz ~X$d(*,gDa>X1~w.YsEHf{npN$– _@pICI~pUxC(;O~TGqNc_ut%u$sF *CO! ] яy&kQOᇃpikM;ڀLs%(|Cʢj&?x?@E_=~7f:JB5һbl끺s1[.uH{)c5ua/^{eNtjuF(+Cso~22͟EN!:#de:F>ϰV?]J0:XMVdi =I4rPQ`1jn{ooj?_(!Y@' s(rhɩ3S (:,K5D+gGDh2˜?'i[m[7@'Cz Rql]q?q\6ϓ,Z1!5Ϗqys_n ){诡 &GW)ϧcTX3oBRFts @:~.Qwh6G>x1fDZܘjBin7 t/%Uա~&*f$3-Xl[XT7z /]OBu)M0AٷN&ʪ% 8bdk=&lQة^'EJT5 T']VReF+Y~5: B[×$}<1zd#r&IN|&H]at$=_r! >Ո:4~u]X31|֕M]u@pap8~]J%updXo(&iN Fi%tUw:ˇ(.3K~o{:IOdr^ș A[KpA|<W+7h?|7] :)flK⠖!&ʼa1{j*!c:HLOaxӵt9|1ή4_3 eǛLȺD֭~ɱ$&D`=Np6SQ_xW#fH ,mj+;r+%'mE}{$ӳ =A;g ˟E̖iTW3t3sWS' y4-mexҧ#Y6<@2rhe-[°^.tZiԐ;v ?cB٥C,!yxZdeo-ǭny^vD:ɧ2-Й^%)3wRkp\ʏ%kd):ڭ7 7{By%4/Nj&c7=֮HG'qc2yrԮ.F'߁;Z=îl #,ۼ[=]Od6[.˭Z3vrRxN>iPN}+%8!;nxlNT;eAU)&J;Kl2x|}_mW{#|%a_P0l\|ܗ57#G܇[1eU:%gN`es"$Eb! H U\^ivDB*DKeP@b+qEqP.kpx/VH,KIC^֎|LV{י?Q iH@;b~3ۆ`+1Lxk&E+ЙTxl rW͠Ҭz#c[) ||`1i@6 |474JW %HV s|=\0 w?gy)u% ysr隳&5-gvx8c#sZ;xBz֧[ϫz ja«B~Ő  )*a.~_q 9ڲ)Ŷ,4L5 &~ÚcDw\{6Q ̒1 ՕԼQ\wKR,]یrTw֝g D*4^O zR+IIxZ֕ W^GOQBVzOx+6:UhI`I`VȼI#6bnj gU@)GkDWg<'tD2bBbV+dj_W}Zr*gySUr3R4j[F2|f:O5S6ѬɄs~B^We*} \ѓ%4e^V7,,(ufv0F*0O ~ F͉t$4vzYEp {}ݞU pun~)aDlۯrv~`z\^O[J;-Uqx\=\_xb]NnY'׳Ay^Δq8`"<ukwsՅg%(}|l>.Ʌ{R["MXL0%}$ m蒡3VE۸x|)&\pMcVR(l§>/X3aRf% _Ȏ'`.Gtd1 0` #U^vj#Qq~+?0tƎQ4Q9iDנy Wk.>+),g[uWd&䈫}e\2.۫XfmɎTL:/ħFU.o8ς]2뾈y[&]|~s=˿oWˍ\Ӥ{'2#gUhlS졉khr26$=ְء9}Џ;AoV;.v @Ib2(QdVtCNLj 7h8) NM^-p>;c+F2xI7Qx!4䗰SjNV2 .N4_-p?$ D_8fq̮3њӿ+<3L *ĩcQ}աY-M J,7jrV*fC?nn)Ng>~ǢO8zRiLOroXE\hJ8U~?x l2RO9Kf$w*oBĪHT@ЙgƼfҸʖ/J3+ijFT)g ogB"jyAFn-8*Í}rTV=VV?›p+.OPBPdKL\0 ,g&0ڄB{AKP4-[q׻3Zw`9{2V*D{-z-l#OiA[\)6,Q}fKϥh emVNRL#Fc33FL|/z&qA:d7bJ6-+1L\Mn^U̡lllVNlCh@+ь9Gc(ƒSTΆߒ!A[4LGZGaRv:H7&;2g/5Wj7'}ok.W!,X"d^ E\v"nz(#媧ZZS S ^8A$EHUT6 0g!zPbםOV@&|z7_zZcjh\o*&#StۯKmR88-49@ڹo5};ZEs@p]拥wu>~O 82۪Y:bMk{[QpbA=͂6qb5:~x;?hzmeTͫL5)E*~Ͽ.ZȦDlM^{ayFqF)m=T`;5ԩl;հ[hz;GhsVr31[֨R,kQkd_m_ϣ&io3ۭjٵ7ZfŸ\aKBT#Pԅx}C< a#az7Jx$h\& Lʩ ra $9 j{"sXX03&\Ø[wa/bc!Ohs 畼 L  Y+jYR"6,<{7&@ 3Z; ݃D}ԥqw/`( ڡTV"XiVNؒQ`@A u<5>}uJ7*t?(OFY5?l:z'G %ou-} mq'{ʇBDG~H<epy>A>wBAU{FG,Yu%s8{eOJ̞ټ.XWďߋH~=hyMN6 t16}DdH_\8.weIe>B~\CzZʦei93V_@5l*GN<8[agY8wxB@ \97.R&L*MF/:SCMVfz}@ɮ+% \&GdQK#5b { ZXH1in"zc ^LA U=$9)|vlQ2cd4v8tVb0! S%|ìnFT!(~Bn\f@eo{ qˇ"0,@Qu*[ 2O,"u8akXtk^ImUEF2jG$]%tyX"k]Ń6x29Ӧ4 ;P1\DFsZ 2dmsczn ^< ~(BN$-rR;Ö*F;:b8듡)ɺu=)S / ZN%3V~Uzv_֘#pՆ8VaLF vɏxlu% O=FD&k WjZ<J]{?j"Mct%w*qQ>glrFU2B(*#wazas]MXs>E0AhSb5nZ]ImaԁNLERⱪWk̅kӻD*܎$HKPno3pw>5]Q{ 6|د PXYԓ JѽXi#Hf4YT) S YbW;.>?a@wGM}<ɝ*1ƻ"QVLQgRUPߖJ<~idLV<*`ڬ|Y&døbUzG饼>]v!Pʤ^irm4I 3"#SJ=<30mދ/+XiSq^pb;^{p˄U>nЦ_QBb`|F7 |_7]щ56ҪDK HG Od%;d*5y7&袥dDEHHv?j=d#E* w~cH3վW?߃ ޮZ9mLkhtw-hdG<=Hۙ{Ԝ}z0WwL)3e%?8+ܜYGA} eDy׮]]F?uTeK fwp`rjC]a ۂ0pLغGcWcu{b d=uc;F>MC{֨-Lg#OFgNk8c F?܅Su'&c~}2[Ö)K-xrvdpIX?ykgɃÉfZ{3߆Ӽ9>!/;k$ Vk׮~ IRLN|gVípjW };š0d sZq&WV(dk(:L{Ѧp cN끓l7y2Hqki;z26{џ3kJjLn-wO8}֜#}>t9VA߶_@ET OEBY<99HoOOʢ?=Z~x-vӗ M?&1u;.%F`~5q_׺okݰZ.kZj{&7nK0l(f[7G0h!7LȏApߠPLmо5cǧ:a1kUOp?չOxC;wδ+3~p/bv x_ZNk3ޙ~k?Ok3ށ~pCk1D$U2=Kuy!}wq_EOQ#שsr߽jsD9ٷfo\NLn73q(zu"m+[y0Ci7;}PKAcS"elP[ܩ=VԡTQM0*};ʞߍ^ aX[6@G=O;FX~KN{Ö=~?J-qά=J3/g˅W/tpvb t;8Z9`ONU':=)TءUvcw=݉@wE!Ӟ4NtgY@f" }mxk{^NU T ^Ou/TDa([Æ-V 飖(Z5Kw ӽ\8}QcNvCMVw4Ӈ"MzW :lO'C[ 1t50G{o㷇9Nw0Zn{SC<*='=t{r׸J[Ǘ-v[lr튖(Ggڞ؃_z6}sͽhxf7|mCigeҭT;K%T~s@+m6ֳv2E9:ЍjjGYh/?QWm(V+__^Z@bef`O`/ۄ'dHkiAhv4"DaEݽ =] ի E= % E[n0DN#s?nG0Þ4M {ZQW} +D+x8]7'#_A&ᴯpZIwCz|ح#ZI!0_EZ윿 @V/wG'V-C;U >E#и<:=|`ٜWnGgv4cZ%Dd U :ޟԩVC=sr4Ihˑ@;~L웫ʥQM9E;Zh_MPZ/qZ^drUFG:N$Aq-i W'-nFP?!ڙOC(G{JC9kEsի>>=^ᴶEz?j+Ӗ9yԞNT9DҢ3{'#o:5v-y2ג;VE+eF9 lQ -5vK`FAZ dYMcYbYakoa0{DkC5̱D{eh s+Aɀ^|x!AN|ytb;ЉІb@'>Bu3 N|v:1Za]) ɐmY&POEo0X%/V( mjҔ&6Z*`J|Hzʤtr4hVQ(#MU';j\֟پNl)a-0(jX7|QKѸZS,÷KީëVG{Z̷њް5٣lkGoe̎߈I8t4$ |q `Q? 6 X#N]an)`-VZh>Q BJEc0QvZ|O,NY᭚6t.n2\۸d#MQ~*ŸY@FF]:s$RgF9/ndBfj"M᎜3=60iU1:DJEmkoL1QѢX4sg2f.U}{yCsb/kBnB]h`haOX}eQZHB7 8͋wVGL縨`+=E!\K2: 8p>=Kc̓Gj34 ->a7`A &|؁G3DXE9ɣ&OrAYnR濛rehòdrxPc!٥I.k?C(~g_-fWjƮ(RAlWM|Jc:N]Mg*[LƚyS h8s?['!0NÊ3,xNbGzgDkW&zPNV ?ꦪI"g+t|jBٍ7ΖF#&bN"+;_`.02T?LFqyDV*qIcpkb7p5.Z=vi`tČ d9z=36>QEZ"\CƤ ?ŵך4Ypa\OP1ѵ_s&mIc m!'Rp7{IEY_\Lg #q+ʈ 2Jŷ+MA*جMu<6+qlTch WÀ4ڧ#y=Vɉ؜]Qye`0콱mY I#ɤE\/T,Ra)ag:BӌJMjL~;@?h]!gHK [,ByQYHRQFGA !4Ψ Z@QМk~/#544Rm6֦д65Ku,%/˪06Uz} Ԥ!xwJ)ezJ8RA   `EyoѡȄ̾K+rt!|[/[O;['V*}Y_?9ta_̄XuҋW7_5RJūO6+m,˯4E2 /5*/],酔~Sl(Sƽ|S!P<bt$Gג:\Gjx­%9KW-U|7ZɃOr'kzha׿c}ktE6bFx`+3 /#ר|4QȎYWKwz%YZbՃ9 h!G<O "N qD| ,G| Iɳ2am 3*l[=IC94]u/>I84Cb8W˂P|ˊ $9Yomc* R-iTP b(O L@3SCg{;szsM,74VVrsꭢK3ŵ5dݤj· ̐ќo5t;hX?Q+=<,οN/wofMMA^|]_Α܌Lbz}p\@`5'~;} 8Ȑ^`@Jp60%8-1 #,o^n!Ip()jPߤ@ě)B+E:Lj$8Hxp(oE;x'# G|".{B^ 8S^! 8FpTe_gxCp(@px.ʫc* G}[ax+#PDyUrWWcc>[ŗbʫЏrM>&k5\mK\]w>Iߍ jՕ 7pPZQ-%fLՕ6xj2\'~A++ay XO\Rj0*@Y\|^z_Η &1鎫!҂yOaCIG廷ߤb7ZI(%yuDhU? iS`JK_}qz6vZS -M2$% MSZÜ oINdxnT|.[n] Ӑʟ+5?TyN#ݮ!4a]hXbZb 痳 }uHߣ0:Fo-QZU 7$v㜲h=ֲ 0%9B+4 ]NVJ :WR sxj.&w0w4> 4)~οXG*iqun*Zo Z9jWhűH,(Z@͂OǨ}[jVJ|\OjA|5XHZ]2 Όcib:L StO0OZF(~^dP֘dOxnzn&,4\ʠNNY 5сC( *:uMmK `VwӋEfr>aQIi+ɴd3JXnepzm:7S!ʎ?yŷ}drӿ,|?q_5*c !tk=| "!"m :rp)*gp+SK)+PI)Xcʠbq]] q*F$'24,L ,1% Ɏ/D} tьVnnto[䶁mO&~%ݝ݁Ɍ(ɪf .&Z|1~.j"xu@[L [+06 ^lLПų$a \ID2T2_!Wp | d|WC=zSBXH,9u8oJvڔ῵5(5v 0Gqo2|${FNlL•YeyZALկTd?b nPr/riW yMDz_d8Y"y(ӧXS>$'›3c-;U4nzWL7r6>JcFLkS|,%}[g^j~IlH)ir"Bi(j]@Gm>I"X1L#n8431@nRfVofvViI]ZEE|/2MZhuSlp; 9|ծ6U&}f~GPXoK寝v4YG6:vUV{mCLўr#V69%13l/h)!d. 6l~tFjf+ST٣NpE7:W@~T2g#4+!Ĩ)|'kJVi)3YnB،4b78Y,p=ۡdYȪ gDǫ$~f~/NS..,T_!#a۔V*l+e'3xڙ:?F}&=]W MGvoW FZH&vO\RfaX$F-`n XUoqM?Z]Vil&Z?+(;.&_8`ِ aX9aS)ٛB/|.`kha880;Qn]5 {ozj*J:0=F&(cSYv.0 .Iܔ,gg|$ ;ڗ,zHxHY ԡek=q4?vf[rKI#vqP{}[S@@q[)(ZIbk؀C.=PVn_+hQ,d%?p?AbC=]CE"KdI@liLZz{(?~pۓ QBڽ|]jFW0?v=!tQ?gISYy%xE+% h(mhFڤj((XU9&d ; aupr($]#N!YdGda6[w*8 Gݷwy$Jlđ!G%uQ㷐۠`?x^n ,06X*TD jdy -  EXvlJǃܑ*O&rFnDʝO(.?i ye)0m R(͚ZZp NrC%Y%^Y-ȥIcZߠQ]nBLzWsJ|kjY -b&%Y4q̞ H/|W56ސYL"0X&/Q&II} _Fvm<:/c5i" 3g3gLvf6`.,I04ew# r ܳ}JHp0"J. 6.r=3\ͱpҍ|des_oKYFb%<8gvN:N:kIȨ?ݾF ) KSxϤ>K_ ? 8+ 6ķwJ+dq{2]Q?j,XȤ)nxGU_n Aɍ,԰I˃玌I͑Ef[).$F@tVxqf[OcNYJM xsT>M ͤyf0y0ޱ06y4X E02R&i$ecDׄ9)Ѧв>3\)oC;NATMFڢ:K +DArBߊ剒lRR=?tO]6+F{Z- /3u/>J h E9!$sfKb1#^TӇfG<3}i#+|tFEkDBBq=#Q)\j E6%u );'bf$ڒ '_/=psZnUi%=0m m q+)ET>?n JÄz vZ9$"p{kXO8 ,wPe&l0NznKːlQHro.c~$ӎ.7@oM6 u,^@P|ގ1җ5 ن#_̈&9=黳=EϖĆzKwm+UGW?Kd,w{:ҍsB\+~fF|tYt7XyeS*w 9(dO?x*nKb|̳gN8#}L/ʍFm1OP7~5[߽7W6|b:dYÆ-]Z&\;F29H=EҔW˛D]}ߥb?Éc(U?j'w4,WAeXKK~zXMe遰wό2kJIvhT{e")&A{E۞d>YqeꇷgM$=#7q(⧼_8 O,7Yx"AD^4)JAV_H̕oPCoL6Ydqu!v7e$|Jˈ{Ǐ~ ==8?eKLnqLMLuq[f[r4լ2R^[Er/eߺ~fsKW/2u˵ﰒ)i}R\ʫjܡ[D-o%@Ѧ,&mUG c"TK'ݶlmS%KUj\ m-SoJ&hl>`3MdLq~'@JtHDtUg~VArdaPf(x%<۸-/޵휇$y"e[;t./&O-g_gYpz}/\k (W&fx^ؗ>myOޓw.ߠ~(ʓoxa7Kbc?`22 .~_4^\[r𛣠 U\26 [ASvdSeTƺ\Rߩ6;3:B}vc1T`|vi, P~P,)+n/$`ph YȈFV(LfDwbH(3J"}UEԙ9YOʤ"B?%b !ã?)0DԊAϩ|rrHk$ N)!⼒23l {`ynjZ}M(U*^~@&9@C}SuuQߕˌJb*Yx<_NFӡ^simis HDʳ=By~ Cb|T)> <_k9^?595/Q)rC4Dys= ȯϐl2]!l%-+zMNT@4HvIu$IQk3|w*k|"C tHFn]*֏ cbP1d6]i}h~pz޶|M8q÷̯edB+",1YN(GKmJ!lZZo9Whp3xfjɐ/e(7ᩉZ1lJabB n#?%QWNy\qmlRTUKnհbFwDݖ ȣBN; QN:P9lkCV "| FR6MA^=(CO2*aƒ9Phv Lcl厱![A\9e~ Nfj"M3#43*ċר_#8ǖnEWR<an'Nϲ^l^Fڟ (3:afD=*MIw4~$ c<Oke~$M*(ժєBX֫=e V*qNZxo7[R}/ےi`hz-.#m6Jݥ42*dݛ,{ gǎ->`ۻrvW.4>ȵ/u{-)\¹vB^j/AĮuuy5=\RN4* "å0LVY+KhP(%I9PIjd5ё)Lk|g ~njAƱ*S)#Zuf`@6 Xoșy;doZ +@#bOT5~xMxgMHfx6MC|V en;^V(~DE_|6p9i ayz+6j/qs{|DvYI]gwRln5p{p{=.2]ܞ/J5 {HFٯ5hi ڳBK lh?I7lLX$_h%(+Ģy}s\&o}mةŔe!RrM`3[]3A 5SB0_s?E!BUGi }W n9ƫx[ٞn҄vM}Ml[y^us5pρYPqj뗈=yp+; ~A荤c@^YxhZzס.JӘ: /ʍSU spcdOR uUtW~+܎>ޟ_~z_+a=뻻/߽һ?GzRگp_\cNbVES-@ fFYNa>#ϏU2*q\WNwpbqM8)W"YOaAf@TE ,/Z{y3L:Xdq5%P>XN!AEgaXQCyayu@iaPNxNS2 :z$R+,ίg (itg6Azz{~3LmL>Ѝy@xL_rzupl*⸜Ke\Ŋ2&WkQ5"Y=ryj!EN1eVI"/ nh3a|E]$X^m aFAg;^ڠiX $'OwnR~Ÿ\|y icF*X x7{)1DwKYn%KLA ?$x RnԱa:ۂ%e`Kʻ {]2iJ9J> 1q1z~}OE.2U0%>U)L²[M_:QN",L4UkaDيP9ɴAlChyم0c.anc*'/B8ta@HICv2Qw0?f~K5xő*gUͶrhS%5Ű귎8|?~/W:rgL<]-V1)Ƿ_huip%ً& .]l*;wa'ҘZTpw>F4㞖VO!},(&})02@qd3-ray)v>S}1Wf/-)sLP!xCx(ζ"P gL4͇w]氶fM=}Rb2V\Dm4ѓaHa<`Տ{r $9_{_Lԛ߁qG ۓzN #g2-$?vOcvPђ2aʛ8Gus[V_ļt/Qb1b,00 %FYnc O2֤FA3|5=PSAz[&@8|T-sʦn%*[[1e(03_;5hg1z ,ӱ]\ @<\?fYA𳭼e6 z"vv&()ן|Ca.c2gz6Rm c] H!/>e&_13fIvO$ޝZįUuh]:`^+ah DS2 ݋2 K DS2gYo=Z 8 |q %3tk="GQ#Q8 bvb sf,gFF/T%,֠w·L8tU ~_22p}|u 7XԂ6'b•߮"Y^ G EΧFW,~YaEcZeA,VG6$r 3rn=&MP܆ʽ*ޑ>;3zBB@JS"LՈp N~U(cd D Yorb<_y 6w͈dwo"|늄;G)$2ka`1[:Q+pOwRХU2( @dR‚S;&teNHYjĻB5ox9Xo#kʡ.٫&Cuz5R h ڂr]NokQ$,/,f_oNds]aq}x{!h|Hvd˲ۉc\*<66Pkb`Ió[?"|&]-I &w6$ەOiLGE}_W R1j6JM%T 0/ srRiq~V| "JgMQ1nǰè.eT~q}뻯Zd"- w\* # hj-b[B^Ɏ#*3) J+8Ue;ժ䱪Mu$B_e GJ}7)|YG 5DvhQ%"~%MBJ'aj4zfnK ;il/R|>j@8*3CGD:v?=㦛*Wc[9v.;~a}}rp4բ{µ3IZaz=N"{O׌O]mJu#lu$lu$̃fs-7= ؑ) (نc-i(nK ҩN4T&. cw?r;@gq>ӷoO; dJp!6] qXn40t4^髶Muޡrx-,8?mcM0;,}Fz}"iJ_SQ#~~ι&v8ETJb}n'c7ox>WALV3E|r43@ ^u_4s`ֻymE;܏~n]Z 2ҵs?Fx j6fQ]3y\r-` y=zѬ(GZ8['!-3dG>jދm; >qsGamAmc7) -,'O􍭌/WPE]VQv(`(vTVh8x{-(@oόތ%r]-8"}xDbd(1){MhcB4ގ2pU]lOG%;xX(әv8"b·~TJյ%ڢsyǶ~4_6"!=^W5gJVOŗt>{L~-cK\z+ag+}p[-Foʫ$!,՗mYdUt73)YlM(@Hs z[)$*[NtØ|iwpj~1_g{? +A(tUߙԂ@G>RA.pfaϘFmmt[NfC˪} ֡Kµ̂P ژù6Y)΢䬨-Ь)V%ұ'(}%Cf:|R2,3i0 l9KM 4>TA?vxՌݭ%tнcp>mkHb/c8th1>x mGm>mWtMV\|܊VnN+^r\2 Q.Cd8!,ok h`>`?z%v\Idvt/ R|.a.a+e)ҫx)c:^/uxfrXP/Z2nb( dˣX м01<%P]'Y}i\sh3R+3SATnTͲ63*mc%| Td-3;-gN!b1B55ƢsT^&cXۂKa̒5\bipZ)u-2 >hǂbf) h; kO#wýfSTf ]6Zu00xXaP*w q+usnK0zUaEGre,:\>p"?~-`a:4rΈhc$wvL,zm [%H.1r52_ooA?v"~\Fd@m 02?w4J/Ql dgϱxZE >9#^P=R'Bl }eh FTVOj")QG9-B4Gű7s݌w+' _N&/;.i9_6+(#_>JnMCU(H7Q=bizϣoL앣cß4ɏ HG 7S@)?]ze2SƑMv{[+dR]TSNhٖw HbZ=dcY5(0EsDT2 OŐVqkB"Gh uݧKO4Yw$Koe]&k)d0)[_ِEVsw[E,g ݩ^9}j>S_2 .S|v冐\z٬ ]Z Sbf=<պp%2C>4|z.X6X43cV31iNL?vVsP=jO&RH*6Tv]&5V]6"(T Ev*IvcXR{2OFoB(@P}dFqO$FוDF݅O>) (D6l3Q"c/$4O `H OUzoBB(nJk5< ;,~}[Hho{gW=v 5jO 1c}I3Js!CEG~**omnW+ORuq2LڷJز%3s(;ÏƳ$@DX AF7O:Nӱ0Rb\ä\4"KzC` 2\̞7KTs}Me]:gVTpz}~YDem0 m08qׅ[vtRzzuLh Ew- ^e?ư!Ɠ5,sr}Wm*4и3#ylG1)g ]g d~4j@hqmVw:Y;U,q?/23ZRыeԂlw),yf7{Z$#@ ̯P EvJ=8V%=]aG#"[As{ pI@ h}!:ZiXSW"QL$0at-teh~;;)4~6@KEJW'6\H:OR#X)3?V?f@qь-Dif]`f(^-v ~CFCP$ K F1AIAG(ǻN'B? ˑ: [k,loEYH_[E[C(OUym2UHGjkm.2=WXmh)C)y'B?vo㉱;!ӨHpWaaG|Nb#f"pRaᒇO%4!4^cLHK l  ͷfhADB4=VrgߣO{;Wd1'-qˆ}l:$r!"d9քhW[u_ʡ"Hfi3ldkCg"wnS/w؉i'FԖܩ^<_v='6*SiZdJ Fa>Rb~”,I_܋fWUG I@_+jv:3ц!!jѻ(HR]};BI(ʃUE|8 "sd-)hhpfцzE| WX勷f̤|u铬GD< ɜִOE5aa4 M쓰|f/B6\*$ ;151}E5В&*Rˣ zǀo&ix]" 7,_k'w:%bpĴ*,Zg6hv3]d%w=B^mʯMЀ~cL:3Vy$"Ax#gYy~r|vi`\ //5`*qD\އ2gY-HH<ӇHe"\j] ^a>id!DauP bH-8hNR~^Z5ˋPzБ_{*-SM.XjCU͇'2 v1&: _ 컰kN< f!>P~x@kU89R{ksSߢθ77G'9`T̲Dt280 "G{ǰ5 Sl~)W%L[BlvËyj%#d ZI6rS,dL$T AeC>#4Ċگ3:T%}CƂhS!(@a$xlpU*zK'''H6ـO2>^BV *U J Tk-Ebii%dX')@\FĐnQ̊hDzTsĩ1˷~GCFۨ쭎2Z\qM1mבc.f=J`ƽ,mvF5P-=yO4e`]4UkױxdJ70S|oYXxLi==zaMO u;ŷ:2uy:KQ؂M{4JP?t)ov͉9ԧ'BNMf 69 ƺ04M>kia͵lT`8#N{ߑͽw$so B. h,D\s䝃͝(8T:"tU06  |ɰ*}Sr ^biO[\p\diUl]6^]O7?8D[]镂>WkP5lQEa6G%Α JׄM#͏z-+S"K\%bF*#?vyFM\:XzPѧWX26@Uq/87{f=҂ŦiP(ӫ;Tr=A_)54RgUpAdOCڡ?],c )*=,eGY/&6 $?1:BY좄ͺ@*8טI=*!0nu.]6P&;-Xbfz 1.ф}m:n3V d0͡9Yb XtR-Y JOeh!` Kpve|,/c8ͼ0Nd+{BdžiMI͐G^KjO/Q…I`4mڻ$ ,,PTlb0 d%c0m\Z|taW`\$P>Hũ-&Ep>^鍜R`1Q/Wmno.t6.<:fQ=$ٱ|^)D^ĿKx~G_aa(BoTc#>=sf^=*}c*Ňl(+<ugtڴ#[uME6uFib}w:E q&_[g?V+͐n&J{WĤ@ptϴkb^ȼcq\偲k ҷ}!? -S[KC`eid6qeWLqȏd-0a2ۨ(:ceI)k:t@,پco0v:YVy)5dC3T`}>b+|+UIm)N;6FKK6Kyg^Fa. rܑOq`eE2|>>(l!3UB\H**mv> =[~/2Wp :&-5|TƄ hǦ0t^1^|@ "B$=4פ R;!KՓqԋG]rC%(ѢD_*A{s VI`o-ED}}ܒV.*>VZ-;.l!Q#Caq֨q W!Zsߞ7˘>@4zPfݐ >P(ZrE83Y^/RkXXT1OzOdypO"i絧mWAӮkAUgd/lQʔjNlNSf_noӠ{, ^'p1_ٍ19Ob%[0`m"&sM ezѰ t[ڦ]48A41c2 ?hkE,2S82TCB*NsO!5 *H$[!e%K4 kKkK5VhDx|l ,y;(E8xEmI&1$k]'yZE*{sh,R6*ڎ\V^G)H$(Z&s]mOu$=cq,k߬)WIpFpq{$l۸ 傋dl9)o)?-D*7˙e  h${}L,qH38Iv"qj "'օ ?҉8j]6.>g6=w`t}^]ϛgԊgkgfNFJ=0Cw㸝b ݱ_P K*8:.`3QCRz w1ӒNr]3Z8?Ѫ(ߺ#uPavLeSrdjB}\f,iVo2^4WX`f_uRgz6?ݧeb2F.kLlTXblˀ0WQ´!FMP/W"=,n<05q&-osXt sR?rU u.kt} kg" ")\ ^O_F,qtL׺aR d~yq N BGSTbaB*QZRmnW $.&gAĻHѪ9+ypI. vف>M\bU\{}pp#Z:v;G(oT {D ' 7h`Rb}|D| m-$zo28" 2hFQaSS?}nM'#:T^E>hF:fTO1^jե]a*fK oH{I Yv7 bBa'nzl\K54rLo_DB׾gebL]泰&j%"4Wn9yNx.kJ JX.zu`uMK>\,?C#bN\v ґYi4銞ȳI" {ƉߠI;`Â^O;ۉ捀8l}[{_,.ٍ-v3"e_5LOY/i?Sz!حDP{XOWɽ5Smz0՟*݇#5$*;6Ŵc[D{3Z0,u҂fNLpp_henhlk7" ~ $ϟVu"b'Wp1|[/իW^t|KJo6C+ִa7S7`:vV],2 a}3 kDv[Gb뛨Bo \ `]L joUIߚK c]\?k|C5O6Zz7V7ljl 6S}B] ,;4YΏ`vF>lmkW۬hg/"1o!f^V#YƠŻڨQv6H<5&Gҏ. _7a%O:֭Zf0(L]TU]hG&u1Xھ^O/'Rwk*a\Dygd E f{ă`;tCc)ۦ,qϰfAR"iΣ+ч.Ub'&Hj^iKzb2OVoD~ඣa.$G_12k8xHs<:tl;&+Lt4<-W9~Rط+a;iώ0/!w\5[}\"Rӆ-7I. y,qqJC)[Ե ˀ_ШZ7jN@JP3\,#5R:-UF*< 狋9yDILK8S{V6ܦdu5uT2 ?7QQ%%WpKE^Y0ږjmaɣ;F6mT9kv}qGY0фJϪ"Ҡh6Ve'0􍒡*EIA) "erˑ5icIҢӥ+^g=Bq8U_ֺa;}RqTqgFmj}hOsS1mloƝMZ? 'Bwa-pSwc A} qMuف̛!Lx._)Ԗ3$+pI( ~j,fb<-Ľk)!K&dë~z݂Isd0DiZt[Sf"XjcF)n*ά6ʌr:wN~kYD.lZ[e-Tk0V׆%].֠BhyvaY,?ktx`#p{Pn0t: CjPn}fivif}Gs R9:hR}#EISIAʞ<,m ZL/nzfֹN}*[jn9oi2hpJKGah ,./%' *1 'Y]VUlZ`G>faGUs#V"=J5FJ5E=NJp͍J< ~}LG[ QAK# o@fk=2X2-va˝O)Zit]]ðᆧFdʪ 2we(YS|J('DB8T.whm,IJs7˾FK |}y $qWC![w O4N߁f'` +yd63q#4c{eƯo)"}9tՔ:18jݔt Ġ\gߡ {ugjN=3? KdHBm+K{6&&h"{ԡC>ߣcV!5N= j) |򿷓xX=SS<ДV[!nk-݀w:gA#v d 概eqg5]8Bx8WwJe\>kf m:PNs'R\4)NH*m6oH ـTxM)aׄ^`~&R'4i1~!2ͱJ;$Tif[˜ sGN)ɡG` IUtTޱY{*Øzhe)`1hpcUaGjG 5+u;J@aCBN=s!|m#~\XHn]ԖCunO; Ծĕ g5Ytp鉝Fuȝ(@G" t yȉ{!Aeԅ,!Q'akufqc߮&x[l*ȥP6K)k&ksyaN h`a{v7ؠ,d@l0XcnS6hE;XAcFր\-(!ArQE+e"Aޢ%kCp +&ud2B_"\.1v!dddZ)"-K/3l_$8 T )I%c'|0˱5̷;+NJ<ġd=KȗQ+ TC"Wm67p1_̙;iBn.aةxF "gYEpV5rBWw KbVX9n#5zڅ'q߇88r9>kBNTLcQ+䒌,i\ek6|پm?v'v%*<5p1E5%oZpЂpY^ɲ:k,WCG_k2p|6%yk2r,芵Ԙtc*S}M+ThiN@&+Y枪'dAژ4iM#gvg*2ܫi\ߵJxO&O^ڧ۶%XG(]G R,*>~ЅFo#rY-;-qX6n6\qsI60F-kHAl ]3vX/XjJx k0M5椎$?[EB[o*HYD2랏z ٢ mkސdg[˓(06$Է[ex-'C+@,8I*B$`fdž^ZXd.j5cH]^MpL{ zyv9XXkԍ{pVGET*{=H >g?KpNtf{(UG` Q`)J~MrVV~ݺaX`>"z7[3gd1!#iI32w%}P \-<0j jZZ9UGYfC Sw"QM AnoFÁ98v& |m6~;rGFA~4ʲc_ C 'ounKTOQ6"Px{-{6k9W.gjEeoXdyxOu,.^<wwuKoZW*ˆ,92,ңphzBpd2a%D=t?Kx=KjG!]UE.-[}˱j!T׃x.)cjO/|+Y-0}wioS}d md1{Ļf[yJmDDH %vڧz5)%z0f1yz/7竛˱d6g^-hphzU&gC\V2YlM9U5 DbY5w*#,fuY\6=\gusvY~~KzȒx}dkv]5&3\O^4E6z@lS&ArJ^!ǞtGrY5J!<^cM '?Ow\[4' $G!xzX-/gIi#{YZ%Y̞%]e׷$Y!B%1]Cȧ've}%gb Mo'Ix hz X@.kB<[uTgH\]g)Љ̌."'bMm!"-m ʼ*w(9uqO(ʒThOAvF֔-zR YfGmLZyp.M:r.MLcuVxӀѥ_&d&xpkYd6Orxp2,=e̲5sD9Dz1W@hkWXc_:(rkw t.Ͱ*"V? i0G4b)@㯟wCwmM豼sFgU^';TKdd{Z>  };WsP",ߝi)O)< zP;exoUy>}pISH_8zz*tӱrdq-2G4Wp4{ G}O_UG"ϛ0MR;&.pT[w@eG)dxfs:Ԅ "!a8baI8 ln"4m P K(ï4Y'?>od{'׵ѷ-V9|k9a趘9,Wgށ%ykz_;ۭ#Zʅ.}E՛: 8v^@Iehѫ3_ͻGmp$|R:ŬtknSqXio-@v˩&3 {2؉M"F)I\F|tC-8c?udx}8ܯXj{֨? ٸ9/7-96YT>d7GbcChZ J JUP/vQ=Oݮߔ%N"݇=kVt)XK^AAe=q[El`uG?] KwKY+̯?S uWiͤ.TjP' Zo"Dբ@j@)vTrgE 6*a*}+$V 'l.k pZk6FM Z3Ӯ\byLuZA<ͽfE:#;xyH1{/$ѯDpI΅n"ceDv_0*mR]:54á/poQocs{Ѹen6YvqR1i 8w^ZCvjU:pxńzC|S uif(i:;5t<÷r#AG{*0ϛ6c$ّ)kE[`yK\Pt~e-H}uR=LCi%NQPF)b1𜝉PÀk[%G[9+M*S_UP(Tifv5T=mi4Zg4Jb(ual^OԧR]V_"T-$*VЧA(`c QYhإ4NAIP@rpG=Ĥ7q؍Tu٧>1kⳎŨjo/zyjuF Z 2Ra<$1xpj@m|8fm|]_*ر)Nf=b^%zڡ{!zx5a-}jҗkyWgl&JDw҄=Ył 4J] Irt 㔚y_FEBc􄗴fW_Ƴp{.ͮ‚VJpW;dM ҥ 7d=.Z-O5|j>~MSІehI͗%m4,o1& V3ad©X`'s "42&eƯEbV{4p&26zZnj.]MmTfN )GkvIaCM&J`*oQC`UtH}\,K8 v v}[n BZY&z*%XUr^O4-x瘝LHBnG9y."YS\<+U+ô`"֓]G,ݐ祗d2xY/}?}^Y}rPՠ2JHέUpA$f"S-ǣ(;ZmaQ0m5 ;ea5 jXx5~]EFE`lDy! т(DC5k ں2.svGyTT)/-%;]= `.I+!#`6,8PgVVR8S=ԔQ$0㳠q%c{2LF9 wpּ ykCawyVmwco{$ZHv7>7\_se"npҰpr|P"0'q2DStV-=jsUw.,jjFhe? nҹ|s!þLe^?iÓFsji[,[l[ܻÑLrkSzQ$E/)y4*Ə!Ij[{U4%{F{}5BAHlڪá7`h* p! a6 G#M! əK GKE>6}0 ƟnՔZ>j΂l1]i)}bLil|KBF-emK4>7ؗ/t6.kI^gh$L7jv6:obzFfGiKmI|rv1Ypm)5x?6/^do&{;:_XM)_t1/^bB^[ԢHnn&g ήέJ_ps;=&/mp~EFKKiOŽ9}I)^+Q;zP(OkX(583;_\&Sdvn뗵/c/[fQŔ`m-}~"婊/NݒaևjKE:*Pq?Xwǽd>@["ŋ_KP8Ftc)zB>]Bs&P9`Nƺӫt? a=MD偛i~H1ɤTS*qz`g[1S">L/^DaE"|;C{1Cd;EyɣC&ĘV_ň :cP jMxC yDwhZvT(Z7`xC{=fE[lG9f*D{me3Wqr1ӭ!'V<~[}# qp%iO OH*`O(T厯:s`*Y K?}kL\@٠@…">3gFS{Pij dM8Nd~$MyP 6'5\]JD)q2oc|q; ~sY*w2A{<z,ȷKĜͱ,G=oSo60!o͛'IZ&Q 忢<;cx47&o_F(n O'7DBP2ɜE 2(s+}`r<&B(^ )Ohb/ X@&bUdUdE~s VY8IL҃ <!!!FZ}9؛L(ܛ7'{hvQrM̉%ɲw؇q$bc[7MeUyJ.q8{G9ce3wSs\=o3=o؏^adlcPݨQ<t-QZ^Y2 ЕҴxB#.*_Eoif^X/`6J"|`p,42\!WNnN18"9f+pb}}ٙ1)"d CRHwnL-JRyj<#'N{+ zSps;[L/'9RԱi#.G6.G/,`P:azd/r=8O}=~maI>J,arNB' p![jm@2˾YڵMlibrary/functionsimp.html#module-imp">modulelibrary/functionslibrary/functionsimp.html#module-imp">modulelibrary/functionsGUtҞgR ~8?jBGڜ S`[ YZ