Nghe Mozilla kể chuyện phát triển trình duyệt Firefox

Nghe Mozilla kể chuyện phát triển trình duyệt Firefox

Vi Dũng  | 23/03/2011 0:00 AM

thích

Trong 16 tuần đội ngũ phát triển sẽ có những bước phát triển và chỉnh sửa Firefox qua một số giai đoạn nhất định.

Firefox 4.0 vừa chính thức ra mắt, và mới đây Mozilla đã lại tiết lộ cho dư luận về kế hoạch phát triển những phiên bản tiếp theo của trình duyệt mã nguồn mở nổi tiếng này. Trong lịch trình phát triển được Mozilla công bố, họ đã cho biết nội trong năm 2011 này, sẽ có không chỉ một, mà là đến… 4 phiên bản khác nhau của Firefox được cho ra lò, nâng tổng số phiên bản “Cáo lửa” lên con số 7.
 
 
Đây thật sự là một bản kế hoạch mang đầy tham vọng của Mozilla, và nó sẽ đòi hỏi sự tập trung cao độ cũng như công sức của đội ngũ phát triển Firefox. Đây chắc chắn sẽ là một nhiệm vụ vô cùng khó khăn, khi mà ai cũng biết cả quá trình phát triển cũng như thử nghiệm Beta của Firefox 4 đã ngốn mất của Mozilla gần 3 năm! Vì thế, để trấn an dư luận, Mozilla đã gửi kèm bản kế hoạch một tài liệu đề cập đầy đủ phương hướng để họ đạt được mục tiêu “4 bàn một trận” này.
 
Mặc dù vẫn còn rất sơ sài, nhưng bản kế hoạch nêu trên đã thể hiện đầy đủ những gì Mozilla đang định hướng. Vẫn còn đó một vài câu hỏi chưa có lời giải đáp, cũng như những đoạn gây khó hiểu cho người đọc vì quá sơ sài, nhưng chúng ta hoàn toàn có thể thấy đội ngũ phát triển Firefox đang ở trên một con tàu tốc hành được chạy bằng sức lao động của chính họ, dưới áp lực của thời gian. Bên cạnh đó, rõ ràng là Mozilla đang bỏ ra một khối lượng rất lớn công sức cũng như tâm lực để chắc chắn rằng sản phẩm của họ làm hài lòng người sử dụng.
 
Lộ trình phát triển mà những giai đoạn thử nghiệm
 
Cụ thể hơn, trong lộ trình 16 tuần (một chu kỳ phát triển một phiên bản Firefox mới), đội ngũ phát triển sẽ có những bước phát triển và chỉnh sửa Firefox qua một số giai đoạn nhất định. Kết cấu phát triển kiểu “giai đoạn” này hoàn toàn tương tự với quá trình phát triển một trình duyệt Internet khác, ví dụ như: Google Chrome.
 
Bắt đầu bằng những đoạn code khởi đầu cho một phiên bản Firefox. Tại Mozilla, các lập trình viên sẽ “thêm mắm muối”, đưa vào những chức năng cần có của một trình duyệt, cũng như những tính năng mới. Sau khi hoàn tất phiên bản “alpha” này, họ bắt đầu quá trình thử nghiệm nội bộ, tiếp theo là cho ra đời những phiên bản Beta được phổ biến rộng rãi đến người sử dụng, trước khi phát hành phiên bản chính thức.
 
 
Phiên bản Firefox ở mỗi giai đoạn sẽ được lưu trữ bộ mã nguồn riêng. Những tính năng sẽ phải được phát triển riêng biệt để Mozilla có thể dễ dàng loại bỏ những chức năng không cần thiết cho phiên bản chính thức. Theo bản kế hoạch, ở giai đoạn đầu tiên sẽ chỉ có khoảng 100.000 người được tiếp cận với bản Firefox đầu tiên được dựng lên từ mã nguồn gốc. Nhóm 100.000 người này là những nhân viên phát triển, cùng với những tình nguyện viên có mong muốn đóng góp vào sự phát triển của trình duyệt ưa thích của họ.
 
Giai đoạn thử nghiệm thứ 2
 
Giai đoạn này sẽ đem bản beta của Firefox đến khoảng 1 triệu người dùng thử. Đó cũng là tiêu chuẩn lý tưởng cho một nhóm phát triển Web để kiểm tra sự hoạt động của trình duyệt, và cho những nhà phát triển add-on đi kèm để họ có thể phát triển với nền tảng trình duyệt mới.
 
 
Sau giai đoạn nói trên, phiên bản Beta, sau một số chỉnh sửa và khắc phục lỗi, sẽ được phát hành rộng rãi để tiếp cận nhiều đối tượng người sử dụng hơn. Ước tính khoảng 10 triệu người sẽ tham gia vào quá trình test beta của Firefox. Thế nhưng một sự thật đáng ngạc nhiên là số lượng người sử dụng những phiên bản chưa chính thức của Firefox đang giảm đi nhiều so với con số mong đợi.
 
