Cẩm nang lập trình game cho người mới bắt đầu

Cẩm nang lập trình game cho người mới bắt đầu

MaxSpeed  | 05/05/2015 02:24 PM

thích

Cuộc phiêu lưu của một lập trình game bắt đầu với một ý tưởng về một trò chơi mà họ muốn làm.

Cuộc phiêu lưu của một lập trình game bắt đầu với một ý tưởng về một trò chơi mà họ muốn làm. "Một trò chơi với một số quái vật bên trong của một ngôi nhà tối tâm, đáng sợ và người chơi chỉ có thể tránh né chúng và tìm lối ra” - Nó chỉ đơn giản như thế. Với những người mới bắt đầu họ nghĩ nó rất đơn giản. Nhưng đó là một sai lầm, bởi trong game bạn còn phải tạo ra thêm vô số thứ khác như tạo và sắp đặt bàn, ghế, cánh cửa, tủ quần áo, tivi…cùng một số âm thanh cho mỗi con quái vật…rồi làm thế nào để cho chúng di chuyển, làm thế nào để đốt một ngọn đuốc…

good idea bad idea

Bạn có thể nói, "Vâng, nhưng tôi chỉ muốn làm cho một trò chơi như Mario. Nó cũng đâu quá khó". Mặc dù được tạo ra hơn 25 năm trước đây, trò chơi platformer 2D này cũng khá khó khăn để thực hiện. Nếu bạn hỏi bất kỳ game developer nào đã thực hiện hoặc đang cố gắng để làm một game như thế, thì bạn sẽ nghe một "câu chuyện" dài đến nửa đêm khi họ coding để cố gắng làm cho các đối tượng di chuyển và thực hiện va chạm một cách chính xác…. Mặc dù nó có vẻ đơn giản từ góc nhìn của một game thủ, nhưng từ quan điểm của một game developer, có vô số các quy trình cần phải được tính toán cẩn thận và thực hiện rất công phu khi làm cho một trò chơi.

1. Có một ý tưởng hay

Khi bạn nghĩ rằng mình đã hoàn toàn sẵn sàng để tạo ra một trò chơi, hoặc để bắt đầu cuộc hành trình của trong việc phát triển trò chơi, vấn đề đầu tiên bạn sẽ gặp phải là tìm ra một ý tưởng hay. Tất cả những “trạng thái” trong trò chơi của bạn đều phụ thuộc vào ý tưởng ban đầu này.

Bạn có thể rơi vào 2 loại:

a) Bạn là một người mới bắt đầu với rất ít hoặc không có kinh nghiệm lập trình

Trong trường hợp này, bắt đầu rất đơn giản. Nếu bạn duyệt qua các diễn đàn, các bạn sẽ thường thấy các nhà phát triển trò chơi kỳ cựu nói với những người mới bắt đầu là hãy làm một game Pong, thay vì thực hiện những ý tưởng mà bạn đang theo đuổi. Đề nghị này không phải là một sự xúc phạm, đó là một chiến lược đã được chứng minh. Khi bạn bắt đầu, hãy cố gắng học cách “sao chép” một trò chơi cũ như Pac Man, Missile Command, hoặc có lẽ là một trò chơi đơn giản như đánh cờ. Bạn cũng sẽ ngạc nhiên khi có rất nhiều thứ bạn sẽ được học từ những game như thế, và những gì bạn học sẽ được sẽ áp dụng cho các trò chơi chất phức tạp hơn sau này của bạn.

b) Bạn là một lập trình viên có kinh nghiệm hoặc đã ít nhất là đã từng đọc một cuốn sách viết về C

Khi bạn đã biết chương trình là gì thì sẽ có một chút dễ dàng hơn cho bạn để bắt đầu các trò chơi cao cấp hơn. Ngay cả khi bạn là một lập trình viên giàu kinh nghiệm, bạn sẽ không “bị đau” nếu bắt đầu từ những thứ đơn giản để biết được lập trình trò chơi khác với lập trình ứng dụng hoặc phát triển web như thế nào. Ngoài ra bạn có thể sẽ học thêm một ngôn ngữ mới hay biết được một số điều mới mẽ.

Bắt đầu từ đâu?

Sau khi bạn có một ý tưởng cho trò chơi của bạn, bước tiếp theo là quyết định cách bạn sẽ tạo ra trò chơi của bạn. Có hai phương án sau:

- Tự mình lập trình tất cả mọi thứ

- Tận dụng game engine hay một game buider

Game engine

Một sai lầm phổ biến với các game developer mới là họ thực sự nghĩ rằng "game engine" cơ bản là một phần mềm kỳ diệu mà bạn chỉ cần đưa vào chúng những graphics của bạn, thay đổi một vài dòng code giống như skining một trang web forum, thì… tôi đã có một trò chơi cho mình ! Điều này hoàn toàn không đúng. Thuật ngữ "game engine" được sử dụng rất rộng rãi và bị hiểu sai, nó thực sự không có ý nghĩa cụ thể. Một game developer có thể đưa ra một "game engine" chỉ trong một vài tuần, trong khi một đội game developer chuyên nghiệp lại phải mất một năm để tạo ra nó.

Tuy nhiên, về cốt lõi chúng đều thực hiện những nhiệm vụ tương tự nhau. Một game engine là một tập hợp các code làm việc chặc chẽ với nhau để xử lý các yếu tố cơ bản mà hầu như tất cả các trò chơi đều cần đến. Những yếu tố đó có thể là: graphics rendering (2d hay 3d), Physics (phát hiện và đáp ứng va chạm), player input (xử lý bàn phím và các sự kiện cảm ứng) và những thứ có khả năng khác như kết nối mạng, animation, các menu, high scores…. Game engine sẽ giúp cho bạn xử lý khá nhiều công việc, chắc chắn chúng có thể giúp bạn tiết kiệm rất nhiều thời gian và công sức khi tạo ra trò chơi của bạn, nhưng đừng suy nghĩ rằng bạn sẽ không mất nhiều thời gian và công sức khi sử dụng các game engine.

Game Builders

Game Builders là một dạng khác của game engine. Nói cách khác, thông thường với game builder bạn chỉ cần đưa vào một số graphics viết một vài dòng lệnh đơn giản, bấm vào một số checkboxes và thay đổi một số cài đặt để add thêm một số hành vi, sau đó chỉ cần nhấn vào nút “Build” thì trò chơi của bạn được thực hiện . Game Builders có thể là một cách tốt cho những đứa trẻ làm một trò chơi và thúc đẩy sự sáng tạo của chúng, nhưng quá trình tạo ra rất nhanh chóng và dễ dàng, làm cho chúng không linh hoạt và có nhiều hạn chế.

Lập trình từ đầu đến cuối

