diff --git a/XMPP - 25 years/XMPP - 25 years.fr-book.pdf b/XMPP - 25 years/XMPP - 25 years.fr-book.pdf new file mode 100644 index 0000000..8557a71 Binary files /dev/null and b/XMPP - 25 years/XMPP - 25 years.fr-book.pdf differ diff --git a/XMPP - 25 years/XMPP - 25 years.fr.pdf b/XMPP - 25 years/XMPP - 25 years.fr.pdf new file mode 100644 index 0000000..333d9bb --- /dev/null +++ b/XMPP - 25 years/XMPP - 25 years.fr.pdf @@ -0,0 +1,1750 @@ +%PDF-1.7 +% + +1 0 obj +<> +endobj +2 0 obj +<> +endobj +3 0 obj +<> +endobj +4 0 obj +<> +endobj +5 0 obj +</Dest 225 0 R>> +endobj +6 0 obj +</Dest 226 0 R>> +endobj +7 0 obj +<> +endobj +8 0 obj +</Dest 228 0 R>> +endobj +9 0 obj +<> +endobj +10 0 obj +<> +endobj +11 0 obj +<>/K[172 0 R]/ParentTree<>/IDTree<>/ParentTreeNextKey 47>> +endobj +12 0 obj +[20 0 R 21 0 R 22 0 R 23 0 R 24 0 R] +endobj +13 0 obj +[26 0 R 35 0 R 35 0 R 35 0 R 35 0 R 35 0 R 35 0 R 35 0 R 35 0 R 35 0 R 35 0 R 35 0 R 27 0 R 35 0 R 36 0 R 36 0 R 36 0 R 36 0 R 36 0 R 36 0 R 37 0 R 37 0 R 37 0 R 37 0 R 37 0 R 37 0 R 37 0 R 37 0 R 37 0 R 37 0 R 37 0 R 49 0 R 49 0 R 49 0 R 49 0 R 49 0 R 49 0 R 49 0 R 30 0 R 33 0 R] +endobj +14 0 obj +[49 0 R 38 0 R 49 0 R 50 0 R 50 0 R 50 0 R 50 0 R 50 0 R 50 0 R 50 0 R 50 0 R 50 0 R 50 0 R 50 0 R 51 0 R 51 0 R 51 0 R 52 0 R 52 0 R 52 0 R 52 0 R 52 0 R 52 0 R 52 0 R 52 0 R 52 0 R 69 0 R 69 0 R 69 0 R 53 0 R 69 0 R 69 0 R 69 0 R 61 0 R 69 0 R 69 0 R 70 0 R 70 0 R 70 0 R 70 0 R 41 0 R 44 0 R 48 0 R 45 0 R 48 0 R 46 0 R 48 0 R 47 0 R 48 0 R 56 0 R 59 0 R 64 0 R 67 0 R] +endobj +15 0 obj +[70 0 R 70 0 R 71 0 R 71 0 R 71 0 R 71 0 R 88 0 R 72 0 R 80 0 R 88 0 R 88 0 R 88 0 R 89 0 R 90 0 R 90 0 R 90 0 R 90 0 R 90 0 R 90 0 R 90 0 R 90 0 R 91 0 R 91 0 R 91 0 R 91 0 R 91 0 R 91 0 R 91 0 R 91 0 R 100 0 R 100 0 R 100 0 R 100 0 R 100 0 R 100 0 R 100 0 R 75 0 R 78 0 R 83 0 R 86 0 R] +endobj +16 0 obj +[100 0 R 100 0 R 100 0 R 92 0 R 100 0 R 100 0 R 100 0 R 100 0 R 101 0 R 101 0 R 101 0 R 101 0 R 101 0 R 101 0 R 101 0 R 101 0 R 101 0 R 102 0 R 102 0 R 102 0 R 102 0 R 102 0 R 102 0 R 102 0 R 102 0 R 102 0 R 102 0 R 102 0 R 103 0 R 116 0 R 116 0 R 104 0 R 116 0 R 116 0 R 112 0 R 116 0 R 116 0 R 116 0 R 116 0 R 115 0 R 115 0 R 116 0 R 116 0 R 95 0 R 98 0 R 107 0 R 110 0 R] +endobj +17 0 obj +[116 0 R 116 0 R 142 0 R 142 0 R 117 0 R 142 0 R 142 0 R 142 0 R 142 0 R 142 0 R 142 0 R 118 0 R 142 0 R 142 0 R 142 0 R 126 0 R 142 0 R 142 0 R 134 0 R 142 0 R 142 0 R 151 0 R 151 0 R 151 0 R 143 0 R 151 0 R 151 0 R 151 0 R 151 0 R 151 0 R 151 0 R 151 0 R 160 0 R 160 0 R 160 0 R 160 0 R 160 0 R 160 0 R 160 0 R 160 0 R 160 0 R 160 0 R 160 0 R 121 0 R 124 0 R 129 0 R 132 0 R 137 0 R 140 0 R 146 0 R 149 0 R 155 0 R 158 0 R] +endobj +18 0 obj +[160 0 R 152 0 R 160 0 R 160 0 R 161 0 R 161 0 R 161 0 R 161 0 R 161 0 R 161 0 R 161 0 R 162 0 R 162 0 R 162 0 R 162 0 R 162 0 R 162 0 R 162 0 R 163 0 R 164 0 R 164 0 R 164 0 R 164 0 R 164 0 R 164 0 R 165 0 R 165 0 R 165 0 R 165 0 R 165 0 R 167 0 R 167 0 R 167 0 R 167 0 R 167 0 R 167 0 R 166 0 R 166 0 R 167 0 R] +endobj +19 0 obj +[168 0 R 168 0 R 169 0 R 169 0 R 169 0 R 169 0 R 170 0 R 170 0 R 170 0 R 170 0 R 171 0 R] +endobj +20 0 obj +<> +endobj +21 0 obj +<> +endobj +22 0 obj +<>]/K[2]/Pg 297 0 R>> +endobj +23 0 obj +<> +endobj +24 0 obj +<> +endobj +25 0 obj +<> +endobj +26 0 obj +<> +endobj +27 0 obj +<>]/K[12]/Pg 298 0 R>> +endobj +28 0 obj +<>]>> +endobj +29 0 obj +<> +endobj +30 0 obj +<>]/K[38]/Pg 298 0 R>> +endobj +31 0 obj +<>]>> +endobj +32 0 obj +<> +endobj +33 0 obj +<>]/Pg 298 0 R>> +endobj +34 0 obj +<> +endobj +35 0 obj +<> +endobj +36 0 obj +<> +endobj +37 0 obj +<> +endobj +38 0 obj +<>]/K[1]/Pg 299 0 R>> +endobj +39 0 obj +<>]>> +endobj +40 0 obj +<> +endobj +41 0 obj +<>]/K[40]/Pg 299 0 R>> +endobj +42 0 obj +<>]>> +endobj +43 0 obj +<> +endobj +44 0 obj +<> +endobj +45 0 obj +<> +endobj +46 0 obj +<> +endobj +47 0 obj +<> +endobj +48 0 obj +<> +endobj +49 0 obj +<>40 0 R 48 0 R<>]/Pg 298 0 R>> +endobj +50 0 obj +<> +endobj +51 0 obj +<> +endobj +52 0 obj +<> +endobj +53 0 obj +<>]/K[29]/Pg 299 0 R>> +endobj +54 0 obj +<>]>> +endobj +55 0 obj +<> +endobj +56 0 obj +<>]/K[49]/Pg 299 0 R>> +endobj +57 0 obj +<>]>> +endobj +58 0 obj +<> +endobj +59 0 obj +<>]/Pg 299 0 R>> +endobj +60 0 obj +<> +endobj +61 0 obj +<>]/K[33]/Pg 299 0 R>> +endobj +62 0 obj +<>]>> +endobj +63 0 obj +<> +endobj +64 0 obj +<>]/K[51]/Pg 299 0 R>> +endobj +65 0 obj +<>]>> +endobj +66 0 obj +<> +endobj +67 0 obj +<>]/Pg 299 0 R>> +endobj +68 0 obj +<> +endobj +69 0 obj +<> +endobj +70 0 obj +<><>]/Pg 299 0 R>> +endobj +71 0 obj +<> +endobj +72 0 obj +<>]/K[7]/Pg 300 0 R>> +endobj +73 0 obj +<>]>> +endobj +74 0 obj +<> +endobj +75 0 obj +<>]/K[36]/Pg 300 0 R>> +endobj +76 0 obj +<>]>> +endobj +77 0 obj +<> +endobj +78 0 obj +<>]/Pg 300 0 R>> +endobj +79 0 obj +<> +endobj +80 0 obj +<>]/K[8]/Pg 300 0 R>> +endobj +81 0 obj +<>]>> +endobj +82 0 obj +<> +endobj +83 0 obj +<>]/K[38]/Pg 300 0 R>> +endobj +84 0 obj +<>]>> +endobj +85 0 obj +<> +endobj +86 0 obj +<>]/Pg 300 0 R>> +endobj +87 0 obj +<> +endobj +88 0 obj +<> +endobj +89 0 obj +<> +endobj +90 0 obj +<> +endobj +91 0 obj +<> +endobj +92 0 obj +<>]/K[3]/Pg 301 0 R>> +endobj +93 0 obj +<>]>> +endobj +94 0 obj +<> +endobj +95 0 obj +<>]/K[43]/Pg 301 0 R>> +endobj +96 0 obj +<>]>> +endobj +97 0 obj +<> +endobj +98 0 obj +<>]/Pg 301 0 R>> +endobj +99 0 obj +<> +endobj +100 0 obj +<><><>94 0 R 99 0 R<><><><>]/Pg 300 0 R>> +endobj +101 0 obj +<> +endobj +102 0 obj +<> +endobj +103 0 obj +</K[28]/Pg 301 0 R>> +endobj +104 0 obj +<>]/K[31]/Pg 301 0 R>> +endobj +105 0 obj +<>]>> +endobj +106 0 obj +<> +endobj +107 0 obj +<>]/K[45]/Pg 301 0 R>> +endobj +108 0 obj +<>]>> +endobj +109 0 obj +<> +endobj +110 0 obj +<>]/Pg 301 0 R>> +endobj +111 0 obj +<> +endobj +112 0 obj +<>]/K[34]/Pg 301 0 R>> +endobj +113 0 obj +<>]>> +endobj +114 0 obj +<> +endobj +115 0 obj +<> +endobj +116 0 obj +<><>]/Pg 301 0 R>> +endobj +117 0 obj +<> +endobj +118 0 obj +<>]/K[11]/Pg 302 0 R>> +endobj +119 0 obj +<>]>> +endobj +120 0 obj +<> +endobj +121 0 obj +<>]/K[43]/Pg 302 0 R>> +endobj +122 0 obj +<>]>> +endobj +123 0 obj +<> +endobj +124 0 obj +<>]/Pg 302 0 R>> +endobj +125 0 obj +<> +endobj +126 0 obj +<>]/K[15]/Pg 302 0 R>> +endobj +127 0 obj +<>]>> +endobj +128 0 obj +<> +endobj +129 0 obj +<>]/K[45]/Pg 302 0 R>> +endobj +130 0 obj +<>]>> +endobj +131 0 obj +<> +endobj +132 0 obj +<>]/Pg 302 0 R>> +endobj +133 0 obj +<> +endobj +134 0 obj +<>]/K[18]/Pg 302 0 R>> +endobj +135 0 obj +<>]>> +endobj +136 0 obj +<> +endobj +137 0 obj +<>]/K[47]/Pg 302 0 R>> +endobj +138 0 obj +<>]>> +endobj +139 0 obj +<> +endobj +140 0 obj +<>]/Pg 302 0 R>> +endobj +141 0 obj +<> +endobj +142 0 obj +<> +endobj +143 0 obj +<>]/K[24]/Pg 302 0 R>> +endobj +144 0 obj +<>]>> +endobj +145 0 obj +<> +endobj +146 0 obj +<>]/K[49]/Pg 302 0 R>> +endobj +147 0 obj +<>]>> +endobj +148 0 obj +<> +endobj +149 0 obj +<>]/Pg 302 0 R>> +endobj +150 0 obj +<> +endobj +151 0 obj +<> +endobj +152 0 obj +<>]/K[1]/Pg 303 0 R>> +endobj +153 0 obj +<>]>> +endobj +154 0 obj +<> +endobj +155 0 obj +<>]/K[51]/Pg 302 0 R>> +endobj +156 0 obj +<>]>> +endobj +157 0 obj +<> +endobj +158 0 obj +<>]/Pg 302 0 R>> +endobj +159 0 obj +<> +endobj +160 0 obj +<>154 0 R 159 0 R<><>]/Pg 302 0 R>> +endobj +161 0 obj +<> +endobj +162 0 obj +<> +endobj +163 0 obj +</K[18]/Pg 303 0 R>> +endobj +164 0 obj +<> +endobj +165 0 obj +<> +endobj +166 0 obj +<> +endobj +167 0 obj +<> +endobj +168 0 obj +</K[0 1]/Pg 304 0 R>> +endobj +169 0 obj +<> +endobj +170 0 obj +<> +endobj +171 0 obj +<>]/K[10]/Pg 304 0 R>> +endobj +172 0 obj +<> +endobj +173 0 obj +<> +endobj +174 0 obj +<> +endobj +175 0 obj +<> +endobj +176 0 obj +<> +endobj +177 0 obj +<> +endobj +178 0 obj +<> +endobj +179 0 obj +<> +endobj +180 0 obj +<> +endobj +181 0 obj +<> +endobj +182 0 obj +<> +endobj +183 0 obj +<>/F 4/StructParent 3/Contents(https://en.wikipedia.org/wiki/Housing_in_Vienna)>> +endobj +184 0 obj +<> +endobj +185 0 obj +<> +endobj +186 0 obj +<> +endobj +187 0 obj +<> +endobj +188 0 obj +<> +endobj +189 0 obj +<>/F 4/StructParent 10/Contents(https://localmess.github.io/)>> +endobj +190 0 obj +<> +endobj +191 0 obj +<>/F 4/StructParent 12/Contents(https://mastodon.world/@Mer__edith/112535616774247450)>> +endobj +192 0 obj +<> +endobj +193 0 obj +<> +endobj +194 0 obj +<> +endobj +195 0 obj +<>/F 4/StructParent 17/Contents(https://www.rfc-editor.org/rfc/rfc6120.html)>> +endobj +196 0 obj +<> +endobj +197 0 obj +<>/F 4/StructParent 19/Contents(https://www.rfc-editor.org/rfc/rfc6121.html)>> +endobj +198 0 obj +<> +endobj +199 0 obj +<> +endobj +200 0 obj +<> +endobj +201 0 obj +<> +endobj +202 0 obj +<>/F 4/StructParent 25/Contents(https://github.com/matrix-org/matrix-spec-proposals/pull/4174)>> +endobj +203 0 obj +<> +endobj +204 0 obj +<>/F 4/StructParent 27/Contents(https://www.rfc-editor.org/rfc/rfc3920.html)>> +endobj +205 0 obj +<> +endobj +206 0 obj +<> +endobj +207 0 obj +<> +endobj +208 0 obj +<> +endobj +209 0 obj +<> +endobj +210 0 obj +<>/F 4/StructParent 34/Contents(https://en.wikipedia.org/wiki/Snowden_disclosures)>> +endobj +211 0 obj +<> +endobj +212 0 obj +<>/F 4/StructParent 36/Contents(https://op-co.de/blog/posts/mobile_xmpp_in_2014/)>> +endobj +213 0 obj +<> +endobj +214 0 obj +<>/F 4/StructParent 38/Contents(https://gultsch.de/posts/the-state-of-mobile-xmpp-in-2016/)>> +endobj +215 0 obj +<> +endobj +216 0 obj +<>/F 4/StructParent 40/Contents(https://xmpp.org/extensions/)>> +endobj +217 0 obj +<> +endobj +218 0 obj +<>/F 4/StructParent 42/Contents(https://notes.valdikss.org.ru/jabber.ru-mitm/)>> +endobj +219 0 obj +<> +endobj +220 0 obj +[/ICCBased 325 0 R] +endobj +221 0 obj +[/ICCBased 326 0 R] +endobj +222 0 obj +[297 0 R/XYZ 42.519684 781.0236 0] +endobj +223 0 obj +[298 0 R/XYZ 42.519684 781.0236 0] +endobj +224 0 obj +[300 0 R/XYZ 42.519684 601.09955 0] +endobj +225 0 obj +[301 0 R/XYZ 42.519684 319.85132 0] +endobj +226 0 obj +[303 0 R/XYZ 42.519684 469.85037 0] +endobj +227 0 obj +[297 0 R/XYZ 42.519684 693.9674 0] +endobj +228 0 obj +[304 0 R/XYZ 93.543304 667.6936 0] +endobj +229 0 obj +[298 0 R/XYZ 42.519684 89.45532 0] +endobj +230 0 obj +[298 0 R/XYZ 147.9066 584.8538 0] +endobj +231 0 obj +[299 0 R/XYZ 42.519684 119.93359 0] +endobj +232 0 obj +[299 0 R/XYZ 42.519684 104.69446 0] +endobj +233 0 obj +[299 0 R/XYZ 42.519684 89.45532 0] +endobj +234 0 obj +[299 0 R/XYZ 246.22789 770.91876 0] +endobj +235 0 obj +[299 0 R/XYZ 324.5107 291.66156 0] +endobj +236 0 obj +[299 0 R/XYZ 245.49774 254.1618 0] +endobj +237 0 obj +[300 0 R/XYZ 42.519684 104.69446 0] +endobj +238 0 obj +[300 0 R/XYZ 42.519684 89.45532 0] +endobj +239 0 obj +[300 0 R/XYZ 484.5 662.5393 0] +endobj +240 0 obj +[300 0 R/XYZ 490.4208 662.5393 0] +endobj +241 0 obj +[301 0 R/XYZ 42.519684 104.69446 0] +endobj +242 0 obj +[301 0 R/XYZ 42.519684 89.45532 0] +endobj +243 0 obj +[301 0 R/XYZ 287.11945 752.1689 0] +endobj +244 0 obj +[301 0 R/XYZ 202.4059 254.93073 0] +endobj +245 0 obj +[302 0 R/XYZ 42.519684 150.41193 0] +endobj +246 0 obj +[302 0 R/XYZ 42.519684 135.17273 0] +endobj +247 0 obj +[302 0 R/XYZ 42.519684 119.93359 0] +endobj +248 0 obj +[302 0 R/XYZ 42.519684 104.69446 0] +endobj +249 0 obj +[302 0 R/XYZ 336.0489 613.6047 0] +endobj +250 0 obj +[302 0 R/XYZ 310.35965 576.1049 0] +endobj +251 0 obj +[302 0 R/XYZ 255.16794 557.35504 0] +endobj +252 0 obj +[302 0 R/XYZ 540.0687 475.0405 0] +endobj +253 0 obj +[303 0 R/XYZ 203.3781 770.91876 0] +endobj +254 0 obj +[302 0 R/XYZ 42.519684 89.45532 0] +endobj +255 0 obj +<> +endobj +256 0 obj +<> +endobj +257 0 obj +<>/Font<>>> +endobj +258 0 obj +<>>> +endobj +259 0 obj +<>>> +endobj +260 0 obj +<>>> +endobj +261 0 obj +<>>> +endobj +262 0 obj +<>>> +endobj +263 0 obj +<>>> +endobj +264 0 obj +<>>> +endobj +265 0 obj +<>>> +endobj +266 0 obj +<>>> +endobj +267 0 obj +<>>> +endobj +268 0 obj +<>>> +endobj +269 0 obj +<>/Pattern<>/Font<>>> +endobj +270 0 obj +<>/Font<>>> +endobj +271 0 obj +<>/Font<>>> +endobj +272 0 obj +<>/Font<>>> +endobj +273 0 obj +<>/Font<>>> +endobj +274 0 obj +<>/Font<>>> +endobj +275 0 obj +<>/Font<>>> +endobj +276 0 obj +<>/ExtGState<>/XObject<>/Font<>>> +endobj +277 0 obj +<> +endobj +278 0 obj +<>/FontDescriptor 279 0 R/DW 0/CIDToGIDMap/Identity/W[0 0 600.09766 1 1 372.0703 2 2 674.8047 3 3 715.8203 4 4 678.22266 5 5 493.16406 6 6 365.23438 7 7 770.9961 8 8 995.1172 9 9 732.91016 10 11 695.8008 12 12 348.14453 13 13 651.85547 14 14 595.21484 15 15 687.0117 16 16 435.0586 17 17 830.0781 18 18 342.77344 19 19 715.8203 20 20 478.02734 21 21 342.77344 22 22 372.0703 23 23 711.91406 24 25 715.8203 26 26 592.77344 27 27 820.8008 28 29 711.91406 30 30 415.03906 31 31 773.9258 32 32 695.8008 33 33 379.8828 34 35 695.8008 36 36 836.91406 37 37 682.1289 38 38 399.90234 39 39 1041.9922 40 40 637.20703 41 42 645.9961 43 43 683.10547 44 44 645.01953 45 45 720.21484 46 46 812.0117 47 47 651.85547 48 48 678.22266 49 49 773.9258]>> +endobj +279 0 obj +<> +endobj +280 0 obj +<> +endobj +281 0 obj +<>/FontDescriptor 282 0 R/DW 0/CIDToGIDMap/Identity/W[0 0 600.09766 1 1 317.8711 2 2 611.8164 3 3 317.8711 4 4 748.0469 5 5 611.8164 6 6 520.9961 7 7 277.83203 8 8 633.78906 9 9 352.05078 10 10 411.1328 11 11 612.79297 12 12 392.08984 13 13 633.78906 14 14 549.8047 15 15 615.2344 16 16 634.7656 17 17 591.7969 18 18 634.7656 19 19 317.8711 20 20 611.8164 21 21 686.03516 22 22 634.7656 23 23 360.83984 24 24 966.7969 25 25 974.1211 26 26 603.02734 27 27 277.83203 28 28 317.8711 29 29 615.2344 30 30 591.7969 31 31 557.1289 32 32 688.96484 33 33 612.79297 34 34 633.78906 35 35 591.7969 36 36 629.8828 37 37 631.83594 38 38 634.7656 39 39 336.91406 40 40 615.2344 41 41 1000 42 42 636.23047 43 43 698.2422 44 44 634.7656 45 45 631.83594 46 46 694.8242 47 47 615.2344 48 48 610.83984 49 49 633.78906 50 50 634.7656 51 51 277.83203 52 52 611.8164 53 54 636.23047 55 55 294.92188 56 56 336.91406 57 57 817.8711 58 58 579.10156 59 59 751.9531 60 60 500 61 61 684.08203 62 62 636.23047 63 63 612.79297 64 64 731.9336 65 65 524.90234 66 66 549.8047 67 67 988.76953 68 68 862.79297 69 69 770.01953 70 70 774.90234 71 71 684.08203 72 73 636.23047 74 74 390.13672 75 75 633.78906 76 76 336.91406 77 77 1000 78 79 636.23047 80 80 390.13672 81 81 685.0586 82 82 787.1094 83 83 629.8828 84 84 575.1953 85 85 294.92188 86 86 684.08203 87 88 636.23047 89 89 1022.9492 90 90 530.7617]>> +endobj +282 0 obj +<> +endobj +283 0 obj +<> +endobj +284 0 obj +<>/FontDescriptor 285 0 R/DW 0/CIDToGIDMap/Identity/W[0 0 600.09766 1 1 520.9961 2 2 392.08984 3 3 612.79297 4 4 633.78906 5 5 634.7656 6 6 411.1328 7 7 611.8164 8 8 974.1211 9 9 615.2344]>> +endobj +285 0 obj +<> +endobj +286 0 obj +<> +endobj +287 0 obj +<>/FontDescriptor 288 0 R/DW 0/CIDToGIDMap/Identity/W[0 0 695 1 1 684 2 2 662 3 3 258 4 4 605 5 5 548 6 6 628 7 7 592 8 8 677 9 9 250.99998 10 10 557]>> +endobj +288 0 obj +<> +endobj +289 0 obj +<> +endobj +290 0 obj +<> +endobj +291 0 obj +<> +endobj +292 0 obj +<> +endobj +293 0 obj +<> +endobj +294 0 obj +<> +endobj +295 0 obj +<> +endobj +296 0 obj +<> +endobj +297 0 obj +<> +endobj +298 0 obj +<> +endobj +299 0 obj +<> +endobj +300 0 obj +<> +endobj +301 0 obj +<> +endobj +302 0 obj +<> +endobj +303 0 obj +<> +endobj +304 0 obj +<> +endobj +305 0 obj +<> +stream +x> +endstream +endobj +306 0 obj +<> +stream +xmˎ0EE$z`;!iB@$PӚYC\0Xtk4 @.1qVGG?}p[MPaʮ{el*Z(mv0ܹ[d} mW]0, i=βF)_ܴe椃0:Uס6HMޛsGF8ڐ-NComם;UTM>\]so,0XnJwѽo/<4Iʏw2ȿL~%鯡[ͲKebQYnC9X(Ԓy!xeSrRjxJ4(P RK<z>0@+OIB=rh @9:C@$_ ?//J%~_/uKѵ_>5bɃ_ +[ ggpf~1y~}EH7p~16.COZ?񃑁'a7J3g/SqvxIE4:}HzX?r  M# +endstream +endobj +307 0 obj +<> +stream +xz |T{}fΙw23ygf&y$$ohIHHJU+U""Ci*5m`Ml}P@k|^#&;ICޯw33 7? MtVyg ,^^~nM)e%9U;gUT؟6 =**koVw_^ +W/yIK2@ju/),[5aozouUM`J^ZVd۟0=NI.)&3۠ }@B9),C#drEI()U$ l'MpNC9YCֲ Z1ğ9{e4 +JeҨQI9Sʕ5Р+MeRUPpF6I$6ҍd I cx +F2^Vh%v2_H)$$>ωdxD)V~ aB1}8 +sqZFdR,_xCXΥt#'{=JiՍJ!7H}~R { &1L2v`7FdL|„ҕQp<$_>xj܀ϚT %l + {i7@Am΂B%i` 47(N.(?G.;&Bvl~}',lAq6fN Я1XXpbq~.]Cr 'Z3T*lhT)U)h)f ć&՜b2 )覗"G& 11er>KDu\2\ ]q"\s',4OLN'&g}2' +@U͇N- 346s@Wk/bҨfMOnmN@TzAs}(SC[,RlϕEP@?SW^IUn'?!8r?mP 甶|(m`g`_rql5AuE0#da)a:@ڜp.V6.PÜFR*ר|c}GCt:4E1+hJkW{6D(v/I@rġ$76 +diwi㋠(Vpt +4,2w;}CQƴE&tdC, y{L=VOn*ZDCHQlxJ  2]HoH +򓜯"kZov|6~Ceibim vGސ0%xSS,:,c6)40dl"P]d% ^"au w8DDZ4HKσQ0("CWRǭ4Wh`⸵u׾}-Jzz$$|81 WOB&~떷~&e|$#Bi)&zݦF}6b8gp=bc#i722]2E|︩l"U_^[=i1kdO} !YYw} 8 +v) +(LBSe$@l~aahfh +8#Fdw^TιKl7IOCZz;]M-tmCm c*31xGz^j/S!8Hdʷ;X2 ')cXu-So;lwz!CtR?9iAѲ߶*}54͏>$/7gЕ$~H9=V_73NW;˯|/C'_,2:̺v|@;d75n ]ޚ& >xEY?8(7ǫռ}C%Wꓕ7~Xp+?=t}~6;;7OɽӉsY6s궟6NJ=X bխ1z8fC61Gy;ሒd?38ʄأFjҲ+խXQGd,?Od3Aik!zu`h g7$RԕIyc\VSbVkjM7*oTޢ12Hv x$lIj=M. +!:wz):"MrQz(dsmvLj;둺I?ɛ6Ͽ~u U+n^ys趯ȹwg?@m܎7o`v ٣ D;3;p5olѨcVbM&`>Csâ&+XKp,b4V(F\XRq)@by; xp +7:ӳ'N=+yab3jyW=讎UuK3zx3F3$np}XV8fwmecVFC,D?Nua[(7Nj=oXwN{lD +o?L$HL,jMtfm|6^ tvؾ$$=DSRO? 4FGfmT}{QrGdOC %ʽERvmH4{X9'EW3nHZ$ro sJ z&Ef'y= &!V ;O6vR`r(:5͙?ٻ{M!95)a5b}RMO7gfgpIlAt7) +J3%NL=s+ħ&k/VLJ/ZX5nJBx租pp4yJ1$PXs${cT +k<3>cg鎆BM=no1c vw|"y˯}twu?\!-dDDRu_]:.;.]#./cH=IOB̳IإP-R²Ȯw:Z:PRTfJYg*Ę(HR4z+ +u*5)CR$Z1,R=hѾ׳z +VUUZ~YQQ?Os͗k~Deoe6FJ9[[kܢԱzsvr;|=`ި=cޯ ^6ށS]-K6F ʸ77y+;v N~Vda3"9V`!? D[bՈUDլXvg{fG WlΉFӢrEx.ݭEʆ{pO g~8$ Pɏ|`SEPUEpKcz웤R~ udY쬬#Cnlrl5NƸ/#SeS$-~= WXhE"w!"$hğ>??󵼒GjH-W +Vud X baWݝl]o{;mSUKL`lbBWPsyFhyL~vϪ6M2c62鲲2r ; vrxiɿK]2?zyi~,$K~cgV`E(4H|0H5Adf*1in(8akEb'&E +uO&TŖ՞@MW\D:LWkMtR$* wJdJ>Cm}hlܐ]`B0swc`Y9٤1uף:+.;Y+?4Qi:M)5nrNw^eU 7J@~[)+qiRAXUS=t<79٦Npb&l) z*)]#=ԹDzEB_fvfAfu{34]EFB.變cVto dܴ*7f,HŨ'6⎊3';f e7.p' ]!kq!a/f(ۿ~~= +"%TA^Z$L$&S+@7-",gvgK)E1,jaxH^G<^nsE%UzС9ѧ1Kh<\-\k{^T7i-ր&^ՎjNh/N-UQJ9Vz>Js/}  3Գmcdey^eV{;{̫QyHh^?6 !zT9j>c+\jIٶ_LODb|q%2?*v_I֏Lx̂,THl:8f~}ο$&T*gpZ_EAx.,(kMb[G?XھqD[ ~Oas0Ug_8HJ=*GuePnV ad>&v:56W`[Xvh/nv[$ƴ XqMU^BuF" R\ԡylRՁp<vhb}Q^bˠ{SWA >ިMLd19L@W 6*T lk`mjkeqE=v$3 'z^X?f}K:Zld}f}d_a11QXa47(8!f Yx!X.@ @"c^S0q1LcdIdB*=26C[`(edl ѵP9FCTrX + aT@-29 ِ ~`!B R(CHX 3hȳ22X +7ABUu: J&EPK`*@, uP%)C5J ̔Tj`Tb(%W5P"d0OYCڈP C! 42&PUPKa>gJ(Z׃ZT QK\loqOhV̚e`hXPa9TC|r!TB[H[*5T>!/tV.ۃoF+yZؗu?xտ B r$H/V[ +7o"$+*%8g~"r-- FnXX1ßZ_"ĚB̃ڈ-xe~DzfB/ ?4G)/5|/IˉgH٫`>,|P൶K?G".WF_ "/V։R-$ܔJ v0K !kMeFL`z1( 𓛠 +^BcepԳ%P ՑKDeOs~Hv4gMG7I4]*w^v﩯KiU6?՚Hm$Q91'#c_xf>%rl«T,QaZay&Xt:âk`$̐&LC̀0& c]F;~k`8 3`=Pɳ0X(k0t3$PS`\Ө-hW9/Pci0]~S%/`zUJPT 3`4L `'u89Мtԑ,ha<WPaԧ<&4)8eh0G`ԂXiVdjGXf\uep6=be1"쮕gJ[!LX SF}g  &J  1OhQsJaaӑnsd|u.$Ju.z +9{&X-)W (eѵA{'O>Ӥe#3 zJ!t[ +##=tm}AQGx𲋵"Op"f /g>&dpnċX;\hM@8{rA+z2842ܘ ]#weޫk5=jgٷGY Yx[yFdYݽNRv;{^]}zV>7jDV&7*hb`'Uybe!Vt/eԕbZ%;~Qg(x:ɱ@Ds[.膣6_QY.U9ԿZ#wQQ.dݥ]}YN \w{6"TA`AE_'j+k +Ƹ{韍'Aua]ǃKA3]x A¢g"\IrWJ~J(_Wq%[ø_+߀+}џdT< KhtI>@`Ie'(7Q& e/C0&In m FHͿ+H;gؑؑ߈vΰhfbG?@|"G!>@| wg 4@t8?Uˍ$oٛ_!j,F3KM'#`\ 10L:0f̈́)0 2.B NqXH0R u0lҒF]M2 I/H/h$$ikir#>8HRȻɐH $+ /qGq31F+1 vX 8#+ 5XwXa5(Bt& @y&4ˣ (PFUQPJD"\W u_/dzV6_9gYu ǰuX?G#j?u^v)'9?xx)mIeٻmNf ֋o:nlub[Ƿ,77m:/{3cxnv4}$ڍGbu^F +ïd9j{ Zy5 {_ ) +/9uf$_xšPT{q(|"{!or頃5+;Vܿs||&qǽg ŧJbOឧ؞6|j=y$]ǝ縃OumvmvRnIe[p:/ےy6|~+{4lLJ7ë"Rlu^>5ԉoe~+޷?Ye?^'[{xOq-ǻ9]x? o_9}k8NU:q%6\qM;27$V׆IXӆKW8VWeU}qIV6" 9V̷\<JuVƱTҐ2[q%V{Xq.q6]Zb&mx B9^qV*t㌫،6U X0=i.6=pj*NfS<8yMv㤉v6Ʌ8 ǏsƱm8fqh;dp$qA ]`!W^agW: +;nc#8܆Jq(|788%AAfywH@7\XYsCJd`8fށYVeڰ'>xy)x3\,33L^.+]6ֆBߍ>SS1%91˒09uJ &ĕ@\,a2ssd6].".,E8؝h_؈К,^Vt!Ehh2,(mHQllH#%}_ +oM +endstream +endobj +308 0 obj +<> +stream +xZ3 u +endstream +endobj +309 0 obj +<> +stream +xmMo0@ +!R{vh + 8C=İJ%_ohؓ76ve{ww /M&Qj5s.ýܨj$6Mqe,ݡn&*? c{D[=~{ujR5c=U|=_궹W$MG_0J5}rFL$r +qׅyq[U:RWw?Pصܞr}եoS}8_STwvG"T,U9yc[] IJJo|T+ryz.F] +endstream +endobj +310 0 obj +<> +stream +x| \Ulvr/~ᲈ Z^q_# E\RAq'Q4-3L̙ffiJKaۆ~ ̼ռs~=L$O[ iE3x6ggYV싇3o@̙,_&@̹ }wۺ)|˫^us_ +,ӗݿ0QθxJP (Z0WҠN)xN)G`-,jxBp78A(S 4Rc pvtD@G8ZM/Л4TbXK'oaHFC1'_TRKS+|LN9H)ͰJJq vv(SpBg5P.T)֐ 88 aS`H 'z?n^P`P-8E:klz5[ΐ{|ZK=t? \~P\o / |AsũPoq(NCB,pCk p8-I B($i0 +F*`3.1zoa3줟،i2^b'@K(U8vD~Iwu. ʲ]ښ9*VEb*Ǿ[QU-CF;[Q'UXnpvTTCIXl[6OvPU5k \C+6ن jFPh.&͟i `W 0.X#`on8~77$NuO@=i v4z@ )2Œ?,.e$_d3Rdh.%C&zI}V̰H)bylC:{jQ'vh|gG#\(-xMKOvUzjz%O'X*y#DaUA2DLy HaT7747= 醕4!M0q.WbQ@B!P4B MY2a-z@(G;&{D!5UB$:evI?iJ\ [/EL#BjՎMdNp don~jJ3 JRT*KRSRj-KGepcrPrJ<?zmmDJ_ ||K}狝ڻZJGȉ,l@ޡ%-fl5d,*###2SD$u::׹6tQiMlsb a\d%g溆 UGz:W.7WA>[RE1;s SLarWOgg6bpgK@3%sDwBTL:eiy%XP1 `BBI $ܛP2ʄƄN93#H\N &(gԔ@q6L}t@~79o4YﳏGÝ;Oe}cϫiiwʌŔu(*2|*J_Z̐Dadoߐ.67${Mv+gʹrPN@QS]׫iJqOK zy Ċ2ZmU`ELCXI/^kP~(gW>(5%W6r޵{׫{ZhI{  cvd YZ LLQUʄI5`oQUVu>9``HOOFǼLW 'ZGQ(գzRUƠ$5UU_3gNܜD~y #i u +&T)V˵"H upu|#=hf DFF󙚚t#GW[Yzv%@,z#MA 5Vս.xXZd ҉"H!q6 دj#=;/9<9"92ٝ= Fz(otfxfDfd;3*3:3(~mxYDYd,jm[7oȍȍuFEEVF\^)C V=iV䉎 +JӽCLU_Ъ5j:r g0ӈS J;0eןz儣tc㛹_]}V&PQT$S+U1Rt4\_ǫIz]{+g`?qi+ThkGJSeel cw ݌n7p:I'G&:Yrb xN7|bJ[Np PSU#٪~5<\¢EB񾖼ݻ_݃KU*Hs^ h o(CueshP)DtX`sHb +hWyLlЕV2ӞRSzvUH.}"ŷ~1chnHM;x cbȊG K +Ep!y VcF/wqT7`v؆酪Ψ6\___ɛ0 (2p6xk@(*&IIrW +Q!.t9(Qzեps)RS@iif3uiWwPBH{僧)_}g]>HAhmG4Yp¸ԀYäMjQ0a SJ܈{X_W YO@Z/##ϐcx `$! \.]:u%@p- 5o4%+K|".BBhġ@R/MP4Cp+eA&4S*4̢3L!WZ Q )ra-E*m;c1MϞRt;GK2JEDSД7{hnrZǵ,趻]uzԆ0݂CRfxo>lOĶesPǪQt;⚚/<#[ z9'Fi=;@6?Jq1t^3.U@9=bCWN3ŕd%{EN|/o?h [IsT'Kѱɫ? zW-)NۄHGɖ_jk%۳SyW*;-}鰑3 ɗmm5z@ݯM0yqIqq$G[=ӷݺOo7Grc +RF.8[v6h. Pi1*'FFDT@I%QV%IPD1{%/ۄGU!=Ʃ c +Ju)qm2%NR +h9],.Tt7&>tv\;~-8PmuT #q6md:Rp aW  +ARI%*v2Y;u qo&JJZpP B8B.ixs/p3G~~yݽ.Еs +CH€opG"-p7X":q W ` 3g8暦0EiQWDtCω q'^l"H>߿=lOdV +x RIq%[%B,E +a"Pg!?);9TW Զ{y^`7R'0-)` $;!,>J+GmGE}{T&>*%\Z +Z##X}`W?מӖuh{hhiLh7f N =_mB_ ׽e8:x =`ǦuhRUJ[]5-;V/}8ձ̽tZd`;6C 4Y"RJ2 +.B]岳ܲD@TL fz 4qMSn\G:۞E7Fp3m&*ڲ;ZYV6/X=0k %ae:MIF: +HH'd{@;HsEnY!/п\9rlg|:â)%#rE&$%ܑ$h[1 /~޽/.ٷj.ʒՖ(=ͬ߳=or玝SrCټ#;u;pGZa&,UX^Z v΄;,H2P/CK7^]jZNiƦӿch}bӇ'vm:і?6aMMl!.&Z/|V0!R):+,VY6{"B@ f4*p!9K;ϗug9I' ϯص:]= +\NNߜ n:kj'{ =biWWTc;wͬQxJT=0[ sް|C66|≝O<א}wYvZ{_;F(DZN+ӊуhZv/|[)Z}f zwX}S"Z3}n^'}$U"Iu_m蘥9Շ-d?5\Fs`&+2dbRDM&EPEId*e$rz fN3@5d6)dlDQ?ArIѨ*QUvsqU߳Vq VҔxxlX e1Rk/;W,a$S3p0 !,T +&gm'Q4E b/(Q&9tsu(NR/u`r6 g;8a)'(M Mdzt:f< su,B +`˅RaX*.ɥrش\׳m =qƫvɛTam I^ 2PK0 HPyv9]g j3zO3;3d"3I6S'*%JnS/.%86DIwl^S.$沩RiyS~Y45n6G[mObu-87x! c`F%,Ĩ!LBx j󷨁p1;V_ X`Xҙ(nv|;$+xl<f( +OJ.g"X"@ $R $Q*!E]Rnu(ܢ[1Jmu[$d3xmh$!2 1CJ^y2$%e3xɣSY+JroZQ ^JЅlL\"IKͥR:\F lium}z/Rߎg/JNk4- _s+_S"75yN!^]$+2REPDL$~d*B] j1N6Uv"6YDI6+.8'8ŭӔY~\".SVjaHPA]IY,)[.͖KUAR'N݃e}F/P'Q7noi:V,Yd3PhĿ|ݽ.y+|"o^8tTg_ yT mPvJ@T2E +I}"? `P3|7zseNq>{ +L0ʽ)D> +%Fz%:s1=#BCdy#K]oc?`Zo4dG_}֕{*`Tl@ vSr|ƴc` x NJ4v[:x!]|\ wH@OA z:zIMAe/ی?>o쌝6?wwV_Ui/ϝOaڹj+׭*4辒QwhohqFu 4_Z,Tl?[wѕP2Gɣ22'yzS.IT0 my& T&Safٲ}C/*Fin {colj-㒖$:0j(7`[* v9ܑQ*ToHk-?IG}RmVZVvi4{n^[P$Q,Iv갎zƦӳLdZTւvKI6xP~ҙ`%םuy_>$x];ĐerV߱36lvdrKlzSLAV&0 +V$HËíBg-^K%ײٲۢ3v?| X77mվz¨:JwRݴ-[/PL$dx2[cKĦ;cblr+4٢B\u zb_]dEǤ!gj{Wo?~mYw}}g5n]f ~kGYَוrY;._>mp W 5B'=gz`+6FVڷn¢" ::̢̋W919z"DuAG A9uO⎎C~\OF[#s]COAv_6CȺپn͟K7i soQ:z3k:M=!@Gpw&:†BqYr^SH7(mwگ>HkLa8@ B( +BPfb0x8:.L`vpQ{6lG4ݩ̮aޤp毛dS$5U~W}û͝7[9i(ֆ~+b@ {c"d*˃bU"%,1D .$ gz3 㔺wIWOA|Y&/WINlIkANoCV$Z :k}&ONO]3>'%Kihˎ髳ӦȞ7tPmz7vސߓ3md ^a{"B~o 㮝>` DO@_=#ˁ@1 4&ݰ=# l$"I$Æiyn[{{ m +"%u:qYۘ ^g+$_|Sp|<=tdk 硵Џ)ĬhJ,>aPտ 'q.60'V>|X{$> l,(A>Gp$. .I!N +Pn' | {<XlfADB+ۄPNwI|Okލ,VII0ٳL=֖b +v{{45h<ğiγFaP%:.Y/MJ?g˛Jr4ԴSUb0?dϖj˻G_z&~fX^h1jys5i7pNAvNG +^9i!߅N })0[ma^=+LD f9u@fDedk {M:|N;f  +|%F}ME^[afA!2X`̄0  ) ɐ +n + 0 B1,0`.t7y0 n6Vn:tXa:CwPY{:`1I>fȃa:̆<ȂEi0n%r,n(E0,nȇB yw73^2 +>g-YZ,!z_wG*0ֿЧ].B(I~1,P 4߻@;̃v/_7[ů +aH5íeP3;g\(ͥ5@[(G_,/~Lr+ : +t_'b7dŠyq- P7%ǛfM5Ck 3 +u/E1C!L>.4ߘ UOGWk7|yEwhr^y0 fAO>Ei.lÔ9Hܶx~_K|gl H|X}5b`*,׃3ѹXbd3Чn%m]k\/~[+2H1Կ]L3[وcY>^oگ9c*y]DKt}fGC$421.Ib]a:L3ۏ_f[K%fbG`*ꙡsQnP{Yuc9}\*|办5CF- {|m?Wn-ꕈWNݯOu3~>;9eFk~c\~)=;zY }-9;M"~/ θ3s(XQs;hj2W$h0.?QZy \[gs:ku?)nHX=_qLKtoQ۪mt/3bf ŨIr/OC!̺ƦR]φAz^ewtf'-#ۑɟ}ksݭr75nVhXuN[n6$q`GF]qD~4kF=^eeq ehÂ6M !(*cew_?XVuGh]\ C` i;v||}#t :Em7UMv+sIYFIuέCi55Zz]c~oq&ne+n.}R{Ag#5ý{ZW¯^cr#^9`?7ߓ;s_oAO'cF&W(?1R=ZM#jlGqg#00ڹ7\-5naסvan'zu|n`6TeȄ~1;)3y Ɍ},WيoPM!_ yXbӯϗ mྥ +9t?X5dw߸ vp }|7 +\3:u[u;g\dp[7=ܒr ⃮Gchgn3>V 7JWjg䕔*WRKy%喼+)?{x%^I^ǪKFn 6v@<KOh}eRtsL1ˤ2#,7Y&eR/c ,#ܑrK#&㎔FH#;g(73>1>qS?YxLu_Jr̂$}mޥ]ǯEt'?7CFfadhFy.Ca8 l*X v!Rx HBf(N@g^'i0zJc:AtL.@B_Hx1A`RC9,Fwyf$ٰy-^Wz[iI~%ߧ*ȷVFjbV +K@\ _U&eFK.gK<|vq<\|` 8\4]h"&O4'|B$ 5~92F>|` p?;կ g3 eg4Pk|_i9]A?ȩ^ +9ת0V țyC#kF^ȫyE#yY#UR.hYF^:^zE,;m%ǼF^ G4F4FгP>y=K:ȁMdF>u=y)+{:vwdlWcVaa4Ra! dѭVhgJi"[~mÛs/WŲ9d>KȦ&lNXH67 NDŲ|nŒ*F֬VV*HF?[L#+VI+%5L#Kd,V",l"MdAD4RyEl5Ofid +2C`|LT%MdhnLH$e7I ++0ݕB42qM \d<8'sdS#&rFƎc'52jd#ldna#d +2 ܍ j"/W#4rmvns,FYH_kOo'DzN+zI R4DL,BL{7un2BIJ|%Ē:$$.l$Db4HD!;rw>l"O-$L`a m"!$X`OYFF ЈC`S3}F,@fшٙ94؉ wcFD' EvF5u܍`dgAvA((?^O ?] +endstream +endobj +311 0 obj +<> +stream +x +endstream +endobj +312 0 obj +<> +stream +xmMO0 iF IQ>$J=J8c_a4;O878^?`lcDߡψ ͦ*5Z{?}0]ػ +G\yeG-צ|QP:#`tbߢT"dJoѵ6oO>`轁)do|Ã`]=e^DF_moI)Zon;2|) ,OFPEa$z +t>`,뺮Wv{պVvJ4!&&UDDD7DY9 -j; ќ&>ϸ9!m#BYi<ғp" +endstream +endobj +313 0 obj +<> +stream +xZ xՙ~33dr0@R2  MdrHā\&!I$zi#ʢVVSXmqmUlv->>-,+?L&P[y6rwy9CXԾ S =ŷ$Z7"]]S}t5`@nO0ۺ/B:`>ގCtu4.I#"PGvuD>"y %Kǿ (Q,Rls6ɏ(nLI#%IJꜺv { /:uI8( IċeQw r>$UO8L1aE QJ 0ׄc̥~}1F<9ɫGw~QJ7 Eʏɕ-r8&'tNmz2:Mtb/^&א[mB*~aa<iHE׉cR'?2@:8{?=UQZ*U McU4ggWU UJX$鉫`==qzbÖme۲;eG3}Kћ]<.Z<\|=Pf6I#sK2(TfKO6s$*.ڎ*R'WJN7=EϼyUcJc՘qK՘qK3^x'fw\뙳|*KU54\%z!\7ܤ005dhRMYMGJPBaiF3I +"Hѥ8]HIq^K%WJd9Rex>m_3>V=9wy31fW'ss7/%H7<9]]r ~,0@؃HrC^dBe˞\4rK aW +';3\)1Y1D,X2 6 df}Ub/ +g(DbkY؉4!@r؞6:΂DM$řz {=\]]رҶ9ꑽ:]o{:cs_>wrQO)PzͮR0Y~\kkwn,$s!f0$%)'}B]@dIGABl+;ḽ֥UՙFГ2$ Ө | $8qDY N\%rJ#ַ%p"ig|6{N,rҖץmIے#mG``i'L S]Wju8+9H#hq4=>3Ѐ`?u$Hwsd~r(5ũ ..*^*Wᯓ P$k9z1?P~4m#oHDN*ln/(xb/?|``S'|!A% *!Oj-01Ŭ$K#vicY,R#&buTb6 Y|œCa&3OnsG&ع [IɌ CzQfY]Od 9qR#:c`ɻ?sؠv_t_0HNz2q Gnk1z$gխ~pG$\fgdʮ9nD6mVf̒lv[.wUM:VN4<9:ɀ~b+JAg8+0(nYphJ(eM\K4ā1ڴ߆ΞȺot{.}R,"lpcURj gv3dRAqA6cQRn9`gsS摃L+QFJz3ǣ"%V]Y٣ڲ +.WoԡEO"/9/Gmm_\4ge@UbaFL&Ć,Ng.)%efh̘233J,F*C|`tIϘfYJ^;7ӴKX^fF($xd$%S +.ݕΫ'&N|9/2f/)ዹM3gM\%Lh)|:oG4p\-aoQf)xe-<<~SRRO2ohpRRgު >`m]$׆҃-Rnym]{n|x-C0`> T9kmiʍ dٙB9fog4S0,ٖSÂbqg߶D$ &a)L{†N};nwiv ;SS::u|s8I4erġabC?8uuJn{.y1c~|ڟ i^ id0zC;zy:zRW*٣ft-Jvх~v",",m+Ѝ~ЁV"nNn=pcC\V@: {Ё +qhb؉ŽVt}@bvÍvtUH#hэp#hC7Bt9 BJont\d{ڨM>t XSf/SH|FcяJQB`7 +Ї0vc!8`':Џ bb3ǚjCz^|8sIkЃD%fva76$%fpFp{2ݏIN©y@w-pOAm&_J=|Fq߷ +p#{V/ +i:~mZ8ܾhܵhi4i|)Gi QuGY}i"De +]<Ԥ$њ;Dj$#"r +hG7Z)" ڱB +?O'ܸͤxco\$&IDdMքhN!YLPºI +#=BSUMSr4K571GWKRz00`xfN{0{5Wܮ)rcO⌌գ#Zœ +Bbg{ jI`3&l,I= b'pXۊ"Ջg=_eb3{̚)<\&\'Z7[o~=PUK_le9h9#m].ihcdm=RUTJai(3T%V =uEShfcx pPMX +BKx{D6nZ!,M ⌴ZPk]֢b*4 Ѐ(!ZS[b%z؅jjQ'afi#NKn[VU؀- +|Z\FԐ㖖 d.s%6ZCKZ[+|X Q_V HhD,FA% +\Sct$Q#S#VQeu(I)|ujvp757Q-6 Pw n=۷VxeqEguqcZ.-'kљILZbtfceqcV +Ik+Xk25kj6ԊȮMt/x6 '"P\dDnsfβQ.#cQ"uoʝk܍&;jmN@ki&j%m͚<$f;aNSvvkg]oHϵ=`_|W ~L_1N+Z$<5sgZ4)KWqYм +8r[8F\^qͻXڎUciXgf ܳ l;D>h@' rwepZﴨOK+UlOJqד=+u~ۚ/Aʬ e)4u'O Aâ\{F_+Mvo)++)Ӿ2k_}J%|ྒ#+)+]lxwI;k;[wIWwtK;?]&Ep12).2"]&=LeR>@u8Cʱ 5X'.Ge)J#)/cH#*W?7u|RGI\athg$t sU(p(P Nۍ Ņ?~kb/lfT`=D~%0. +\J|"~̾\D'|q3}G8B=G9GVJC*|=FGrv>XDpc#zT}瞥#*ݻޣһawGл3]*ΤUgTzJPeUz[tUJfޤC*=*_cCFlPlY:pH޷龀Gt>3u +"vvF4\SGקݥlGvWXw)Mf]it{m/fr*mk56i˶t۶ZٶtJ +n]-&zmM9v67Ys.m2覍ϲM*dɍ >G7t}}[ZWꜴ6TXM9jV*]gkUZ*UFWtJ+Tr~R+rѲst9x[kKKWZ"XtJVRZt.2BU҅-~Jyin]0|3h1^Vʼ*ӘYM,;%3/<8*KYZVc!fg>fTsTMQSsnKgvڨҩUY)3P1Sch**Mb,iꨕTd?cTV&)R(LJD$ c%$tg3va +endstream +endobj +314 0 obj +<> +stream +x +endstream +endobj +315 0 obj +<> +stream +xmN0yaa,z UU "ԞKm΢oqEbD̙nz/?Л ϝ-{4bQDrXguj +Z-NQJ bL_0 W0$OJA3낱t^`Iќ/Wg.w}[T3JL-Φ[}00'lVoxT>3LkxItJa2/=a4 > +stream +x_L[?\cFc_ҭENl`cll&L sH$Mn 16. iò=SiKuRש/ѴIJh2ioäUINms|!&m_v-] RXX|?|ڡokH\{ȸ7*:.p/r-g/zOJFi;?_.U8 +mʫr-h_#}tAw 5C]B.ڶx׶kD 6j?Ʀmzo3 3r^HBɮT"|]^w0ӲLi +e>,6eec%u<,aJi!9QP^qZP844<.qd8N 2p[ng.T !LR~rR%L^9v%i*l$ۜd"X9G"H VPH;=2O%BpT&RDGv;C`jvعƤ5=uՁgLMN)sOg\:3;^6G,CSc}݃És1mV|bt/>;5|bG»޸`i+f˔/ۖS;!ѳV +A }}ŋ6Z90{@%NOMMʣr杲z}ho/Ŕ~-N/giQCYfҙ`8OaR j$BƟ/ahd߸9]O}&YYjhr·|n2w-|Dn(` L6uO+b[fw:[<^3c`?_뱉D-NnZmo'jwZ35_&3YyB#&rY>!+#JA. +,~!ЬH+wh}(K5 x,y}=-آmnoRbO!GJ'(QfU(P81I馊 +endstream +endobj +317 0 obj +<> +stream +xVɎ7 W(>]` b'A0H1R*B>ûÓ'WzQg/o>*XHHEKݫe], alW>mox.v7"[D#QFXs3_7/wכo};>h슪]Za ozl-Qr5:bق ]ZGaȲ9Z/܉I^Dĉwߛ7PjC.\_}ӡ,2։ +)PT;I!CFV0m\3 PtT%.DMRQNJb!\B5`@ +h3!J[`a2]Y:l^W*NR٬ (W5 ys|2[KtIq"HeL`C8$+h൑&|i$+TG>WAZ| +X(85ל0@MNB#$0LL! +oFDF4V0F +t )[ +Z@{&>[*'We L23<P $#*$qq0c%0,$u$0kV`3jY4nx, ;ĢE,;XMsY$^Д6h +(3 ) s_zGWޢv;W x3-8kkxl0&Qf)_Fs6k+(/ZZ9dz>5.E/Z +endstream +endobj +318 0 obj +<> +stream +x]Yo~ׯG8n1npzI]A}0#ên%Ų꫺ί?~Ovŋ߾3ttު`r}BRn?\Nw.^tcw=?Zm~᧾4#og<Ǜ?_|ws^Hg^f3N9 VGx'ngwwvW֨l qXƻI!f61p஺q;޷W;Fc9Ğ 3 @sm-Ec-Uy.yUц*2,]^I2ڝrUPFRm$Ei喐pzp^vW&zcGw2)tX+T>8$OJ:F{<ĨMW7gvARj짯۲jܓR=d \p&uYAa:NE[ts.C:#EvtHv߅Ε3jH8^< +-`)oI;KQ%4b 1X +V^EV)`۷+SQ1-:+¸ l# 9bo49srJ+y֍2^ц@ SN8 S=җ*)EgF/$iV]͜`57_0~q [#$<䱰M1qhG0K9Rrp q8>t<7^目'ӪߙCW[QB')!"g9+ݻQDwv䬿%#ڏ/ Yˊ=۲y&aWe|t 'r_qclbĆ`^mzkX6u!Kj!9g+LOhkcU +,䫘f2B(9+͗x(7(LE Waxx+0s?ٵ(aX\%9-PVY!Cf{@$/$3= ͹)f;J]Q)fN ƉGH]E[h6d B*%zQ>RXv50=O +8յB}%JS!pwן?<b7ҕ)$$I8fY^0>cBou)H?+ўa]) &80xdB+GWp9R = ,:p9ni3%sHuJ} +e ;$ti8evm +?&n4 O`.hGKk璄/S1$O4')9ofY)^#F+k}:‘'fی@/#aUEch9Z2;!ux QTËjwy;/pWB+*2FYr&T9|I+&q?Q :9ޕfo+Uu[gVB$SI,][˽|K*Jn?}e|taQ0Ez12e#-hcRxٴjE[T/XJuWc@HUVg)ѫǚXΦ|$9RAn;_H{wYeSf)4L\(Y.~=RU7W Z0,j + k)譲Iޒ)Н$U?R[1.Ӭu8/RV#S?ڸp(%-RԦC#t lA53_Q(B4>W!- U=\[8gc+N*x(/ [i.U܈W3YV }L-E~|U}GpR:L8Q\Ix=lg +`2E!U1Yp4 snI6 ! 'v~ʚ|weZE*@[7:^'ӂ#Aa"m V$m + rm(1_}aNS5*#M*FW,q& ;yW7+pfC28{?@-а 0p &sH6kOYs^MʵIIec/0!ӣVs{孎idJ88`[+@i~)hn{%4͎ykQ`%7kiwwdq-ZNg1ɛ׹}Ҩw**(V 5AvV9< 펊esGmsj^Rf E-.0GRx1+@!EE,*l}v i<ִG!TnSXvm|7Q5 ^?ན*˰ ư#_6 +yyˆi:y]Iw,yKe+L pɸYfP|ڃ]Aw盻}581ˌt{/V1^G}8~H'NwxC(?Lf+ALO_!%WRCV.ilQN:<)?`<~ٲ\H~%Wwӊ zǿ| +5@|tJH! `Do|_~?~6?]׷x{qWܹNyع6^əsQ?AH +endstream +endobj +319 0 obj +<> +stream +xksI\_[~drvoI>ȪM'>eΞr_NIoOW?޾E={ѿ:NwVSb]ZSnuws_vtgr~xOZwwY o_O>hw70ZGI*llx +t|գO/ѧ//SGemʥK1)mhZhOgz`99!`p\wr :rp5 O2Rs> w 7 +D +1)Av5$CZ%X7FCHs9Ȧ +oZ[_pvO?3& A{|yILT9]%<.ĸUGWjS +=1>H %X^xo,cXb`w3 +xHnޞiA \t9<)S ~Unw (N<>q⬻&M=`,O#AٝZ$d] _{y\,PAڤJIgk}o + Oe6eQS4 Ԗ2ӠW|}?2#|=ݯEz8|O7o0UrVD@YPTޝ, +vw6u/meQh_W{mŅAj!;ہ vFsios0tk42uģ#(fd%HMp RqT%FbF 08@Gh9' K\bSq +g " +NuDr> +~?v;#û'4nuD-]}x͜\Dnh`H\#J{}zwK5|٩-F +T5ʽ!֦w?'I\*G`]^ +Sq&r lAH`E2"Д&zRcJSq(*ۮU@+e +de'OlܝFMdge0 Η0&OGQ涝N*JmU20 0j~'BJyu`BHF(LihV3I,)̤Ve;z㦝9dOF'7bd(CsQז"%Q) 8R4`{WRYғfI%& Pw d墉jhBϪ(R#Bso5 E+&:cbm8] :h>:e9 OkM tu3&;%ʍeURvEgH#frŘ#!E p{j e(ᗫ/|s$7O=JBgeB,&}:{&]) ' #J̴@ +6X̡ "k^`:V,d5rf:Vֆtz3e-.8C#Q!k`oNJ 71&Qu +MxF{0.I=AXW+U6}OOQ*kWrYR%MȎl +PI, ື{Nia>NSr:]E %xH,mǕۊphƵ-6*+B__< +54{jT{5^\aMHw8u b3v Ii +.:UR\qM?ST?i'l]n 2\Ѓ`oWcsK +o>hb)!v u=džhj'b5/;R]TlE9eK%Hz5BΫ;mBހs5+U)DV0C9|CS#,7:ET +t/梟9y R%֕՟"{M˗TSuZ+o_F cb 38OH3 +#D"r]g^Z6g3DFlT&hTO?)ާʋ2[>GUN@LLbK\*:ުV<$[)pu93!/~әUyO"#`RsKzJK*hU1&HUsU0cX4@9!aZcSc(-D4vq>rz S& e)[u|!x=>[#>LڹQ쪎~=Ck +KJ}܇UfKW&#%t +t]Ms8Ý]iq4ܘqZv#2<.* }[N#oDCx ^:gYK؄!y*BĽ?b& ۯm[R*ԔOzE)GŪ3#%a`~ΰ5^Zj+ ],-oLZv +qj)Y`=3tldIJ}w&su59oh'O| =ŵu-]8[Lӌ#v1`6AAf%)Ģ5yxxqbCwhTɞ~S~Uv/PN5p+4F^W'Uٌ$lD:!rQ,a/A4O&ʈN +/n=묲7Ax|k{BxѸUHϿ 5VaZ@Oq(!2xm~!:H>pO>HIM@>9>t_rf +ٍmI:ݽ*㨷 Ns^?qĩlq&ݧ(t +IM7ۯfP6m23F9X4g{" : +E{;cQ_}9)S2ٕ0c Em˱w?bu{1aV_'DMϽ6ro`#Q 6<;BXu>}l +awY#aub٢kJ<\g1*Òy< ZFbu~F +4+ +Fg|+L`r[M/ׯ͑l?Q*wuLp)2t +&0$dzUpf)*[+X*M*a_K0nWaպғzY??&Qfdz8㿾=Ǘw o﷯~y}Oo{wxs:nOK9v?9Z3- +endstream +endobj +320 0 obj +<> +stream +x]sݿlשWI=e7[{oI$la;x2әEb,/7_l/^^7C50xLeX{Ӆ5$C] +|5dV$SG 1c=.Ԗ +Ɇh?W45\#[ۑ*d5T4s "EUSi+^0N +TBkWNƛ!~| 1e-Kh $7_׳hTJ.f- ߩsC"{ + wk8Ӥ^uBWDޠ펲ida;:Ӆ]4ɷ,-`(wjWzVDГi7Hpmey˯׻ +%J+n>gFDks,i/w~V[{>KzYQd?n6#?`P:E0ЂwgagLrƾ8B +M Y$M/:Vs=i[O1[vB&Bc)9猏夜FtN\f{쇟hnqf|T,EWp9Dg$R3@ ($FLbsܲ(Bѕj!Qk&(J8¿X(0mP0cD(DTeB{}ٻn^ fʚ0Yne3-(XHN2!!eUKU"+&AoKg @U9tB'ƍfP *yUx甗BEЧȨ4oCㄤne_l~qߛg>bcP)4.ir(afQJ.p()083Q!:܇*bHaNlRE/-(GԴD5Z&$G-+K̅WuAE0P#IjJ͘G . l\po2IxoJ%圂NۢOs"LʹR 68uN%Aou-'G'{}>ܠ/mtv#%!gnA"˨{@"vp9StIJULŤuY kII(S {?GCg{ lzl >fi(R2LdMbcu\Q@/IXTG%Ɋͬ2vZm6[nj;j`p+>U;U `v ( JDU%R]rʄ8y])L6evύrJQ,^7zZ*}D eDnݮdzUs kԄ4;}am܁5JpOPC^Hcx+BDAdDː+(-!7+9HDz0 cSXhNETƵRhv^t[ܴ9C訠V;dHp ӺUZIES@~ko! +M)m,h2Ix2X+*9 '߫hZSnVZ(]`rJ6'4:Oӕ5ԑbWKЦ'ttU0'傻hwC0*<0p稦jJTU % ͕N(R1 vvDE鐜>z"bdUf@d<^-"$!j8=@qLn@3%YO^-N1]Il\Ze+t7pS)ĭ('1(r$ +j#sݲeS|!6xĹ2+T)ш#|*-}k.O7ȅ=lԡ'T %*?M/1U#'i27'X1Uhc<25r+A SRن.t2HX EA[q08qjn 9Jqts4,Tl5lX:jVNdOwNX%% sHI2]3B 28qT%-di_PxM N !p|IIuNkL[AG4밭8Fى2LqJg[PYB +fo +dȴ{R0ܟPG;nG>^p?ϚKzxԦX.CfYm=VmPh(j0!d WX!5}۩-;G& &tDd\~+*)5L+BJocٸTNr}z{eco; +ny$h&X‚X>x+XtP@*Q&Wϝ Z1y` s>L&NI;*nBPNQv$%= >QK.倧0 3Ulʬ/כM '(2n./6Z5y1)tns?>NeۙQ/Kmr>%&6> +Yؿ),Q]!;*à3C"#.;Hpuq@hYXb.}|޿ t e&,hkL@U"h*(Q `tOͧߟ_rO|n6>V2eysl\QA?U[|=Nx +endstream +endobj +321 0 obj +<> +stream +x۲_A'kjI&_6㓶3qq4XNOiJ"E`"H!Xz?i?'wݘF7yhoU0%fߤU19ͻݼOow_5]otcr4zZ÷qo aL}7^|In=??u:ïnU!ޟx MGX~<*dol/\_l_#8!a;{$?nW^=՝w>d=SHZmX""ݎ_VMo͎A%@VaLR!ecOR'`:Թ 3vS3aF:h,8A\ie::A2$UV✢F{{dY-.e cO~CsE̠-ԩ[RA@ i# ,ms[є#£M\$9;HSEh "17z=tV:E wZ~ ?1UL >empR*wOvMH/IZt{p܈ +M2t:%9Btpճ=EaNBĔ<"H`hJ>ٮEt*( +D}@%MyIRQF"聞&Il.]V:vs|~m\:/gi$@1!ђbKt){eL0m2a/˝FO)~ٰ!"$?^jÈPTvOq @'?0GM>=9B%ÂOʅwPbSe=&S0A(`cUvʢruvP!h9)* 0D3+^> $m3ċTH 6YU}`O(xFH +^~vRfmVVzC{Ԓ)/-@Oj~R?ٓ.? f4 +PezN*& G ?n"N t-y|&FN"{׹x֐%cRfLvQ SHj5C-W,i UvIB@ͤT1sn9r6>='Y G_Dq-( 7-1״O;s֎q)49 ~SY}T踠pNvgg1r9028q/jd|B5UAz^"F& IY@t /RF%iAZ*8t_tT +0ee;3p*v=?Zb;hՀڏÏۏ/f5 toj܂d̔!+]j:AF^Ք[ee F? % 3!}a#B`}B{LHf]nm0(n VڛB+:Ϋ#_뵰 +UX1U@`pD~ȫ t7J32YfV +wpꀲSDM*ٺd-FOqujstʅ +U&°Jvfꮞt,W 3B$+} DƊ kɯ]p!v%2O r99T)s ʔĵZLns2s}_+P-xʭr&a_V4 +1 ^>KSu +bNJUVښqK^|AMP$lO*ْTѪiLP%={8C1(z$ +D {j6:^OkQRRBtgFCslund=Ȕq۷mkq3O]c]/@ޱTޫtZpSU1mu7~]`+ ;!џ&*@kQޠ&\jpR|x^|FeNK^:+%X} :ibW6FXgUh.iKm!|hX{EqjYדwauAzzLH{vV&K$6kz +LTу,RM*y~vבRm;w,OW1m-[H:J \o0KtW"΁^UO~q}a1ijg/"y!b>=aP˛ӏ< ;IH.Dr&gK|E@nb +h S(/|LEp#U6 a<쥓%z#Cؗô^"Y~wvU˦.*%c 1{;@~@@~q^o,8c=8%NZK7+'_vGά @:6*oK419'fj_=qD`MKU$di~Âw+ ]Ÿ!@ wl/zIK`3L6v Bg塵V狞ϋ w I'XFBhf]W :nwo9F9}WQ{ͫ'i14i||?]cS:+J:TTp*[T +""'U69x=uJ +EykMnߘjӁU x}91mNX/넞.g!vԻ4>(bkFc[j31Tޒ5V%4gktmJ5ztlJԵqfՏ1<{ryLwCjX@5%Ր1ʞe5C9}p})a b(1ų,\. ₴0vh҃?o?N5nᱜj݌}l ]|~~{ovޮ[C:ظ6~DM +endstream +endobj +322 0 obj +<> +stream +xisbX>|pUL VTa>XEHaQI}j{og|YL׌Ξgx=y|矝tSy)1.E)vޜݫ_;ΣNwg3Nz_h<_ZU _h{M:1I g䩍t?Ї3T=QՉ5$CO|uȇ,U# x3[Z0 ťˎa"AVT+wgϦa$VZ)Vv&sV]i XiuLTF+撑Sr&D b%ds{wر =J=ck--V52X<9. &5/6!NPXr&NlHC Ked(CQbam?a}sd7_. J'WNx-+mΓ&a|5W?}uRq䨌Ѷdd.&Ѷ;|I{;95ɫm@@Jny_PMOsp +sd5 +{5IV&CHYEmXm`705nNS; r(o=j QDpۦka_`v3tޓDwWe`:K.pr= T}pqdG2HJ$ +EjɄ)ʙbB >v0*t0^fgB Zwf\~asQ&'F$ (0o[tpN?8걝 `?aj]V,7}AGk[tjU._(k!x"RAno|} p ҌH5] ZRJ7uP.Wgazm? oqؙ>)sć *뜿sQiKuQ%g)]ӱO|Lߑt*$w  ;>;N4mq GؾG(K0:Ex|DHސ}b[5֨LH쓂d9OF˜"Π=&?ME(in:Ռ PX(aZLߐ0bfkW`!Mi6D]ruyɒ<;9-}^뽥fa}VP a%+B+ȧ?cԢ3 +0_DeQQ *s v=w)QP'䝵j6K~r‰h>1:BҾ9݉)ʕƤ.q|Ƹ C-eaP dt沑nק@jd9k6')l_ fu_’؏%m{cjW"ݏӘ\L +HLP8F۩Z04- 51NVbԼ &uٚuiqʕTc@vnYY$Lүџ/Ã@_$uzY뿛:p0Pe9u>孷qsP l`T1mW̙A5>*[t)N9Q(%Qq=X!GԎQv4LǀF!l[FLipb#qKƬC/s*b6VڐB {WTgv'NM2B +0D0hyb4.ɮUn'G +u-3*Jߜgzg9Dj| 6܇eyu.e YbCbVqal'` O4'GYsNVhFm\K!NeCXWB>~F~!/CsH={h7 *`s76cS: $xk1F@AշOjcY 571͐Te\sHG-DKFbVE +|ipjj͒S6kggß74~EڏD6]쎘<(*.0ޣQJ#)ÅoB#pu](tB6l#x9lsV%ŰcȆfNo&+.^WK y \T>`U`σ`OwK v&7ÕܶbfF +I;6 NF :'-H]̉YlQJBA3r/բRMeMއG녈0qt1:#ƪk^Y* 6 +46ĉ*MuPvKUvBos#]` :[:Ae&gދćP,tBX`x$T.cpR!e]0G2 ̫ngBoYP+xO>Ʋ%9U#O8Ng!ڠ-Kk*)m!~>H }J˅dV@A+@\zUAIQǥUEJ +Nww: +Rd KXn5.ר,L d6Th+]̘k9"͆T0Il\lZg==+_ dW$/>~*W@BO*\tM>)x?*ݳ[o:ҩo"wS +WSH.)[[M˯xDF(omt3)$߭Evly|T\WaPǞ 3ܶK}q eOvLg}pqq`ͻשΘBvrWmױx1/)^Et ψx3XKk&Jhp{RcMȝg~LZXpA9? ɂ$IuT)6˯p*gA~Q{9OPr)AKuDŽNo7"a~9h}+!^,Vbdu'jL1eYMp3AEr+i}Q0 +@`6*Vh*mٰ ƕ0--Fg|Mp1hB+ø]S+o[YߣL9J}\lLZOuF3}! {#dQbT*1/6cU,;DK7fwE;=77/_߾?{Ξvq_^}_˛^%G;WTƯ/i7 +endstream +endobj +323 0 obj +<> +stream +x]sݿԮyr&ilMq$՗:S˩ri}gO{{_n#/ ⋛ͷ?]|?˗_?ʬJ^*;JQlW6zuJ~ybW^b{?.>|nu?o7kTHjJ3§I[A#9{,|VoOh0qWxͣ/߼ޔL3ӬvʥάRLiet4ڳlMG~z[Oo&3_k挛eGN\{?\!WpUS(p$V4t$Q^I8J5P8IU&vt6U#8AF|,n ^"!<`rXG9lUE> uh(J̏etPčO_V/ M'￳kUK}YPjQ4l9ya/n֨l q4i{EA۶bF2F0,욜0' scj48ܭQ-txQH!QpTu/zG6j:sTȢf'sR.x|[YNrӪ)}q5sd2y^@g4uV1H'Y53Ey`.}7$(Dëm[H\[_/SQ{]n(h*אLJ DN E<Czn*鬜]IK}0XOCՆ$iCȪ -qd}`CH%Ier75B0aT@ǓhQn l r&mA s(PQ)V:I郏%yc1tlQ{ih +;^!?EbGF$\" =_䉕("Siw ,(0Q$MeItQ" tiF̆aQhV3wH5A>4":^8Kt. +ϐBS}cNhI'LAnjTKZp:S0W&gUOR$A-uy暡ǁɡnˁ8ۉQc )rB)e²#( @׀T_a +J !gϮ\_a"(OyƿbCxN.\k.t<1cIi_ NeCG߲5GN6#b§"je{jB˄V̘%u4B6,В9i}#3T ^+݃mL:Uf@uΚMq*h$qv2D)ș" Q+$OH"k>hMüpY<%R.XlZMVYglȩ&⩆'V"zTE9fW:O&.>,nNlT\sp#U*xmK)E7Y3ԨXkXArhAtb~l_8 + k& a4#3XlJSu[TE*Ω[JlMo"%\T>d}#f5:` Z D*'rrJ/WC`108vT8jRb1kN*e6]r+D1l,pqS C!V}NxUd{aX&0o ՟€Z)r_iI 2>|q{b'jLN6a*R%eE *i_@9 Ő L\ճMdA"SxG([d>X߈8lՈdBC:XRT&d_W\( &;J FTPuRGzg!&`bȶI0ϚL;j+BF| Z +Z#( a^Cj I-jA!?nDȕM0uS{ai\ys@\q`AdϛY&r_D(ɦ '\ܲ!ҐWBCRyogtYιNN~ۣ=/ +dUc!4}rz(RIs Z|)4ղY24p-EЗ1CE%+âHJg n8x*5qL7Ȏ4ۆW eЬT٩.wr𲀧S>iwM-ԔL7IjeUUA1tnNUeh+O&@}pͅJ/Uv$e) QRʦ ~AŊSR}U"jl0_}IY B9W&޵0`LfT*PwL%+P9߮*FzFEh@BNR9$P{de.In1ymʣ%MHvQDWYOHl\ a.چHG#{glܒY,3.3i+ K3p)J6 JJʻ[؄ !Ks\4mM=VW#3&rJvu;8EO'Vq1,.S 0i<%m6#)f!"L;0gMiCb MAIb5P^az A9m̒=O_^Q%|vO|f?oYS[m..8⬺dH?v$V@ s:7T^3.]G'%QC^fSCon4+A3ׇا *;~m t<laoqǖuͪp7xS/k-(wF%q,]{g@~-,*K6/G*_ef[͟/o~xf]_Υ`dIx~B*L/_tY> +stream +xZKϯ`, >XrpC +rsX0nz&]"go_}u? ߼y})PBLrXn wû7(Cv[_HmDiQ7~|`JU6X~#o!mb 'ϏH|÷߽N^%FȄl?.jT[{;98/j˺݋FA1CJ.jOv 4߿ŒȐ(R[;3kN 2q{۾.9/ݴ]xL)7d+~˔[x 1|to o:\9s1(ܘ.x_O<0G2Ngq'TK&(Iӗ +0$wAauU9F,3.E'#f MpSZh% MwszFqRKN,LϿ[tn|" pd< Ϡ۾F>]εH\NKtL>5b-DeaS5)ozYrk*gwgUՎw[Qo_B`%e[w+^K'%ڛCNJbFHgsO7P`g{ ](q/i Z2'?\,':mz~B@oW7݋fB =;Z&<\o;ts]$>]yRV@_Pf#_}IG_6X 7W+9ȩ)sՊV@&`@jTM7@Èw#݈jCYVvy VK%jÎVlX"$,l AK&dM !+CP@=4&uU\b>ĮRjap?t ,BK p +\7@X [`k:Z| ؠ(eXX~Pj 4RW?wKtTjf=EK H: Vx:*^<|Ǯe#0]t[k2"{.C*= !VёKu )T~ch0Em)a4oee@FH6eӪ%d]̱X,EtPa QDj w,{焳{c BCˆ6م0iwfe5 W JͥOC`yڳ'Sl-PGQgK64X׾|ڐ1Km3%`kFeΫ_@c<Se R +2[noFF̵5 l,L40玽DjfAWGUL٪Q;bixaktLǞ4R7NW ++ꝑ{m%pCϨ֌[6[m)m'wVP6`K&~.ךa߰#I+AU7 +xh,XV >h^w:屴&q.`#E)?o}k,Lr jZ`n`mO:ß]T@ "Rd!r 9K$oT=׍C5n1y/fN0 +u6Ծ<)zҬ!#{E8Fbe+86nʵ6[wdI\k?%_ޤ)'P\)}6*'FQSO>5m|M3Cw'ktBsgDA-./dk ;Ao_Ɉ FHkZtm(&uR $?8XOSOFF꼒"$<9r]Tw\&_@$'GFlzZPs~Sg0e 4O=żz_q*VG= 2i/sN}V^dOƸIJUŔ!Dmٮ|+]}SMh@(Bl#v F`!oD^mrAYBA +)U1$"?I(C* ,MCӅҴm_xK {O#?Cocq#`s!HRoM1D+6ߚZFE>ÒBI~FmBȠ^HR"L|㴖z`QOrsEHT2VW̭> +stream +xuJPFOUvDD@`]\ +FMkIRB|&إnऋ(HrTų9` ըa&ʺ:l +3Ŭ*ުnh)&C|>b纝黓AvCƫ+ y') +̵8+/> +stream +x}Kq?UX 94%MQKSN#ԦQvBˡhFk ! +ՠZP~xx^ޗQx"^P c!H0 + 0l+ߣy7;׫;Q?V._tF3LEK)y z80eIPkT/%[p:8+%d"G `d_{ٹ֖gzm\8rSif1\CU` S] @o _ +endstream +endobj +327 0 obj +<>>> +stream +xջN1~bJ(2 eT)B}qG;c_I(ŽKso h\~2"i&c{pD$ͧe>?yߧ +endstream +endobj +328 0 obj +<>>> +stream +x+ԯ0Pp + Dw +endstream +endobj +329 0 obj +<>>> +stream +x P VI̧ၸPAdyIAƺE%Z0)PۡR]m81E +endstream +endobj +330 0 obj +<>>> +stream +x+ԯ0Pp + Dw +endstream +endobj +331 0 obj +<>>> +stream +x% 0 {0PU"{LcnJ\SQQd)9g?7,5lpr/V +endstream +endobj +332 0 obj +<>>> +stream +x+ԯ0Pp + Dw +endstream +endobj +333 0 obj +<>>> +stream +x5ȱ 0 >S&"!DŕnC1k<`oU {u :nB›P3f,W9% +endstream +endobj +334 0 obj +<>>> +stream +x+ԯ0Pp + Dw +endstream +endobj +335 0 obj +<>>> +stream +x 0{xk_5(Hgc0cJ%n$nJ,|KPVz`!ը2 Խ4f~  +endstream +endobj +336 0 obj +<>>> +stream +x+ԯ0Pp + Dw +endstream +endobj +337 0 obj +<>>> +stream +xE Ulq+#5 <3y162x@Dܫ1D*%f=zO1Q +]iu +endstream +endobj +338 0 obj +<>>> +stream +x+ԯ0Pp + Dw +endstream +endobj +339 0 obj +<> +endobj +340 0 obj +<> +stream +Typst 0.15.1en2026-09-11T12:02:27+02:002026-09-11T12:02:27+02:008application/pdfW0Q8F1el5rjr65Rgm6yGWQ==W0Q8F1el5rjr65Rgm6yGWQ==proof1.7 +endstream +endobj +341 0 obj +<>/ViewerPreferences<>/Outlines 9 0 R>> +endobj +xref +0 342 +0000000000 65535 f +0000000016 00000 n +0000000125 00000 n +0000000201 00000 n +0000000280 00000 n +0000000362 00000 n +0000000506 00000 n +0000000691 00000 n +0000000831 00000 n +0000001116 00000 n +0000001181 00000 n +0000001288 00000 n +0000002137 00000 n +0000002190 00000 n +0000002488 00000 n +0000002877 00000 n +0000003182 00000 n +0000003573 00000 n +0000004015 00000 n +0000004345 00000 n +0000004451 00000 n +0000004534 00000 n +0000004638 00000 n +0000004743 00000 n +0000004810 00000 n +0000004881 00000 n +0000004942 00000 n +0000005028 00000 n +0000005159 00000 n +0000005259 00000 n +0000005321 00000 n +0000005453 00000 n +0000005553 00000 n +0000005615 00000 n +0000005722 00000 n +0000005803 00000 n +0000005909 00000 n +0000005992 00000 n +0000006090 00000 n +0000006220 00000 n +0000006320 00000 n +0000006382 00000 n +0000006514 00000 n +0000006614 00000 n +0000006676 00000 n +0000006748 00000 n +0000006816 00000 n +0000006884 00000 n +0000006952 00000 n +0000007077 00000 n +0000007238 00000 n +0000007329 00000 n +0000007403 00000 n +0000007495 00000 n +0000007626 00000 n +0000007726 00000 n +0000007788 00000 n +0000007920 00000 n +0000008020 00000 n +0000008082 00000 n +0000008189 00000 n +0000008270 00000 n +0000008401 00000 n +0000008501 00000 n +0000008563 00000 n +0000008695 00000 n +0000008795 00000 n +0000008857 00000 n +0000008964 00000 n +0000009045 00000 n +0000009162 00000 n +0000009301 00000 n +0000009374 00000 n +0000009504 00000 n +0000009604 00000 n +0000009666 00000 n +0000009798 00000 n +0000009898 00000 n +0000009960 00000 n +0000010067 00000 n +0000010148 00000 n +0000010278 00000 n +0000010378 00000 n +0000010440 00000 n +0000010572 00000 n +0000010672 00000 n +0000010734 00000 n +0000010841 00000 n +0000010922 00000 n +0000011025 00000 n +0000011104 00000 n +0000011193 00000 n +0000011282 00000 n +0000011412 00000 n +0000011512 00000 n +0000011575 00000 n +0000011707 00000 n +0000011807 00000 n +0000011869 00000 n +0000011976 00000 n +0000012058 00000 n +0000012375 00000 n +0000012466 00000 n +0000012565 00000 n +0000012707 00000 n +0000012840 00000 n +0000012943 00000 n +0000013008 00000 n +0000013142 00000 n +0000013245 00000 n +0000013310 00000 n +0000013419 00000 n +0000013504 00000 n +0000013637 00000 n +0000013740 00000 n +0000013805 00000 n +0000013882 00000 n +0000014072 00000 n +0000014145 00000 n +0000014278 00000 n +0000014381 00000 n +0000014446 00000 n +0000014580 00000 n +0000014683 00000 n +0000014748 00000 n +0000014857 00000 n +0000014942 00000 n +0000015075 00000 n +0000015178 00000 n +0000015243 00000 n +0000015377 00000 n +0000015480 00000 n +0000015545 00000 n +0000015654 00000 n +0000015740 00000 n +0000015873 00000 n +0000015976 00000 n +0000016041 00000 n +0000016175 00000 n +0000016278 00000 n +0000016343 00000 n +0000016452 00000 n +0000016538 00000 n +0000016698 00000 n +0000016831 00000 n +0000016934 00000 n +0000016999 00000 n +0000017133 00000 n +0000017236 00000 n +0000017301 00000 n +0000017410 00000 n +0000017496 00000 n +0000017608 00000 n +0000017740 00000 n +0000017843 00000 n +0000017908 00000 n +0000018042 00000 n +0000018145 00000 n +0000018210 00000 n +0000018319 00000 n +0000018405 00000 n +0000018612 00000 n +0000018693 00000 n +0000018780 00000 n +0000018974 00000 n +0000019058 00000 n +0000019139 00000 n +0000019216 00000 n +0000019311 00000 n +0000019606 00000 n +0000019680 00000 n +0000019754 00000 n +0000019861 00000 n +0000020206 00000 n +0000020243 00000 n +0000020289 00000 n +0000020335 00000 n +0000020381 00000 n +0000020427 00000 n +0000020473 00000 n +0000020519 00000 n +0000020556 00000 n +0000020712 00000 n +0000020861 00000 n +0000021120 00000 n +0000021278 00000 n +0000021436 00000 n +0000021594 00000 n +0000021743 00000 n +0000021891 00000 n +0000022112 00000 n +0000022262 00000 n +0000022534 00000 n +0000022688 00000 n +0000022846 00000 n +0000022995 00000 n +0000023246 00000 n +0000023396 00000 n +0000023648 00000 n +0000023807 00000 n +0000023965 00000 n +0000024124 00000 n +0000024273 00000 n +0000024560 00000 n +0000024710 00000 n +0000024962 00000 n +0000025121 00000 n +0000025279 00000 n +0000025438 00000 n +0000025597 00000 n +0000025748 00000 n +0000026012 00000 n +0000026164 00000 n +0000026426 00000 n +0000026576 00000 n +0000026857 00000 n +0000027006 00000 n +0000027225 00000 n +0000027375 00000 n +0000027630 00000 n +0000027789 00000 n +0000027826 00000 n +0000027863 00000 n +0000027915 00000 n +0000027967 00000 n +0000028020 00000 n +0000028073 00000 n +0000028126 00000 n +0000028178 00000 n +0000028230 00000 n +0000028282 00000 n +0000028333 00000 n +0000028386 00000 n +0000028439 00000 n +0000028491 00000 n +0000028544 00000 n +0000028596 00000 n +0000028648 00000 n +0000028701 00000 n +0000028753 00000 n +0000028801 00000 n +0000028852 00000 n +0000028905 00000 n +0000028957 00000 n +0000029009 00000 n +0000029061 00000 n +0000029114 00000 n +0000029167 00000 n +0000029220 00000 n +0000029273 00000 n +0000029324 00000 n +0000029376 00000 n +0000029429 00000 n +0000029480 00000 n +0000029532 00000 n +0000029584 00000 n +0000029635 00000 n +0000029688 00000 n +0000029789 00000 n +0000029867 00000 n +0000029948 00000 n +0000030026 00000 n +0000030107 00000 n +0000030185 00000 n +0000030266 00000 n +0000030344 00000 n +0000030425 00000 n +0000030503 00000 n +0000030584 00000 n +0000030662 00000 n +0000030819 00000 n +0000030931 00000 n +0000031054 00000 n +0000031166 00000 n +0000031278 00000 n +0000031390 00000 n +0000031502 00000 n +0000031739 00000 n +0000031880 00000 n +0000032762 00000 n +0000033012 00000 n +0000033148 00000 n +0000034662 00000 n +0000034907 00000 n +0000035051 00000 n +0000035391 00000 n +0000035644 00000 n +0000035781 00000 n +0000036076 00000 n +0000036279 00000 n +0000036427 00000 n +0000036574 00000 n +0000036711 00000 n +0000036839 00000 n +0000037001 00000 n +0000037157 00000 n +0000037273 00000 n +0000037390 00000 n +0000037518 00000 n +0000037685 00000 n +0000037893 00000 n +0000038085 00000 n +0000038285 00000 n +0000038541 00000 n +0000038693 00000 n +0000038822 00000 n +0000038904 00000 n +0000039559 00000 n +0000050305 00000 n +0000050386 00000 n +0000051212 00000 n +0000066570 00000 n +0000066649 00000 n +0000067121 00000 n +0000072954 00000 n +0000073033 00000 n +0000073514 00000 n +0000074999 00000 n +0000076223 00000 n +0000079733 00000 n +0000083598 00000 n +0000087072 00000 n +0000090780 00000 n +0000094783 00000 n +0000098244 00000 n +0000101482 00000 n +0000101825 00000 n +0000102232 00000 n +0000102697 00000 n +0000102927 00000 n +0000103223 00000 n +0000103451 00000 n +0000103749 00000 n +0000103979 00000 n +0000104268 00000 n +0000104496 00000 n +0000104783 00000 n +0000105010 00000 n +0000105295 00000 n +0000105522 00000 n +0000105635 00000 n +0000106708 00000 n +trailer +<> +startxref +106912 +%%EOF \ No newline at end of file diff --git a/XMPP - 25 years/main.fr.typ b/XMPP - 25 years/main.fr.typ new file mode 100644 index 0000000..31c66fa --- /dev/null +++ b/XMPP - 25 years/main.fr.typ @@ -0,0 +1,134 @@ +// Default margin for readability +#set page( + margin: (inside: 1.5cm, outside: 1.5cm), +) +// If input format == "booklet", we alternate +// margins for print format. Otherwise, we set +// equivalent margins on both sides. +#set page( + margin: (inside: 2cm, outside: 1cm), +) if "format" in sys.inputs and sys.inputs.format == "booklet" + +#set page( + paper: "a4", +) +#set text( + font: "DejaVu Sans", + size: 13.3pt, +) +#set par(justify: true) + +#align( + center, + text( + size: 48pt, + // font: "Communard", + [ = Jabber/XMPP ] + ) + text( + size: 19pt, + [ = 25 years of Digital Independence ], + ) +) + +#align( + center + horizon, + image(height: 50%, "XMPP_logo_notext.svg"), +), + +#align( + center + bottom, + [ *Daniel Gultsch - August 24, 2026* ], +) + + +#pagebreak() + +#show heading.where(level: 2): set block(above: 1.5em, below: 1.5em) +#set page( + numbering: "1", +) + +== Infrastructure + +« Nos infrastructures devraient nous appartenir. » Beaucoup de gens approuvent par instinct cette affirmation. Pourtant, l’identité de ce « nous » varie selon le type d’infrastructure. Les autoroutes, les voies ferrées, les ponts et les ports nécessitent des efforts à l’échelle d'une Nation. La gestion des réseaux d'eau est généralement confiée aux municipalités. Et ce désir d'autonomie s’exprime aussi à une échelle bien plus réduite : être propriétaire de son logement est un rêve pour beaucoup — mais cette propriété ne doit pas nécessairement être individuelle. Les coopératives d'habitation ou le logement social #footnote[#link("https://en.wikipedia.org/wiki/Housing_in_Vienna")] peuvent offrir des avantages similaires. + +Le néocolonialisme de la Chine, qui se manifeste notamment par la construction et le rachat d’infrastructures dans des États souverains, est légitimement critiqué. Refuser de vendre ses sources d’eau à Nestlé est une position universellement admise, et les propriétaires immobiliers figurent parmi les classes les plus détestées. + +Pendant longtemps, l’Europe n’a pas appliqué les mêmes exigences aux services numériques. Cela s’explique en partie par le fait que l’Europe incluait implicitement les entreprises américaines dans un « nous » collectif — une hypothèse qui s’est officiellement effondrée sous l’administration Trump, mais qui aurait dû être accueillie avec scepticisme bien avant cela. Les entreprises ne sont pas nos amies. Plus largement, l’Europe n'avait tout simplement aucune considération pour les infrastructures de services numériques. Si l’antiaméricanisme revient à la mode et alimente une grande partie du mouvement pour la souveraineté numérique, l’Europe ne doit pas se contenter de remplacer les entreprises américaines par des entreprises européennes, mais s'orienter vers des propriétés collectives. + +Sous le système capitaliste, les entreprises auront toujours un rôle dans la construction ou l’exploitation de nos infrastructures, mais doivent rester interchangeables. Si une entreprise construit une route, l’entretien et la réparation 50 ans plus tard doit pouvoir être confiée à un autre prestataire. Il est acceptable qu'une entreprise construise et exploite les lignes à haute tension, mais elle ne doit pas en être propriétaire. Nous voulons que de plus petits acteurs puissent s'interconnecter au réseau et y particpier. C’est là qu’interviennent les standards #footnote[*NdT:* _standard_ en anglais est traduit par _norme_ ou _standard_ de façon interchangeable] ouverts. + +Internet a été — et l’est encore, dans une certaine mesure — bâti autour de standards. Un datacenter peut acheter des serveurs auprès d’un fournisseurs, des switchs auprès d’un autre, des routeurs auprès chez un troisième, et les connecter à un fournisseur d’accès qui utilise du matériel d'un autre constructeur encore. Si l’une de ces entreprises fait faillite ou déçoit ses clients par ses pratiques, on peut commander chez une autre. Les avantages de cette indépendance d’approvisionnement sont évidents, même pour celleux dont ce n'est pas le métier. Pourtant, dès qu’on parle d’outils de communication, même les personnes les plus renseignées oublient d'appliquer ce même raisonnement. + +Communiquer est sans doute la quatrième activité la plus importante pour les êtres humains après respirer, manger et se reproduire. Pourtant, on considère rarement nos outils de communication comme des infrastructures. + +Les activistes citent souvent Signal, Wire et Threema comme exemples de chats développés et gérés par des organisations un peu plus éthiques que les géants de la tech. Mais au-delà de la confidentialité, ces entreprises continuent d’entretenir des écosystèmes fermés dont on ne peut s’extraire. Elles ne sont pas interopérables. Signal n'a pas agi de manière intrinsèquement malveillante — bien que verser près d’un million de dollars par an à son PDG et héberger ses serveurs sur AWS soient des choix discutables — le problème est que nous ne disposons d’aucun plan B si cela devient le cas. + +La question du logiciel libre est orthogonale à ce problème. La liberté permet de garantir que le logiciel n’est pas un logiciel espion — contrairement à WhatsApp et aux autres produits de Meta #footnote[#link("https://localmess.github.io/")] — et que le chiffrement de bout en bout est fiable, mais n'empêche pas Signal de fermer ses serveurs ou de cesser ses activités dans l’UE #footnote[#link("https://mastodon.world/@Mer__edith/112535616774247450")]). Le logiciel libre ne suffit pas, à lui seul, à répondre aux exigences que nous devrions avoir pour notre infrastructure. + +Pour être à la hauteur, nous devons concevoir des systèmes où l’auto-hébergement est structurellement possible, mais n'est pas nécessaire. Tout comme il est possible d'être propriétaire de son logement, il devrait être possible de gérer son propre serveur ; il en va de même pour la propriété collective. Les systèmes numériques devraient offrir les avantages de la propriété individuelle et de la propriété collective. + +Considérer la communication numérique comme une véritable infrastructure ne peut se faire qu'en adoptant et en imposant des normes ouvertes (standards). + +Le protocole XMPP (Extensible Messaging and Presence Protocol) #footnote[#link("https://www.rfc-editor.org/rfc/rfc6120.html")] #footnote[#link("https://www.rfc-editor.org/rfc/rfc6121.html")] est une norme de communication en ligne. Il n'a pas été conçu pour répondre au climat politique actuel. En réalité, il a plus de 25 ans. + +== Normes + +L'interopérabilité et l'indépendance vis-à-vis des fournisseurs reposent sur l'introduction et le suivi de normes. Afin d'éviter qu'un fournisseur n'impose des normes excluant explicitement ou implicitement ses concurrents, ou lui conférant des avantages déloyaux, des organismes de développement de standards (SDO) ont été créés pour favoriser la coopération mutuelle . Ceux-ci ont généralement des garde-fous pour empêcher une seule entreprise d'acquérir trop influence. Parmi les SDO connus, on peut citer l'ISO, l'IETF, le W3C et le Consortium Unicode. + +Il est important de distinguer la situation où un fournisseur publie son API en autorisant des tiers à l'utiliser de celle où des individus se réunissent pour élaborer collectivement une norme dans le cadre d'un organisme de développement de standards. Les SDO comme l'IETF fonctionnent parce qu'elles poussent au consensus des personnes avec des besoins différents. Les protocoles ne sont pas dictés par les priorités d'une entreprise ; ils sont au contraire revus et testés par des entités concurrentes, des chercheureuses en sécurité et des développeureuses indépendant-es. + +L'entreprise Element (anciennement Riot et NewVector) développe une messagerie instantanée aux fonctionnalités similaires à XMPP — telles que l'auto-hébergement et la fédération. Mais, au lieu d'adopter XMPP, elle a préféré publier sa propre API baptisée Matrix pour que les autres l'adoptent. Contrairement à un standard traditionnel, Element garde un contrôle étroit sur toute évolution de son API publique. Les postes-clé au sein de la Matrix Foundation sont majoritairement occupés par des employéEs (présent ou passé) d'Element. Il est notoirement difficile de faire accepter des contributions externes dans la spécification. #footnote[#link("https://github.com/matrix-org/matrix-spec-proposals/pull/4174")] En quête de souveraineté numérique, les administrations publiques européennes tombent dans le piège de telles plateformes contrôlées par un fournisseur unique, confondant code open-source et norme ouverte. + +C'est naturel que les propositions de standards émergent dans une seule organisation. JMAP — un remplaçant moderne d'IMAP et de SMTP Submission, assez proche de Matrix (une API JSON sur HTTP) — a vu le jour chez Fastmail avant d'être soumis à l'IETF. Jabber a débuté comme un projet communautaire open source avant d'être présenté à l'IETF et rebaptisé XMPP. Les idées démarrent modestement, mais pour créer un standard, il faut des avis extérieurs, de la collaboration et le cadre d'un organisme de développement de standards (SDO). + +La différence d'approche entre Fastmail et Element est frappante pour les utilisateurices. Non seulement le protocole JMAP a été considérablement amélioré grâce au groupe de travail de l'IETF, mais il dispose désormais d'au moins trois implémentations de serveurs et beaucoup plus de clients. À l'inverse, Matrix — né à la même époque vers 2014 — n'a toujours qu'une implémentation de référence, tandis qu'une seconde peine à émerger. Cette solution de référence est célèbre pour son usage abusif de ressources, ce qui rend l'auto-hébergement difficile pour les petites organisations et les personnes. Element commercialise des extensions propriétaires pour améliorer les performances. + +== Le « X » de XMPP + +Les origines de XMPP — d'abord nommé Jabber — remontent à plus d'un quart de siècle. La RFC initiale #footnote[#link("https://www.rfc-editor.org/rfc/rfc3920.html")] date d'octobre 2004 et a été légèrement révisée en mars 2011 @ref4. Or, les besoins en matière de messagerie instantanée évoluent sur une si longue période. Heureusement, le « X » de XMPP signifie « Extensible ». Le protocole peut évoluer grâce à des extensions: les XEP (*XMPP Extension Protocols*). Ces extensions sont gérées par la XMPP Standards Foundation (XSF). La XSF ne les rédige pas, mais fournit plutôt le cadre (SDO) permettant aux développeureuses de proposer et de standardiser leurs propres extensions. + +Adapter le protocole à un cahier des charges mouvant n'est pas toujours facile. La XEP-0198 (*Stream Management*), une extension cruciale pour éviter de perdre des messages lors sur mobile, a été stabilisée en 2009, mais n'a été largement déployée que vers 2014-2015. Le premier iPhone est sorti en 2007, et le premier Android (HTC Dream) en 2008. OMEMO (XEP-0384), extension pour le chiffrement de bout en bout, a gagné en popularité à partir de 2016, trois ans après qu'Edward Snowden #footnote[#link("https://en.wikipedia.org/wiki/Snowden_disclosures")] a révélé la surveillance massive de la NSA et donc le besoin de chiffrement. Les articles « The (Sad) State of Mobile XMPP in 2014 » de Georg Lukas #footnote[#link("https://op-co.de/blog/posts/mobile_xmpp_in_2014/")] et « The State of Mobile XMPP in 2016 » de l'auteur de ces lignes #footnote[#link("https://gultsch.de/posts/the-state-of-mobile-xmpp-in-2016/")] illustrent cette transition difficile vers l'ère mobile. + +Cela montre qu'avoir des standards ne suffit pas. Les normes doivent s'appuyer sur de multiples implémentations, de préférence indépendantes. Aujourd'hui, la XSF assure le suivi de l'état d'implémentation de ses XEP #footnote[#link("https://xmpp.org/extensions/")]. Ces données aident les auteurices et la XSF suivre le cycle des extensions, par exemple pour passer une XEP du statut « Expérimental » à « Stable ». Elles identifient facilement les autres clients et serveurs prenant en charge une extension pour effectuer des tests d'interopérabilité. Enfin, en listant les fonctionnalités des logiciels, elles permettent aux utilisateurices de trouver le client adapté à leurs besoins. + +Les clients modernes tels que Dino (Linux) ou Conversations (Android) ne se laissent pas distancer par les alternatives basées sur des protocoles propriétaires. Ils ont par exemple rajouté récemment les réactions par émojis, la synchronisation des confirmations de lecture entre différents appareils, ou encore les indicateurs de fuseau horaire afin d'éviter d'envoyer un message durant la nuit dans un autre pays. Une fonctionnalité unique parmi les solutions de messagerie instantanée auto-hébergées — devenue malheureusement pertinente à la suite d'une attaque soutenue par un État contre un fournisseur XMPP public #footnote[#link("https://notes.valdikss.org.ru/jabber.ru-mitm/")] — est le channel binding, un mécanisme visant à empêcher certaines attaques de type man in the middle. + +Parmi les projects actuels, la communauté XMPP travaille sur les réponses aux messages, le partage de plusieurs images sous forme de galerie et la prise en charge d'OAuth. Ces fonctionnalités s'appuient déjà sur des XEP expérimentales, mais la communauté attend des retours d'expérience sur leur mise en œuvre avant de faire avancer le processus. Parallèlement, elle étudie les possibilités de mettre à jour la RFC et de soumettre à nouveau le protocole à l'IETF sous l'appellation « XMPP 2.0 ». + +La messagerie instantanée n'est pas une expérience utlisateurice homogène. Une application pour la collaboration professionnelle n'a pas les mêmes fonctionnalités qu'une pour usage familial ou entre amiEs. Tous les clients XMPP ne visent pas la même expérience, mais les normes permettent de créer des clients spécialisés pour certains besoins sans avoir à inventer un protocole de toutes pièces. + +== Un avenir ancré dans le passé + +La communauté XMPP compte des développeurs plus jeunes que le protocole lui-même, ce qui est fascinant. Il a survécu dans son coin à des startups financées par du capital-risque, à des plateformes propriétaires et à des cycles technologiques entiers. Cette endurance nous fournit la résilience dont nous avons besoins dans ces temps incertains. Elle est l'ancrage, la colonne vertébrale, l'infrastructure. + +Matrix a réinventé la roue en concevant un métro sur pneus. Sur le papier, il y a de réels avantages — comme pouvoir gravir des pentes plus raides — arguments utilisés dans une publicité agressive et un lobbying intense pour se vendre auprès des collectivités et gouvernements. Au bout du compte, toutefois, la collectivité se retrouve prisonnière d'un fournisseur unique. + +L'évolution de la situation géopolitique et la prise de conscience de la domination excessive des géants de la tech nous poussent à rechercher et à développer des alternatives. Mais et si cette alternative se trouvait sous nos yeux depuis plus de 25 ans ? Il s'agit de la norme de référence en matière de messagerie instantanée : la RFC 6120, ou *Extensible Messaging and Presence Protocol* (XMPP). + +#pagebreak() + +#set page( + numbering: none, +) + +#align( + center + horizon, + block( + height: 50%, + width: 80%, + [ + = À propos de messagerie instantanée standard et fédérée + \ + + Dans ce texte, Daniel Gultsch, mainteneur du client XMPP Conversations pour Android, célèbre les 25 ans de la norme RFC XMPP, nous rappelant pourquoi nous ne pouvons pas confier nos communications à un seul acteur. + + Malgré ses limites, l'écosystème Jabber/XMPP est encore aujourd'hui animé par des communautés sans but lucratif et des projets à destination des petits hébergeurs indépendants des géants de la tech. + ] + ) +) + +#align( + center + bottom, + image("../resources/noslop.svg"), +)