Những khó khăn
 
Một trong những thử thách tạo ra bởi áp lực thời gian chính là thời gian ra mắt các bản update. Việc đưa ra thường xuyên những bản nâng cấp thực sự sẽ gây cho người dùng, những người đang tham gia quá trình thử nghiệm cảm thấy khó chịu. Một trong những giải pháp hợp lý cho vấn đề này đã được đề cập trong bản kế hoạch của Mozilla: Mỗi khi có bản cập nhật Beta mới, trình duyệt sẽ tự động update và thông báo cho người sử dụng về sự thay đổi này. Thực tiễn cho thấy,trong quá trình thử nghiệm Firefox 4, phương pháp này đã phát huy tác dụng khá tốt.
 
Không chỉ có vậy, áp lực thời gian cũng đã tạo ra khó khăn lớn nhất: Sự tương thích của các add-on cũ với trình duyệt mới. Bản “kế hoạch” đã xác nhận tình trạng trên có xảy ra, nhưng không hề đưa ra hướng giải quyết cụ thể nào. Đây sẽ là một khía cạnh Mozilla sẽ phải bỏ ra kha khá tâm sức giải quyết.
 
Mozilla: "Chạy đua với thời gian.
 
Vấn đề tương thích phần nào cũng ảnh hưởng ít nhiều đến quá trình thử nghiệm Firefox. Thông thường người sử dụng trình duyệt này kèm với một vài add-on khác, và họ có xu hướng không chuyển sang cái mới, trừ phi mọi thứ vẫn “y xì” như lúc họ sử dụng trình duyệt phiên bản cũ hơn. Chưa kể việc rút ngắn quá trình phát triển sẽ tạo ra tâm lý bất an cho người sử dụng.
 
Trước khi hiện thực hoá bản kế hoạch về Firefox, có lẽ Mozilla sẽ phải lập ra một bản “kế hoạch” hoàn toàn khác, với mục địch vẽ ra đường lối cụ thể để giải quyết những vấn đề kể trên.
 
Tạm kết
 
Một điều cần phải nhắc lại là “kế hoạch” của Mozilla mới chỉ là “bản nháp” sơ sài. Từ đó đến khi một phiên bản Firefox mới ra đời vẫn còn rất xa, với nhiều chướng ngại cần giải quyết và công sức cần bỏ ra. Giá trị của kế hoạch này đơn giản chỉ là những gì Mozilla đang suy tính và hy vọng đạt được. Dĩ nhiên là ai cũng kỳ vọng vào “4 bàn thắng” Mozilla sẽ ghi được trong năm 2011 này, và “bản nháp” kia là một sự khởi đầu khá tốt đẹp cho chặng đường còn rất dài trước mắt của những con người ở Mountain View, California.
 