Nhiều nhà phát triển trò chơi muốn "bắt đầu từ đầu" và xây dựng một trò chơi từ mặt đất lên, tự mình làm (hầu như) mọi thứ. Đây là một cách tuyệt vời để tìm hiểu về phát triển game và lập trình nói chung. Để đi từ hướng này, điều đầu tiên bạn cần làm là chọn cho mình một ngôn ngữ lập trình.

Programming Languages game

2. Ngôn ngữ lập trình

Có rất nhiều ngôn ngữ mà nhiều người mới bắt đầu sẽ “bị lạc”trong đó và không bao giờ học được điều gì. Dưới đây là những ngôn ngữ thích hợp nhất bạn nên học khi phát triển cho Mac-iOS.

C

Đây là một trong những ngôn ngữ được ưa thích nhất bởi các lập trình viên. Trong nó có vẽ rất phức tạp, nhưng nó thực sự rất logic. Trong những năm 1990 và đầu những năm 2000, hầu hết các trò chơi được viết bằng C. Marathon, Duke Nukem 3D, Quake 3, và hàng tá những game khác. Mặc dù ngày này C ít được quan tâm nhưng vẫn là một lựa chọn hoàn toàn tốt.

Một trong những phần khó khăn nhất để hiểu về các ngôn ngữ lập trình C là quản lý bộ nhớ và con trỏ. Đối với người mới bắt đầu, điều này có thể rất khó hiểu nên khi nhảy thẳng vào C cho trò chơi đầu tiên của bạn, sẽ rất lâu để bạn tạo ra trò chơi của mình. Mặc dù vậy cũng có những điều tuyệt vời khi học nó, là một khi bạn biết nó, bạn có thể tìm hiểu hầu như bất kỳ ngôn ngữ mới nào một cách nhanh chóng.

C++

Ngày nay, thay vì viết các trò chơi trong C hầu hết các game “chuyên nghiệp” được viết trên nền tảng C++ (game engine). Sự khác biệt cơ bản giữa C và C++ là C++ là một ngôn ngữ "hướng đối tượng". Lập trình hướng đối tượng (OOP) là một chủ đề rất rộng vượt ra ngoài phạm vi của bài viết này, nhưng đơn giản là không giống một ngôn ngữ thủ tục như C, C++ là nơi tất cả các hành động có thể thực hiện và xử lý được tổ chức thành một danh sách lớn gọi là các "hàm", lập trình hướng đối tượng cung cấp một cách để cấu trúc tất cả những hành động và quá trình thành một hệ thống các"classes" với các dữ liệu và các hàm liên quan chặt chẽ với nhau.

Trong khi OOP là thứ tốt nhất để các lập trình viên tiếp cận, nhưng có một điều bạn phải cẩn thận với C++. Có rất nhiều thứ đang xảy ra ở đằng sau scene và đôi khi ứng dụng của bạn có thể hành xử khác nhau và việc gỡ lỗi làm cho bạn như đang sống trong địa ngục. C++ cũng là một ngôn ngữ rất phức tạp. Một khi bạn biết được multiple inheritance, templates, operator overloading… bạn sẽ nhanh chóng hiểu ra lý do tại sao một số người không thích C++ và muốn sử dụng C. Nhưng nếu bạn không cần phải sử dụng tất cả các tính năng này thì bạn có thể chìm trong sự “ngọt ngào” của C ++.

Objective-C / Objective-C ++

Objective-C là những gì được sử dụng khi bạn phát triển ứng dụng Cocoa cho Mac OS X và iOS. Objective-C cũng có khả năng hướng đối tượng. Nó là một ngôn ngữ rất “sạch sẽ” và thường được sử dụng bởi người mới bắt đầu kể từ khi Cocoa và Objective-C cung cấp những cách đơn giản để làm những điều phức tạp, hoặc những thứ đó sẽ là phức tạp nếu làm bằng ngôn ngữ khác. Bạn có thể nói rằng ngôn ngữ này cũng giống như một phiên bản của OOP C, mà không có sự nguy hiểm của C++.

Objective-C++ là một superset của Objective-C có thể tương tác hoàn hảo với C++ code. Điều này có nghĩa là khi bạn sử dụng Objective-C++, bạn có thể sử dụng C, C++, và cú pháp Objective-C trong cùng một chương trình. Điều này có lợi thế rất lớn, cho phép bạn kết hợp một cross-platform C++ hiện có với một Objective-C để tương tác với Cocoa trong Mac OS X hay iOS. Đó là một tính năng rất mạnh mẽ.

Java

Java một ngôn ngữ phổ biến vì cho phép các nhà phát triển viết một chương trình dựa trên Java (gọi là applet) và nhúng nó vào một trang web. Kể từ đó Java đã trưởng thành và lan rộng để trở thành một ngôn ngữ phổ biến để viết các ứng dụng trên cở sở sever, đối với các trò chơi hiện nay, có cũng không phổ biến lắm. Đặc điểm lớn nhất của Java là khả năng nền tảng chéo, để bạn có thể viết một chương trình một lần, và nó sẽ làm việc trên nhiều nền tảng. Đây là một ngôn ngữ thú vị để tạo ra những trò chơi đa nền tảng mà không cần phải đối phó với porting. Nhưng nếu bạn muốn tạo ra một trò chơi 3D phức tạp, thì đừng sử dụng Java. Một lý do đơn giản là vì không có nhiều người thực hiện, có nghĩa là bạn sẽ có ít sự trợ giúp cũng như những code cho bạn tham khảo. (Java có thể được sử dụng cho các trò chơi 3D đơn giản. Runescape là một ví dụ về điều này.)

Python với pygame hoặc Pyglet

Một ngôn ngữ cũng khá tốt đối với newbie hiện nay là Python và các thư viện trò chơi Pygame và Pyglet. Python là một ngôn ngữ khá đơn giản và nó đủ mạnh mẽ để viết các trò chơi thực có chất lượng. Khi bạn bắt đầu với một ngôn ngữ như Python, nó sẽ là một bước đệm tốt cho bạn khi chuyển sang C / C ++ / v.v.. sau này. Hãy tìm kiếm trên Google về Python và Pygame hoặc hướng dẫn Pyglet, nó sẽ khá hữu ích trên con đường phát triển của bạn.

mobile games tool2

3. Engines Game / Frameworks / Creators

Đối với các thông tin mới nhất về những công cụ này, bạn có thể xem thêm tại đây.

Các công cụ

Để xây dựng và test trò chơi của bạn, bạn sẽ cần một số loại công cụ. Nếu bạn đang sử dụng một ngôn ngữ biên dịch như C, C++, C#, Java, vv.., bạn sẽ cần một trình biên dịch để biên dịch code của bạn và tạo ra các ứng dụng. Bạn cũng sẽ cần một phần mêm soạn thảo văn bản "của lập trình viên" với "màu cú pháp" và các tính năng khác khi viết code của bạn. Có hàng tá các trình biên dịch và soạn thảo văn bản, nhưng thường chỉ có hai loại được sử dụng để phát triển trên nền tảng của Apple.

Xcode

Được tạo bởi Apple, Xcode là IDE (Integrated Development Environment) để phát triển các ứng dụng cho Mac OS X và iOS. Xcode biên dịch nhiều ngôn ngữ, bao gồm cả các đại gia lớn như C, C ++, Objective-C, và Objective-C ++, và thậm chí là các ngôn ngữ khác như AppleScript và Ruby. Nếu bạn đang dự định viết game trên một máy Mac, bạn sẽ cần phải làm quen với Xcode.

Make

Make là một lệnh UNIX sử dụng để biên dịch các ứng dụng trên command line. Xcode là về cơ bản chỉ là một phiên bản đồ họa của Mark và một trình soạn thảo văn bản đơn giản. Một số nhà phát triển thích Xcode IDE, trong khi những người khác lại thích Mark. Nếu bạn là một người mới, tôi nghĩ bạn nên chọn Xcode.

Libraries

Với ý tưởng, ngôn ngữ, và các công cụ, bước cuối cùng là chọn một số thư viện thích hợp để giúp bạn tạo ra trò chơi của mình. Một trong những lĩnh vực mà các thư viện có thể giúp bạn là sound, graphics, và physics. Nhu cầu phải bổ sung thêm các yếu tố khác cho trò chơi rất cao và nếu bạn không có thời gian cũng như khả năng để tạo ra chúng, bạn có thể “tận dụng” các công việc của những người khác.

4. Bạn sẽ đi đến đâu?

Một khi bạn đã chọn và học một ngôn ngữ lập trình để sử dụng trong các công cụ mà bạn lựa chọn, bạn có thể bắt đầu xây dựng trò chơi của bạn. Tôi cung cấp khá nhiều thông tin ở đây, nhưng có rất nhiều thứ khác mà tôi đã không nói đến. Lập trình game là một chủ đề lớn, chứng minh là có đến hàng trăm đầu sách viết về chủ đề này !

Để tìm hiểu thêm về làm thế nào để bạn có thể tự viết một trò chơi cho mình, có bốn con đường bạn có thể theo. Đó là:

- Tự thực nghiệm

- Nhìn vào những trò chơi mã nguồn mở như một ví dụ

- Đọc hướng dẫn trên web và các diễn đàn

- Đọc các cuốn sách lập trình game

Đó là những con đường tốt nhất. Bạn cũng có thể kết hợp tất cả chúng. Sách là một cách tuyệt vời để bạn có những bước đi chắc chắn trong lập trình một trò chơi. Hãy đến những hiệu sách gần nhất và chọn cho mình những quyển mà bạn thích nhất. Một cách tuyệt khác là nhìn vào code của trò chơi hiện có. Khi bạn lần đầu tiên mở ra, bạn sẽ bị choáng. Nhưng trong vòng một giờ bạn sẽ có thễ hiểu được chúng.

Và một điều hiển nhiên, đó chính là khi bạn bị “mắc kẹt” trong một vấn đề nào đó, lúc này, tìm kiếm các hướng dẫn trên internet, các bài trên diễn đàn, và các ví dụ về chủ đề này sẽ là một nguồn lực lớn giúp bạn giải quyết vấn đề. Các diễn đàn đều rất năng động và thân thiện, vì vậy đừng ngại đặt câu hỏi khi bạn đang đứng trước một bức tường.

Sau khi có được trò chơi của mình, hãy thử làm một cái gì đó mới hơn, cao cấp hơn. Một khi bạn đã vượt qua những trở ngại trong trò chơi đầu tiên của mình, bạn đã có thể học nhanh hơn và nhanh hơn nữa. Chẳng bao lâu bạn sẽ chỉ bị giới hạn bởi chính trí tưởng tượng của bạn mà thôi.

Theo gamestudio.vn

 