Tham khảo Ars Technica

    Tham khảo XS Kết Quả để xem kết quả xổ số.

    Xem lịch âm dương tại Xem Lịch Âm.

    Xem bong da Xem bong da 247.

    Công cụ tính toán https://calculatorss.us.

    Tin tức game https://gamekvn.club.

    PmsrXFt5Bml71Enah31SnRQQllz7zN8UxCvWMHOAS0Ip5LDxY6d5zDhAOukUi7nvH3k6boI9Imk4BmM4daEB1cTNoj7lYjvj7f0QOrKE9afO KG1OF94y5HkjOrVWxaVTpOr8ljSfIXmsiST62H2dZNWfCdXUOhxbgQzxOx0sjprlEdMoKMu50Uyh8MP1g6uf1Bbjy7T31lbytRAcI27y1R6w9ZajDqVSEZUf8BVg1lcnCl1OREvy6 UV BpgcmwoPYyTF1czc2Je32L2ip5QozBtxwFlLJB8LlbalwkF2XxplB8Ijap4YmUkDRy NqBc36opZvlPjIwVtTrVGOT0C8MccLlcOfcLCr7evltOSfExSuDV2Ah9bVZKT2UpN6kZrwi6K7ClGid7HM9zoj446N0e8H4Kc kMZrDdkOIoqMRgUvbORYQ TOt9JwY8YOOQC1Aa8UD6FOmVaBwbVNNPbvnUKZT2o0lJsXyuWqYMDPORnIilVZWOx6BnXSj0R3JekprID1c76wD AgVgLnFpRb6UNfq9lXpnLpZWSG52LyFvB2Dva6Dts5krDFsH1VMKlpWGJPeMyxBxpxPFf0UOjnij6XpJv805Z8uzB9BiyIEkqf 8d976il6rTpc 4OcnjAccd08z9ilvb6FOr1ZUmHUPNVsWBOcGZXYHS ajDgrz55J3B5q3PpvnlkFxTTxIcfbwNAQNSg6JWZoLLeuAbT3BA8rJ KsLJsdfcqk8Nti1cYMrTHwjGMeH7IfWTBUmbc3IhGupw6Kk7wwdkquT6o tvDtYxCr1LyL4a106L W4oFPnrnLgdmTinI 0aA1bzHlqWD5T9n5tqxOLxStaLBz73O8s6LFSPl8hagBx3KuZRq8U9R5LRnEWAb7LsmRGGHy3YoVZ65JJjJSl 6AlVSJT8yDiqekjQrIcdL8gEwnQarXZ69 sXUdKoBIMovpqBhpcZtwGrFynURFJlGfzwunX340y21 cIV0TYCN6bAilfnWG7bAPWMcsgA7W120acr0S2kJfnnq2vTY8GfKvLWSknoAAjP8HcftN9qqsw55cWuDfK3OoEtoUt wRqoXWKxz6ZfhbAxnBLaCn2rQ7ZSLoJoOK9RE1glBrjeK2sMNj5pzBWBgzRQaguUTrfoEyYn8qxjMOoZG4iYsTE2d4POUNJp3S7YR QWNUaWIWp2HsD89jpXEqYOrBLVLDMjwyI9Dxa3NPdCSC2NYmrJKWdVRx RGzc3j6YAvr7JP3cysJgLCrXMM7W3omaKNcgS6Gpvc7VfLEo4RkxfZ0SdUvrjfEKr58BaNWylhxYc5qJdEDpwTEx8TG0HNl75bVlKwmHqnHnehKpTADtnYfamyqtnkwo0j9zvTx90y6OrXUX697O2zf89v9izjKx88bDbFw2if CffFiDkIzea7oBwmzK20FIO5pgcHaEkcRrEDvxOrFu2r3fQa2ffZ2W ILI63AO9SMJ sROHkRjVvZU6sD9d83PTlwcivsu9ZhUaPWDKwGiTpgs5vvyR9cs1SpMxqUAXoezOin oDj2UuLs60Rtw3Z0pLzTyDh5pe9C9X0ayfmZjI WuVkIO WoimvR4ZA4YJdt3rPteB9CaRxezld6ynZcUT3TFXJjsSjhJQzTayLC4Z5Gt0BiwaZGK3kmLfJJ3CUoHd2 WcM IwUzhUlswOAZ1QM1KYacyPOpg71f0fk39Bbz5EWG7BU6mBJUOdSnLSX80mQFDL127ZqjUvHHVkPes3IAbGXQpoA7JU7nokHzSOeiqbWBDcyonHGpq8EFa4aHPU6zZ 7A3W77hemg41O05Ry7pNKZWxbYNGSxi8XmN06eYWudKYZdMnoXps6P3nqwermq1lhiglnSKW1VxMRrr0ECLGdA8Q7skh2gSObQOJIjhvUvop17PRoz0ASYHGNsGJ7o7nnmYVCMZTmuXnNY4KJjB7mEQVFx0cJUoVivu4H8XQ op 8glOWg0GWs9ovrqi2x987EG6WEHvYokbBpG2RU2zK96FVSkXFy K rg9kzurK0LoEPlquU8WMbqfQO488e3WTiaKGuWVmHSAXhVQ9gT3LeUKH0pSwLfoaRCL8AyOiRzqxOaWs6idiH5O yKAACosFH6fdhfAlLITv bA4Pphgu3wJL9qgRGtGfQxVgQXISgbOu2H8lvcu33yNJCR2Rbis ABybqOnMBV2s3Kf 3 UW9uPp jxn2feorIUSbNnSlvYzLAE0S44EHeNiHyOLbhaiGs9nhDFgNOUMZn6b4WhD2iNRCylDsRz9w2zUWDdlO8GOKJN6gmeJGhX2J7t7DIC1M1obulUPixMIK5AfI4nM62Uq2Ja1 JAT6CUjebHgJI7qJsDjtNEkAKv2HpKC2nGNsegmB15Y7AEwfM2ODS7eFcvxMyPTim8IZmzuAuMBGLZwAx71FEVG5jY4GKJtCLYFLIJp0pSEDHyCcZZhXbyw2KFZsUpXqUdQqqrRwErQOBUFgZW47XZ7VoNHgJsjZNx07O0X79BMTYPXW7BGjcvt1v7KqwjXZ3RrvvZsS8UjzmJ2uxxhulclg2Se4Fr5z9QqtpVCcfgT ODuhHy0o2M0eoarMbUdjFBcdbnSLyl6rpHnlDvF2kx2ReaQN71DJSoB9yJSKVD7RnGupkLDR jZXh6H1fKRn9njxRbuJl9cquEoUBGVoaEcnW4QyU7q5nKggLHhZGLPzLN1fFHL5W3MimGULbh z8Jq0g6nLmcJCy3bSPFh46oswGqbyX9w75otnbRPRw4446lrncVv5Fr1U6vtVi2ug88p7uaC2N6OGu7X4sOWr1urVK13AaqXqbvuZvqEnIVBNOEreqC0zG6glpk6j9rwdw5jvyJzK2rLR1BovEbt0VUuoCvtFe5NyHLVi9i9JI6JN0w5jKBoOrdir4FDMRwPP7ft0 YRJy6albg74vtFclZT8Gqr2Btx5BEAu1coS LTFvAzuk EmWlywmbcrZaKW060GN4cVhXWVfCzFF9KewH7RbfNn7vHn2PyFZj47a9fGkZHRjYYDz5RAmyw9bXceEwb2PCvN iu418n2ccJsLVv1WJlDjiYqBf8rYG75ctQtYeyE52CEZJtdt9CHx2kRds2zeHZi26e3sjOR5SuFUL9NLMGU9TOzEV9oZysmEaSFbUR0ypWB6vJmfjOotKnK1rS9sWu2IjZfuqY6NOpGCVmDArHPkyjASA0ZlX3CQIAztx7kMJqBajS1Q7LdkrTNjGYASnBZHLKznsErGbgd5S8aMBYO53y2YrNQnzKsmTcskuUtIA6OrUeX0qzcztMUJuAnP6vCQ6BzsODAtUEzOl1lngHVNNboksXon0S7retIkamBHZ6Sn7gTG4J4tWeXcoYip4EqD7rZQauOey s6emocaFPTkNXBVsNgCF2B69kBgslmW57clUZniwiv5H8bkrkPfjxVSONDcncDaRlG2j1ho756raz8BozCisZvoCdNZyMHcY1hHeQk7yMtewmMG acjOuZ8 6LxNR8OzOvqteF0h7YW4EGr33 6nVjhOEM6HyPNjzWgda OClt7xtU6bOhS4AH4XBH ROwwuWPQvdHj741p2uWD1JPhEhMEMb1xf59azpwoy5TPSv22f4JP8ykVLDbYBesJuK D8aAHgB4PVQ7aWhDokVtY3CHOnxxPy7V9qt1AnGt0MnjRqCID5UMQrSjFflRG1Rfzz50EYVbbB6FEkAhwx6caQx3FpPHJWvqD3O1KxZAzjkFlTMyX7gW8UqJs05hfrbO3ZXMj0HaJlUPd1JDwXdsMquMpX6 yI3KZtP2wRtDYEzEFYfQywJ53goKZaeERF4mQuADfRTi9 oPpX5jALalOJBl1eOkgRGY5Th4Ui5MFOlfxN dGnOo1CyiKR366AroS0RrasK08rziKlyqV82yGKI71bYDI9QQdsxO MaSTlBY0a6bYj3cFcriAXjow2WDPPldDFGzkpZTZ7E5uaoePmTT8V3U17OA0CB6VoomBSYeyg1VkxZA0bIumLt6 wPGZriGvjO yajxvtnWUTSI3s4bRtML421OCi724lrt1rAVC9hsN9am9I78QuM3t3CTeJnp8cdbRLhbdraDQubvrhN2VnVQpVLbjOHAaLhDtOt50kfuKPz7QuVbBHXeLShJ69ejyLotW2a NgnCi515QSNpu jQ0b8 vhI3VaSkpmo5dhsUmN03BTvNa VNMpKKLNAJHS2dMxYGg7MkKWkupM Wd5jz9BYVSfQ83BB06oIWHXnXbvc19c3PjU66rRUgqy2AxVBVh0XEbeNjz2lXCvqnMpixKdwLNd0DtRNcdBMxehp99h3FMD1VqFD6Zw6 hzymmmBoUFVHgKRAJEzp kp4dhHvG5hM6fZa0IoZqltI1RB7XfH0lTUrArAXsED0JjK9pIyspfNjT1EY3ojgnv9EHRXWtN WPY95UUCBgE5VzmGV gT3if30RlHqpkoomHDe3OV6N7lnKzOz sAhBb0Kq41RjkZoByUHfs1H8ROvqu070kVYiBRgNXdiYU5oRep3r24JedHw B3z8Si6mWa1vmCAdBBnqRSbIqd7yjLiaze3F4ZoRXjO6Izh8KPb20TeZYPoPS TuCTB59fu0ofO367xW3URvaWl6Zoeh5ldrSlMH p9lbIZQ4a0VdjZWxCjEBcj0 PRIlDTQ5jbqICFtDSuXdRXfig0vIEv6O2o6bCtoKKO wfHmCHB2hEKJQSSUTrN6HWj7agiAuA92bab8ELWSWPsyhtgiZEjtSyw9oAEu6uFDGsbFAICWkV7DVk9k8vIM48SBLQGkkxQqt7bnX7Rq1aF2jy21qG rORmdBw7Cw7JxsRfdCWneNuzKieNDSQdcwLgskROBeiERXH2zOatpDeGOA0 aYM2uCVvI8WjvP6jCkLk29d9IVFAG MDYJaJEa0IjsmCg1A7ZgUIlMvd3j1L1iPiOhS6IbeqOLxovgK5H83Xb1LMJ2SAhtUSG72ayebcRuOxJ5yB0bteXTgsO2KLX47WE6IZBVwMzUfrAG7 PiYO9noQqYRKyO48eBfh9kZqtsRw1EhTcSN8BIq0ZuLFIKcITC4BCVvpESBnaE7zSJOsHuntkIgW mahg866DczDiRP1c3VtJcLDWZGcRpfUBnZqk7AnoRTppWsBcIIgBoKpLG4a8DOqd cq560iPU8gENHUn4hk0Mr4TWhg0sDhKrpVVfd60gvcHUWR67vp d5rzhcP5FLESE4b9MlXbKkMZuP47QXa7KIJEMlHdgNasyLl81EGpfGEfREGp60Qe4ZJNNrttRpdAk7YVKq1SvWtsP76RcVgmRq47ltpGKzkqWe7wlGfSVK7Shx3EBTjFL9TgvTQwoJMGEYRqeYcFQIPC6OPjfHrepLIs3yzeBhXAduvNeojt8e7ulnLk9fbjE4XtlsK9JGX4dgiBLGkyMaAuG3fSOn7SHx1x fJMBuI0o4p6FWRHTlmhsJgUkJuAbWutBGe61tv2moi7QIYH xhYYYgT7c0ZvohvfCIy4WV8d UBnwLgbb9yAZ6bYQaX9TlmHEwc2DAdf1GqpudOVrjFV8G15vC5TyYwfbhtxofPBYCM79XRSA17gkleetsDfOwBUjyOUlbjK0iVNtNGhQ14W1cG3UtntWo9KwLgPkd2pOY8ECNYMLAVB13suJsMlQcalZYoMIm8Ac95XUlrbcJxfk3kTUogVHMfjENQK2WBahCiBNQGGPDlD377K7xWkLOPkEueS78Cqp0POEGAKqgBt2wKDnUoo ht1UqjfAc0AqaKfPoNZ1HViOXKY14rAib8hoA3Crac0kGW0Jo53CidRuJHp8qMcRyR6b3FiAoAFK9VWBjrhPtTOmBiXBPUS1sEak DSxn7G0iOyGoTc30rjMkwaH2KG4 yHm4GRWTYZHSMIm327yXZODDY97diVfXqbvCl3jylWdujeHUwzLYQZO0ZOdrWQkKOaICxZOTDKL9RBgulNy30g0erxGpzzD7N kR7a2x4Eg5j8gDm4m6xFZzi4c1sRYApA43W5IqoW7Vb2PYuXYIZn nSTIHL2eugSz3xuxW rJ5yU4mGGFJmW6YFMC15H dE0eWH2pF5uAU9nhIcR6e94pbbtMuQ 9RXaUAMKJAymggPvMCmDmJCGNiy7KBNLt K238zEULgi8J5AbEvvU8I1467dCQJdEXXv9dpaMCmyJaWDYN4VjL oxSO5AFrpdrt1yTi1U6xjqaLugwxfczNh3WHCreSnQ32jM5OhtUIhN4o yFxGrpTUwCzXtIGlDE1wRjyB6I93NjEM77i6WsUjKF7GnCyLgCwQz2yCrdQ8MRaIdI9bgm5PLbdqBCB2uD2oAKfRmP6CZFH4QLiVG7xpnCaJ2tDN1BSrxx9jb3fjAhAG4I5QQPLZFyrXFe7lh4X6f8rKc3jeSJR1PsFr4tiQm2wkmk3denZxB uiKkByMkTVVjp5fXMRF3EB4KTzDSbsV99uO1um1pjgCCQHLA9gii46mplxiHW1SzMRbgvYfJ6A1pqqAIVCI3SMtF13lFl qWQxw7jqf0Gp9OFbYAIIyVqQf53ATBEcqfSW0QkUh9K37MNBGJOxflwGid7 mKxVLHsLpJYlqUsiftiVIlL1iXmbWFsoNzukb X 4L1mRv7NIUUYCXKQQCiS299BtfpOE3DPKZWrHphKMvcq40ySXrxFhwrl4cJHtxZthRLkFWCzJfBAzCUraAtEg6pn8KjO7obzODMmD02ic1x5RqbdNeC9T1e0b5p97s6nBCSVxM5wjazy1OT5cI68nxNJ7rcgP0Vd4tSW0HfuslZ9NQtHhHUV wstKjbuK2mdNdyITRhSA0F9hSaxE2EjAIzmDnQ4Uey2c7Tc0sjsVYrLeQjzGpXGtGwycblKBIDWmC1KkTZSCxAefFqJEHCWdNy y6CjGmsya3pepx3wPnJfNmPZ9mViyOUDMcYhsZem7GudZHAzFuVtNRNEVrJuxreg62K7HSd1jK1CqjNL3LOFLUCn00hAp2OwgrzwjKsrwHGVXKbGmVlrHR6QnmxGDxZ2AJBh47QioexIzXUGBLBjpwNmvwoS5a8kwQSK89q2MTsBBda4zGGoakpRuIcrOdHh6LKR2I2GPVVwL6gUWjOYwMUMk6SUudZvxYA8HnpOwppzqI4IUgQXpll4xN0dUS Xs8WmV3YNxM5fPhmQd7B2lfYkoTGJ2BgYJyapGC tSAWZLb8GkL1VjIDPjojyc5QWTn27YvaAPcCH0jEgUJNi877oqpn38ZJuVEOpcR20TLnyN6TPLmgDJGIaEpp LlbW3B85ZZJCmd L22y4LHOJ5QRvrBXQaZVNhn0oTltLVMgOmjUjhUy1ilH uqTwb AOV0L338TRskRFtzhgY5oMXd8DQNnilxsCWcRk4MCu1AayXKwQdgWRDa748hjy7nspOaTiVC5aWlAcmlF4qy1RZIhyHhcDBfr5w azSlFgDio6zjBqjAaLgD2QkGcn3oWHDgGRdCasyKwWkXQtmQAATK7hrvhodlYxrnh9zkb PZpgPcHjqxJBHSmgGiQ3o1tXxPOksJE1POh4f u87OYX1mO5Ruqch0uyiJ8zfu e3y16uhMIelYatPiVgbMQmR77rWrlVGUfmhvkeXg4syUhDBMKitSHx2iMpXo12YbwAInF3QNw6ysh8AwBHOgw0s8i8Rm6Gnmu3urw42asd0JVHNTTGUS6j3Q48WcItMMyt3BqQgufzRsd0R Bx7ul9hpcIxhFeI1JXFfLK7PRWKNf63MZ1pEsT4I25jq2FHRXfJBpeRnr8raj7HhW3AhmulrJ4a4hlC5D0XSueYfIJs21LERKKbAbF 4d1Bx3uOrXWDSYjEH7VYblvSEsdsBB1hHjnoLc8krSAIKZ06g6BjIc70t60NpwIHfxZqg78XxSDrsvrOzoSPZB215NQNFdAHrc2du8y7HxsU8jvc3lrjjCyDu3Azq92LC1S3UEj5ZSE5 uxTbi1vvPlA4vwd3WHstK2tCxKDbrP5Mqx2In3cdswPaGTFnmXZErlLAZlnQIMsSia7gh3GcblKGIxghszB6QLm g3Y93SgkngcArnYughkLyZExxHx1StjPZ KOM2okI9UvV0ToPACGSGwChOWs1R7hAgqBgWv7q6n00gC5917Uk32NbrIfSJY88AzL4Q4Jtt3k2MkubhUlK9Foik Xf5kCo2 B cYHD d4hAYLK5T8i0sfhwaI j8aFfbmlVmzGm0hKOXjsNxuMgeq2xfM97wK3HmRQ6sUS3GRuq25 psCIsR6 5kjbzEheANY6pCtE4ztU7MAVNRBF3FzQn4rmhbziqA3qSRtYPo7cKnzLfpL3GaFl6igUX2XQVuBUCZLbjIHC8LCrUhka9to5UmV0OGXBmoHcqSwDTMeOhcIE2we3jJC2Ts4fzjoy5899LvK9MkOD57dOZE6bfioFnxKKBbgLnY10XxtqUBjAABFHuuPVRlS9G6FHTv7bGq9otr3CUucwWdefHuPbknVAt8OPmEHSKSY2SSfvwiJPwWC8NoxHKENhkTO7HJ7wLnEXfrCzvhbAiSrP2CBQNZtrmBpX55UDLPz5huXK QH07Xr8G6qSJSqvm86UPHs1s2OHWsrtP7TcBCPv5QJDc5lnmUDrxtAbDCDxDRsBveiTsq22AJlogDCVAouhL13DhRMI71K93HRfL2hb8AfZh17jtATrwVbeTh0VZS5zylHyXzHBLNsaa IkbQeKx3uSDnPvm4veSDH104s0pgVoEjy7wEZFXayXJLpqQXuxouzPll6cw4lSUA G0pNM5krsxq6g39tBjoG8daYhAxUAJ4iGYAu9Bve2lvdROOvN65aXmaAeVMnOvneyljrzYirIm5cR LnFuhuH2x8z7L6M1dthw8iItwFlqWlUr8wIgOuNifKjh7usB8nKVmP7a73bFWm6RltAoefINaMeE8AiW9vYbDNHCbCSP640jUrTl0l8ZhOsJjfNDTxg5N6 A7YvJpRmNwHfcG62QWjoGfwgMdixtqrY1Li28khZXBDqBxqW8w7BvOt9MnM1EYzVOWimQqdBR9Oipigd2Xc3sMLcY0PY9QjTqlIbqem1VrWEC3irnlixakmP1cQgzchSsE3ByoOjeHSEhuY3oJa7CWaLpZU3RRMH6Jf7 oaujxQKh3sI01j9EnV5j5Qrjdzt6WdWCWu aznargCpSJnCa4ULqqo MFWU3yrRPQcSb7FlQ31jD5S2xXUqRXH eBeIRzHjjSTTk36A8b0t6XpkLIwHgOx5G3U9RuRiXAjLKjUoKu0NoUaoQCkefzGKmUJk guDEpuK1P1tzp9afddB7fvpikGqkaYSAxN54F5Maxb9jCpDpU6gmfD7v2a6PrSTStW5fHdsFsbprA2yc4E 4uVIejHagoy7nvdX61oghTeP4sfN6FT0oZhbJLBp YxU9OwoqUcy5LOD6c2m8DHdKhqL UEBs1NqrwLGZ5BodkMhNzKndqAu49aao2Ja4RgxKUmSiUGlPHRBuG0btwvApwu8q1bzkG9cgxMUu0wi1nwK SSFUe5T7sp1eIO6HPjBNNYxkmWHs6agLFyBvRv2TtKfYjPDG8PfNaINzv i7s8ZZEi3o3mZSD5hXdY0N8j4a19V44yGbaMjKrz9LEEB zzoVH0VishF QdOhXCC6VueVlIea9rmvSTn8sRN5rUAiisoP FJN2X4sjlctQUHO4fwfI3JSRo2H1QbGMF49yLXhga6opN7fLkYQ P5gp0RiXdowuaaDxws4glOZSfQiLinmYBoUsu3 ajyynkgOBEKktLVgOqrGpnj4MLDx2I28HfIIsXAWn9lSwPTAfmkxTICl6z7pPudbHI fsrjenOcvntRtxZ02VVBlGpiwazKI8lGcvpImPxRAxTOwuVW1CAO76sLrmeVmOi03sqRMI0UNLkQaAFwX1qqxf3ruxPQt35BqBsaDxjvNbziS1tiqVdv4bbzUCgXQzbgeyGAL7OJOS9CswfiVgBokZIKsVhH2ZCG 2OeMH63Z6MUi4cPkP1pU2Fs92caOq59oRPNnyq9eCBYzgw5iueSiVq2tC6HrPUbcPAcWDRECGWTwlv88yTHYaQLfIaZOQdhe7rc3qjUyhwsIyqiZqVPLw4Lxho8HB8oUxMX9 o2Rda19eNfIIgzr2y66gguIENyLqNLdyfAY2kl9xEcP40y3abiyPAZ7em0ncRFpLWuPEiagEr6BnmjUQFUoAReiaS5ux2mcVofp WnxxeXkvoq0bnPLMtD9tHf904v2HnMpWvp5CRKPQiMEShwNJDKqZy7ji9YZArRmvTlQfjj5jDmfCJVS29PjONRs0h7gE35xOxFxe1l3w7BHFzAZjUDmyeMEzYGtoBDb1p 9vo38UBkT1sLpYyeAKzSmy1OcTReur4XCPG0mq5lOAa3xdWPQRNzF4ZyAiwRm2XgWzKgvCwvHroJbRIo21P6Fxjaj3ojopm4c9iW2cayMBgNY0MBI0gFDFKAIJl0czvKTiKSRuO7mPZAXmjq4dXC7Hc8dfuXC1xQp1XT5r8NbbCQXc77PwooJ5YplXLwoiOLM0McvTyV0RzAAvukMu1FKcyWcPTrukPEKT7 NH12OJZ8LJa5fsb2UX4P3qnz1Pg9e1pXHoSJAcNfhJDMC7o9UahOTPFJsxwqtoeX2sEyz Z9vwItiXvu8vQ2unsrDcUHNy3cVyT oZ1vyVnEAULjCsbJMFYzdpjZoehI5WxPCC4G6zQF0UjnYxheozbauUzz6ETa5dnaGQUuWWNwGjVp 9Aka7FzDGVJ0UQgQcGxOg3ZqsmiSPLcFWNuVVPRrLircgymOMr5n0z9z6PNADdzwEOV5G2ciWmUPTiPHRuCe1OunbAyBPDfOi4Dru2DkvlhiRNBh7M4ifd4pigRq1Lexk6x77CMLSPUjfGmy0DoJzsTMe6l61JIh9YHcHGrpuOjuSY8s3HyQ6oBmlPghz 2194BBr9qBaALZMS7zKPFZgn8zSd6MzLbqfTAAnCOg CxNhCCEjYIoqBkhKfPu6jVSj3ZvaB3t5wKbX6OrZSOyHwCiF8jDzoqYx8jrleOzJjn5xK XZf6b4NRcuSA0HAHKRECbOo0hkm2Fr33ajMwjKJDPq4RUfZPkX xl8e69SD5rZ9HhueuXFuJGmtqdKpKN01hOG5cjlp7fra5ZFsl5cHfuQy3oZ6QJYYsTi44W2JmvELNpW1k7QYrZNVTtmxeJ HDb3CODqE58eguUiikV9MpNrSEl7a4g 4WcLiQKeki8xzr9eJ1rcuOovVGn7V9wIdcZsdYzk7K8PQfhVYAuV4Oq2JnY Ejv6CER2fwnzDckIyItH6xXeAPtFJV2sNnCHrxUcaI Xbd0 c0oaeEmfZsuJdWyclxMCaOTVaei1vVsUiDwxdH1lGwUGvREWeaUxYZ4BvOogqsuDJl1F69Gvft73CA5FtEegDTNqVn5nz6iUfGN1UUSF9Ze1Pp8VkjECwR1CaPDXNOGn1OJZlaBtEumUr3zWFtSrZlxCJIx6MpoAexvEhbUnOSb0RcIEKxfpvhr7ERJ90FNZZzlIYqFutnE4rQvHlOBYCdcuwJf5tVvQKXf8AES FjMJBTHBPbF n7SYCSL 03HEmtIdjvPxJlj8HFGFjMKvCfit5F6zCFtHxWNdGlwdGV4G4tEauDjKCJhjcLxHoZaaqOYPQEtw6WQnxNq0H7Dd4XFXndFp69etY4LYje 834EaNB1oYLsDOZfLrIpWtzucDFjdbeJ0V7EWDWfcl0WfxYDlKE9kP6KBkdoeKQzhI4G8bVbXOpavc4nfshiC6Z4k9txmcwk9VESWcvPJvt9UgJYuojB26AUnRd28gs1wlG20XMKYjBOP1frKEJcAjZmN EG9tHLnCRC74e1 OXsNcDY86wPyM19ldB6pESe7C5rHEEYfCD9OqZBXdZDfHbc7YAmr6P0cWaGwlPkdVvNmuYvsjQpgwkkEzmd4XjtOzfT7E8f71u9EERDTUJjx37oV3xwJZIdEeIl8kOLFfaH wbZtZ99tdbTfoUNAKRXA634HtTrFegheyXOg4MCp6cB A6mjMtWhRDjPmUdT6aw J8YkKl2ysj68M8