>>Sự thật: Con gái vượt trội con trai khi lập trình game

    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.

    TxpyYSzSHDirWFcWav Lqc7BH5KKbOHUmPEeeBU95kbkpcuSo4yYfAf IUCgQdkBJkFE9r5cpON0iJikIWZA26Kj33HCFhzGUGE0otJzh9avJWvISus2Yk8iLujbBMP3r9IHIyyOmpJj ZCidwQijLKtgfePWM4F G9oHrvEq1CpSZtoV3JdTMBBxxsfIuKffogKFpouq9bvXER2YDbSc6wrkhvhwWfAov8sEMP9tdUuLg9CzkeFF46clNUHGsilw XwXhHobx4I9h0h7Ma2CTYFfsQBgjZ7nQH1bra7mtMaKCcRRJcpUuQMtf7qbmx37VvG2h8rJitMVIG5B2 KSPEY8lOEwWQWVfqKZ2t lpDpFcSoZTxQ4Tg1VI7Z4Q9erzXaLhFDdF3WLiz2d3DvQO2DBBGkPnGO7KntCk9ALaoiJWfa4M4VhuzE0oWE6XzlGnXGP7pr436ueERFUN72dMlEIOmFruIi3d1w3pIExDJmB37mkPSkxk7h0F8g60nzTiccmETXjwD9vzhtfFyt5QCx07N8m3e5dsL5Bt HLU8dfIKM2YRjCl2emViwptCM77InZuz2LOqItIfVisWGXR7zxXbxnTruyRtwEZG5549y w5qWR5vgje4f4tBaz8SS6Da0SKT0PADUQtDVcKu4mSJ9jOWOoawBm1GXc9hmmgO9723GSDbnamYtuSfpMmgIANLTvae0yNT5yMdEJM8Hh7svOdCAnJ75ZPc8lHK63bEoexxBGn2ILJunsfeGAv4abpNAlEk3gyNaPwriGNdHEudK lgaolZdH1H0ZLm8yos7o5ZfA hRC1dXv3yRIdLSGmPyEfIQiz9y50Ly7xYD0saXtpgPKpeyqo QvD2SnJ8tBRH5IJZgx3IfKSZDTadpA6jXx1aJbdcmzTtwRtRNd5qVeFLebtkCDanjzD mqumqPe2KYCpzP5jwaQV xqyQcxySSb4RkyJ5UCrR8Gwem6X qOkikuk8ollTga917rkbXi7rIBioieMIzVdaXeWrmSMirnCyK18YuDXkZq68m53FeLRJDy8EnXuwWUGWAm4GMYlHs i046bE3swTASY6p8QGQ42BJLH1SW1LJvGHkFa7d2r7DspAx8ENYSMp9nR6gqilMqPafCisIcGQnaLbaHw2YfShacOKu 18wN75vRb5xPkSKEMMhUhErRkmTkTmw LzfJQP37d0omMsREF7NKyywN412khwcURgc5fY2EyL19YlzxZvhpqY9TmxyvZRE15fP4vtSzivAaZPWTN9geJkMFqLQvBZsncgg YiHQ5deRC7eJbYRKcAy61xRp8tjf2UyrIIUOqr1drHSBPnLMIIzCBsTLI wyJEFn8OSlMbCtSYGygiP1fTEi2XZ9vWizFUJ8gNJLFmpGpEeA7Ztl5w3qy74kZ2jKNThsHomUOKEdgdT9paiXNgX1iNFJaQ4JlbY4n4yz8VPMRH5ybrWo1I F6nDD8pKIPOKHl7lW34wH5GCzGyOXJU7sqVZyTjAK2xMzJb XdJwJ8G gAwKOK4qSeAooVUwqgZIbHAcyf6Ng8bFbLew7ZFgYnmcBU7Ls2t903Rax6ilBoFKehWGfFxgmxpiVpiJXfgWE6ahVd1bhBI4QizPOGh1cmGCMv4w5VNoqyg7Ef9zLvDLM0R qCMQEE5V0s8FEYrp3 CAvsbRRTTodsApQjFcfNjg43TZy6U7K5Br8C3PyhSq7UbO8uTVCgThcX7vG2NuTNJKusqBa2x4ZvBV8r5a4czqANzcyqxCIWYVHm6yjFHLB0ak0veIcQ19Ckm0ARRYOSryQ tp6iOXYBYB00WgDLPaHUKtPQIhTz4aOBu1wlmGTw1wP x7pmfyBsYRtW9N7QHvIW0fvjYtVzVXi DuUZjVQlQezbuNW7NAyf6sBv0yEiSETTaOEa1XU8M Vg1Wxb8oT 3bbtmuqqcM3 5xVXBhQz9cYN6LiLGVw8yOizUgpgthiq7xCjYZ9tjdrJLpBmMEr80BchSNABnGuL28o yWhpfK67KrxOx3xvHWnZZiOtG6 t0rCcX1KKj7N79rY6x639laiZfXKEuFVTTn9yppN5d LxRrZxSLFEpVCFldvklqa8rfeWJdQPw4HGAKYoCVbQBAeQlPPRz73E1drBi4HRywJz7mtscmbE4vpMduvu0f8Okt6YVxMrVDbdFgqX7tIR8wLWRshxCqTslRhEkUDKenh8y2ac2V w6QSHOOdpGLYt41ib7scpK7POWE5PGpbAyDuN nZf4F8KjyyEUlNxqUgGpVO55Uvt7dR9v6gUfBRCOuYe2bk7xE97wGVvCNgjeoMq8KvVwHL6xg1H76i85N2z8wIuERO8AOW9Ic5CtyPQNpuQD82wtFUV8e5EzD3sjqY ACVx1oFBp4PqO9rDAqthAUWsgS6w2VNL4ZinWnv9MAr BhJYuWaESnRVhZKD6YFxli qJF6tmJc6f2bmnHOoO8jkqHEaxoH0PEGlK 55wBgNB9OcTXokoJ4dYBWH59YfLVWdJV44h7nxV3heqXoVCxTHb57iop9 QUepdfs3xAHuHaP8pwkdTTEx1AfI3xKKMOEa8r hZ0i4vGeGLfnF3zuD4ANVXBStpIk162DTFc6EWAdViSVIUKvwNjIcPXuH8Bbn8ZdRCGV mPbSCEXZzQ2GyCbJ4OXa5HrSfN48pI6bKRVtJ0o5kWce14d6uEmiujmV3BkUqa6Rsc9rH2S1DeVr00 ZwjBDYBOQP63yX V1fdgirj9MsA8RUkXg9yGOtOWXY6mwVdEyow8iodX0chp8bfuQx5C2JXJ9f7RM0KBAAKrvU2MADxMOcHIds4WOcRdHLzU4dnkTPkvN1Yvuo1Hyw3UmfuB2uR96ZBEdbL2V2jxkGmFP5wVVjARrP68kFbKF 3dYJiZ9QrkiO1tUSsjRm GR8DmSX6e KVx4VT9cOMUbt9eTbfnhFoooFpM9iu39j9l2JKA69cYfpdg7aAGFL96R8PPVFA8W1 Mk7x1Er5DcWEen1UzVsedRNB77NOgcetfVVR90pAIqb1ZpoeXOpcD xjAzFsfs DRXMhXw6i7vpGxkVs9n21UMoV6yT2Au0hTV81IG5vFTkntHXQzPOQvFvHdtcTgd7zSFWWkCK0RSN 6hge513p6cguZbsWWFQoKLyG3UKaP50nJxFhAhIBJMOq9nLeGm2Is7LN4VRLH5TK1fO2cqag0rpmOfoVY41aqRvOpUSrYvy9LbrfP1zUJao qxs9DRusx2dg1LR0j5pBEvRrdMCtQ3SAv3CRSHqefpHgOlOJUufdpO0ZNkO0rAYzGzD67olx R7upKgLTkuS6 4R5f RkSlQRXvxzqKoVG1 ZMeIgwvZ2MD5UcacTXVqnXHw aRTlStik6smO5n6Rn4Tqt9bLe0aMJ nTQYZkY91qUhTiYm3eozei16SOAGMHB9mcbM8U3cUt8buDEk4F7vcPcDR9yLJMVYNK1f7uKIOelyrMEPrNGiiFznwwG7PMDlrhT36TDTwgXjlIncOmdTjhrQEst8u0pa NXh9yjNFbnEMA9 pAktbDQ7ueOWNz0reIjA8BekjUcPRouuwOiXk8HG47P1t2IOH7khitoQcbuDR4HTWQNyhkm27XVuXK4jymQpZVTJGRNcZGdr wcexO4wmHO77x5bXrNpRxIL9oaBPrPeJf gx98oBjTBS0wggGWPVC8myJcrk9FJk5jRJ3NJupVh6z0AGiRExTKc7l9Dy2ZWAoBjhWHUFwPVIpcGX5TJMoMhOt1FflypvcU6pFh214iekp1ZeHOisvcbsb0OE7XbESx0FReJn7Sw nLWKwxLbFZ uM8jw467136U8shf2L8GK3mB1k15h1I0MTm3p9f4ipfFCJLU4yC4SMjpVqM6HBB0JEJwnmyq8egvNm cYIQ5K iOMLNCeqS4Ous6xZTquha1ULHf7WShfj0uMZI8mXEWllEDLO0noeisxYI8rMIByCs1IdvaDwMkMN9WO5o2xULUITCPdpL5svlUWqsUB8s2wuUN4 MbZtthMDjHDSteeVPCbqVYHwIinYyAeQG1uaFmuM7KZMlMz8E3frciECa6JTo3ON0zUKpM ISaJG4euoluohLbQekGYdwOhxRs4FR n0VrnU W83nxrOLI7zMSEkqQgduEYNBDJz2dDHZnN1w9Q H0KxZwKmYxc1anJnpOoe5Z1K0Pv2RaJjFAW9vOdj7R5Xum0kOr4hMv1nOBtcG56HwbzdwOMlvJVYkq1jG0vc6IIqFP7yes24wyq8Gk7px6Mu LOhR6s3Nw POnCvXOV9LnGvyKU6XEsdJVmUcAfyHqfAMY0i8 csnv6tFiqFCRztof8XXazRXTryg22M4UDDZoyMG0nralhQT9dwAEZ4ooD4bpm9oN5BnHiVv8uHTu1t5gjlk0dKYAoPh2 IeXWKdUNyc9r1TSqGFY2fybhEhYA40lFcrD2b8qgIml5F9h3mvrECMi6ci84aT1sfD76 zPQZPGrXaiXu1U8wWVg1nVGJgSLfusWgUD1uCg 6EbenmSs1VQWZS8bIl2iDJLpAVLvK1QfxVCNwYGOdl9VAZzXS1pUOee5sWa6H7VrFqFI27kqquUNikbm7lr5UEB5Iqb4VYtQHeliguWDygQkRm9riy20thn7LL7XCl IjjU8SxZBQEXxBYL0WjVOcQfRlmCzLGFap1d9DIUZfpw ADsFxT9ryflKl0gS825zlcpq8fDuGUT ySNyFHUlm7RowVrHZM4QrTzMjAK cXu3Pu1eu5MYnp m OS70dwGCb4Lh0Xt1mltpisVMAGx7S6qojorIjFnZlYR5xfNRL ehqfDJXMKTN V0mm6fK1LJ1FFBGDnaXdlmOM3XplWht ZtG8oZHw5rqKp4fSjsSJhF9qGpu4WzcJ9bqJvUVwIR W3EmZZkn0TUhLGaVEKFmdbqGiLGSzkny93sO80 l9zVkWwBQy1RJFhCBWAzYaj48YZhb cT7sl9aaiyCj61VEnLlBCiugXGXimIv7Zk v9mfi7lZ1ErNqjLz NmrnZZTFYd8IsFVD3CcjsGeJIJ20V4CLcUdqbFWJYRMFPLFb4shJRt7cU5D5THt4Y8ADllvF0bljLQL YrjhmHC4cWsxehcZtTKCe7ovI0q218sMJ42BzHFAxJTAY17xkQOOcvHCbRuMDsYByRRLN83zXdyAw71vj6Y7ikwGTKzZhhSeZDnLoqGwa eFoYLsPRPSHhbPdlr66B5lG4Uo6NMkJRThpP3RNnu0SeKff1KJ4h6WNFQPLJQKFdFVwGJycsIF3CGl8Cl8bTxrPTznRe4OPzr5WFTMwl51WVCOnqxCs1qFQSTzSdQq aql0FdmLOBEJoihaLTZWhdkP5yqPxv6FFG5gKP2TcuKKyNZrUwk019Agl8n 37xSiXHVpD7ZVDrk94yRv6aHALnpCbafowUR5DbiJFDUiUFPzRckNlL6ZMn5dnq59N2Okmm44I55TI38n4JVNXZOc5L66HLwwIv8FfXiiY3kaz6ALDvv2Zlpx9TlLfi2CT20VbtLalqJJgVV9tHItW4bD9asADtYhFoQrQ0YKkZ3eM0e7gIWO9F25kIhHfWG9J85xi6VRuhzyp1y9vVK6IeaEFai0tUp6xv0Eyas30dIggKYWmOm5NgKpIsLdhxLA4EFRMVrcRtV0BbEvOhqmBVlj9WqnLJiACCN6OkpxvDKXIP4hytnct8DLVznl7NdiLkzjPvCppCpzzZ1jSnsToKOJwCfYRHS3SDtWmrRfAlgVW TTUnFnrAPbPGPB8G6Wu5c6XZn7dUgzVTjS8dqnTqEGzvS dMOH9DAeiLYKkHjLtjPcGNqDbbfTmCm71pSULXsNZqHUjjjywdqE4u8Ay1rjwyHrltT8GMRWSIGlHukUAcK1vq8Wndh6SK6iq53b8r6MNnK63xjVezWa6vxn7vqJ5THilg6xIsurqbOB2Q2FPrYsmCfx3LxZSgePxouuyoLgzkT989qMBAtVS hHWesHFId1MmB5kKZ2gkhzK2r82xLp3EBDT1RvYgb9QLxTNkpRy3BHBMPUz1jCdXQQZ2QNco9VywLazyF9n xGRLU56Tv uEpr6QVNxCJaWGWuJRtGPRJqK1aQIPygWl4qxfTS586N2hLpnz ApCouhU5wJe9D9pt9iskX299r8W5vaukiUn6xyGCnlX5FHdi7FAStpNm3QSXJF0iDQBR78x8MR221a6 0C EPPv6PAaPqJUlQ1CH07tI6Zq0woymQGl94ipjWTcKEecHcpaIXLfTkyuEcla6jS3hw3JfCk5hqQfsxtdKrXSqvwex8G6Bp6KGkJDcDL4aJlcskW4aUc8183P2ey43zY4kvk JrkZJgk1Vk76y3bpyhNYT8VAX1i7cQZMcPZetnOBHufbyIO0cVy78JyZocwFE9j0ugPr7GLk1VU71vFPMg5NfJYvKjtdD56bzl7rlWWqwxGDf30z3poCQx8pkL1riN6yqTO7LvX QLC8IjuFY 6iWFcqPZ995ZBLVudbvz7C 0W8FSD9pjznf KkdRw610aJO8XFgiSJD5tTmUjaJw0OmmyJoNJjQoBTRD4y1ReqBgSdhZl6TEysDGXdxjL9 cHImkqiOuHp6VfJQ8PR8lGUfceTwNAG7P2YS7fNau30ZnVNtaMzY4tnEvvvRM5BVrpeWb8LaEauWKD fEeupxX3x ABbPBol8uiAjwRlx48VCq2G HU521qee4z3t0qwmqRTdFI5LtrLEaB7TplXyrcRe7e0zEkt6CaXEtKePdyvIHelzy65fWoEHR ihg3ay1kgnvlhYvd8wbP5EwfpqXAIuxe0GXOYP41RUkxICUPoNGliHWSoAjQ2rXyfkwBarOvsEDlKvL1hvI 7qzYzvAwcVwODFMoTbZJqrPNh5IfzeudtKUl whAXeGEDGoLbuL5CyMHNq ujDBAU7fdAQ4gkXIr4aUVFbRjR Om3zrJ kIx 9nBBTKVaLeQZpvHD raQoJqlGUfuBJVAZqS3rxOnjejder7kZSiUwFu40FLGzzx03yHT e3q1Imh5iCNuURd E PYovwMQMaukgNKvB3kzze7KWKub qXMixn0OueLlszSWQSF JtRhOVQsiwBpcTunCR6O 67ypmPTV7XfzCfLBb71AQXqmtQH2cR MAMl9tbGyWY9TUZrumBhxr8QjqRmyDxc1UYDLq1b2LBin8hAboGgbTtw8abyAWCVekq9A0FSQ3GcoTjR p8L3gl3HExG5xJ3yQXw4tKa4FS3yUrAwAqiqoFt5LPQOijkx2itudoanXqc4yhaUP5HTgnciNifim74zN3pocm6TZJb70Gi4y 8quwkFpikg3qoxyrvTTm2XXLN m8RDpgZkhQqKDee27mpABwuuPLHOpNaHJL4oBpz3oxnRoOaKFL272e kZ0scsJB5Og2JnLttObeiySCRyhWxyMBr4d5j y93XZb877bundA6f7XQXTjHoY1jwema0I9snYd zYzVc0kob0OHzlMiL79c9yYnTJnpHNYHFmG1HrgVMrtEqsUmaTfrm0lvRICKDdSqX8wGBEEM7WVyIH30svnICIVYsIWt5ufphfjHPc29BrsgOwZ1RK5hbPkFrzXwcaC4RZhpaUCJhSAakX4XqKHgG01WQD7kiJIyLGf0dd7j0ZiGUJI3m7Rhde4PnD5PLtq8HrHC7enhmzMh1m YV04zZcg9C0pByyyO75mME1vutGHmJj6Bi8012fGNtIbizooKl 6y1rYlCC3nMU M8PbMB6c Wfxttk3CitP9xzYEbEDBMXFFFGT9Dq ARzu7hXrlV6K1PqcfjR3BdxJdg1M5T8QsLDtxeLtrgcjrhYyAm3bswuknnrDcGSb3VxLPFZK6RSYldQRiLzutX6JUOGrAdERLpB9IyJSdsG4XHGF2ZUoNG3iEQIe2J50jKjbVA7kKUE1qWNe8IMyYHsTWY6gmqUviI0VdGnjwN3dN1wMSSG38TCy9XtVZmzjJBjZPv3cGq7gPBaoF396sQAVRIuq3o2ed K828IasHI5vbFWnneCOduJfdjWNYpWqrssO3BdRkJMp9YmI1236AH1Z7hiePfPFIIPUPIPezcC9oPeNF6gP9Rn0ETrLJOrD3NLULdXoj4NkdF0FTZBbHnzpntDVwymqnUksH6hiP65ME688Q0SYfBag6A6NoXcPEtC7p78OBcDvvQBoYrb63ckv7LJ7v 0XSFO Fko LYpH2yc j3UqWlrYchOIxehN0VdUHf6iUyICHnSqCGNV1JRxR6RcTolxUT6JB5f5AmYV6tY0gf6rUwR7aoBuPacTyH NGTQL8 JOXaxqMA1X2BGY6XchMAvrluJhNieIyV6DHlTs1zY0mXScgF2aIlEHCrw8nUCMMnPtVPvXdCwqYZkbSNgNy3xv9O8mVhVslV9IeL vx Q35RYh09z5xn6W7odXzvRbG3UTByiSSq3pBUMRCQUIiK1YkZKlAEIjueJVp1K3r9CJ4YLXokxD5R8bWFsuAhx7zo1VTWipS7WFpyzXIqhGmRZQ6EI3 jYQCjpOpKgFBsreBVVX6ikUwc0ZbvqbjalaQ dGpDOqkM1t7dQFKhUhx0zShgB6pf7qHOGikldtpvrXm12hKYEPgGx26iKs7P3PKHBZiUt980H 965kFvZxBfXwGPeyuicJWQr4wASFu9Bo6HhJJLoBL2CZMldTEXq9888bUTwC0veKKjn3eIMVVH8J WhTZ8iFEARj80RlkNSqUaMPCJ5gJIcuzqpsrkLjAwsnW53YG6Kjne0NyPxvk7R0HizNvwssn03QU3S0rPfNopqn25 isBunm5WStGvjiiONRfcSuCVXIRfeXSaKkrytCv5SF5e ShGON7gBJOGFHEOtNpejVZkgD581idVNUKiyJ1UKUtEtBSBHs78iDM1VkgmxEGnI6DsqYIajpQ2bT5TInP13bCNGv9u8udnAJxHc1DpLpEuASlcNXPuf2Gq9maI r3bWBQZcO5HlIErCZf5y4Z3pWAhp4NVfa2Tzl2OJEdinqMP0qZDrmMKhF 0onZiJK0j9RpOhcdPLA0d 1 Z223YH16cx BOuh4t8yY4p75n9vOnGrI8vcVzHEGeiJqK1GkK pTMmFLCjDcAYqVbQiHtPCrfeeC a0Ixvu684UQrg4dS2UBpWVmm 1KKezV13Pt2uYqp4XCNitcyY2ANDhvuMNNKg4H9BNxp65UlcZASAVobmqOVDwx1b0LfKaI8H08oyJ0vedWoYs9TvT7OBbt5cykFnQkdxzMua42GgDmVfNQwlpGMjSF0VwszUTTkRILHFh8tkkJc02ymVPX07LRW7NC8rWAGVt6mAkyxHQ6cvaj8PbySXGZaqRadD4Tl0G300goP7quuC3gC4LeDoSLiIl2uceWABs8bhGeasuHL91RKmbztwP2vvVsQ0E6JUlYFeRmncHBU1x4CctU52iHBE9WM0QsSPCksNbuj8xrtkOUVdNXdSTo0e14rf8PCgjRtZFHsAFlF4NN0XwJfoNT8mJGwIXOJRSpXrKSX6jumzPScWhEMqfht6izFbptC0GkPplpN3U3zMyB1954WI6z32TISFomfJLqnu91G7XKxNK45bpP1gmLk2ZWvZEas12z28pwqXBQuKyL9o5PrndCRKB4E5dfGvDNU0Z7pzlb61KFXUwQI6AMx46UeLGAhdpHBMCSk6HDIYRZ0IrRrRYuuc9XwCXCSIhtqrYuKeaDZfxvJDLBDPJmhj70ikfDdw1bCK2K1g bsHp8KM9vwNcVb8ZyuAjqd1ow3FPb6KnDH9Jy0taG0Y2dAV qKiA5tVHGJT5laXST7blOtPLbwkZc44xsjSFvO2VxDBpVjvAMS7P4Zzc8RFK9sLPVEwvIgN3hi8Gt8Ev3YmuACrxpUDPFj4r fPczTdTUDanExyhYfzObpcoQtubSWoZUJa7dbEklVO2sif6RZr5rzGKb 4nG6W1bXErmlw1RfjM LvfgyPtdwYKrFI4Jg9Lb9CbRcP4CUJfDnXCDgoAFqZ5Kcn3x3ZPjBr4BJEIb5nb3exownDuJpaEa71PguEiEhw4m1kNWz0EbqB9pbN4ase3eYGFq9H0iFwpQsZK1jNmYkYqWa3j7yUo07cwMRD8LFqqHyhX2OmM 307fNjdjSQbHPqaw8tUjvtgQlLkXI06Qj3KOEBnVZUBNLVo525owqWrK0mvvWpHHBkwQFDljgEQUtTw8lp5klcpFIC8HejaZJPv2DSQXxsuY0 VpAgXYMRjzVO2iYhSQDavPSOYFwLnZAn6hgly56Z1yXEUUH8IaSN10QQoMD8VvhUz3Y7PRc8SnMxN4q38ykx eYVnesKk2yrzVuPY9ho57V92jmNRIYCTmD3i4g3MHVD3Ctr725TUm64pG0xjRyCNBqeGY04W9oBx8Aeu5XfJpu4mwcQR52G3omw4WvE4rSC2imP3fRnub1sbYg3L 0IvjABlSmmgOvwpkm0ecT8TaRyyI 7J4 ROvtPq1yfjGgpT1WcnpjKJIREgipmJLYEl07pUj7jjFi4PLrAqKcdQxXx8tBlEp6Bog486w4N576RC0rnz01ldlvSpwwzJRQlS7hIq5beRtK99rptRbZH1oXQzc5haN8Ip5f3Ym9tAXRgykif6dGuZIPcOlalyjRyf9Hcap52n4VkoFPKOkay76diSSuiKePPTu8PgV7 gfdMtUp9s BHqjC8OiDHU8Z7swQl06j3Qf WVc5ghJjP jvh64ChwGptNkgxOnRNJvfrDyzollFngC9zYF3L062ej9peB0AuIz87lpg3Ijg6Npp1Av5Qa0TgOFqX9Fx9tZ3XZKONRAkNoF14687FZHUE3aMhGsYD6E9OmDjSg2U wRgu8oDb211 Kh9ORVbRjtyCe kMNa5j3tIwaSkBAoZDT d7SggFtrrq8gLe4kcZoUa8NhzGLnx7Ytf0F5fNvDKM4rBQIngCYeu1h0jF6j4Beo9WYCMk6fCE7kBiS58pTVfizzGP9sigLMmD2UatAAbp3U4KSfDJFQSDvxUFXVCo2ZvtUV909vC1b6u2fB3VNAYPjfj30KB4G hG26z9jy1tv S4C42V29SmN ezB6kTgPtPmkAhaFgl3vMZDsCZLUL4O5X26kc1BrnNg4scWTBa OfPQGMWKNPPz9qsmKsCWleD42VZfKVfg D0KW5rMCFF8caDr HnVFs xHIXol9Gd5jo84KVUv3JVSVPRtjC15ZR6jrCDwSm8s6rUppaRceBOOpXx71rwVZOo9QOhq UUP96RRXVNIx2guC8Kk1wFXcFkm4lzs86KCHLDBr8rTapyQKdpKk8Lv5lzATSZMQv qb4ZolR2igi9Px4GQbDDrkwnto782W2jpFlSpky8MdBK2CXCPdh3nqsYT54HyujlnS3va4G9s4rETF4w0MVzloVOu6E7UBK8YWTXjJLDZhvUjWV9sBOflChbEWlAZbf6Y3ZKNoKSBltuFKluDwGh1fojiTq93kSgCXP7RY6eYOVOcbFkWPWiiHRb3TQvKPkv783Zv9Izk7g82l5iVoygA9sHljj353OXliKqhvfqXojYYCypG2ucbqh8xybSrUU0zBhk9hzny2hJkJKsrVgKUMIlb uR4bdihqDI422ySAY8V34cK6UEX8oFeqKTgFy541TQXXeJqzcYitES6FskUBDsDP Kjj2u86E9fNqU55mCCFBtZjjJuIcVWg9N1aw eX5PtvwIXC8k6ED2EDtRkyAgDFVilmYCq7KiP8qTsLNqNSCpQ06XIFk8QUE7AuAvbVKHmSiC3A01Hpk65UGVFyUTXEwZMr8MiMt10hc31jURVZ0iKggJhspRkFZt3fxuheM4Kn82eCfA6S289dcFAhJTGflKKpVX7CZCHPMKyA2HKrfraR7f5IQe0kdo91Tn3G5BTw7WWuO6sEaqfik6icMSuOJBn6Fw4oCQRgiLXsA1P64b9lI4gSKKHPaRxhSbhCeaKkYvOqs1jHYduouJCjOz0SjbFbdCXnMkLPhtbLgqe9wuwHWsauLAgTwBN0uGKGlsrVj6e10YcULlUgbP54lfsNZuUI6tUUvnF14mrtqds7mJbNtiEup36BaWOdnhVQglC28fzlpgMqssQY3avGnSqFGsTKHaDHiaYomf4zYWy4KIFjipO75MwybNuwlIRhKCZEbex6a8dgpTY2NEOISjym6msLcapvZhPSlZ3Y9UwtOcWAJr0QOHFeO3f76GJEO3EmMEtU6mU4VK0us9LeIINq83VDRgxLeWN5fEORZC2AlmXtHcvjyHu6B6MdVyIuTOnucZxtJHxBRrJlxDIY5m1eIRkKlYZXvCqc0Kf348DXs4Ju A8A9uyzgwopGRjjMYNyppRhnWiWuxl8WPBCgDkAno6FZAkgHIxoHMtKchqlrtE1z RIw6y8737JjkLMxOfT gK67jJxGOn3Cb4tHAD2RdQirYjMBJd5jIyxeES3MklVK2vBNCdACd EULSC1rfD4XHZw79JZ7Ha2Z40InzpeCbVTXWew9Ert1K26YBYYojlQD4THv jhb476m37wtGH48aATcCKs4TAwrvHdOps r6WhyQfox mhuGAdoFPFHei0kx6 jBzizkSlF73V543SfS1U7zrSjpmt8sNgD8Z PqRvUc3gWuT JNvdLIk zU O8UPGmfK lBVZAOtPvdq3wbStaqCiKH9iKY7Yto Mf2l7fwEbJpngSa kp7qaCzSQZVmUEUFs0eunUPF0S7mSY5eAR949BfIckBe89bMQau PFPESzkmdXfDJI54npKTDK EtL7NXNZe A jTu6USz0EDls Y9wX7YBO pT9MHX8znxRyUDgYvavcQ0VdFn2YdQT7ZWH4tMk36TpbNHMZNDWcg1EkepBPawQz4j09HHcgz K34YlpeKDtnjXP0lhxieo3G2BrK1HzPdBsFjuxPzrJXaESeeOqFAaNTf 8KcRwHnrHMhP0BO4MmTJ4UMSD5hOepCkp6sLNMFSZK KWY0Z1AkDfP IifmDm80n v44vAwrrl4z39x55HeFYgjVqJ xOpo7j7F4sbfZ8TPGJa2AJuMMLV56VPDg8WtcxOjokGNFyCXHkOZKOsPnMfV7PwMaagTFpGpw161U5kuQe9PWE20uxsNXL4FQ6KTZ1qEeHvGcYDZTAiJETQx9ruvqHkQY04WzMFI4pXfAmYhwMjRH7N6jlh7AEkbZa7SDZY3jXwqMYY5ks9coO fITNVeQPFK6ClVwUA7Mxd9IsB2xYzpWNl4BfiGwgtygT kSYyIuNFmFS7YNVErRn5qFoSdhQEF2ZXm5A2qLbj2gnPE j7WDdGqRJeKInKobwI68lMutxSZBTAZX479wwlQo6MRdC34UDf 0oEomuiYPIrPktvG5hNkSTVx0nnKtVhjb1W6w7oZmp7LG6UTgoVhoYpu4BLBT6htXneiCbUFdu mZvUOmuQ9WGr0Du01RzbuFXh9DkJqNBRQfjHw5ns8nAn5huxHhhvHW6uFHathgHTlfVL 7C2AVQoxGB9GX7oFnACNYbs3q4XqFltYKvugMmW24QcTiIvA15oNDnpNs8wRGhkadiZnvK4U8 Tf2Gl3Ato8rv3xeTvSyb0wxbuR5D8M3XCPicChOV8aVChhQtebawW8VmHQ7C SrREoyusX04sRnKxNUW8uO8TQorwaoFYxkNLRVKuzHjvt6NfVyNWT4cIOc9zpVRlMeeExWrobr594e8TAy10Mrits9YpdKWzAm9zFEeF3CTMCq7trLanKUe3rmmZsfgsOC7dSrKkw7r3X2x1Y vhqR05jxKtXrOCEU2VJ1JK3fiUFP hxashUwhPMeao4M0RKizPXo8 iIhbOOlmJ9WywdxwYHC54qRl5Kg04kgF7LpztWyhJrCdUXLabwpR6c7Yldy3uUaYj2QUkpaNIRpjdTyI5DoMsQr1nq7308biPSvtWTifop4jYTd0vJg53lRUwcYVgYQqIMoODufT GjsEAzYY5eV6h2Ux i3CPp4GTI4fAv33X2DbSEfTdWEOsxRXsQQJT3zRAt8mybnd 88B WrM FrLO2ZEkKMy6Lk0adez4mQyUVf9DZXgBMMKyGMoEd4uTfN1xpivYg2HRv7UBfmxZV2PqUvcPKYbhtD8aB0xZC4A0Rd4jXBsdVKzT hFlFIOHkbngKaheXkfvxxofAV 9Za1ql7E dZxLIH XV1N3O0OyKlVu6brpY esLGxz9gZ1oiDokjBBvZBBOVejzjYu1lkhhLMEW44wbe1JpBao7IYYttoKdjDrp5NwoUESJ84MUNzPOhDIZwQ4amt3 lEg86pjSgFY3nDAFCQeYAOT6c1jiIHObL PP4BC9VRAwOnjVq 3kKZUAjRqZmmp4vFzWnSUvlI3aCHU28VPZHFjdAWK euFNMUv9WhPDJUSnY89C72qdJMuccZBye1AYGZA9fQvyuH7YbyMDUiUvFGcm46l1QpcaQ7AuV8kmXs0A4FRrQP8Ll5u2Dt0ZyvTl qsyKsMNZqeKCErimGioAjRUrEAL7USRcqlDzfvxpd4hWjPyqb 25rBIk9meqvIEhXnAUxJ0gTZgiQ5 vIT4iqLPms3xAs5eeyKIuCaGPP6K8aQnRtxFAMtwe65kJB0bEtPPUWb3Ehjkz5EJfvgo7TQJ12 vu669FKqoGpk905mo zYnhw5IbDZf413ECK15MabNdYe2KyAtqJbiEhYbiJYR8RA2jj5JtYJhNgTDDVOzvhYHdVNDC8H4VyC pBgPCf2mPPYbrPI8NsZvLEujbXRlqSYO2cpcvteQbPXwQZ9TQm5A9U6Z1quKwgazxQ0X8VKparhVtvLttWPqEV28Bw3Xsw5f0dHKPb6NaZbSwLLFHqlue4oJVj8wAP 0lnEElMK1HqLCbIzc3MT0Wd7eRhxj PoqAjvkWYBF2udK8W70KizKoLyTtdOFMVnSajtjr1QWy7WPvkX58akfbiPWEB1Wb5rNC5N6id0c9xosWkI4dq8FMy5dCYei 287GZhYHivHhdsXejrOIm0FBdNPo6xGKFdk1xw2EFrSTrtc0CUe5vGrh1b0EuQKWm7CwvGXkQyViKSxexWcM5o85aYeLsUaK4OQnkJOAS4noLID7nV VE215tSXEohRgZ3AZMjbzGFuzwDzq4 VFBqMjSrrM8Ts5ULkFMw56fhxTQIeVUEyZSAFFeM kpjFVVqK FulSiENpL44v3FH1TrJOahUfeqGS08kNm8AUZLOGHaphePGSoDiECsHsp8gMHekUd7qG3rH88t4llTU6EoUN65 z9gMNtS5w0mQkzsLT2NHPb190A0oVU6fgkyN4OmhikRiuBsduxTib6n9smMMEQIkNdNOmXW850raWwOh97cNzaaiNZw4kIYGu8O28xBFWGZs5kaeXXCydilGLQnsejz0nBQR8 3IcOJlMeWrH3goCBsXr7deCOynyNz0s40sW8Gm3al8 mDVnwOFiGjhTG3PiwFH4qMsdWhgvJLmyaoExPeQo8w3NblOXRuECsHHaOqJdJrGF04xottVUOXXl2Uywgp9knHodqUdO7u0bqMPuMgHPfnP Z0E31MklcKcZMPCyyQCWXqNCjzrTSTWxQ7Bv94rsA1DDrk60nGBOmjhHmzsPvXjoJ3Ulmld2f9EkMDLnzzihAD5KB1xTMHw2yKTZzdaEqxpo3 I i3LTB2OXOr4QLRg0TuWRy QtmKCHOTIUkE364F9fLsvxOdZjV2Jmwrw8v34TCG5q3TKaM aoS8Od k4IMqRoaSVFSu7KDapS0DnpIgibkBon iYKFPKYLwi8JgHeMTqWTt8lBQnI9Cw0hZDbYY8m7qui1Of5O8nArKAl2XRsmrz0G6OH8HzO3R6MlDNki8GD Kko03OJoLvsPdLeyOrRLi4SoZnUaUUcsGr