atheme-web

changeset 2:ecc29e7f25ff

Add http://github.com/technoweenie/restful-authentication/tree/master to plugins.
author Valeriy Yatsko <dwr@shadowircd.net>
date Sun Dec 28 01:28:10 2008 +0300 (2008-12-28)
parents 88ec86ab9098
children 3d2b92e8dafc
files .hgignore vendor/plugins/restful_authentication/CHANGELOG vendor/plugins/restful_authentication/README.textile vendor/plugins/restful_authentication/Rakefile vendor/plugins/restful_authentication/TODO vendor/plugins/restful_authentication/generators/authenticated/USAGE vendor/plugins/restful_authentication/generators/authenticated/authenticated_generator.rb vendor/plugins/restful_authentication/generators/authenticated/lib/insert_routes.rb vendor/plugins/restful_authentication/generators/authenticated/templates/_model_partial.html.erb vendor/plugins/restful_authentication/generators/authenticated/templates/activation.erb vendor/plugins/restful_authentication/generators/authenticated/templates/authenticated_system.rb vendor/plugins/restful_authentication/generators/authenticated/templates/authenticated_test_helper.rb vendor/plugins/restful_authentication/generators/authenticated/templates/controller.rb vendor/plugins/restful_authentication/generators/authenticated/templates/helper.rb vendor/plugins/restful_authentication/generators/authenticated/templates/login.html.erb vendor/plugins/restful_authentication/generators/authenticated/templates/mailer.rb vendor/plugins/restful_authentication/generators/authenticated/templates/migration.rb vendor/plugins/restful_authentication/generators/authenticated/templates/model.rb vendor/plugins/restful_authentication/generators/authenticated/templates/model_controller.rb vendor/plugins/restful_authentication/generators/authenticated/templates/model_helper.rb vendor/plugins/restful_authentication/generators/authenticated/templates/model_helper_spec.rb vendor/plugins/restful_authentication/generators/authenticated/templates/observer.rb vendor/plugins/restful_authentication/generators/authenticated/templates/signup.html.erb vendor/plugins/restful_authentication/generators/authenticated/templates/signup_notification.erb vendor/plugins/restful_authentication/generators/authenticated/templates/site_keys.rb vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/access_control_spec.rb vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/authenticated_system_spec.rb vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/sessions_controller_spec.rb vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/users_controller_spec.rb vendor/plugins/restful_authentication/generators/authenticated/templates/spec/fixtures/users.yml vendor/plugins/restful_authentication/generators/authenticated/templates/spec/helpers/users_helper_spec.rb vendor/plugins/restful_authentication/generators/authenticated/templates/spec/models/user_spec.rb vendor/plugins/restful_authentication/generators/authenticated/templates/stories/rest_auth_stories.rb vendor/plugins/restful_authentication/generators/authenticated/templates/stories/rest_auth_stories_helper.rb vendor/plugins/restful_authentication/generators/authenticated/templates/stories/steps/ra_navigation_steps.rb vendor/plugins/restful_authentication/generators/authenticated/templates/stories/steps/ra_resource_steps.rb vendor/plugins/restful_authentication/generators/authenticated/templates/stories/steps/ra_response_steps.rb vendor/plugins/restful_authentication/generators/authenticated/templates/stories/steps/user_steps.rb vendor/plugins/restful_authentication/generators/authenticated/templates/stories/users/accounts.story vendor/plugins/restful_authentication/generators/authenticated/templates/stories/users/sessions.story vendor/plugins/restful_authentication/generators/authenticated/templates/test/functional_test.rb vendor/plugins/restful_authentication/generators/authenticated/templates/test/mailer_test.rb vendor/plugins/restful_authentication/generators/authenticated/templates/test/model_functional_test.rb vendor/plugins/restful_authentication/generators/authenticated/templates/test/unit_test.rb vendor/plugins/restful_authentication/init.rb vendor/plugins/restful_authentication/install.rb vendor/plugins/restful_authentication/lib/authentication.rb vendor/plugins/restful_authentication/lib/authentication/by_cookie_token.rb vendor/plugins/restful_authentication/lib/authentication/by_password.rb vendor/plugins/restful_authentication/lib/authorization.rb vendor/plugins/restful_authentication/lib/authorization/aasm_roles.rb vendor/plugins/restful_authentication/lib/authorization/stateful_roles.rb vendor/plugins/restful_authentication/lib/trustification.rb vendor/plugins/restful_authentication/lib/trustification/email_validation.rb vendor/plugins/restful_authentication/notes/AccessControl.txt vendor/plugins/restful_authentication/notes/Authentication.txt vendor/plugins/restful_authentication/notes/Authorization.txt vendor/plugins/restful_authentication/notes/RailsPlugins.txt vendor/plugins/restful_authentication/notes/SecurityFramework.graffle vendor/plugins/restful_authentication/notes/SecurityFramework.png vendor/plugins/restful_authentication/notes/SecurityPatterns.txt vendor/plugins/restful_authentication/notes/Tradeoffs.txt vendor/plugins/restful_authentication/notes/Trustification.txt vendor/plugins/restful_authentication/rails/init.rb vendor/plugins/restful_authentication/restful-authentication.gemspec vendor/plugins/restful_authentication/tasks/auth.rake
line diff
     1.1 --- a/.hgignore
     1.2 +++ b/.hgignore
     1.3 @@ -1,5 +1,6 @@
     1.4  syntax: glob
     1.5  .git/
     1.6 +.gitignore
     1.7  .svn/
     1.8  *.orig
     1.9  *~
     2.1 new file mode 100644
     2.2 --- /dev/null
     2.3 +++ b/vendor/plugins/restful_authentication/CHANGELOG
     2.4 @@ -0,0 +1,68 @@
     2.5 +h1. Internal Changes to code
     2.6 +
     2.7 +As always, this is just a copy-and-pasted version of the CHANGELOG file in the source code tree.
     2.8 +
     2.9 +h2. Changes for the May, 2008 version of restful-authentication
    2.10 +
    2.11 +h3. Changes to user model
    2.12 +
    2.13 +* recently_activated? belongs only if stateful
    2.14 +* Gave migration a 40-char limit on remember_token & an index on users by login
    2.15 +* **Much** stricter login and email validation
    2.16 +* put length constraints in migration too
    2.17 +* password in 6, 40
    2.18 +* salt and remember_token now much less predictability
    2.19 +
    2.20 +h3. Changes to session_controller
    2.21 +
    2.22 +* use uniform logout function
    2.23 +* use uniform remember_cookie functions
    2.24 +* avoid calling logged_in? which will auto-log-you-in (safe in the face of
    2.25 +  logout! call, but idiot-proof)
    2.26 +* Moved reset_session into only the "now logged in" branch
    2.27 +** wherever it goes, it has to be in front of the current_user= call
    2.28 +** See more in README-Tradeoffs.txt
    2.29 +* made a place to take action on failed login attempt
    2.30 +* recycle login and remember_me setting on failed login
    2.31 +* nil'ed out the password field in 'new' view
    2.32 +
    2.33 +h3. Changes to users_controller
    2.34 +
    2.35 +* use uniform logout function
    2.36 +* use uniform remember_cookie functions
    2.37 +* Moved reset_session into only the "now logged in" branch
    2.38 +** wherever it goes, it has to be in front of the current_user= call
    2.39 +** See more in README-Tradeoffs.txt
    2.40 +* made the implicit login only happen for non-activationed sites
    2.41 +* On a failed signup, kick you back to the signin screen (but strip out the password & confirmation)
    2.42 +* more descriptive error messages in activate()
    2.43 +
    2.44 +h3. users_helper
    2.45 +
    2.46 +* link_to_user, link_to_current_user, link_to_signin_with_IP 
    2.47 +* if_authorized(action, resource, &block) view function (with appropriate
    2.48 +  warning)
    2.49 +
    2.50 +h3. authenticated_system
    2.51 +
    2.52 +* Made authorized? take optional arguments action=nil, resource=nil, *args
    2.53 +  This makes its signature better match traditional approaches to access control
    2.54 +  eg Reference Monitor in "Security Patterns":http://www.securitypatterns.org/patterns.html)
    2.55 +* authorized? should be a helper too
    2.56 +* added uniform logout! methods
    2.57 +* format.any (as found in access_denied) doesn't work until
    2.58 +  http://dev.rubyonrails.org/changeset/8987 lands.
    2.59 +* cookies are now refreshed each time we cross the logged out/in barrier, as 
    2.60 +  "best":http://palisade.plynt.com/issues/2004Jul/safe-auth-practices/
    2.61 +  "practice":http://www.owasp.org/index.php/Session_Management#Regeneration_of_Session_Tokens
    2.62 +
    2.63 +h3. Other
    2.64 +
    2.65 +* Used escapes <%= %> in email templates (among other reasons, so courtenay's
    2.66 +  "'dumbass' test":http://tinyurl.com/684g9t doesn't complain)
    2.67 +* Added site key to generator, users.yml.
    2.68 +* Made site key generation idempotent in the most crude and hackish way
    2.69 +* 100% coverage apart from the stateful code. (needed some access_control
    2.70 +  checks, and the http_auth stuff)
    2.71 +* Stories!
    2.72 +
     3.1 new file mode 100644
     3.2 --- /dev/null
     3.3 +++ b/vendor/plugins/restful_authentication/README.textile
     3.4 @@ -0,0 +1,224 @@
     3.5 +h1. "Restful Authentication Generator":http://github.com/technoweenie/restful-authentication
     3.6 +
     3.7 +This widely-used plugin provides a foundation for securely managing user
     3.8 +authentication:
     3.9 +* Login / logout
    3.10 +* Secure password handling
    3.11 +* Account activation by validating email
    3.12 +* Account approval / disabling by admin
    3.13 +* Rudimentary hooks for authorization and access control.
    3.14 +
    3.15 +Several features were updated in May, 2008.  
    3.16 +* "Stable newer version":http://github.com/technoweenie/restful-authentication/tree/master 
    3.17 +* "'Classic' (backward-compatible) version":http://github.com/technoweenie/restful-authentication/tree/classic
    3.18 +* "Experimental version":http://github.com/technoweenie/restful-authentication/tree/modular (Much more modular, needs testing & review)
    3.19 +
    3.20 +  !! important: if you upgrade your site, existing user account !!
    3.21 +  !! passwords will stop working unless you use --old-passwords !!
    3.22 +
    3.23 +***************************************************************************
    3.24 +
    3.25 +h2. Issue Tracker
    3.26 +
    3.27 +Please submit any bugs or annoyances on the lighthouse tracker at
    3.28 +* "http://rails_security.lighthouseapp.com/projects/15332-restful_authentication/overview":http://rails_security.lighthouseapp.com/projects/15332-restful_authentication/overview
    3.29 +
    3.30 +For anything simple enough, please github message both maintainers: Rick Olson
    3.31 +("technoweenie":http://github.com/technoweenie) and Flip Kromer
    3.32 +("mrflip":http://github.com/mrflip).
    3.33 +
    3.34 +***************************************************************************
    3.35 +
    3.36 +h2. Documentation
    3.37 +
    3.38 +This page has notes on
    3.39 +* "Installation":#INSTALL
    3.40 +* "New Features":#AWESOME
    3.41 +* "After installing":#POST-INSTALL
    3.42 +
    3.43 +See the "wiki":http://github.com/technoweenie/restful-authentication/wikis/home
    3.44 +(or the notes/ directory) if you want to learn more about:
    3.45 +
    3.46 +* "Extensions, Addons and Alternatives":addons such as HAML templates
    3.47 +* "Security Design Patterns":security-patterns with "snazzy diagram":http://github.com/technoweenie/restful-authentication/tree/master/notes/SecurityFramework.png
    3.48 +* [[Authentication]] -- Lets a visitor identify herself (and lay  claim to her corresponding Roles and measure of Trust)
    3.49 +* "Trust Metrics":Trustification -- Confidence we can rely on the outcomes of this visitor's actions.
    3.50 +* [[Authorization]] and Policy -- Based on trust and identity, what actions may this visitor perform?
    3.51 +* [[Access Control]] -- How the Authorization policy is actually enforced in your code (A: hopefully without turning it into  a spaghetti of if thens)
    3.52 +* [[Rails Plugins]] for Authentication, Trust,  Authorization and Access Control
    3.53 +* [[Tradeoffs]] -- for the paranoid or the curious, a rundown of tradeoffs made in the code
    3.54 +* [[CHANGELOG]] -- Summary of changes to internals
    3.55 +* [[TODO]] -- Ideas for how you can help
    3.56 +
    3.57 +These best version of the release notes are in the notes/ directory in the
    3.58 +"source code":http://github.com/technoweenie/restful-authentication/tree/master
    3.59 +-- look there for the latest version.  The wiki versions are taken (manually)
    3.60 +from there.
    3.61 +  
    3.62 +***************************************************************************
    3.63 +
    3.64 +<a id="AWESOME"/> </a>
    3.65 +h2. Exciting new features
    3.66 +
    3.67 +h3. Stories
    3.68 +
    3.69 +There are now RSpec stories that allow expressive, enjoyable tests for the
    3.70 +authentication code. The flexible code for resource testing in stories was
    3.71 +extended from "Ben Mabey's.":http://www.benmabey.com/2008/02/04/rspec-plain-text-stories-webrat-chunky-bacon/
    3.72 +
    3.73 +h3. Modularize to match security design patterns:
    3.74 +
    3.75 +* Authentication (currently: password, browser cookie token, HTTP basic)
    3.76 +* Trust metric (email validation) 
    3.77 +* Authorization (stateful roles)
    3.78 +* Leave a flexible framework that will play nicely with other access control / policy definition / trust metric plugins
    3.79 +
    3.80 +h3. Other
    3.81 +
    3.82 +* Added a few helper methods for linking to user pages
    3.83 +* Uniform handling of logout, remember_token
    3.84 +* Stricter email, login field validation
    3.85 +* Minor security fixes -- see CHANGELOG
    3.86 +
    3.87 +***************************************************************************
    3.88 +
    3.89 +h2. Non-backwards compatible Changes
    3.90 +
    3.91 +Here are a few changes in the May 2008 release that increase "Defense in Depth"
    3.92 +but may require changes to existing accounts
    3.93 +
    3.94 +* If you have an existing site, none of these changes are compelling enough to
    3.95 +  warrant migrating your userbase.
    3.96 +* If you are generating for a new site, all of these changes are low-impact.
    3.97 +  You should apply them.
    3.98 +
    3.99 +h3. Passwords
   3.100 +
   3.101 +The new password encryption (using a site key salt and stretching) will break
   3.102 +existing user accounts' passwords.  We recommend you use the --old-passwords
   3.103 +option or write a migration tool and submit it as a patch.  See the
   3.104 +[[Tradeoffs]] note for more information.
   3.105 +
   3.106 +h3. Validations
   3.107 +
   3.108 +By default, email and usernames are validated against a somewhat strict pattern; your users' values may be now illegal.  Adjust to suit.
   3.109 +
   3.110 +***************************************************************************
   3.111 +
   3.112 +<a id="INSTALL"/> </a>
   3.113 +h2. Installation
   3.114 +
   3.115 +This is a basic restful authentication generator for rails, taken from
   3.116 +acts as authenticated.  Currently it requires Rails 1.2.6 or above.
   3.117 +
   3.118 +**IMPORTANT FOR RAILS > 2.1 USERS** To avoid a @NameError@ exception ("lighthouse tracker ticket":http://rails_security.lighthouseapp.com/projects/15332-restful_authentication/tickets/2-not-a-valid-constant-name-errors#ticket-2-2), check out the code to have an _underscore_ and not _dash_ in its name: 
   3.119 +* either use <code>git clone git://github.com/technoweenie/restful-authentication.git restful_authentication</code> 
   3.120 +* or rename the plugin's directory to be <code>restful_authentication</code> after fetching it.
   3.121 +
   3.122 +To use the generator:
   3.123 +
   3.124 +  ./script/generate authenticated user sessions \
   3.125 +    --include-activation \
   3.126 +    --stateful \
   3.127 +    --rspec \
   3.128 +    --skip-migration \
   3.129 +    --skip-routes \
   3.130 +    --old-passwords
   3.131 +
   3.132 +* The first parameter specifies the model that gets created in signup (typically
   3.133 +  a user or account model).  A model with migration is created, as well as a
   3.134 +  basic controller with the create method. You probably want to say "User" here.
   3.135 +
   3.136 +* The second parameter specifies the session controller name.  This is the
   3.137 +  controller that handles the actual login/logout function on the site.
   3.138 +  (probably: "Session").
   3.139 +
   3.140 +* --include-activation: Generates the code for a ActionMailer and its respective
   3.141 +  Activation Code through email.
   3.142 +
   3.143 +* --stateful: Builds in support for acts_as_state_machine and generates
   3.144 +  activation code.  (@--stateful@ implies @--include-activation@). Based on the
   3.145 +  idea at [[http://www.vaporbase.com/postings/stateful_authentication]]. Passing
   3.146 +  @--skip-migration@ will skip the user migration, and @--skip-routes@ will skip
   3.147 +  resource generation -- both useful if you've already run this generator. 
   3.148 +  (Needs the "acts_as_state_machine plugin":http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/,
   3.149 +  but new installs should probably run with @--aasm@ instead.)
   3.150 +
   3.151 +* --aasm: Works the same as stateful but uses the "updated aasm gem":http://github.com/rubyist/aasm/tree/master
   3.152 +  
   3.153 +* --rspec: Generate RSpec tests and Stories in place of standard rails tests.
   3.154 +  This requires the
   3.155 +    "RSpec and Rspec-on-rails plugins":http://rspec.info/
   3.156 +  (make sure you "./script/generate rspec" after installing RSpec.)  The rspec
   3.157 +  and story suite are much more thorough than the rails tests, and changes are
   3.158 +  unlikely to be backported.
   3.159 +  
   3.160 +* --old-passwords: Use the older password scheme (see [[#COMPATIBILITY]], above)
   3.161 +
   3.162 +* --skip-migration: Don't generate a migration file for this model
   3.163 +
   3.164 +* --skip-routes: Don't generate a resource line in @config/routes.rb@
   3.165 +
   3.166 +***************************************************************************
   3.167 +<a id="POST-INSTALL"/> </a>
   3.168 +h2. After installing
   3.169 +
   3.170 +The below assumes a Model named 'User' and a Controller named 'Session'; please
   3.171 +alter to suit. There are additional security minutae in @notes/README-Tradeoffs@
   3.172 +-- only the paranoid or the curious need bother, though.
   3.173 +
   3.174 +* Add these familiar login URLs to your @config/routes.rb@ if you like:
   3.175 +
   3.176 +    <pre><code> 
   3.177 +    map.signup  '/signup', :controller => 'users',   :action => 'new' 
   3.178 +    map.login  '/login',  :controller => 'session', :action => 'new'
   3.179 +    map.logout '/logout', :controller => 'session', :action => 'destroy' 
   3.180 +    </code></pre>
   3.181 +
   3.182 +* With @--include-activation@, also add to your @config/routes.rb@:
   3.183 +
   3.184 +    <pre><code> 
   3.185 +    map.activate '/activate/:activation_code', :controller => 'users', :action => 'activate', :activation_code => nil 
   3.186 +    </code></pre> 
   3.187 +
   3.188 +  and add an observer to @config/environment.rb@:
   3.189 +  
   3.190 +    <pre><code> 
   3.191 +    config.active_record.observers = :user_observer
   3.192 +    </code></pre> 
   3.193 +
   3.194 +  Pay attention, may be this is not an issue for everybody, but if you should
   3.195 +  have problems, that the sent activation_code does match with that in the
   3.196 +  database stored, reload your user object before sending its data through email
   3.197 +  something like:
   3.198 +
   3.199 +    <pre><code> 
   3.200 +    class UserObserver < ActiveRecord::Observer
   3.201 +      def after_create(user)
   3.202 +        user.reload
   3.203 +        UserMailer.deliver_signup_notification(user)
   3.204 +      end
   3.205 +      def after_save(user)
   3.206 +        user.reload
   3.207 +        UserMailer.deliver_activation(user) if user.recently_activated?
   3.208 +      end
   3.209 +    end
   3.210 +    </code></pre>
   3.211 +
   3.212 +
   3.213 +* With @--stateful@, add an observer to config/environment.rb:
   3.214 +  
   3.215 +    <pre><code> 
   3.216 +    config.active_record.observers = :user_observer
   3.217 +    </code></pre>
   3.218 +    
   3.219 +  and modify the users resource line to read
   3.220 +  
   3.221 +    map.resources :users, :member => { :suspend   => :put,
   3.222 +                                       :unsuspend => :put,
   3.223 +                                       :purge     => :delete } 
   3.224 +
   3.225 +* If you use a public repository for your code (such as github, rubyforge,
   3.226 +  gitorious, etc.) make sure to NOT post your site_keys.rb (add a line like
   3.227 +  '/config/initializers/site_keys.rb' to your .gitignore or do the svn ignore
   3.228 +  dance), but make sure you DO keep it backed up somewhere safe.
     4.1 new file mode 100644
     4.2 --- /dev/null
     4.3 +++ b/vendor/plugins/restful_authentication/Rakefile
     4.4 @@ -0,0 +1,32 @@
     4.5 +require 'rake'
     4.6 +require 'rake/testtask'
     4.7 +require 'rake/rdoctask'
     4.8 +require 'rake/gempackagetask'
     4.9 +
    4.10 +desc 'Default: run unit tests.'
    4.11 +task :default => :test
    4.12 +
    4.13 +desc 'Test the restful_authentication plugin.'
    4.14 +Rake::TestTask.new(:test) do |t|
    4.15 +  t.libs << 'lib'
    4.16 +  t.pattern = 'test/**/*_test.rb'
    4.17 +  t.verbose = true
    4.18 +end
    4.19 +
    4.20 +desc 'Generate documentation for the restful_authentication plugin.'
    4.21 +Rake::RDocTask.new(:rdoc) do |rdoc|
    4.22 +  rdoc.rdoc_dir = 'rdoc'
    4.23 +  rdoc.title    = 'RestfulAuthentication'
    4.24 +  rdoc.options << '--line-numbers' << '--inline-source'
    4.25 +  rdoc.rdoc_files.include('README')
    4.26 +  rdoc.rdoc_files.include('lib/**/*.rb')
    4.27 +end
    4.28 +
    4.29 +gemspec = eval(File.read("#{File.dirname(__FILE__)}/restful-authentication.gemspec"))
    4.30 +PKG_NAME = gemspec.name
    4.31 +PKG_VERSION = gemspec.version
    4.32 +
    4.33 +Rake::GemPackageTask.new(gemspec) do |pkg|
    4.34 +  pkg.need_zip = true
    4.35 +  pkg.need_tar = true
    4.36 +end
     5.1 new file mode 100644
     5.2 --- /dev/null
     5.3 +++ b/vendor/plugins/restful_authentication/TODO
     5.4 @@ -0,0 +1,15 @@
     5.5 +
     5.6 +h3. Authentication security projects for a later date
     5.7 +
     5.8 +
     5.9 +* Track 'failed logins this hour' and demand a captcha after say 5 failed logins
    5.10 +  ("RECAPTCHA plugin.":http://agilewebdevelopment.com/plugins/recaptcha)
    5.11 +  "De-proxy-ficate IP address": http://wiki.codemongers.com/NginxHttpRealIpModule
    5.12 +
    5.13 +* Make cookie spoofing a little harder: we set the user's cookie to
    5.14 +  (remember_token), but store digest(remember_token, request_IP). A CSRF cookie
    5.15 +  spoofer has to then at least also spoof the user's originating IP
    5.16 +  (see "Secure Programs HOWTO":http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/web-authentication.html)
    5.17 +
    5.18 +* Log HTTP request on authentication / authorization failures
    5.19 +  http://palisade.plynt.com/issues/2004Jul/safe-auth-practices  
     6.1 new file mode 100644
     6.2 --- /dev/null
     6.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/USAGE
     6.4 @@ -0,0 +1,1 @@
     6.5 +./script/generate authenticated USERMODEL CONTROLLERNAME
     6.6 \ No newline at end of file
     7.1 new file mode 100644
     7.2 --- /dev/null
     7.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/authenticated_generator.rb
     7.4 @@ -0,0 +1,478 @@
     7.5 +require File.expand_path(File.dirname(__FILE__) + "/lib/insert_routes.rb")
     7.6 +require 'digest/sha1'
     7.7 +class AuthenticatedGenerator < Rails::Generator::NamedBase
     7.8 +  default_options :skip_migration => false,
     7.9 +                  :skip_routes    => false,
    7.10 +                  :old_passwords  => false,
    7.11 +                  :include_activation => false
    7.12 +
    7.13 +  attr_reader   :controller_name,
    7.14 +                :controller_class_path,
    7.15 +                :controller_file_path,
    7.16 +                :controller_class_nesting,
    7.17 +                :controller_class_nesting_depth,
    7.18 +                :controller_class_name,
    7.19 +                :controller_singular_name,
    7.20 +                :controller_plural_name,
    7.21 +                :controller_routing_name,                 # new_session_path
    7.22 +                :controller_routing_path,                 # /session/new
    7.23 +                :controller_controller_name,              # sessions
    7.24 +                :controller_file_name
    7.25 +  alias_method  :controller_table_name, :controller_plural_name
    7.26 +  attr_reader   :model_controller_name,
    7.27 +                :model_controller_class_path,
    7.28 +                :model_controller_file_path,
    7.29 +                :model_controller_class_nesting,
    7.30 +                :model_controller_class_nesting_depth,
    7.31 +                :model_controller_class_name,
    7.32 +                :model_controller_singular_name,
    7.33 +                :model_controller_plural_name,
    7.34 +                :model_controller_routing_name,           # new_user_path
    7.35 +                :model_controller_routing_path,           # /users/new
    7.36 +                :model_controller_controller_name         # users
    7.37 +  alias_method  :model_controller_file_name,  :model_controller_singular_name
    7.38 +  alias_method  :model_controller_table_name, :model_controller_plural_name
    7.39 +
    7.40 +  def initialize(runtime_args, runtime_options = {})
    7.41 +    super
    7.42 +
    7.43 +    @rspec = has_rspec?
    7.44 +
    7.45 +    @controller_name = (args.shift || 'sessions').pluralize
    7.46 +    @model_controller_name = @name.pluralize
    7.47 +
    7.48 +    # sessions controller
    7.49 +    base_name, @controller_class_path, @controller_file_path, @controller_class_nesting, @controller_class_nesting_depth = extract_modules(@controller_name)
    7.50 +    @controller_class_name_without_nesting, @controller_file_name, @controller_plural_name = inflect_names(base_name)
    7.51 +    @controller_singular_name = @controller_file_name.singularize
    7.52 +    if @controller_class_nesting.empty?
    7.53 +      @controller_class_name = @controller_class_name_without_nesting
    7.54 +    else
    7.55 +      @controller_class_name = "#{@controller_class_nesting}::#{@controller_class_name_without_nesting}"
    7.56 +    end
    7.57 +    @controller_routing_name  = @controller_singular_name
    7.58 +    @controller_routing_path  = @controller_file_path.singularize
    7.59 +    @controller_controller_name = @controller_plural_name
    7.60 +
    7.61 +    # model controller
    7.62 +    base_name, @model_controller_class_path, @model_controller_file_path, @model_controller_class_nesting, @model_controller_class_nesting_depth = extract_modules(@model_controller_name)
    7.63 +    @model_controller_class_name_without_nesting, @model_controller_singular_name, @model_controller_plural_name = inflect_names(base_name)
    7.64 +
    7.65 +    if @model_controller_class_nesting.empty?
    7.66 +      @model_controller_class_name = @model_controller_class_name_without_nesting
    7.67 +    else
    7.68 +      @model_controller_class_name = "#{@model_controller_class_nesting}::#{@model_controller_class_name_without_nesting}"
    7.69 +    end
    7.70 +    @model_controller_routing_name    = @table_name
    7.71 +    @model_controller_routing_path    = @model_controller_file_path
    7.72 +    @model_controller_controller_name = @model_controller_plural_name
    7.73 +
    7.74 +    load_or_initialize_site_keys()
    7.75 +
    7.76 +    if options[:dump_generator_attribute_names]
    7.77 +      dump_generator_attribute_names
    7.78 +    end
    7.79 +  end
    7.80 +
    7.81 +  def manifest
    7.82 +    recorded_session = record do |m|
    7.83 +      # Check for class naming collisions.
    7.84 +      m.class_collisions controller_class_path,       "#{controller_class_name}Controller", # Sessions Controller
    7.85 +                                                      "#{controller_class_name}Helper"
    7.86 +      m.class_collisions model_controller_class_path, "#{model_controller_class_name}Controller", # Model Controller
    7.87 +                                                      "#{model_controller_class_name}Helper"
    7.88 +      m.class_collisions class_path,                  "#{class_name}", "#{class_name}Mailer", "#{class_name}MailerTest", "#{class_name}Observer"
    7.89 +      m.class_collisions [], 'AuthenticatedSystem', 'AuthenticatedTestHelper'
    7.90 +
    7.91 +      # Controller, helper, views, and test directories.
    7.92 +      m.directory File.join('app/models', class_path)
    7.93 +      m.directory File.join('app/controllers', controller_class_path)
    7.94 +      m.directory File.join('app/controllers', model_controller_class_path)
    7.95 +      m.directory File.join('app/helpers', controller_class_path)
    7.96 +      m.directory File.join('app/views', controller_class_path, controller_file_name)
    7.97 +      m.directory File.join('app/views', class_path, "#{file_name}_mailer") if options[:include_activation]
    7.98 +
    7.99 +      m.directory File.join('app/controllers', model_controller_class_path)
   7.100 +      m.directory File.join('app/helpers', model_controller_class_path)
   7.101 +      m.directory File.join('app/views', model_controller_class_path, model_controller_file_name)
   7.102 +      m.directory File.join('config/initializers')
   7.103 +
   7.104 +      if @rspec
   7.105 +        m.directory File.join('spec/controllers', controller_class_path)
   7.106 +        m.directory File.join('spec/controllers', model_controller_class_path)
   7.107 +        m.directory File.join('spec/models', class_path)
   7.108 +        m.directory File.join('spec/helpers', model_controller_class_path)
   7.109 +        m.directory File.join('spec/fixtures', class_path)
   7.110 +        m.directory File.join('stories', model_controller_file_path)
   7.111 +        m.directory File.join('stories', 'steps')
   7.112 +      else
   7.113 +        m.directory File.join('test/functional', controller_class_path)
   7.114 +        m.directory File.join('test/functional', model_controller_class_path)
   7.115 +        m.directory File.join('test/unit', class_path)
   7.116 +        m.directory File.join('test/fixtures', class_path)
   7.117 +      end
   7.118 +
   7.119 +      m.template 'model.rb',
   7.120 +                  File.join('app/models',
   7.121 +                            class_path,
   7.122 +                            "#{file_name}.rb")
   7.123 +
   7.124 +      if options[:include_activation]
   7.125 +        %w( mailer observer ).each do |model_type|
   7.126 +          m.template "#{model_type}.rb", File.join('app/models',
   7.127 +                                               class_path,
   7.128 +                                               "#{file_name}_#{model_type}.rb")
   7.129 +        end
   7.130 +      end
   7.131 +
   7.132 +      m.template 'controller.rb',
   7.133 +                  File.join('app/controllers',
   7.134 +                            controller_class_path,
   7.135 +                            "#{controller_file_name}_controller.rb")
   7.136 +
   7.137 +      m.template 'model_controller.rb',
   7.138 +                  File.join('app/controllers',
   7.139 +                            model_controller_class_path,
   7.140 +                            "#{model_controller_file_name}_controller.rb")
   7.141 +
   7.142 +      m.template 'authenticated_system.rb',
   7.143 +                  File.join('lib', 'authenticated_system.rb')
   7.144 +
   7.145 +      m.template 'authenticated_test_helper.rb',
   7.146 +                  File.join('lib', 'authenticated_test_helper.rb')
   7.147 +
   7.148 +      m.template 'site_keys.rb', site_keys_file
   7.149 +
   7.150 +      if @rspec
   7.151 +        # RSpec Specs
   7.152 +        m.template  'spec/controllers/users_controller_spec.rb',
   7.153 +                    File.join('spec/controllers',
   7.154 +                              model_controller_class_path,
   7.155 +                              "#{model_controller_file_name}_controller_spec.rb")
   7.156 +        m.template  'spec/controllers/sessions_controller_spec.rb',
   7.157 +                    File.join('spec/controllers',
   7.158 +                              controller_class_path,
   7.159 +                              "#{controller_file_name}_controller_spec.rb")
   7.160 +        m.template  'spec/controllers/access_control_spec.rb',
   7.161 +                    File.join('spec/controllers',
   7.162 +                              controller_class_path,
   7.163 +                              "access_control_spec.rb")
   7.164 +        m.template  'spec/controllers/authenticated_system_spec.rb',
   7.165 +                    File.join('spec/controllers',
   7.166 +                              controller_class_path,
   7.167 +                              "authenticated_system_spec.rb")
   7.168 +        m.template  'spec/helpers/users_helper_spec.rb',
   7.169 +                    File.join('spec/helpers',
   7.170 +                              model_controller_class_path,
   7.171 +                              "#{table_name}_helper_spec.rb")
   7.172 +        m.template  'spec/models/user_spec.rb',
   7.173 +                    File.join('spec/models',
   7.174 +                              class_path,
   7.175 +                              "#{file_name}_spec.rb")
   7.176 +        m.template 'spec/fixtures/users.yml',
   7.177 +                    File.join('spec/fixtures',
   7.178 +                               class_path,
   7.179 +                              "#{table_name}.yml")
   7.180 +
   7.181 +        # RSpec Stories
   7.182 +        m.template  'stories/steps/ra_navigation_steps.rb',
   7.183 +         File.join('stories/steps/ra_navigation_steps.rb')
   7.184 +        m.template  'stories/steps/ra_response_steps.rb',
   7.185 +         File.join('stories/steps/ra_response_steps.rb')
   7.186 +        m.template  'stories/steps/ra_resource_steps.rb',
   7.187 +         File.join('stories/steps/ra_resource_steps.rb')
   7.188 +        m.template  'stories/steps/user_steps.rb',
   7.189 +         File.join('stories/steps/', "#{file_name}_steps.rb")
   7.190 +        m.template  'stories/users/accounts.story',
   7.191 +         File.join('stories', model_controller_file_path, 'accounts.story')
   7.192 +        m.template  'stories/users/sessions.story',
   7.193 +         File.join('stories', model_controller_file_path, 'sessions.story')
   7.194 +        m.template  'stories/rest_auth_stories_helper.rb',
   7.195 +         File.join('stories', 'rest_auth_stories_helper.rb')
   7.196 +        m.template  'stories/rest_auth_stories.rb',
   7.197 +         File.join('stories', 'rest_auth_stories.rb')
   7.198 +
   7.199 +      else
   7.200 +        m.template 'test/functional_test.rb',
   7.201 +                    File.join('test/functional',
   7.202 +                              controller_class_path,
   7.203 +                              "#{controller_file_name}_controller_test.rb")
   7.204 +        m.template 'test/model_functional_test.rb',
   7.205 +                    File.join('test/functional',
   7.206 +                              model_controller_class_path,
   7.207 +                              "#{model_controller_file_name}_controller_test.rb")
   7.208 +        m.template 'test/unit_test.rb',
   7.209 +                    File.join('test/unit',
   7.210 +                              class_path,
   7.211 +                              "#{file_name}_test.rb")
   7.212 +        if options[:include_activation]
   7.213 +          m.template 'test/mailer_test.rb', File.join('test/unit', class_path, "#{file_name}_mailer_test.rb")
   7.214 +        end
   7.215 +        m.template 'spec/fixtures/users.yml',
   7.216 +                    File.join('test/fixtures',
   7.217 +                              class_path,
   7.218 +                              "#{table_name}.yml")
   7.219 +      end
   7.220 +
   7.221 +      m.template 'helper.rb',
   7.222 +                  File.join('app/helpers',
   7.223 +                            controller_class_path,
   7.224 +                            "#{controller_file_name}_helper.rb")
   7.225 +
   7.226 +      m.template 'model_helper.rb',
   7.227 +                  File.join('app/helpers',
   7.228 +                            model_controller_class_path,
   7.229 +                            "#{model_controller_file_name}_helper.rb")
   7.230 +
   7.231 +
   7.232 +      # Controller templates
   7.233 +      m.template 'login.html.erb',  File.join('app/views', controller_class_path, controller_file_name, "new.html.erb")
   7.234 +      m.template 'signup.html.erb', File.join('app/views', model_controller_class_path, model_controller_file_name, "new.html.erb")
   7.235 +      m.template '_model_partial.html.erb', File.join('app/views', model_controller_class_path, model_controller_file_name, "_#{file_name}_bar.html.erb")
   7.236 +
   7.237 +      if options[:include_activation]
   7.238 +        # Mailer templates
   7.239 +        %w( activation signup_notification ).each do |action|
   7.240 +          m.template "#{action}.erb",
   7.241 +                     File.join('app/views', "#{file_name}_mailer", "#{action}.erb")
   7.242 +        end
   7.243 +      end
   7.244 +
   7.245 +      unless options[:skip_migration]
   7.246 +        m.migration_template 'migration.rb', 'db/migrate', :assigns => {
   7.247 +          :migration_name => "Create#{class_name.pluralize.gsub(/::/, '')}"
   7.248 +        }, :migration_file_name => "create_#{file_path.gsub(/\//, '_').pluralize}"
   7.249 +      end
   7.250 +      unless options[:skip_routes]
   7.251 +        # Note that this fails for nested classes -- you're on your own with setting up the routes.
   7.252 +        m.route_resource  controller_singular_name
   7.253 +        m.route_resources model_controller_plural_name
   7.254 +        m.route_name('signup',   '/signup',   {:controller => model_controller_plural_name, :action => 'new'})
   7.255 +        m.route_name('register', '/register', {:controller => model_controller_plural_name, :action => 'create'})
   7.256 +        m.route_name('login',    '/login',    {:controller => controller_controller_name, :action => 'new'})
   7.257 +        m.route_name('logout',   '/logout',   {:controller => controller_controller_name, :action => 'destroy'})
   7.258 +      end
   7.259 +    end
   7.260 +
   7.261 +    #
   7.262 +    # Post-install notes
   7.263 +    #
   7.264 +    action = File.basename($0) # grok the action from './script/generate' or whatever
   7.265 +    case action
   7.266 +    when "generate"
   7.267 +      puts "Ready to generate."
   7.268 +      puts ("-" * 70)
   7.269 +      puts "Once finished, don't forget to:"
   7.270 +      puts
   7.271 +      if options[:include_activation]
   7.272 +        puts "- Add an observer to config/environment.rb"
   7.273 +        puts "    config.active_record.observers = :#{file_name}_observer"
   7.274 +      end
   7.275 +      if options[:aasm]
   7.276 +        puts "- Install the acts_as_state_machine gem:"
   7.277 +        puts "    sudo gem sources -a http://gems.github.com (If you haven't already)"
   7.278 +        puts "    sudo gem install rubyist-aasm"
   7.279 +      elsif options[:stateful]
   7.280 +        puts "- Install the acts_as_state_machine plugin:"
   7.281 +        puts "    svn export http://elitists.textdriven.com/svn/plugins/acts_as_state_machine/trunk vendor/plugins/acts_as_state_machine"
   7.282 +      end
   7.283 +      puts "- Add routes to these resources. In config/routes.rb, insert routes like:"
   7.284 +      puts %(    map.signup '/signup', :controller => '#{model_controller_file_name}', :action => 'new')
   7.285 +      puts %(    map.login  '/login',  :controller => '#{controller_file_name}', :action => 'new')
   7.286 +      puts %(    map.logout '/logout', :controller => '#{controller_file_name}', :action => 'destroy')
   7.287 +      if options[:include_activation]
   7.288 +        puts %(    map.activate '/activate/:activation_code', :controller => '#{model_controller_file_name}', :action => 'activate', :activation_code => nil)
   7.289 +      end
   7.290 +      if options[:stateful]
   7.291 +        puts  "  and modify the map.resources :#{model_controller_file_name} line to include these actions:"
   7.292 +        puts  "    map.resources :#{model_controller_file_name}, :member => { :suspend => :put, :unsuspend => :put, :purge => :delete }"
   7.293 +      end
   7.294 +      puts
   7.295 +      puts ("-" * 70)
   7.296 +      puts
   7.297 +      if $rest_auth_site_key_from_generator.blank?
   7.298 +        puts "You've set a nil site key. This preserves existing users' passwords,"
   7.299 +        puts "but allows dictionary attacks in the unlikely event your database is"
   7.300 +        puts "compromised and your site code is not.  See the README for more."
   7.301 +      elsif $rest_auth_keys_are_new
   7.302 +        puts "We've create a new site key in #{site_keys_file}.  If you have existing"
   7.303 +        puts "user accounts their passwords will no longer work (see README). As always,"
   7.304 +        puts "keep this file safe but don't post it in public."
   7.305 +      else
   7.306 +        puts "We've reused the existing site key in #{site_keys_file}.  As always,"
   7.307 +        puts "keep this file safe but don't post it in public."
   7.308 +      end
   7.309 +      puts
   7.310 +      puts ("-" * 70)
   7.311 +    when "destroy"
   7.312 +      puts
   7.313 +      puts ("-" * 70)
   7.314 +      puts
   7.315 +      puts "Thanks for using restful_authentication"
   7.316 +      puts
   7.317 +      puts "Don't forget to comment out the observer line in environment.rb"
   7.318 +      puts "  (This was optional so it may not even be there)"
   7.319 +      puts "  # config.active_record.observers = :#{file_name}_observer"
   7.320 +      puts
   7.321 +      puts ("-" * 70)
   7.322 +      puts
   7.323 +    else
   7.324 +      puts "Didn't understand the action '#{action}' -- you might have missed the 'after running me' instructions."
   7.325 +    end
   7.326 +
   7.327 +    #
   7.328 +    # Do the thing
   7.329 +    #
   7.330 +    recorded_session
   7.331 +  end
   7.332 +
   7.333 +  def has_rspec?
   7.334 +    spec_dir = File.join(RAILS_ROOT, 'spec')
   7.335 +    options[:rspec] ||= (File.exist?(spec_dir) && File.directory?(spec_dir)) unless (options[:rspec] == false)
   7.336 +  end
   7.337 +
   7.338 +  #
   7.339 +  # !! These must match the corresponding routines in by_password.rb !!
   7.340 +  #
   7.341 +  def secure_digest(*args)
   7.342 +    Digest::SHA1.hexdigest(args.flatten.join('--'))
   7.343 +  end
   7.344 +  def make_token
   7.345 +    secure_digest(Time.now, (1..10).map{ rand.to_s })
   7.346 +  end
   7.347 +  def password_digest(password, salt)
   7.348 +    digest = $rest_auth_site_key_from_generator
   7.349 +    $rest_auth_digest_stretches_from_generator.times do
   7.350 +      digest = secure_digest(digest, salt, password, $rest_auth_site_key_from_generator)
   7.351 +    end
   7.352 +    digest
   7.353 +  end
   7.354 +
   7.355 +  #
   7.356 +  # Try to be idempotent:
   7.357 +  # pull in the existing site key if any,
   7.358 +  # seed it with reasonable defaults otherwise
   7.359 +  #
   7.360 +  def load_or_initialize_site_keys
   7.361 +    case
   7.362 +    when defined? REST_AUTH_SITE_KEY
   7.363 +      if (options[:old_passwords]) && ((! REST_AUTH_SITE_KEY.blank?) || (REST_AUTH_DIGEST_STRETCHES != 1))
   7.364 +        raise "You have a site key, but --old-passwords will overwrite it.  If this is really what you want, move the file #{site_keys_file} and re-run."
   7.365 +      end
   7.366 +      $rest_auth_site_key_from_generator         = REST_AUTH_SITE_KEY
   7.367 +      $rest_auth_digest_stretches_from_generator = REST_AUTH_DIGEST_STRETCHES
   7.368 +    when options[:old_passwords]
   7.369 +      $rest_auth_site_key_from_generator         = nil
   7.370 +      $rest_auth_digest_stretches_from_generator = 1
   7.371 +      $rest_auth_keys_are_new                    = true
   7.372 +    else
   7.373 +      $rest_auth_site_key_from_generator         = make_token
   7.374 +      $rest_auth_digest_stretches_from_generator = 10
   7.375 +      $rest_auth_keys_are_new                    = true
   7.376 +    end
   7.377 +  end
   7.378 +  def site_keys_file
   7.379 +    File.join("config", "initializers", "site_keys.rb")
   7.380 +  end
   7.381 +
   7.382 +protected
   7.383 +  # Override with your own usage banner.
   7.384 +  def banner
   7.385 +    "Usage: #{$0} authenticated ModelName [ControllerName]"
   7.386 +  end
   7.387 +
   7.388 +  def add_options!(opt)
   7.389 +    opt.separator ''
   7.390 +    opt.separator 'Options:'
   7.391 +    opt.on("--skip-migration",
   7.392 +      "Don't generate a migration file for this model")           { |v| options[:skip_migration] = v }
   7.393 +    opt.on("--include-activation",
   7.394 +      "Generate signup 'activation code' confirmation via email") { |v| options[:include_activation] = true }
   7.395 +    opt.on("--stateful",
   7.396 +      "Use acts_as_state_machine.  Assumes --include-activation") { |v| options[:include_activation] = options[:stateful] = true }
   7.397 +    opt.on("--aasm",
   7.398 +      "Use (gem) aasm.  Assumes --include-activation")            { |v| options[:include_activation] = options[:stateful] = options[:aasm] = true }
   7.399 +    opt.on("--rspec",
   7.400 +      "Force rspec mode (checks for RAILS_ROOT/spec by default)") { |v| options[:rspec] = true }
   7.401 +    opt.on("--no-rspec",
   7.402 +      "Force test (not RSpec mode")                               { |v| options[:rspec] = false }
   7.403 +    opt.on("--skip-routes",
   7.404 +      "Don't generate a resource line in config/routes.rb")       { |v| options[:skip_routes] = v }
   7.405 +    opt.on("--old-passwords",
   7.406 +      "Use the older password encryption scheme (see README)")    { |v| options[:old_passwords] = v }
   7.407 +    opt.on("--dump-generator-attrs",
   7.408 +      "(generator debug helper)")                                 { |v| options[:dump_generator_attribute_names] = v }
   7.409 +  end
   7.410 +
   7.411 +  def dump_generator_attribute_names
   7.412 +    generator_attribute_names = [
   7.413 +      :table_name,
   7.414 +      :file_name,
   7.415 +      :class_name,
   7.416 +      :controller_name,
   7.417 +      :controller_class_path,
   7.418 +      :controller_file_path,
   7.419 +      :controller_class_nesting,
   7.420 +      :controller_class_nesting_depth,
   7.421 +      :controller_class_name,
   7.422 +      :controller_singular_name,
   7.423 +      :controller_plural_name,
   7.424 +      :controller_routing_name,                 # new_session_path
   7.425 +      :controller_routing_path,                 # /session/new
   7.426 +      :controller_controller_name,              # sessions
   7.427 +      :controller_file_name,
   7.428 +      :controller_table_name, :controller_plural_name,
   7.429 +      :model_controller_name,
   7.430 +      :model_controller_class_path,
   7.431 +      :model_controller_file_path,
   7.432 +      :model_controller_class_nesting,
   7.433 +      :model_controller_class_nesting_depth,
   7.434 +      :model_controller_class_name,
   7.435 +      :model_controller_singular_name,
   7.436 +      :model_controller_plural_name,
   7.437 +      :model_controller_routing_name,           # new_user_path
   7.438 +      :model_controller_routing_path,           # /users/new
   7.439 +      :model_controller_controller_name,        # users
   7.440 +      :model_controller_file_name,  :model_controller_singular_name,
   7.441 +      :model_controller_table_name, :model_controller_plural_name,
   7.442 +    ]
   7.443 +    generator_attribute_names.each do |attr|
   7.444 +      puts "%-40s %s" % ["#{attr}:", self.send(attr)]  # instance_variable_get("@#{attr.to_s}"
   7.445 +    end
   7.446 +
   7.447 +  end
   7.448 +end
   7.449 +
   7.450 +# ./script/generate authenticated FoonParent::Foon SporkParent::Spork -p --force --rspec --dump-generator-attrs
   7.451 +# table_name:                              foon_parent_foons
   7.452 +# file_name:                               foon
   7.453 +# class_name:                              FoonParent::Foon
   7.454 +# controller_name:                         SporkParent::Sporks
   7.455 +# controller_class_path:                   spork_parent
   7.456 +# controller_file_path:                    spork_parent/sporks
   7.457 +# controller_class_nesting:                SporkParent
   7.458 +# controller_class_nesting_depth:          1
   7.459 +# controller_class_name:                   SporkParent::Sporks
   7.460 +# controller_singular_name:                spork
   7.461 +# controller_plural_name:                  sporks
   7.462 +# controller_routing_name:                 spork
   7.463 +# controller_routing_path:                 spork_parent/spork
   7.464 +# controller_controller_name:              sporks
   7.465 +# controller_file_name:                    sporks
   7.466 +# controller_table_name:                   sporks
   7.467 +# controller_plural_name:                  sporks
   7.468 +# model_controller_name:                   FoonParent::Foons
   7.469 +# model_controller_class_path:             foon_parent
   7.470 +# model_controller_file_path:              foon_parent/foons
   7.471 +# model_controller_class_nesting:          FoonParent
   7.472 +# model_controller_class_nesting_depth:    1
   7.473 +# model_controller_class_name:             FoonParent::Foons
   7.474 +# model_controller_singular_name:          foons
   7.475 +# model_controller_plural_name:            foons
   7.476 +# model_controller_routing_name:           foon_parent_foons
   7.477 +# model_controller_routing_path:           foon_parent/foons
   7.478 +# model_controller_controller_name:        foons
   7.479 +# model_controller_file_name:              foons
   7.480 +# model_controller_singular_name:          foons
   7.481 +# model_controller_table_name:             foons
   7.482 +# model_controller_plural_name:            foons
     8.1 new file mode 100644
     8.2 --- /dev/null
     8.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/lib/insert_routes.rb
     8.4 @@ -0,0 +1,54 @@
     8.5 +Rails::Generator::Commands::Create.class_eval do
     8.6 +  def route_resource(*resources)
     8.7 +    resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
     8.8 +    sentinel = 'ActionController::Routing::Routes.draw do |map|'
     8.9 +
    8.10 +    logger.route "map.resource #{resource_list}"
    8.11 +    unless options[:pretend]
    8.12 +      gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
    8.13 +        "#{match}\n  map.resource #{resource_list}\n"
    8.14 +      end
    8.15 +    end
    8.16 +  end
    8.17 +  
    8.18 +  def route_name(name, path, route_options = {})
    8.19 +    sentinel = 'ActionController::Routing::Routes.draw do |map|'
    8.20 +    
    8.21 +    logger.route "map.#{name} '#{path}', :controller => '#{route_options[:controller]}', :action => '#{route_options[:action]}'"
    8.22 +    unless options[:pretend]
    8.23 +      gsub_file 'config/routes.rb', /(#{Regexp.escape(sentinel)})/mi do |match|
    8.24 +        "#{match}\n  map.#{name} '#{path}', :controller => '#{route_options[:controller]}', :action => '#{route_options[:action]}'"
    8.25 +      end
    8.26 +    end
    8.27 +  end
    8.28 +end
    8.29 +
    8.30 +Rails::Generator::Commands::Destroy.class_eval do
    8.31 +  def route_resource(*resources)
    8.32 +    resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
    8.33 +    look_for = "\n  map.resource #{resource_list}\n"
    8.34 +    logger.route "map.resource #{resource_list}"
    8.35 +    unless options[:pretend]
    8.36 +      gsub_file 'config/routes.rb', /(#{look_for})/mi, ''
    8.37 +    end
    8.38 +  end
    8.39 +  
    8.40 +  def route_name(name, path, route_options = {})
    8.41 +    look_for =   "\n  map.#{name} '#{path}', :controller => '#{route_options[:controller]}', :action => '#{route_options[:action]}'"
    8.42 +    logger.route "map.#{name} '#{path}',     :controller => '#{route_options[:controller]}', :action => '#{route_options[:action]}'"
    8.43 +    unless options[:pretend]
    8.44 +      gsub_file    'config/routes.rb', /(#{look_for})/mi, ''
    8.45 +    end
    8.46 +  end
    8.47 +end
    8.48 +
    8.49 +Rails::Generator::Commands::List.class_eval do
    8.50 +  def route_resource(*resources)
    8.51 +    resource_list = resources.map { |r| r.to_sym.inspect }.join(', ')
    8.52 +    logger.route "map.resource #{resource_list}"
    8.53 +  end
    8.54 +  
    8.55 +  def route_name(name, path, options = {})
    8.56 +    logger.route "map.#{name} '#{path}', :controller => '{options[:controller]}', :action => '#{options[:action]}'"
    8.57 +  end
    8.58 +end
     9.1 new file mode 100644
     9.2 --- /dev/null
     9.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/_model_partial.html.erb
     9.4 @@ -0,0 +1,8 @@
     9.5 +<%% if logged_in? -%>
     9.6 +  <div id="<%= file_name %>-bar-greeting">Logged in as <%%= link_to_current_<%= file_name %> :content_method => :login %></div>
     9.7 +  <div id="<%= file_name %>-bar-action"  >(<%%= link_to "Log out", logout_path, { :title => "Log out" }    %>)</div>
     9.8 +<%% else -%>
     9.9 +  <div id="<%= file_name %>-bar-greeting"><%%= link_to_login_with_IP 'Not logged in', :style => 'border: none;' %></div>
    9.10 +  <div id="<%= file_name %>-bar-action"  ><%%= link_to "Log in",  login_path,  { :title => "Log in" } %> /
    9.11 +                               <%%= link_to "Sign up", signup_path, { :title => "Create an account" } %></div>
    9.12 +<%% end -%>
    10.1 new file mode 100644
    10.2 --- /dev/null
    10.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/activation.erb
    10.4 @@ -0,0 +1,3 @@
    10.5 +<%%=h @<%= file_name %>.login %>, your account has been activated.  Welcome aboard!
    10.6 +
    10.7 +  <%%=h @url %>
    11.1 new file mode 100644
    11.2 --- /dev/null
    11.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/authenticated_system.rb
    11.4 @@ -0,0 +1,189 @@
    11.5 +module AuthenticatedSystem
    11.6 +  protected
    11.7 +    # Returns true or false if the <%= file_name %> is logged in.
    11.8 +    # Preloads @current_<%= file_name %> with the <%= file_name %> model if they're logged in.
    11.9 +    def logged_in?
   11.10 +      !!current_<%= file_name %>
   11.11 +    end
   11.12 +
   11.13 +    # Accesses the current <%= file_name %> from the session.
   11.14 +    # Future calls avoid the database because nil is not equal to false.
   11.15 +    def current_<%= file_name %>
   11.16 +      @current_<%= file_name %> ||= (login_from_session || login_from_basic_auth || login_from_cookie) unless @current_<%= file_name %> == false
   11.17 +    end
   11.18 +
   11.19 +    # Store the given <%= file_name %> id in the session.
   11.20 +    def current_<%= file_name %>=(new_<%= file_name %>)
   11.21 +      session[:<%= file_name %>_id] = new_<%= file_name %> ? new_<%= file_name %>.id : nil
   11.22 +      @current_<%= file_name %> = new_<%= file_name %> || false
   11.23 +    end
   11.24 +
   11.25 +    # Check if the <%= file_name %> is authorized
   11.26 +    #
   11.27 +    # Override this method in your controllers if you want to restrict access
   11.28 +    # to only a few actions or if you want to check if the <%= file_name %>
   11.29 +    # has the correct rights.
   11.30 +    #
   11.31 +    # Example:
   11.32 +    #
   11.33 +    #  # only allow nonbobs
   11.34 +    #  def authorized?
   11.35 +    #    current_<%= file_name %>.login != "bob"
   11.36 +    #  end
   11.37 +    #
   11.38 +    def authorized?(action = action_name, resource = nil)
   11.39 +      logged_in?
   11.40 +    end
   11.41 +
   11.42 +    # Filter method to enforce a login requirement.
   11.43 +    #
   11.44 +    # To require logins for all actions, use this in your controllers:
   11.45 +    #
   11.46 +    #   before_filter :login_required
   11.47 +    #
   11.48 +    # To require logins for specific actions, use this in your controllers:
   11.49 +    #
   11.50 +    #   before_filter :login_required, :only => [ :edit, :update ]
   11.51 +    #
   11.52 +    # To skip this in a subclassed controller:
   11.53 +    #
   11.54 +    #   skip_before_filter :login_required
   11.55 +    #
   11.56 +    def login_required
   11.57 +      authorized? || access_denied
   11.58 +    end
   11.59 +
   11.60 +    # Redirect as appropriate when an access request fails.
   11.61 +    #
   11.62 +    # The default action is to redirect to the login screen.
   11.63 +    #
   11.64 +    # Override this method in your controllers if you want to have special
   11.65 +    # behavior in case the <%= file_name %> is not authorized
   11.66 +    # to access the requested action.  For example, a popup window might
   11.67 +    # simply close itself.
   11.68 +    def access_denied
   11.69 +      respond_to do |format|
   11.70 +        format.html do
   11.71 +          store_location
   11.72 +          redirect_to new_<%= controller_routing_name %>_path
   11.73 +        end
   11.74 +        # format.any doesn't work in rails version < http://dev.rubyonrails.org/changeset/8987
   11.75 +        # Add any other API formats here.  (Some browsers, notably IE6, send Accept: */* and trigger 
   11.76 +        # the 'format.any' block incorrectly. See http://bit.ly/ie6_borken or http://bit.ly/ie6_borken2
   11.77 +        # for a workaround.)
   11.78 +        format.any(:json, :xml) do
   11.79 +          request_http_basic_authentication 'Web Password'
   11.80 +        end
   11.81 +      end
   11.82 +    end
   11.83 +
   11.84 +    # Store the URI of the current request in the session.
   11.85 +    #
   11.86 +    # We can return to this location by calling #redirect_back_or_default.
   11.87 +    def store_location
   11.88 +      session[:return_to] = request.request_uri
   11.89 +    end
   11.90 +
   11.91 +    # Redirect to the URI stored by the most recent store_location call or
   11.92 +    # to the passed default.  Set an appropriately modified
   11.93 +    #   after_filter :store_location, :only => [:index, :new, :show, :edit]
   11.94 +    # for any controller you want to be bounce-backable.
   11.95 +    def redirect_back_or_default(default)
   11.96 +      redirect_to(session[:return_to] || default)
   11.97 +      session[:return_to] = nil
   11.98 +    end
   11.99 +
  11.100 +    # Inclusion hook to make #current_<%= file_name %> and #logged_in?
  11.101 +    # available as ActionView helper methods.
  11.102 +    def self.included(base)
  11.103 +      base.send :helper_method, :current_<%= file_name %>, :logged_in?, :authorized? if base.respond_to? :helper_method
  11.104 +    end
  11.105 +
  11.106 +    #
  11.107 +    # Login
  11.108 +    #
  11.109 +
  11.110 +    # Called from #current_<%= file_name %>.  First attempt to login by the <%= file_name %> id stored in the session.
  11.111 +    def login_from_session
  11.112 +      self.current_<%= file_name %> = <%= class_name %>.find_by_id(session[:<%= file_name %>_id]) if session[:<%= file_name %>_id]
  11.113 +    end
  11.114 +
  11.115 +    # Called from #current_<%= file_name %>.  Now, attempt to login by basic authentication information.
  11.116 +    def login_from_basic_auth
  11.117 +      authenticate_with_http_basic do |login, password|
  11.118 +        self.current_<%= file_name %> = <%= class_name %>.authenticate(login, password)
  11.119 +      end
  11.120 +    end
  11.121 +    
  11.122 +    #
  11.123 +    # Logout
  11.124 +    #
  11.125 +
  11.126 +    # Called from #current_<%= file_name %>.  Finaly, attempt to login by an expiring token in the cookie.
  11.127 +    # for the paranoid: we _should_ be storing <%= file_name %>_token = hash(cookie_token, request IP)
  11.128 +    def login_from_cookie
  11.129 +      <%= file_name %> = cookies[:auth_token] && <%= class_name %>.find_by_remember_token(cookies[:auth_token])
  11.130 +      if <%= file_name %> && <%= file_name %>.remember_token?
  11.131 +        self.current_<%= file_name %> = <%= file_name %>
  11.132 +        handle_remember_cookie! false # freshen cookie token (keeping date)
  11.133 +        self.current_<%= file_name %>
  11.134 +      end
  11.135 +    end
  11.136 +
  11.137 +    # This is ususally what you want; resetting the session willy-nilly wreaks
  11.138 +    # havoc with forgery protection, and is only strictly necessary on login.
  11.139 +    # However, **all session state variables should be unset here**.
  11.140 +    def logout_keeping_session!
  11.141 +      # Kill server-side auth cookie
  11.142 +      @current_<%= file_name %>.forget_me if @current_<%= file_name %>.is_a? <%= class_name %>
  11.143 +      @current_<%= file_name %> = false     # not logged in, and don't do it for me
  11.144 +      kill_remember_cookie!     # Kill client-side auth cookie
  11.145 +      session[:<%= file_name %>_id] = nil   # keeps the session but kill our variable
  11.146 +      # explicitly kill any other session variables you set
  11.147 +    end
  11.148 +
  11.149 +    # The session should only be reset at the tail end of a form POST --
  11.150 +    # otherwise the request forgery protection fails. It's only really necessary
  11.151 +    # when you cross quarantine (logged-out to logged-in).
  11.152 +    def logout_killing_session!
  11.153 +      logout_keeping_session!
  11.154 +      reset_session
  11.155 +    end
  11.156 +    
  11.157 +    #
  11.158 +    # Remember_me Tokens
  11.159 +    #
  11.160 +    # Cookies shouldn't be allowed to persist past their freshness date,
  11.161 +    # and they should be changed at each login
  11.162 +
  11.163 +    # Cookies shouldn't be allowed to persist past their freshness date,
  11.164 +    # and they should be changed at each login
  11.165 +
  11.166 +    def valid_remember_cookie?
  11.167 +      return nil unless @current_<%= file_name %>
  11.168 +      (@current_<%= file_name %>.remember_token?) && 
  11.169 +        (cookies[:auth_token] == @current_<%= file_name %>.remember_token)
  11.170 +    end
  11.171 +    
  11.172 +    # Refresh the cookie auth token if it exists, create it otherwise
  11.173 +    def handle_remember_cookie!(new_cookie_flag)
  11.174 +      return unless @current_<%= file_name %>
  11.175 +      case
  11.176 +      when valid_remember_cookie? then @current_<%= file_name %>.refresh_token # keeping same expiry date
  11.177 +      when new_cookie_flag        then @current_<%= file_name %>.remember_me 
  11.178 +      else                             @current_<%= file_name %>.forget_me
  11.179 +      end
  11.180 +      send_remember_cookie!
  11.181 +    end
  11.182 +  
  11.183 +    def kill_remember_cookie!
  11.184 +      cookies.delete :auth_token
  11.185 +    end
  11.186 +    
  11.187 +    def send_remember_cookie!
  11.188 +      cookies[:auth_token] = {
  11.189 +        :value   => @current_<%= file_name %>.remember_token,
  11.190 +        :expires => @current_<%= file_name %>.remember_token_expires_at }
  11.191 +    end
  11.192 +
  11.193 +end
    12.1 new file mode 100644
    12.2 --- /dev/null
    12.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/authenticated_test_helper.rb
    12.4 @@ -0,0 +1,22 @@
    12.5 +module AuthenticatedTestHelper
    12.6 +  # Sets the current <%= file_name %> in the session from the <%= file_name %> fixtures.
    12.7 +  def login_as(<%= file_name %>)
    12.8 +    @request.session[:<%= file_name %>_id] = <%= file_name %> ? <%= table_name %>(<%= file_name %>).id : nil
    12.9 +  end
   12.10 +
   12.11 +  def authorize_as(<%= file_name %>)
   12.12 +    @request.env["HTTP_AUTHORIZATION"] = <%= file_name %> ? ActionController::HttpAuthentication::Basic.encode_credentials(<%= table_name %>(<%= file_name %>).login, 'monkey') : nil
   12.13 +  end
   12.14 +  
   12.15 +<% if options[:rspec] -%>
   12.16 +  # rspec
   12.17 +  def mock_<%= file_name %>
   12.18 +    <%= file_name %> = mock_model(<%= class_name %>, :id => 1,
   12.19 +      :login  => 'user_name',
   12.20 +      :name   => 'U. Surname',
   12.21 +      :to_xml => "<%= class_name %>-in-XML", :to_json => "<%= class_name %>-in-JSON", 
   12.22 +      :errors => [])
   12.23 +    <%= file_name %>
   12.24 +  end  
   12.25 +<% end -%>
   12.26 +end
    13.1 new file mode 100644
    13.2 --- /dev/null
    13.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/controller.rb
    13.4 @@ -0,0 +1,43 @@
    13.5 +# This controller handles the login/logout function of the site.  
    13.6 +class <%= controller_class_name %>Controller < ApplicationController
    13.7 +  # Be sure to include AuthenticationSystem in Application Controller instead
    13.8 +  include AuthenticatedSystem
    13.9 +
   13.10 +  # render new.rhtml
   13.11 +  def new
   13.12 +  end
   13.13 +
   13.14 +  def create
   13.15 +    logout_keeping_session!
   13.16 +    <%= file_name %> = <%= class_name %>.authenticate(params[:login], params[:password])
   13.17 +    if <%= file_name %>
   13.18 +      # Protects against session fixation attacks, causes request forgery
   13.19 +      # protection if user resubmits an earlier form using back
   13.20 +      # button. Uncomment if you understand the tradeoffs.
   13.21 +      # reset_session
   13.22 +      self.current_<%= file_name %> = <%= file_name %>
   13.23 +      new_cookie_flag = (params[:remember_me] == "1")
   13.24 +      handle_remember_cookie! new_cookie_flag
   13.25 +      redirect_back_or_default('/')
   13.26 +      flash[:notice] = "Logged in successfully"
   13.27 +    else
   13.28 +      note_failed_signin
   13.29 +      @login       = params[:login]
   13.30 +      @remember_me = params[:remember_me]
   13.31 +      render :action => 'new'
   13.32 +    end
   13.33 +  end
   13.34 +
   13.35 +  def destroy
   13.36 +    logout_killing_session!
   13.37 +    flash[:notice] = "You have been logged out."
   13.38 +    redirect_back_or_default('/')
   13.39 +  end
   13.40 +
   13.41 +protected
   13.42 +  # Track failed login attempts
   13.43 +  def note_failed_signin
   13.44 +    flash[:error] = "Couldn't log you in as '#{params[:login]}'"
   13.45 +    logger.warn "Failed login for '#{params[:login]}' from #{request.remote_ip} at #{Time.now.utc}"
   13.46 +  end
   13.47 +end
    14.1 new file mode 100644
    14.2 --- /dev/null
    14.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/helper.rb
    14.4 @@ -0,0 +1,2 @@
    14.5 +module <%= controller_class_name %>Helper
    14.6 +end
    14.7 \ No newline at end of file
    15.1 new file mode 100644
    15.2 --- /dev/null
    15.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/login.html.erb
    15.4 @@ -0,0 +1,16 @@
    15.5 +<h1>Log In</h1>
    15.6 +
    15.7 +<%% form_tag <%= controller_routing_name %>_path do -%>
    15.8 +<p><%%= label_tag 'login' %><br />
    15.9 +<%%= text_field_tag 'login', @login %></p>
   15.10 +
   15.11 +<p><%%= label_tag 'password' %><br/>
   15.12 +<%%= password_field_tag 'password', nil %></p>
   15.13 +
   15.14 +<!-- Uncomment this if you want this functionality
   15.15 +<p><%%= label_tag 'remember_me', 'Remember me' %>
   15.16 +<%%= check_box_tag 'remember_me', '1', @remember_me %></p>
   15.17 +-->
   15.18 +
   15.19 +<p><%%= submit_tag 'Log in' %></p>
   15.20 +<%% end -%>
    16.1 new file mode 100644
    16.2 --- /dev/null
    16.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/mailer.rb
    16.4 @@ -0,0 +1,25 @@
    16.5 +class <%= class_name %>Mailer < ActionMailer::Base
    16.6 +  def signup_notification(<%= file_name %>)
    16.7 +    setup_email(<%= file_name %>)
    16.8 +    @subject    += 'Please activate your new account'
    16.9 +  <% if options[:include_activation] %>
   16.10 +    @body[:url]  = "http://YOURSITE/activate/#{<%= file_name %>.activation_code}"
   16.11 +  <% else %>
   16.12 +    @body[:url]  = "http://YOURSITE/login/" <% end %>
   16.13 +  end
   16.14 +  
   16.15 +  def activation(<%= file_name %>)
   16.16 +    setup_email(<%= file_name %>)
   16.17 +    @subject    += 'Your account has been activated!'
   16.18 +    @body[:url]  = "http://YOURSITE/"
   16.19 +  end
   16.20 +  
   16.21 +  protected
   16.22 +    def setup_email(<%= file_name %>)
   16.23 +      @recipients  = "#{<%= file_name %>.email}"
   16.24 +      @from        = "ADMINEMAIL"
   16.25 +      @subject     = "[YOURSITE] "
   16.26 +      @sent_on     = Time.now
   16.27 +      @body[:<%= file_name %>] = <%= file_name %>
   16.28 +    end
   16.29 +end
    17.1 new file mode 100644
    17.2 --- /dev/null
    17.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/migration.rb
    17.4 @@ -0,0 +1,26 @@
    17.5 +class <%= migration_name %> < ActiveRecord::Migration
    17.6 +  def self.up
    17.7 +    create_table "<%= table_name %>", :force => true do |t|
    17.8 +      t.column :login,                     :string, :limit => 40
    17.9 +      t.column :name,                      :string, :limit => 100, :default => '', :null => true
   17.10 +      t.column :email,                     :string, :limit => 100
   17.11 +      t.column :crypted_password,          :string, :limit => 40
   17.12 +      t.column :salt,                      :string, :limit => 40
   17.13 +      t.column :created_at,                :datetime
   17.14 +      t.column :updated_at,                :datetime
   17.15 +      t.column :remember_token,            :string, :limit => 40
   17.16 +      t.column :remember_token_expires_at, :datetime
   17.17 +<% if options[:include_activation] -%>
   17.18 +      t.column :activation_code,           :string, :limit => 40
   17.19 +      t.column :activated_at,              :datetime<% end %>
   17.20 +<% if options[:stateful] -%>
   17.21 +      t.column :state,                     :string, :null => :no, :default => 'passive'
   17.22 +      t.column :deleted_at,                :datetime<% end %>
   17.23 +    end
   17.24 +    add_index :<%= table_name %>, :login, :unique => true
   17.25 +  end
   17.26 +
   17.27 +  def self.down
   17.28 +    drop_table "<%= table_name %>"
   17.29 +  end
   17.30 +end
    18.1 new file mode 100644
    18.2 --- /dev/null
    18.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/model.rb
    18.4 @@ -0,0 +1,83 @@
    18.5 +require 'digest/sha1'
    18.6 +
    18.7 +class <%= class_name %> < ActiveRecord::Base
    18.8 +  include Authentication
    18.9 +  include Authentication::ByPassword
   18.10 +  include Authentication::ByCookieToken
   18.11 +<% if options[:aasm] -%>
   18.12 +  include Authorization::AasmRoles
   18.13 +<% elsif options[:stateful] -%>
   18.14 +  include Authorization::StatefulRoles<% end %>
   18.15 +  validates_presence_of     :login
   18.16 +  validates_length_of       :login,    :within => 3..40
   18.17 +  validates_uniqueness_of   :login
   18.18 +  validates_format_of       :login,    :with => Authentication.login_regex, :message => Authentication.bad_login_message
   18.19 +
   18.20 +  validates_format_of       :name,     :with => Authentication.name_regex,  :message => Authentication.bad_name_message, :allow_nil => true
   18.21 +  validates_length_of       :name,     :maximum => 100
   18.22 +
   18.23 +  validates_presence_of     :email
   18.24 +  validates_length_of       :email,    :within => 6..100 #r@a.wk
   18.25 +  validates_uniqueness_of   :email
   18.26 +  validates_format_of       :email,    :with => Authentication.email_regex, :message => Authentication.bad_email_message
   18.27 +
   18.28 +  <% if options[:include_activation] && !options[:stateful] %>before_create :make_activation_code <% end %>
   18.29 +
   18.30 +  # HACK HACK HACK -- how to do attr_accessible from here?
   18.31 +  # prevents a user from submitting a crafted form that bypasses activation
   18.32 +  # anything else you want your user to change should be added here.
   18.33 +  attr_accessible :login, :email, :name, :password, :password_confirmation
   18.34 +
   18.35 +<% if options[:include_activation] && !options[:stateful] %>
   18.36 +  # Activates the user in the database.
   18.37 +  def activate!
   18.38 +    @activated = true
   18.39 +    self.activated_at = Time.now.utc
   18.40 +    self.activation_code = nil
   18.41 +    save(false)
   18.42 +  end
   18.43 +
   18.44 +  # Returns true if the user has just been activated.
   18.45 +  def recently_activated?
   18.46 +    @activated
   18.47 +  end
   18.48 +
   18.49 +  def active?
   18.50 +    # the existence of an activation code means they have not activated yet
   18.51 +    activation_code.nil?
   18.52 +  end<% end %>
   18.53 +
   18.54 +  # Authenticates a user by their login name and unencrypted password.  Returns the user or nil.
   18.55 +  #
   18.56 +  # uff.  this is really an authorization, not authentication routine.  
   18.57 +  # We really need a Dispatch Chain here or something.
   18.58 +  # This will also let us return a human error message.
   18.59 +  #
   18.60 +  def self.authenticate(login, password)
   18.61 +    return nil if login.blank? || password.blank?
   18.62 +    u = <% if    options[:stateful]           %>find_in_state :first, :active, :conditions => {:login => login}<%
   18.63 +           elsif options[:include_activation] %>find :first, :conditions => ['login = ? and activated_at IS NOT NULL', login]<%
   18.64 +           else %>find_by_login(login)<% end %> # need to get the salt
   18.65 +    u && u.authenticated?(password) ? u : nil
   18.66 +  end
   18.67 +
   18.68 +  def login=(value)
   18.69 +    write_attribute :login, (value ? value.downcase : nil)
   18.70 +  end
   18.71 +
   18.72 +  def email=(value)
   18.73 +    write_attribute :email, (value ? value.downcase : nil)
   18.74 +  end
   18.75 +
   18.76 +  protected
   18.77 +    
   18.78 +<% if options[:include_activation] -%>
   18.79 +    def make_activation_code
   18.80 +  <% if options[:stateful] -%>
   18.81 +      self.deleted_at = nil
   18.82 +  <% end -%>
   18.83 +      self.activation_code = self.class.make_token
   18.84 +    end
   18.85 +<% end %>
   18.86 +
   18.87 +end
    19.1 new file mode 100644
    19.2 --- /dev/null
    19.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/model_controller.rb
    19.4 @@ -0,0 +1,85 @@
    19.5 +class <%= model_controller_class_name %>Controller < ApplicationController
    19.6 +  # Be sure to include AuthenticationSystem in Application Controller instead
    19.7 +  include AuthenticatedSystem
    19.8 +  <% if options[:stateful] %>
    19.9 +  # Protect these actions behind an admin login
   19.10 +  # before_filter :admin_required, :only => [:suspend, :unsuspend, :destroy, :purge]
   19.11 +  before_filter :find_<%= file_name %>, :only => [:suspend, :unsuspend, :destroy, :purge]
   19.12 +  <% end %>
   19.13 +
   19.14 +  # render new.rhtml
   19.15 +  def new
   19.16 +    @<%= file_name %> = <%= class_name %>.new
   19.17 +  end
   19.18 + 
   19.19 +  def create
   19.20 +    logout_keeping_session!
   19.21 +    @<%= file_name %> = <%= class_name %>.new(params[:<%= file_name %>])
   19.22 +<% if options[:stateful] -%>
   19.23 +    @<%= file_name %>.register! if @<%= file_name %> && @<%= file_name %>.valid?
   19.24 +    success = @<%= file_name %> && @<%= file_name %>.valid?
   19.25 +<% else -%>
   19.26 +    success = @<%= file_name %> && @<%= file_name %>.save
   19.27 +<% end -%>
   19.28 +    if success && @<%= file_name %>.errors.empty?
   19.29 +      <% if !options[:include_activation] -%>
   19.30 +      # Protects against session fixation attacks, causes request forgery
   19.31 +      # protection if visitor resubmits an earlier form using back
   19.32 +      # button. Uncomment if you understand the tradeoffs.
   19.33 +      # reset session
   19.34 +      self.current_<%= file_name %> = @<%= file_name %> # !! now logged in
   19.35 +      <% end -%>redirect_back_or_default('/')
   19.36 +      flash[:notice] = "Thanks for signing up!  We're sending you an email with your activation code."
   19.37 +    else
   19.38 +      flash[:error]  = "We couldn't set up that account, sorry.  Please try again, or contact an admin (link is above)."
   19.39 +      render :action => 'new'
   19.40 +    end
   19.41 +  end
   19.42 +<% if options[:include_activation] %>
   19.43 +  def activate
   19.44 +    logout_keeping_session!
   19.45 +    <%= file_name %> = <%= class_name %>.find_by_activation_code(params[:activation_code]) unless params[:activation_code].blank?
   19.46 +    case
   19.47 +    when (!params[:activation_code].blank?) && <%= file_name %> && !<%= file_name %>.active?
   19.48 +      <%= file_name %>.activate!
   19.49 +      flash[:notice] = "Signup complete! Please sign in to continue."
   19.50 +      redirect_to '/login'
   19.51 +    when params[:activation_code].blank?
   19.52 +      flash[:error] = "The activation code was missing.  Please follow the URL from your email."
   19.53 +      redirect_back_or_default('/')
   19.54 +    else 
   19.55 +      flash[:error]  = "We couldn't find a <%= file_name %> with that activation code -- check your email? Or maybe you've already activated -- try signing in."
   19.56 +      redirect_back_or_default('/')
   19.57 +    end
   19.58 +  end
   19.59 +<% end %><% if options[:stateful] %>
   19.60 +  def suspend
   19.61 +    @<%= file_name %>.suspend! 
   19.62 +    redirect_to <%= model_controller_routing_name %>_path
   19.63 +  end
   19.64 +
   19.65 +  def unsuspend
   19.66 +    @<%= file_name %>.unsuspend! 
   19.67 +    redirect_to <%= model_controller_routing_name %>_path
   19.68 +  end
   19.69 +
   19.70 +  def destroy
   19.71 +    @<%= file_name %>.delete!
   19.72 +    redirect_to <%= model_controller_routing_name %>_path
   19.73 +  end
   19.74 +
   19.75 +  def purge
   19.76 +    @<%= file_name %>.destroy
   19.77 +    redirect_to <%= model_controller_routing_name %>_path
   19.78 +  end
   19.79 +  
   19.80 +  # There's no page here to update or destroy a <%= file_name %>.  If you add those, be
   19.81 +  # smart -- make sure you check that the visitor is authorized to do so, that they
   19.82 +  # supply their old password along with a new one to update it, etc.
   19.83 +
   19.84 +protected
   19.85 +  def find_<%= file_name %>
   19.86 +    @<%= file_name %> = <%= class_name %>.find(params[:id])
   19.87 +  end
   19.88 +<% end -%>
   19.89 +end
    20.1 new file mode 100644
    20.2 --- /dev/null
    20.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/model_helper.rb
    20.4 @@ -0,0 +1,93 @@
    20.5 +module <%= model_controller_class_name %>Helper
    20.6 +  
    20.7 +  #
    20.8 +  # Use this to wrap view elements that the user can't access.
    20.9 +  # !! Note: this is an *interface*, not *security* feature !!
   20.10 +  # You need to do all access control at the controller level.
   20.11 +  #
   20.12 +  # Example:
   20.13 +  # <%%= if_authorized?(:index,   User)  do link_to('List all users', users_path) end %> |
   20.14 +  # <%%= if_authorized?(:edit,    @user) do link_to('Edit this user', edit_user_path) end %> |
   20.15 +  # <%%= if_authorized?(:destroy, @user) do link_to 'Destroy', @user, :confirm => 'Are you sure?', :method => :delete end %> 
   20.16 +  #
   20.17 +  #
   20.18 +  def if_authorized?(action, resource, &block)
   20.19 +    if authorized?(action, resource)
   20.20 +      yield action, resource
   20.21 +    end
   20.22 +  end
   20.23 +
   20.24 +  #
   20.25 +  # Link to user's page ('<%= table_name %>/1')
   20.26 +  #
   20.27 +  # By default, their login is used as link text and link title (tooltip)
   20.28 +  #
   20.29 +  # Takes options
   20.30 +  # * :content_text => 'Content text in place of <%= file_name %>.login', escaped with
   20.31 +  #   the standard h() function.
   20.32 +  # * :content_method => :<%= file_name %>_instance_method_to_call_for_content_text
   20.33 +  # * :title_method => :<%= file_name %>_instance_method_to_call_for_title_attribute
   20.34 +  # * as well as link_to()'s standard options
   20.35 +  #
   20.36 +  # Examples:
   20.37 +  #   link_to_<%= file_name %> @<%= file_name %>
   20.38 +  #   # => <a href="/<%= table_name %>/3" title="barmy">barmy</a>
   20.39 +  #
   20.40 +  #   # if you've added a .name attribute:
   20.41 +  #  content_tag :span, :class => :vcard do
   20.42 +  #    (link_to_<%= file_name %> <%= file_name %>, :class => 'fn n', :title_method => :login, :content_method => :name) +
   20.43 +  #          ': ' + (content_tag :span, <%= file_name %>.email, :class => 'email')
   20.44 +  #   end
   20.45 +  #   # => <span class="vcard"><a href="/<%= table_name %>/3" title="barmy" class="fn n">Cyril Fotheringay-Phipps</a>: <span class="email">barmy@blandings.com</span></span>
   20.46 +  #
   20.47 +  #   link_to_<%= file_name %> @<%= file_name %>, :content_text => 'Your user page'
   20.48 +  #   # => <a href="/<%= table_name %>/3" title="barmy" class="nickname">Your user page</a>
   20.49 +  #
   20.50 +  def link_to_<%= file_name %>(<%= file_name %>, options={})
   20.51 +    raise "Invalid <%= file_name %>" unless <%= file_name %>
   20.52 +    options.reverse_merge! :content_method => :login, :title_method => :login, :class => :nickname
   20.53 +    content_text      = options.delete(:content_text)
   20.54 +    content_text    ||= <%= file_name %>.send(options.delete(:content_method))
   20.55 +    options[:title] ||= <%= file_name %>.send(options.delete(:title_method))
   20.56 +    link_to h(content_text), <%= model_controller_routing_name.singularize %>_path(<%= file_name %>), options
   20.57 +  end
   20.58 +
   20.59 +  #
   20.60 +  # Link to login page using remote ip address as link content
   20.61 +  #
   20.62 +  # The :title (and thus, tooltip) is set to the IP address 
   20.63 +  #
   20.64 +  # Examples:
   20.65 +  #   link_to_login_with_IP
   20.66 +  #   # => <a href="/login" title="169.69.69.69">169.69.69.69</a>
   20.67 +  #
   20.68 +  #   link_to_login_with_IP :content_text => 'not signed in'
   20.69 +  #   # => <a href="/login" title="169.69.69.69">not signed in</a>
   20.70 +  #
   20.71 +  def link_to_login_with_IP content_text=nil, options={}
   20.72 +    ip_addr           = request.remote_ip
   20.73 +    content_text    ||= ip_addr
   20.74 +    options.reverse_merge! :title => ip_addr
   20.75 +    if tag = options.delete(:tag)
   20.76 +      content_tag tag, h(content_text), options
   20.77 +    else
   20.78 +      link_to h(content_text), login_path, options
   20.79 +    end
   20.80 +  end
   20.81 +
   20.82 +  #
   20.83 +  # Link to the current user's page (using link_to_<%= file_name %>) or to the login page
   20.84 +  # (using link_to_login_with_IP).
   20.85 +  #
   20.86 +  def link_to_current_<%= file_name %>(options={})
   20.87 +    if current_<%= file_name %>
   20.88 +      link_to_<%= file_name %> current_<%= file_name %>, options
   20.89 +    else
   20.90 +      content_text = options.delete(:content_text) || 'not signed in'
   20.91 +      # kill ignored options from link_to_<%= file_name %>
   20.92 +      [:content_method, :title_method].each{|opt| options.delete(opt)} 
   20.93 +      link_to_login_with_IP content_text, options
   20.94 +    end
   20.95 +  end
   20.96 +
   20.97 +end
    21.1 new file mode 100644
    21.2 --- /dev/null
    21.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/model_helper_spec.rb
    21.4 @@ -0,0 +1,158 @@
    21.5 +require File.dirname(__FILE__) + '/../spec_helper'
    21.6 +include ApplicationHelper
    21.7 +include <%= model_controller_class_name %>Helper
    21.8 +
    21.9 +describe "<%= model_controller_class_name %>Helper.link_to_<%= file_name %>" do
   21.10 +  before do
   21.11 +    @<%= file_name %> = <%= class_name %>.new({
   21.12 +        :name  => '<%= class_name %> Name',
   21.13 +        :login => '<%= file_name %>_name',
   21.14 +      })
   21.15 +    @<%= file_name %>.id = 1 # set non-attr_accessible specifically
   21.16 +  end
   21.17 +
   21.18 +  it "should give an error on a nil <%= file_name %>" do
   21.19 +    lambda { link_to_<%= file_name %>(nil) }.should raise_error('Invalid <%= file_name %>')
   21.20 +  end
   21.21 +
   21.22 +  it "should link to the given <%= file_name %>" do
   21.23 +    link_to_<%= file_name %>(@<%= file_name %>).should have_tag("a[href='/<%= table_name %>/1']")
   21.24 +  end
   21.25 +
   21.26 +  it "should use given link text if :content_text is specified" do
   21.27 +    link_to_<%= file_name %>(@<%= file_name %>, :content_text => 'Hello there!').should have_tag("a", 'Hello there!')
   21.28 +  end
   21.29 +
   21.30 +  it "should use the login as link text with no :content_method specified" do
   21.31 +    link_to_<%= file_name %>(@<%= file_name %>).should have_tag("a", '<%= file_name %>_name')
   21.32 +  end
   21.33 +
   21.34 +  it "should use the name as link text with :content_method => :name" do
   21.35 +    link_to_<%= file_name %>(@<%= file_name %>, :content_method => :name).should have_tag("a", '<%= class_name %> Name')
   21.36 +  end
   21.37 +
   21.38 +  it "should use the login as title with no :title_method specified" do
   21.39 +    link_to_<%= file_name %>(@<%= file_name %>).should have_tag("a[title='<%= file_name %>_name']")
   21.40 +  end
   21.41 +
   21.42 +  it "should use the name as link title with :content_method => :name" do
   21.43 +    link_to_<%= file_name %>(@<%= file_name %>, :title_method => :name).should have_tag("a[title='<%= class_name %> Name']")
   21.44 +  end
   21.45 +
   21.46 +  it "should have nickname as a class by default" do
   21.47 +    link_to_<%= file_name %>(@<%= file_name %>).should have_tag("a.nickname")
   21.48 +  end
   21.49 +
   21.50 +  it "should take other classes and no longer have the nickname class" do
   21.51 +    result = link_to_<%= file_name %>(@<%= file_name %>, :class => 'foo bar')
   21.52 +    result.should have_tag("a.foo")
   21.53 +    result.should have_tag("a.bar")
   21.54 +  end
   21.55 +end
   21.56 +
   21.57 +describe "<%= model_controller_class_name %>Helper.link_to_signin_with_IP" do
   21.58 +  before do
   21.59 +  end
   21.60 +
   21.61 +  it "should link to the signin_path" do
   21.62 +    link_to_signin_with_IP().should have_tag("a[href='/signin']")
   21.63 +  end
   21.64 +
   21.65 +  it "should use given link text if :content_text is specified" do
   21.66 +    link_to_signin_with_IP(:content_text => 'Hello there!').should have_tag("a", 'Hello there!')
   21.67 +  end
   21.68 +
   21.69 +  it "should use the login as link text with no :content_method specified" do
   21.70 +    link_to_signin_with_IP().should have_tag("a", '0.0.0.0')
   21.71 +  end
   21.72 +
   21.73 +  it "should use the ip address as title" do
   21.74 +    link_to_signin_with_IP().should have_tag("a[title='0.0.0.0']")
   21.75 +  end
   21.76 +
   21.77 +  it "should by default be like school in summer and have no class" do
   21.78 +    link_to_signin_with_IP().should_not have_tag("a.nickname")
   21.79 +  end
   21.80 +  
   21.81 +  it "should have some class if you tell it to" do
   21.82 +    result = link_to_signin_with_IP(:class => 'foo bar')
   21.83 +    result.should have_tag("a.foo")
   21.84 +    result.should have_tag("a.bar")
   21.85 +  end
   21.86 +end
   21.87 +
   21.88 +describe "<%= model_controller_class_name %>Helper.link_to_current_<%= file_name %>, When logged in" do
   21.89 +  fixtures :<%= table_name %>
   21.90 +  include AuthenticatedTestHelper
   21.91 +  before do
   21.92 +    login_as(:quentin)
   21.93 +  end
   21.94 +
   21.95 +  it "should link to the given <%= file_name %>" do
   21.96 +    link_to_current_<%= file_name %>().should have_tag("a[href='/<%= table_name %>/1']")
   21.97 +  end
   21.98 +
   21.99 +  it "should use given link text if :content_text is specified" do
  21.100 +    link_to_current_user(:content_text => 'Hello there!').should have_tag("a", 'Hello there!')
  21.101 +  end
  21.102 +
  21.103 +  it "should use the login as link text with no :content_method specified" do
  21.104 +    link_to_current_user().should have_tag("a", 'quentin')
  21.105 +  end
  21.106 +
  21.107 +  it "should use the name as link text with :content_method => :name" do
  21.108 +    link_to_current_user(:content_method => :name).should have_tag("a", 'Quentin')
  21.109 +  end
  21.110 +
  21.111 +  it "should use the login as title with no :title_method specified" do
  21.112 +    link_to_current_user().should have_tag("a[title='quentin']")
  21.113 +  end
  21.114 +
  21.115 +  it "should use the name as link title with :content_method => :name" do
  21.116 +    link_to_current_user(:title_method => :name).should have_tag("a[title='Quentin']")
  21.117 +  end
  21.118 +
  21.119 +  it "should have nickname as a class" do
  21.120 +    link_to_current_user().should have_tag("a.nickname")
  21.121 +  end
  21.122 +
  21.123 +  it "should take other classes and no longer have the nickname class" do
  21.124 +    result = link_to_current_user(:class => 'foo bar')
  21.125 +    result.should have_tag("a.foo")
  21.126 +    result.should have_tag("a.bar")
  21.127 +  end
  21.128 +end
  21.129 +
  21.130 +
  21.131 +
  21.132 +describe "<%= model_controller_class_name %>Helper.link_to_current_user, When logged out" do
  21.133 +  include AuthenticatedTestHelper
  21.134 +  before do
  21.135 +  end
  21.136 +
  21.137 +  it "should link to the signin_path" do
  21.138 +    link_to_current_user().should have_tag("a[href='/signin']")
  21.139 +  end
  21.140 +
  21.141 +  it "should use given link text if :content_text is specified" do
  21.142 +    link_to_current_user(:content_text => 'Hello there!').should have_tag("a", 'Hello there!')
  21.143 +  end
  21.144 +
  21.145 +  it "should use the IP address as link text with no :content_method specified" do
  21.146 +    link_to_current_user().should have_tag("a", '0.0.0.0')
  21.147 +  end
  21.148 +
  21.149 +  it "should use the ip address as title" do
  21.150 +    link_to_current_user().should have_tag("a[title='0.0.0.0']")
  21.151 +  end
  21.152 +
  21.153 +  it "should by default be like school in summer and have no class" do
  21.154 +    link_to_current_user().should_not have_tag("a.nickname")
  21.155 +  end
  21.156 +
  21.157 +  it "should have some class if you tell it to" do
  21.158 +    result = link_to_current_user(:class => 'foo bar')
  21.159 +    result.should have_tag("a.foo")
  21.160 +    result.should have_tag("a.bar")
  21.161 +  end
  21.162 +end
    22.1 new file mode 100644
    22.2 --- /dev/null
    22.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/observer.rb
    22.4 @@ -0,0 +1,11 @@
    22.5 +class <%= class_name %>Observer < ActiveRecord::Observer
    22.6 +  def after_create(<%= file_name %>)
    22.7 +    <%= class_name %>Mailer.deliver_signup_notification(<%= file_name %>)
    22.8 +  end
    22.9 +
   22.10 +  def after_save(<%= file_name %>)
   22.11 +  <% if options[:include_activation] %>
   22.12 +    <%= class_name %>Mailer.deliver_activation(<%= file_name %>) if <%= file_name %>.recently_activated?
   22.13 +  <% end %>
   22.14 +  end
   22.15 +end
    23.1 new file mode 100644
    23.2 --- /dev/null
    23.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/signup.html.erb
    23.4 @@ -0,0 +1,19 @@
    23.5 +<h1>Sign up as a new user</h1>
    23.6 +<%% @<%= file_name %>.password = @<%= file_name %>.password_confirmation = nil %>
    23.7 +
    23.8 +<%%= error_messages_for :<%= file_name %> %>
    23.9 +<%% form_for :<%= file_name %>, :url => <%= model_controller_routing_name %>_path do |f| -%>
   23.10 +<p><%%= label_tag 'login' %><br/>
   23.11 +<%%= f.text_field :login %></p>
   23.12 +
   23.13 +<p><%%= label_tag 'email' %><br/>
   23.14 +<%%= f.text_field :email %></p>
   23.15 +
   23.16 +<p><%%= label_tag 'password' %><br/>
   23.17 +<%%= f.password_field :password %></p>
   23.18 +
   23.19 +<p><%%= label_tag 'password_confirmation', 'Confirm Password' %><br/>
   23.20 +<%%= f.password_field :password_confirmation %></p>
   23.21 +
   23.22 +<p><%%= submit_tag 'Sign up' %></p>
   23.23 +<%% end -%>
    24.1 new file mode 100644
    24.2 --- /dev/null
    24.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/signup_notification.erb
    24.4 @@ -0,0 +1,8 @@
    24.5 +Your account has been created.
    24.6 +
    24.7 +  Username: <%%=h @<%= file_name %>.login %>
    24.8 +  Password: <%%=h @<%= file_name %>.password %>
    24.9 +
   24.10 +Visit this url to activate your account:
   24.11 +
   24.12 +  <%%=h @url %>
    25.1 new file mode 100644
    25.2 --- /dev/null
    25.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/site_keys.rb
    25.4 @@ -0,0 +1,38 @@
    25.5 +
    25.6 +# A Site key gives additional protection against a dictionary attack if your
    25.7 +# DB is ever compromised.  With no site key, we store
    25.8 +#   DB_password = hash(user_password, DB_user_salt)
    25.9 +# If your database were to be compromised you'd be vulnerable to a dictionary
   25.10 +# attack on all your stupid users' passwords.  With a site key, we store
   25.11 +#   DB_password = hash(user_password, DB_user_salt, Code_site_key)
   25.12 +# That means an attacker needs access to both your site's code *and* its
   25.13 +# database to mount an "offline dictionary attack.":http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/web-authentication.html
   25.14 +# 
   25.15 +# It's probably of minor importance, but recommended by best practices: 'defense
   25.16 +# in depth'.  Needless to say, if you upload this to github or the youtubes or
   25.17 +# otherwise place it in public view you'll kinda defeat the point.  Your users'
   25.18 +# passwords are still secure, and the world won't end, but defense_in_depth -= 1.
   25.19 +# 
   25.20 +# Please note: if you change this, all the passwords will be invalidated, so DO
   25.21 +# keep it someplace secure.  Use the random value given or type in the lyrics to
   25.22 +# your favorite Jay-Z song or something; any moderately long, unpredictable text.
   25.23 +REST_AUTH_SITE_KEY         = '<%= $rest_auth_site_key_from_generator %>'
   25.24 +  
   25.25 +# Repeated applications of the hash make brute force (even with a compromised
   25.26 +# database and site key) harder, and scale with Moore's law.
   25.27 +#
   25.28 +#   bq. "To squeeze the most security out of a limited-entropy password or
   25.29 +#   passphrase, we can use two techniques [salting and stretching]... that are
   25.30 +#   so simple and obvious that they should be used in every password system.
   25.31 +#   There is really no excuse not to use them." http://tinyurl.com/37lb73
   25.32 +#   Practical Security (Ferguson & Scheier) p350
   25.33 +# 
   25.34 +# A modest 10 foldings (the default here) adds 3ms.  This makes brute forcing 10
   25.35 +# times harder, while reducing an app that otherwise serves 100 reqs/s to 78 signin
   25.36 +# reqs/s, an app that does 10reqs/s to 9.7 reqs/s
   25.37 +# 
   25.38 +# More:
   25.39 +# * http://www.owasp.org/index.php/Hashing_Java
   25.40 +# * "An Illustrated Guide to Cryptographic Hashes":http://www.unixwiz.net/techtips/iguide-crypto-hashes.html
   25.41 +
   25.42 +REST_AUTH_DIGEST_STRETCHES = <%= $rest_auth_digest_stretches_from_generator %>
    26.1 new file mode 100644
    26.2 --- /dev/null
    26.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/access_control_spec.rb
    26.4 @@ -0,0 +1,90 @@
    26.5 +require File.dirname(__FILE__) + '<%= ('/..'*controller_class_nesting_depth) + '/../spec_helper' %>'
    26.6 +  # Be sure to include AuthenticatedTestHelper in spec/spec_helper.rb instead
    26.7 +# Then, you can remove it from this and the units test.
    26.8 +include AuthenticatedTestHelper
    26.9 +
   26.10 +#
   26.11 +# A test controller with and without access controls
   26.12 +#
   26.13 +class AccessControlTestController < ApplicationController
   26.14 +  before_filter :login_required, :only => :login_is_required
   26.15 +  def login_is_required
   26.16 +    respond_to do |format|
   26.17 +      @foo = { 'success' => params[:format]||'no fmt given'}
   26.18 +      format.html do render :text => "success"             end
   26.19 +      format.xml  do render :xml  => @foo, :status => :ok  end
   26.20 +      format.json do render :json => @foo, :status => :ok  end
   26.21 +    end
   26.22 +  end
   26.23 +  def login_not_required
   26.24 +    respond_to do |format|
   26.25 +      @foo = { 'success' => params[:format]||'no fmt given'}
   26.26 +      format.html do render :text => "success"             end
   26.27 +      format.xml  do render :xml  => @foo, :status => :ok  end
   26.28 +      format.json do render :json => @foo, :status => :ok  end
   26.29 +    end
   26.30 +  end
   26.31 +end
   26.32 +
   26.33 +#
   26.34 +# Access Control
   26.35 +#
   26.36 +
   26.37 +ACCESS_CONTROL_FORMATS = [
   26.38 +  ['',     "success"],
   26.39 +  ['xml',  "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<hash>\n  <success>xml</success>\n</hash>\n"],
   26.40 +  ['json', "{\"success\": \"json\"}"],]
   26.41 +ACCESS_CONTROL_AM_I_LOGGED_IN = [
   26.42 +  [:i_am_logged_in,     :quentin],
   26.43 +  [:i_am_not_logged_in, nil],]
   26.44 +ACCESS_CONTROL_IS_LOGIN_REQD = [
   26.45 +  :login_not_required,
   26.46 +  :login_is_required,]
   26.47 +
   26.48 +describe AccessControlTestController do
   26.49 +  fixtures        :<%= table_name %>
   26.50 +  before do
   26.51 +    # is there a better way to do this?
   26.52 +    ActionController::Routing::Routes.add_route '/login_is_required',           :controller => 'access_control_test',   :action => 'login_is_required'
   26.53 +    ActionController::Routing::Routes.add_route '/login_not_required',          :controller => 'access_control_test',   :action => 'login_not_required'
   26.54 +  end
   26.55 +
   26.56 +  ACCESS_CONTROL_FORMATS.each do |format, success_text|
   26.57 +    ACCESS_CONTROL_AM_I_LOGGED_IN.each do |logged_in_status, <%= file_name %>_login|
   26.58 +      ACCESS_CONTROL_IS_LOGIN_REQD.each do |login_reqd_status|
   26.59 +        describe "requesting #{format.blank? ? 'html' : format}; #{logged_in_status.to_s.humanize} and #{login_reqd_status.to_s.humanize}" do
   26.60 +          before do
   26.61 +            logout_keeping_session!
   26.62 +            @<%= file_name %> = format.blank? ? login_as(<%= file_name %>_login) : authorize_as(<%= file_name %>_login)
   26.63 +            get login_reqd_status.to_s, :format => format
   26.64 +          end
   26.65 +
   26.66 +          if ((login_reqd_status == :login_not_required) ||
   26.67 +              (login_reqd_status == :login_is_required && logged_in_status == :i_am_logged_in))
   26.68 +            it "succeeds" do
   26.69 +              response.should have_text(success_text)
   26.70 +              response.code.to_s.should == '200'
   26.71 +            end
   26.72 +
   26.73 +          elsif (login_reqd_status == :login_is_required && logged_in_status == :i_am_not_logged_in)
   26.74 +            if ['html', ''].include? format
   26.75 +              it "redirects me to the log in page" do
   26.76 +                response.should redirect_to('/<%= controller_routing_path %>/new')
   26.77 +              end
   26.78 +            else
   26.79 +              it "returns 'Access denied' and a 406 (Access Denied) status code" do
   26.80 +                response.should have_text("HTTP Basic: Access denied.\n")
   26.81 +                response.code.to_s.should == '401'
   26.82 +              end
   26.83 +            end
   26.84 +
   26.85 +          else
   26.86 +            warn "Oops no case for #{format} and #{logged_in_status.to_s.humanize} and #{login_reqd_status.to_s.humanize}"
   26.87 +          end
   26.88 +        end # describe
   26.89 +
   26.90 +      end
   26.91 +    end
   26.92 +  end # cases
   26.93 +
   26.94 +end
    27.1 new file mode 100644
    27.2 --- /dev/null
    27.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/authenticated_system_spec.rb
    27.4 @@ -0,0 +1,102 @@
    27.5 +require File.dirname(__FILE__) + '<%= ('/..'*controller_class_nesting_depth) + '/../spec_helper' %>'
    27.6 +
    27.7 +# Be sure to include AuthenticatedTestHelper in spec/spec_helper.rb instead
    27.8 +# Then, you can remove it from this and the units test.
    27.9 +include AuthenticatedTestHelper
   27.10 +include AuthenticatedSystem
   27.11 +def action_name() end
   27.12 +
   27.13 +describe <%= controller_class_name %>Controller do
   27.14 +  fixtures :<%= table_name %>
   27.15 +  
   27.16 +  before do
   27.17 +    # FIXME -- <%= controller_file_name %> controller not testing xml logins 
   27.18 +    stub!(:authenticate_with_http_basic).and_return nil
   27.19 +  end    
   27.20 +  describe "logout_killing_session!" do
   27.21 +    before do
   27.22 +      login_as :quentin
   27.23 +      stub!(:reset_session)
   27.24 +    end
   27.25 +    it 'resets the session'         do should_receive(:reset_session);         logout_killing_session! end
   27.26 +    it 'kills my auth_token cookie' do should_receive(:kill_remember_cookie!); logout_killing_session! end
   27.27 +    it 'nils the current <%= file_name %>'      do logout_killing_session!; current_<%= file_name %>.should be_nil end
   27.28 +    it 'kills :<%= file_name %>_id session' do
   27.29 +      session.stub!(:[]=)
   27.30 +      session.should_receive(:[]=).with(:<%= file_name %>_id, nil).at_least(:once)
   27.31 +      logout_killing_session!
   27.32 +    end
   27.33 +    it 'forgets me' do    
   27.34 +      current_<%= file_name %>.remember_me
   27.35 +      current_<%= file_name %>.remember_token.should_not be_nil; current_<%= file_name %>.remember_token_expires_at.should_not be_nil
   27.36 +      <%= class_name %>.find(1).remember_token.should_not be_nil; <%= class_name %>.find(1).remember_token_expires_at.should_not be_nil
   27.37 +      logout_killing_session!
   27.38 +      <%= class_name %>.find(1).remember_token.should     be_nil; <%= class_name %>.find(1).remember_token_expires_at.should     be_nil
   27.39 +    end
   27.40 +  end
   27.41 +
   27.42 +  describe "logout_keeping_session!" do
   27.43 +    before do
   27.44 +      login_as :quentin
   27.45 +      stub!(:reset_session)
   27.46 +    end
   27.47 +    it 'does not reset the session' do should_not_receive(:reset_session);   logout_keeping_session! end
   27.48 +    it 'kills my auth_token cookie' do should_receive(:kill_remember_cookie!); logout_keeping_session! end
   27.49 +    it 'nils the current <%= file_name %>'      do logout_keeping_session!; current_<%= file_name %>.should be_nil end
   27.50 +    it 'kills :<%= file_name %>_id session' do
   27.51 +      session.stub!(:[]=)
   27.52 +      session.should_receive(:[]=).with(:<%= file_name %>_id, nil).at_least(:once)
   27.53 +      logout_keeping_session!
   27.54 +    end
   27.55 +    it 'forgets me' do    
   27.56 +      current_<%= file_name %>.remember_me
   27.57 +      current_<%= file_name %>.remember_token.should_not be_nil; current_<%= file_name %>.remember_token_expires_at.should_not be_nil
   27.58 +      <%= class_name %>.find(1).remember_token.should_not be_nil; <%= class_name %>.find(1).remember_token_expires_at.should_not be_nil
   27.59 +      logout_keeping_session!
   27.60 +      <%= class_name %>.find(1).remember_token.should     be_nil; <%= class_name %>.find(1).remember_token_expires_at.should     be_nil
   27.61 +    end
   27.62 +  end
   27.63 +  
   27.64 +  describe 'When logged out' do 
   27.65 +    it "should not be authorized?" do
   27.66 +      authorized?().should be_false
   27.67 +    end    
   27.68 +  end
   27.69 +
   27.70 +  #
   27.71 +  # Cookie Login
   27.72 +  #
   27.73 +  describe "Logging in by cookie" do
   27.74 +    def set_remember_token token, time
   27.75 +      @<%= file_name %>[:remember_token]            = token; 
   27.76 +      @<%= file_name %>[:remember_token_expires_at] = time
   27.77 +      @<%= file_name %>.save!
   27.78 +    end    
   27.79 +    before do 
   27.80 +      @<%= file_name %> = <%= class_name %>.find(:first); 
   27.81 +      set_remember_token 'hello!', 5.minutes.from_now
   27.82 +    end    
   27.83 +    it 'logs in with cookie' do
   27.84 +      stub!(:cookies).and_return({ :auth_token => 'hello!' })
   27.85 +      logged_in?.should be_true
   27.86 +    end
   27.87 +    
   27.88 +    it 'fails cookie login with bad cookie' do
   27.89 +      should_receive(:cookies).at_least(:once).and_return({ :auth_token => 'i_haxxor_joo' })
   27.90 +      logged_in?.should_not be_true
   27.91 +    end
   27.92 +    
   27.93 +    it 'fails cookie login with no cookie' do
   27.94 +      set_remember_token nil, nil
   27.95 +      should_receive(:cookies).at_least(:once).and_return({ })
   27.96 +      logged_in?.should_not be_true
   27.97 +    end
   27.98 +    
   27.99 +    it 'fails expired cookie login' do
  27.100 +      set_remember_token 'hello!', 5.minutes.ago
  27.101 +      stub!(:cookies).and_return({ :auth_token => 'hello!' })
  27.102 +      logged_in?.should_not be_true
  27.103 +    end
  27.104 +  end
  27.105 +  
  27.106 +end
    28.1 new file mode 100644
    28.2 --- /dev/null
    28.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/sessions_controller_spec.rb
    28.4 @@ -0,0 +1,139 @@
    28.5 +require File.dirname(__FILE__) + '<%= ('/..'*controller_class_nesting_depth) + '/../spec_helper' %>'
    28.6 +
    28.7 +# Be sure to include AuthenticatedTestHelper in spec/spec_helper.rb instead
    28.8 +# Then, you can remove it from this and the units test.
    28.9 +include AuthenticatedTestHelper
   28.10 +
   28.11 +describe <%= controller_class_name %>Controller do
   28.12 +  fixtures        :<%= table_name %>
   28.13 +  before do 
   28.14 +    @<%= file_name %>  = mock_<%= file_name %>
   28.15 +    @login_params = { :login => 'quentin', :password => 'test' }
   28.16 +    <%= class_name %>.stub!(:authenticate).with(@login_params[:login], @login_params[:password]).and_return(@<%= file_name %>)
   28.17 +  end
   28.18 +  def do_create
   28.19 +    post :create, @login_params
   28.20 +  end
   28.21 +  describe "on successful login," do
   28.22 +    [ [:nil,       nil,            nil],
   28.23 +      [:expired,   'valid_token',  15.minutes.ago],
   28.24 +      [:different, 'i_haxxor_joo', 15.minutes.from_now], 
   28.25 +      [:valid,     'valid_token',  15.minutes.from_now]
   28.26 +        ].each do |has_request_token, token_value, token_expiry|
   28.27 +      [ true, false ].each do |want_remember_me|
   28.28 +        describe "my request cookie token is #{has_request_token.to_s}," do
   28.29 +          describe "and ask #{want_remember_me ? 'to' : 'not to'} be remembered" do 
   28.30 +            before do
   28.31 +              @ccookies = mock('cookies')
   28.32 +              controller.stub!(:cookies).and_return(@ccookies)
   28.33 +              @ccookies.stub!(:[]).with(:auth_token).and_return(token_value)
   28.34 +              @ccookies.stub!(:delete).with(:auth_token)
   28.35 +              @ccookies.stub!(:[]=)
   28.36 +              @<%= file_name %>.stub!(:remember_me) 
   28.37 +              @<%= file_name %>.stub!(:refresh_token) 
   28.38 +              @<%= file_name %>.stub!(:forget_me)
   28.39 +              @<%= file_name %>.stub!(:remember_token).and_return(token_value) 
   28.40 +              @<%= file_name %>.stub!(:remember_token_expires_at).and_return(token_expiry)
   28.41 +              @<%= file_name %>.stub!(:remember_token?).and_return(has_request_token == :valid)
   28.42 +              if want_remember_me
   28.43 +                @login_params[:remember_me] = '1'
   28.44 +              else 
   28.45 +                @login_params[:remember_me] = '0'
   28.46 +              end
   28.47 +            end
   28.48 +            it "kills existing login"        do controller.should_receive(:logout_keeping_session!); do_create; end    
   28.49 +            it "authorizes me"               do do_create; controller.send(:authorized?).should be_true;   end    
   28.50 +            it "logs me in"                  do do_create; controller.send(:logged_in?).should  be_true  end    
   28.51 +            it "greets me nicely"            do do_create; response.flash[:notice].should =~ /success/i   end
   28.52 +            it "sets/resets/expires cookie"  do controller.should_receive(:handle_remember_cookie!).with(want_remember_me); do_create end
   28.53 +            it "sends a cookie"              do controller.should_receive(:send_remember_cookie!);  do_create end
   28.54 +            it 'redirects to the home page'  do do_create; response.should redirect_to('/')   end
   28.55 +            it "does not reset my session"   do controller.should_not_receive(:reset_session).and_return nil; do_create end # change if you uncomment the reset_session path
   28.56 +            if (has_request_token == :valid)
   28.57 +              it 'does not make new token'   do @<%= file_name %>.should_not_receive(:remember_me);   do_create end
   28.58 +              it 'does refresh token'        do @<%= file_name %>.should_receive(:refresh_token);     do_create end 
   28.59 +              it "sets an auth cookie"       do do_create;  end
   28.60 +            else
   28.61 +              if want_remember_me
   28.62 +                it 'makes a new token'       do @<%= file_name %>.should_receive(:remember_me);       do_create end 
   28.63 +                it "does not refresh token"  do @<%= file_name %>.should_not_receive(:refresh_token); do_create end
   28.64 +                it "sets an auth cookie"       do do_create;  end
   28.65 +              else 
   28.66 +                it 'does not make new token' do @<%= file_name %>.should_not_receive(:remember_me);   do_create end
   28.67 +                it 'does not refresh token'  do @<%= file_name %>.should_not_receive(:refresh_token); do_create end 
   28.68 +                it 'kills user token'        do @<%= file_name %>.should_receive(:forget_me);         do_create end 
   28.69 +              end
   28.70 +            end
   28.71 +          end # inner describe
   28.72 +        end
   28.73 +      end
   28.74 +    end
   28.75 +  end
   28.76 +  
   28.77 +  describe "on failed login" do
   28.78 +    before do
   28.79 +      <%= class_name %>.should_receive(:authenticate).with(anything(), anything()).and_return(nil)
   28.80 +      login_as :quentin
   28.81 +    end
   28.82 +    it 'logs out keeping session'   do controller.should_receive(:logout_keeping_session!); do_create end
   28.83 +    it 'flashes an error'           do do_create; flash[:error].should =~ /Couldn't log you in as 'quentin'/ end
   28.84 +    it 'renders the log in page'    do do_create; response.should render_template('new')  end
   28.85 +    it "doesn't log me in"          do do_create; controller.send(:logged_in?).should == false end
   28.86 +    it "doesn't send password back" do 
   28.87 +      @login_params[:password] = 'FROBNOZZ'
   28.88 +      do_create
   28.89 +      response.should_not have_text(/FROBNOZZ/i)
   28.90 +    end
   28.91 +  end
   28.92 +
   28.93 +  describe "on signout" do
   28.94 +    def do_destroy
   28.95 +      get :destroy
   28.96 +    end
   28.97 +    before do 
   28.98 +      login_as :quentin
   28.99 +    end
  28.100 +    it 'logs me out'                   do controller.should_receive(:logout_killing_session!); do_destroy end
  28.101 +    it 'redirects me to the home page' do do_destroy; response.should be_redirect     end
  28.102 +  end
  28.103 +  
  28.104 +end
  28.105 +
  28.106 +describe <%= controller_class_name %>Controller do
  28.107 +  describe "route generation" do
  28.108 +    it "should route the new <%= controller_controller_name %> action correctly" do
  28.109 +      route_for(:controller => '<%= controller_controller_name %>', :action => 'new').should == "/login"
  28.110 +    end
  28.111 +    it "should route the create <%= controller_controller_name %> correctly" do
  28.112 +      route_for(:controller => '<%= controller_controller_name %>', :action => 'create').should == "/<%= controller_routing_path %>"
  28.113 +    end
  28.114 +    it "should route the destroy <%= controller_controller_name %> action correctly" do
  28.115 +      route_for(:controller => '<%= controller_controller_name %>', :action => 'destroy').should == "/logout"
  28.116 +    end
  28.117 +  end
  28.118 +  
  28.119 +  describe "route recognition" do
  28.120 +    it "should generate params from GET /login correctly" do
  28.121 +      params_from(:get, '/login').should == {:controller => '<%= controller_controller_name %>', :action => 'new'}
  28.122 +    end
  28.123 +    it "should generate params from POST /<%= controller_routing_path %> correctly" do
  28.124 +      params_from(:post, '/<%= controller_routing_path %>').should == {:controller => '<%= controller_controller_name %>', :action => 'create'}
  28.125 +    end
  28.126 +    it "should generate params from DELETE /<%= controller_routing_path %> correctly" do
  28.127 +      params_from(:delete, '/logout').should == {:controller => '<%= controller_controller_name %>', :action => 'destroy'}
  28.128 +    end
  28.129 +  end
  28.130 +  
  28.131 +  describe "named routing" do
  28.132 +    before(:each) do
  28.133 +      get :new
  28.134 +    end
  28.135 +    it "should route <%= controller_routing_name %>_path() correctly" do
  28.136 +      <%= controller_routing_name %>_path().should == "/<%= controller_routing_path %>"
  28.137 +    end
  28.138 +    it "should route new_<%= controller_routing_name %>_path() correctly" do
  28.139 +      new_<%= controller_routing_name %>_path().should == "/<%= controller_routing_path %>/new"
  28.140 +    end
  28.141 +  end
  28.142 +  
  28.143 +end
    29.1 new file mode 100644
    29.2 --- /dev/null
    29.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/controllers/users_controller_spec.rb
    29.4 @@ -0,0 +1,198 @@
    29.5 +require File.dirname(__FILE__) + '<%= ('/..'*model_controller_class_nesting_depth) + '/../spec_helper' %>'
    29.6 +  
    29.7 +# Be sure to include AuthenticatedTestHelper in spec/spec_helper.rb instead
    29.8 +# Then, you can remove it from this and the units test.
    29.9 +include AuthenticatedTestHelper
   29.10 +
   29.11 +describe <%= model_controller_class_name %>Controller do
   29.12 +  fixtures :<%= table_name %>
   29.13 +
   29.14 +  it 'allows signup' do
   29.15 +    lambda do
   29.16 +      create_<%= file_name %>
   29.17 +      response.should be_redirect
   29.18 +    end.should change(<%= class_name %>, :count).by(1)
   29.19 +  end
   29.20 +
   29.21 +  <% if options[:stateful] %>
   29.22 +  it 'signs up user in pending state' do
   29.23 +    create_<%= file_name %>
   29.24 +    assigns(:<%= file_name %>).reload
   29.25 +    assigns(:<%= file_name %>).should be_pending
   29.26 +  end<% end %>
   29.27 +
   29.28 +<% if options[:include_activation] -%>
   29.29 +  it 'signs up user with activation code' do
   29.30 +    create_<%= file_name %>
   29.31 +    assigns(:<%= file_name %>).reload
   29.32 +    assigns(:<%= file_name %>).activation_code.should_not be_nil
   29.33 +  end<% end -%>
   29.34 +
   29.35 +  it 'requires login on signup' do
   29.36 +    lambda do
   29.37 +      create_<%= file_name %>(:login => nil)
   29.38 +      assigns[:<%= file_name %>].errors.on(:login).should_not be_nil
   29.39 +      response.should be_success
   29.40 +    end.should_not change(<%= class_name %>, :count)
   29.41 +  end
   29.42 +  
   29.43 +  it 'requires password on signup' do
   29.44 +    lambda do
   29.45 +      create_<%= file_name %>(:password => nil)
   29.46 +      assigns[:<%= file_name %>].errors.on(:password).should_not be_nil
   29.47 +      response.should be_success
   29.48 +    end.should_not change(<%= class_name %>, :count)
   29.49 +  end
   29.50 +  
   29.51 +  it 'requires password confirmation on signup' do
   29.52 +    lambda do
   29.53 +      create_<%= file_name %>(:password_confirmation => nil)
   29.54 +      assigns[:<%= file_name %>].errors.on(:password_confirmation).should_not be_nil
   29.55 +      response.should be_success
   29.56 +    end.should_not change(<%= class_name %>, :count)
   29.57 +  end
   29.58 +
   29.59 +  it 'requires email on signup' do
   29.60 +    lambda do
   29.61 +      create_<%= file_name %>(:email => nil)
   29.62 +      assigns[:<%= file_name %>].errors.on(:email).should_not be_nil
   29.63 +      response.should be_success
   29.64 +    end.should_not change(<%= class_name %>, :count)
   29.65 +  end
   29.66 +  
   29.67 +  <% if options[:include_activation] %>
   29.68 +  it 'activates user' do
   29.69 +    <%= class_name %>.authenticate('aaron', 'monkey').should be_nil
   29.70 +    get :activate, :activation_code => <%= table_name %>(:aaron).activation_code
   29.71 +    response.should redirect_to('/login')
   29.72 +    flash[:notice].should_not be_nil
   29.73 +    flash[:error ].should     be_nil
   29.74 +    <%= class_name %>.authenticate('aaron', 'monkey').should == <%= table_name %>(:aaron)
   29.75 +  end
   29.76 +  
   29.77 +  it 'does not activate user without key' do
   29.78 +    get :activate
   29.79 +    flash[:notice].should     be_nil
   29.80 +    flash[:error ].should_not be_nil
   29.81 +  end
   29.82 +  
   29.83 +  it 'does not activate user with blank key' do
   29.84 +    get :activate, :activation_code => ''
   29.85 +    flash[:notice].should     be_nil
   29.86 +    flash[:error ].should_not be_nil
   29.87 +  end
   29.88 +  
   29.89 +  it 'does not activate user with bogus key' do
   29.90 +    get :activate, :activation_code => 'i_haxxor_joo'
   29.91 +    flash[:notice].should     be_nil
   29.92 +    flash[:error ].should_not be_nil
   29.93 +  end<% end %>
   29.94 +  
   29.95 +  def create_<%= file_name %>(options = {})
   29.96 +    post :create, :<%= file_name %> => { :login => 'quire', :email => 'quire@example.com',
   29.97 +      :password => 'quire69', :password_confirmation => 'quire69' }.merge(options)
   29.98 +  end
   29.99 +end
  29.100 +
  29.101 +describe <%= model_controller_class_name %>Controller do
  29.102 +  describe "route generation" do
  29.103 +    it "should route <%= model_controller_controller_name %>'s 'index' action correctly" do
  29.104 +      route_for(:controller => '<%= model_controller_controller_name %>', :action => 'index').should == "/<%= model_controller_routing_path %>"
  29.105 +    end
  29.106 +    
  29.107 +    it "should route <%= model_controller_controller_name %>'s 'new' action correctly" do
  29.108 +      route_for(:controller => '<%= model_controller_controller_name %>', :action => 'new').should == "/signup"
  29.109 +    end
  29.110 +    
  29.111 +    it "should route {:controller => '<%= model_controller_controller_name %>', :action => 'create'} correctly" do
  29.112 +      route_for(:controller => '<%= model_controller_controller_name %>', :action => 'create').should == "/register"
  29.113 +    end
  29.114 +    
  29.115 +    it "should route <%= model_controller_controller_name %>'s 'show' action correctly" do
  29.116 +      route_for(:controller => '<%= model_controller_controller_name %>', :action => 'show', :id => '1').should == "/<%= model_controller_routing_path %>/1"
  29.117 +    end
  29.118 +    
  29.119 +    it "should route <%= model_controller_controller_name %>'s 'edit' action correctly" do
  29.120 +      route_for(:controller => '<%= model_controller_controller_name %>', :action => 'edit', :id => '1').should == "/<%= model_controller_routing_path %>/1/edit"
  29.121 +    end
  29.122 +    
  29.123 +    it "should route <%= model_controller_controller_name %>'s 'update' action correctly" do
  29.124 +      route_for(:controller => '<%= model_controller_controller_name %>', :action => 'update', :id => '1').should == "/<%= model_controller_routing_path %>/1"
  29.125 +    end
  29.126 +    
  29.127 +    it "should route <%= model_controller_controller_name %>'s 'destroy' action correctly" do
  29.128 +      route_for(:controller => '<%= model_controller_controller_name %>', :action => 'destroy', :id => '1').should == "/<%= model_controller_routing_path %>/1"
  29.129 +    end
  29.130 +  end
  29.131 +  
  29.132 +  describe "route recognition" do
  29.133 +    it "should generate params for <%= model_controller_controller_name %>'s index action from GET /<%= model_controller_routing_path %>" do
  29.134 +      params_from(:get, '/<%= model_controller_routing_path %>').should == {:controller => '<%= model_controller_controller_name %>', :action => 'index'}
  29.135 +      params_from(:get, '/<%= model_controller_routing_path %>.xml').should == {:controller => '<%= model_controller_controller_name %>', :action => 'index', :format => 'xml'}
  29.136 +      params_from(:get, '/<%= model_controller_routing_path %>.json').should == {:controller => '<%= model_controller_controller_name %>', :action => 'index', :format => 'json'}
  29.137 +    end
  29.138 +    
  29.139 +    it "should generate params for <%= model_controller_controller_name %>'s new action from GET /<%= model_controller_routing_path %>" do
  29.140 +      params_from(:get, '/<%= model_controller_routing_path %>/new').should == {:controller => '<%= model_controller_controller_name %>', :action => 'new'}
  29.141 +      params_from(:get, '/<%= model_controller_routing_path %>/new.xml').should == {:controller => '<%= model_controller_controller_name %>', :action => 'new', :format => 'xml'}
  29.142 +      params_from(:get, '/<%= model_controller_routing_path %>/new.json').should == {:controller => '<%= model_controller_controller_name %>', :action => 'new', :format => 'json'}
  29.143 +    end
  29.144 +    
  29.145 +    it "should generate params for <%= model_controller_controller_name %>'s create action from POST /<%= model_controller_routing_path %>" do
  29.146 +      params_from(:post, '/<%= model_controller_routing_path %>').should == {:controller => '<%= model_controller_controller_name %>', :action => 'create'}
  29.147 +      params_from(:post, '/<%= model_controller_routing_path %>.xml').should == {:controller => '<%= model_controller_controller_name %>', :action => 'create', :format => 'xml'}
  29.148 +      params_from(:post, '/<%= model_controller_routing_path %>.json').should == {:controller => '<%= model_controller_controller_name %>', :action => 'create', :format => 'json'}
  29.149 +    end
  29.150 +    
  29.151 +    it "should generate params for <%= model_controller_controller_name %>'s show action from GET /<%= model_controller_routing_path %>/1" do
  29.152 +      params_from(:get , '/<%= model_controller_routing_path %>/1').should == {:controller => '<%= model_controller_controller_name %>', :action => 'show', :id => '1'}
  29.153 +      params_from(:get , '/<%= model_controller_routing_path %>/1.xml').should == {:controller => '<%= model_controller_controller_name %>', :action => 'show', :id => '1', :format => 'xml'}
  29.154 +      params_from(:get , '/<%= model_controller_routing_path %>/1.json').should == {:controller => '<%= model_controller_controller_name %>', :action => 'show', :id => '1', :format => 'json'}
  29.155 +    end
  29.156 +    
  29.157 +    it "should generate params for <%= model_controller_controller_name %>'s edit action from GET /<%= model_controller_routing_path %>/1/edit" do
  29.158 +      params_from(:get , '/<%= model_controller_routing_path %>/1/edit').should == {:controller => '<%= model_controller_controller_name %>', :action => 'edit', :id => '1'}
  29.159 +    end
  29.160 +    
  29.161 +    it "should generate params {:controller => '<%= model_controller_controller_name %>', :action => update', :id => '1'} from PUT /<%= model_controller_routing_path %>/1" do
  29.162 +      params_from(:put , '/<%= model_controller_routing_path %>/1').should == {:controller => '<%= model_controller_controller_name %>', :action => 'update', :id => '1'}
  29.163 +      params_from(:put , '/<%= model_controller_routing_path %>/1.xml').should == {:controller => '<%= model_controller_controller_name %>', :action => 'update', :id => '1', :format => 'xml'}
  29.164 +      params_from(:put , '/<%= model_controller_routing_path %>/1.json').should == {:controller => '<%= model_controller_controller_name %>', :action => 'update', :id => '1', :format => 'json'}
  29.165 +    end
  29.166 +    
  29.167 +    it "should generate params for <%= model_controller_controller_name %>'s destroy action from DELETE /<%= model_controller_routing_path %>/1" do
  29.168 +      params_from(:delete, '/<%= model_controller_routing_path %>/1').should == {:controller => '<%= model_controller_controller_name %>', :action => 'destroy', :id => '1'}
  29.169 +      params_from(:delete, '/<%= model_controller_routing_path %>/1.xml').should == {:controller => '<%= model_controller_controller_name %>', :action => 'destroy', :id => '1', :format => 'xml'}
  29.170 +      params_from(:delete, '/<%= model_controller_routing_path %>/1.json').should == {:controller => '<%= model_controller_controller_name %>', :action => 'destroy', :id => '1', :format => 'json'}
  29.171 +    end
  29.172 +  end
  29.173 +  
  29.174 +  describe "named routing" do
  29.175 +    before(:each) do
  29.176 +      get :new
  29.177 +    end
  29.178 +    
  29.179 +    it "should route <%= model_controller_routing_name %>_path() to /<%= model_controller_routing_path %>" do
  29.180 +      <%= model_controller_routing_name %>_path().should == "/<%= model_controller_routing_path %>"
  29.181 +      formatted_<%= model_controller_routing_name %>_path(:format => 'xml').should == "/<%= model_controller_routing_path %>.xml"
  29.182 +      formatted_<%= model_controller_routing_name %>_path(:format => 'json').should == "/<%= model_controller_routing_path %>.json"
  29.183 +    end
  29.184 +    
  29.185 +    it "should route new_<%= model_controller_routing_name.singularize %>_path() to /<%= model_controller_routing_path %>/new" do
  29.186 +      new_<%= model_controller_routing_name.singularize %>_path().should == "/<%= model_controller_routing_path %>/new"
  29.187 +      formatted_new_<%= model_controller_routing_name.singularize %>_path(:format => 'xml').should == "/<%= model_controller_routing_path %>/new.xml"
  29.188 +      formatted_new_<%= model_controller_routing_name.singularize %>_path(:format => 'json').should == "/<%= model_controller_routing_path %>/new.json"
  29.189 +    end
  29.190 +    
  29.191 +    it "should route <%= model_controller_routing_name.singularize %>_(:id => '1') to /<%= model_controller_routing_path %>/1" do
  29.192 +      <%= model_controller_routing_name.singularize %>_path(:id => '1').should == "/<%= model_controller_routing_path %>/1"
  29.193 +      formatted_<%= model_controller_routing_name.singularize %>_path(:id => '1', :format => 'xml').should == "/<%= model_controller_routing_path %>/1.xml"
  29.194 +      formatted_<%= model_controller_routing_name.singularize %>_path(:id => '1', :format => 'json').should == "/<%= model_controller_routing_path %>/1.json"
  29.195 +    end
  29.196 +    
  29.197 +    it "should route edit_<%= model_controller_routing_name.singularize %>_path(:id => '1') to /<%= model_controller_routing_path %>/1/edit" do
  29.198 +      edit_<%= model_controller_routing_name.singularize %>_path(:id => '1').should == "/<%= model_controller_routing_path %>/1/edit"
  29.199 +    end
  29.200 +  end
  29.201 +  
  29.202 +end
    30.1 new file mode 100644
    30.2 --- /dev/null
    30.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/fixtures/users.yml
    30.4 @@ -0,0 +1,60 @@
    30.5 +<%
    30.6 +  ## this code must match that in templates/model.rb
    30.7 +  require 'digest/sha1'
    30.8 +  def make_fake_token
    30.9 +    @fake_token_counter ||= 0
   30.10 +    @fake_token_counter +=  1
   30.11 +    Digest::SHA1.hexdigest(@fake_token_counter.to_s)
   30.12 +  end
   30.13 +  salts   = (1..2).map{ make_fake_token }
   30.14 +  passwds = salts.map{ |salt| password_digest('monkey', salt) }
   30.15 +-%>
   30.16 +
   30.17 +quentin:
   30.18 +  id:                        1
   30.19 +  login:                     quentin
   30.20 +  email:                     quentin@example.com
   30.21 +  salt:                      <%= salts[0]   %> # SHA1('0')
   30.22 +  crypted_password:          <%= passwds[0] %> # 'monkey'
   30.23 +  created_at:                <%%= 5.days.ago.to_s :db  %>
   30.24 +  remember_token_expires_at: <%%= 1.days.from_now.to_s %>
   30.25 +  remember_token:            <%= make_fake_token %>
   30.26 +<% if options[:include_activation] -%>
   30.27 +  activation_code:           
   30.28 +  activated_at:              <%%= 5.days.ago.to_s :db %>
   30.29 +<% end -%>
   30.30 +<% if options[:stateful] -%>
   30.31 +  state:                     active
   30.32 +<% end -%>
   30.33 +      
   30.34 +aaron:
   30.35 +  id:                        2
   30.36 +  login:                     aaron
   30.37 +  email:                     aaron@example.com
   30.38 +  salt:                      <%= salts[1]   %> # SHA1('1')
   30.39 +  crypted_password:          <%= passwds[1] %> # 'monkey'
   30.40 +  created_at:                <%%= 1.days.ago.to_s :db %>
   30.41 +  remember_token_expires_at: 
   30.42 +  remember_token:            
   30.43 +<% if options[:include_activation] -%>
   30.44 +  activation_code:           <%= make_fake_token %>
   30.45 +  activated_at:              
   30.46 +<% end -%>
   30.47 +<% if options[:stateful] %>
   30.48 +  state:                     pending
   30.49 +<% end -%>
   30.50 +
   30.51 +
   30.52 +old_password_holder:
   30.53 +  id:                        3
   30.54 +  login:                     old_password_holder
   30.55 +  email:                     salty_dog@example.com
   30.56 +  salt:                      7e3041ebc2fc05a40c60028e2c4901a81035d3cd
   30.57 +  crypted_password:          00742970dc9e6319f8019fd54864d3ea740f04b1 # test
   30.58 +  created_at:                <%%= 1.days.ago.to_s :db %>
   30.59 +<% if options[:include_activation] %>
   30.60 +  activation_code:           
   30.61 +  activated_at:              <%%= 5.days.ago.to_s :db %>
   30.62 +<% end %>
   30.63 +<% if options[:stateful] %>
   30.64 +  state:                     active<% end %>
    31.1 new file mode 100644
    31.2 --- /dev/null
    31.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/helpers/users_helper_spec.rb
    31.4 @@ -0,0 +1,141 @@
    31.5 +require File.dirname(__FILE__) + '<%= ('/..'*model_controller_class_nesting_depth) + '/../spec_helper' %>'
    31.6 +include ApplicationHelper
    31.7 +include <%= model_controller_class_name %>Helper
    31.8 +include AuthenticatedTestHelper
    31.9 +
   31.10 +describe <%= model_controller_class_name %>Helper do
   31.11 +  before do
   31.12 +    @<%= file_name %> = mock_<%= file_name %>
   31.13 +  end
   31.14 +  
   31.15 +  describe "if_authorized" do 
   31.16 +    it "yields if authorized" do
   31.17 +      should_receive(:authorized?).with('a','r').and_return(true)
   31.18 +      if_authorized?('a','r'){|action,resource| [action,resource,'hi'] }.should == ['a','r','hi']
   31.19 +    end
   31.20 +    it "does nothing if not authorized" do
   31.21 +      should_receive(:authorized?).with('a','r').and_return(false)
   31.22 +      if_authorized?('a','r'){ 'hi' }.should be_nil
   31.23 +    end
   31.24 +  end
   31.25 +  
   31.26 +  describe "link_to_<%= file_name %>" do
   31.27 +    it "should give an error on a nil <%= file_name %>" do
   31.28 +      lambda { link_to_<%= file_name %>(nil) }.should raise_error('Invalid <%= file_name %>')
   31.29 +    end
   31.30 +    it "should link to the given <%= file_name %>" do
   31.31 +      should_receive(:<%= model_controller_routing_name.singularize %>_path).at_least(:once).and_return('/<%= model_controller_file_path %>/1')
   31.32 +      link_to_<%= file_name %>(@<%= file_name %>).should have_tag("a[href='/<%= model_controller_file_path %>/1']")
   31.33 +    end
   31.34 +    it "should use given link text if :content_text is specified" do
   31.35 +      link_to_<%= file_name %>(@<%= file_name %>, :content_text => 'Hello there!').should have_tag("a", 'Hello there!')
   31.36 +    end
   31.37 +    it "should use the login as link text with no :content_method specified" do
   31.38 +      link_to_<%= file_name %>(@<%= file_name %>).should have_tag("a", 'user_name')
   31.39 +    end
   31.40 +    it "should use the name as link text with :content_method => :name" do
   31.41 +      link_to_<%= file_name %>(@<%= file_name %>, :content_method => :name).should have_tag("a", 'U. Surname')
   31.42 +    end
   31.43 +    it "should use the login as title with no :title_method specified" do
   31.44 +      link_to_<%= file_name %>(@<%= file_name %>).should have_tag("a[title='user_name']")
   31.45 +    end
   31.46 +    it "should use the name as link title with :content_method => :name" do
   31.47 +      link_to_<%= file_name %>(@<%= file_name %>, :title_method => :name).should have_tag("a[title='U. Surname']")
   31.48 +    end
   31.49 +    it "should have nickname as a class by default" do
   31.50 +      link_to_<%= file_name %>(@<%= file_name %>).should have_tag("a.nickname")
   31.51 +    end
   31.52 +    it "should take other classes and no longer have the nickname class" do
   31.53 +      result = link_to_<%= file_name %>(@<%= file_name %>, :class => 'foo bar')
   31.54 +      result.should have_tag("a.foo")
   31.55 +      result.should have_tag("a.bar")
   31.56 +    end
   31.57 +  end
   31.58 +
   31.59 +  describe "link_to_login_with_IP" do
   31.60 +    it "should link to the login_path" do
   31.61 +      link_to_login_with_IP().should have_tag("a[href='/login']")
   31.62 +    end
   31.63 +    it "should use given link text if :content_text is specified" do
   31.64 +      link_to_login_with_IP('Hello there!').should have_tag("a", 'Hello there!')
   31.65 +    end
   31.66 +    it "should use the login as link text with no :content_method specified" do
   31.67 +      link_to_login_with_IP().should have_tag("a", '0.0.0.0')
   31.68 +    end
   31.69 +    it "should use the ip address as title" do
   31.70 +      link_to_login_with_IP().should have_tag("a[title='0.0.0.0']")
   31.71 +    end
   31.72 +    it "should by default be like school in summer and have no class" do
   31.73 +      link_to_login_with_IP().should_not have_tag("a.nickname")
   31.74 +    end
   31.75 +    it "should have some class if you tell it to" do
   31.76 +      result = link_to_login_with_IP(nil, :class => 'foo bar')
   31.77 +      result.should have_tag("a.foo")
   31.78 +      result.should have_tag("a.bar")
   31.79 +    end
   31.80 +    it "should have some class if you tell it to" do
   31.81 +      result = link_to_login_with_IP(nil, :tag => 'abbr')
   31.82 +      result.should have_tag("abbr[title='0.0.0.0']")
   31.83 +    end
   31.84 +  end
   31.85 +
   31.86 +  describe "link_to_current_<%= file_name %>, When logged in" do
   31.87 +    before do
   31.88 +      stub!(:current_<%= file_name %>).and_return(@<%= file_name %>)
   31.89 +    end
   31.90 +    it "should link to the given <%= file_name %>" do
   31.91 +      should_receive(:<%= model_controller_routing_name.singularize %>_path).at_least(:once).and_return('/<%= model_controller_file_path %>/1')
   31.92 +      link_to_current_<%= file_name %>().should have_tag("a[href='/<%= model_controller_file_path %>/1']")
   31.93 +    end
   31.94 +    it "should use given link text if :content_text is specified" do
   31.95 +      link_to_current_<%= file_name %>(:content_text => 'Hello there!').should have_tag("a", 'Hello there!')
   31.96 +    end
   31.97 +    it "should use the login as link text with no :content_method specified" do
   31.98 +      link_to_current_<%= file_name %>().should have_tag("a", 'user_name')
   31.99 +    end
  31.100 +    it "should use the name as link text with :content_method => :name" do
  31.101 +      link_to_current_<%= file_name %>(:content_method => :name).should have_tag("a", 'U. Surname')
  31.102 +    end
  31.103 +    it "should use the login as title with no :title_method specified" do
  31.104 +      link_to_current_<%= file_name %>().should have_tag("a[title='user_name']")
  31.105 +    end
  31.106 +    it "should use the name as link title with :content_method => :name" do
  31.107 +      link_to_current_<%= file_name %>(:title_method => :name).should have_tag("a[title='U. Surname']")
  31.108 +    end
  31.109 +    it "should have nickname as a class" do
  31.110 +      link_to_current_<%= file_name %>().should have_tag("a.nickname")
  31.111 +    end
  31.112 +    it "should take other classes and no longer have the nickname class" do
  31.113 +      result = link_to_current_<%= file_name %>(:class => 'foo bar')
  31.114 +      result.should have_tag("a.foo")
  31.115 +      result.should have_tag("a.bar")
  31.116 +    end
  31.117 +  end
  31.118 +
  31.119 +  describe "link_to_current_<%= file_name %>, When logged out" do
  31.120 +    before do
  31.121 +      stub!(:current_<%= file_name %>).and_return(nil)
  31.122 +    end
  31.123 +    it "should link to the login_path" do
  31.124 +      link_to_current_<%= file_name %>().should have_tag("a[href='/login']")
  31.125 +    end
  31.126 +    it "should use given link text if :content_text is specified" do
  31.127 +      link_to_current_<%= file_name %>(:content_text => 'Hello there!').should have_tag("a", 'Hello there!')
  31.128 +    end
  31.129 +    it "should use 'not signed in' as link text with no :content_method specified" do
  31.130 +      link_to_current_<%= file_name %>().should have_tag("a", 'not signed in')
  31.131 +    end
  31.132 +    it "should use the ip address as title" do
  31.133 +      link_to_current_<%= file_name %>().should have_tag("a[title='0.0.0.0']")
  31.134 +    end
  31.135 +    it "should by default be like school in summer and have no class" do
  31.136 +      link_to_current_<%= file_name %>().should_not have_tag("a.nickname")
  31.137 +    end
  31.138 +    it "should have some class if you tell it to" do
  31.139 +      result = link_to_current_<%= file_name %>(:class => 'foo bar')
  31.140 +      result.should have_tag("a.foo")
  31.141 +      result.should have_tag("a.bar")
  31.142 +    end
  31.143 +  end
  31.144 +
  31.145 +end
    32.1 new file mode 100644
    32.2 --- /dev/null
    32.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/spec/models/user_spec.rb
    32.4 @@ -0,0 +1,290 @@
    32.5 +# -*- coding: utf-8 -*-
    32.6 +require File.dirname(__FILE__) + '<%= ('/..'*model_controller_class_nesting_depth) + '/../spec_helper' %>'
    32.7 +
    32.8 +# Be sure to include AuthenticatedTestHelper in spec/spec_helper.rb instead.
    32.9 +# Then, you can remove it from this and the functional test.
   32.10 +include AuthenticatedTestHelper
   32.11 +
   32.12 +describe <%= class_name %> do
   32.13 +  fixtures :<%= table_name %>
   32.14 +
   32.15 +  describe 'being created' do
   32.16 +    before do
   32.17 +      @<%= file_name %> = nil
   32.18 +      @creating_<%= file_name %> = lambda do
   32.19 +        @<%= file_name %> = create_<%= file_name %>
   32.20 +        violated "#{@<%= file_name %>.errors.full_messages.to_sentence}" if @<%= file_name %>.new_record?
   32.21 +      end
   32.22 +    end
   32.23 +
   32.24 +    it 'increments <%= class_name %>#count' do
   32.25 +      @creating_<%= file_name %>.should change(<%= class_name %>, :count).by(1)
   32.26 +    end
   32.27 +<% if options[:include_activation] %>
   32.28 +    it 'initializes #activation_code' do
   32.29 +      @creating_<%= file_name %>.call
   32.30 +      @<%= file_name %>.reload
   32.31 +      @<%= file_name %>.activation_code.should_not be_nil
   32.32 +    end
   32.33 +<% end %><% if options[:stateful] %>
   32.34 +    it 'starts in pending state' do
   32.35 +      @creating_<%= file_name %>.call
   32.36 +      @<%= file_name %>.reload
   32.37 +      @<%= file_name %>.should be_pending
   32.38 +    end
   32.39 +<% end %>  end
   32.40 +
   32.41 +  #
   32.42 +  # Validations
   32.43 +  #
   32.44 +
   32.45 +  it 'requires login' do
   32.46 +    lambda do
   32.47 +      u = create_<%= file_name %>(:login => nil)
   32.48 +      u.errors.on(:login).should_not be_nil
   32.49 +    end.should_not change(<%= class_name %>, :count)
   32.50 +  end
   32.51 +
   32.52 +  describe 'allows legitimate logins:' do
   32.53 +    ['123', '1234567890_234567890_234567890_234567890',
   32.54 +     'hello.-_there@funnychar.com'].each do |login_str|
   32.55 +      it "'#{login_str}'" do
   32.56 +        lambda do
   32.57 +          u = create_<%= file_name %>(:login => login_str)
   32.58 +          u.errors.on(:login).should     be_nil
   32.59 +        end.should change(<%= class_name %>, :count).by(1)
   32.60 +      end
   32.61 +    end
   32.62 +  end
   32.63 +  describe 'disallows illegitimate logins:' do
   32.64 +    ['12', '1234567890_234567890_234567890_234567890_', "tab\t", "newline\n",
   32.65 +     "Iñtërnâtiônàlizætiøn hasn't happened to ruby 1.8 yet",
   32.66 +     'semicolon;', 'quote"', 'tick\'', 'backtick`', 'percent%', 'plus+', 'space '].each do |login_str|
   32.67 +      it "'#{login_str}'" do
   32.68 +        lambda do
   32.69 +          u = create_<%= file_name %>(:login => login_str)
   32.70 +          u.errors.on(:login).should_not be_nil
   32.71 +        end.should_not change(<%= class_name %>, :count)
   32.72 +      end
   32.73 +    end
   32.74 +  end
   32.75 +
   32.76 +  it 'requires password' do
   32.77 +    lambda do
   32.78 +      u = create_<%= file_name %>(:password => nil)
   32.79 +      u.errors.on(:password).should_not be_nil
   32.80 +    end.should_not change(<%= class_name %>, :count)
   32.81 +  end
   32.82 +
   32.83 +  it 'requires password confirmation' do
   32.84 +    lambda do
   32.85 +      u = create_<%= file_name %>(:password_confirmation => nil)
   32.86 +      u.errors.on(:password_confirmation).should_not be_nil
   32.87 +    end.should_not change(<%= class_name %>, :count)
   32.88 +  end
   32.89 +
   32.90 +  it 'requires email' do
   32.91 +    lambda do
   32.92 +      u = create_<%= file_name %>(:email => nil)
   32.93 +      u.errors.on(:email).should_not be_nil
   32.94 +    end.should_not change(<%= class_name %>, :count)
   32.95 +  end
   32.96 +
   32.97 +  describe 'allows legitimate emails:' do
   32.98 +    ['foo@bar.com', 'foo@newskool-tld.museum', 'foo@twoletter-tld.de', 'foo@nonexistant-tld.qq',
   32.99 +     'r@a.wk', '1234567890-234567890-234567890-234567890-234567890-234567890-234567890-234567890-234567890@gmail.com',
  32.100 +     'hello.-_there@funnychar.com', 'uucp%addr@gmail.com', 'hello+routing-str@gmail.com',
  32.101 +     'domain@can.haz.many.sub.doma.in', 'student.name@university.edu'
  32.102 +    ].each do |email_str|
  32.103 +      it "'#{email_str}'" do
  32.104 +        lambda do
  32.105 +          u = create_<%= file_name %>(:email => email_str)
  32.106 +          u.errors.on(:email).should     be_nil
  32.107 +        end.should change(<%= class_name %>, :count).by(1)
  32.108 +      end
  32.109 +    end
  32.110 +  end
  32.111 +  describe 'disallows illegitimate emails' do
  32.112 +    ['!!@nobadchars.com', 'foo@no-rep-dots..com', 'foo@badtld.xxx', 'foo@toolongtld.abcdefg',
  32.113 +     'Iñtërnâtiônàlizætiøn@hasnt.happened.to.email', 'need.domain.and.tld@de', "tab\t", "newline\n",
  32.114 +     'r@.wk', '1234567890-234567890-234567890-234567890-234567890-234567890-234567890-234567890-234567890@gmail2.com',
  32.115 +     # these are technically allowed but not seen in practice:
  32.116 +     'uucp!addr@gmail.com', 'semicolon;@gmail.com', 'quote"@gmail.com', 'tick\'@gmail.com', 'backtick`@gmail.com', 'space @gmail.com', 'bracket<@gmail.com', 'bracket>@gmail.com'
  32.117 +    ].each do |email_str|
  32.118 +      it "'#{email_str}'" do
  32.119 +        lambda do
  32.120 +          u = create_<%= file_name %>(:email => email_str)
  32.121 +          u.errors.on(:email).should_not be_nil
  32.122 +        end.should_not change(<%= class_name %>, :count)
  32.123 +      end
  32.124 +    end
  32.125 +  end
  32.126 +
  32.127 +  describe 'allows legitimate names:' do
  32.128 +    ['Andre The Giant (7\'4", 520 lb.) -- has a posse',
  32.129 +     '', '1234567890_234567890_234567890_234567890_234567890_234567890_234567890_234567890_234567890_234567890',
  32.130 +    ].each do |name_str|
  32.131 +      it "'#{name_str}'" do
  32.132 +        lambda do
  32.133 +          u = create_<%= file_name %>(:name => name_str)
  32.134 +          u.errors.on(:name).should     be_nil
  32.135 +        end.should change(<%= class_name %>, :count).by(1)
  32.136 +      end
  32.137 +    end
  32.138 +  end
  32.139 +  describe "disallows illegitimate names" do
  32.140 +    ["tab\t", "newline\n",
  32.141 +     '1234567890_234567890_234567890_234567890_234567890_234567890_234567890_234567890_234567890_234567890_',
  32.142 +     ].each do |name_str|
  32.143 +      it "'#{name_str}'" do
  32.144 +        lambda do
  32.145 +          u = create_<%= file_name %>(:name => name_str)
  32.146 +          u.errors.on(:name).should_not be_nil
  32.147 +        end.should_not change(<%= class_name %>, :count)
  32.148 +      end
  32.149 +    end
  32.150 +  end
  32.151 +
  32.152 +  it 'resets password' do
  32.153 +    <%= table_name %>(:quentin).update_attributes(:password => 'new password', :password_confirmation => 'new password')
  32.154 +    <%= class_name %>.authenticate('quentin', 'new password').should == <%= table_name %>(:quentin)
  32.155 +  end
  32.156 +
  32.157 +  it 'does not rehash password' do
  32.158 +    <%= table_name %>(:quentin).update_attributes(:login => 'quentin2')
  32.159 +    <%= class_name %>.authenticate('quentin2', 'monkey').should == <%= table_name %>(:quentin)
  32.160 +  end
  32.161 +
  32.162 +  #
  32.163 +  # Authentication
  32.164 +  #
  32.165 +
  32.166 +  it 'authenticates <%= file_name %>' do
  32.167 +    <%= class_name %>.authenticate('quentin', 'monkey').should == <%= table_name %>(:quentin)
  32.168 +  end
  32.169 +
  32.170 +  it "doesn't authenticate <%= file_name %> with bad password" do
  32.171 +    <%= class_name %>.authenticate('quentin', 'invalid_password').should be_nil
  32.172 +  end
  32.173 +
  32.174 + if REST_AUTH_SITE_KEY.blank?
  32.175 +   # old-school passwords
  32.176 +   it "authenticates a user against a hard-coded old-style password" do
  32.177 +     <%= class_name %>.authenticate('old_password_holder', 'test').should == <%= table_name %>(:old_password_holder)
  32.178 +   end
  32.179 + else
  32.180 +   it "doesn't authenticate a user against a hard-coded old-style password" do
  32.181 +     <%= class_name %>.authenticate('old_password_holder', 'test').should be_nil
  32.182 +   end
  32.183 +
  32.184 +   # New installs should bump this up and set REST_AUTH_DIGEST_STRETCHES to give a 10ms encrypt time or so
  32.185 +   desired_encryption_expensiveness_ms = 0.1
  32.186 +   it "takes longer than #{desired_encryption_expensiveness_ms}ms to encrypt a password" do
  32.187 +     test_reps = 100
  32.188 +     start_time = Time.now; test_reps.times{ <%= class_name %>.authenticate('quentin', 'monkey'+rand.to_s) }; end_time   = Time.now
  32.189 +     auth_time_ms = 1000 * (end_time - start_time)/test_reps
  32.190 +     auth_time_ms.should > desired_encryption_expensiveness_ms
  32.191 +   end
  32.192 + end
  32.193 +
  32.194 +  #
  32.195 +  # Authentication
  32.196 +  #
  32.197 +
  32.198 +  it 'sets remember token' do
  32.199 +    <%= table_name %>(:quentin).remember_me
  32.200 +    <%= table_name %>(:quentin).remember_token.should_not be_nil
  32.201 +    <%= table_name %>(:quentin).remember_token_expires_at.should_not be_nil
  32.202 +  end
  32.203 +
  32.204 +  it 'unsets remember token' do
  32.205 +    <%= table_name %>(:quentin).remember_me
  32.206 +    <%= table_name %>(:quentin).remember_token.should_not be_nil
  32.207 +    <%= table_name %>(:quentin).forget_me
  32.208 +    <%= table_name %>(:quentin).remember_token.should be_nil
  32.209 +  end
  32.210 +
  32.211 +  it 'remembers me for one week' do
  32.212 +    before = 1.week.from_now.utc
  32.213 +    <%= table_name %>(:quentin).remember_me_for 1.week
  32.214 +    after = 1.week.from_now.utc
  32.215 +    <%= table_name %>(:quentin).remember_token.should_not be_nil
  32.216 +    <%= table_name %>(:quentin).remember_token_expires_at.should_not be_nil
  32.217 +    <%= table_name %>(:quentin).remember_token_expires_at.between?(before, after).should be_true
  32.218 +  end
  32.219 +
  32.220 +  it 'remembers me until one week' do
  32.221 +    time = 1.week.from_now.utc
  32.222 +    <%= table_name %>(:quentin).remember_me_until time
  32.223 +    <%= table_name %>(:quentin).remember_token.should_not be_nil
  32.224 +    <%= table_name %>(:quentin).remember_token_expires_at.should_not be_nil
  32.225 +    <%= table_name %>(:quentin).remember_token_expires_at.should == time
  32.226 +  end
  32.227 +
  32.228 +  it 'remembers me default two weeks' do
  32.229 +    before = 2.weeks.from_now.utc
  32.230 +    <%= table_name %>(:quentin).remember_me
  32.231 +    after = 2.weeks.from_now.utc
  32.232 +    <%= table_name %>(:quentin).remember_token.should_not be_nil
  32.233 +    <%= table_name %>(:quentin).remember_token_expires_at.should_not be_nil
  32.234 +    <%= table_name %>(:quentin).remember_token_expires_at.between?(before, after).should be_true
  32.235 +  end
  32.236 +<% if options[:stateful] %>
  32.237 +  it 'registers passive <%= file_name %>' do
  32.238 +    <%= file_name %> = create_<%= file_name %>(:password => nil, :password_confirmation => nil)
  32.239 +    <%= file_name %>.should be_passive
  32.240 +    <%= file_name %>.update_attributes(:password => 'new password', :password_confirmation => 'new password')
  32.241 +    <%= file_name %>.register!
  32.242 +    <%= file_name %>.should be_pending
  32.243 +  end
  32.244 +
  32.245 +  it 'suspends <%= file_name %>' do
  32.246 +    <%= table_name %>(:quentin).suspend!
  32.247 +    <%= table_name %>(:quentin).should be_suspended
  32.248 +  end
  32.249 +
  32.250 +  it 'does not authenticate suspended <%= file_name %>' do
  32.251 +    <%= table_name %>(:quentin).suspend!
  32.252 +    <%= class_name %>.authenticate('quentin', 'monkey').should_not == <%= table_name %>(:quentin)
  32.253 +  end
  32.254 +
  32.255 +  it 'deletes <%= file_name %>' do
  32.256 +    <%= table_name %>(:quentin).deleted_at.should be_nil
  32.257 +    <%= table_name %>(:quentin).delete!
  32.258 +    <%= table_name %>(:quentin).deleted_at.should_not be_nil
  32.259 +    <%= table_name %>(:quentin).should be_deleted
  32.260 +  end
  32.261 +
  32.262 +  describe "being unsuspended" do
  32.263 +    fixtures :<%= table_name %>
  32.264 +
  32.265 +    before do
  32.266 +      @<%= file_name %> = <%= table_name %>(:quentin)
  32.267 +      @<%= file_name %>.suspend!
  32.268 +    end
  32.269 +
  32.270 +    it 'reverts to active state' do
  32.271 +      @<%= file_name %>.unsuspend!
  32.272 +      @<%= file_name %>.should be_active
  32.273 +    end
  32.274 +
  32.275 +    it 'reverts to passive state if activation_code and activated_at are nil' do
  32.276 +      <%= class_name %>.update_all :activation_code => nil, :activated_at => nil
  32.277 +      @<%= file_name %>.reload.unsuspend!
  32.278 +      @<%= file_name %>.should be_passive
  32.279 +    end
  32.280 +
  32.281 +    it 'reverts to pending state if activation_code is set and activated_at is nil' do
  32.282 +      <%= class_name %>.update_all :activation_code => 'foo-bar', :activated_at => nil
  32.283 +      @<%= file_name %>.reload.unsuspend!
  32.284 +      @<%= file_name %>.should be_pending
  32.285 +    end
  32.286 +  end
  32.287 +<% end %>
  32.288 +protected
  32.289 +  def create_<%= file_name %>(options = {})
  32.290 +    record = <%= class_name %>.new({ :login => 'quire', :email => 'quire@example.com', :password => 'quire69', :password_confirmation => 'quire69' }.merge(options))
  32.291 +    record.<% if options[:stateful] %>register! if record.valid?<% else %>save<% end %>
  32.292 +    record
  32.293 +  end
  32.294 +end
    33.1 new file mode 100755
    33.2 --- /dev/null
    33.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/stories/rest_auth_stories.rb
    33.4 @@ -0,0 +1,22 @@
    33.5 +#!/usr/bin/env ruby
    33.6 +ENV["RAILS_ENV"] = "test"
    33.7 +require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
    33.8 +require 'spec/rails/story_adapter'
    33.9 +require 'spec/story'
   33.10 +require File.expand_path(File.dirname(__FILE__) + "/rest_auth_stories_helper.rb")
   33.11 +
   33.12 +# Make visible for testing
   33.13 +ApplicationController.send(:public, :logged_in?, :current_user, :authorized?)
   33.14 +
   33.15 +this_dir = File.dirname(__FILE__)
   33.16 +Dir[File.join(this_dir, "steps/*.rb")].each do |file|
   33.17 +  puts file.to_s
   33.18 +  require file
   33.19 +end
   33.20 +
   33.21 +with_steps_for :ra_navigation, :ra_response, :ra_resource, :<%= file_name %> do
   33.22 +  story_files = Dir[File.join(this_dir, "<%= table_name %>", '*.story')]
   33.23 +  story_files.each do |file|
   33.24 +    run file, :type => RailsStory 
   33.25 +  end
   33.26 +end
    34.1 new file mode 100644
    34.2 --- /dev/null
    34.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/stories/rest_auth_stories_helper.rb
    34.4 @@ -0,0 +1,81 @@
    34.5 +# If you have a global stories helper, move this line there:
    34.6 +include AuthenticatedTestHelper
    34.7 +
    34.8 +# Most of the below came out of code from Ben Mabey
    34.9 +# http://www.benmabey.com/2008/02/04/rspec-plain-text-stories-webrat-chunky-bacon/
   34.10 +
   34.11 +# These allow exceptions to come through as opposed to being caught and having non-helpful responses returned.
   34.12 +ActionController::Base.class_eval do
   34.13 +  def perform_action
   34.14 +    perform_action_without_rescue
   34.15 +  end
   34.16 +end
   34.17 +Dispatcher.class_eval do
   34.18 +  def self.failsafe_response(output, status, exception = nil)
   34.19 +    raise exception
   34.20 +  end
   34.21 +end
   34.22 +
   34.23 +#
   34.24 +# Sugar for turning a story's attribute list into list, array, etc.
   34.25 +#
   34.26 +module ToFooFromStory
   34.27 +  def ToFooFromStory.fix_key key
   34.28 +    key.downcase.gsub(/\s+/, '_')
   34.29 +  end
   34.30 +  def ToFooFromStory.fix_value value
   34.31 +    return '' if !value
   34.32 +    value.strip!
   34.33 +    case 
   34.34 +    when value =~ /^'(.*)'$/    then value = $1
   34.35 +    when value =~ /^"(.*)"$/    then value = $1
   34.36 +    when value == 'nil!'        then value = nil
   34.37 +    when value == 'non-nil!'    then value = be_nil
   34.38 +    when value =~ /^#\{(.*)\}$/ then value = eval($1)
   34.39 +    end
   34.40 +    value
   34.41 +  end
   34.42 +  # Converts a key: value list found in the steps into a hash.  
   34.43 +  # Example:
   34.44 +  #   ISBN: '0967539854' and comment: 'I love this book' and Quality rating: '4'
   34.45 +  #   # => {"quality_rating"=>"4", "isbn"=>"0967539854", "comment"=>"I love this book"}
   34.46 +  def to_hash_from_story
   34.47 +    hsh = self.split(/,? and |, /).inject({}) do |hash_so_far, key_value|
   34.48 +      key, value = key_value.split(":")
   34.49 +      if !value then warn "Couldn't understand story '#{self}': only understood up to the part '#{hash_so_far.to_yaml}'" end
   34.50 +      hash_so_far.merge(ToFooFromStory::fix_key(key) => ToFooFromStory::fix_value(value))
   34.51 +    end
   34.52 +  end
   34.53 +  # Coverts an attribute list found in the steps into an array
   34.54 +  # Example:
   34.55 +  #   login, email, updated_at, and gravatar
   34.56 +  #   # => ['login', 'email', 'updated_at', 'gravatar']
   34.57 +  def to_array_from_story
   34.58 +    self.split(/,? and |, /).map do |value|
   34.59 +      ToFooFromStory::fix_value(value)
   34.60 +    end
   34.61 +  end
   34.62 +end
   34.63 +class String
   34.64 +  include ToFooFromStory        
   34.65 +end
   34.66 +
   34.67 +def instantize(string)
   34.68 +  instance_variable_get("@#{string}")
   34.69 +end
   34.70 +
   34.71 +#
   34.72 +# Spew response onto screen -- painful but scrolling >> debugger
   34.73 +#
   34.74 +def dump_response
   34.75 +  # note that @request and @template won't to_yaml and that @session includes @cgi
   34.76 +  response_methods = response.instance_variables         - ['@request', '@template', '@cgi']
   34.77 +  request_methods  = response.request.instance_variables - ['@session_options_with_string_keys', '@cgi', '@session']
   34.78 +  response_methods.map!{|attr| attr.gsub(/^@/,'')}.sort!
   34.79 +  request_methods.map!{ |attr| attr.gsub(/^@/,'')}.sort!
   34.80 +  puts '', '*' * 75, 
   34.81 +    response.instance_values.slice(*response_methods).to_yaml,
   34.82 +    "*" * 75, '',
   34.83 +    response.request.instance_values.slice(*request_methods).to_yaml,
   34.84 +    "*" * 75, ''  
   34.85 +end
    35.1 new file mode 100644
    35.2 --- /dev/null
    35.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/stories/steps/ra_navigation_steps.rb
    35.4 @@ -0,0 +1,49 @@
    35.5 +#
    35.6 +# Where to go
    35.7 +#
    35.8 +steps_for(:ra_navigation) do
    35.9 +  #
   35.10 +  # GET
   35.11 +  # Go to a given page.
   35.12 +  When "$actor goes to $path" do |actor, path|
   35.13 +    case path
   35.14 +    when 'the home page' then get '/'
   35.15 +    else                      get path
   35.16 +    end
   35.17 +  end
   35.18 +
   35.19 +  # POST -- Ex:
   35.20 +  #   When she creates a book with ISBN: '0967539854' and comment: 'I love this book' and rating: '4'
   35.21 +  #   When she creates a singular session with login: 'reggie' and password: 'i_haxxor_joo'
   35.22 +  # Since I'm not smrt enough to do it right, explicitly specify singular resources
   35.23 +  When %r{$actor creates an? $resource with $attributes} do |actor, resource, attributes|
   35.24 +    attributes = attributes.to_hash_from_story
   35.25 +    if resource =~ %r{singular ([\w/]+)}
   35.26 +      resource = $1.downcase.singularize
   35.27 +      post "/#{resource}", attributes
   35.28 +    else
   35.29 +      post "/#{resource.downcase.pluralize}", { resource.downcase.singularize => attributes }
   35.30 +    end
   35.31 +  end
   35.32 +
   35.33 +  # PUT
   35.34 +  When %r{$actor asks to update '$resource' with $attributes} do |_, resource, attributes|
   35.35 +    attributes = attributes.to_hash_from_story
   35.36 +    put "#{resource}", attributes
   35.37 +    dump_response
   35.38 +  end
   35.39 +
   35.40 +  # DELETE -- Slap together the POST-form-as-fake-HTTP-DELETE submission
   35.41 +  When %r{$actor asks to delete '$resource'} do |_, resource|
   35.42 +    post "/#{resource.downcase.pluralize}", { :_method => :delete }
   35.43 +    dump_response
   35.44 +  end
   35.45 +
   35.46 +
   35.47 +  # Redirect --
   35.48 +  #   Rather than coding in get/get_via_redirect's and past/p_v_r's,
   35.49 +  #   let's just demand that in the story itself.
   35.50 +  When "$actor follows that redirect!" do |actor|
   35.51 +    follow_redirect!
   35.52 +  end
   35.53 +end
    36.1 new file mode 100644
    36.2 --- /dev/null
    36.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/stories/steps/ra_resource_steps.rb
    36.4 @@ -0,0 +1,179 @@
    36.5 +# The flexible code for resource testing came out of code from Ben Mabey
    36.6 +# http://www.benmabey.com/2008/02/04/rspec-plain-text-stories-webrat-chunky-bacon/
    36.7 +steps_for(:ra_resource) do
    36.8 +  #
    36.9 +  # Construct resources
   36.10 +  #
   36.11 +  
   36.12 +  #
   36.13 +  # Build a resource as described, store it as an @instance variable. Ex:
   36.14 +  #   "Given a <%= file_name %> with login: 'mojojojo'" 
   36.15 +  # produces a <%= class_name %> instance stored in @<%= file_name %> with 'mojojojo' as its login
   36.16 +  # attribute.
   36.17 +  #
   36.18 +  Given "a $resource instance with $attributes" do |resource, attributes|
   36.19 +    klass, instance, attributes = parse_resource_args resource, attributes
   36.20 +    instance = klass.new(attributes)
   36.21 +    instance.save!
   36.22 +    find_resource(resource, attributes).should_not be_nil
   36.23 +    keep_instance! resource, instance
   36.24 +  end
   36.25 +  
   36.26 +  #
   36.27 +  # Stuff attributes into a preexisting @resource
   36.28 +  #   "And the <%= file_name %> has thac0: 3"
   36.29 +  # takes the earlier-defined @<%= file_name %> instance and sets its thac0 to '3'.
   36.30 +  #
   36.31 +  Given "the $resource has $attributes" do |resource, attributes|
   36.32 +    klass, instance, attributes = parse_resource_args resource, attributes
   36.33 +    attributes.each do |attr, val|
   36.34 +      instance.send("#{attr}=", val)
   36.35 +    end
   36.36 +    instance.save!
   36.37 +    find_resource(resource, attributes).should_not be_nil
   36.38 +    keep_instance! resource, instance 
   36.39 +  end
   36.40 +  
   36.41 +  #
   36.42 +  # Destroy all for this resource
   36.43 +  #
   36.44 +  Given "no $resource with $attr: '$val' exists" do |resource, attr, val|
   36.45 +    klass, instance = parse_resource_args resource
   36.46 +    klass.destroy_all(attr.to_sym => val)
   36.47 +    instance = find_resource resource, attr.to_sym => val
   36.48 +    instance.should be_nil
   36.49 +    keep_instance! resource, instance
   36.50 +  end
   36.51 +
   36.52 +  #
   36.53 +  # Then's for resources
   36.54 +  #
   36.55 +  
   36.56 +  # Resource like this DOES exist
   36.57 +  Then %r{an? $resource with $attributes should exist} do |resource, attributes|
   36.58 +    instance = find_resource resource, attributes
   36.59 +    instance.should_not be_nil
   36.60 +    keep_instance! resource, instance
   36.61 +  end
   36.62 +  # Resource like this DOES NOT exist
   36.63 +  Then %r{no $resource with $attributes should exist} do |resource, attributes|
   36.64 +    instance = find_resource resource, attributes
   36.65 +    instance.should be_nil
   36.66 +  end
   36.67 +
   36.68 +  # Resource has attributes with given values
   36.69 +  Then  "the $resource should have $attributes" do |resource, attributes|
   36.70 +    klass, instance, attributes = parse_resource_args resource, attributes
   36.71 +    attributes.each do |attr, val|
   36.72 +      instance.send(attr).should == val
   36.73 +    end
   36.74 +  end
   36.75 +  # Resource attributes should / should not be nil
   36.76 +  Then  "the $resource's $attr should be nil" do |resource, attr|
   36.77 +    klass, instance = parse_resource_args resource
   36.78 +    instance.send(attr).should be_nil
   36.79 +  end
   36.80 +  Then  "the $resource's $attr should not be nil" do |resource, attr|
   36.81 +    klass, instance = parse_resource_args resource
   36.82 +    instance.send(attr).should_not be_nil
   36.83 +  end
   36.84 +
   36.85 +  #
   36.86 +  # Bank each of the @resource's listed attributes for later.
   36.87 +  #
   36.88 +  Given "we try hard to remember the $resource's $attributes" do |resource, attributes|
   36.89 +    attributes = attributes.to_array_from_story
   36.90 +    attributes.each do |attr|
   36.91 +      memorize_resource_value resource, attr
   36.92 +    end
   36.93 +  end
   36.94 +  #
   36.95 +  # Bank each of the @resource's listed attributes for later.
   36.96 +  #
   36.97 +  Given "we don't remember anything about the past" do 
   36.98 +    memorize_forget_all!
   36.99 +  end
  36.100 +
  36.101 +  #
  36.102 +  # Compare @resource.attr to its earlier-memorized value. 
  36.103 +  # Specify ' using method_name' (abs, to_s, &c) to coerce before comparing.
  36.104 +  # For important and mysterious reasons, timestamps want to_i or to_s.
  36.105 +  #
  36.106 +  Then %r{the $resource\'s $attribute should stay the same(?: under $func)?} do |resource, attr, func|
  36.107 +    klass, instance = parse_resource_args resource
  36.108 +    # Get the values
  36.109 +    old_value = recall_resource_value(resource, attr)
  36.110 +    new_value = instance.send(attr)
  36.111 +    # Transform each value, maybe, using value.func
  36.112 +    if func then new_value = new_value.send(func); old_value = old_value.send(func) end
  36.113 +    # Compare
  36.114 +    old_value.should eql(new_value)
  36.115 +  end
  36.116 +
  36.117 +  #
  36.118 +  # Look for each for the given attributes in the page's text
  36.119 +  #
  36.120 +  Then "page should have the $resource's $attributes" do |resource, attributes|
  36.121 +    actual_resource = instantize(resource)
  36.122 +    attributes.split(/, and |, /).each do |attribute|
  36.123 +      response.should have_text(/#{actual_resource.send(attribute.strip.gsub(" ","_"))}/)
  36.124 +    end
  36.125 +  end
  36.126 +  
  36.127 +end
  36.128 +
  36.129 +#
  36.130 +# Turn a resource name and a to_hash_from_story string like
  36.131 +#   "attr: 'value', attr2: 'value2', ... , and attrN: 'valueN'"
  36.132 +# into 
  36.133 +#   * klass      -- the class matching that Resource
  36.134 +#   * instance   -- the possibly-preexisting local instance value @resource
  36.135 +#   * attributes -- a hash matching the given attribute-list string
  36.136 +# 
  36.137 +def parse_resource_args resource, attributes=nil
  36.138 +  instance   = instantize resource
  36.139 +  klass      = resource.classify.constantize
  36.140 +  attributes = attributes.to_hash_from_story if attributes
  36.141 +  [klass, instance, attributes]
  36.142 +end
  36.143 +
  36.144 +#
  36.145 +# Given a class name 'resource' and a hash of conditsion, find a model 
  36.146 +#
  36.147 +def find_resource resource, conditions
  36.148 +  klass, instance = parse_resource_args resource
  36.149 +  conditions = conditions.to_hash_from_story unless (conditions.is_a? Hash)
  36.150 +  klass.find(:first, :conditions => conditions)
  36.151 +end
  36.152 +
  36.153 +#
  36.154 +# Simple, brittle, useful: store the given resource's attribute
  36.155 +# so we can compare it later.
  36.156 +#
  36.157 +def memorize_resource_value resource, attr
  36.158 +  klass, instance = parse_resource_args resource
  36.159 +  value = instance.send(attr)
  36.160 +  @_memorized ||= {}
  36.161 +  @_memorized[resource] ||= {}
  36.162 +  @_memorized[resource][attr] = value
  36.163 +  value
  36.164 +end
  36.165 +def recall_resource_value resource, attr
  36.166 +  @_memorized[resource][attr]
  36.167 +end
  36.168 +def memorize_forget_all!
  36.169 +  @_memorized = {}
  36.170 +end
  36.171 +
  36.172 +#
  36.173 +# Keep the object around in a local instance variable @resource.
  36.174 +#
  36.175 +# So, for instance,
  36.176 +#   klass, instance = parse_resource_args '<%= file_name %>'
  36.177 +#   instance = klass.new({login => 'me', password => 'monkey', ...})
  36.178 +#   keep_instance! resource, instance
  36.179 +# keeps the just-constructed <%= class_name %> model in the @<%= file_name %> instance variable.
  36.180 +#
  36.181 +def keep_instance! resource, object
  36.182 +  instance_variable_set("@#{resource}", object)
  36.183 +end
    37.1 new file mode 100644
    37.2 --- /dev/null
    37.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/stories/steps/ra_response_steps.rb
    37.4 @@ -0,0 +1,171 @@
    37.5 +#
    37.6 +# What you should see when you get there
    37.7 +#
    37.8 +
    37.9 +steps_for(:ra_response) do  
   37.10 +  #
   37.11 +  # Destinations.  Ex:
   37.12 +  #   She should be at the new kids page
   37.13 +  #   Tarkin should be at the destroy alderaan page 
   37.14 +  #   The visitor should be at the '/lolcats/download' form
   37.15 +  #   The visitor should be redirected to '/hi/mom'
   37.16 +  #
   37.17 +  # It doesn't know anything about actual routes -- it just 
   37.18 +  # feeds its output to render_template or redirect_to
   37.19 +  #
   37.20 +  Then "$actor should be at $path" do |_, path|
   37.21 +    response.should render_template(grok_path(path))
   37.22 +  end
   37.23 +
   37.24 +  Then "$actor should be redirected to $path" do |_, path|
   37.25 +    response.should redirect_to(grok_path(path))
   37.26 +  end  
   37.27 +
   37.28 +  Then "the page should look AWESOME" do
   37.29 +    response.should have_tag('head>title')
   37.30 +    response.should have_tag('h1')
   37.31 +    # response.should be_valid_xhtml
   37.32 +  end
   37.33 +  
   37.34 +  #
   37.35 +  # Tags 
   37.36 +  #
   37.37 +  
   37.38 +  Then "the page should contain '$text'" do |_, text|
   37.39 +    response.should have_text(/#{text}/)
   37.40 +  end
   37.41 +  
   37.42 +  # please note: this enforces the use of a <label> field
   37.43 +  Then "$actor should see a <$container> containing a $attributes" do |_, container, attributes|
   37.44 +    attributes = attributes.to_hash_from_story
   37.45 +    response.should have_tag(container) do
   37.46 +      attributes.each do |tag, label|
   37.47 +        case tag
   37.48 +        when "textfield" then with_tag "input[type='text']";     with_tag("label", label)
   37.49 +        when "password"  then with_tag "input[type='password']"; with_tag("label", label)
   37.50 +        when "submit"    then with_tag "input[type='submit'][value='#{label}']"
   37.51 +        else with_tag tag, label
   37.52 +        end
   37.53 +      end
   37.54 +    end
   37.55 +  end
   37.56 +
   37.57 +  #
   37.58 +  # Session, cookie variables
   37.59 +  #
   37.60 +  Then "$actor $token cookie should include $attrlist" do |_, token, attrlist|
   37.61 +    attrlist = attrlist.to_array_from_story
   37.62 +    cookies.include?(token).should be_true
   37.63 +    attrlist.each do |val|
   37.64 +      cookies[token].include?(val).should be_true
   37.65 +    end
   37.66 +  end
   37.67 +  
   37.68 +  Then "$actor $token cookie should exist but not include $attrlist" do |_, token, attrlist|
   37.69 +    attrlist = attrlist.to_array_from_story
   37.70 +    cookies.include?(token).should be_true
   37.71 +    puts [cookies, attrlist, token].to_yaml
   37.72 +    attrlist.each do |val|
   37.73 +      cookies[token].include?(val).should_not be_true
   37.74 +    end
   37.75 +  end
   37.76 +
   37.77 +  Then "$actor should have $an $token cookie" do |_, _, token|
   37.78 +    cookies[token].should_not be_blank
   37.79 +  end
   37.80 +  Then "$actor should not have $an $token cookie" do |_, _, token|
   37.81 +    cookies[token].should be_blank
   37.82 +  end
   37.83 +
   37.84 +  Given "$actor has $an cookie jar with $attributes" do |_, _, attributes|
   37.85 +    attributes = attributes.to_hash_from_story
   37.86 +    attributes.each do |attr, val|
   37.87 +      cookies[attr] = val
   37.88 +    end
   37.89 +  end
   37.90 +  Given "$actor session store has no $attrlist" do |_, attrlist|
   37.91 +    attrlist = attrlist.to_array_from_story
   37.92 +    attrlist.each do |attr|
   37.93 +      # Note that the comparison passes through 'to_s'
   37.94 +      session[attr.to_sym] = nil
   37.95 +    end
   37.96 +  end
   37.97 +  
   37.98 +  Then "$actor session store should have $attributes" do |_, attributes|
   37.99 +    attributes = attributes.to_hash_from_story
  37.100 +    attributes.each do |attr, val|
  37.101 +      # Note that the comparison passes through 'to_s'
  37.102 +      session[attr.to_sym].to_s.should eql(val)
  37.103 +    end
  37.104 +  end
  37.105 +  
  37.106 +  Then "$actor session store should not have $attrlist" do |_, attrlist|
  37.107 +    attrlist = attrlist.to_array_from_story
  37.108 +    attrlist.each do |attr|
  37.109 +      session[attr.to_sym].blank?.should be_true
  37.110 +    end
  37.111 +  end
  37.112 +
  37.113 +  #
  37.114 +  # Flash messages
  37.115 +  #
  37.116 +  
  37.117 +  Then "$actor should see $an $notice message '$message'" do |_, _, notice, message|
  37.118 +    response.should have_flash(notice, %r{#{message}})
  37.119 +  end
  37.120 +  
  37.121 +  Then "$actor should not see $an $notice message '$message'" do |_, _, notice, message|
  37.122 +    response.should_not have_flash(notice, %r{#{message}})
  37.123 +  end
  37.124 +  
  37.125 +  Then "$actor should see no messages" do |_|
  37.126 +    ['error', 'warning', 'notice'].each do |notice|
  37.127 +      response.should_not have_flash(notice)
  37.128 +    end
  37.129 +  end
  37.130 +
  37.131 +  RE_POLITENESS = /(?:please|sorry|thank(?:s| you))/i
  37.132 +  Then %r{we should be polite about it} do 
  37.133 +    response.should have_tag("div.error,div.notice", RE_POLITENESS)
  37.134 +  end
  37.135 +  Then %r{we should not even be polite about it} do 
  37.136 +    response.should_not have_tag("div.error,div.notice", RE_POLITENESS)
  37.137 +  end
  37.138 +  
  37.139 +  #
  37.140 +  # Resource's attributes
  37.141 +  # 
  37.142 +  # "Then page should have the $resource's $attributes" is in resource_steps
  37.143 +  
  37.144 +  # helpful debug step
  37.145 +  Then "we dump the response" do
  37.146 +    dump_response
  37.147 +  end  
  37.148 +end
  37.149 +
  37.150 +
  37.151 +def have_flash notice, *args
  37.152 +  have_tag("div.#{notice}", *args)
  37.153 +end
  37.154 +
  37.155 +RE_PRETTY_RESOURCE = /the (index|show|new|create|edit|update|destroy) (\w+) (page|form)/i
  37.156 +RE_THE_FOO_PAGE    = /the '?([^']*)'? (page|form)/i
  37.157 +RE_QUOTED_PATH     = /^'([^']*)'$/i
  37.158 +def grok_path path
  37.159 +  path.gsub(/\s+again$/,'') # strip trailing ' again'
  37.160 +  case
  37.161 +  when path == 'the home page'    then dest = '/'
  37.162 +  when path =~ RE_PRETTY_RESOURCE then dest = template_for $1, $2
  37.163 +  when path =~ RE_THE_FOO_PAGE    then dest = $1
  37.164 +  when path =~ RE_QUOTED_PATH     then dest = $1
  37.165 +  else                                 dest = path
  37.166 +  end
  37.167 +  dest
  37.168 +end
  37.169 +
  37.170 +# turns 'new', 'road bikes' into 'road_bikes/new'
  37.171 +# note that it's "action resource"
  37.172 +def template_for(action, resource)
  37.173 +  "#{resource.gsub(" ","_")}/#{action}"
  37.174 +end
  37.175 +
    38.1 new file mode 100644
    38.2 --- /dev/null
    38.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/stories/steps/user_steps.rb
    38.4 @@ -0,0 +1,153 @@
    38.5 +require File.dirname(__FILE__) + '/../helper'
    38.6 +
    38.7 +RE_<%= file_name.capitalize %>      = %r{(?:(?:the )? *(\w+) *)}
    38.8 +RE_<%= file_name.capitalize %>_TYPE = %r{(?: *(\w+)? *)}
    38.9 +steps_for(:<%= file_name %>) do
   38.10 +
   38.11 +  #
   38.12 +  # Setting
   38.13 +  #
   38.14 +  
   38.15 +  Given "an anonymous <%= file_name %>" do 
   38.16 +    log_out!
   38.17 +  end
   38.18 +
   38.19 +  Given "$an $<%= file_name %>_type <%= file_name %> with $attributes" do |_, <%= file_name %>_type, attributes|
   38.20 +    create_<%= file_name %>! <%= file_name %>_type, attributes.to_hash_from_story
   38.21 +  end
   38.22 +  
   38.23 +  Given "$an $<%= file_name %>_type <%= file_name %> named '$login'" do |_, <%= file_name %>_type, login|
   38.24 +    create_<%= file_name %>! <%= file_name %>_type, named_<%= file_name %>(login)
   38.25 +  end
   38.26 +  
   38.27 +  Given "$an $<%= file_name %>_type <%= file_name %> logged in as '$login'" do |_, <%= file_name %>_type, login|
   38.28 +    create_<%= file_name %>! <%= file_name %>_type, named_<%= file_name %>(login)
   38.29 +    log_in_<%= file_name %>!
   38.30 +  end
   38.31 +  
   38.32 +  Given "$actor is logged in" do |_, login|
   38.33 +    log_in_<%= file_name %>! @<%= file_name %>_params || named_<%= file_name %>(login)
   38.34 +  end
   38.35 +  
   38.36 +  Given "there is no $<%= file_name %>_type <%= file_name %> named '$login'" do |_, login|
   38.37 +    @<%= file_name %> = <%= class_name %>.find_by_login(login)
   38.38 +    @<%= file_name %>.destroy! if @<%= file_name %>
   38.39 +    @<%= file_name %>.should be_nil
   38.40 +  end
   38.41 +  
   38.42 +  #
   38.43 +  # Actions
   38.44 +  #
   38.45 +  When "$actor logs out" do 
   38.46 +    log_out
   38.47 +  end
   38.48 +
   38.49 +  When "$actor registers an account as the preloaded '$login'" do |_, login|
   38.50 +    <%= file_name %> = named_<%= file_name %>(login)
   38.51 +    <%= file_name %>['password_confirmation'] = <%= file_name %>['password']
   38.52 +    create_<%= file_name %> <%= file_name %>
   38.53 +  end
   38.54 +
   38.55 +  When "$actor registers an account with $attributes" do |_, attributes|
   38.56 +    create_<%= file_name %> attributes.to_hash_from_story
   38.57 +  end
   38.58 +<% if options[:include_activation] %>  
   38.59 +  When "$actor activates with activation code $attributes" do |_, activation_code|
   38.60 +    activation_code = '' if activation_code == 'that is blank'
   38.61 +    activate 
   38.62 +  end<% end %>  
   38.63 +
   38.64 +  When "$actor logs in with $attributes" do |_, attributes|
   38.65 +    log_in_<%= file_name %> attributes.to_hash_from_story
   38.66 +  end
   38.67 +  
   38.68 +  #
   38.69 +  # Result
   38.70 +  #
   38.71 +  Then "$actor should be invited to sign in" do |_|
   38.72 +    response.should render_template('/<%= controller_file_path %>/new')
   38.73 +  end
   38.74 +  
   38.75 +  Then "$actor should not be logged in" do |_|
   38.76 +    controller.logged_in?.should_not be_true
   38.77 +  end
   38.78 +    
   38.79 +  Then "$login should be logged in" do |login|
   38.80 +    controller.logged_in?.should be_true
   38.81 +    controller.current_<%= file_name %>.should === @<%= file_name %>
   38.82 +    controller.current_<%= file_name %>.login.should == login
   38.83 +  end
   38.84 +    
   38.85 +end
   38.86 +
   38.87 +def named_<%= file_name %> login
   38.88 +  <%= file_name %>_params = {
   38.89 +    'admin'   => {'id' => 1, 'login' => 'addie', 'password' => '1234addie', 'email' => 'admin@example.com',       },
   38.90 +    'oona'    => {          'login' => 'oona',   'password' => '1234oona',  'email' => 'unactivated@example.com'},
   38.91 +    'reggie'  => {          'login' => 'reggie', 'password' => 'monkey',    'email' => 'registered@example.com' },
   38.92 +    }
   38.93 +  <%= file_name %>_params[login.downcase]
   38.94 +end
   38.95 +
   38.96 +#
   38.97 +# <%= class_name %> account actions.
   38.98 +#
   38.99 +# The ! methods are 'just get the job done'.  It's true, they do some testing of
  38.100 +# their own -- thus un-DRY'ing tests that do and should live in the <%= file_name %> account
  38.101 +# stories -- but the repetition is ultimately important so that a faulty test setup
  38.102 +# fails early.  
  38.103 +#
  38.104 +
  38.105 +def log_out 
  38.106 +  get '/<%= controller_file_path %>/destroy'
  38.107 +end
  38.108 +
  38.109 +def log_out!
  38.110 +  log_out
  38.111 +  response.should redirect_to('/')
  38.112 +  follow_redirect!
  38.113 +end
  38.114 +
  38.115 +def create_<%= file_name %>(<%= file_name %>_params={})
  38.116 +  @<%= file_name %>_params       ||= <%= file_name %>_params
  38.117 +  post "/<%= model_controller_file_path %>", :<%= file_name %> => <%= file_name %>_params
  38.118 +  @<%= file_name %> = <%= class_name %>.find_by_login(<%= file_name %>_params['login'])
  38.119 +end
  38.120 +
  38.121 +def create_<%= file_name %>!(<%= file_name %>_type, <%= file_name %>_params)
  38.122 +  <%= file_name %>_params['password_confirmation'] ||= <%= file_name %>_params['password'] ||= <%= file_name %>_params['password']
  38.123 +  create_<%= file_name %> <%= file_name %>_params
  38.124 +  response.should redirect_to('/')
  38.125 +  follow_redirect!
  38.126 +<% if options[:include_activation] %> 
  38.127 +  # fix the <%= file_name %>'s activation status
  38.128 +  activate_<%= file_name %>! if <%= file_name %>_type == 'activated'<% end %>
  38.129 +end
  38.130 +
  38.131 +<% if options[:include_activation] %> 
  38.132 +def activate_<%= file_name %> activation_code=nil
  38.133 +  activation_code = @<%= file_name %>.activation_code if activation_code.nil?
  38.134 +  get "/activate/#{activation_code}"
  38.135 +end
  38.136 +
  38.137 +def activate_<%= file_name %>! *args
  38.138 +  activate_<%= file_name %> *args
  38.139 +  response.should redirect_to('/login')
  38.140 +  follow_redirect!
  38.141 +  response.should have_flash("notice", /Signup complete!/)
  38.142 +end<% end %>
  38.143 +
  38.144 +def log_in_<%= file_name %> <%= file_name %>_params=nil
  38.145 +  @<%= file_name %>_params ||= <%= file_name %>_params
  38.146 +  <%= file_name %>_params  ||= @<%= file_name %>_params
  38.147 +  post "/<%= controller_routing_path %>", <%= file_name %>_params
  38.148 +  @<%= file_name %> = <%= class_name %>.find_by_login(<%= file_name %>_params['login'])
  38.149 +  controller.current_<%= file_name %>
  38.150 +end
  38.151 +
  38.152 +def log_in_<%= file_name %>! *args
  38.153 +  log_in_<%= file_name %> *args
  38.154 +  response.should redirect_to('/')
  38.155 +  follow_redirect!
  38.156 +  response.should have_flash("notice", /Logged in successfully/)
  38.157 +end
    39.1 new file mode 100644
    39.2 --- /dev/null
    39.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/stories/users/accounts.story
    39.4 @@ -0,0 +1,186 @@
    39.5 +Visitors should be in control of creating an account and of proving their
    39.6 +essential humanity/accountability or whatever it is people think the
    39.7 +id-validation does.  We should be fairly skeptical about this process, as the
    39.8 +identity+trust chain starts here.
    39.9 +
   39.10 +Story: Creating an account
   39.11 +  As an anonymous <%= file_name %>
   39.12 +  I want to be able to create an account
   39.13 +  So that I can be one of the cool kids
   39.14 +
   39.15 +  #
   39.16 +  # Account Creation: Get entry form
   39.17 +  #
   39.18 +  Scenario: Anonymous <%= file_name %> can start creating an account
   39.19 +    Given an anonymous <%= file_name %>
   39.20 +    When  she goes to /signup
   39.21 +    Then  she should be at the '<%= model_controller_routing_path %>/new' page
   39.22 +     And  the page should look AWESOME
   39.23 +     And  she should see a <form> containing a textfield: Login, textfield: Email, password: Password, password: 'Confirm Password', submit: 'Sign up'
   39.24 +
   39.25 +  #
   39.26 +  # Account Creation
   39.27 +  #
   39.28 +  Scenario: Anonymous <%= file_name %> can create an account
   39.29 +    Given an anonymous <%= file_name %>
   39.30 +     And  no <%= file_name %> with login: 'Oona' exists
   39.31 +    When  she registers an account as the preloaded 'Oona'
   39.32 +    Then  she should be redirected to the home page
   39.33 +    When  she follows that redirect!
   39.34 +    Then  she should see a notice message 'Thanks for signing up!'
   39.35 +     And  a <%= file_name %> with login: 'oona' should exist
   39.36 +     And  the <%= file_name %> should have login: 'oona', and email: 'unactivated@example.com'
   39.37 +<% if options[:include_activation] %>
   39.38 +     And  the <%= file_name %>'s activation_code should not be nil
   39.39 +     And  the <%= file_name %>'s activated_at    should     be nil
   39.40 +     And  she should not be logged in
   39.41 +<% else %>
   39.42 +     And  oona should be logged in
   39.43 +<% end %>
   39.44 +
   39.45 +  #
   39.46 +  # Account Creation Failure: Account exists
   39.47 +  #
   39.48 +<% if options[:include_activation] %>
   39.49 +  Scenario: Anonymous <%= file_name %> can not create an account replacing a non-activated account
   39.50 +    Given an anonymous <%= file_name %>
   39.51 +     And  a registered <%= file_name %> named 'Reggie'
   39.52 +     And  the <%= file_name %> has activation_code: 'activate_me', activated_at: nil! 
   39.53 +     And  we try hard to remember the <%= file_name %>'s updated_at, and created_at
   39.54 +    When  she registers an account with login: 'reggie', password: 'monkey', and email: 'different@example.com'
   39.55 +    Then  she should be at the '<%= model_controller_routing_path %>/new' page
   39.56 +     And  she should     see an errorExplanation message 'Login has already been taken'
   39.57 +     And  she should not see an errorExplanation message 'Email has already been taken'
   39.58 +     And  a <%= file_name %> with login: 'reggie' should exist
   39.59 +     And  the <%= file_name %> should have email: 'registered@example.com'
   39.60 +     And  the <%= file_name %>'s activation_code should not be nil
   39.61 +     And  the <%= file_name %>'s activated_at    should     be nil
   39.62 +     And  the <%= file_name %>'s created_at should stay the same under to_s
   39.63 +     And  the <%= file_name %>'s updated_at should stay the same under to_s
   39.64 +     And  she should not be logged in<% end %>
   39.65 +     
   39.66 +  Scenario: Anonymous <%= file_name %> can not create an account replacing an activated account
   39.67 +    Given an anonymous <%= file_name %>
   39.68 +     And  an activated <%= file_name %> named 'Reggie'
   39.69 +     And  we try hard to remember the <%= file_name %>'s updated_at, and created_at
   39.70 +    When  she registers an account with login: 'reggie', password: 'monkey', and email: 'reggie@example.com'
   39.71 +    Then  she should be at the '<%= model_controller_routing_path %>/new' page
   39.72 +     And  she should     see an errorExplanation message 'Login has already been taken'
   39.73 +     And  she should not see an errorExplanation message 'Email has already been taken'
   39.74 +     And  a <%= file_name %> with login: 'reggie' should exist
   39.75 +     And  the <%= file_name %> should have email: 'registered@example.com'
   39.76 +<% if options[:include_activation] %>
   39.77 +     And  the <%= file_name %>'s activation_code should     be nil
   39.78 +     And  the <%= file_name %>'s activated_at    should not be nil<% end %>
   39.79 +     And  the <%= file_name %>'s created_at should stay the same under to_s
   39.80 +     And  the <%= file_name %>'s updated_at should stay the same under to_s
   39.81 +     And  she should not be logged in
   39.82 +
   39.83 +  #
   39.84 +  # Account Creation Failure: Incomplete input
   39.85 +  #
   39.86 +  Scenario: Anonymous <%= file_name %> can not create an account with incomplete or incorrect input
   39.87 +    Given an anonymous <%= file_name %>
   39.88 +     And  no <%= file_name %> with login: 'Oona' exists
   39.89 +    When  she registers an account with login: '',     password: 'monkey', password_confirmation: 'monkey' and email: 'unactivated@example.com'
   39.90 +    Then  she should be at the '<%= model_controller_routing_path %>/new' page
   39.91 +     And  she should     see an errorExplanation message 'Login can't be blank'
   39.92 +     And  no <%= file_name %> with login: 'oona' should exist
   39.93 +     
   39.94 +  Scenario: Anonymous <%= file_name %> can not create an account with no password
   39.95 +    Given an anonymous <%= file_name %>
   39.96 +     And  no <%= file_name %> with login: 'Oona' exists
   39.97 +    When  she registers an account with login: 'oona', password: '',       password_confirmation: 'monkey' and email: 'unactivated@example.com'
   39.98 +    Then  she should be at the '<%= model_controller_routing_path %>/new' page
   39.99 +     And  she should     see an errorExplanation message 'Password can't be blank'
  39.100 +     And  no <%= file_name %> with login: 'oona' should exist
  39.101 +     
  39.102 +  Scenario: Anonymous <%= file_name %> can not create an account with no password_confirmation
  39.103 +    Given an anonymous <%= file_name %>
  39.104 +     And  no <%= file_name %> with login: 'Oona' exists
  39.105 +    When  she registers an account with login: 'oona', password: 'monkey', password_confirmation: ''       and email: 'unactivated@example.com'
  39.106 +    Then  she should be at the '<%= model_controller_routing_path %>/new' page
  39.107 +     And  she should     see an errorExplanation message 'Password confirmation can't be blank'
  39.108 +     And  no <%= file_name %> with login: 'oona' should exist
  39.109 +     
  39.110 +  Scenario: Anonymous <%= file_name %> can not create an account with mismatched password & password_confirmation
  39.111 +    Given an anonymous <%= file_name %>
  39.112 +     And  no <%= file_name %> with login: 'Oona' exists
  39.113 +    When  she registers an account with login: 'oona', password: 'monkey', password_confirmation: 'monkeY' and email: 'unactivated@example.com'
  39.114 +    Then  she should be at the '<%= model_controller_routing_path %>/new' page
  39.115 +     And  she should     see an errorExplanation message 'Password doesn't match confirmation'
  39.116 +     And  no <%= file_name %> with login: 'oona' should exist
  39.117 +     
  39.118 +  Scenario: Anonymous <%= file_name %> can not create an account with bad email
  39.119 +    Given an anonymous <%= file_name %>
  39.120 +     And  no <%= file_name %> with login: 'Oona' exists
  39.121 +    When  she registers an account with login: 'oona', password: 'monkey', password_confirmation: 'monkey' and email: ''
  39.122 +    Then  she should be at the '<%= model_controller_routing_path %>/new' page
  39.123 +     And  she should     see an errorExplanation message 'Email can't be blank'
  39.124 +     And  no <%= file_name %> with login: 'oona' should exist
  39.125 +    When  she registers an account with login: 'oona', password: 'monkey', password_confirmation: 'monkey' and email: 'unactivated@example.com'
  39.126 +    Then  she should be redirected to the home page
  39.127 +    When  she follows that redirect!
  39.128 +    Then  she should see a notice message 'Thanks for signing up!'
  39.129 +     And  a <%= file_name %> with login: 'oona' should exist
  39.130 +     And  the <%= file_name %> should have login: 'oona', and email: 'unactivated@example.com'
  39.131 +<% if options[:include_activation] %>
  39.132 +     And  the <%= file_name %>'s activation_code should not be nil
  39.133 +     And  the <%= file_name %>'s activated_at    should     be nil
  39.134 +     And  she should not be logged in
  39.135 +<% else %>
  39.136 +     And  oona should be logged in
  39.137 +<% end %>
  39.138 +     
  39.139 +<% if options[:include_activation] %>
  39.140 +Story: Activating an account
  39.141 +  As a registered, but not yet activated, <%= file_name %>
  39.142 +  I want to be able to activate my account
  39.143 +  So that I can log in to the site
  39.144 +
  39.145 +  #
  39.146 +  # Successful activation
  39.147 +  #
  39.148 +  Scenario: Not-yet-activated <%= file_name %> can activate her account
  39.149 +    Given a registered <%= file_name %> named 'Reggie'
  39.150 +     And  the <%= file_name %> has activation_code: 'activate_me', activated_at: nil! 
  39.151 +     And  we try hard to remember the <%= file_name %>'s updated_at, and created_at
  39.152 +    When  she goes to /activate/activate_me
  39.153 +    Then  she should be redirected to 'login'
  39.154 +    When  she follows that redirect!
  39.155 +    Then  she should see a notice message 'Signup complete!'
  39.156 +     And  a <%= file_name %> with login: 'reggie' should exist
  39.157 +     And  the <%= file_name %> should have login: 'reggie', and email: 'registered@example.com'
  39.158 +     And  the <%= file_name %>'s activation_code should     be nil
  39.159 +     And  the <%= file_name %>'s activated_at    should not be nil
  39.160 +     And  she should not be logged in
  39.161 +
  39.162 +  #
  39.163 +  # Unsuccessful activation
  39.164 +  #
  39.165 +  Scenario: Not-yet-activated <%= file_name %> can't activate her account with a blank activation code
  39.166 +    Given a registered <%= file_name %> named 'Reggie'
  39.167 +     And  the <%= file_name %> has activation_code: 'activate_me', activated_at: nil! 
  39.168 +     And  we try hard to remember the <%= file_name %>'s updated_at, and created_at
  39.169 +    When  she goes to /activate/
  39.170 +    Then  she should be redirected to the home page
  39.171 +    When  she follows that redirect!
  39.172 +    Then  she should see an error  message 'activation code was missing'
  39.173 +     And  a <%= file_name %> with login: 'reggie' should exist
  39.174 +     And  the <%= file_name %> should have login: 'reggie', activation_code: 'activate_me', and activated_at: nil!
  39.175 +     And  the <%= file_name %>'s updated_at should stay the same under to_s
  39.176 +     And  she should not be logged in
  39.177 +  
  39.178 +  Scenario: Not-yet-activated <%= file_name %> can't activate her account with a bogus activation code
  39.179 +    Given a registered <%= file_name %> named 'Reggie'
  39.180 +     And  the <%= file_name %> has activation_code: 'activate_me', activated_at: nil! 
  39.181 +     And  we try hard to remember the <%= file_name %>'s updated_at, and created_at
  39.182 +    When  she goes to /activate/i_haxxor_joo
  39.183 +    Then  she should be redirected to the home page
  39.184 +    When  she follows that redirect!
  39.185 +    Then  she should see an error  message 'couldn\'t find a <%= file_name %> with that activation code'
  39.186 +     And  a <%= file_name %> with login: 'reggie' should exist
  39.187 +     And  the <%= file_name %> should have login: 'reggie', activation_code: 'activate_me', and activated_at: nil!
  39.188 +     And  the <%= file_name %>'s updated_at should stay the same under to_s
  39.189 +     And  she should not be logged in
  39.190 +<% end %>
    40.1 new file mode 100644
    40.2 --- /dev/null
    40.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/stories/users/sessions.story
    40.4 @@ -0,0 +1,134 @@
    40.5 +Users want to know that nobody can masquerade as them.  We want to extend trust
    40.6 +only to visitors who present the appropriate credentials.  Everyone wants this
    40.7 +identity verification to be as secure and convenient as possible.
    40.8 +
    40.9 +Story: Logging in
   40.10 +  As an anonymous <%= file_name %> with an account
   40.11 +  I want to log in to my account
   40.12 +  So that I can be myself
   40.13 +
   40.14 +  #
   40.15 +  # Log in: get form
   40.16 +  #
   40.17 +  Scenario: Anonymous <%= file_name %> can get a login form.
   40.18 +    Given an anonymous <%= file_name %>
   40.19 +    When  she goes to /login
   40.20 +    Then  she should be at the new <%= controller_file_name %> page
   40.21 +     And  the page should look AWESOME
   40.22 +     And  she should see a <form> containing a textfield: Login, password: Password, and submit: 'Log in'
   40.23 +  
   40.24 +  #
   40.25 +  # Log in successfully, but don't remember me
   40.26 +  #
   40.27 +  Scenario: Anonymous <%= file_name %> can log in
   40.28 +    Given an anonymous <%= file_name %>
   40.29 +     And  an activated <%= file_name %> named 'reggie'
   40.30 +    When  she creates a singular <%= controller_file_name %> with login: 'reggie', password: 'monkey', remember me: ''
   40.31 +    Then  she should be redirected to the home page
   40.32 +    When  she follows that redirect!
   40.33 +    Then  she should see a notice message 'Logged in successfully'
   40.34 +     And  reggie should be logged in
   40.35 +     And  she should not have an auth_token cookie
   40.36 +   
   40.37 +  Scenario: Logged-in <%= file_name %> who logs in should be the new one
   40.38 +    Given an activated <%= file_name %> named 'reggie'
   40.39 +     And  an activated <%= file_name %> logged in as 'oona'
   40.40 +    When  she creates a singular <%= controller_file_name %> with login: 'reggie', password: 'monkey', remember me: ''
   40.41 +    Then  she should be redirected to the home page
   40.42 +    When  she follows that redirect!
   40.43 +    Then  she should see a notice message 'Logged in successfully'
   40.44 +     And  reggie should be logged in
   40.45 +     And  she should not have an auth_token cookie
   40.46 +  
   40.47 +  #
   40.48 +  # Log in successfully, remember me
   40.49 +  #
   40.50 +  Scenario: Anonymous <%= file_name %> can log in and be remembered
   40.51 +    Given an anonymous <%= file_name %>
   40.52 +     And  an activated <%= file_name %> named 'reggie'
   40.53 +    When  she creates a singular <%= controller_file_name %> with login: 'reggie', password: 'monkey', remember me: '1'
   40.54 +    Then  she should be redirected to the home page
   40.55 +    When  she follows that redirect!
   40.56 +    Then  she should see a notice message 'Logged in successfully'
   40.57 +     And  reggie should be logged in
   40.58 +     And  she should have an auth_token cookie
   40.59 +	      # assumes fixtures were run sometime
   40.60 +     And  her session store should have <%= file_name %>_id: 4
   40.61 +   
   40.62 +  #
   40.63 +  # Log in unsuccessfully
   40.64 +  #
   40.65 +  
   40.66 +  Scenario: Logged-in <%= file_name %> who fails logs in should be logged out
   40.67 +    Given an activated <%= file_name %> named 'oona'
   40.68 +    When  she creates a singular <%= controller_file_name %> with login: 'oona', password: '1234oona', remember me: '1'
   40.69 +    Then  she should be redirected to the home page
   40.70 +    When  she follows that redirect!
   40.71 +    Then  she should see a notice message 'Logged in successfully'
   40.72 +     And  oona should be logged in
   40.73 +     And  she should have an auth_token cookie
   40.74 +    When  she creates a singular <%= controller_file_name %> with login: 'reggie', password: 'i_haxxor_joo'
   40.75 +    Then  she should be at the new <%= controller_file_name %> page
   40.76 +    Then  she should see an error message 'Couldn't log you in as 'reggie''
   40.77 +     And  she should not be logged in
   40.78 +     And  she should not have an auth_token cookie
   40.79 +     And  her session store should not have <%= file_name %>_id
   40.80 +  
   40.81 +  Scenario: Log-in with bogus info should fail until it doesn't
   40.82 +    Given an activated <%= file_name %> named 'reggie'
   40.83 +    When  she creates a singular <%= controller_file_name %> with login: 'reggie', password: 'i_haxxor_joo'
   40.84 +    Then  she should be at the new <%= controller_file_name %> page
   40.85 +    Then  she should see an error message 'Couldn't log you in as 'reggie''
   40.86 +     And  she should not be logged in
   40.87 +     And  she should not have an auth_token cookie
   40.88 +     And  her session store should not have <%= file_name %>_id
   40.89 +    When  she creates a singular <%= controller_file_name %> with login: 'reggie', password: ''
   40.90 +    Then  she should be at the new <%= controller_file_name %> page
   40.91 +    Then  she should see an error message 'Couldn't log you in as 'reggie''
   40.92 +     And  she should not be logged in
   40.93 +     And  she should not have an auth_token cookie
   40.94 +     And  her session store should not have <%= file_name %>_id
   40.95 +    When  she creates a singular <%= controller_file_name %> with login: '', password: 'monkey'
   40.96 +    Then  she should be at the new <%= controller_file_name %> page
   40.97 +    Then  she should see an error message 'Couldn't log you in as '''
   40.98 +     And  she should not be logged in
   40.99 +     And  she should not have an auth_token cookie
  40.100 +     And  her session store should not have <%= file_name %>_id
  40.101 +    When  she creates a singular <%= controller_file_name %> with login: 'leonard_shelby', password: 'monkey'
  40.102 +    Then  she should be at the new <%= controller_file_name %> page
  40.103 +    Then  she should see an error message 'Couldn't log you in as 'leonard_shelby''
  40.104 +     And  she should not be logged in
  40.105 +     And  she should not have an auth_token cookie
  40.106 +     And  her session store should not have <%= file_name %>_id
  40.107 +    When  she creates a singular <%= controller_file_name %> with login: 'reggie', password: 'monkey', remember me: '1'
  40.108 +    Then  she should be redirected to the home page
  40.109 +    When  she follows that redirect!
  40.110 +    Then  she should see a notice message 'Logged in successfully'
  40.111 +     And  reggie should be logged in
  40.112 +     And  she should have an auth_token cookie
  40.113 +	      # assumes fixtures were run sometime
  40.114 +     And  her session store should have <%= file_name %>_id: 4
  40.115 +
  40.116 +
  40.117 +  #
  40.118 +  # Log out successfully (should always succeed)
  40.119 +  #
  40.120 +  Scenario: Anonymous (logged out) <%= file_name %> can log out.
  40.121 +    Given an anonymous <%= file_name %>
  40.122 +    When  she goes to /logout
  40.123 +    Then  she should be redirected to the home page
  40.124 +    When  she follows that redirect!
  40.125 +    Then  she should see a notice message 'You have been logged out'
  40.126 +     And  she should not be logged in
  40.127 +     And  she should not have an auth_token cookie
  40.128 +     And  her session store should not have <%= file_name %>_id
  40.129 +
  40.130 +  Scenario: Logged in <%= file_name %> can log out.
  40.131 +    Given an activated <%= file_name %> logged in as 'reggie'
  40.132 +    When  she goes to /logout
  40.133 +    Then  she should be redirected to the home page
  40.134 +    When  she follows that redirect!
  40.135 +    Then  she should see a notice message 'You have been logged out'
  40.136 +     And  she should not be logged in
  40.137 +     And  she should not have an auth_token cookie
  40.138 +     And  her session store should not have <%= file_name %>_id
    41.1 new file mode 100644
    41.2 --- /dev/null
    41.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/test/functional_test.rb
    41.4 @@ -0,0 +1,82 @@
    41.5 +require File.dirname(__FILE__) + '/../test_helper'
    41.6 +require '<%= controller_file_name %>_controller'
    41.7 +
    41.8 +# Re-raise errors caught by the controller.
    41.9 +class <%= controller_class_name %>Controller; def rescue_action(e) raise e end; end
   41.10 +
   41.11 +class <%= controller_class_name %>ControllerTest < ActionController::TestCase
   41.12 +  # Be sure to include AuthenticatedTestHelper in test/test_helper.rb instead
   41.13 +  # Then, you can remove it from this and the units test.
   41.14 +  include AuthenticatedTestHelper
   41.15 +
   41.16 +  fixtures :<%= table_name %>
   41.17 +
   41.18 +  def test_should_login_and_redirect
   41.19 +    post :create, :login => 'quentin', :password => 'monkey'
   41.20 +    assert session[:<%= file_name %>_id]
   41.21 +    assert_response :redirect
   41.22 +  end
   41.23 +
   41.24 +  def test_should_fail_login_and_not_redirect
   41.25 +    post :create, :login => 'quentin', :password => 'bad password'
   41.26 +    assert_nil session[:<%= file_name %>_id]
   41.27 +    assert_response :success
   41.28 +  end
   41.29 +
   41.30 +  def test_should_logout
   41.31 +    login_as :quentin
   41.32 +    get :destroy
   41.33 +    assert_nil session[:<%= file_name %>_id]
   41.34 +    assert_response :redirect
   41.35 +  end
   41.36 +
   41.37 +  def test_should_remember_me
   41.38 +    @request.cookies["auth_token"] = nil
   41.39 +    post :create, :login => 'quentin', :password => 'monkey', :remember_me => "1"
   41.40 +    assert_not_nil @response.cookies["auth_token"]
   41.41 +  end
   41.42 +
   41.43 +  def test_should_not_remember_me
   41.44 +    @request.cookies["auth_token"] = nil
   41.45 +    post :create, :login => 'quentin', :password => 'monkey', :remember_me => "0"
   41.46 +    puts @response.cookies["auth_token"]
   41.47 +    assert @response.cookies["auth_token"].blank?
   41.48 +  end
   41.49 +  
   41.50 +  def test_should_delete_token_on_logout
   41.51 +    login_as :quentin
   41.52 +    get :destroy
   41.53 +    assert @response.cookies["auth_token"].blank?
   41.54 +  end
   41.55 +
   41.56 +  def test_should_login_with_cookie
   41.57 +    <%= table_name %>(:quentin).remember_me
   41.58 +    @request.cookies["auth_token"] = cookie_for(:quentin)
   41.59 +    get :new
   41.60 +    assert @controller.send(:logged_in?)
   41.61 +  end
   41.62 +
   41.63 +  def test_should_fail_expired_cookie_login
   41.64 +    <%= table_name %>(:quentin).remember_me
   41.65 +    <%= table_name %>(:quentin).update_attribute :remember_token_expires_at, 5.minutes.ago
   41.66 +    @request.cookies["auth_token"] = cookie_for(:quentin)
   41.67 +    get :new
   41.68 +    assert !@controller.send(:logged_in?)
   41.69 +  end
   41.70 +
   41.71 +  def test_should_fail_cookie_login
   41.72 +    <%= table_name %>(:quentin).remember_me
   41.73 +    @request.cookies["auth_token"] = auth_token('invalid_auth_token')
   41.74 +    get :new
   41.75 +    assert !@controller.send(:logged_in?)
   41.76 +  end
   41.77 +
   41.78 +  protected
   41.79 +    def auth_token(token)
   41.80 +      CGI::Cookie.new('name' => 'auth_token', 'value' => token)
   41.81 +    end
   41.82 +    
   41.83 +    def cookie_for(<%= file_name %>)
   41.84 +      auth_token <%= table_name %>(<%= file_name %>).remember_token
   41.85 +    end
   41.86 +end
    42.1 new file mode 100644
    42.2 --- /dev/null
    42.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/test/mailer_test.rb
    42.4 @@ -0,0 +1,31 @@
    42.5 +require File.dirname(__FILE__) + '/../test_helper'
    42.6 +require '<%= file_name %>_mailer'
    42.7 +
    42.8 +class <%= class_name %>MailerTest < Test::Unit::TestCase
    42.9 +  FIXTURES_PATH = File.dirname(__FILE__) + '/../fixtures'
   42.10 +  CHARSET = "utf-8"
   42.11 +
   42.12 +  include ActionMailer::Quoting
   42.13 +
   42.14 +  def setup
   42.15 +    ActionMailer::Base.delivery_method = :test
   42.16 +    ActionMailer::Base.perform_deliveries = true
   42.17 +    ActionMailer::Base.deliveries = []
   42.18 +
   42.19 +    @expected = TMail::Mail.new
   42.20 +    @expected.set_content_type "text", "plain", { "charset" => CHARSET }
   42.21 +  end
   42.22 +
   42.23 +  def test_dummy_test
   42.24 +    #do nothing
   42.25 +  end
   42.26 +
   42.27 +  private
   42.28 +    def read_fixture(action)
   42.29 +      IO.readlines("#{FIXTURES_PATH}/<%= file_name %>_mailer/#{action}")
   42.30 +    end
   42.31 +
   42.32 +    def encode(subject)
   42.33 +      quoted_printable(subject, CHARSET)
   42.34 +    end
   42.35 +end
    43.1 new file mode 100644
    43.2 --- /dev/null
    43.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/test/model_functional_test.rb
    43.4 @@ -0,0 +1,93 @@
    43.5 +require File.dirname(__FILE__) + '/../test_helper'
    43.6 +require '<%= model_controller_file_name %>_controller'
    43.7 +
    43.8 +# Re-raise errors caught by the controller.
    43.9 +class <%= model_controller_class_name %>Controller; def rescue_action(e) raise e end; end
   43.10 +
   43.11 +class <%= model_controller_class_name %>ControllerTest < ActionController::TestCase
   43.12 +  # Be sure to include AuthenticatedTestHelper in test/test_helper.rb instead
   43.13 +  # Then, you can remove it from this and the units test.
   43.14 +  include AuthenticatedTestHelper
   43.15 +
   43.16 +  fixtures :<%= table_name %>
   43.17 +
   43.18 +  def test_should_allow_signup
   43.19 +    assert_difference '<%= class_name %>.count' do
   43.20 +      create_<%= file_name %>
   43.21 +      assert_response :redirect
   43.22 +    end
   43.23 +  end
   43.24 +
   43.25 +  def test_should_require_login_on_signup
   43.26 +    assert_no_difference '<%= class_name %>.count' do
   43.27 +      create_<%= file_name %>(:login => nil)
   43.28 +      assert assigns(:<%= file_name %>).errors.on(:login)
   43.29 +      assert_response :success
   43.30 +    end
   43.31 +  end
   43.32 +
   43.33 +  def test_should_require_password_on_signup
   43.34 +    assert_no_difference '<%= class_name %>.count' do
   43.35 +      create_<%= file_name %>(:password => nil)
   43.36 +      assert assigns(:<%= file_name %>).errors.on(:password)
   43.37 +      assert_response :success
   43.38 +    end
   43.39 +  end
   43.40 +
   43.41 +  def test_should_require_password_confirmation_on_signup
   43.42 +    assert_no_difference '<%= class_name %>.count' do
   43.43 +      create_<%= file_name %>(:password_confirmation => nil)
   43.44 +      assert assigns(:<%= file_name %>).errors.on(:password_confirmation)
   43.45 +      assert_response :success
   43.46 +    end
   43.47 +  end
   43.48 +
   43.49 +  def test_should_require_email_on_signup
   43.50 +    assert_no_difference '<%= class_name %>.count' do
   43.51 +      create_<%= file_name %>(:email => nil)
   43.52 +      assert assigns(:<%= file_name %>).errors.on(:email)
   43.53 +      assert_response :success
   43.54 +    end
   43.55 +  end
   43.56 +  <% if options[:stateful] %>
   43.57 +  def test_should_sign_up_user_in_pending_state
   43.58 +    create_<%= file_name %>
   43.59 +    assigns(:<%= file_name %>).reload
   43.60 +    assert assigns(:<%= file_name %>).pending?
   43.61 +  end<% end %>
   43.62 +
   43.63 +  <% if options[:include_activation] %>
   43.64 +  def test_should_sign_up_user_with_activation_code
   43.65 +    create_<%= file_name %>
   43.66 +    assigns(:<%= file_name %>).reload
   43.67 +    assert_not_nil assigns(:<%= file_name %>).activation_code
   43.68 +  end
   43.69 +
   43.70 +  def test_should_activate_user
   43.71 +    assert_nil <%= class_name %>.authenticate('aaron', 'test')
   43.72 +    get :activate, :activation_code => <%= table_name %>(:aaron).activation_code
   43.73 +    assert_redirected_to '/<%= controller_routing_path %>/new'
   43.74 +    assert_not_nil flash[:notice]
   43.75 +    assert_equal <%= table_name %>(:aaron), <%= class_name %>.authenticate('aaron', 'monkey')
   43.76 +  end
   43.77 +  
   43.78 +  def test_should_not_activate_user_without_key
   43.79 +    get :activate
   43.80 +    assert_nil flash[:notice]
   43.81 +  rescue ActionController::RoutingError
   43.82 +    # in the event your routes deny this, we'll just bow out gracefully.
   43.83 +  end
   43.84 +
   43.85 +  def test_should_not_activate_user_with_blank_key
   43.86 +    get :activate, :activation_code => ''
   43.87 +    assert_nil flash[:notice]
   43.88 +  rescue ActionController::RoutingError
   43.89 +    # well played, sir
   43.90 +  end<% end %>
   43.91 +
   43.92 +  protected
   43.93 +    def create_<%= file_name %>(options = {})
   43.94 +      post :create, :<%= file_name %> => { :login => 'quire', :email => 'quire@example.com',
   43.95 +        :password => 'quire69', :password_confirmation => 'quire69' }.merge(options)
   43.96 +    end
   43.97 +end
    44.1 new file mode 100644
    44.2 --- /dev/null
    44.3 +++ b/vendor/plugins/restful_authentication/generators/authenticated/templates/test/unit_test.rb
    44.4 @@ -0,0 +1,164 @@
    44.5 +require File.dirname(__FILE__) + '/../test_helper'
    44.6 +
    44.7 +class <%= class_name %>Test < ActiveSupport::TestCase
    44.8 +  # Be sure to include AuthenticatedTestHelper in test/test_helper.rb instead.
    44.9 +  # Then, you can remove it from this and the functional test.
   44.10 +  include AuthenticatedTestHelper
   44.11 +  fixtures :<%= table_name %>
   44.12 +
   44.13 +  def test_should_create_<%= file_name %>
   44.14 +    assert_difference '<%= class_name %>.count' do
   44.15 +      <%= file_name %> = create_<%= file_name %>
   44.16 +      assert !<%= file_name %>.new_record?, "#{<%= file_name %>.errors.full_messages.to_sentence}"
   44.17 +    end
   44.18 +  end
   44.19 +<% if options[:include_activation] %>
   44.20 +  def test_should_initialize_activation_code_upon_creation
   44.21 +    <%= file_name %> = create_<%= file_name %>
   44.22 +    <%= file_name %>.reload
   44.23 +    assert_not_nil <%= file_name %>.activation_code
   44.24 +  end
   44.25 +<% end %><% if options[:stateful] %>
   44.26 +  def test_should_create_and_start_in_pending_state
   44.27 +    <%= file_name %> = create_<%= file_name %>
   44.28 +    <%= file_name %>.reload
   44.29 +    assert <%= file_name %>.pending?
   44.30 +  end
   44.31 +
   44.32 +<% end %>
   44.33 +  def test_should_require_login
   44.34 +    assert_no_difference '<%= class_name %>.count' do
   44.35 +      u = create_<%= file_name %>(:login => nil)
   44.36 +      assert u.errors.on(:login)
   44.37 +    end
   44.38 +  end
   44.39 +
   44.40 +  def test_should_require_password
   44.41 +    assert_no_difference '<%= class_name %>.count' do
   44.42 +      u = create_<%= file_name %>(:password => nil)
   44.43 +      assert u.errors.on(:password)
   44.44 +    end
   44.45 +  end
   44.46 +
   44.47 +  def test_should_require_password_confirmation
   44.48 +    assert_no_difference '<%= class_name %>.count' do
   44.49 +      u = create_<%= file_name %>(:password_confirmation => nil)
   44.50 +      assert u.errors.on(:password_confirmation)
   44.51 +    end
   44.52 +  end
   44.53 +
   44.54 +  def test_should_require_email
   44.55 +    assert_no_difference '<%= class_name %>.count' do
   44.56 +      u = create_<%= file_name %>(:email => nil)
   44.57 +      assert u.errors.on(:email)
   44.58 +    end
   44.59 +  end
   44.60 +
   44.61 +  def test_should_reset_password
   44.62 +    <%= table_name %>(:quentin).update_attributes(:password => 'new password', :password_confirmation => 'new password')
   44.63 +    assert_equal <%= table_name %>(:quentin), <%= class_name %>.authenticate('quentin', 'new password')
   44.64 +  end
   44.65 +
   44.66 +  def test_should_not_rehash_password
   44.67 +    <%= table_name %>(:quentin).update_attributes(:login => 'quentin2')
   44.68 +    assert_equal <%= table_name %>(:quentin), <%= class_name %>.authenticate('quentin2', 'monkey')
   44.69 +  end
   44.70 +
   44.71 +  def test_should_authenticate_<%= file_name %>
   44.72 +    assert_equal <%= table_name %>(:quentin), <%= class_name %>.authenticate('quentin', 'monkey')
   44.73 +  end
   44.74 +
   44.75 +  def test_should_set_remember_token
   44.76 +    <%= table_name %>(:quentin).remember_me
   44.77 +    assert_not_nil <%= table_name %>(:quentin).remember_token
   44.78 +    assert_not_nil <%= table_name %>(:quentin).remember_token_expires_at
   44.79 +  end
   44.80 +
   44.81 +  def test_should_unset_remember_token
   44.82 +    <%= table_name %>(:quentin).remember_me
   44.83 +    assert_not_nil <%= table_name %>(:quentin).remember_token
   44.84 +    <%= table_name %>(:quentin).forget_me
   44.85 +    assert_nil <%= table_name %>(:quentin).remember_token
   44.86 +  end
   44.87 +
   44.88 +  def test_should_remember_me_for_one_week
   44.89 +    before = 1.week.from_now.utc
   44.90 +    <%= table_name %>(:quentin).remember_me_for 1.week
   44.91 +    after = 1.week.from_now.utc
   44.92 +    assert_not_nil <%= table_name %>(:quentin).remember_token
   44.93 +    assert_not_nil <%= table_name %>(:quentin).remember_token_expires_at
   44.94 +    assert <%= table_name %>(:quentin).remember_token_expires_at.between?(before, after)
   44.95 +  end
   44.96 +
   44.97 +  def test_should_remember_me_until_one_week
   44.98 +    time = 1.week.from_now.utc
   44.99 +    <%= table_name %>(:quentin).remember_me_until time
  44.100 +    assert_not_nil <%= table_name %>(:quentin).remember_token
  44.101 +    assert_not_nil <%= table_name %>(:quentin).remember_token_expires_at
  44.102 +    assert_equal <%= table_name %>(:quentin).remember_token_expires_at, time
  44.103 +  end
  44.104 +
  44.105 +  def test_should_remember_me_default_two_weeks
  44.106 +    before = 2.weeks.from_now.utc
  44.107 +    <%= table_name %>(:quentin).remember_me
  44.108 +    after = 2.weeks.from_now.utc
  44.109 +    assert_not_nil <%= table_name %>(:quentin).remember_token
  44.110 +    assert_not_nil <%= table_name %>(:quentin).remember_token_expires_at
  44.111 +    assert <%= table_name %>(:quentin).remember_token_expires_at.between?(before, after)
  44.112 +  end
  44.113 +<% if options[:stateful] %>
  44.114 +  def test_should_register_passive_<%= file_name %>
  44.115 +    <%= file_name %> = create_<%= file_name %>(:password => nil, :password_confirmation => nil)
  44.116 +    assert <%= file_name %>.passive?
  44.117 +    <%= file_name %>.update_attributes(:password => 'new password', :password_confirmation => 'new password')
  44.118 +    <%= file_name %>.register!
  44.119 +    assert <%= file_name %>.pending?
  44.120 +  end
  44.121 +
  44.122 +  def test_should_suspend_<%= file_name %>
  44.123 +    <%= table_name %>(:quentin).suspend!
  44.124 +    assert <%= table_name %>(:quentin).suspended?
  44.125 +  end
  44.126 +
  44.127 +  def test_suspended_<%= file_name %>_should_not_authenticate
  44.128 +    <%= table_name %>(:quentin).suspend!
  44.129 +    assert_not_equal <%= table_name %>(:quentin), <%= class_name %>.authenticate('quentin', 'test')
  44.130 +  end
  44.131 +
  44.132 +  def test_should_unsuspend_<%= file_name %>_to_active_state
  44.133 +    <%= table_name %>(:quentin).suspend!
  44.134 +    assert <%= table_name %>(:quentin).suspended?
  44.135 +    <%= table_name %>(:quentin).unsuspend!
  44.136 +    assert <%= table_name %>(:quentin).active?
  44.137 +  end
  44.138 +
  44.139 +  def test_should_unsuspend_<%= file_name %>_with_nil_activation_code_and_activated_at_to_passive_state
  44.140 +    <%= table_name %>(:quentin).suspend!
  44.141 +    <%= class_name %>.update_all :activation_code => nil, :activated_at => nil
  44.142 +    assert <%= table_name %>(:quentin).suspended?
  44.143 +    <%= table_name %>(:quentin).reload.unsuspend!
  44.144 +    assert <%= table_name %>(:quentin).passive?
  44.145 +  end
  44.146 +
  44.147 +  def test_should_unsuspend_<%= file_name %>_with_activation_code_and_nil_activated_at_to_pending_state
  44.148 +    <%= table_name %>(:quentin).suspend!
  44.149 +    <%= class_name %>.update_all :activation_code => 'foo-bar', :activated_at => nil
  44.150 +    assert <%= table_name %>(:quentin).suspended?
  44.151 +    <%= table_name %>(:quentin).reload.unsuspend!
  44.152 +    assert <%= table_name %>(:quentin).pending?
  44.153 +  end
  44.154 +
  44.155 +  def test_should_delete_<%= file_name %>
  44.156 +    assert_nil <%= table_name %>(:quentin).deleted_at
  44.157 +    <%= table_name %>(:quentin).delete!
  44.158 +    assert_not_nil <%= table_name %>(:quentin).deleted_at
  44.159 +    assert <%= table_name %>(:quentin).deleted?
  44.160 +  end
  44.161 +<% end %>
  44.162 +protected
  44.163 +  def create_<%= file_name %>(options = {})
  44.164 +    record = <%= class_name %>.new({ :login => 'quire', :email => 'quire@example.com', :password => 'quire69', :password_confirmation => 'quire69' }.merge(options))
  44.165 +    record.<% if options[:stateful] %>register! if record.valid?<% else %>save<% end %>
  44.166 +    record
  44.167 +  end
  44.168 +end
    45.1 new file mode 100644
    45.2 --- /dev/null
    45.3 +++ b/vendor/plugins/restful_authentication/init.rb
    45.4 @@ -0,0 +1,1 @@
    45.5 +require File.join(File.dirname(__FILE__), "rails", "init")
    46.1 new file mode 100644
    46.2 --- /dev/null
    46.3 +++ b/vendor/plugins/restful_authentication/install.rb
    46.4 @@ -0,0 +1,1 @@
    46.5 +puts IO.read(File.join(File.dirname(__FILE__), 'README'))
    46.6 \ No newline at end of file
    47.1 new file mode 100644
    47.2 --- /dev/null
    47.3 +++ b/vendor/plugins/restful_authentication/lib/authentication.rb
    47.4 @@ -0,0 +1,40 @@
    47.5 +module Authentication
    47.6 +  mattr_accessor :login_regex, :bad_login_message, 
    47.7 +    :name_regex, :bad_name_message,
    47.8 +    :email_name_regex, :domain_head_regex, :domain_tld_regex, :email_regex, :bad_email_message
    47.9 +
   47.10 +  self.login_regex       = /\A\w[\w\.\-_@]+\z/                     # ASCII, strict
   47.11 +  # self.login_regex       = /\A[[:alnum:]][[:alnum:]\.\-_@]+\z/     # Unicode, strict
   47.12 +  # self.login_regex       = /\A[^[:cntrl:]\\<>\/&]*\z/              # Unicode, permissive
   47.13 +
   47.14 +  self.bad_login_message = "use only letters, numbers, and .-_@ please.".freeze
   47.15 +
   47.16 +  self.name_regex        = /\A[^[:cntrl:]\\<>\/&]*\z/              # Unicode, permissive
   47.17 +  self.bad_name_message  = "avoid non-printing characters and \\&gt;&lt;&amp;/ please.".freeze
   47.18 +
   47.19 +  self.email_name_regex  = '[\w\.%\+\-]+'.freeze
   47.20 +  self.domain_head_regex = '(?:[A-Z0-9\-]+\.)+'.freeze
   47.21 +  self.domain_tld_regex  = '(?:[A-Z]{2}|com|org|net|edu|gov|mil|biz|info|mobi|name|aero|jobs|museum)'.freeze
   47.22 +  self.email_regex       = /\A#{email_name_regex}@#{domain_head_regex}#{domain_tld_regex}\z/i
   47.23 +  self.bad_email_message = "should look like an email address.".freeze
   47.24 +
   47.25 +  def self.included(recipient)
   47.26 +    recipient.extend(ModelClassMethods)
   47.27 +    recipient.class_eval do
   47.28 +      include ModelInstanceMethods
   47.29 +    end
   47.30 +  end
   47.31 +
   47.32 +  module ModelClassMethods
   47.33 +    def secure_digest(*args)
   47.34 +      Digest::SHA1.hexdigest(args.flatten.join('--'))
   47.35 +    end
   47.36 +
   47.37 +    def make_token
   47.38 +      secure_digest(Time.now, (1..10).map{ rand.to_s })
   47.39 +    end
   47.40 +  end # class methods
   47.41 +
   47.42 +  module ModelInstanceMethods
   47.43 +  end # instance methods
   47.44 +end
    48.1 new file mode 100644
    48.2 --- /dev/null
    48.3 +++ b/vendor/plugins/restful_authentication/lib/authentication/by_cookie_token.rb
    48.4 @@ -0,0 +1,82 @@
    48.5 +# -*- coding: mule-utf-8 -*-
    48.6 +module Authentication
    48.7 +  module ByCookieToken
    48.8 +    # Stuff directives into including module 
    48.9 +    def self.included(recipient)
   48.10 +      recipient.extend(ModelClassMethods)
   48.11 +      recipient.class_eval do
   48.12 +        include ModelInstanceMethods
   48.13 +      end
   48.14 +    end
   48.15 +
   48.16 +    #
   48.17 +    # Class Methods
   48.18 +    #
   48.19 +    module ModelClassMethods
   48.20 +    end # class methods
   48.21 +
   48.22 +    #
   48.23 +    # Instance Methods
   48.24 +    #
   48.25 +    module ModelInstanceMethods
   48.26 +      def remember_token?
   48.27 +        (!remember_token.blank?) && 
   48.28 +          remember_token_expires_at && (Time.now.utc < remember_token_expires_at.utc)
   48.29 +      end
   48.30 +
   48.31 +      # These create and unset the fields required for remembering users between browser closes
   48.32 +      def remember_me
   48.33 +        remember_me_for 2.weeks
   48.34 +      end
   48.35 +
   48.36 +      def remember_me_for(time)
   48.37 +        remember_me_until time.from_now.utc
   48.38 +      end
   48.39 +
   48.40 +      def remember_me_until(time)
   48.41 +        self.remember_token_expires_at = time
   48.42 +        self.remember_token            = self.class.make_token
   48.43 +        save(false)
   48.44 +      end
   48.45 +
   48.46 +      # refresh token (keeping same expires_at) if it exists
   48.47 +      def refresh_token
   48.48 +        if remember_token?
   48.49 +          self.remember_token = self.class.make_token 
   48.50 +          save(false)      
   48.51 +        end
   48.52 +      end
   48.53 +
   48.54 +      # 
   48.55 +      # Deletes the server-side record of the authentication token.  The
   48.56 +      # client-side (browser cookie) and server-side (this remember_token) must
   48.57 +      # always be deleted together.
   48.58 +      #
   48.59 +      def forget_me
   48.60 +        self.remember_token_expires_at = nil
   48.61 +        self.remember_token            = nil
   48.62 +        save(false)
   48.63 +      end
   48.64 +    end # instance methods
   48.65 +  end
   48.66 +
   48.67 +  module ByCookieTokenController
   48.68 +    # Stuff directives into including module 
   48.69 +    def self.included( recipient )
   48.70 +      recipient.extend( ControllerClassMethods )
   48.71 +      recipient.class_eval do
   48.72 +        include ControllerInstanceMethods
   48.73 +      end
   48.74 +    end
   48.75 +
   48.76 +    #
   48.77 +    # Class Methods
   48.78 +    #
   48.79 +    module ControllerClassMethods
   48.80 +    end # class methods
   48.81 +    
   48.82 +    module ControllerInstanceMethods
   48.83 +    end # instance methods
   48.84 +  end
   48.85 +end
   48.86 +
    49.1 new file mode 100644
    49.2 --- /dev/null
    49.3 +++ b/vendor/plugins/restful_authentication/lib/authentication/by_password.rb
    49.4 @@ -0,0 +1,64 @@
    49.5 +module Authentication
    49.6 +  module ByPassword
    49.7 +    # Stuff directives into including module
    49.8 +    def self.included(recipient)
    49.9 +      recipient.extend(ModelClassMethods)
   49.10 +      recipient.class_eval do
   49.11 +        include ModelInstanceMethods
   49.12 +        
   49.13 +        # Virtual attribute for the unencrypted password
   49.14 +        attr_accessor :password
   49.15 +        validates_presence_of     :password,                   :if => :password_required?
   49.16 +        validates_presence_of     :password_confirmation,      :if => :password_required?
   49.17 +        validates_confirmation_of :password,                   :if => :password_required?
   49.18 +        validates_length_of       :password, :within => 6..40, :if => :password_required?
   49.19 +        before_save :encrypt_password
   49.20 +      end
   49.21 +    end # #included directives
   49.22 +
   49.23 +    #
   49.24 +    # Class Methods
   49.25 +    #
   49.26 +    module ModelClassMethods
   49.27 +      # This provides a modest increased defense against a dictionary attack if
   49.28 +      # your db were ever compromised, but will invalidate existing passwords.
   49.29 +      # See the README and the file config/initializers/site_keys.rb
   49.30 +      #
   49.31 +      # It may not be obvious, but if you set REST_AUTH_SITE_KEY to nil and
   49.32 +      # REST_AUTH_DIGEST_STRETCHES to 1 you'll have backwards compatibility with
   49.33 +      # older versions of restful-authentication.
   49.34 +      def password_digest(password, salt)
   49.35 +        digest = REST_AUTH_SITE_KEY
   49.36 +        REST_AUTH_DIGEST_STRETCHES.times do
   49.37 +          digest = secure_digest(digest, salt, password, REST_AUTH_SITE_KEY)
   49.38 +        end
   49.39 +        digest
   49.40 +      end      
   49.41 +    end # class methods
   49.42 +
   49.43 +    #
   49.44 +    # Instance Methods
   49.45 +    #
   49.46 +    module ModelInstanceMethods
   49.47 +      
   49.48 +      # Encrypts the password with the user salt
   49.49 +      def encrypt(password)
   49.50 +        self.class.password_digest(password, salt)
   49.51 +      end
   49.52 +      
   49.53 +      def authenticated?(password)
   49.54 +        crypted_password == encrypt(password)
   49.55 +      end
   49.56 +      
   49.57 +      # before filter 
   49.58 +      def encrypt_password
   49.59 +        return if password.blank?
   49.60 +        self.salt = self.class.make_token if new_record?
   49.61 +        self.crypted_password = encrypt(password)
   49.62 +      end
   49.63 +      def password_required?
   49.64 +        crypted_password.blank? || !password.blank?
   49.65 +      end
   49.66 +    end # instance methods
   49.67 +  end
   49.68 +end
    50.1 new file mode 100644
    50.2 --- /dev/null
    50.3 +++ b/vendor/plugins/restful_authentication/lib/authorization.rb
    50.4 @@ -0,0 +1,14 @@
    50.5 +module Authorization
    50.6 +  def self.included(recipient)
    50.7 +    recipient.extend(ModelClassMethods)
    50.8 +    recipient.class_eval do
    50.9 +      include ModelInstanceMethods
   50.10 +    end
   50.11 +  end
   50.12 +
   50.13 +  module ModelClassMethods
   50.14 +  end # class methods
   50.15 +
   50.16 +  module ModelInstanceMethods
   50.17 +  end # instance methods
   50.18 +end
    51.1 new file mode 100644
    51.2 --- /dev/null
    51.3 +++ b/vendor/plugins/restful_authentication/lib/authorization/aasm_roles.rb
    51.4 @@ -0,0 +1,63 @@
    51.5 +module Authorization
    51.6 +  module AasmRoles
    51.7 +    unless Object.constants.include? "STATEFUL_ROLES_CONSTANTS_DEFINED"
    51.8 +      STATEFUL_ROLES_CONSTANTS_DEFINED = true # sorry for the C idiom
    51.9 +    end
   51.10 +    
   51.11 +    def self.included( recipient )
   51.12 +      recipient.extend( StatefulRolesClassMethods )
   51.13 +      recipient.class_eval do
   51.14 +        include StatefulRolesInstanceMethods
   51.15 +        include AASM
   51.16 +        aasm_column :state
   51.17 +        aasm_initial_state :initial => :pending
   51.18 +        aasm_state :passive
   51.19 +        aasm_state :pending, :enter => :make_activation_code
   51.20 +        aasm_state :active,  :enter => :do_activate
   51.21 +        aasm_state :suspended
   51.22 +        aasm_state :deleted, :enter => :do_delete
   51.23 +
   51.24 +        aasm_event :register do
   51.25 +          transitions :from => :passive, :to => :pending, :guard => Proc.new {|u| !(u.crypted_password.blank? && u.password.blank?) }
   51.26 +        end
   51.27 +        
   51.28 +        aasm_event :activate do
   51.29 +          transitions :from => :pending, :to => :active 
   51.30 +        end
   51.31 +        
   51.32 +        aasm_event :suspend do
   51.33 +          transitions :from => [:passive, :pending, :active], :to => :suspended
   51.34 +        end
   51.35 +        
   51.36 +        aasm_event :delete do
   51.37 +          transitions :from => [:passive, :pending, :active, :suspended], :to => :deleted
   51.38 +        end
   51.39 +
   51.40 +        aasm_event :unsuspend do
   51.41 +          transitions :from => :suspended, :to => :active,  :guard => Proc.new {|u| !u.activated_at.blank? }
   51.42 +          transitions :from => :suspended, :to => :pending, :guard => Proc.new {|u| !u.activation_code.blank? }
   51.43 +          transitions :from => :suspended, :to => :passive
   51.44 +        end
   51.45 +      end
   51.46 +    end
   51.47 +
   51.48 +    module StatefulRolesClassMethods
   51.49 +    end # class methods
   51.50 +
   51.51 +    module StatefulRolesInstanceMethods
   51.52 +      # Returns true if the user has just been activated.
   51.53 +      def recently_activated?
   51.54 +        @activated
   51.55 +      end
   51.56 +      def do_delete
   51.57 +        self.deleted_at = Time.now.utc
   51.58 +      end
   51.59 +
   51.60 +      def do_activate
   51.61 +        @activated = true
   51.62 +        self.activated_at = Time.now.utc
   51.63 +        self.deleted_at = self.activation_code = nil
   51.64 +      end
   51.65 +    end # instance methods
   51.66 +  end
   51.67 +end
    52.1 new file mode 100644
    52.2 --- /dev/null
    52.3 +++ b/vendor/plugins/restful_authentication/lib/authorization/stateful_roles.rb
    52.4 @@ -0,0 +1,62 @@
    52.5 +module Authorization
    52.6 +  module StatefulRoles
    52.7 +    unless Object.constants.include? "STATEFUL_ROLES_CONSTANTS_DEFINED"
    52.8 +      STATEFUL_ROLES_CONSTANTS_DEFINED = true # sorry for the C idiom
    52.9 +    end
   52.10 +    
   52.11 +    def self.included( recipient )
   52.12 +      recipient.extend( StatefulRolesClassMethods )
   52.13 +      recipient.class_eval do
   52.14 +        include StatefulRolesInstanceMethods
   52.15 +        
   52.16 +        acts_as_state_machine :initial => :pending
   52.17 +        state :passive
   52.18 +        state :pending, :enter => :make_activation_code
   52.19 +        state :active,  :enter => :do_activate
   52.20 +        state :suspended
   52.21 +        state :deleted, :enter => :do_delete
   52.22 +
   52.23 +        event :register do
   52.24 +          transitions :from => :passive, :to => :pending, :guard => Proc.new {|u| !(u.crypted_password.blank? && u.password.blank?) }
   52.25 +        end
   52.26 +        
   52.27 +        event :activate do
   52.28 +          transitions :from => :pending, :to => :active 
   52.29 +        end
   52.30 +        
   52.31 +        event :suspend do
   52.32 +          transitions :from => [:passive, :pending, :active], :to => :suspended
   52.33 +        end
   52.34 +        
   52.35 +        event :delete do
   52.36 +          transitions :from => [:passive, :pending, :active, :suspended], :to => :deleted
   52.37 +        end
   52.38 +
   52.39 +        event :unsuspend do
   52.40 +          transitions :from => :suspended, :to => :active,  :guard => Proc.new {|u| !u.activated_at.blank? }
   52.41 +          transitions :from => :suspended, :to => :pending, :guard => Proc.new {|u| !u.activation_code.blank? }
   52.42 +          transitions :from => :suspended, :to => :passive
   52.43 +        end
   52.44 +      end
   52.45 +    end
   52.46 +
   52.47 +    module StatefulRolesClassMethods
   52.48 +    end # class methods
   52.49 +
   52.50 +    module StatefulRolesInstanceMethods
   52.51 +      # Returns true if the user has just been activated.
   52.52 +      def recently_activated?
   52.53 +        @activated
   52.54 +      end
   52.55 +      def do_delete
   52.56 +        self.deleted_at = Time.now.utc
   52.57 +      end
   52.58 +
   52.59 +      def do_activate
   52.60 +        @activated = true
   52.61 +        self.activated_at = Time.now.utc
   52.62 +        self.deleted_at = self.activation_code = nil
   52.63 +      end
   52.64 +    end # instance methods
   52.65 +  end
   52.66 +end
    53.1 new file mode 100644
    53.2 --- /dev/null
    53.3 +++ b/vendor/plugins/restful_authentication/lib/trustification.rb
    53.4 @@ -0,0 +1,14 @@
    53.5 +module Trustification
    53.6 +  def self.included(recipient)
    53.7 +    recipient.extend(ModelClassMethods)
    53.8 +    recipient.class_eval do
    53.9 +      include ModelInstanceMethods
   53.10 +    end
   53.11 +  end
   53.12 +
   53.13 +  module ModelClassMethods
   53.14 +  end # class methods
   53.15 +
   53.16 +  module ModelInstanceMethods
   53.17 +  end # instance methods
   53.18 +end
    54.1 new file mode 100644
    54.2 --- /dev/null
    54.3 +++ b/vendor/plugins/restful_authentication/lib/trustification/email_validation.rb
    54.4 @@ -0,0 +1,20 @@
    54.5 +module Trustification
    54.6 +  module EmailValidation
    54.7 +    unless Object.constants.include? "CONSTANTS_DEFINED"
    54.8 +      CONSTANTS_DEFINED = true # sorry for the C idiom
    54.9 +    end
   54.10 +    
   54.11 +    def self.included(recipient)
   54.12 +      recipient.extend(ClassMethods)
   54.13 +      recipient.class_eval do
   54.14 +        include InstanceMethods
   54.15 +      end
   54.16 +    end
   54.17 +
   54.18 +    module ClassMethods
   54.19 +    end # class methods
   54.20 +
   54.21 +    module InstanceMethods
   54.22 +    end # instance methods
   54.23 +  end
   54.24 +end
    55.1 new file mode 100644
    55.2 --- /dev/null
    55.3 +++ b/vendor/plugins/restful_authentication/notes/AccessControl.txt
    55.4 @@ -0,0 +1,2 @@
    55.5 +
    55.6 +See the notes in [[Authorization]]
    56.1 new file mode 100644
    56.2 --- /dev/null
    56.3 +++ b/vendor/plugins/restful_authentication/notes/Authentication.txt
    56.4 @@ -0,0 +1,5 @@
    56.5 +Guides to best practices:
    56.6 +* "The OWASP Guide to Building Secure Web Applications":http://www.owasp.org/index.php/Category:OWASP_Guide_Project
    56.7 +** specifically, of course, the chapter on Authentication.
    56.8 +* "Secure Programming for Linux and Unix HOWTO":http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/web-authentication.html
    56.9 +* "Authentication and Identification,":http://www.downes.ca/post/12 by Stephen Downes **Highly Recommended**
    57.1 new file mode 100644
    57.2 --- /dev/null
    57.3 +++ b/vendor/plugins/restful_authentication/notes/Authorization.txt
    57.4 @@ -0,0 +1,154 @@
    57.5 +h2. Authorization
    57.6 +
    57.7 +"Best Practices for Authorization":http://www.owasp.org/index.php/Guide_to_Authorization
    57.8 +# auth system should deny by default
    57.9 +# Principle of least privilege (fine-grain)
   57.10 +# each non-anonymous entry point have an access control check
   57.11 +# authorization check at or near the beginning of code implementing sensitive activities
   57.12 +# Ensure that Model code checks to ensure that the requesting user should have access to the protected resource.
   57.13 +# Reauthorization for high value activities or after idle out
   57.14 +# If custom code is required to perform authorization functions, consider
   57.15 +  fail-safe authentication and exception handling – ensure that if an exception
   57.16 +  is thrown, the user is logged out or at least prevented from accessing the
   57.17 +  protected resource or function.
   57.18 +# Well written applications centralize access control routines, so if any bugs
   57.19 +  are found, they can be fixed once and the results apply throughout the
   57.20 +  application immediately.
   57.21 +
   57.22 +h2. Authorization in a trust context
   57.23 +
   57.24 +* [http://en.wikipedia.org/wiki/Authorization]
   57.25 +* remember: goal is **prediction** not **control**
   57.26 +
   57.27 +h2. Patterns for Policy definition / Authorization / access control
   57.28 +
   57.29 +*Reference Monitor (SecPatt p256)
   57.30 +** Set of authorization rules
   57.31 +** Actor, Action, Resource => Monitor+(rules) => ctrlr
   57.32 +* Role based:
   57.33 +   subj, role, right. action, resource
   57.34 +  RBAC, access is controlled at the system level, outside of the user's control
   57.35 +* Filter based
   57.36 +  User x Controller x Action x Params --
   57.37 +* Object based
   57.38 +  model security delegation
   57.39 +* Access Control Matrix http://en.wikipedia.org/wiki/Access_Control_Matrix
   57.40 +* CommandProcessor pattern (DSL approach)
   57.41 +* DENY FROM ... / ALLOW FROM ... approach
   57.42 +* Capability based control: bundle together the designation of an object and the permission to access that object
   57.43 +  ie. I can name it if and only if I am allowed to get at it.
   57.44 +
   57.45 +h2. Notes from "Security patterns":http://www.amazon.com/Security-Patterns-Integrating-Engineering-Software/dp/0470858842
   57.46 +by M Schumacher ("website for book":http://www.securitypatterns.org/)
   57.47 +
   57.48 +Reference Monitor (SecPatt p256)
   57.49 + * Set of authorization rules
   57.50 + * Actor, Action, Resource  => Monitor+(rules) => ctrlr
   57.51 +
   57.52 += Full access with Errors (SecPatt p305)
   57.53 +
   57.54 +* Users should not be able to view data or perform operations for which they
   57.55 +  have no permissions.
   57.56 +* Hiding an available and accessible function is inappropriate, because users
   57.57 +  must be able to see what they can do.
   57.58 +* The visual appeal and usability of a graphical user interface (GUI) can be de-
   57.59 +  graded by varying layouts depending on the (current) access rights of a
   57.60 +  user. For example, blank space might appear for some users where others see
   57.61 +  options they can access, or sequence and number of menu items might differ,
   57.62 +  depending on the current user’s rights, and thus ‘blind’ operation of the menu
   57.63 +  by an expe- rienced user is no longer possible.
   57.64 +* Showing currently unavailable functions can tease users to into upgrading
   57.65 +  their access rights, for example by paying for the access or buying a license
   57.66 +  after us- ing a demo version.
   57.67 +* Trial and error are ineffective means of learning which functions are
   57.68 +  accessible.  Invoking an operation only to learn that it doesn’t work with
   57.69 +  your access rights is confusing.
   57.70 +* The privilege grouping of the typical user community might not be known at the
   57.71 +  design time of the GUI, and it might change over time, for example through
   57.72 +  organizational or business process changes, so that providing a few special
   57.73 +  modes of the GUI depending on the corresponding user roles is inappropriate.
   57.74 +* Checking whether a function is allowed by a user is most efficient, robust and
   57.75 +  secure, if done by the function itself—at least the code performing the checks
   57.76 +  is then closely related to the code performing the subsequent operation
   57.77 +  afterwards.
   57.78 +
   57.79 +h2. Outcomes / Obligations
   57.80 +
   57.81 +-- forbid
   57.82 +-- ask for trust escalation (eg log in, prove_as_human, validate_email, are_you_sure, send_me_ten_cents)
   57.83 +-- drag ass
   57.84 +-- permit
   57.85 +
   57.86 +-- reinterpret past actions based on future evolution of trust
   57.87 +-- prioritize changesets based on trust.
   57.88 +
   57.89 +
   57.90 +h2. Notes from "Core Security Patterns":http://www.coresecuritypatterns.com/patterns.htm website
   57.91 +
   57.92 +# Authentication Enforcer 	who the hell are you
   57.93 +# Intercepting Validator	Is your request well-formed
   57.94 +# Authorization Enforcer  	Are you allowed to do that
   57.95 +# Secure Logger 		Know what's happening/happened
   57.96 +#
   57.97 +
   57.98 +h2. notes from "XACML":http://www.nsitonline.in/hemant/stuff/xacml/XACML%20Tutorial%20with%20a%20Use%20Case%20Scenario%20for%20Academic%20Institutions.htm
   57.99 +
  57.100 +PolicySets [Policy Combining Algorithm]
  57.101 +Policy [Rule Combining Algorithm] (defines access to particular resources.)
  57.102 +# Target
  57.103 +## Subject Attributes
  57.104 +## Resource Attributes
  57.105 +## Action Attributes
  57.106 +## Environment Attributes
  57.107 +# Rule [Effect]		Identify various conditions or cases under which a policy may become applicable
  57.108 +## Subject Attributes	user who has made an access request
  57.109 +## Resource Attributes	object to which access is requested
  57.110 +## Action Attributes	action the subject wants to take on the resource
  57.111 +## Environment Attributes	request environment (time of day, ip, etc)
  57.112 +## Conditions
  57.113 +# Obligations
  57.114 +
  57.115 +Roles    -- student, janitor, dean, stranger, ...
  57.116 +Branches -- Departments, etc.
  57.117 +
  57.118 +* Examine applicable rules until you get an outcome, failure or passes thru (in which case rejected)
  57.119 +* Rule combining Algorithms
  57.120 +
  57.121 +* Obligations -- things to do once requests have been denied or permitted
  57.122 +
  57.123 +Reference Monitor (SecPatt p256)
  57.124 + * Set of authorization rules
  57.125 + * Actor, Action, Resource  --> Monitor+(rules) --> ctrlr
  57.126 +
  57.127 +#
  57.128 +# ask for permissions on arbitrary (subject, action, resource)
  57.129 +  * roles
  57.130 +# get filtered object based on action (:public_info, :admin_info, etc.)
  57.131 +# attach a rule to a (subject|role, action, resource) triple
  57.132 +  "subject should have role R"
  57.133 +  "subject should have role R on resource X"
  57.134 +  "should meet the
  57.135 +
  57.136 +* Role supervisor:
  57.137 +  * adds, defines, removes roles.  no policy -- just attaches roles to users
  57.138 +
  57.139 +* Policy
  57.140 +  answers "can Actor do Action to Resource"
  57.141 +  * Rules
  57.142 +  * Rule resolution
  57.143 +  * outcome, obligations.
  57.144 +  policy definitions can come from many places, go to policy mgr.
  57.145 +* Hall monitor
  57.146 +  enforces policy (before filters)
  57.147 +* Policy observers
  57.148 +  handle policy obligations
  57.149 +
  57.150 +* Athentication   --  identification, really: securely attach visitor to identity
  57.151 +* Validation      -- qualify trust
  57.152 +* Access control  -- define policy
  57.153 +** Roles
  57.154 +** Acc. matrix
  57.155 +* Authorization	-- enforce policy (reference monitor ; filter chain)
  57.156 +* Obligations
  57.157 +**  Audit 	-- (observer)
  57.158 +
    58.1 new file mode 100644
    58.2 --- /dev/null
    58.3 +++ b/vendor/plugins/restful_authentication/notes/RailsPlugins.txt
    58.4 @@ -0,0 +1,78 @@
    58.5 +h1. Rails Authentication, Authorization and Access Control plugins
    58.6 +
    58.7 +h2. Authentication plugins
    58.8 +
    58.9 +* http://github.com/technoweenie/restful-authentication/tree/master -- the accepted standard for authentication
   58.10 +* http://github.com/mrflip/restful-authentication/tree/master -- my fork of restful_authentication with more modularity, more specs and a few security tweaks
   58.11 +* http://github.com/josh/open_id_authentication/tree/master -- OpenID authentication
   58.12 +
   58.13 +h2. Authorization plugins
   58.14 +
   58.15 +From
   58.16 +* http://agilewebdevelopment.com/plugins/tag/security
   58.17 +* http://www.vaporbase.com/postings/Authorization_in_Rails
   58.18 +
   58.19 +* http://github.com/jbarket/restful-authorization/tree/master
   58.20 +
   58.21 +* http://agilewebdevelopment.com/plugins/rolerequirement
   58.22 +  http://code.google.com/p/rolerequirement/
   58.23 +  http://rolerequirement.googlecode.com/svn/tags/role_requirement/
   58.24 +  9 votes
   58.25 +
   58.26 +* http://github.com/ezmobius/acl_system2/
   58.27 +  http://agilewebdevelopment.com/plugins/acl_system
   58.28 +  http://opensvn.csie.org/ezra/rails/plugins/dev/acl_system2/
   58.29 +  last touched 2006
   58.30 +  57 votes on AWD
   58.31 +  * also: http://agilewebdevelopment.com/plugins/acl_system2_ownership
   58.32 +
   58.33 +  bq. access_control [:new, :create, :update, :edit] => '(admin | user |
   58.34 +                      moderator)', :delete => 'admin'
   58.35 +      <% restrict_to "(admin | moderator) & !blacklist" do %>
   58.36 +        <%= link_to "Admin & Moderator only link", :action =>'foo' %>
   58.37 +      <% end %>
   58.38 +
   58.39 +* Authorization Recipe (from Rails Recipes #32)
   58.40 +  http://www.vaporbase.com/postings/Authorization_in_Rails
   58.41 +  http://opensvn.csie.org/mabs29/plugins/simple_access_control
   58.42 +
   58.43 +* Active ACL
   58.44 +  http://phpgacl.sourceforge.net/demo/phpgacl/docs/manual.html
   58.45 +  (Access-matrix driven)
   58.46 +
   58.47 +* http://github.com/aiwilliams/access_controlled_system
   58.48 +
   58.49 +* http://agilewebdevelopment.com/plugins/access
   58.50 +
   58.51 +* http://robzon.aenima.pl/2007/12/base-auth-is-out.html
   58.52 +  http://agilewebdevelopment.com/plugins/base_auth
   58.53 +  http://base-auth.googlecode.com/svn/trunk/
   58.54 +  40 votes
   58.55 +
   58.56 +* http://agilewebdevelopment.com/plugins/authorization
   58.57 +  http://www.writertopia.com/developers/authorization
   58.58 +  http://github.com/DocSavage/rails-authorization-plugin/tree/master
   58.59 +  Opaque policy descriptions
   58.60 +  19 votes
   58.61 +
   58.62 +* http://github.com/shuber/access_control_list/
   58.63 +  Not much there yet
   58.64 +
   58.65 +* https://opensvn.csie.org/traccgi/tobionrails
   58.66 +  http://agilewebdevelopment.com/plugins/access_control
   58.67 +  http://opensvn.csie.org/tobionrails/plugins/access_control
   58.68 +  last touched 1 year ago
   58.69 +
   58.70 +* http://github.com/mdarby/restful_acl/
   58.71 +  -- google code too --
   58.72 +  Just does REST?  More of an app than a plugin.
   58.73 +
   58.74 +* http://github.com/stonean/lockdown/tree/master
   58.75 +  http://lockdown.rubyforge.org
   58.76 +  http://groups.google.com/group/stonean_lockdown?hl=en
   58.77 +  "Lockdown stores an array of access rights in the session"
   58.78 +
   58.79 +h2. Trust / Validation etc. plugins
   58.80 +
   58.81 +
   58.82 +* http://agilewebdevelopment.com/plugins/recaptcha
    59.1 new file mode 100644
    59.2 index 0000000000000000000000000000000000000000..439fd19127e4515da04487ebe3c7bb34d78f985c
    59.3 GIT binary patch
    59.4 literal 6112
    59.5 zc$@*?7a!;!iwFP!000030PS5}bK5qvzJC2HaB_2QEE)j6+q50WPMVxJvB!3j=^4$O
    59.6 zp(R*mLlG)T#c?|M?*{<&K~kh7%92dUo0(RU34jE+c=p-FV)62i@BILMV^Qq$@V6I4
    59.7 z!!HmEJG|?Mz29DZx_;AgUi|U<!OQ<TJwLhr>*6&U1b&>Li%+l4-kqQqt)rvk!60Dh
    59.8 zg!c!-ghfY3r`M<G;_ThkH4=>-9liee0=>9PlEE)WNB8&lnkS2E9p0A(<D-j+4_K5u
    59.9 zoQYOjqJq{<x-Z22(%a;oOZ>I#caq-^{`2xHd-(mhllb4*nfJh=cVU-(e|aSTDlYnA
   59.10 z!g?(FU4MBr{yMHA?(KKHL^Sz1ZFy43iy}{c`OnKZiA3Lj7f-11e(3iiJ{)N0;@h8*
   59.11 zcY7N!@x(8WMujrv33WAMX0E(E8n>C=dzkR!?%%^WncVZ%3u1OOE^y+7-@N#Q2RxdT
   59.12 z81*+Ta6kU@^q#rfWd|p1>^$;&{<M#yvj5^kgnwqMPHS9synszAM9d51P1NVO91n*5
   59.13 z@Hp^$;mnAWnGsJ*Uk$vDxK+Mgx6rQmAz#d?m$2d!Q;eM!He19-#QuetzYq(F-x$wy
   59.14 zLN<~aztPo;J3sIT=#Bi}`-t~hRIGUF$AiFo$ajA{%4m?F-;ntDUaa=|`+!HunIE#(
   59.15 zVK*)jrtu3*i~s2jChu@G3Rp8I<1i{En=2_vise3feU>RSda_R+&gd2Id}T>iO4Aw_
   59.16 zUUHYIF?qQ3DhpVjg-JXuk?Bdke7;7e!t^;loPU0OeV%)UakT;WD=Pg<4w3b<P-!CB
   59.17 z<qy%}VG{9xlsD*<G?=SLE9<o?D$eWm$*0Q|yWN`G?<tt%{;t}+y5qy3n~LJBJpA?g
   59.18 zYE}@w_}!c&D8aI)0yYJcJctPh9NeAq&QK0O5kkjP-<&}KRn70j666<7l2?3~nM;{L
   59.19 z`d6potq|SRsQL2{{VP!65IICMfBu~9;Yr}dC5>F&c>~rRJ<n{dcc+;u6I65UY>&pX
   59.20 zR4Sg5(zv9oy6f!2T*{tavQEiNy-FSeRy|d3{UFFr)9eIMa29#@*?By<<;Q|(=44D3
   59.21 zkMF!Lzn|B3PD7PX$(vFs$C~ZBn3m3sUPTSVA-ZmtR*5RASOzAxGZ#Z-y*I-jKLpUm
   59.22 z`C&>Yf<`IPZEU$Vro?azBLlr9LndJ4D|_USc@@2JNNMM*Mp(CO%dl$=F?Dp;tu?~f
   59.23 zA+BTF3x~LXGUMT;6{9)*n)y}>8>sGRTZRS;paGx(prOgoAfP~WL$k4h2J!X|kxez~
   59.24 z8t%r?!31;wbO3Z{G;z?(Lu3%Fuz|Y5z_8Z`3vc}7ntfl^Dti-TC(vZFv)KQ^N=gg+
   59.25 z^<8+&t0#L=dS=AyzHFxB1ruG~H{0l_@GCzN-<a1IW}$cGh4BX-^42BqdtsqL<-53g
   59.26 z&!RBf%*Y#pbMIIon(BR_Aj!_GqCs2%#`=c9Sm3Z1_5!wcFn+}Bw`)v(Qe)PW8uOhj
   59.27 zoabWRbbS^kOLX+U3bf@vd#>lCwxW835?qMrtF&E|?*gP0o*{pAigfKLxh3ts*J+E%
   59.28 z>30S_g2lgfhj+LqE;-alzsJKH@zb#J!N2WWG1rrupnZ$mx1ldSJ9l0bv&6R1ocaFi
   59.29 zPf@ia->InkYdd0HYMSj{#8@c5+yp}=K1Heaz>B)=<hyBM@qa?7`mh}NL8+lW94tR{
   59.30 zT@}$?Rm3n<5fiH-qPG07h$>>)qR2lT)wCalUNVfl;NU=YA*K#$cWyCiv+skji_?$f
   59.31 z9=E>=G!mnP4~~b)osh`UDnUUJ6yC#^DCeaueUU3@Btz&U>S&JRraDO&wmRK{P7*It
   59.32 z_B+@!#dP9@-G{5tALP9L^R<g!U%ODyE{)MHfccxj{LEDPwJjPhUOyXl{H`aEC+xBY
   59.33 zD*-E20-ycZPk4lGSir+x+&)M+^1BlJlLt|hpg*eMe-$%Bw+<1tjMP6V;6i}B383C^
   59.34 zP$vND0P4>O)Ekf4A36GK$We<&Ep+}Kbvf_04_*sgiaIPtlDzZC|Dm{h`{0xXtmh@-
   59.35 z!ud_$_tanGbz-`OH7t>w8jeDB!`PDhXirhS`9384NQLmh>xC>EVv~)qnMhU(Yo=>a
   59.36 zM~G94Xo4)5b|E-qQq<CP({^;$!nP``%YRjcN6ngxn;l&i1;=%&OR8HILdr_pTGZ6^
   59.37 z@#=JXL7y{YxuDh7(hu5N-09Y$5zIyO09OF_BCwL@;9l$qo)V*zH1=@a_9Zc>kXU<S
   59.38 zVFDM~V=m&jz(s(I02cu+0$c>R$cjsy6K~1dsfg)hUEM%L8t&?L9B_4m$^exCE2Sk~
   59.39 z_jjn{h3L-vfkc1$ek`|rr7NVeAVTefPccK6JYex5x{ii%a)>V3KSLHL>8fgfknWj7
   59.40 z7d-Gg4{KC5MCckL4c@d(O_$sKj5X?-hS{V-6yEy1yL<1U^@<1GW%Yq>)z$}=v$vt^
   59.41 zjYijJ6C_WFtvjY;8PtLx`K<=YH$_bnY@s5eHB}eh2yJN7R2yDITsm>tdY6*r_C<3N
   59.42 z@VWWDNmiY`Nd)#L!QLc*-L3CUlAaWuPTVLuL=0|{J3n?2XBC=lJQ9WLE#fS(+Jc|Y
   59.43 z(hXjE!N#n=U}G#^uxVx1j$rKu9C6@?0}Erpnhp5RcEo>X;=MJmz<&n*Gw`2*c3V}u
   59.44 zo!|T|@N1pkGcl=T@~_lTHt9CpXNC*zGjN{)>NeSZW~$T)*w!2~O{HK7m@qAk7=&yb
   59.45 zA8fz}zz4vGM&pCpuW1r(o9k|d1;7Bn0Km{>U~p6}VWQCqE|{Wg)Y>>Wm;}H9zyZLa
   59.46 z(cmDrGq{>=5`_+gZVep>1#|#(0CZ?FI#5bA%QX*?ZaW$#y21!-XcpOqae=`r2?zlQ
   59.47 z(P)IQjO<Az>NtX}#P#iA%JJ<j=Nk~Gx2JJ>kXQi{LPE&g?gteNlMe4!@5$L{#`Y=c
   59.48 zcZ@9Ihj{(nQ11HkQtsA5<u00}HZg71!q&2S-q`(k{3UwbS~QxV@*y4{$i;q<3zgDh
   59.49 zjq!?RK0}fWLjbC<8&rWdjVfex*3zWGT7fj^3rR!zBvu{H@Oa-q=B7`aesLx8U;udl
   59.50 z@&M#vpUJ~<XWi#cDEgoipbxu8AIMhegV7xNV61OJ!C3rwbvg|>n}I3-RRF5c0IDDq
   59.51 zCLhX^tky^tWVoVZX}0Z5!WDrm>;_rDP4hK~>!#xx*7G{yA>V6=L;$(~bOGo>1L(r&
   59.52 z0ONI%g<NQ&+CB|jVP&rHmIdFK?ARs_jH0#qgziEN<Fm~*2+Uy@n1lF_MP&%2rV7@m
   59.53 z?HYvsd}KbZs*rrk#-`)c3dy%b1*+HE^*~I^v37^!JYqnpS#N)XS!*C?iq8tx36DY+
   59.54 zT?)w<mh2uev#JIN-P04gcU>`o{bZf_9kGOdLFODx4w0qPji;60RNk8=Y8L|{<hN%n
   59.55 zt|0s^VZgMURQz3;*%WVD{M|bHgeZtVi2tL-ze0S^{E$@&?_1_|t3@U&+F98y90@fl
   59.56 zoU^y5#f#@hEoGv*bxhQ<sQn8r{<O$KwTY#fV@F4YS!7G+2eB(dxoksS$J#<`Y5w$F
   59.57 zEH?689Y+x_^-R1Gvzv`C&l&|%2(BNpfKsh}$NbFmgUZ|C<w>AurnZC;yN-m>DhXRb
   59.58 zQ`p#*B0(&b^2asc?DV}pJKc32i8F9^I-H$e0r;0ZQ70;AWJ5`(n-ynpq`?v#EWtgG
   59.59 zQ`WnFBEGHjus}&w43eJOLESBJl|9TK(sY_)lSk4N&@iB3K*Q|4hDq+^x<N<L&L>HL
   59.60 zAxODF9nEpvY2XM2`*~HxbmE2GhpW&ZNT6RXzLe;7wTo$iasgNMo<n|SCjHtL4HvJU
   59.61 z4Lg3<6TlO8S%Y<el?(VoH!R>`FK!<s9QmU)V^Nf#Ki0X+kXjlxgmt02DvPN+fEWyo
   59.62 z$8H+fgkj;-H!Lt<KNuFEWi}9O)Lbp1TMJK@_2LA*Vt3v*zdEdZvxbCYXu9c2_ZHPK
   59.63 zCE0^%*O@*WEQ+;ipxVZVm~WtgKm&mW0z0R~&Z*W=Z@pL<I!Cew62H(#o}i0}35_+3
   59.64 zg9n*yB`xuPs>E^rhmf}VdEB-ZU`1<%znH58SlPxl1FUSlI>5@ZWZD|ntuCQcEYGGV
   59.65 z5Ms5#5UWSI2n<~weniDvHk6Bi+Tynbj^90^X%5gdplLwUfTq==X`-Kscm22GT?sl4
   59.66 z?!AW?{mByaMNlx*K6v0m^yN5A(5qpB{97b{C(*;9xD@j~OZ+~I(O=?^|1*pe)c1RL
   59.67 zvevC1cGX{HOZT!RSubR)yH>|Hkw^MjW35K84xaCQ@qA+&6dEWrP-x)!&MB-@0jJ`D
   59.68 zWd^okkZkf4nXP#fbbaI7wQRjH-UOGVi`8cJ4gx}j9ycAgvJFGtMrePPEDu}`PqVAb
   59.69 zsqLTGo_~(k=?Eb!O)0vKDV2))I4@+yd{F09I+d4QL$j#dR!vO{X3N@UOFh_L=N?Fk
   59.70 z4b7Dct;EnZVyaM1<7rJFFlOc_+j#8$068~mOQ?m*B=myEetz5AWB^Rpa&5~bj-_MQ
   59.71 zA%;0KAmcrAg?T!;C!P<bV3UDO1~%Eg*<_bISRoVkw%DMJSD|;9Y=hnzx(uF@)C`-|
   59.72 zHj^qPqk5_FwC0Y0?`W_m{LM8RYrnYG3KHv>TN2nq<l1v2RkBhlbc+3)OpQ+;&gd2I
   59.73 zd}YaIWp+C@cLj&tiVsQ0!lbcMV^z~hrH@F*GQUK1LRDRz+_?DIwx^WBw|pSqL!Qed
   59.74 z(U2V#N>z%gUMi{=UXtW3oXTLN1_?K@Xiam)qJp^U6brgzJA|60X4xvqwW;P9G7Y1S
   59.75 zZOuvTYjt>+0jY-eCSt~cxMr|r!Ip)9nR)>;mn={Yu=vg&#OOW~<BZw|Jh@{LO5`Eb
   59.76 ztlK^qWeN7zdQ22CWioFW_hM+&Q0G5TVrqu+2V0<@_C-J0F6bxFPoSSRpr3YH{dhs^
   59.77 z3y*>>IuS~U{WD}?r@_wGqAP0?EAbZIhGT-5L?bfbbZ$1{v34dVo$r~Dtu@<6wxeDI
   59.78 zy3Un$;@X-zr`T{zO}EKba}L8w`wA=Vy7d$*?Ydb8bLY3WF-vB8<;-+`-jY1AZHJhq
   59.79 zX_?d_jy#tfmgIpZ0!@S^`MIeEI~}3a67R+jRyn4qp*yKpihb6%vM@^0y-0>etK&4O
   59.80 z+(~V?l}A-jTcrzjVdeCxqczQSa!8_URJ?fV8k&yPMm71KfkHNxLeeLpkfi47Cox@v
   59.81 zU_xAMS~ez@1<VkbAuvN=hKoFigJCi^0rjr2LPA%fg=D*4!+D$Hh-qoU$Uj87WmT7=
   59.82 zI+lresAikM5F73|R8C$?t<Dk|xeH0w8=hp{h5R{?WF3NZb}2~bEx$(zM}6-rL-J^i
   59.83 zOd^{fVf)~eb^KUH>a6oXCkg91ox-{au)YSnU!D8D0pnk{YO4WvtLIHFaWEu)KBr9L
   59.84 zrO%c$>z^%YEIwPZl{w~eeaB1!F#tCTP>?b=ih}*7@{Ak7G;F#s5kC+7PJ`Fih+8)W
   59.85 z0G69-Y?~N_IId}%wcY1*D~=Vp)RyjvHRrfYEbNSSk`;9dq&`{QRbu1KuBAQI&hU){
   59.86 zCvGK85XH7;DL128xw<Ssv2w=1Y-p6@kjk`A6C=|ABeU7QLkqTQfbS4CP&CLj_>rT(
   59.87 zh8(qc)I#U)QJ3>>`{1>JrKrPV<t*fp|3j^UN=IS9dR`(foZkd~FWug^PN(5S@fyx#
   59.88 zD>;F!<a>J@{G$(Ttmi~D7W@4&j;-h8PRw<BNynm5-?3;eb}VA>CW1E+NXhz1$sA44
   59.89 zV3Oi25xvjiSnlu?uQFKo`sFx3*Vw)UDzd*+#I=Bm02Ki$0#pR32vCt#s7TgV(%^MY
   59.90 zd-F><bSrr#s+TOYr$RVSf11N~lL4RlUZ02E4IhBAnbq<Yh<f^lRi+V1({+1Gv4(qn
   59.91 zuw7M{;hJIxXOHZK;K4l!9t2_y%Yi_5cRr5qe3*22pKbEgz&WQjsqK4?p>jxJ*gLQz
   59.92 zN}WD4rEV=$>Y_<%6VqlbY%QzbjosfIutcw0i$)VvJ^0XoRO}b2xR&X@*SJRKOwaq2
   59.93 zra#evD(nbV(DkNK1##VUT*G=^t8MvSgI55k0#F5@3JstNpZ(ZRc(nF_9@EKg7lCk|
   59.94 zhNqe_VY>)u0?-7I)TU(T$~)BYLUiZ-K%zf=Kb9G6RAQSy#)nLOiWyQTE+3|*=OMb3
   59.95 z$AH91`yk=S?+*gj7ov<-+?rmkYg|LKD0Z{!(qNoEPT#y`!8ay5wuxX-THn`AVFCNu
   59.96 zX1@Vbbr%SV_>V<p2&AS8)~M|oq<HpFZIW|SMRIIxI!=vIkf$Lz4%KT6hNwbJ%dvKc
   59.97 zN<Csg<)Otj2D74gv~2NN!8+kl$f8Rj8N>YWDAkdTX9EvH13U<$BSo8>amZRFwwAbC
   59.98 zi>)QDz93<cPMjxBkn+k4f^9_A&faJ3A+^pLlcSh<Z<pLh57x(SgvL5evn(><98236
   59.99 z)(SR;zR<=<pTw#YPV;zcBXiRy-jTLaT#W%12)IbWMY_*a_qem}L_CT<q~s3h!*0=s
  59.100 z#%*KY7JV?*=b|(gKVF?q!!~xH3P2TrDl~v92!+XqGPU1U++r2MpIg}-u8xS+tD&6Q
  59.101 zGNF%Ec?4}5FI2qVtn|Nc`9O|;emW)5kR26DReQp4xi9R(OOpJWYGs=0Mx9JnE4jhq
  59.102 zY{b*oJ%Ve$n{90JRFkV$1Fs``H@Vx)Irbxt^*4`X@jUJqW}G)W+pwn3&a#`bayG%X
  59.103 zW6T!r)hQe;S2#0pDNW$_vFzQnW9571)6$_gh_Cq)<)?2&jrP#*viM92)udvnD#?_V
  59.104 zQH3|t=~{6cHD@lo-gI7-JB~+_EAoE`CE*3>EhbeaIFX7#%bargf>gchi+i2OL&&EH
  59.105 zSdM>b@%X|En3$f6d;OlV!8N}U2Gz9itrx@!AEvNd_Rx7zl*7Deqvt3V!|Rt&#EXc_
  59.106 zJZ*A#iWM%z&t=mqeD>M>%KJ^r`%rqH@=l!J{4JR7PIuuA?=|l6mzSbb-|IzQf9W2S
  59.107 zwOrnTA~03pznCq2m{e<k<6*+nGE*okKSDawTuwKa7tbS~Q2Af0pllWcM)rJ-^0C07
  59.108 zt2>r)0#xFH^gMlI3Pj$8UG}|%z?G3bIZnsjzlU-5rA>foOgO#pn->=>qaqKuFCqG5
  59.109 z?w<9u+4IQn`C*Cc3(r{0nOZp{okWjieKeV}Ifu@ac2c=vP34lr8n)fCd+}h{503-C
  59.110 z7nafIlJQJy6uC#K6G@q1emn@ghhlHW!-qP3^cx}=^-HGOi0j8^e(vQd0XfPR%QL0f
  59.111 zH&@1%#*a)jDpLhn2DWY6bZp0+3FMnlsFF6u<71SO!C7`v4SCfJWe!Xh<Sox67QDzA
  59.112 z-98`8O7wflM9S;<g1J;QNAeh5ZJn3lbjB)_w?w3@N&&0q41O74&wE!{TcTj4%>wtV
  59.113 zK$f8K92hISWq~IwOb-iR@>QP?lR(&RMf-6QZV;Cl)R+9e4lan|OM`+!{A)icdzw@y
  59.114 z6yB$*^(plK8M1OazvO{FFE<&g^zR4W^>6)-8s<}PmH|_YofbA*#6d*=g*v}r7m42(
  59.115 z&nP+7P=;=gdFq`X_yhDt{_lOn`?<|6sl@YyEw4;V#A1#ukt(I-8!wTdiTp&KAI1rf
  59.116 z`r_BoEB-x4y+<Z~kG&Ey@HJk-9#XTmn)rOYdc~83_dj@1R;^}`X598|z`eW^pmc2|
  59.117 zGlNGrIAgcT2AjX|27>iub#_VXvx`lWXec67y6xt}NoVhJ>G$q7*^6sF*g)%f`gzH`
  59.118 z?s*tIEEdorTFnvtS)`i5sS1?JY)BKV3(?|3T=l&uQI8?_dZb2rN?Vr@dsSJ`rNj$6
  59.119 ztY+OJG?u%a(xNeY9VULn<eaRq)ITrlkr=O`F7QVfnavR+FBPeDQGD^kF2Apy|0lyJ
  59.120 z5~Hi$&Qhk2Tm@j!`G934b>g_pl(_b8X1qe_o6h?ZGF86#-Q=#|fTP$gxZvJIS?W^A
  59.121 zJ>{h5R_lh`6i>yh{yFQm5;XF17-W3bh36l^_$BLQIl=TsErZH)bkzd8W80cqtg}r+
  59.122 mC7hqV-~V#nFLa7%X6AjR?_>Ho2!z=Fe(?X}71A0FnE?R!(F$Dv
  59.123 
    60.1 new file mode 100644
    60.2 index 0000000000000000000000000000000000000000..85a0a21c503b2c053434a7098e4cfc9b14bc0bc8
    60.3 GIT binary patch
    60.4 literal 198329
    60.5 zc%0<Bbx@U2_dj|R#h^q9X+5YYt(3HJ5C!ROknZkOR1gG21e8=#y1NAgNs;ab;n3aO
    60.6 z_2Bz`XYSnJ{p0@T&i&_}8D`*c&hzZO*IJ+0dp+-@B}EA?QeH%%Pz2AOVq{UMGkGW!
    60.7 zj{bREc*o~a*$4`CQOx-9W9es)A77KUu{1C?(?_A4qAC=fIZ0foJQ|e!T0*T7({3?}
    60.8 zKhdRBdldGRM5e!+{Rih&-6TwZ9FrQ_bxW*=xqqAGVldbK#{x{IyJ@BH(DION<@)e?
    60.9 z^m6R}!RA5Cdd&8=(6aC{PPQe{%SYEaPI*<}1f*uA_;KIkewep;n&Yb%m9n;QP1BdS
   60.10 zxa4FUPycS(2Pl-?i}NHGcbBn8O!rfs{Je!a&xu;;Td)y8ttc<8;i0N+!=HRRb*%;E
   60.11 z)zB37;LHPQ)Pq+p3R(oHRce$pcbUKylyq2GIsERJZf1n?B||A%oQsRbK@HwUT^7lA
   60.12 zC_Jrwd<xaANWw_qMSl*(zO@yIK?Ta7E^)z_mII&F;6&A<uI(QGd0vXT*L%w8-0>et
   60.13 zk25==XTOrHhZl0<pGQ4VuCS@Jr#y#3o%gtd+ET{V-J(LxGI&Ls;{Pn=@Xo16Y1^Ok
   60.14 z9V>{FTRteEKl6fe%(KGL{piAt(_R-)cVDF&rWlA1V(Y)P{(5UNwKnmS?&|pFp@MIf
   60.15 z;@HeLu7~aP3x5qC3H*52pdwZ5_uOBDlr7{^ozpWyUH!zEi6^Vd#zbGXZOYev8cvYB
   60.16 zB{}=)`KQP2?(+JIa?;6BQayi5y}CYD8l@b{C$Ig9T6!qB$t1aFjoYdeo{2{p!<EZk
   60.17 zseAcFgqfm|rfG*m{Ortaogtf_CK2~d1?^3L7}OPxX8L#8l)Y59&>H(N^ZDro$BSQG
   60.18 z_&SYml-ARDmr=4BF6pRuSe#qR8`AP*#|lk#%&Sa?PDXFAcg=odTO?lHHuabfT0Lqw
   60.19 z?R5GJPWY=^ulQrS-cAWg;JZ`K?7pY8Al13*d{>N@l8&C%bz`^Y{*u$y8NDA46DEHi
   60.20 zt(i5|`HzRYXYt9ZX;q1*NwT#ywmxqbYYKF^5;Ylu{V3X2<dmlLRo0h<Pqsy-T=Smd
   60.21 zfO?n`t-`pbbG%rF>UUg|x2FEsAM?)$W=B>lBaK=t*POCe$HR%DTgO>`X1HZ&(A5su
   60.22 z4fGF~3J+sH%zs{d{<pNJBCD*_XT&wvamrRXR&i9)bHr<LY`iA(o0m?(ct&the4y@x
   60.23 zuG}PB<t2tdiRY3@lEFzglgJI$4Cb_^D=j?JBGz{^dE4)fR$e-))mv?xn4+T)mu${$
   60.24 z7FMEE#Ock<JT4T<2`+dxDmyY#Hk@;1yEDu>q6YN<AI+qEu|H<ne&WMmk#EyX?#zs!
   60.25 zbdC7f;6xBvHJ!=ja<}4h<{owrcA9d2URgu4)k#mZG4S7Y`o)l(l<>*wC|OvXE<7ik
   60.26 z<>TOe+b1>CW|b3hxsAN9#ER$76-2LJrksg5A{Q&TRZwD2!q%@r*qQM=vSXH8x>T&3
   60.27 z%t>%~rJ}=kHDZpI<J7t?Ss&FO9?}b9VX2Bub+$bhi}cJB%<30kKRqZaX>6G?-#_c~
   60.28 ztieMpQVyqJh&MJ&QmW*NJ5N{ra!fK-gQsD?i1u>{*44;`(It9~%%c%oJCirVzxjQC
   60.29 zo3e^0DE^=V=jltAhq*Q9yo+M--+mGdxRB^WAyE5z`9iGkci;DcaZgMesDt|7Ejq{0
   60.30 zY~LP1KjaJMSQVEwUh5=@Bo||I*7R^!2%%h!h)Vj{7Jeice~aT@vyj>*!Exj=uYE~}
   60.31 zGvV&M<=K&=+eXaqnc_&bn0ZxmWd=02N{8}(e7~$zugN8&p>jn5tL|8$nf@|SXG23o
   60.32 zSN_W3VJOjOgTR@Tu+pB_L7C=n7mKC7OXbmQMqkj_E+ufe;iBT=BTT+=c2kX@k;sO?
   60.33 zgMyKg@akQ<`oJ3HeWyR<4Hpuhwf%aTvSA!f5uh^CpOa--S<-6kF}o|o8C&|`@OqW6
   60.34 zve_QJ(J$>Umb>d>3#oGv)vCuXJ3m7u+FJKA_6K(szeM-Nx}bc8^zMpttNqn9CCqWB
   60.35 z|9+LV;*kHGtW)<c?ykm}V#1qve$;J`CIbyF;L-TsuVI|HJ;3BKqxY$<G+`tqyw5yp
   60.36 zW{&+JyXCG*u6oiz)T_TL;`L66ZMF-HeyJn{dYfD8!d&%iSB;%DTK+6mye?+WOv`dS
   60.37 zZo)g{_D(cC-J3{2@ZKyy@cAo=$yV7`Tb7F!pGKMK<yFH}Locmo<XKkazAGXqT4!(`
   60.38 zNeX_pl|)z?m`XyyaCiQ?Aqjzz_{KYaK}RYLv8BYapQUF<99^}SE#|*1I{y?O+8=w|
   60.39 z<HIC0S-BY0<SDi7@3gSEd`X-7JFy+3^4Nv7U+PcWJLiAD&t5T%8J{{o`843RTfP;(
   60.40 z5_4UfFkPT&K-SYn$@k(HB^{)!ope^$)|e9ITd<>l`Z~G)B;PB&XPTRv8$T-0V%@^k
   60.41 z!XM7IMz-mY_%$m#_jXQSSzW4p#`EI$GD6BS$`rC9sfwB7X}hXwn&h&UJ=c1&*D~W)
   60.42 zWkT9qGq;E7(2)VEXH<oXo_Lgx{2cD-q1|~F@0}7Kw{Ah6iFI`}A^Ns0ZMi-BL1@vV
   60.43 z=P2UkIqx;^w8xe{DfF`R{_)PbZIgc{v06>Hh8Pr*l#?Qoa18AXOAKABe!As-z7i9;
   60.44 z7bCQs?WLx?FH`t;)o0-HpzOL$qhAf<@%)(T1fTU|J6#J7!)9kS2Uk4p?U7TcYbvKM
   60.45 zpQ^ru;!HdB;?#qL^Ioo~u~!UUZM@oIk>_r?vS_=|o_=a|>K01-m0&g<VeOs!L}X*Q
   60.46 z*3v|HzP0CZFqh)q7z>9`$dP@dFn;IOz+4~o1KoJJ-Q`um2Z?ZV9jPhJ)(ZSB6T&L@
   60.47 zCsE1Lx4YKZ;?)KB_e*A-wpJNeN)A*VS3Y?4e$#(Apo7cz=&9mP^XgS%j=LQp*Y2|R
   60.48 zzcsI`XxMISX|}x+rC_JnrqnOn+vQuzo|R#L=W&qe==QwSW40@jdEq?y=OgQ6BO7jf
   60.49 ztl+I5=--$8#<W&r-YycWC!F=*_(QH$rcta@%v7$t%S^v|;Hz(cHW+<eo_DI6+KReZ
   60.50 z_I+LcJlj=kStI;WQH*Dw;=N~!W$`7=;^X32-`uOdo*$lm+W5gY@zkmGdA9nmFA5?O
   60.51 z)6Csh=KCY&RXO-_N|W{`dX)*tpC`2#T3TG*HT(2beqX)m*5cYQe$n9)ttL~Yd{x1N
   60.52 z(GR0P7}3vieyno*n$EiXr#3f!&E}#{Q=oiFmjt&;{&UZ@rJAj*fDK8zc2>4VRtC$a
   60.53 zV{Z@o*LtrT0!4k*$shY?J+%{8)Wx$B+2Q+giudiS1oSgrDbf^+RGGM&-w${G1jhIu
   60.54 zwH2V~bwV6xHX@aq39t@>afAJYZzO5#Ui-gQ%RLwCI8V>v>BfF*!|k={bGcV~V)Lfz
   60.55 z2DX`xuX`FlCQa1LPATImt<6+&zr=Bi(|&>Ks3A0TKk^MeZneb>4hnUhOVIv(5+|X*
   60.56 zBK?O&=9DuLT*NG?4-4bJS}UhBld)|rGv7R8^7Y)j*C~k)xYXLG2uvQJ?)AOADg6?~
   60.57 znT?D7`jCXv3*X_vDb6tzp7MvY%wrE1j`vrVALcoHJB9krE4w7KXl7<?M0)X!S%9K#
   60.58 ze)4bQ9{CITVcww$XDEH@V{lP@t+^;v_#UdyrkcyRxY)67U3mWp&k8f1(->592gKzC
   60.59 ztEVcqC=}im<mVJBBI+s%bq)0l^HAO?YGK$}{nPZ(@oIZEK}+`Svh%FI#miJBK6nP-
   60.60 z3=C-U^7(pFJiajShqACTNMJuJ&i17+i)Tpsi|Z%JWZsxKebMiGajy3Qdv!JY`aZqS
   60.61 zatr(I2)@9|m>?gbFWAbZ{iC5;Js!(UY^ez9|D#tm%TpcfX%x!KoC5#tox;ph)r-%*
   60.62 zNxSJ|DN(2`A9g&H*I-nQcAp;nJrqN7Q6xXZ6ou-eJEunep9^r3>X7~WZ2|Xx^S4aj
   60.63 zC-K&wxl9$6bqAF)RHy04$hhkU2VM2-?CgSGy*iytr9y{76&Ktw(|}KBvv}8J|LWly
   60.64 zB7E`UMY+e}rc!Lu*7oXZ%HnXDqY4ItDM?OFK62@CxY?7THoHD#+iuTx=Z<xU5oeXM
   60.65 zMNmM%=2dR9K56e7Y0p?*tFh{GLDwzn;+)VQw6{t8jMRGJ2Eqqn_$bsE?#^_$mRmTB
   60.66 zTF;!=w%l!!w`44;Mlntk@A7PC+XS<u`(_-2OG--Gqy$zm$r6#=1(%6sQsfJI_A-=n
   60.67 z;zEr-+(cg{Cnx{#=~KddN4)5Cz;{v<YG~lI!Fd$Q>I%nIe7}VSv+dpWSx0O~d;`rn
   60.68 zB3k*;zm%0nd#0n3(R>6vxGLcvLqn$xG6Zkl6tQ1qg4!vf|G^9^z;8X(NF4jn8<$|X
   60.69 z%JZ0jAm3wW+{f$V$IJS1dwaXP#u)`ZZ{I3v4W>eP7yTfHsOrG3uCDuSpYO(()o5qi
   60.70 z-%*r^=HqJ4%}^_{5W&I4|DG)(2ovsk{P`>jrET~zB*cBhZN0TwayReIyDJQ2tzS48
   60.71 z>RVeg6fyV}E}M+XRUYnf89jTDHbt~#USK1#zi}A09n4QpC+3;8H#SQDY-n(0Rmn}L
   60.72 zEwP;yU@khI6+SlJo=?k48vV?e)e>o0>Fm%ECt@frCPp2}W2tF~b%8Nvyg3=_+wzJE
   60.73 zdreJEg41-Cmdj1Ff-drsk=!h70s?NzPoBIjo7);1Qdh9HUcFfx*VH8D(=N2ntbMq*
   60.74 z$#U=By{`KDde+tmuCxn;gqhUB9&SsMLBcVUb8{(GVZH0!N?N;_YDJlE^!LfN+=Am|
   60.75 zQ&?RyCmVvwJT^K+S&GaDXJW&{lNs6A9JjW%G6^qS=y)C@z`LL2d1xBw<0I-ld9X7X
   60.76 z)GB;@u&&*_1?w^caoT*OI~$3lu8WI{w+L4FaHCWAj5P#0>O9z0l*Nn8%*?l*2a|LR
   60.77 zhHX*(gD*lRs$b$P#ft{978Gi^xs~r%Y>x~I^YHX8+<Eop%^Qnkso1T70#hY_5q~oK
   60.78 zgPBN6!oaI{f6U*_eDdhgtKOdhRBCF4y}<TmLzUuT%om&wH+#$G?f67Hx6;#@w~?Qn
   60.79 zogFXFL#);~6_160b_uT1g9i^X3f9TU$VxfM3=|X<`P^1&&Mlgnnzpv}=IS?Jd<8jW
   60.80 zp_%>#Vs8~f#cA}RJ9}<ryp|w|&d=9vcRJjI{>l5RdK7vpjLgh-RQwJL)kH!&Uu&MG
   60.81 zQawxSX1pa4(PiHj#Vg3{%`DE#%RArL*!WP(ZS_s8@xIq79LCc)I9y?eSFT)fpPx^k
   60.82 zmA!lSZYz9}I9R9l?X=eTO+X$hUnK5hx5%lf(+heu6%~85KOGKQR?!?Z(g$s1rKj6j
   60.83 zH079@m{7+$&wLqStJsho6jqz<{yk^+2h!hn6Wd#4JTDX)8rs&GB!R7R-L{bG+#0X-
   60.84 z;W__}k&#iId7t8N51S>_Gq7B_Z-Eq$#f#S}5F4J7*RRhwnj)~l#^W9x8Hp{|u6f1k
   60.85 zQgI|kNAq2|&`hNvKcBNVjdhI?mh<@HGfBxpN=B}qzkWSC?oqS6NkGGw-;(csu(Rsi
   60.86 zvuD|#Ti>g?KT_dJ6{VCSKY#1_XKA~eo5=M1|4pyRX1eK;=^|t*hZ>K`NV)U3fPh9>
   60.87 z01V{*8yg$xIfWX@oxGKM^JzMsl><qgMx2DrVJvu-X0F=WUk%2pUpiM-Rx14DE>P82
   60.88 zZ{-=St6KSi_a*GGA%IG0YJPrT?AM2!oE(BjX-H8(f^ip_Eq5kM>By0#LWLHd)V5Vf
   60.89 zDlF$`UR#4cB$ZSwY#kl5j0X$N4>xL~qNryJOnX%$8I7DK19(1)i;H_c6B8RyQ&pv0
   60.90 zuP4`9kYfxbcoZ8z#ZxFIAyJ_dpEuJUJDT+M>(`o)Gu<Zki&Dae`3wvUh7B=-u7v8v
   60.91 zRyu=BS>-mIw{Jf^0n955lKFf#Vu`YI``gQ-+Bw?^2{&RRA}I4ZOad~(xooDMCS5%Z
   60.92 zBb+pT3&G*$blX`uA|xclZQh!gco7a*S)iC!P<qWpPfss%4*Ld=yf7s-)x^q@$FwJX
   60.93 zGOJ=swbXd<F_EC%L(JtQD9q}7WHrlIe^PzZa^LLMj}>rYNmnn)jSe-aEw#sP1yFD#
   60.94 z)#Y0Q49#kK9&WBfof3>N$vF<&D;+Hjm$j1RXQigv3>2D2_G&l|D|oj2>}ie=aK48y
   60.95 z77y<U4pZ^L7)dk8Z=xr#ShdYx46&cjO8OAdSs3)UcXuoBcpe?t_5`l}eoUm{1a-u8
   60.96 zkAtJNXOhol!^nG5ooH@ujx{kcQLK5(<8Y5u8CT^=I9@IWL+dp5@_^TN<|?Mn>_!hz
   60.97 zn7c$Rvnf{p&Fk0lc5{Ccn{sIYUDQu#MB8x0b-Ch(u&{8R@hiBVNwWvNXkZI?j#Sfy
   60.98 z`yCw}Dq-edzI;hFm77ka5ppYjSb;_d3GEq`7HlP%3>Ic^3kZ~V<+``W2yXgU^Au|K
   60.99 zWb4#k4LytUqPf-r;GTWOq@dJb{KuPTa!Jqcu$%YJ*?o+R9K7~=9uVq_eq>5^cD7h^
  60.100 zA%v$Fe$wQqvJ!P00#)1}>1JtGG-VWMy(6Z7!s(Pc9!xJ9p#;F=>w5r|sMy<FIveAP
  60.101 z;A1w<ze*IY-C3RN45AaRoCJ_=%^vz35iy_CIY&9vd-m*E1+Dq74<9~MHC_Dm>zAUa
  60.102 zgoZeSR7}20AlzQOXNY8b*ip+{IyEWjr!}@GqZN~$6+S&bpGpPrKOQT{1Ipn@nd5|6
  60.103 z_#Bti%}P+^-rnBV@82)J2h)#()FdS)Ce|M=wKuh6NzOBDS9L$Fqphvon%K5DJF8@x
  60.104 zaX3_Bn_2sopls@Urf^zz_V4;!iEq+Z-Q3(L1@u?NM4mheb8&T5A}1yNQo#oJRtcHT
  60.105 zoLi`=I9lnB7m<4llv1|fzl8Dg_xG>rDpiyqrlvOI%0~dTvdaT-Uvc^D<42E<HvWEZ
  60.106 z2I{i7)JB1iD`H`hY3onMlK$3AB2oIb-pW|buJF;0E>q`Laq<1prluyjo}Ok(UYi?o
  60.107 z_@^LP&pFP(oos3N9nvoc<Hq~h*w|1Cu>6)+R1E7T*3c+(FwYL_Dd@@6;7^;q54m~M
  60.108 z)FRb&sU*3kR3#-Pr4>}sn4Fwkr*=j9{&LmvkAnMb$kLtA*g}+8;vZL6S03f#`Iavn
  60.109 z;p+SI8*`lmWC2QP-CRdUN1iUJqtp48qa!AtLqC1ev)9>S;xhh|a2ntskJyqgx@|n8
  60.110 zXvD;_zsMfjGab$EXkkam02eR0WN-?S`Lt@jQOC9S{ki($A0&I7ST}2lg!A*w@Gf2~
  60.111 zU5ba2;Ip6C+Z2E*R#+*x@3B79ignpu8rFWe4JhZLR!Bg_{r(PMMjtV<$X;p>APbn7
  60.112 z2QT8`X@Gb$;G$M7Fj075U|`@aBdw#OGu<06B)&LM(COmj#Hoxmh3r4t-&)M$<HIiW
  60.113 z=P7ZXweI>ZBXKchsbrQGx!}Tiq~xnvv}anr%w`m{f8j`Ocy$&}6|^0{pYNyeaDHa3
  60.114 z%JS(DDWU#B)#Ls=!`QMw{T|SZ_uTh3IKmd~?d=I=WMmxc>gt@n<p28d22aiY@9*pP
  60.115 z7#UN00mULVF2(-}VbJ1Eu(7r66cH6A*H8i4s1Ez5A5OtnZ-PWKx-{~4)204kcfD+P
  60.116 zZ!hoytWBQt`iyRj=h3bvUvy>-`mf`Vwdja1F};}O^LjLbxXFrXR01X0`T6n`q@-LY
  60.117 ziW=5!d1YnA*9FlHpd<Kx*45=N3>090(|PQCtFe114s4WVHe9-SQ#1mYHLJS2yP#%b
  60.118 z7YJ-d<b*-|o#3ld+=UWZy-bi{T`;|Xk>l1#9=63jd4uSztgNMAQCi-?J_NRV0giU$
  60.119 z6%=?Q3uk9%)0RN&@W;5V{USuZwaAJ_*ZL4yuE;-@lZf^MJhPxZfrBF7vgOJ$y}oQ6
  60.120 zUZuR{V(ZC2@o{ltnf4Ol9F9vvc>o0wOvCNk?6*@>Q>m$GsPNf2ICOrz7JsV{a!UdY
  60.121 z$W`6;FR>nRTaLJWw;Zh`j~LK`k~L_LabNJE^LSbrW6yPqojsfT`t|W`fM2c>17aAp
  60.122 z^VCKJm#HjUujN8tPCbBM&7*ZR+I%4Y4z@2xcQZ5!O1Y2rUpini6tUZoFrHfr{SBYQ
  60.123 z5|{3|n?h}sc>+cgkiDo12H|5mIWe&%c(78N%+}l6(2(r1Ip4jnl%?t3e@z@y2U?Zg
  60.124 zYV1MU!~XxmuF0PeZCHSnS$s;)@5O*`50&HP88>_P)LB_s-zJKO$2bF#bXFa#i61Wx
  60.125 z7VXbWPnU#+hVr^PJ9p#a;wlEv3YLz2^Pz28-`FT$*cA<+RM1vQPD@Mcu20R};){-o
  60.126 z(gSszf^a|&V7T|z;^3^DwDg#&rsmQV7Mo@c3ab8ado=d2Pd8{fwR@h)r5#qJM?2V=
  60.127 zIM{mfr$&bnJLG_^bYCe9Q(Fz!TPFkzVP-N|Bh1XqOzQK&p`jrYKsnt{VmGDk<zIjE
  60.128 zh}is}mpq~MVtpC`CuwsEy?4GF%cE6Z*8rFIF-T&0sr3LYA7m5+QF8fhf<@1kJ4uFO
  60.129 zee=P>R+G<M&TD!-%@A8jVkEX>Ve+b~^G-V}I+o2_zkmPEg{deF#@#{|?>`^N_c(N+
  60.130 zi<X=<>KAg`u|mX!cEd?gS&8rM&c@=T7l?|AUV+d4_iaCLhk0glY25|DV=RRyrf9$_
  60.131 z*B&lcJ+s$eiW*a80(Wq*(J7@6ws`8)DSHTuySdC27$!GKAuC*@FRVtpvA~|7x<FAw
  60.132 zV^LaDb7YLXh%q!(GDESqKkgQ1g7odv<{CJt>LVmYts?1LPHQv4M7`2#I3L3ps(a2N
  60.133 z&RC-U^vXYvoK5u};bN4<wSXs+*U)j04w8~XfjB6u#H)y8_Zp0mOb$UDqu;xCtED5e
  60.134 zCctC~Wo7$)+oPUU)0;w&vqfkRQs4#)m+tQFi*FuX2Qb$jsPsJcuy=MYkqe>~<OF5O
  60.135 zr`B!Ac=xW%;bPI~9vz?E_x`!g<YDamJc(g@%rFc31^d-0aBi!Me-izZ0A3UV0|N_L
  60.136 zdv5`!(SW=k4habv=D2rH9ZX#mXvb*CIvS{ff|Fz$tMP8m+H`J@;*CF8ZJ=`xq~V{j
  60.137 zo~XO94OU`IIh<7^6@#(ki=F@(&{||MJkRg4@mIF<u&KG3rYB2lc^{iqwHG7c{D+>2
  60.138 zNqn<~qdm%Hvs;OS)lt$kc6g>W(i9KCUain9rJ|?zJeXcDL~{3a9Ubm><B>6+cLj+c
  60.139 z1@u%opc)&>q=dUPSd_I37SOsS|L_gD=3f#jDyrM)w;w)SlCZP0>%n6y|1eT$K1fA*
  60.140 z8DwnD9YH}2UceU*kWx!YgK=?j_X4z*he|rv**tf}U;Fw-Myi>|3b|j5b((m$E|)A>
  60.141 z@l~30@p|W-J9jJ)M^dTx>*FK<A#*{`EX-qTI9uoOSkb75>xPtikAk?Al%q<Cjs9;~
  60.142 zB5}C37zQ)b7Cq<!;$Z}?psAvwVp6grZ=NWtGP|^-32=Z_S69aenW^aH;?koT#BK_F
  60.143 zH{yA`Kk7=Ql?C?pt9Ur;ti(R`eXFk}zEAb_6CaC+yr~5d^H_L)A<uz}i)-^&ylhH3
  60.144 z6`!5auWk<qcX#)KWXb4{A3l6A-QyjubT2am{l*E9o|RWvk(nvk7Au^EPe5=JgM;eh
  60.145 zN}_;lj7<Ih-Rb~}=y9pzvQYWguhsKx1D7vfE(cK(B{BFyS62{Vagq&v&vk2|>-yuj
  60.146 zQ^#9_mZy-dmO|5BRw>=8!~N~FScC~+VHSXMmVF&Z-Fg11YCQ%wLJxfGnr!@GdS*s(
  60.147 zznQJ7&H@N2JI5Tvx(*r*S7F{696fRn1D|!gRaCWExjo`qMum@S>SJ;3)~%oX*RR)D
  60.148 z{`z=xkrKNO$yT(tRJJ^ju2$4GYtt~8Z!EVCK#FT<V8Ex9nbom2-K<u**`rni`XV$-
  60.149 zF^x-n93R&kBPzPB0v4vXt`0+_yAOOcc>UI`Bz@3QW$O63BQDsCS|}#9ix)2z>g($-
  60.150 z3cx%w)6>(Vo5R_Jhr3iWrzlg?(ps0?Au*{oq$DM`$cR<)jbzfiyu9wxxo^l68-L)k
  60.151 z7%JX4I5^OHi%%izQ4p)4rKOeOtDeW6_WgUK_1?x@^pgNet^|Oh+Pu8Hj7p-}_E@Dt
  60.152 z%TW(KNlD3&s$L+t_a_iwCKlgu-_KWGNr~TmwVwPa&!Dxba3LftY-W6FDuKsbE$4*@
  60.153 zQ-$X8HS|6GrcdSIQB9%N@M#5#kMr7v2D!ksFL@IQ8LdKLZG`!czw>?SLrBvkQnx_e
  60.154 z-{0Q`d|S{n@9*pTx5{mIO&5_FBD%fowlgi9-Zj@^Vq!`M22|@kkJe+iNJ&X0lRCRW
  60.155 z7ep1A50c$LPb@EIX%w3E8xseEOmmWo5#XJG#YCKx&G__47C3M=;^3VfCoQ;C7=7v5
  60.156 z`g$~E4-N)1;<3M&{Ve2`#@grO-FD9bkWcwT#n!qbC+;%UQbpxU?Ms|<0+9KK*#Jk*
  60.157 zzP{hP=ZjY-8_3`Jc6D{#hM-q2fzI&b8F8ZDEt!pJzPGeL?n8G=GFGTU%iP@DoxLkr
  60.158 zD%SMgUTRA3*KU*6AIuC4$$MuyYHA*0>ZBDFXFh)UGAHn&&NmKphCCY^TQu;R(Dm!z
  60.159 z`u8@mYL4?=DMOu|a%?u6u^QmOGQd;_fvNb}r>LSbw=!s1<xInCQ%BFjA`u-Pp4??p
  60.160 zKnRr=2m`tZv{OstI3%-^<#~vGKg|m&WuXGJfdd-7ySr<_Vc51%3>i-!cF0K?;H{aZ
  60.161 z#L0F4ENaZ4z7gc8wp?gv=;rv(wrGC$jLkbhM^KCGR1!8v2hIhn*!+A>9%5q9-Ok5{
  60.162 z+j4=_yno7(Y#PWncCK*U=Ek!{Wbt#Y1`wm0bDf5bZwaW<17GktuO%2ND0JUk{(@}$
  60.163 z<@uAd3Go}YMZGVvolU}Sx`5NR$pn)i74b171dDBLYjfc65Ci~^<6kc4*iMf1SgY#d
  60.164 zeGj*rxQUMIFj7wsDBs(e4Dyy|RM2?v;K4LR>HrYc;n&$#;DAZildaKgqmDSmfK6lv
  60.165 z(3FiWtLzDUzwRnX12bTJHO!6c*B=gp#DB>cDi;3f6Up{~X;xyIeCpmM!=_Jn&a$ZH
  60.166 zf9DiT%FA2ldZrNJLJ&48+R5GwqUsVQrRpuT&B2bff}WlpxQb@U_DG)PgD76xd$7t1
  60.167 zXtXRK=<#mJK>O0io8po;85owOZ<FMLoSt#t-=euhLc%$b7_K=_O-|l>0Ptg02DW7k
  60.168 zeASu7{yc_jLP8^+U>Z(&;}S6DI0TM*9#@piVIjTq2Xb_MlJ$irH?`8X!KJHRN0^&C
  60.169 zvBPM7S#)h}?NibqKnpcwMMiP4vWljr1=;z8<m9yXTCswzg+kPbtq%2V1UE1Y>2j3Q
  60.170 zK+B<aCFT3~??Ug{ui~%$jSt#tYi(7ydE<tY?^#d-((3Bz@@d^J&E^3eCIx<RacCvt
  60.171 zU@)J>l!IX8AWY58wj9IBF!+e{bmly6)A{-N8!RjtLQxUCwgy3<&+`<ffNd#%gX{eP
  60.172 z7|N!C(Hkju9uJ@adb4E(yvd5CEU_B@(FVqw(bOHG^?JS6kuvJ)QOj&q2Y<|de|`Aa
  60.173 z*49=bO)*2v+)QWRKR$N8yQhcS{9Cqo@kdj3f>;bDDmuEgG7CKR8#EfEggq(V+}xZ6
  60.174 z8cjh#u{oHzm4^k4;9wOPg;4u}*1Q3kaU2m5Q929Q-Tr&dj$o;S&hub3|H749Br0W@
  60.175 zfXI35&7l4b+M@cqZO$m#+ZV+9`pTx5t<6%PydsGaeV%=1Ql5o47;vEkLRB^l^4-<$
  60.176 z?{A&#$jHIZOT%SBjV&#9JQ|KqlRKYjYHGS`>)=yjF!GF{Bb}XjGvLwM&}hWQLtbnO
  60.177 zcZ0R>_8}Z~-;S1Ya41y8Ox3-+Vt`lV?@KN0F(iQ@Sz20BB=0JmnfeuyiR=CFI{F3W
  60.178 zhiE?gR1ZBx9i4A!bKf(<Skx4?@cmiuKu&8YC@54t$AG(^hY(}U24=xa(}K$F7Femq
  60.179 zISaqA4CWb1J<yHMqlI~ABL0I;(8VsSk*;%^*5&WF7(R{KbC36ScU3e-;es`eEuZgt
  60.180 z=c{H+R=>nqXCpmG={Cv3X^$1IIs{{}_XLC42=eor-wg6Rpx^jtSsh!B+x(%?PA|;2
  60.181 z5&rLo!2pM6<_z)B)7MI1rn*w(Hb*<tb{AAH5)x)ELLP)#m;Uu5Wg1Z4Dwz!AUlZE<
  60.182 z8-Jx|i{~o74Y(wOutm`z+D*+$H)ruq?#V`Gh~5)WwhNReVF2Jr-FtA2hexTxtUp(>
  60.183 z>S)hYT0<imeed2qNAS}PG}P4iN%3m3a&p6vob$`N?;m;xYi4B;`Kbb14(8}K?9Hj1
  60.184 zJ$rVO-c&I|l@!@$n_gblA_c()+S<awQZK6V@A!Df6gv}=*m@v7Q;CGyqIl&-GkdY5
  60.185 zAZt>y;xjWdpV5CJq`v=Kdmd56qXSn}fh?JzB!>oyEVb^S*NUnR7vK9f0vu4j#y~P(
  60.186 z?5lKl{SA|sG8-zsdxxD}nto06{5{j2^sTT%5SsmeUrd8$1~vU-1rQ>i8sfv&Ni3ek
  60.187 zoJ{evzWyxyov&hGkYutvQsDu5Y|-tee~8u`7f7~<41WXjgwNsO;SSYarwDpPn}7Y1
  60.188 zdFKm2;M&!FxN2P-(Y~ag+29Ep$bjhfc>)3!gtZ8{xCa&?zVl5@VtJF>%cH_oklgj4
  60.189 zZvTG#{8^bUj*`6EFycC@dgR3YM5d;s+%2Pf=jYdyo|-yf17y_~>v^=h;<{Ynm<m<+
  60.190 z23SP$X9qWES_8RKWM}dRbLUraj9%l1>*VjXV02|9q@=tCppusRa^mX&;v+soQFeB8
  60.191 z$OzldcV#BgC%x|^kA#A?`Yc6{thiP)gloPw`Nxk(c@b=ZdzXWgq>2DC<RU8-!BT0I
  60.192 z+THOOe?#t4zQ0uV5CIhLny-JmQbL|!^dJ>fMn*=u`5hLFtU)>Mt&@|G+^^V~@YksQ
  60.193 z@k0#4=<+a8b`Jb(sOeDUi+aBma22<IZ>Wd6tc{$bbF;e7!NFkwB$r%dIXdzJ=5V;Z
  60.194 zIM}P5pk`$Bz27$(Ftp{zj~}BjPe<^}^?LgHhZB>NoeA4}CYd#ZgM-X1xo)EXn#22>
  60.195 zSS9U6w~~?)Kq%FWp1XJMJY%u3j~)J*kd#y^v^``iC^4v7Xr___b?PK6T=m4Ut*uQ_
  60.196 zwGcU2L5>nEm6etIhaE=+t9L4@cBY;^)~&e;_V?9^Bl$E(@*r6F)olib^>eI5Aiy4A
  60.197 zNPzMIY#_%C=w)ndZLy+)6v-1`aHWX^Rvu&;ALE=ObQ%I}T!D*!)k+5xP(3V^y_UzW
  60.198 z{tqBjRlB)A`q|b~tw7X6)YQ})Ka+d8L?CL1zG;A8T|O#da;?urO_1H+FViFfrXU*(
  60.199 z3&}qD`-=}BA8l7*Dm1fp_D7FLTn~0uL3M!zPa-C^wzuaJSZky=1ouZB#;T!O#lFYU
  60.200 zF3|ZcJNtJl03`Rld%2FyVJtpb8f86p8(|ZmuCSXRdAg;f7KTdl`oA-ZBdRghV{h&q
  60.201 ztVzSn>}(m-pH&}nl@YsPWP|=ofKx8M!mC%WOd|QtE}3NNKsD$mH8lSEl|uB2k%@_>
  60.202 z67oc`Gg+!V-=PvdwpY2jx*CI4+U_q%0#lOo{L7y-@Jk+oJeHQr^T>i|MRJ>)P!39A
  60.203 z5<rR9bpB#uWQ-CJ6x@Wj#ehfri0Pl;_f@zSB`c=cTUl9Y%aft1m;RND4a^wNFa6Mp
  60.204 zmV!d%#+qmR7iQ7EDHt`SXr<fUTrvwt07cH9$DyeI=>>p7u?abBMx)Vd@3TNhj+h=F
  60.205 z9Ug(5)eg&9Y~x>M-Us^HMmA`Mq2`7?_ZNAxAR<oi`W%h5d5-h({d;`J$u1EhBBH$P
  60.206 zru*}0`T1Sey_p&>+XdEJN}6f-0gstmkn@`Po(#2aNCEQY`T5jlPylyAn@Y2@vrTkk
  60.207 zl{B5F%afB0TS3P?!e9dFgqKQnYTx#}eEBkBe%=I>rYHr6!Skh8XYm5vcE)|qfxA+>
  60.208 zwbpPxVSl-*%2Q0tFA`XVOHfddiY8j0(`u}G&HEhD(j0h%4ydc&<1mS3qoJO7QKCF{
  60.209 z@vL45>q|M{KwJ3cAn>T5?u!@YtUP{mCRyJ+kB>-!OE-J1R>mG$PWA#e87=<(`#lz1
  60.210 z$Jyp}eM3WjtX=8e6bn$6+|;~KSx*aaRO@)H4>tDs+`@u-k@e)y!=EA(Y>DON<u&X~
  60.211 zlRvgjvdHtu`4Jc|mz|aI$7F1p)RLdiqKZj5cj#DAsOo^JnHdAJ^G2Kzxb(_km=q@9
  60.212 zO54bO0p`h*F#Es1YZiRm!2EmwJ2Zd*6eQ&xqq#qcqRc@#AV9CsKY4%t(yp#M{ke1J
  60.213 z4ilb*w7l|fY;4R0xwk;UW1)U56aS>(GO_V+seQ?G4r{#~-#1X?U|D;0H~w}c*3{I5
  60.214 zo+G6GzHEq}By@bR?zOVA@&^<gx#m(If~`7Xt0{INw<H*!0}?t<hbp<8IeXUlz5hFZ
  60.215 z-<{pvxtZ3;aKs~P8XFsDT9&Uq`MWY+YYU5dSz@1}yQ}MdOB8Qjk?+%I&)y+ydq_lm
  60.216 zKf7UcRI4{hBGPYaY6`b=fcY#gZqL!t{_;Ll!=Bl2X~7#`YI0%#SnIos+w1MZK5(Nq
  60.217 z%1g(4*etr;S>a>nk=)_G?dr91QiAp-V3RdY@@9ltSa@_UR7umg2t@L45q~n89EWnq
  60.218 z(L7UbNxF)N_RIpTN|8l$|D#2aI5HX<89Q*#3NFe3U1W;^esn>IJ%%5|u@sk<&WDO6
  60.219 zj;vh>K+l+Z54&#<-!$#b96nyDCEAvfkTB1bXN(lkCj-4k`cEiSS3k(>5bEg(l1-7{
  60.220 zt2&rwn|)6&37DM^!f_WW|LCU>y=dV3+sw>%*guKlIR)Cc0fo$vP2w_#MU(63d%#M0
  60.221 zM@L5l9@)#C$w4zfmQ|zny&CQzAtCMuhlgn_`|5skSC%jsP#fLI3B3EnJBEAQ7DIgl
  60.222 z!1nuFV9mXV-@JL#bbPq%xgTM(00oriT9hJ}9K+=yh`1r}xo--R?;&wk0TD+CKKyM$
  60.223 zLV^KMwSN)WfUmE>W|v&Qco_4Xwp){~i%V(4*5Y8K;Le!$*~Ni^w5O7iTRDC8+U6!-
  60.224 zfmtj^D-X4wJ$rVzpX0bZf-5y_Yi*r^M@ZP?<mzfFC?H@0T1MSrabTJW9q?AgbB6Nd
  60.225 zm=fEYW%(s6tS3Dw>1U2cnL{vTz|Y+Po{{@&6aH+f(Jz!$RZX@8TN@jt{ndvJdu5?s
  60.226 zJKtSlXc-}omYltW90TM7g3E#C)>_13(>6CZyOEZW$B!PRrV9#GH#9VunM{C=#Ty<P
  60.227 znwV{k?7c21SWz>JgF?BUoFJQ-j8(s!hGkZmYzS&suW+&dE|!?fXQQ_{-<^__Rduk|
  60.228 zoB)Vp*I(wC6&o9?WgpI}A(kW+>oEn{VrlofbE4i~N?_yn<9X!N^AM;<s6)Bx>({RX
  60.229 z5P|yk2(C1DC#T}19FLx>u_Uul%CqC+GHNn1<2TUv3|c;a)Nc->aoJxi;+F@$Ei~>-
  60.230 zLNhWlF3%;$wv`W+K7G;<L^ryM^m$m0l=C7^?HK9a2%FnNj4V&#a#~hp#C7xpTr*8E
  60.231 zjY<Qj<=3xgM=%IlO_<3F{MY44qHOn@*RQ*LeUS~4zkfU8Tan}$EHG8N>$EZ!ha64Z
  60.232 zzJ0rKUj8{qU2kLU&(YC~Gcz+uSU_nR3<lHD7)+0c?7UCR&%21ojUKgdeV1o+cXK-!
  60.233 z`TO_pNOyO4AhLrM7#LW|uJhw{+|R&dc}4=XXL@j=Y>G*AR1`j1>A0V38lt0?XV7|t
  60.234 zbO?bl*@Ns%1r4kK8ETBERthpQMN(Q?&FS%RolO^VX64^}w{Jg<2W|uCVvgoCmR*84
  60.235 zQaulS9~j6AcMEK9YqMDEM4v(xt8mTz;zb&M^x3a+_m|?v4-KgsBD)faF(VFnWme;_
  60.236 zLc|jPXfc|Vkb$lEaW!{r5A>uAA_zgPbaQXrs8$=#GsV0320hTjg+eV5AvIi75_zZP
  60.237 zw3RF3desSHkOOMuRrc`n+5fkG^GZwVHX%Jem=#uIQO^Eq4<0Hn18eLD8pE|Mf{O_`
  60.238 z+*v8KXMwpj{hzzV#+pdT$@y>Hx>d@+z))tWr&k>I>C^r2urNL)B_;kdxVR>C?i(HH
  60.239 zHQwjKwU+q+Av74CfBwA<E7*#`AbQUl@?H?xbEx<@xiDI#rJ<?0)CIH{fSh>k$?yB{
  60.240 z+Ro&I#x-VuLc4}un@`K4)hM<aFTpxXa!P)a#tfF?qPz}~#Tnxk{j5*-f8FJEqJvDp
  60.241 z4h;{ReiGA1Hk-aBB|W+8yf*cIx;Z@7qRATMSY1cQYO2XR$Rf;(7jc$ZniUs^hKA-R
  60.242 zCMHh*44?`>swEP>q4mr9Eg{VS4>vcrGzS0r_3IIkc<JPtPS-0yw5m2&4i;H%FLbAc
  60.243 zCpoXr*av8|LyCod`}U0h*_!s=2CU|h&QR<f0^Rau)MMY=v_g{&>DlN`Q_5;$N}=dQ
  60.244 z+V;jw?)M{yKwg6)VCeJ=4a;6b)m$A!lp7(fz~7ippAs@tQ*F#f%AL)%wY4RrrKKf6
  60.245 zGn$@0ecFWd;v2*T&@?qSYdjCy?oqR(@mQ@V=g3NUi*&CnSAig1pJ_cRb6noi$}^Cd
  60.246 zh;|%NF&L^e=}z@3Fzv-f4&J6@U-p4tdvy8A6?Y#(nut8$m)CJ|=!QTVe!@{GS1<ih
  60.247 z;QK9RR#pd1D5PNIgecO&KOkVUFV8Tj%C`|NB4=x3qYm1v$cwFVCvGuF_~@!IaLPU6
  60.248 zVB|`(v7SP1fZX2@s|WWOpdlgY(mvCNtk>dT5giabg)ZNt^y1>a)n(6PSDrVIbo$Dj
  60.249 zZ4ba#H$4JK1+_9X-9YELf$dJ~-DPs7JB9LE{C75a4G6`WfQX2WSNG@p{5-?<)XqPD
  60.250 z1dtv!pjYBcm!#(w7d1jcLlYTUSQIF?Rls0Rq^soR3LmW0*3ES$Z>MEsWY9h72I<KZ
  60.251 zA$FCVeD<#KpM*+YUS1Q(aCgwWO|IKZ8Fv@gLFw^~me?Bl1H$gIYL@T3PfJUyv2#Tv
  60.252 z+;^FHG;)fIMzaBQ8xs?QmM#V1w{lPgEEovn@-RaYD}v#q45$rbQF|qV5dt<tH+z}Y
  60.253 z`;lgBxKw!iHh#Jzx8?%3>X@^;2MBr8F0^mf3)<v9ad2xSk1M2TX|(TC50A>hmM<Lq
  60.254 znQBE#zSCSLoRsIld$3<U%35HEaf+*jwWd{7Q^WREc^<pzKH!GsSw|YSz%iE&hL#6`
  60.255 z)GJg*(IS1BB>+%)zKu<xOoPa=!o%_Las3>4k&=?C!DJkOk{6(;cDaOwJrPv)1c}Xt
  60.256 z?B*L12j7uPBFQ)E_+iEvm6w-SGvJ)Q3z7tfo}T_(Nm&_IXn!H^@aD~%Y7mSU73JkE
  60.257 zNm#_#`S~J;*bQ}coOuFm$cX_3(!zEM2e<2-33AeYlEK`#DrmI6zW(O8nweR8?DT3|
  60.258 ztgx16`u}=IR%R;bL#tiYe|HV1SCPYP%+Yeiul9CFRml18chBGx5oNJ&ZLX~RwgjCs
  60.259 z3gXlzqrwn5i$6Iswer4N%N!5s9)`$5buh>hgNFwPc1X(rqDwQ>iZY3`sHs~lhfPdP
  60.260 zBlC~us*X0Z#*$-PQZ3UIGdQ7A{G)~3T`G;o^x*EPLT<=V`a6%1uA;9H#`Ngbg5>1n
  60.261 zp25K~A^dfa3M!JW%xr8~!Xq8=qLFiUGuX1^|L$LUyp{*|l7_)Z#t6*aLVx`H*@(=5
  60.262 z0w1>?qFxpeSbdo|B{S23gjfc+43C`kzQ~g&TfHU)n_REozKsaLP=QVPg>+iISgb%=
  60.263 zf*4MkIj9oAa+<w62OypH@}qAfa?C{rmAH0<v_?`4c9|5YT;}vVI@qdxOMs;!ChibM
  60.264 z`YMEvR)eIQC&9q+Q;0f>h>9BW^J=(+UYKlzuz|seIQtY4+lG^$9uNon`CSYrq~XJ_
  60.265 zTyNvwKiJIjT+DV}H^@6e&(P-q{mGe`nH?H2MoTg{J3DXcgw5FrgR<S;*hoLg!y4@m
  60.266 zx($I`S8qCO{FPY-pf2Jx=Ll@Ev9`YJcCgy;5E9Yg<q)!ew!Jv$SY2#AS<0r8d*cQN
  60.267 zM<=uP8Kn2=KNAJ}$9&(~+B%2Qz<i{<WEYhC=wyhL5HAT3{jt1Iv+-N_?<vtBTJx|k
  60.268 zUs47@V2y$h=AWIK`W!upz>kxP$`^mcEBw;;rkZTLMI1aerI%;Lc;iN$nS2PS@+bl4
  60.269 z-2S#`el^6>E-r&>e;6dN_LQMhD2YA~gK=0IQt@o*>XI)iEiK*K??A+VK^heKBh1wQ
  60.270 zY&{JC5yS$T%ubxeBeQ$<{CRq8s<MWLhHxwUjT;H7De@5#@ywvnC7wQALC)IJfEG9Y
  60.271 zj#TWkcOITXRksG6G(+OvrAfSjj_Wp|8uGt+>sIRVT6oolD-5dhmSmK&QE97<pSrxf
  60.272 zyn&9+xFvure{)mQi`?8?5AXpgbQSgoJJ!8fRY#=(tDB(ChuD<j=QwL~bMNWP%E}%#
  60.273 zrqtEdRm8e)^&hF^86;+ERS8)jJ44aY(XBt?fISM;3QR()R_#SZ-t==Vk5*L)wKTP~
  60.274 z$VXT-x3qBL<-LEX1O`_{m^c{bn_K}PN`QyQR0ec)E=tf<@eVR<QuGTeJG)P!w9Yq<
  60.275 z!LadbdhAYr3T0BFby{!b2`ROklQnaRLi%3-O0&18N64XA*H3!tiXT1~6@2IWDKzv;
  60.276 z>n^|ZS^`#Zd#Ka%U}yEqa`}3jan5g;(Z$Z*z(50^5Rk>H<mBOdA_)%5Bf~9rs$)=h
  60.277 zRL{Gw5P#t|S51}@+PyLMBEWzPSUp3?P4-{Q(E%bBV(weN=m1EKDYY0bb!whm?9WT~
  60.278 zFo~UROb2k>n<OP6`5aK#)Y_Us)OPvu<t{KYlC2S3ohp@5Xf$$&7ZVe+ClSeg^RFFW
  60.279 zy)Q96?!rjLpj=uv-~IddyQ<D1EoPeKPOJS0o;cgiwEVj7wzCogie7_Vum{LV5CT@r
  60.280 zhKs6}ToE=$vKy1d6RV&MFX0Iza7!^b;F$%0uiisEX!8m^gJ=a?elUa1ID7W2By#A8
  60.281 z9G)ZW|Nh;()qAYD9#C9)!O9{cBAI|%98`xJO-xz&8UT|<PEJmtjmH_h`p5x4E>`;s
  60.282 zCAjvSvNG2I<H)(V1)wnImZo37WDw2g>kH<p7a|Q9%hhuPwxMtV2%_V|^~X&tICqJO
  60.283 z4Gj$|8tG1rAWQcF$d^{gZRbP1Ke<ojTa~b=s3<+~{LV?{78VwzKYl#wX+!!^)LqU>
  60.284 z17fLjB*iCTj+E&c>FH~yhaE==cA+Q-j}pT*#iDsEM|OX1wIiO~{qVn@e9QH4vp48q
  60.285 zJ@#0@b8YGuZs$d0gZwx~&^3(V=1pg_f&7&EZ;yT4VqNA_LLU1NvRpB~e-Hcn+v9M2
  60.286 zC|5)%GBGl$V~#%W728ZVP5v~8&=D;0fKTi-2ol^<_5h?zeLlG9Qt?<-HNq5DF3l5)
  60.287 z>}#TUIBkj3dt9Bc<YYtlOAgz^j^XKGCXYcq4heH{6_m)Pbg69dbeB7?@3|{5DlG18
  60.288 zVz&#-2NhjY+<}N&z5i8lj+@K)c&(57qsNa$=OI%-j(ya0nM-UDU#vnrZRZ&cb@lmI
  60.289 z-rigzBO|IrL_q@|KVA-p8}0fvI%{c-QZ^qUFw8UA>*3*{z@(V|)Cq=X``#SvG4uVk
  60.290 zjSVxa_b}}gDC;i7K#NI9IcB7%+d0_S{E>>}Ufck=@ASiNFMh6*nC;%x-pz}6c%4r$
  60.291 zm?^Nay;(V2HdBqh5T+tljZzY+7=aRLOaijAB$yTy6r`dN!XU+JXKU*p%VVkOv$3&(
  60.292 zdwql<*6s4|O80#rLq;Fq3GOSz7YGPgG)iprW%cy*zUX@*g^d1J$e+X#HBa`-ONLAB
  60.293 znGO%PN8S1D{z?mhO~pf2e`I<KESH0=t!<}0$dKD;bez#tWAK~!CjpGs_VxvQ85Urg
  60.294 z8({Ic;NN&{O--^$M;<3wS3dac%D4|*8>O&^TkxZA?1P5$T`9B3ZU9)8nSKy`uaN4m
  60.295 zUn>TZ?+K*h$@DZZNGcOcOkEtU@~i<~2-=?O6xHo_1lw{G2&(ld0J6+&lDEg($48@c
  60.296 z$T2xZk>~Do_%jZJmcO}<%bLQ%!d3IIQlFm33LQ4WY_zI&DnKJ$|6jODHsu&5KEBfX
  60.297 ze0+RD{QPA#pK8+6nR{XNa)W?o^1+r*6!dEH^TAYXB_)RlaZuWpB;m`jY!>?edd9pC
  60.298 zK`z=X^xahmXVqY2A&;w4iRO1~69Ex(czDRhOF+yM_~@H&p*;Z#wU6vPRGSB~<9TJA
  60.299 zi0A*CmzVHE7IX!sZc>W2VRFK{%d-^y?;l@@HAL#Jp|=lzO%6G(-q$#`L!Pf9=RN6S
  60.300 zLk-#8V>_ZbVhGY55?=pU@jus^^YXoM^h@`KU*nOfG~T~=t)5B!qLVvASKM?+S6qB7
  60.301 z*PH&|I|QO_q%nRX3CE;MgU1sd=h$e^{rgw((tvLx1#!xyU{AlNdCeP^4mn!&^@juM
  60.302 z4FmtV6|SmZqvEb^llD7bX3}6E5xweqa~#%6kJ$-_+WI3Fa~bA;AH0UX%z{?KBq$!8
  60.303 zPiH>v(j1~SPdoje<q&5ireH*Kh}@W+7=6rEi1Y7Vp2YFB2H*7YLKb*q$b$OB5+kqQ
  60.304 z@+Zx8C;esr|M*Svq&*LL5m4a2wcr`!biVioeT*A58*y?>k3@>M!WpM+RhW2p9(h|Q
  60.305 z;`+ZY{BJ+l_W$I!w;>rwl6h%JtCc%&?GD;R&g_Ll)GU<#wLwz9@uemW=2k2;&v9~>
  60.306 z#5@wIvvL<lp1@){>Bt(h!AIwozH?W?dk9x74m{~-{7oWpAqC!_!R<myPxs_XMt*td
  60.307 z%S>qd0JE&J;=>k#wDXV}|GJHT%g4U+)ukV#X0w3gEzbPUn^;UjYOuKic@Ydp{oinm
  60.308 zQZEwkDpE>vrI+<-TGuim1ED$TaaVuWo;WW5xWRuB2F16(hs|<V%2cP2R#hG7>pE7W
  60.309 z{rALQ9V_uOa^l1K-aY>;$9|-WEa-vmEspB0NNudIuTu#c{r>9VPsU<mzqO!}n1L+~
  60.310 z{@0^<6MwDY(XyX^7Ad(Fm6;+j+!yg-p9+Ee6ABA^uCubTjsf;yX(=iBa>1K<$G9$)
  60.311 zWEU6TCsONms<^{CifkycUtvTiPX)O?^Y(rHu8|^A@eHb(rBR#R%*0IX$&<IuKzHuK
  60.312 zdw=5#8-nO8ElOF~*`=>gP<(M*uGpRl0I+SWub-B!vfGP&^lfK8g47-71eV537A^;W
  60.313 zL+7et-u4&6G%cQmU(9=t^gFKv2_M}*h;|&|wOgBdwwb9>b|4vbzoSK){Wb>EWn$kt
  60.314 zR^z?i5I_~aJ?2d`<Lc_FCe&EJ^n>|dXieM<R(X(z>~w11h9ajp403XE+j<5DKg*Ag
  60.315 z_TOy}*-E_y!aiPWW~*rzSbrYt>+AcnFmqk?L~&MkD>I;-$&YaX4uX-5R>N3#?)^y1
  60.316 zO5WTT^?tSP`&$*)&~d$3wxTqRf4#1#Y;jWb+VA=*5bP2YFtmA?^Pc%=<?u0R4<R6D
  60.317 z8BASww?c20Rux*U*OBF4D=WuUd^s}>oCV5QI(05rwfM6r3j?<Dl}8OgKhD#$vuW?m
  60.318 zg@l9@kl`M^zHr5c0i^zS*%XU+-&7!{EckJ~$2E!HW!uwm%V$d8CL1U{KO}$j0(%-Y
  60.319 zR0y#jV_X<4YImRf8Q?KkXudA&wv%1t+lZJMUte&LVPLH9S%Qdi4h{}ZyjY*Hy?_|2
  60.320 zqIfd&pZ*?^KIwNS<%P1cH)xF@-2#Ve&sphUXV(QZIs4=DUEQ^$=U+bdg0W##>v5$2
  60.321 zADZcV7ZE}EMl~ao=DwA-hn=0>h&PeY=jGYi<UD%~p3DEKUax4U)q3)FHm%BoPqHbT
  60.322 zeWhe-*4eO<R%K#hVzL^Q<X%)auU~(7_=_R-3}getsp;uy?g~+trIOhn>KYmi%o?Sf
  60.323 zePQ<Mfw8fpzA(OkTzeYN9^@f|veME(<kV<jpcHP!iach@Rb>0&<|AN4MFL9B@3CoV
  60.324 zSdAo4c}4~KNN)4D0W|!D4M6T1SzCRfp`nBz67+VEyjxN2!5?dPKH8n-Z~c5Xe)K&B
  60.325 z$DTXT|55KGH3)d)L8JwfMXivtOulMhK=oXPA~vCO&SIWaEiE;b8tLUV*YJ@+o=909
  60.326 zsh~$5`dbv+N=r$RF)C0^9vB#i+&hE>^V9~+RQ}d&LIcKmn#d?{wmsHS$n&Ti*_2bQ
  60.327 z`}y-HvI%FK*f5f<<K5ms=SjV^w4`Yp&{V(Js)C^wNf_vP)5j6;WHQ@wR7k5pRU@s#
  60.328 zD9RITv{%*PqGd_%o`A8j@e<<yTS38>^fVN{A=h$Sb<)rnmbijaP*P$7BR>US%KS^q
  60.329 z!^oHlC7tk|nm2dFr5nshLB44(YdfOmX?blDoF6`XX(}NR(5=N<Qe50+Trj}GQ(B1)
  60.330 z0BOs59fZwcuqf@X%fuj4{6J&vxgQ^H*CZw;HX)}Qh|Vj|Fs(CZdy4spnNlNGp+{E@
  60.331 z7E<r$TMYAQ!P;$9;}AuSfd6eC^*k1Qklgt$<VulP_&vv^Av?8RD;9hjzI?O4zrX1h
  60.332 zX5yf{lKKiv!)O0?#Gj+UVFsB@$;QT(R(0Fa!6CCOr+fJ7(6>|7HxX53^C#iiW>t#k
  60.333 zO3gVuG8WYY=f#3vWJ7!3h?DYMfocYiMOIo`$VrRyP)VogH|a(wSbq?t!JS=nzDRdA
  60.334 z8LN69_x0=FRAA<h!F7qvwnjSgF*83m9bmh8vwkr?NXX<%OiZSYogL?EA0H)w{e`?Q
  60.335 z$SG{^!h{an272NqnuGO-mkAx~-#Fl}6@LMF_83JRT((@vfBfSO9;;fR*@ay&R^<%O
  60.336 zKTGTNJ8muXFA4|>+ON;F@>>pQN=uLBJFQOiK&qvCKsM&RU!?OqupSGh7abD8fY28Z
  60.337 z!BigYVZVa<cA?zIzsmmA4x}%6dbh(&3&nI(D3kZr(l9my1S#^|SDS8-V3=h_){}T^
  60.338 zr~SpE$Aol33!$;GS;)@WRepzsH|J=bzJARym4Z5Shst{haK{3LqI#4h5gBp3(J6KG
  60.339 z?AbF-WHjKhlK+SXQmdFOAV;M|;6PK3MO*9Z>sQ+Nm!m8ecEF$*A&*`M{Va4`-o~xA
  60.340 z`JY~Zk%|N41nO=j_f`B{-3G#T0xIq^35kg%<fNn}uV25GcYtu5d?fe4k(Hl+(0O&D
  60.341 zK0^e<$ix(l!5|%($aV#LCqj69lXG(_$IJF+X6X$@qaIY+1BMHIIcJgQ5})Z7`1vA_
  60.342 z5kWq(uJq;Tf=iDn06WFv3M<KR8V85!V1FN!yQ}43Ve9_U{&G7JAz=^q=Kgt9bs{s&
  60.343 zQ39eq`CTSHS20V|JzvD1tZ29$1>kG-26^nTyjRmzV#B3k0x~fbNLAj~_fuFHACzvP
  60.344 zqq@5KA(5z-=b`-|mub(G`A9i$$Kc@p$0}0fq;DVad~bGkwwDdx6L~hhHInCChE|ow
  60.345 zF|u!e3%#~fwv5{vBUl!$nZ*-1kZ01JTIlTTJealE{ew`M^{8JJGoy8|UUooi=FWhg
  60.346 z=E=S7`hxwcUT>zxDX~OZ$9BPO5-{dWMP~h%bAba<raC>j`pta1ySoZ1Z&k=y)vb^d
  60.347 znq<W0flo({NLL3fs|qd=-#v1qx^kuS-mP0dwR4x9O?4DCHDj8=?JqSpH_P22x#%sK
  60.348 zY<tqjo|~5!qUE~Cl_w(uSY=DaW1&9UnJneXd;k7l<oWI^baZst0L>0i&xie4m3xdL
  60.349 z-;D0lv-9$*9L63WBu^p_Ft$hY&vJVnx#evp5mMhD3yF!T?A&qbPE{}m6FAJO8RQK#
  60.350 zt-;u$T4bT|8=)@FLiajf;{GHZ<Y}BkK=&RkOkGEZ%rX|M7X9(#A2*;oNhYOCvm&_l
  60.351 z>+k;uRqp}L<@^1CKSoH2GRhtaA+kq8WJY9f60-NoZctXr9wB@0y;WpK_Eu(gviJWy
  60.352 zpYQ+ozpnrL%GKiiexCb2=QZy8+~>*8K5D)V;j;iFgeP#{?CH~#{?he~7z1HD3bS>f
  60.353 z$F9*fkQA43UVj}L+8xdKnh)s6wF8r|oISEi4QW_`uJoWOitcwNpc~z|H*enTk#=is
  60.354 zX*oFCZ#pM%b9ChPf>fecJQT%5?1kdu;#hHUalidr=n9*8{~#LgQZrUF=|qjw^V6?A
  60.355 z@R>#2KBotBVQ%k(gD=?wpAu5=ve==f`0?Y%E?Zk$7^uJWs+mKZ56JlVG<Hr*)E&{D
  60.356 zAGDRk7<k-n?dp1@tEabigtloQJ$&|YHpbAWrVdQx!SS(XD9wFgEA-$q4Gj$+x@p=d
  60.357 zsu_~-$uxF>jv*-67bmDaiy@qo!7%8=cW>ife#dGs)`0-y2XVT!hO0y^FE44f-p_Rj
  60.358 z8y`;AsTkHT7!0b^DbQWb9&XSib$B`K&%lDufXAXs{&bUER^t0+*p2v$f>%AodcURB
  60.359 z3vDJO$W2E$^|l&)XgZa*ovJkj0o(a!Fh@1;{rmUkCkI<nNDF{Dm!0zxQ}v7OMb#AL
  60.360 zgD_>5ljoDw4%UdE<GgITa{~N*X>F`*D|c_I!P9N^Nt*P6nuf--QQ6o7fWt>PeqecP
  60.361 z@vt##M#svYd)9j$s+<RNHnsyS)ICvAxkhsJ>Q!qCiw+^rz5KaG@8dzHNQ91_{$+(}
  60.362 z7g-gg;;y!_v9Yp?%dVIJ810!VyBW-}>QA3O87)`GDVU`-oWFYgI<3WcOMQ&?rMP{C
  60.363 zZk4S+(pUCesYX;C`0cC1+;>v|r#Fr@lfM79w>O6e2Pa3X9iAybSnWmLRu%4=-h-5~
  60.364 zPoH~n_|KFGsjjWnXrFG9Ncl@kNl95lcnoT8tiQ|4+gpA59KY%{Tvjx{0+XsepmcFi
  60.365 zP|yU#n!sXrT!fyMRyL2*qJmP1*6vr8qHV!z*bj&vK116aq~zu4qC5N(?mJn5UY~E_
  60.366 zy)qYfapAjj=T2x+bhI?UwlR8MXc*0D0tALWs^2oNrRCvw;5cgxqps*XC4@90?=BM%
  60.367 zcstIwe`H38h=`0P`taXf=QQ9A3JVj!_Inh=aeuo0h12-=P|5*9YGD!rq&Mk4Pp!jT
  60.368 zzyk$^kSk$rX&B8wKdCT=hrI0U?A(C-2M~rYwtO~2_ft!nB%P7k(3WB(_Ca|4leWu#
  60.369 zHz^8bD{+5qtq2b};PzE~<Z{92yY80~-*p?Q$GD93nL|4j!-&Oi3$Y$-=|e)iNz>k!
  60.370 zUuD5+jzMfO+cAnSil<#1J`cKdog)@Y{QT@R7-|0gJ@d!VPz8g4fTjQgLu$#=jOW72
  60.371 zicZP%-Xt|@YU+;}8KzSkQ+2Ak6_)Bx^z`x*V`H=LgnAzQO_@GD-oFF4UvqYL=FpGN
  60.372 z2+HBdVoyRcRx{A*@B9r9gpQAI$OyvC!D=|a!`aDcjyq1_Cy07Ba3CKK3hhSFidbO=
  60.373 zhOcYey<)uvWoDsz{u6*^k4{cclfjB;c0T?I^pae5hn?LLxT*p@`t-~4!{)cmrt^)<
  60.374 zh}g+r$<FqVH@gtO$63MqYhw{Bpy{HMl70w-M(-SPR;87BMF$fbBp1Q7Ff=%*e0p*c
  60.375 zlHkeS<Ih-zmul*8p^qFXdl~y4@xW5ve~^s%`MMuHqA=8AF0S&0i_EVg{sybxPlQP_
  60.376 zoKabdxOoIIYoMrOb(TFkVaMsyP`r%QOo(WRJ07e5#3-g}7Dnz5w*0}=ssp0m0)k+j
  60.377 zIXLtZy~D(m87j-zf59(JCQP`>a>!CSPon^*rml`~XKQOY7B05GuaAgRzcw-<G0_GG
  60.378 z0n5roiib@RA0Pi!$Z2u@pSws8ctKBLK;L_Uf`gE>p?-b{aqFt*&YvesxP&y$br4Wk
  60.379 zbaEd$_~~hcoy{v68yoQu8WDG+&Dq(n8Okii$ieQ2p{`-Q`_Jsu)K{PYf;li>HuHe$
  60.380 zG8kIVEi4>vblaSM4xqA3NlLm<xOnD(`2nH3<X04b<2n+D$RqhG!~+!KSN(L5)uEPZ
  60.381 ztX~Kb=4dX{cP#N+j01CLYQzI%;<x=U5zoPva@-GubOkSCuOQrr2=3pQ_!~;H8_8{m
  60.382 zYi{5&9^EzZyMr?vN(ent_~7((;7YTLY$onmCQ~MX-zCH~yGHLLZ;2^}(QU?_Sx-KP
  60.383 z8KrT6`5p|T?pUtffs>=1WmRls=|`d`^N_Zkyzmum$Vw_iR!ONy>BCHuuOTgRw7+Qx
  60.384 zl6Rr=HQLOAftot8Hipx%)Y8&&&}Xl#xHvnG=lSEL+OC->m?Ui~QLj-DSsAmFHBJsI
  60.385 zvn|G4qt=zffQ&nw2KDC7TeDI(uV0Um7w10x=N+c{ap%%oP~h{d2K>e?@AMEnLPE{M
  60.386 zs;Zo@n-7SvAMi@Sh2?=SJzoPsy2@)eEfUk*EdCAbe<Gkpz^sy_VRn^C`g5`e<y6#2
  60.387 zOa0OL6J$WW#U1mVEn_Cunf|(hzQR3ORzc(!o*y}@u?V8)v3oB0fiaz==0X1(9js;_
  60.388 zq)fd<P%>Pk54)JM8IzRjJ;E;$KFEzpl)><wtXb&;;}I_+qH^`w#a|O4A(vmLrlwk7
  60.389 zx^yYy*60h7Bn=0Lk{T^`4bRlUT9?&MTAzal-&$LxvT}3fuZusmv}7elCMPF5$u9@Q
  60.390 ze*3L#Wn~q|@KN^LmoG1qKYmQvo^8F9!I&;i*GCfgaBy-`j{wQe&F$a$_iu%XSmNVj
  60.391 z-HzVgEOH78{HBB1;C#62x-6yS_z+5g9}f);lLelB#olNMB(8B5)}LZ!!UV@8pQ0>l
  60.392 zTB5b$!5oEIjU`TbE*eI%fOS9_KL7Mxe5^H6XV9vrP8@+@w2&9;JJ?c>6#r50zQf0L
  60.393 z`-6y>3zEHhJsL5Z&5J#@G)}_0amFe=<b;dNB0HX>+Yc4HRS|<CV`Iv97RRhi4-^&H
  60.394 z89StGkQI-stq;OuOZ^#N4inKccI01^4cC&v5V0~zK7RvPXYt&`q!<v`QrK;y`=jmo
  60.395 zY%nK2!22J^)!{prvVAX4-(zEAE1c!Gv9X~?)HF3mIKL#u#pPfj!^6Y!0|eP>tO|;X
  60.396 zHK15LIyyQ+K(`KO*K*+EzGYRvUoo8_6GpSlVNgFB(Q3R^q*rq-Co79tg|y0J*Rrm`
  60.397 zb6@y63CW-A+WP$bwbwoY3)_d0v$MuHq0+>l09hJ($0sJ7FzD{x(>0A!|Nj6@Jx@aj
  60.398 zV7ZD90hZ6&O}g)?lNUVH-+%3&d;Kb{turl-oY~cfU0au%5!uInLy6VjG5=hVlVFxs
  60.399 zRJhC-#i{@U@}@;1+@v4lLoO536~CdpSOq?=UL;mL{0*xzF)?9>ymkBswcpv{cyj8b
  60.400 z7yN1$89J233LdeN`t5>zT*5riQ};_sGU#c3iS;^1%~Al#RLy$qU1L2~>Wsv4o65g!
  60.401 zZ<ket@cZ#e$Z7tX<-)>3d~?%GIZvE|ZL+BMSH$ReZ=D*sA^Xf^cVp@v6{1n7H%5*G
  60.402 z1qW9I2M4PsT^@pg#cV#@UP>-7XsAVdKDb)*>lOig`TXgluWf1)yUEY5VT$ShIBUdZ
  60.403 zxnD{LBc-s$K}e06*i;=uYgqO&Zgae}u_eaIPua_a&C}Ax2grMYYd4W!GqNE>D-o6|
  60.404 z49Gr3AO?jJJI0EkXK8%twUpWsQabV?oU;ZS8G1R6Gv<Uhx!b@{x`>}R-Dk8UFU`45
  60.405 znI#<&mymdck<c>?!riJ|VDMNx?WdZ+Qx#=xZ8<DNUtd3J^W$Y4NjwB?v9c+tl9`z)
  60.406 z;u6zv$=~0<d~2@F?f3Q}1+!98h_joUru<)|8T<s5fX(>))2C0LlsPZ=AGofMt5ZTY
  60.407 zAw~cxS3p};YUm+z-g)`?=|K+}f+{O3J4eC_3k!)pc+sb<{L2)5526P9CkgzA9$0v$
  60.408 z-7cUyYx}FY(LpH9Ef78MUI>i5A^wo~{ZM33NTwPCuc@%S>a>ZK;VEyr_VgQVc8$b@
  60.409 z1j_43G^b&buvzzwfxbTFV7SJ+b<WEwhOP7k0W2IG8Y@+5YHH~h5cnKRyR?jqTh|di
  60.410 zef=(60*Z9*2S4lFHjilTfLc-l_vI}N;{z%yrUz1Cva_pe`JUTGxsACx*K9<(dpLW+
  60.411 zS9$;R!(%yF))hQb+sW#uS7fhsz@2KuYuq6VzWw~iCoV(qRnco^A7yJkXXocD*rfjP
  60.412 zj%dUsB_YXPJJit7kj9<AUZ9+wvUOIggy%02Lcy2&%+|JW14eTe=(0$SoUOub)8M&q
  60.413 zA_pFXp_8Ly_@m<W(UNb!8wg4<n3$L_A(b)Se)~D=SVMyInts2wtE+1O6M6Kg>)iUL
  60.414 z0c6?ix2@gXo`3LVDe`YXDqI^zS&<h#9S(!se{kTQ26nU@9}h2kb9WYq7Q+uvk0K^I
  60.415 zS|ua&_oGLTa=5s-z9YXD7c~ktMuDmLkmjXrzDk>kJ&8w;^5kY_C&tFMz*vTpQBYX^
  60.416 zJJ@<wR$pHq5FbOF%rurSPs%tT9)^i$m-M@w3dBTwNlA&cj*iY(K=lMrx*U=fHWT~_
  60.417 z8INK-4C-7JIpQ*kih7H(vz6n6PEHQD1CGcs58N!ZeSFUDtsf5Ns^{q-?t5!-jkBiY
  60.418 z<m5U)dY55ftPAnWYMhoTuMiRn(1LK-3m~8z)SxyqHMLOJ(C7#G$3{x5Es;V5W{QB{
  60.419 z=Xr^i1j53}>AQ5lg8j}NtN#9etuJ4`93}gn)#&+KIXjn&BBK)%5hi3PA$lR{7$Ogd
  60.420 zTCDzVZN0!ifElag<m7VfG6ikM%Q3OAuncT$?%4eO^+g{L(U=6pv!MImUmSWIF=m#Q
  60.421 zI>$}tr$x$B4$phyqw*lsy4%~0c9#dTR$GIwhi*(abR8Y77EMqI+BZwkSMK&_JW71^
  60.422 z>eWtKYHI96m0cB#Ha`YJNJ!{%TKrBarrgqrn=$XE4`Fz_Wq8^1-gro(P_%fdSd0B?
  60.423 zl)V31@0*Ln_!#fNk1FQn=B|kGXlrQ=;$vg3z^AQV4=2LI9<8!VmV7p1@%*_a76Lad
  60.424 ze@UV~l(Xri^c_Gt1N@w%q@;FfOo4XUcR9vuPtZE;HMbXuiY~vJF@mvhuL#yvSF0Ty
  60.425 z9_H8_TtOBW7hQNM6hZqHf@tNbxjmAnSyb8E)n#?}skw;>qX~E1$=9zEi4ae@YgN0M
  60.426 z-$TeF2oUhj4&i&;*nZ{ZyhjyQBi7k!x#pmW<a>T!M8nnlD!#v<{V%`P5OSW$fXn3l
  60.427 zC7MMB`e<3QZAbX60@0!Gn=0wt!SJ1Y3W>rM_C4`@QOnEA`4Gi|iNY?d7|71f&O`7l
  60.428 ziaL#6FOIXbSt5R>$&4gttFVx4fd?lh&B|zZbatNaiRGGWoo?{def#!pLMX7jg2xyD
  60.429 z^*ZQLha&wt*9ri>L1N~|f*@VTqwna>zkh0LYrx~OqQ;%L)|5pO?&Hy7RqL^vdjZ*5
  60.430 z9Z|B#5JK$j?SG*o1X#I}Eap3H0{7*Q-1Rv*SaVq&CRd2(?XddOmm)+h?3`T>KbcY9
  60.431 zt0Bpxl=P_y4C#J?fSpd2?UYUx@a!#s-cgX+|8i8bauwYLqzw%X1;Jlkr{uT(dqdRA
  60.432 zecxgrGXt1)aJtT|cYb9kuM%`gF<|a>I}fiMv_gxSiD^aNw<s?!4dSFTOzdn_zP4v*
  60.433 zD2m5(Z|!J5b)hT96Zs5*?nK6}^|`#%1}$|U<23k$g+PMNK6s6@V9?|<<$Cb<_mp%P
  60.434 zP2&2mU&@qJRMw8$i;8S+Zu_MzEiE|5H?L6gv+qNyUYVYrPTmC;mmTl22eZVf#U71^
  60.435 z0Jrc}*-V%*Pb~pwNF$IZSaaa3O3ob6{$|nTzmJQW&f;IJjdHd9`el>{)1fL8a^s^W
  60.436 zSTvWF!P~f3-lhpT%(h&HBv6TyLi3U6<;#}=5d9k;5)$(AR{nv`t)vmKr8@48<LS*A
  60.437 zRI)3$8s5!-_sX4s1pfk9M6VL}t=Y%dIrNGrN=+Z-f)S*qi>tFWHvVc@=USkvp%KmD
  60.438 zFLCvru&~DI-h`c81hbOHi&A#9sZq|AD_1Ij4_trz_+f_W*U;d-o2i(PRAn_%c!q5O
  60.439 zzMQi+S<Frsyg3#Ec`#aJ*mQ!H{7j6FepsBw{)r7B@bB+$Nmb;=eUI|-k*umJH_)iL
  60.440 zKH}nj{=9JutE*iQ8705L925YMtQYFnF`ccI_2O6B%_NNiqWKW$7uD6>Lu+-zMhf*;
  60.441 z!y(h$P7WNHkw^fokSaMdjOL@=)q&mJ-BpbugY^>6eOrNL*XPfdf(EjbWSW8>c7ai_
  60.442 z27&cFry88X`bPixK7@)mf1J9erpyJu&!6eo)Z3`;8i^P3#$7-l$-<I(Ev|u-sne))
  60.443 zU3bJn01r06+9zROxIiut-Hn#brvfa|v9Pqy!eo&_yryC{2a&RIYq68jBBR#)lCIq<
  60.444 zzkmN;M8EoHP$|t|!Tkur_Xaunq0!ej7n49CETUh2^Y`7)P7dYnxvsgdn$Z7eKU(3!
  60.445 zUC`z0!l9v|c=W{M(aCo2wvDy5JJ3aJa&plw*r!tv=T>53Vz@wlUrL^}g~xk#Z;s>Y
  60.446 zUkspoSCxuuMC?auuA}NAK~SQV@5=YhEh9faL_R~MwV%~*ME%K=2NxKbl?e1@q@*qk
  60.447 zO;0B&rPL2kyb$u2IGjlc2|nNrY@Kahq>+3S86N&sRzYEKc_>daBQP+qHcCTGFh%*@
  60.448 z=%^M`LQkgKa(_l{22&0A(Fb9{!Ov=IYKAH;1{TwD-C0>#Q~lq*T_vZayoA=WO$~~^
  60.449 zeZ!6K&z)M+CQgLC#ihC{WCL($EAyVp0f^5AEpHsn-RtV?>_=Oj_P%<Bxt^PwOG(gk
  60.450 z4dbtXzl6~C51dns4<@MVYCuGgyLjTtJYgA9$3z|ZVN{@z9c2L$-z`e~NACpi_66u+
  60.451 zAr%!BEmBg_D$4PZwzjrqzyNcn{f((UpVK3CexmW&aBY;_%BlLJ{)*<>Wuf@{->-Ls
  60.452 zZR6v$a!YTD%<SIj>*<NsILY?&1k>rf*Fy9$9`fyr<GnhVujZqX0Ks<BV!RcwNQ3pj
  60.453 zE0={N$j&M3rFp!=-1i0j8pl@GflNhyvGbF%&Y>VDCnvt%#Cy+|mY221RdlcLzWHzU
  60.454 z;zj=?7Jzv~`Uv{_EA!OKp8E(~!s0MmEFVbBY<6&T<cfFsaygZdqe)U?B6UoM3I6uK
  60.455 ze}9ycM1D58Z>8RW{5?K8$^`o>W9WLWQJ^y<e_hZbN4A&!72TN=T%Ig474J#alN~RS
  60.456 z^1-e$(8IVyuxX3s6`jdEQf#~NzzZKPymhrDg2oqn>+A!KD=oA7rl-@=50|kzH@j7V
  60.457 z`<Y>3N?(Bj`c3#Ns*|))`gwOwh3|h2q5E9Z_JD}?WBVcv@}OM2=D%yln{DctnrZ;Y
  60.458 za~#?fVm(#Mx1|3*OXx!<J36`tVK<|$K&Z!z6kyYDYNDUmnIATQ>oH^H5T$LxC;5M~
  60.459 zfc{Etr5m_>F?GQR8O1T;^Lu4Ra|z9pdQA`^A-IGze+Vi0^9MUSSJJfnZ}aj-x`5j+
  60.460 zgXxWW4@z=Jzs=X2>Wa)wR#y3aP#v`p3%tzCS>s&KzDM4TQ+VPO7K(lfg+wO#wTE3l
  60.461 zX~fz6N)QgdZ7sOUHy<qS_2hw3$t^14wBB&2w=y*~9sKjhe5$%ya4J8aUHZj~8Z#*=
  60.462 zf2NqOq2l7=U*5;-RYJ+$d)iTJq9Bt51icQ5747Ydr7SFNV<CI%6Z`YWn@x6mQutop
  60.463 z-qdK1A`T)vUc{(1h_n~bEn%y0R{d&ltDxJ)r@*&wasO)wtj4-)WBck8WLzQ$oju~<
  60.464 zRuaUxUYPSPFYo-uXvt06&dA&Tn`@mE;&2BoZLbx0P6Ts2W}cOe=?Do4>D>3&$@Y=a
  60.465 z9GJ}{5C1QB3Xpo_E=hCGf5VvkA=<~0g#>?#L+KyJFTlKf_zcI(1O)0#ac?B(xp{b&
  60.466 zA3uIvAMl>XW}J5)?4o9OvY1$m#FNvKt{*=N?VO!=u!xC?zudcV<XPr>?i0-O{D&6L
  60.467 zjmuYGe<4~~UcM;o{6`sWklc^@Xr#F_if#QS14GE{+}tkc_*nN{?TE)&mt0(24uQI}
  60.468 zK^-oFXGR0wW~TA<7M+||C^^q}9!AENaQHSLZSCf{t!zSCQC@(FTGMCG($wP6Mt_1!
  60.469 z3kzH)CnrgHl-nQZC51V(OBqo?N^0jcfi3{?f-y-_V2Thk>yEVs(DeK$`v#Eyt*qVg
  60.470 zL`xnq6;=1jOjDBpVs2$M;<7PWV=|nt9fy|osd$MlEG=0zx^KNoiKUB-0=~_GSO8g<
  60.471 zy0hbaRO_-z<*~n^&kuUH^xr?nm6uq!`EF~Yzke9r#qQ|na9dwnn?5dGX9V7+B@FLA
  60.472 z63o%<`P-Kw`NK=}+(Ytsy2;m&lYv2Ermc;+?qi;XLkIi+FeV16Mer;)UII`)DZwVX
  60.473 zV1$9pnbACY{hmt5cp6CdNAPt{+uh1GaM=UeHI5l*`^~y5)WYS@Buh|npj%~I(edNQ
  60.474 zu=QFsD&asV)eutfW>+O7=*~<|>O~!!n3?qhs^KgyEbzH^U*|OV!=YDQJOCD7PhH;t
  60.475 zOj!>QJ{c)#j`b-W5ni#!uH`X&B>%*-uBGkUfU6a{WoDu1!T5y&-Ku;nOw6^%$)fA!
  60.476 z0Q9|RL*oQN2V-4iwB(u0DqM>8()|3NS#<_0fI==kj(raYhpog<pFVklXr+fB-A@l>
  60.477 zM-Eo<ipKrlywTeG^E2(&SlRP0ZkyAg8<0jHU%!@&%6&+N92_4{B!Q-+7ZK6Z99jsY
  60.478 zx!>R5vKqasBz8I|J!J#BF!nk8V=ZV;?!nf`sHi7!W0PnJAc$EqpMUcmZ*Dz`X1s`v
  60.479 zX$kscd7?#NFJ7z4HjxK$_wXQtAw0g2`1m@y$2btn^=v%2b@r$l$T-2n)6;Ers?IGr
  60.480 z+2^Q3ZptQ3%(ro3f5vwc2i;AmmwbEWmJ;ajzW)BwA5&9_=(2H)t*xyoh#xW%5|hsx
  60.481 zg4ijYAR)RxB_?`Ol9LlqaTz~+J3DLK-yc91k1FmS-?PJ|y`KB;_g~h3A$r(#ZRkHn
  60.482 zNCV>SrA06?sIcs*n`P9Ow?RC9^W5LimVWp!)_Sy<KJ<&xJIa|yNy;oO`PyZZX!D%Q
  60.483 zvY8KiAWJJ!yj?e^*X>t_@2r9sAbsQSFU3#dxjxR9HrEzbh3N;zWZnPL_1eSZV=>i`
  60.484 zIeS40hL7(U5|owwyA~`FaU-M8Lyg|YDkPj?@81uT2DhS%S&E2WYuDWDY;4o%p6)#Y
  60.485 z0)j2@FJA+$Q0q+pBE<x$VDje8n;VSG%sf2Y+|Idqc@|!x$(`VqfnH*z(*g;pg?A>0
  60.486 zhSZmj)U=C@UUosktVB3~%2bDZ^p(#VkOF&L3!{-W(32o=2Sa2A<kn8P#X#*asG*on
  60.487 z$WCpWj1Owk(g7Su2=zVw-qu$COaFP&KLc4|ojJBrQc~p*;?xKp9^T#c>4v&~-eB+o
  60.488 z<A}JP-Y4{GF9#6Pa=6Vn2vUWvjucHG%}Mt?<xL~3RLabHEWJU7XVumU=f=cnK1~+&
  60.489 zX2ob884+-5drw_x&98fGGfU~AIKQx9F<s--hL3c2ce_ti+IU`+&240Q{Au(QT!0YT
  60.490 z@&yAuVTQ&b1=0+rddvguokT-JQxR1476#Yc(vp9aFt4&Q8VBL$=O@shzGmlfW+(N3
  60.491 zwE$+jD?_euzpTAq(ADo(kWvn!JFyhuv9ay&GV+3GA!yv61o*H65w35jsM`t(%|<4a
  60.492 zB4cROlLO3p0z=3DsMgsW^Tq`^y9Ne?nO@HN_N`~}l8TB1q===J6`$Qyt?6CI`S#M0
  60.493 zv8LkU5B%`Q$3K7m{0>3yTVnrP!W9e=MPg}Gbadt=1chBg$d)NosI3^&intrG93O+P
  60.494 zUVruaH4obJ;&xp_Wu*o<0X{y;ZnG_S5msb=ad8Dr$Misooc?~5@jPF34focTmOq$&
  60.495 zvW%(Sv0UGHxVX3?Ta9xRq`kI#1Z+^H&U7u11rlpWU0ppM{Dpu@$m(E@s)H)AHgeZ>
  60.496 zZS*VHW;12w54(9KmM=U#H8I73Npk@eZR4Y&TCx4mQyrrtBUJ%CW~*}hc59-TenCO_
  60.497 zH4|cP8+s$?$_}6bznr?4tn52c19czpxjn{HwJyu00~^43m{?c^`uh4^swyg%(YAry
  60.498 zUI+Fy5i6aYokwpbPLKB$>2v%FHMO*4?>WrAiQwg0T3OLazB@25K&)Ty&LzPgcUZe6
  60.499 z{;enwBtquSc}-2tu3Rzb^XR?R5zcdP9%g8K{Dx%9$;mnD?>h7nMH$CNLP8?45y=Cq
  60.500 z+HcNV(X+F^Ib-)RE-nY%*c`61n~`^MXh{IY^YjEPnk5@!P*6}gkZR^Xq4N~d>(>W-
  60.501 z&JLe10c8nu=#;b6l$Z<~`ktCHE1JmN_d4hk;pf-Ly1hAoy%o5M_e;pntu{7LnI%16
  60.502 ztK@4+N-VQdQoDDdHUK(xSlhr2utFB+XQ#S5$0DGrK})w}NqM}o#WcF=M~l&d2x9)a
  60.503 z>=$lEaUB9^H3Ij`moL&q5#6(JLokr*t!8Drdz&-oD1$0m;w63jm=YBir!7Wcvp!y7
  60.504 zBOP+%$z-FqXB4w0gqb7lQHwE`>F=-pHh?HJolK9a^*Bh8Kh7Sn)j9f2$dL4`tO3&q
  60.505 zZIr=cV{hC?SZ?2bau~M;GGuq)5@=}`v}MNknHfXVuxtRbQgq*t-G&K0vAGe%g@c1r
  60.506 z-*kR<FEfRUje^@m7Tk?o1XCF+8{4wKzdtVz56{cw<YWhcx%Cl4-$ahkk-iU`#!oag
  60.507 zN6f>9b8}hmET6X;bD`Z$8OVZf_jfW$fuGy$NPvl*Q_s^FE7C4wQmwti$oNJbth)Es
  60.508 zY-=0nWt)AlyW98NHvSOaxcj-$O#_1X^x5{wp%d0iafCwg-(3<?(w|5Bo13?e4}kkR
  60.509 z)Vtd?IvQ;2)g+4oTUs7cFP~q+$De1dU0Yul0)A9Ls@*n|8kJch>juDy-T{`f;<o5d
  60.510 zHy&H}5;c_6cjTg{e=yP3mem02X$i0<aInAMW4%)@^{J1Kj~Ri!&*t=fC!{C7`x+iL
  60.511 zN_MAkNBV56tbY`zIGLGcbcgm14&2e@f?sYYx(|F2@ifvdMfz)jyb$~|l_i1%1ffU0
  60.512 ztO){ku1ofU@m`{0FTt~*0)NUL>oWlzhF|US9mdSxH?&Dk>iQntLwr-?vgqaWl#vBH
  60.513 ze9F1i)zuaViSqLDH;RfT7|kK%JmbQGf@(s-!j5P~M9+ew#f;Z>=n_B<tvvB{72}c{
  60.514 z7cX9v_kIOLZ(Htt?7B+pd%`7CtEdw<G<va#cliSHmXNkm$or^VU0y!OKu0Iu;OSF(
  60.515 ztRkAU@bGJQTD{TbJG4U>`YezYQ2f+_RPPrdI;a3d)$hLeH_y;|0G~Xhi3!qJR)C4=
  60.516 z`@=m))+knCpOb@#k(|zO`NxmVI?sHz7Ztx17vKH%tnGb;qmxsfp!;8=(~E);9g&^}
  60.517 z=rRe1)o?xr<V)YkNRib{qjxK6j?!Z;VPo10Qc)nEL|*jofdJa;#}5MuL>>aVM9o12
  60.518 z*v&C)V6i7*0!AWJc3khiuyFhZ@yQfP+#f(517^KRHszK>tRv{TP|fEZ8Yqm81MFz`
  60.519 z<JV*1UeRi8YwJ?4INcpF<N(J|R$N+|yAEP$Y`!C6JL9z8K)@h3WuyhP+RElO3<yqg
  60.520 zZ<cJb-SF`6B%}})f(O!mY{C+JyG>gNIk806z-n?D1k!8y4AxslFGOfe=i5K(|8cIp
  60.521 z%g8wY^R4;GnW6LcVh>J)Ho7CWwY4>#oB7TM4;)n*n3D!mHnxP$!9lf!nOk70Mtqv+
  60.522 z-zj~#ja))>G4ipCDZ_hBFW5OLgG~5|F20##>PbqboozPHwgyMk=oNkktscML)#K*R
  60.523 z>&FZ+C5m$&gAwx`PVvW<`X>sK>CD~n9~2&3_A`-JFA@+Ori@TrYiVue6N-z9kMBem
  60.524 zNO|al$RR2fk4}KOu5Q=4ZR!;0)o>r8y*<dt$f(4_Kk1a4e+)MEGBIH+%gmIvtxZ6Q
  60.525 z9X;5Lt`=RTrq)l^`>^-b@+<GRqmrY;L!l%=hg5Y-OV+M0Us6_l&yNjt_BW<3VJuh#
  60.526 zV7^3Vy!Z8whYNHy*Jhf;#y}W6@E9W$JL#jpc~kQC;jLEC#%SZk&&AsH5MtFMiQ~87
  60.527 zQgd$}A4lF+tp{A(w6wA5xrm47&X91oq`W*b@2mU4-xLsly#%FYWiB-LJxst;4D*+U
  60.528 zZUeqm{AJC#e*OA$Dq31QLCZlF{!nRRw2`r#x?yQ#BuPz#4NaKL>Ax<{d+1(;q5cnE
  60.529 ze*VQ0E%u+?aXj01*x3cqC8jW1u|nU=rfg-%ujvNQ-Cj9eU0sgE$1%DcrRnK!u9A|P
  60.530 zQrx&<zO=eJkpjBaJH0n>Bs9kI58ub=Xbs=w;D-#IXfP!VUh@BXWGT>UDS;ep)NQJO
  60.531 zeRIxKOkf&0N$Op)>NDrfxQ9MjpunKfD+g_7%^alqG|=t!x8LRurKRI}$=rbCaEJ{y
  60.532 zRc&kvz9%r2B1Ry`g@Pu~0v^@`6Xtj4cU4c0FQm~RhDaQ;hhgtC@LDBDZ41pRisP|z
  60.533 z3svvkoz156q!QDv=yH&ajYF(Wv{(RK@1kGh8(l~07HRMv)Z<=7a4>FMG@=fCkro^9
  60.534 z4nsDND+!6c)J!ZsN=daE+VMCiH$OkU?fdr?UJ}j<>oM-@G-1ql(o!EvN#*D@Jl1e<
  60.535 z;IcuJBQY_NjY%m<FFh^oCIzp#vbPj)#OXpUc-%{4-hc;DnS=1^gBjat9~-N2MAwM>
  60.536 z2L_h?(!($K#X>f1Fv!pmwR;Z-y?ckp!NG9_es}kpZ3%3F>u*5(N=v!HW`dNWLWPEx
  60.537 zmzM$33<~~V`b>UwbToGW0p+l|z6z@DYyl4)FTRH#yLEE1-5YwRt3X3q8b|dhaRwMM
  60.538 zsjFA75`vkUXXPfz8X+L(W~@t3XJol|@7Tc9bfExTR>Jr1-*<;}U%YssgMX~4*XSj*
  60.539 z@jaCCDXQ}#m=rD9NX`<NuLZZZcXdU0ZlFf!xtZC@l^b`PgL}-ZGP1IGY;0_V5b+EZ
  60.540 zu4msvoRNdMFfpq1V>M09uKVt2a5eR2D#WSWASNcRw;n4!0Ie;Jo|hf|_Dz!Gs+NYv
  60.541 z_gG#Fl`MfkG^n1as4(n%Dagy`CV#(m&qY;TeZ~(1Oa2P2=t)a&Z?6x!y<xJa8rLoC
  60.542 zxtE^^!eKqj-f_F6)_FO+r29A)-5cOOCz^XP^8G!v?#k*aWl=$aKCbvAF#hbN>l_ce
  60.543 z9``aqB#n^<W<+f}BQqGXIKOZ^a(7#-=s*se3$0;v<Mw6M;7Sl}z9bSSVpRPVB-c&Z
  60.544 znms{?;M3o>vBUbz=GTBsXG<*E*w^UQ5Z3^a^X3S%F)>MVY(V<R59ESd$Xs7o7*aes
  60.545 zu79zu6B8L}UZ#~_dv<#4R$5uP;rVY~jyX=B1+8dm`~3Oy(e$IJs3>{nc#!kFWWl%a
  60.546 zFJBG;CXNJrcfLeGU<&X~FjngA!a^ednhQOinKrO2F=nD+Y|QX%=|`e1T0BH4U>l2`
  60.547 zP04C#I7L3nKKvNSh4u=>ZOy$UCMNdGe<BcgF3T3|AhjJm8{4DXTh-tZmzbEC<W<$D
  60.548 zrluBHxk!k8G&D3^N(Xp=`sXpxMGI^MeQJ}S@0nN2LRX9p{KQm6b#*Kb!f8-%)Ls~k
  60.549 zhroPyP>Z<R+bSr8lq4kRo<k@TdwL!prH_N<j?Bo*>ms~-x%@U8TN-9(ls3w3y*vT}
  60.550 z0viy${m*}V(*Cu&nm`JHF$_swvz*9j*l41zp<!7sC(`%VDz&s!h2zU@-5mIiXLN}_
  60.551 zv{hBpcIxlIn*p;F*#AtG>Hu%$qzg8YC#EZ7aA@dBwp#9F1e2JUVOeppa@*wOryV|z
  60.552 zFc9nsY7V5-)HdwLR2Fg|TathLwzq{Wntu2G{S{_)pBCTC)Z%tX7seW{Jx#d$f$9gf
  60.553 zXE~``E6>^eWDz%v%RZYoPal3r(#HPjC@U5z@QC)pD>|La^o&uTypS0B<uI2^=S-FH
  60.554 zq2;}iY7Za2p+_=uZkJ+XVvJf>>ZvQ6n55JD9g$v)2oJxJCLOwB`TTj?$1|U;St-v;
  60.555 zmo8m_E2khQfBL5{<#2Crk8g2t5#1oE$;`?sa~Gj;`TFLf0U?cu`!BScQ0ydvC@Lym
  60.556 zrITx>y64Jnxi(sI{|MyTL{Cpa{p}9+<ujFAw{AIJ#1~HF*!%mJrK_VOM@bER90~^o
  60.557 z1%)viTV8y3w*oaN*jxZeveB`zAu|(`KWmdU0|dycSFiG)cgH^Q1cGP$uj(gOz%GgT
  60.558 zEV0uM-RPnc^%ATpap0GB^-`&=tz}J^ar@KvfFthKwLoP(J%zdL!$^QE9XYu`Cb%WE
  60.559 z@BS<4v<`J<40KcIbf%_P?7ZF!=8FrsY}3TTLg=84)>i>7X;Il#R#zuoZwVysWq$lg
  60.560 zmH;2W6my=fWoLKSA8iaXUZ`I;2>@WdJU187^V@#DP=J#&EG{Z4!_>+uuhftvRQlVm
  60.561 zFRw45TeBGx<rNhdU<~5f$sXkxDyyP){Lk`o$1Qv?U=<j0|2P>LTL5H<!wjh<mtS-l
  60.562 z-F=7@1EIz!C5doNHh5M|fD*K}va~c0>R^X#toJ(nCwcQ`np<rr89gU2uUgJ*kbFiE
  60.563 zNy7dJgxl%qsbZ#5vcZ9H8(KsPq(5^6=ELm5g$u%{H<gx_)&n;E0iWjt;U1R-uYY`=
  60.564 zvn?0Px?(sJ;4N|#Qc-)UQu$W5$e=+!hFzOsf7*Moo1EC!*Y{DYw^E`oX;E6*z%L1M
  60.565 zK0ZDQnJ^l@Ci~y7Of@vf%JTCSx|*B)?4CVS<*^*hK0zzia&%iOa-Q||_g|wHv~T7H
  60.566 z?TG3NO#_3%<;6vfh2>>!F0<}f1_6Pp5&8N=G2iI}fO;k{q2q^#hvTNEraES3W_mI*
  60.567 zGVjaEoOZLHqy^R2*9(Ty1|DE*AqN=ERLIc>wXaK(|1#*W`{A0Lapci^)9&N+5sFj!
  60.568 z5qw~5QS<TH-r9PKp82&Ka>~oN`5&s{(`jFjTwv7zuUI7FZ?f>U%sgNvFMvfOMFeE}
  60.569 z&(3_%<I8A?a>Oo(&~L~4o2xK~%Wnb#C=6?zI|9BK;Xw}EAVk2f)v1D(-nN^n&2S95
  60.570 zl-xU_Rc-&28Ld^wBBbQ+X5;4OR&W?6M~b!bkBCoxe|sB~Eb`*t*7@1KSP{4<N#Vq4
  60.571 zb1d)Hp(|aTospuRE}PR0^9NgV?<G=*(ADrTn)}?M_P@j<bD1{5X~b~omqzbZ2zl&e
  60.572 zmqkRV_HZ_xd~NhPEJZtLOa>VT1O%J_#gYTjD?`j=Q(bwhqpO?uWx+8=geFWP?Ptqn
  60.573 z9LaeYbUyF~QL5cwUo!wfQ>yQ?u?0_ODpF=}YLR3SoNf1tRc2;pRt7mVogJ-~@mUR<
  60.574 zurfK5pwBxA>oH@to~|EDLtFQDbacoE@&VnZz^kvfmveYvKo!1YwZe8vXXBwGx~GhV
  60.575 ziJ6Zsz05<l=<Dkj>}Y|Zp7@-?_$npk>FM?Z8JVn&ul|>=zJLGT^16vRdt=JTo6u13
  60.576 zUMAj6M@K8wU}xg$YHKwVJ_(jQ9O6QnM@Or#AS@*Kw$t_GeD=SZIZ)Avd=~6chA`m;
  60.577 z)tSL`+)_tOLsOWLoLsb1f4Y)a#0_3*A-(!^WhieE%>Q_`L)v;#)7iMjRs%P9N&)ms
  60.578 zL}b#dEBa0$jB$|K&^K0Y?r@jo{#%|dZA!ATcOw&P*{=n%1a;(RXR~;#w`J$$JyM=z
  60.579 zViOV3Lpu>01nnyU)a*eT?Mg~Wu#XhzE}`dNm`n3M=BC<S{_^Du+9GdD_VMHByp_=4
  60.580 zV4l70ZM2ry0DU@8b&b=~BA>Gtf*y$)0({ZQ$jn?}GeBFOFe@6^jTS!;F=_ws3BEPM
  60.581 zb!9M+u|iZof-dK)G3MX5>G-P{$k>q86uowR78k?GJ*OYnnw1f9<g5CHdqP56Bw2^&
  60.582 zBmeC}vMVKcBG_B+e<CNCa$?nFO}X+somlqQ!ddfM7O8_gL}-*Y9tO7>^VJ&10~y73
  60.583 znEVr>dhGp*@!mb%k%@^qLOSh^EZ_697m)Sd9QwC8`1yzF7#JAz^oyd=a$(!a>Jk@Q
  60.584 zTMl9bh-P}K&W!+VA%E+_{C7cz*_LZIHtT=Y^E4{V%Em(XHn@3t=S|JbhLt##)erwJ
  60.585 z#2Au^c<w2P!9=WXOx5Asln!ZEk7~zc><GMYiL4$yMkJCk@gwQJ)pi$WQ!!|Zf<e7;
  60.586 zP+&jd>&ekQFdFf3aSn<K3e}(@M1aDR;^N4QKqFYjEIn3G7>q9DV3Eoi@Lvg6hMZD~
  60.587 z$H~pexK&<K^7{rk`PR<P&Pr!jSA~RxgaQJgu36vE&_%jG10wz?RVujj&Ye4}8ijhd
  60.588 z-AZ%Q(p0PLe}APy?(*`IOjkSHH2(2Ph-Q7FD(0TW^Sd`@Bbb$>A0>=+6*3+KX;sF=
  60.589 z45moF?bg@Rv$V3Z;!6^FVT{Ngd4NW_t1(o%SVTP2XJtH`udQ9myy&($%?Db9R#`<w
  60.590 z;{15C>1O(b`s5WYZS5i2w_l9jy?*s7sXOsr)h<d1ySuv!wsYWf{-7=N(TMp6(#^c}
  60.591 z*;TvVnHj?c5=mOx<dD8TW!2WqRe&n<{>X=5y$%->>_j;9s(<xqSsNJ8l)+>+fXSmR
  60.592 z*f?E~ya&*?42oX(Hb;F*c6$0l&(Y$i_p9t?Xa*wRM5KPaDYF-um|2irS*hVPUH>96
  60.593 zEj3kzGS@`E);VVYOwV|BonEvSd*)=d!?#7SoWnUeIS<Zv)4wsV5F%oj)r7xvWyyx0
  60.594 zv}*OZikIf{5`<4@Dq-kduqOyV%M8`<Js<h_U-8z@PkKoHtMu8vrnt6#6;jONR++n@
  60.595 z#au9~KkzPI<N~!}iY`AM^rc8{g|5$m3ZWz+*|9%8+ARRW4Fwb}k5$NQ{{B4x<)F#U
  60.596 z#$yg82c6iYBm?S*4z+u?{H4>L0>*N+h0#`Nml#XM1Mc(<4@W0|`qW)sS~`0-PT?ge
  60.597 z$5z1LZD9Xw=Y9d>mUpFBZ%V&eT3qCJ$HYMl3=B*W7U0r))W6?;OpS%0&+P2$>tjYf
  60.598 zeE9JBo>8+O4sjjG`|ghR_C9_-z6F$jF7)3P@jcm+VSW28<^GF*E$tu&txQeTSO5HJ
  60.599 z2mH=)aB(ScaCI%LsH$3OvXxxa95OM6pm_{3_Yvq*4YY5fv5RUnc)1FAq0Kef)<NPg
  60.600 zH^0PsghN1~_QU9|n$O*;ii!fUj%VC)CumEL{Kn$)@_a16p*+p!dw_nk0JVz`9z0kq
  60.601 zEG&#FZK#`^nyP^h2v%_kfw$5`t4Qz>kG(Z*QR~rS6zZPg`!gho`JO#eCzS_63IWJ!
  60.602 zER$tS6%-UyL(g9KY8L23JxI$ryKySKMbN;6?yNKdH)JIU*xBl<s!F=p+h@~oo5+5d
  60.603 ztZ^!%rlML&-p0Yf@w$2QW>QYh?IOb_AAi+Mg$|&tM7>t3*I$Teg&Y|zdXw&VfWQbE
  60.604 z7-#YK_ZOCul1dN#;_0~bgF54O0D#k{E7Zb+JF6o_e_^5=JMvRg8P*}(qpPZ_#u>}R
  60.605 z>HK11H215ks{<ZKE&v;v1O5+n{rIurBiVLF#BVokJ%_Fzq%cOXizX{23fLKBb$54T
  60.606 zk425er{;_}pr;!w1~M1qXKtD#3OanXUL7vjC~|7>n|ELe%vb6cmc6EZ4>|b!yVt0+
  60.607 z=*jYoA^{SG*dhnG%`UQ{y$w#dSE!1sK^83lV~W+J;+59_S0?+33Q3pjKlrDzePyBP
  60.608 z5jz<!|Nae87d?&`6*aYV3qa11lllx)=qkt5dt7&2A2;0{d!8KS>ESV4Z(ADLHuvO@
  60.609 z^O0wR5)U_bxwEtLLy$(HkMDR#9Gs(dDzh%Ly5q;{PoL8F^!Ga!%QA*PVt5>Tm;PIC
  60.610 z@8%&GrqJ&p<O8Y>O@OD2r-w_)oP*SE-vS6KfwDIL3O`HvX`V_z$=`B#aL`_0U2F6O
  60.611 za|s~4j&D~GOoFi?xbVlW6XCZW>A>VF-X2pmFz`X2-Lmme47E1^?5C7@?J7=`Z@~S3
  60.612 z$&K&Iqx`n|2XNr2yZgbj*7eHDO7F6=GRlJQ>N`CGGwJA)0&c5zi{cj@dz^&DWBw9k
  60.613 z3|{WGkvO@Gyfru#!#LM4y#FShJMW3zb|V0;#1bfxE_D`?vjN#ZGbH#6-3bOtPIOUd
  60.614 z>C8i?PQP?!aao?Q*L2ftIIrn7Mzrd0xhDs*BU;5q4>l4ujvI-!5jx$AyP~s!O6YNS
  60.615 z1yXct#`#Yl19F4kS}Sf=%~G7ZfW)uUgzW9NpQDvF33;`v<;BIn1cijuv(nRx)4g|M
  60.616 z6`0OJI4gmZ&r|bmH{te&I2QRR`=+x~zIJv2lvT6Q-4$Y$Tvi3cwp{hRPlLBgVU|`t
  60.617 zB_^`LjP0<pu~m?8UdO{8BxTbOJU%>Za3$2{;VDC#U3LEZ=h!npZ{pob^9&)ndi5z8
  60.618 zDQPR%ASdtSJP2(aS66;jE;7W~#pMtty#ise=1<6R?|zadeVRq-?E7ks&LY$SH(Y%&
  60.619 zfq^o7@$b2~*%rm@`u~flleYZ($bT!~-qk**wVmph+d{}yFUuZbqC3}UTUQ-^CVKiW
  60.620 zXraIA_$B3GyQb5{&()(?$lbW^TC~$2ji{IV=`1aqM!vnE>sss_+Vsn9xnIik=D$!%
  60.621 zflRx}YOV&*k!F^b!fIRpAi&Z=A_^5)R8>EH@!~~1vr>|?n#0F~{TW~1O6xK1N@w|v
  60.622 z<$)|kaCblB+U7bE%M3tOb8vBO`PbEXs%p}afbkab>51nfSIcD_+4=MH=G4zL8BbC&
  60.623 zGFHCDu+Y$`M`jmraaSc<Lzn=0PXLBRKhmhu5z&FasPR5_eG8s$!pg$pqRe|LIWo<I
  60.624 za#^<g%(<D{uR~whB|Ehma{+po&=3=UV`X9aEZMrvD=L}<zL90FEzFL2suDa_xzf|8
  60.625 znEzX=!!)AwyN{?OykJL@7{U$fjRgJIuU{kMYtXX7!M?uY#(oRnN`J6uC0Ytw+uJ;7
  60.626 z8+0d<eKC;PY^0jZd;9xgH-w$DCo%B>NxIM@Q9MJt`Nw_3h5D<?pwOMK)SCZHO*iy8
  60.627 zlq$4bNU&?XjY-7!;@`Y&>BI%hm*3GdXU>b=aZHLcl;E>Hr)piuOD8-4rW!1Va$C@b
  60.628 zrWzrjKR@Pu?QCyXmZ!o*_bo>IACl26xBXdIXgvfyF^9G(u2;=^tnK@*^U3UMay%m<
  60.629 zzY7PltoiUpze%rN{h5B@CWr&&rqAv39T86dRi_blU^g=W+A;oD$Vr5~brn7F^)ffd
  60.630 z(ffEWN>|IcKV8mWR8-WsReAv}AktJYD;cvc2nxc_$nirDX=^B$$a%9vD!vO0e4?`+
  60.631 z3D(Kyc)jYf`qqrsw&KrH)2>|7WA*#KXL`$mD+<Y?_jQN%a#XX(x)TJHF8f<X@9a3&
  60.632 zm}ra?>Z|j2or4M-9~vBNQA*%15Z@A|x$oh;3?VG1KAdHGpK+b*3h%Zcg2Zqd@&~<p
  60.633 zcekvvvJj12+bY{B)@-%hek=5$rWyjalf|MQJLc)my6_*7WJ2bF=&kBp;b3Gl{V){p
  60.634 zzbY<KN6kXLC-KI3NSaJo^dmEE9i8D9?(UKIJ@>k0U60`(6%M>arCfi$1BV#ZkkEL#
  60.635 zHxZVqlFnt#uWNCFg?pu2)%qHzRm;1pLLfqI?$q6Z?6UCqEDTanQ~Tvt6K*Mhj}yrI
  60.636 znt3A^mkPa^yrlb{8b8f>Q;fy((Mku9)Xr$@zg6^z81UgEX2p0lkUekXGv9}ra|K}h
  60.637 z!8fAt3rl4-wzkgaK=O5~IG(Ny=2&V<gaic{KVczpkmR}(rNSctH>0DD2xAFOO=8ji
  60.638 z@9rpE_c!!2mc>v6v$M0ykWYSzh0Dr^zhp0{bAGZNma<m)<_&ff+ltHD=vG=$IT0Rq
  60.639 zdvC9%yad_~&2%9m5};hgF*`p$<cWqx=3q0O#Wm#rY60{~$$~TZpJZla44Kc|6i(!@
  60.640 z9movr%oRX>*$c*lPmHD%u-*B)v$M9jvNC=gW9Z{Rgx7AInf&1b;`sM!;#<h_ehee@
  60.641 zS(H8ZqyMXp{8`#Ed-IUrk8V081Njv1`M*dkOixe0i>}@mRX2bmks=9F2{TiOz58Gx
  60.642 z*9}4-I&VW|ZHaMVZEbSU>`xC97uOSAIwF=tUmb02K0#MDHnybPb<ka`o5B0PyW@Dc
  60.643 zj*gC4+frEg_|$zNzicKdtVUM1=GthjLs~os@SBN{W5kP>T)sq0r8p-q@7O?-@+|iM
  60.644 zG;2AAHRjz)beR?|Z8Io2Ik_{l8*Px*)7v|ucH&@f|BIZGlC2^f-5Z^Bke8Q_^st91
  60.645 zDk&-1l5q+zc<kXJEIH(Q=~6IGQ#R-xb)BDA5pHg7HJVNDzkmN`L)2L_Ms!&Ji|Le;
  60.646 zlM68P+LGGO)cA0fw%|6>g1qP57dJsy4vc480?9*L(Z*}WU*BAeqcxJHrTX8Vc#quQ
  60.647 z6`6Gs<i9gq7T}$8xZ}`=S5#D$ms6!4JTo=rgYkT5F;w5(t<dniH)+VOs-)zJynA4)
  60.648 zvAmB@<6>RIh0UbU(9q6@%5Vv<pK;#4{bX!uY<PI@wMH8HRPawdW;5v1-WY;gEmfj4
  60.649 zo;>-u_escUa(aLC-TsO%@(P*fhs#uq<IeaC5#6h<?$LP!ek2G?9p(AUfZYfGH<&AQ
  60.650 z+A9ZXN0q^7q)w9nA-@X=;q}&R+uq*JOST-%RcDLpY31SJiP8`}8Lh6V8In->&A`mb
  60.651 zS@fl3X?{LCzu9u4avj&M+}6Z|aS~K;*Q-~rKKuFk6}JXoXWm;ID-)NIkulx9fnZ}}
  60.652 zkNUK8UE5UCMBX2~^Dw=7{=X`e)Ea*z+kE2zk(~@3QS;PP1Nix>NRO6wd;$W~J38g<
  60.653 zhn-Pu(gdvyoM=s_<l8H8U=DnC)GwFDANxe0wFLrp)4YH8_XT_sPl57`d8|k8_68Wc
  60.654 zi_n+?t+}FyF6=f~BM5gzuHyT%u(Ny34YejXHZ=x@Eti-Fa_HBZbkA)~j}4YiRN0Ma
  60.655 zzNo3L&Q|y(tI6+4i;el<TL!Hny3YdvqLOPa|LBobanT^ixTyH=JaGz*adFyZiUlTM
  60.656 zM!~g2f?QiS)zZ>3k&<fdIX&JNd&(UrFIO-=t^==enPh85HHu3e*Na~E+$WL(@LC0?
  60.657 z-CTE>xmLeLtMrO4zLg1K#t^alue9%HF}6KvGZ*q4iL5VTgAY!_#m2tD%*goX7Blne
  60.658 z##kBimv7(F$Ub~pW4v{X9Nh6Y^!d%K5fP1zjqd?%T|oU%+;iJ#2_j`nLW^1?xgN8V
  60.659 z-GtOUMoV2`EW5+QuN43&>PSiXXM$!de%AIr>QOX%hw<GT@-u()98Zs2UVnQ_IDw6e
  60.660 zs~Z^|&5an%G<qvFo}V3iwT^<R<H^g-HK!JK{uLV=TVF<;QB|X;*f2BwP+dLhJ2+<r
  60.661 z+nGk2@bK`|n23lp9`tYqh?@5B@9<VCV0CRhcURPdtE&ZXew0oB{pXLCkk841^4PP(
  60.662 z<6}yQnKJlE=YoO)E4TIWT?r3u6_sl|f`X$GbVPpAs%Hmrv9awpfRoVYwqYTH?tec&
  60.663 zGchrV&B(~;4}9wE%sbHA+q(ugiUaaykQCoPa%X2pIpcL>=E#dA*{G<fCuwPEE_1W9
  60.664 z&Sj;gH_&5?q@<+rdK{YHzJ7hRzg{)7=(RWY+%c~kQj$v8x!r5&M<V)+vLnow;*y4j
  60.665 z$s@oGrJya-SsQ((cYM4fN-${Kp8f2<fP<6!$@m~MH7zX^V2@9WJ-U5rO5c=w6=08_
  60.666 z;J)UJw2RB`y?f8g!74^IHl`OEHrd`H!n>x{Ab>Q3*2^cY($?1Y{+pX0&}Yuu9nZ%m
  60.667 z#>6CT2Y^#R${7|I_*7U(h|j{3Ve1Jw!7m!WQZt&j;h+o0Y2hN{dY26CST@d1k3Ftl
  60.668 zy?TUpPoTB5rp5p7jA#l$N3Pv1bf=4M-o;~g8<%m0h6c-?deeO<5m@5J9fSJnh#fay
  60.669 z-*aO^Lc*HN)Q=xO26TF2qJ0j~H9Xvij(Mec-rE!CR@^|Q;>O(fP&QzWXFU)iXjzXP
  60.670 z@%8IjVC}6zWU-xwFqoBSd7<ZM!DgZdY)}?o>P=4mW^|WgtpYvTN6ljv@?2K--L1sO
  60.671 z*HNVK1Jgw->SfOFbzmPQCq_$4yMMgDsf!RzjE_4?huru$H#hgq)!8}n-o=itu7S&!
  60.672 zE<FSN6HriaXTPjhG*3-r%=da#PRVgW%0$s)Ma57U>5A`w9f|L0?vDrcE{$k@=v#J9
  60.673 zsj6~2y|#l(NW=S|#?e$$>jSHto2i%(?K<0Xv8_<Qj&;fx2G0gyZx<1V*=9~~#y~h?
  60.674 z9@Y7ti{^ogjtV+{oFp=ao~-{2Nz*z$KK}JBA#FS;hlx}8L<dA!P3_^cvauaVaJQZx
  60.675 zKcbJBJla3d+wEeUx+F8RX%?1;foKW}3mfU}=y;0x83{jrtf?8Jlr`Xw9xeizgCE?Q
  60.676 z8=-h(s>Vsi7t|;<;ExvaIVFX@w4@}5pNs4F;=+OjAvyPa8E4Z8w`65g$LeH}9S?ub
  60.677 zq8Ga;DLp;?VyFzCzP>*7(9Fz?^U==og#w+5+2!TsElApViZ5^d{o|w_KK$bf{H5b?
  60.678 z4$`l7)-#qhARqvfHH!5bzQ1Fc+rNMRrnS>tJUx$B4i4OFnuu@Rx)lN#H^#1CtG0aT
  60.679 zG~a&Jsdb4Q5xjSg?Y`Sg6*%yTkQ-d7qY&{nMI1m9K@Fb!tTvh>ElCI2LYVeg#aT7D
  60.680 z|M-6-i`kux82Z+rMd!elh##(a&KC0nq87GzMEZdWnIX2^ttBp`ce?dUjb7p8#rL_H
  60.681 z4Im%n2Yz*Sc4njH%`z#<Eg)1cZ4P89WfT<HtOpQKieO@5D%=Cl^a6luj+pszdH7WC
  60.682 z_;{@_T(+8w%u;A{;@SVNj`(0}u2)Y_uNuU9u%xYRVI@#*e_$&B_bzyjZp5e~{8k{C
  60.683 zs*um0>CngS3gKX5zd;WQTtmFPygr>B%!Ton9&b$5?RP-<F61&y@A303_;^Mfn}Qy3
  60.684 zMO%vGReR63e_V@TRuX+)qQxMtlELq}xAr4GK7JO&sSKx1Ig2Jc**BOY00JL*IU3Pq
  60.685 z!}F8u+*}nQzIAwK>7b5$G`*!|WD?vxJ(u9xA4UOwPEAf8buwX7QBxl~2~yQWxY^jO
  60.686 z*8(lQ&CA2K&K>big3L^-FlKm)R#oRdZZSo7n(RTc7=Yr5N9-XW{-PTs%d4v+%y-cv
  60.687 zXbmPE*LuOOoBdZcS>)E#xICI3e_V1v^5*T^RWcG17R6vsUCkl`z64Qk4-9{aFXa{k
  60.688 z{jTfdw?@?TSV$}{lXIuPO-`P9wme5if?x9V8%`ac)v)^xTG=?5quQ&Ws5s=)@gPIx
  60.689 zsikEnNVOPBUoEXz3v+Xpu8D~{6`&?My5@JS#uwFYWm1;e|Nh$Tdv++3^ER@m$nGsL
  60.690 z=*n0BOJxKE1peyk>J)FUP?ze}I$L<Ew`rG}$bDZm*q><c=^4^1F_x+WSXPz}rHHDq
  60.691 z9xLTlQc`+f9<RVcG7Gos0aN0pKB=jys+!H(A?vjh(0H^jUH1N!a`1mgsI#&9E;M(c
  60.692 zwIW2cd=^om7yYCVA8aBlxro!M_<;7gt@&_mUWx)A`A-1>ILJEy_zLs{Uxu8Yc9~g)
  60.693 zD1@FWnsHrSdCKub=#k>dl4oz(5_*Pl{7k!|OJ2WvrSR?Bw^gP1_4RcjyZClYzmSm2
  60.694 z`pAuYuGUGx!I!QhC>#9DQc9Lk-|{`(jY*Vc>_`49S^W&*NA*(NuUGWA+v>}!3;z{G
  60.695 zV&>-cf}c!rR@vvT%E{TENcgWl6F@f=M1c6CM~_HINljrWFL=7`pO?99Iw%gE(>5Ev
  60.696 zF5$wNW6-=nicLa9QsgfAB>afnpw>Jt$0B-2v#UH<fAAzaKF8E7I&Se!QMQGdv8e$D
  60.697 zsWQoYCY@W&Or^uv!hYLm<HV?6$HHB&|A(osfXeFmqP>Iyk|Kgq0@4x!(kU$<(j7`k
  60.698 zNC-%mf}kKJ-Q6wSDAJ{*v`T}tbiEn;{oi}8#ag1@z2CiO&e>=0nKN@l@8DDV0)=wW
  60.699 z&)?GTzIm`Tr<$c;f)Yr~6Q^KiWMy^FZ7Iol2l)w9t`kl8yR$##1H@Lg)lE$Xue@U8
  60.700 z<1H)XnFpeVht<^IN*Ni^Y`$km#_S##SVC)oCokhG;gp_!!Dbiw@yS$PG)>9;%hIkX
  60.701 z2!F+ho&_M2J{}*tjXKYIE~)G5_t^x^zfW80!WTUy;C0@ZO55Ap%MYyj?2EyxO=k~G
  60.702 z@EPO?!G@};Xk13-Pq4G6`5oB*trp<lTD8Mc|3<e-H1)}zvJslVK-uy&kTdej+b#<Y
  60.703 zdZJl-EH}1k!aHfHsHh~*ZlShh$;YTo>H}w6>`xLr!F($oJZ~l?b%mFO<;4epM!^LI
  60.704 z1^0!8^{I%1`VcBk&QCHI=V#V{^LROQM>1s{C(nNWu3VVZ%Y5%1*BvnUcFkUA-9SEf
  60.705 z0*~SXnW1K4%IZ5E3rnHL;nuIW92^{^Cy(eO$~1~}7Mk7mR?ig`71M!iO?G-4JNWMU
  60.706 zT}s8+`)Lvb)tgNx{pvK~v8ZB_l9DCw-n}!Rr>EzXk?A0PEv9tv^D~<K!e%wklP3dm
  60.707 zcmYG{RW5^hLRf9DG)aeEFW-%l(}u_7ZDx<wzMS)KcaI(^&^#zCD&mg2|4e)ZASJG%
  60.708 ztTTONFU{8)C3otTKw{+G6@m^&D(e<3F=ylovLk3t;raf$Mk@(&h;~R^^g@CtsLd@x
  60.709 zn;cJO<JT``*Nbz{wfT7yY)#FvK=A1MK!6KHl9<lS%;Z1GE-EZEfxRNadu}HD+&%gP
  60.710 zqG=(Q!E3nsf{~e-`2pMC8IRq^n}>&oHn3IOr{cXkLN2MKetfK~!Mx_*sHhYA+N)>1
  60.711 z65tu}F98G0c5-qW1R3q#UdOge1MF)g&FUR`9FH?@8)|fVxE-}>`?UG+H#V>moGBd2
  60.712 ztzu$k9{l0WpqN;C0vxmf1D8~-u%J$&QD0ebh0~-nED(V8T|q(JC_i}KtUGfA19Bg*
  60.713 z6!k&Vw!oWl#l^+k9wLTU5qJQS((DX)mNhys^sB3@T1Abr5B>_p@jIBo&DBzX+vV@J
  60.714 z^!65Z-2%`#B5@`j)3dPp*!=kLP%Sql$p6on%zNBrp^o%>aGzH{acdmcbK<`syA;z+
  60.715 zV&dSi)H<!lOMl9#sfl%lJ`L#CJ%A;2<<AHDe^goPW-wEUg?oT^vKl4@I>emAdZOYw
  60.716 zHZhAV;Ov{K3XjP`l|^9-K0iP7q#HuC3=9QqfoN!GZ&_Vg>tM@<yeFb(75$kh3iQT#
  60.717 zDM59GdbOWgBd{^>$d~gP73d@4h=_=^%o#2!g30+mDgTalbfZVwQTe_)QaujuGNG?y
  60.718 zE~*5)JokL5(6D(%hLH%?HPI<^1`&v3S|kmikUt!gHIqVH#+3?6X+rUtbW4g>(_t#n
  60.719 z>P<C&=y6qy*e4DtuK2l)AV3hjTrf5>%YONgl88vn9y$*|%H8yInqR;b1M&uz7k>Rp
  60.720 zd%3+kAMqr*;9^Q?I%{y^cE#{y(Y!ss*WoV=_FBDu6%Brip6+fH{V<>mazC<xyiS59
  60.721 zW@*XH&d8Wsmz^y=cNUS8^PDayOHfV1P*qv^`sBB>QJrq)l0Sc51P9Fmc@#W93Q}U-
  60.722 zbc5@V*Gz+}06Xo7F%LKQ2p{j4)>e6KmS|XIu!xkp?k;ZBJFTl!KD~ziMn_OkP`y5>
  60.723 zv9VFo&`QtRnpK|P$5Bo$u(r9`yI^7ySNMrfdj~wdscX({q5G!$UJ5^X$jtW4ix)3e
  60.724 z3kwU?y2K^+*D}72#)Z5syT{0QzusX<F{AsjySw{KB_*Yx$zE{@3GB)UZ8&-TD_4kJ
  60.725 zvrsD>9!I#>+0$dixt;NtEvEddQQ7-qNn!+c2)PYdwDXwe%`1$Ahpe}K<x?I-&_{(*
  60.726 z2=ZJWr|B=^v@_qO{p{H@>to(h{^$LPWnI0!6_#Fo?WbpF^34DvhpR%~SJaCkqewp&
  60.727 zg{-QAf`SQvn&N(ZgNjjA&u^tBT^}Rk<4Ge*OG}*+?&oGGU5@zBS0tXibMl=Z+LjNE
  60.728 z^04ySJ0#JHp3Sv22Fr&`se+u+?{)dEEG=PU)W4k@gNEK`BY*^m!L8UE@87>CoqKLQ
  60.729 zT{p7!cV(!5y55;26gb_B(L(JjtHy-dy1G^$o<t@mUmp7btOiT=BjA32pywX|W*XjC
  60.730 z_4pAjA%JEc1ol!~k1_OGp^NDOR=a)Mg6q}lu*&-0NJp)*?Ob_jX&4sz8v)a-k52Vj
  60.731 zB_$;@nE`1fE6V%2R!jwM75Dlhjnjc*eEGaL_LuYF)-z}19U$)foy}^@>U57Q?!8M)
  60.732 zN?Mzqo-UZ0o_>pL&0d_3X^szKA;9?)n><fKHf9>@Yo4Tti~ufnFY$rJ$NpU|;6r+@
  60.733 zEXKyhMLH2;9DjwBfA1cVMp+bS6z%9Vx^Y`tSv>~eyM~5}$_zL8ocI_OCILiyeS8cw
  60.734 z>YVKiKm<=9R7N33i~$ms1!#nf<7r-#W>QkJZ>}Lyns$JlyYG4CJuv$Ejz*$t7be~!
  60.735 z?egsJJAhYpV2KH&^6i(EmBlbTNfuf@-dn?CorWT8bA6`qq`2t>c&}Bm*YQf?tk+4A
  60.736 zGTq0I2?>*THBFh4L_7t&rfOdP0h+Ob(TO;S&ii26dDG@c=`XKct7^Ed8Vfo|U5K?R
  60.737 zV5d^e0C|F=`y1p1qQd+qz2k7w`LnaL?f06OShs<tc*~Q%tk_*W6DJhMq+b8&imb)r
  60.738 zr3X);*bxSD<O^6PeWf2&Hn>lM`U7bpX;DHZw=jnku+dS2(F2RG5m;HRO@R2*tgo#d
  60.739 zF*huYiHwZxXm1xt6nK@t1i%&p9Uc8ca8Qt{`c2sJP!E%Yn0N=c$9!a5oJCx8H2opa
  60.740 z`BPOd#?uc_<@F5=C^2xYqp`5CrU`G{u+CA4``BhyZkoVjz4OgxsNVgcxc!i2b=}S<
  60.741 zeNXDB(QOjsx#Q#2$Hljg<0(y>D>b~lnyw%wrl#7DvM$^$O-(hdt&3K`(@mf3uj_8C
  60.742 zuj_m5F80{~Q9U{_Syo!AM5pYio)0{9G*>x8j?^Hhy{#0WZdP{o#OcXqGaK9#J~s43
  60.743 zRM--Xib&n>$MW*3bQHGJb$hZSgmV7L403F2Y^2s%fRMkcb65&_tf&|wrKT3y3WSiy
  60.744 z?(Qz&9U>wI+y$wG0j=M2O9kxbWlJI>iO57!E=*KZKCUP7J5Vxja{Yh)ve<h&iPazA
  60.745 zz*V~PtGJ}Je`XrpGyIgnhvB_ffA9+mju`^qTwI7Tv~dy|f%_!DXHIlf-?L;%1mI04
  60.746 z1G~>)(Ss<^6^`Xk8HmxZwO^PR%#x3&(X)wQ-SiM?w%MF%9E+7TL4mt{%Rfd$T*Qfb
  60.747 zd&P@UnOCU~kB(NEZU1iTf@e(*500t~u6(!}cCF10KQkh|n+5oXLVdp@qW^&?u<DBd
  60.748 z!jO9F&OJhFr8BeV&vU|i2W<@Nz!)vS<A_n70-L=BmJn=qKd^}r@jQMP7#PS0U~n@}
  60.749 zgw9=CJMIXZz2QD1H}@VP+&3Bo9Cm*7eMW3-EOxhLXkDFv22h(pGxhUJOI8(~t}ZTW
  60.750 ziF_|<er+~ic-=Scj!Y#na7nuWwA@W*+%h5}qE+1x7Sr5~%Sv8WDTzcuoSmH;M;QH^
  60.751 zvSr3?i`12rTF{6d73fymYy)CJi|(_tV;}5U<G3<d!SAq01Y16%z#T68VBBRwDTQ^S
  60.752 zI?F363JVGg=aJw8WuPeTv9k}*2njXZLVo}Loeno{x~z?|7Qk)lNkXoJD?m%H7l|zI
  60.753 zfe}0TK*n2a0&*28S{Xbn@70TsA3r`|PR21^c1^EJmQJT;VPRPc6+N%XI^_qqEd-B6
  60.754 znELXB{u^K1-mvPE1xit`h8Qgtvj9K8`SFQ~d@n=X@e=>`tB%RW-*3VyfbQ?#%an~C
  60.755 zjrn2q!Omu?M#jcubiob|4z;UMaW8ntfWECg>AqJo4-YPL2d1t5{o80aKcBg(vC-2S
  60.756 zI6wjH6W#z)=1s;9VJp0to~S#bUZ?wjdZ--^h+h1dZStJV&d(3DHZ`T&-rCBI7j(8M
  60.757 z-ZzG=cQsU02A3;&xkbnWTElGt=9~kW5L@Ye;ne|A?Hp!f0M%xrqoaHM{r$h+-(Vna
  60.758 z{yQj-Kf;jnZAsY(o}zvyGA73ALjtek@;7Pg4+aJX+=5PjWXItFo@o*Re<D79WEmP9
  60.759 zWZ~lEJOo%f+UV~55)8^$5fPD*-K7EVAMsuCvN`t&TQ(Ii9>z;|v50@@u|%35a%k~T
  60.760 z`?)qLsmTPRZk5Kp5|k67EDJ8>Zw<g7GtcQ67|^8ik)#Rl3coAkW;0R2^sp9?Brk4&
  60.761 zm+H90XEW}brXauB*SN{|Ho706gO{L3eJ$3$V7~y~<4Z$>(8vep)ko-f0e67~-Ge69
  60.762 zATj=gZ`}TY3DpPd2E7`%nAU7{IPY%zhuf`!t~(|T0KzkCYP9Bzq&>xEfBevD0;4+l
  60.763 z<A*Hi@34{K;oOh9fVaAJgt$hInJjx*b)B2by?j}=$|o%&gB{t$lBSf~gulRL*30<Y
  60.764 zj&EnKBXsr}E-uCC*BehhOaL`@T2Rt-On@8%aLe;Z0?Mw4a(1H9Y8rg&y#SosH0VS(
  60.765 zrGctq^-H%TfGq=7xCVq&Velxgmcf%R6a`;{@XwIL%gW5GV18``yi;$WqeCWxQ%Z0=
  60.766 z%S&Oz`$=R)NAK!bNs6Vrgg?&rnlPUK2UevPL)knDFWrDVb47M^>bzuSWlh0P0^VZ7
  60.767 z)6Z`LU}xy>7ghed(wi*rAD2~E$26SnPrBMRpE(5?+UmA#!LkUlPa*)MxKAmU6W1dh
  60.768 zu?!G$L}>6s5{2pbCsS>Bs4&Z>@a>1z{(iS&LJ<X10Zj3Cfebz(O1;dTnI6d6_immq
  60.769 zi#TLFg%cAKI#D%HHd(&NflcjV^78UtfQ0NeY4PI)54~by?sj`n$K0bxV=fe*fPjGZ
  60.770 zw>7e~oJ@e)^>lXrG^lq9_TK-aoiIE+EFHx*0jOL1O^*_TMzs;uC&GJbN7;`PY^0^6
  60.771 z`0HwF6i$Eo;!jl;^k2iq?xQ1=+W5Vc;=S=}bJI}3tT&b!xzEcxCM%hllT(ndnx3A{
  60.772 za&~$uU0YM*M@vt?Gx3|d(xh2kO)b`IfBd;H+=FoN;ll^%t{a{^J3GCRLw#ssFJ2Tf
  60.773 zQ>V=+G7(^|Mq&}Es;VXmxpFqaB`RRjTb9PgyMB^1pO?R9s2ACA#`V&2at><To?Prp
  60.774 zXf$+PxY=kekHB4YobvMW!O`UU)?TY!X@E@kfaniCC|?>#A!#^2UYh|a(aMR1Qexo7
  60.775 zf+yNloNs*DoN+j9ZEb&mpO=6ADml{@L~;eDO2YT(`}_OBgr(hGHwFg>dnF_!Fp2=}
  60.776 zdEz>o`q1|QA))_<ri9T@PEp7eYQI})*Kw<p1mYIpalgZobfIYZP_AO8-C{`~804Q9
  60.777 z=SX;3AoAEIOB}IT_IddC@#Dwa?PRu@CA!u9_z3VuYhcy!JDz`)Q((JS4}cZbdwr`p
  60.778 zCRSDjb*0s%rMW<wzf(@R36NRg?sYBzAOz+w?d%9<>zy|nK*Y}E)0SyX%}ed++BQa|
  60.779 zfPbj)I&*72KReMpSf2!}tw4dE>yf-X*XCG>VIOQk>IrgGb<}}Hs6|v{q)A+Sybg!W
  60.780 zRL%8O)ox8q&4j8ED@&W^$8nsdsrF{2`t?q=hD{zvaP#?N)f43M>?k8u+nYm_%LYl{
  60.781 z%U}u1*qb+RqyaY`D;s~&a4_RO4$ys1rQZgMMP15J2G6A==TlZzRyx=ftGt;ZIy!m}
  60.782 z&{T4<@016CY;ebC<z;3{-Yf@9L`q6Z`*9*)87cx-$hf^u51%4Gnmh#o>x@1H#A&st
  60.783 z;XdH4Y-2W0PUk{Jr^w04rz-BiDfJmVJUpA>PiiVEMk4m}ooO5#93h->A4Y&kWsXy5
  60.784 z@9yd<6LR~T>i|&IG6_)U#)bw<oaqw(uT^e)mW^2Lqm<a<m>epth#IQ7Q?%F@mgB#E
  60.785 z1aq9IEoRxiRDQW%QA;t(S^ZTUf4&Gy0Spz5oxQ|fOt}`M(3EXK=Z(L5m6qziK`u?n
  60.786 zSmOZDZdYgb>&;J)SSnzM;-=n8fTwILuc{V~jgEd&QB@_YWCp_F9f+0gH@?2u(jnwW
  60.787 z-}?KD_ra%}Cf4$Xk}Z@q#eem%H}?X8C3v#a!%pJr<~Dlu$`y->U_XEVtJ^LOIpFmz
  60.788 zv!A3C=Z8EiA1B4iS)Z(S54pu*R8d}D4vzug{q*S*4Tz@;Qa-!XQtpzxtdqwy;XeUQ
  60.789 z&3~N(Bn)en&GhQT@VWA!O?gj$zXsjh@bmsPkij#~#(?4KA|oTQ$BOlXP>HaL)eAJ}
  60.790 zK54P=BY%W#ged-33oudHGY70sc?F&=T$^vzkbHRP0$Z~3OM;=K6maY`pe2k0jxi4R
  60.791 zl6qa79VAS!+KXlE%S<)8Yu?-i$uDtaa}xFnm8Bg#@f!QKD_P6J%-k*QE)3Gn9>~Px
  60.792 zoF=l$0A>xIK7G3V7MtV`h{t;%1r(G`gUIy)^fMwUNxu(J(BD9gu}{^#TKgCfAR{Fy
  60.793 zDY^Oc=g%_05-HGbH5uZ*f9#o5B|_{+V3g@EzI`6jF1$9M3smFW$FGivUxn}Uv_tei
  60.794 z<U_B+7PYmsI@2>UGJxL309h**kDRZR1yCV#km}qzn7aD<xM4Rsj2;tC4ahA-kLDu;
  60.795 z?`anInv`?T`UBk4DII@N8xf(p2biHe7+-n%$MI?tAFthoJ@)eR=|oZtd2Ocnl169%
  60.796 zq0SG?IXgL+)hT`Y+7P^rudlB}a7v2d5eO|?z{q#$Rzo2pVPj#Lhs_?|qoAOS03lCf
  60.797 zYipat(cad!eP@rm(y<vBSyEcs;QVxVKzJZUbQ9Gl3P_GL_k#Euy<&1D1$WzL&y-7&
  60.798 zrvP{;ZAcseIDLipv`GI^mHGE{54ISxdZ+b?CO|kAK;mOEtT0zD22awTTxHPcHlmm;
  60.799 z<f;V-dDh#vQfH;lS_64s{0I|r+4?EXRm&6?7uQ8*lck}d0mC|<;*(ilygMXAlhwAH
  60.800 zs(O08H-g&!Oik&9G@YF>E@2__3k%yWLdjoeXPX}|GUh&b@StM;Jwq}hFUTYOXTQpf
  60.801 zJB*fk<8IjPE<P3{4tne3<1+|*>276&inygt1;BYWzz7ZXt8Mg4Dk>f{fq`P?k=QRt
  60.802 zD`TqME2Huwxce35J|e9ow6&OE>jt|>+RBe|b8v(|${G}%5X=r4b!11V{RjrnjSwOf
  60.803 zm-rPiN=^IPQ#E%{88b8bjxS%t7nhfR%oF{ww&;mwod)b!AMVglc32Pf&(F(y#vMa$
  60.804 zj_v=a`qL-QAwY|s<O0qN_d$-q#_})Po&xS%P*D*H&*m%9cXc>Fb$tlfzcz5;+T%ZN
  60.805 z)*u3@n3%f03=BNUEI5|Yg;PMV>*8?l3;Af4m0iFR4qe>bG%~ZYxcS$N-IEz6=I!}`
  60.806 zI2W9sawS@S$r9gcRQ3f|yZP?9!S$UQ&c6p`*re!E>Z7|z2q$?^U~#ki9k0W*ll~+@
  60.807 zVaFmvef>V-pf)q)si~>@^JmYf0RuS9iOb<{F)H)2_O%nlp)1Fv_Pf7sh}=Z7?~`{J
  60.808 z2eIMR`vao9H(CBXv}4k?IqB2Oxptle^}Zh_W@h#to}LnkiHVl5sw1PsGQ<%tvX>@v
  60.809 zH`RoA5$y*`8@g!H;>B{t=`>^+#ad<Q0}DMd>v!+oEvZbUN&KkoM<D+0wFfeccHi9X
  60.810 z#h}yj?@}vZm{K^g4s1Eb-Rv}`uBq7p_g6kWJ>0&zu5Tfw6AG?#q>SwS;*1zveTtSk
  60.811 zr1q_9annFnw)5xdsfU5R{mz1!26vqaF)s21yo`nO!}l!WI;>PwVt;EGJ|RA>zd9Kd
  60.812 zV#VG=J?DQ7-R?#bWB7;;$b<JDKYCQwKQO>+ED&Awk5+de(i{}%)RLy;L|uFi{&T>e
  60.813 zz*V6kSK5AVZYy96M$_EAn}n1Cfur+);{!+9Z5d1swjSgMTFn<n@L42~xXTMcN6hso
  60.814 z#W5|son!HQ9z0<rivQZ)u7gi0RFlqq1D#;-wGgs}LVKS=7A}^Q1qB7YT68esynT<C
  60.815 zH^$-jS1edtJ&_O_+v$&UTV?t?M-{J}*>xj5KjbT*|Cq|I2o;GK-Oy_S@y<D)HY3*O
  60.816 z0#^rV?=ZGgkmCBFrQ)@iA{VdIKgNaicQ^mq=gCm6_y&aUbhY*5Xf@p$>}>N0MCUrs
  60.817 zJq}gIIH`9p;}EKp6)H?>W^cp}5>8C&%o{GGEy_q1GKwmD<tOe>ZbqHzWV9_o<L}o8
  60.818 zA9y32$a`Q2LI7plUS3|NbsNTITK0m1^*SJex2;MVqi=w;OegA?70!VLT+5mqd5&P*
  60.819 z4w)-6#VPj%jB6YJj>w-|ckb9aY|aSF=c#pfcXrlbBKEc9aEa|;clXBe@o^wvN^yAA
  60.820 ztz8TDAXUVWfRD!|Cib#3G5rEss{9@^b1wjq2lwxn+OG^|jV~@PT8rdbgFv&;(@QiJ
  60.821 z7k^{w<OJKX)M`sfy@h>&-j|m<tlukX_$cW1cR7Dl<cYd^)FVkrzq4A0r9U7^7TG&E
  60.822 zu+F%x75#;6&FWbVFuqmx)8(lJ!h>+5V`38EzV@Ul8h^7VYn*=&T9i)oEh1zu=!GtL
  60.823 zy}ws~VoQAr3hQ6IPlVRu&O!063ePRY%(48oiYYO`n(RiD7JLvWI)Q<KKeV;Ar}9*D
  60.824 z@cIBLQEO%g+F0i3toh>n9#o3Hh)>7d2y~VC$}t1?`&Ofc=~eOH*#Lg=KJQQTd9^l5
  60.825 z7vS%&v8=Q7^Rw?hZ0jQ8aah{V;R#S8+2!~9hro_NLw3(?n}8Aeotm1uv$eIQviH(-
  60.826 zXLq*`WNDht?ru(J2Zw^&!fuXPK|%73$NR+wjh1_WQPt7Y(rV>oX8w5BX0&i3P%B22
  60.827 zJGbqk0)%$nKYGT0x+Hqh#SI)4wFO|qdR$71Z85tB0%t_^K-8WA^~>Ydcu%8n8SbKu
  60.828 ziH$W+N=WFDX~oC{4`pd#q1~}ypGA%*1CO(a2DjIIVg_5szG-O@ODifW>W{_%Cda_1
  60.829 zv=bH*vXr6;fAs2AWmn+MdqQyOBB!`mF-rfpeeEE~?Dn49qTOD$E49NP=Y}*gRhV!d
  60.830 z<u5EPC3x<QXbOkk5#5Lf`R^trW%3B+%j@Z;Y={hEoEFz9-a6orYR;92{Zv)vs<bTj
  60.831 zQLC&D&U@5<F!&fJwP$ZTV${Le`3^hLHU8Be7a;@qPU#~zSPVV3-!dRLfDG`_(q=MJ
  60.832 zQ-5~*_2sQE4Gql>_`2k8AN@uF=qABVP6BYjqon!#IC=jJXbPvYvNF82(V_x;T-@NH
  60.833 z%3wg$4urhVJq|KtLKj63rX1*25A;EvwFH>d2$xMZCPF70T)6<yN&?*ygo}$?q*e7I
  60.834 zuA@De%yVRHyvlkq7*HYNTy{Z+MTKf%_x-=hhNIwSt3b~M5fc+X#;fu8yR2Ld8Iq%;
  60.835 zqnVPDQpUq)89<!@D0U|zB8q*I$j2dfa&Fsnlx+)Zr^=3id)vY~D}JE!qoSkZ;Y#I<
  60.836 z`@zOuX?1nU`_RzlAC2w@(paf*Z~%Q4cd)mofiv}#z(rR|8vEzFBFe$LyUS1!JU9}-
  60.837 z9p4n|>CcL$ypy%q&uUE*-Z}sE{S7C;mz^41w$ta5h24LPi;FX(q^75T86F%|$!D*<
  60.838 zNkY<*^1xzn>&+X~kwW#)pFgWzkr4Pog&ZK6%eA6ezs?_05MQTe?Rc9`vvwaawdf3!
  60.839 z%jojFmP$7CFs%Ri_U|?e;Qy$v#Z(Lp2aY%DHyiQ`3dUF87lK5=Wt#rw`}Z<<{^bGk
  60.840 z^GBJn6QJ+-aF%l8@5+$;U*Uj3xbGa0R72pmw@xap#%9KBI)Z|OE3f)2FPpp9>fx=U
  60.841 zYl9?uGMFW=h?D}Q^<>W^T8Z%i79Jku-6*-okv$^E%Nc^de*J1&SXlT2_cYkdwFfuB
  60.842 zeVtff5Mh0Ok(0+==?~@)X4>F9(%zV%H@~Eej386Y-s*__4?UWK+}w9bF)`0k5Lj3L
  60.843 zEvokzFl;>(Dr)Mq$(5lTYrrKll~Ld+gJ1iS1f9)2JsX(|H~|@>*Ts60B4S+)#!LiJ
  60.844 z0vuMi!R2K$@Cu$|B0Z3UI!!pE_1HT6ux`k;8ExxZSy^EPw1&5}w@<)D$(`-(JWIB4
  60.845 z)8)&M8l1}*o~q5-SRE<Q7!W>~3Ip~NN$87)8;C5wr9Kp2IQzFY{q!%eS;o}V)M~{Y
  60.846 zQRj^*WKWV9IRd^AlrZtcui`ov(x=Wa%3CNS`+NxBhv|b!1B-R@*?z(_?Bo)bl+<^R
  60.847 zot@X=<;%R4>H6wrV2y#j{r!zk<<<!gny*2YR{RNN%0vKj@TgF`oZfhSqVjf64EumV
  60.848 znUPeq0==&m3r|5ofvV|8LPEmB?#<nu9hdIS6xYSL!LYEfH?!Us(`9r6bcF8}P{de>
  60.849 z6Qrc2C(LKPPxh^?5Q1xO6QOP7nrvp98tdP_eLLLM^~mw;_*DSF;z=FXJ1GM(jpxT}
  60.850 z7K)0BGz*+O39R_nuH}0H3f@D)rWae#RCKxAo8l^D;3+2NgQ;`q(FB)@NTZZq@YIiU
  60.851 zl(Fg6JPr1*Y5`s**s~CiA1;^0_i9xQ-_~~19?>c{dz`T?Vb-6h{pa`Z^y?9EaoQ0B
  60.852 zo<}>T!L;812X;#q^)^UtOa?EgY-0--kP~>U>#FS+x-sDU<Kf`2V8AmwLiXn>Zr9D~
  60.853 zy0KOMJ!Ir|wqZKkYQ^uL>j=GLYGJ`N4xG4hXJ<!rXmF4%Z$NC}_iq)^XJ7mRAlFPt
  60.854 zPVQItK3(ifsGn`})Sa6m=d*kINV6%7I!R8*r|Fw0Q=nDr+4g13Ee+Wvd^IO}4BjAe
  60.855 z{gY{rkdd*m`b7bdvVCZ%sM3l_0<Y%x*C!kM6Zz*zZ{A#R{PUyC04`)~@9vVpo)^cD
  60.856 zvh>SQ-T*3hD<(^+*IX8Jg*+SW-7|rA9S^OoSpj7pCP!3MRC=R&pr*<fcRk#qesadq
  60.857 z=(a})vb!bAkPHiP0rLk~$d%)jqQ)$xqZ7}}U+J>_8^zSrl+@GU@{m5bS&qkcCJ{k^
  60.858 zAp5J)><wVoVq;??zdH+xg`HP@iTn<!u=Nl&d&3q1VrgmlfO$z+Soq#vrCfZhc~ew`
  60.859 zEN$PunzW2efq^_gsOqSDn)@ovaNY9F@83o<Aryi(dz-V(e?e#{u6FTz4(J;i&dxh@
  60.860 zw6$5#mV+d01wiPmGQxtJn>!n6S+FNlHvrGKjZg^+PU@YA=;MrUvI@uG@Qa8IEkzG%
  60.861 z8hS1qx0Bi8tc;iE+-G8183eiyd!%DW1r~^yfLnKi6#gBS37`?()HU=vGR<I`08AjS
  60.862 zdOaeHrwU(;+lNA_;ziyZ4@-%SR%lp%J4qllyGk6MWC|`B&tEvlEJ{KWBOvzO>3mrA
  60.863 z32vk3NmWvPz57D_W|O-!uud7wFyp1qBu?eo8y!<R<{sfu3N4F(^pvt#W&7chBf4U=
  60.864 z1YL5^ZH)V|D^!#id3kw@_O*#u5RlpOyJJBlj4(vf(a|lgs_ViNUh{Hu&6VYYKDk{*
  60.865 zY^G|`!X4iS2QL)h7KZ?64+84K;zOJxV1M_Vot=MuxXl$fJw1J|M6Y&`5hXGrA|r6`
  60.866 z{OlwevcWq*Wxj)_BEmja@W@|WWO#JcvO#orZ*OGsi<z}`(f84a|CVIQIgGxR0%kxB
  60.867 zCqyqs3N*Qy-`h;rWhqm@NwL|(Ll<=#1~xWDL`>vq3-ZhRd^hDpY;K+$**fxge>?ye
  60.868 zLP-Uk{)7R8KLdYWZ#Etz2keN{>V;%xW=g9+0`OLLS&Na&uBu`7k}pv@%3yqayup9W
  60.869 zBFi&HgmwD=4J>i0x$+qhg`Ox>LPA2JeKuZ1Vc>y8F>!HOV|lD6I@2Tq@HU5X25JDX
  60.870 zHXRE9a<sErP_oEd&mle`jpx&b(4)RX+hX=%!mWOZ+e2~*pmS(c6k-|s>;1n03Xl3?
  60.871 z;InCjaJz2(d>8<0Rs#Y8p2Jze-+&}+HXbb|9I-e4RrwB5mBYdMWQ^lwJNEwm^s|$L
  60.872 z1LF6R`fLY73kC$#`g+_%zNR<C1p;u8E(MHjK3TZxrwi>SX95p&tkk2AC>tCaQokvv
  60.873 zl2_5DdYif6HSE~-@a`|TEmyk84mjs>mckdnJxXCg5ddLAlok*#n`kX{uh!JM$N{AT
  60.874 z<E~!$L_y(0D~LOS$jC?&xQB|NKY_PI$u;HpgD3KHZLPqWh1u5DHuwSyz;T0o3>&|x
  60.875 znVC*@Ru-1m$vST}t8Ud_HA4n&ZuPs@)pT{O1dQ81!0x5lxCguSuhul~5n!5>G#y*M
  60.876 zE-x?N0-8s0tXO|YHrl-UHk`y*0pyH_pP!#tSy>qm9@*aqgrC)q0FQ9l%y2Doo)=na
  60.877 zB_+1w&r>`XNk~X?CY*q1$nR4+*;`y%(nZ8HG@{kzC+Pog^x~GtY}Q^u;HLj#xN0T_
  60.878 z#70oZ4FQ*}r@sL|vw^1|C|V`5AT5zhs`h{TZatC}9LJ?X4}2NtjcS+vD|))rgV!PL
  60.879 z`e3Hl^8DsfcXxM<fq_9j2V0b}Yq4%Mo4VnvQV^!=5T?Xv!eap->8|Q^y@RDKbA)(L
  60.880 zuM9mT5La_THGeQfYT<scIjc!W3sk9ER~D=xaf+UwHyLs3t8C0uwY>tD^=9f`$w!eZ
  60.881 zRb?}6ADz01iZ%lfkH$S*Ot7tE0HnWj!9F@PG?V~=?FOu#Ki7m47cn0`;IO6UvH(b2
  60.882 zeMCSE*uptTE@iMFD*Jf9GQti3tDET8t%C!SIKcF2J&lZv*yfj(E+SG=E<$B#1<GH}
  60.883 zNvlu#0q>^si@b_Qu66qJGg=SU4SJlO?(W|vCMH|cQ&WD(Q%lRhqur(FNDJ^?_X5%W
  60.884 z)>et!a|bOgEyYKVx(vafUBKdPkOq?1M~f2B5s=X;CPSzQ-~RxEshpgg92G(Tn6!9G
  60.885 zv$C?11+mxX+Go0<3jUs5Z8QCwSLb06^+{va(nsnJ4D;hDIYmVtxO2~TVPIut<*NP*
  60.886 z7QLEMpt>Ga#6ZyvXY<USE7E3C==m7EC|n}*@@o3Eg#AHEQg%ooEw-yvm7)C5!>iFP
  60.887 zt0X5UhX5%oEQ~+>_NHU53+eRq@Tk*!hz`UA2ipqL9gFuSjE4tlNdVX>P@R}at{$Zz
  60.888 zCl|;Zr>?D?r`(lppzi==5ZSs0pJzqK!{d|9X7!s7;^N{+yYAox+!eO_DV7Li7pwLs
  60.889 zlW)L@{Ly@xo0|!c-oCyCSbP;Gmqic!co_?E-kh<HbO9vP>u|!V<fb|Mk{utZF<ot4
  60.890 z-RNpiLeD~XQc@E4N4eEURN%InRkVnhn_FG&F^(T{-+H2=0qC2>=?2$w-Da<|_KvS#
  60.891 ze;fcNTG@9n<IX-gIQVH}I8U{B)%fkv;h}l&o7^Oi)tN^3#!u>{pFVw3-qd^bid&b8
  60.892 zpc62FoA<(HwQkTW+=7P<fuvsa-sz2EUQLZwlwDv*h>aRYPG8vB%%DS8*c{pePaFLP
  60.893 zm+#W_5qUGAv$YN~OUSmvV(<2NnQ=hG{!VT#V-FZ)>Gxm0efuWl?R~-K{7d|UT-hiq
  60.894 zb&|R*WBV)lXM7>_we|IyhPC!>50AWECMqo2;A;O!zB=VGrK+0RR}shMFx{t5pS}kg
  60.895 z*P%R^ltRwzx;W;u2?b;=4)2Yl&C$_OKKA~9OGP&j@H&IC8m7P}k+zmx*nib)t*Dw)
  60.896 z_mk%W-(xur4vu_32`8s2X-;`s!m_iovo@I!^7lMI3Bv+4yIQ?G;0>0eHK9NOyavJ+
  60.897 z7KM``nc3MqmS|kOykkce`TIK{PpZFFQd5h}N=cbz1Zg?!>sLui#KpzMoHj}lsNIJT
  60.898 zUu#QCUp<(pv^oW2JOQqcM-v0ID1$FQKmP|@=e|Ko8qYu+G_J0$PQI6a5779PdnFC_
  60.899 zhJfF~jKkKw0GGF14B{000bg-4Fi6&hRj$9=g5Gp?%38gbd;{(zZK`2rX2vNN{`Ytx
  60.900 z#?S}|{3D=K$jY78b!_#!3W09q+G8&G@#BYCgtq^mgXm;=f6A2X{vtu=4RbXkC=VIv
  60.901 z=qzwVF22j$sofke?~tg^B0}JSg6WMP+KjqHPyUoY&@Txm5SP7sMrtGY%5;>>wjq3b
  60.902 z>z70jwS@nNW55XA03-#$+S0EuB>_f@qtod2Y5@Eqm?+{o;nWdAp=jH<7p-}5e&#Dh
  60.903 z6TSi<U2wf+zv%lZW`rNO^9i8@hc6DbTVAzKmkFl^FzX1=nD_Mb^`*v23^j{#6olZU
  60.904 zjpEGA%uPVT*)6*ED+`|go|{w03IM?v?Dx(-x^XGly_lAjm32EKRD|?fqq}q3aqLYz
  60.905 zJiL#9_tC?`uKTR4eL{EdW+<yjHFnEdosc%;KYH{i8Ze-n&}3;MozAabRWhaCl9BK{
  60.906 z18Lpg+;-^m=Z7AE#qKgOF$Mqrx$UB&tE&qOb8K<R`MxpVyVsL%JKID$VgQ&;v-8e;
  60.907 z7iA2)VU=#x3vE0Ez^B9T*wO!8-m1P_-dfx}3ij%_g8F(@^*1b~+nlaHnCM||7WxCI
  60.908 zK$RX_wX&2xaL)EMHCx`1j(<`1ZEk3|HYz@TBDZMk=V#v#Gz`2#kdLEB@>Fy5fECtf
  60.909 zUFL#^fBt+L{CW|H`Cd4~vV7wR2&YrPfGpP+fQ=nh6zvA{ZitjL?&~~!@#4kAfat~4
  60.910 zQp6JxET!g6ARP92ZD%UR4t|grdc4d9fIoSz?8Ne4oDn185chb~lya5F9S%11&*A78
  60.911 zxUX0K0rKQPh3#S~#XAxFp$Bxp4xgNlU}$iC46wTwhExQ(W)B7xrQu#AiKDZfg`V=Y
  60.912 zwKZ*M&X0tfO(!<RKo>nLAK$^ir`)R892=ACFe~St_)%p$yHWdmfbsw&eDxBovfmq-
  60.913 zk0Ru(EG-q_nHOLXdgLBIwvHTzE2x430;7-=Y0!k1%E`&q<R~V6Ql;05WMN@hB>_ng
  60.914 z8+Icb6umg*S`6l$*}}%e{3h!kn~>0RurW=RBSPS<rlyt=%?A+m)vH%GC&tG|bhNcc
  60.915 zVq#((pzwny`%6D+12oE_mz3M{_%9)4C`lubZ%x|T+QIwJrKH|U{{iH&FC@;i6H0EA
  60.916 z&TW)<k?KF|>tub2d$6F-@Tk$(*VhG7blavQvkYylS=XhcrU~CwwA6eSaZHX6ygncO
  60.917 zOBC1P!DiYucF*=-qhTa+adELi7Ix*^pTpE+=8wS?|E9Kz&|B2AeW{WX?9BwhXY!(=
  60.918 z)I9-olOf3-J6$`E6L{K644a!uWNA6qr|X?xX=(jv<(>85$^p5BHQC4=HXwkQ2-x8b
  60.919 z*s#t8MCbeNlaCP*1F*4p2%OjfAn)X{H=^k<a;M&?Es(`?5;jpTM-gKr`c$h|Y|`R`
  60.920 zl4aZx!kWxs+}`@x7X$m1aC>WOMqO!X*g+RV3hh;NbhVS?<G_Z-Mk~i6G7^%G=jG$}
  60.921 z3=BD|AgrR%F)(5j;veJ<_w>jw9oyG7xD4ki-@JbPx+2`R5K&$2oYmOan18Liqa$Y#
  60.922 zDF5J*y&vF<)PiqwNpm|G8W>Q9f*cR)OMTzGk&}>+kcZQy_6`oa(p~9LF=&E;ed{4&
  60.923 zI0y_82w~yr@!u7xiM6)@0Wsi5W@%x8JANb-q*D|rvZS|frGyjuM&lw?p8x;j=d?MK
  60.924 zH2>=tHC%1Bvaw-nZfctOIyzcK&&ZfN51_U`iPKaruSq)}_OIXk^GDAee8~o2HiUqZ
  60.925 zbw5vbrT6~3{QYr%u`DLFq=cd4PCm=4*RNlvx3sjJD0F<kUEvaaM_e{%i`Yj2$+;ck
  60.926 zOORfAs|6iVjm694p0__@$~HDv{BKFAeQDRUuVmWG(#lG^J2NmX)VNGb3GdxZVthPl
  60.927 zbaAGVuKVy<s~@a9v#?;A{QNo1U`!#P?pEEbZhl6{09;yl%SC}^K{AIVVi2JIG?cze
  60.928 zooT_3^rN`ET@m}cl6qi)p~W&<La`-e?avGuk1dKU0-SAy<tmTI?Rr54jBn%^7#P_S
  60.929 z2x3<&5TI+h+Yy(Lz}u`s<}y5nhIDmx5d#3dJm2OzH8pjX^{r?{ay$&6QLYMSbC;Ab
  60.930 zQM~d1o?CGb8<|E?a<96cZbD4mE`{0lblfkj{}-i?G@1b!8F5f$;>xXe%A}}Iw-2}H
  60.931 zp1ct;q4py%@(@Z}*2pl4{&$h7078oG8`eJ;<j*cn`TW6)E8sK6nTcItAGM`B{Z<f6
  60.932 z>Z@IdQm-R{UqzV#B4Pv!Z$6v%GKynTxAzwOiUuEhce#2MyYH=}#yieM0iKLN9MkoM
  60.933 z3reT25hIC_2@uL~@u~ae&s#}ZAp}PEO-+d_Zxezzl}-lnnjzJ7Sx+d4^Ay#`DFrte
  60.934 zt}FS4T{S=k0UHq_{Rf)ym@T4EXv3RRl0_ql54-+d`JqP$8Q{EJnPT<11Fj(OS4yCU
  60.935 zZ?Q0LCvWX99oXlH_!0QBpevzMy;%{%q(*$ikkS9$3nyK{OxZL#{L&g(q!(l?2?Spn
  60.936 z+>t~0fmXN-F8;18%_KTJ<I-GsK5mzF4-IYLruSuMPMKl8&6&SKb;l=cMXWO;jROw&
  60.937 z`0#+1{r_qKkZYH8*9`3`H-ZOOr{L>#ykW>??#caEk3S@h91@8k@c(ec(OPZ*(`ZEY
  60.938 za@t4s()ba4d9c7|ry`y4-+~(&Ho}%_60Q8-46pvxEm|Kyqs1@ZrcMZ-F+Y$g&h)D}
  60.939 z;sT8tf$;T!u_N$R{$~?OuG>y1YL}~9SWk&Bm68`qY2dG0mzT@-Fhyt|+zNhEaZMdA
  60.940 ztSw4xyVr;Qv)N~)FcunD`EuRH_%~MSEwL*@uPeSK;kkqaP;8M~2f`^V5^C^{@U|N$
  60.941 zvd@6C+@i7dx(S!ghB)%$aI{%Q?X!)S|C>9Z@L{_AXf`JWa_KZ2?-+dGbc#+uJ1iEO
  60.942 zN9%;Qn7BpOVu?)0;sNg^AVreli2Ope^Sut9ar!^!0<L+5;Bui6ewX~N4-LL}7t39l
  60.943 zf39_dcS`Pd@S97^JHG0U!vPkWH}AdtzaI4a*B>~cP`CR};9ybv-6AXTpL_tUT_k;Z
  60.944 zZPI7{Y_xy3)lX*dQ9(?Bt#tyxXF1r0kcMt(+^BM;UQW5rxev@Rq1?h|S5nuA5xewF
  60.945 zJ;e5(Z(<^%&~d1D7B%6k3fz41%|%-u^->Ux9L|EsC0NWtll`~O=tnTf!se5l+Fi)@
  60.946 z`qC0CC@sb?^1AKd!#sR|2*EKJ#0Y#tc}(>QJGC2pmpru(2C$v1;2{#od+YLv{VFix
  60.947 zyGpUs{<+FFQs`^+2JN4xOrX(~*Ae^|TbaM)yP@rT|BIa8xKcUtU~t1mGdTX`NXix$
  60.948 z1nd8L8H+7^_^ayh>J=Qe*CKRxziR#G7~e=DdsjLC4e+%V8u-$Pl3q&(S}gpE`;z|)
  60.949 znWtA;Zi`(5-%<7O(o*sWF&D5DI?{r2pFm7B8|~5~s2{IR+Q~<0>;IFEzX3{N?$RQh
  60.950 z54nDab&y;xYk$>ZjL`1-ApLLx2mCI(G>X=8PYEZ40<$IinJcc3BSL~g?qk$IEiT*f
  60.951 z5!LSb{|sE{rQ|{23Y=SZG8Nb->BgNFHv~I1H}wNrDZUtrj{xF?oTixzdZ3Bn_-LX`
  60.952 zJ)_YQpJ-V_Y>;=R0tEl=vG5no?oOa~1@M~+-wmb6=5CZk)Sp9N>rj!4D@wRhm7`qi
  60.953 zloZtKbJRYYFnEjz*cs0?`%DC&0l4r2oAKvjaeWD*1QEsi6zCR$56r-WVBcvmMD!2^
  60.954 zbOOAeHaFHZQ4fiH7>I7NVjv$ZmTqBL;2SYc?EeE<3;7p}B0d(Yb%Ef9_X^Rd&<J)g
  60.955 zLvM<4gpBGlnrYwt8jIs^RA(aoZd*yitnn+bf0*KPasX<Ml%8pPcMQ$oi>w45B9e$x
  60.956 zwGr7brPDO8s>d_{bj1JeLW@(^1p_~kUE;tE+<gfbmZ~JI{rwy%pCK-YmrWawq6CMm
  60.957 zP;ioz>`6I#*tMs$|DhW}<7wKmR~k<%o8M)Hf{2ob5y5nzb!Teq^<u*WNl8qLz`I1&
  60.958 z8lEtw{X5BQw88L!>mKyoX%S|udn!xv*-QWte<w%k!-}lx)F!2%xKxOci_3D!p%964
  60.959 z^l?$^C*8(L=uh+=y%4<%y;<BFsfO79Z(Pb2k>#|?LVThT?edD~1T>eDyKiXx9ChZz
  60.960 zjLpLPKa=~Qw=nz9QCWYu40*?^18A|GFpwLIQTg!u{Gy9_B-niBls?SLLg(+p@L}=+
  60.961 zNn3n^_>wU?UhP3x%wRYgSSVGDoCmev)REIeno(|Dp-MOY0<9N6KMQk@K2C6)lt7{$
  60.962 zoAc}6!NnMem6A%7BhGcADAX~ODWfv29kWpe3V9qch$3P1>wZRh?LkO;KI`*`;hh2~
  60.963 zZM_YG4}Jd-ic?D1*LtuHaS%L)-6&_PtS6bTUAt!R%Z~5wdGqd3P@B=&86$q?_;cBS
  60.964 z@ScT5gc!lRLRX4ezJYQW(q@zeQnK<2M%&N918DB_n47>XiwGyufG&0N%Y#wpZORKR
  60.965 zTNWZLcJa<RD{`WuE@~w;M-k$Gq=_oHYr(!$EAn_b6R%XO(D2T}>qsRk3URg=T~san
  60.966 zwpc#Lnd{kmC|g;2Y<GZzNz&bp?4-#oFF>`+{B>f0;PHAi-wF(5;RmcNMnH%YjE^L~
  60.967 zoXM-lk!n;FrneDifDe+m7%c(zwNr5`V(-4&gNX7W0e&?2+KGEA9<j4H6hSTu_Ajnn
  60.968 zkljkYM0b59&Y%jxT0Ie>mZ#ZsRFW8!KH~uRK4`Ere*7yOhvyfD_m|!01;WW_7VuHR
  60.969 z;YXk_&R5CHoQnf|Sq2O>;`iX0ngkgOwLdeWghLesGTe%oJ>yjuP5RQvY8A!_Y_3?$
  60.970 zz{_+?B4-vJ@^cn|*8O&LA9j$hG9vL>P{c^#BYt*T(=rRZsH7si1lxPyvrZ%TeW_Dc
  60.971 z_%JP`c>z{qqHNK?9H&Ez7Rbz!H^Ir_lhNxZarrd3;Az~Axj^n?ecJAbpkt$WK%Nyw
  60.972 zJc%X6O`IxgNr9r&r^k26rV_zBhg}7Fs_^j81v`6gS;1*zYGrw4g}=SOpY4H=kcZgI
  60.973 zmmG8qkKC_Ilz00Q4AxRyp|U)jAqv!nE)Eh7x_<0O#e1BbgU3^~4#5-6uw5<=Tg;@{
  60.974 zkQWIt@u#s8!&!%cWZ?~<K-pmj4I^FadM>z&!_~|z`$+YPu=>of8(gk+141UCd%>O<
  60.975 zIXyqwv{B7g_@!5Czu=}Tf=`Vrf>P;DXr$nW;GxB0Q(**Z<3VivsK*AR*y%H}8#nHD
  60.976 z_VsbIv$8Jyn3x!?uc;Y6JUP*X$695wmb{&~p^qQ7FWJR1XptoBJ_=8^5Si$K^Ntum
  60.977 z$&cJ5-`?IP2C~oL0&W%p^u7LcQyjeai7&p$)>OT7$%)`*L&V^eXjGAI^}ZVYr^sT1
  60.978 z##NwYS%Xl}uD<&#-2ZKfI`g4oD+%>imp^Z4;wrKKJ)ux~VBoc(gIVv{-5+Jf#cgeE
  60.979 zLY`~eN2hgIH|U8xjuv9_&W`sARyuF#1{Pz;$}I1YZ22v70j2U?JT0u%k$fGNj|Q<f
  60.980 zE${7(8M<q#soCis*Gx_6C0$6~xN+kZeL3ZxD<+4LZ|W@ub4DK(e`9JttQcg<cViqE
  60.981 z+UMI$qdP@3t1hvUmR2tB`z%_bYy1pPlK;5w{~6y1B4(A-Z}vL#Bn}#xY6atn9~J^k
  60.982 zw8OVX?!7k|uEh9YdvA{-A}Y$%blI4KoZRvi>%rER`Clw0tK<NJyNg#^(0uNKd`$Vo
  60.983 z9x0Is{|4}B2b1T;kDte%G49}mb(vh%PZ%B@{lp9YDIq-kv#9-ir*-xX9Y<j?0aB=1
  60.984 zzI-(*>&iHnh~u`>*w~)yaL;4kJvd;e5b<!y7|++)74o}9?SPykdMIkh7P=A|RmA7m
  60.985 zI-*)VN<5$Q>|3F63K(KI_8;4fzV}A>IikYh({1u_MRc~Q-Qm{gIIid2c;tL7%Qema
  60.986 z`$}p7;oV-YtezP5C#Q=Ewhe7Y9D?`nm(G7nli-az9}Xb!k425W`V$w)K*_CUOtGx#
  60.987 zL$$+cF;g-ssH8`;gV0=;yNf_-*qWY^!KzuP_5DsC?Wej|YZ|H=8trg<?C~hS%T}tp
  60.988 zi_78VuHI_bR6j=*H*ac8>b@J--qK@XVG%zcNUj80jKf$UxvI*nFCHgN$)&2I;_pCB
  60.989 zO^rD_dx;`{C+!O1Rn$ZLp@+-g@mtgx+dFnpO0imq7~8vdFz(~Eh$FlR%hj-}KUEnC
  60.990 zpI*`#(o7X5GZ1E_O-%+%?r(p!29VgyHl4XiOG}%)e7SA7u(05rEabY=onYG(XJl!~
  60.991 zJhT@}Cm)Tjrl$7I9Y1|=q(nUrq;Kt&m6a*r<8|~547xW-NF3Jx{8`o0)3Z!=U5tCv
  60.992 z6~PcAyy}#t!qjwrY&F&zfPe5VICwq#oauc=Mn-2xM-B}iUyaK`cND(D<AihXowbtY
  60.993 zi95n>!&2@?O`a!&{Ny1oPWIQ?UcP+!rlR6O!Oo67Y}2WZOU_qnG*Mw8^|;UA)AIq!
  60.994 z4%l#dWNd6rK`TYXbAnD-IH}~+bvRc!OFo9J&)VVzF#wh-m*fbBCllv8J?zC3q3(-u
  60.995 z&#wVns%LKQHSYEcCc{aetDUDuODPdAtgUs0hv=St4MJv6w<v~Qn`5DG@e-xPvjwED
  60.996 z$`u+nVk2JY_mLK9q=2j`1;wZT5k%cwc-T7!D{G(hm?wMV-@&u#dS`|_Lm4e??XEAa
  60.997 ztv&FEULjUVz<vME=ZPEIH;IXLVE-~<jbgpHtj0c8-Kv^IQSTW8&)cCL5gW73qK^ze
  60.998 zl$-VK+<Y%dO2P&7cN>VnZcW2c;xUSej}Z}l-ly9gl-?I-)pNkItoix*y?_4vv7DNk
  60.999 z@*B!|GT;v2akr?j(2;)c@AdbR^sqH?;JbHrUH$!wF;P)3;l^S(5esmWDOS|mt4WN?
 60.1000 z+$kaFNlF#J!{P_u{mX+T<!K2=+k?sU0eD<F*qEM!7YYjt7oeh{UDjAk);n(sEF3?2
 60.1001 z^r!*gwP0pe*7oLX^T0q?S6OLgWzp`=PChJKi5GZf`BIgub8RSkEPpkGoPTf~mfjEa
 60.1002 z^vvBPBHHTi?&b>#3E|$@*bsm6WMGv^HJb>Rj7P!TyrJmfnRuo?Nd58%2IWE-7|-=`
 60.1003 ziy`_u>%c)5o);DsB{cAPob8P@dY>OXf0Cz`zZ+@^>(G+~onKUn;>K|pOSgaa#n{_V
 60.1004 z=xA@>0g)tppNXlfs`fAd=eCOD>ESk?rskNN=i0J+Fx-?H1w7_BD>HNXl%Zp8dlgnu
 60.1005 z!y@IywL0(b=~BtCn@{tiky<>bsod!M8w`XxgbByzw(GlJzkb!adgV&+kO4a%A0I45
 60.1006 zD66ZYCVZ~|to)@SR6mqbIN!nE{@mJvMaK&eE`~eXWtrB6sHNyW+^sKj%Teq|0=G-s
 60.1007 z#lK7cP?1l~{ds(?<;41q&KP}6k2h-N?T>7QH8ruU;j#~A0t5vG*F2lQwHp|hX$j1V
 60.1008 z5)AscKm0yOdO7_A$V2U^+O8E!hIBBg+uo`=!}`MR(!i6+GGiGzhtSZFkScO+OSMv`
 60.1009 zHFyLwJQS79vgES%gF?vVo4#k<+qY7UN{m7UoBS-StgU|HY0})G#a3BWH5*FRHq!#t
 60.1010 z@Faj{Nt*8o79b|CQ;K?>))kj|ym}9AoXBH6QTpZ$Dz@huNOX@qmcONu-Jn;<HMi6~
 60.1011 zE)MrPUddU51s{E2%-7r!qoUNO;gs}A<(R=ettOA!4%i)2Ust!_fIB`e?hy&AP9$9T
 60.1012 zm@zKb)$ko29m_{bO?#p@bgN#hL_|lA&bvDj2hrhUWA~ha#~-|kOKKvkvW5h;9gq0z
 60.1013 zsps~EIWno_5e*0*BwoOxmp!^qaO>-gfuVMZ2zc~UhGZ8bN%?a=qy@M+Ik=q2WB-qK
 60.1014 z5>{Te0)V~DCP`xCU7JyP^^BX<*6Gpi32EJWzscd&uaW-#{^0W;AThs+kbAXs@9y2Z
 60.1015 z){YeQWyT%ERTA$q=RB~fKCDnx6kh#_v}tMk(|$sJS|Oqj!-p;Z`Ul*<$HNodY}|pD
 60.1016 zLm}wIr>?I4-9638ZheCLJo|Bi8$4Tl_IF#5Fl+~_rm8A&C!Ock{iiLrNJwJt@0AP=
 60.1017 zs#xOF%yWcAMYX*T4749M=%3rBwHht7`2MH#;lqa`03ohS^l));U4eBrpT{VZVA;-E
 60.1018 z?Nahuv&Yd6%428)QPC7IXot#hvy~ckmi5K?86I2^98sgeM&#t=TrLj0FL-xg&*9;?
 60.1019 zK|;8{E1y053IZNBu`P%M-^t$o+S&11iD$f=35uAfXX6TZbdTeMP0>1#jmBSSxa$?b
 60.1020 z8b!(=5_ZaAJ#f=`d;T>L?2Z%yj>|PC2b&JMgc4TY$@m6Mhet-rlHFGGTHv81eI?e1
 60.1021 zRjsY90Z~y=ab!C+>FG2xaQQ@wmhkr9`q9BWSLgMK1=p29x{PFQlc}1Q!5@|2UV897
 60.1022 z*BpzyH>PTB>Y|^-KY0I9yS<1=?7`5(++V1%xKHo+B!t!kFDO;qYMRh^7+$r#QNMZ2
 60.1023 zqE-5I`OOt<e*m-1->+P8bp-E6|3u_yz6E5$02cka2X+ANlA*U%KmGhBO;J%XO`*NY
 60.1024 z<H-Ktq3_izN&F7}+t`i3WkpR#^3|~lG>YU(%gZyi8L^%b-)Y%hPF>xCrG?ULF}!Xi
 60.1025 zfZz^@+BrH#RyYdEN3+zHSk*QibSK40(tIv`*7}BqhQ_V>F9%I{=ZpSC{?@<xTnKDX
 60.1026 zuMfdWftIk+ydk%)PGAVS;x~*t9zSPJCqlE+)4!xjK9Q3P>`Rvlif4Ih9%?lr?7q)u
 60.1027 z^P}|hPka-7Jv~3zJk(!gLm4o3$J>zY2s&@*h3@~@A2alx&d5`6R}Bmdgo_srR%@|{
 60.1028 z)Ya3*gBh;X{7`_tLc^7(y>VRob<r|XQryQFeGB$<syT|R)@wgHjjhp%Y%TFCjmYSb
 60.1029 zbJQ(wYr^oC+a>~tCqRow3JM>DQwB;fd_bz@vD~E!m1ZQ0$DtH*86GcxuJ7sT*#nPh
 60.1030 z{XxcSlPKzOXgA#8x;toTX?csHfE#2^P7t9@rKMp*rxWXIfLZtJ*4mqn!cF0Yg@pq7
 60.1031 zjbQ{5+9<K__G``N5lowab&+e-J{ZWyw8LgmtaZLBM@Pqs{_ePio|xyiJ|)3LI6$k^
 60.1032 zEZG5Pbqiv45Qr#gI__qrrv98tOP<gd?Fr~~^&4MbvUN0sk&*E}Jmlq6M~61mztUnT
 60.1033 z+snej;wqj0#1L=@_X{w9ZV^uFFN==1JMNsU%GL46Xr_s~r<oA15YiH20VO<|(^z!|
 60.1034 zp4n}sZlJAA>JV^RT1o*&M$5Lqo7K}(Q;z%AAXOh2h^Kw~Im;^}BeR{WoI!bfbQJYz
 60.1035 z{6&(dGu#hXR#ryp-Eip9G~C{vtwBYw+#8sXkRT6oh-H+ahK2^~IZ<v=%JZH1uB^qy
 60.1036 z#o%beI>)^4q7TAlP3)KYlcX<T<*!~kd1P`J&tUzpeVcpL4j5tynn9$m`4A4oKxT;)
 60.1037 z16L-Lva+P8$P}*sYFAZNamTP5I(?L-TzNwE{gcgfT{3v@(ev~3i-8$e8L5|*&rZj$
 60.1038 zIK9p~n0bh@vhUxB&aLr|_1NM;w0WVjae5h@QwB$y)*Hg$D+)$f?;5FTnBQOq4rU(I
 60.1039 zv6L>H7;Amu(OZ2}+w8E2a5*nFasBD<_1w_C21~}^DQe>)A|g?ceh9h!UG9mEjZFxw
 60.1040 z3Kye#fW?YvA|}Woo|siub?H?*e6{V!J1CCm->I&(+(KFrJ=8GVpYF&^(X_IjUZNjk
 60.1041 zT6T83bzw~e3!p!=?UX>9t*?4c3~q~=n$mfKJg4|6#Ma12WxU#URu2u$_ZU@(g}7i5
 60.1042 z_;)yn+wQQ+S-^1CO<Ya#3JS*R>g!1?Ei6W4C;J!dqhLeJ!uR~#+}y<(8OHC!!^8Eu
 60.1043 zCP#*cYiw+6q|mP7baHTUMF>RC?;ceE5-eAl!`hyIbad2x`}S>>HV$0eU{XQBdKK`)
 60.1044 zX)&j&9dgYYCC^OOh5ZmXQJ=lNeWuqhw}XwOwS@(BBQrA%ikmmH+yTG^W#{&ao^JW7
 60.1045 zWlatZmBaG1iErPOTqM}^YV4kAKyPMXU<ksQxrU9c4v);N1c_0Nzy2oFhuaCfwu(13
 60.1046 z;#{_VzHUF<o^xMZSa|f+UDSR5!@}I0YKprhKz^pl|3lSZKxMT=eZcs62mu8NB?P3q
 60.1047 zk?vHHknZkA=`KN15G18hx*I`Cq#Gmzq#L9={pQ^FegEJ0cddKZUGm(Ab7p4$VrI|Y
 60.1048 z^=}jz85op!xw%Pc=iwe|<-o=>PVh7^*1Qng-rl~+5b<7zlRjufZ$ac<ff3-o7et9u
 60.1049 z7MH+o`@6!JrXyx#Mh{vH$=m3|+n@<Z%A)&tC-<%xFMtg4dPj_zhIT*_K%#WudI6Xu
 60.1050 z3c<uJ0Eh>dnAipe@aC>2q2l6VYqW=?9R61)g&IyyRUwIq8l_1|n!Q!#{m<kT6mq>L
 60.1051 zfG4xc5OD6|=j2p|TN`!u^+i0z!HMB<T$V1pg&RiuU#<}Xd6Q|Ikd(v>Jbe6Mx)7hL
 60.1052 zhItk+3Rh+N-&x>to<M^p>*(mzg0-Fie8Rx-@o}6^<@x$xst(*1R7O$J(y>7=B{o*s
 60.1053 z6%6ftxGR&bg~cS*KE=aODIu557!jz%uvPSx&T|G!OUpv!+Jl3)yNioPafIv!Rv=g=
 60.1054 z;9`k(Aj;q5(n=dvnS}?{)$zh<n}zhR(>TB!ammQZnY!-I)Y{F~+4nAA!`-*&fCeFk
 60.1055 zaLCEaQ6V6?c_X8v%gE*7{t#+9sB=IaXu;Kq;EDk62Q7a6yI8?qDb_3}o*W+^f!ij3
 60.1056 z1J30nWCM7XS74Iz%>nGX85ofL>g_FD4#F1g!A3`Ci1{arhyL{bl29^6feD?hM7U@x
 60.1057 zf*&g@=SlYo@>`^F=R=f$_s~^f(cSe>$A<lYDI_H!Qj7`t7}V1sp`)D2CoyL9$T>Pz
 60.1058 zN+*BL&d#op?cMMA{ab6fMMp)Y{V_U9*60kqg0WmTGTe(*K|&%>I>Ct`Qr#QGRYAyb
 60.1059 z&FRk6EXuumGk3S=3(CL=C4Dv%7825>WnhreDabPFPh@qpohnlxq*E93Jjz*u3+)#b
 60.1060 z7eB9w75jJdi;0qQskX#2iJzNTp~7jcFW7#zE*HI<{l||VSI!$lr)<p3al|^m;S1K)
 60.1061 zmcw0IIy#e)Helh`!6iw*d(2Li8_Jyy*hE%t52o_fQs!zcwgn<P!<VR8Ni&@q^nkAo
 60.1062 zu6?s0nhL&5n~Ml@{+r{<469B^n0D~_yW8t?Ife-rLHz@O=AydQ779N@Uta-l{w)7>
 60.1063 z`iz``#Ln+ZQ#=EFdAd07?eW6odwgh+8ZBU90@`w&+CDj-%$^<@5vcI!M8I*m;{-f<
 60.1064 zc+D;_WSszI9ucq`{H311n<&;CbYk9R_&_EisHispteZ-U-)$pYe{#n#-fRszI6tR1
 60.1065 zA;_*}EYj7H)tfsq3<~i#e5WRXrIHs&jB<0&Mrp)EqPY+q1qse#Ozt&vf;$QTRo#h+
 60.1066 zg;gu;f7evW!np&C4>6bJ(23XadK51d7#N7i&&dgP1is)nD~lo(kZS6(FI>_#I`rXF
 60.1067 zr`1Cb7rMA!^GdBh;0?aQ$xVN!t2eeH@R_A$KamT$4Om?st!0>-n`83u)au*|`qApX
 60.1068 zpV51`(!C2;<Fx}QqK!2R*MGjaxHutfX(A>efv<t7Im|a%yWLzkdb1^6f4uO7%Yd!J
 60.1069 zSCj6I4}Y2h*xz#iRBs|!%;7*D`p<o`^}fAw-MzW-;Q@jny0x|S&+;Jf3dZ$75taFf
 60.1070 zW|rmVs_Uz(=aK?EaRlF+Dt3244Odd7TA~IF_}9kDN~?3_&<dcOySl3CiiWy6<4b92
 60.1071 zBDlIKEgjvwgI1Xc4Nb?%Os#ERTk9nQP@RKt1x9+=qvPXWIpNx1q$b0|!y926{h8ZZ
 60.1072 z<-DYX1#77ed|zrxa<bY3x$#zyLrHreLgyBmJijXB|GE?u6yyQ)&;_S~|Jx~VRe`hZ
 60.1073 z77UQ(kg~C?JQU9nJj#{uc}jH9(Y#H~7=OX5Xx1#0%KR)RHQJyeFF&OCn3`{U9uYM6
 60.1074 z)M&d%AQy>nhu2UY@&$pKdDlu7o%L!_4*hFS&xQ^nFgXR<4aWlm12ktVfOy*5CCve=
 60.1075 zy<T$jxi~Pk9_4wrxVRV!3?Lq^e7*f_;??PtVSZsz(fypis>73|y7pkT(UctnoW*Os
 60.1076 z+GdUo@7wy7zk%!_Y})m~0Bg#*LGLP&RrfD={!__}W3Uhv=W1<}dcF^?_QpK`uNzn4
 60.1077 zwyUFfcm}@a4_I7b=-Loau^}gbqE^7ViRDHIGr0}-uB3}&blS7$)KE}RNWdXP7y*sG
 60.1078 zB}w@Jicd%w1*@wMo;Fbm3W{r>qxlHy%ULOnLxNu``uH^I0AU-fB4RO+TyG*t0D;eB
 60.1079 z!Iw>)ymgy=uQenYh`B7}Ls%00?rtup0bAi!_k!Q4^5*_nGM8oaxOOI7DsXv0yUI&N
 60.1080 zMMbbS86U6)8si2&0Ri17J~^Eh7CE{8`@r{G3|b)KNp?Y)lp?;3vkpOx@0@bokruV;
 60.1081 z`JoClBeb?Uhf2g6(;L*bDu+tQ=wTaX0As<l{3ECf`XH{}%~ha#g4hi7(jF_+t&wOr
 60.1082 zwM80%65``g#h(TcGZ+VG*K<Gx0V&B!MY@|Y&*CI07>JfqKMDktLrwSa4W2z1-}tVN
 60.1083 zj*UIV$i$>_dUnR9rm4B1m?11c9<T`HzsfP($KfjHRh$<P$uES!7|^n_@5}o6-JOD=
 60.1084 zABl;HLASNF4cA`UovqisJNc!ke{y;%0B?gx12dy#Yz!c@q=dQJV(=5r2jFSjuV!C7
 60.1085 zxBtIf0Py+mV5(<EzrG|_*U&IvWMpjcTI);r4y2LW>Gs4P_zNnoMnk{LTwe_h0$UJW
 60.1086 za6e~FpjsT%)YSAqcr<XDc41<~RumM-Sa(N1WrHDeBh&vyd{R=VxuxZTQT6mcQXusl
 60.1087 z>mBC$bl++t;DnNG$OtGM#&Rn-ueKB}Us0jOvbW&>&$qRv=ETO+)AM)x`v-<VwG{dv
 60.1088 z_0ne`1+EG?Dl6l1F);L8-Q8Z-Pusa^$;ikAH#hrQ!w<I5;!A)vYtZ1d#`v-OI<$M`
 60.1089 zmdko9#|7ed`}>=ENs#R0`A3h>o{qrUJ;F9MHGQq6^}D&Ms>*-9$<x{OX9$*KNJz-(
 60.1090 z@D=I<f^RKgoV^E<Ip0J^M*alET`mG5DzC86dJVqS1$U6LQ17O~5u|9p7C>&Jfsznr
 60.1091 zh~KDf>RqCASxz!#$m(15?04xS=*WwRz7=L1ah!tl%(~!*+jHR<+j9}9+s$$$<3ieW
 60.1092 z0f$h8M7Ybzz3a<&c-2QccJ@xMD<dNAhmY{7s{XPF*9O{N<-C7zFoAig;ma$aPh{l6
 60.1093 z=D)uDh~!8q*YiF2zfK;p=(TF<>T7<-gM5W!Gm4p_A`1WrB-4EEZW{hjro!3B@pUZ@
 60.1094 zY19&6^dm}3N^(L39+C-bnW%(yuZ*rNFVj%D%$StSe0_;s=-C5zwmt)HJ6WdqwXomK
 60.1095 z#TNh}Zs~2b8QQ^JS%Hm(zf!-Uqm7$q;Zf8x4rhub3F2HW{JW$7g>?alH5>?`8V}9s
 60.1096 zsj8}HjWr~H!*Hq1h6HVGY>t4}NT)SW=cK29>A=}PH>Y1T%M#hSytBDE9v>ec_FGL^
 60.1097 zd9<+Kb9QD%Lr6d%p~dS|b~VuP-<>bAQjo#t%PJpVU)|LN9)~~t`v6%mk~YtY5RgOA
 60.1098 z0tuUo61)BKPHt_2`_t)vtqrXu=aC`oVz=V7|86nVzV*Gyaw@2KLP<&41#y`5#P~oJ
 60.1099 z6%_^e^WJ2lJ_V!2n(VQJ)36uh6%tBa+u2E-Q#w%6(CF$2e-ue4pNun6;R|%n*xByv
 60.1100 zcO;xNA$PV$V-+1RH8X8(ZPJd87SmPcLwamUckuOy;m=(8qQf2Fon`6elMi49k51*a
 60.1101 zuX=!qSu(tk7!#BA-wlLU_C#cxOG`f<Vq(fa7TX5{V}0Zy+z14(gcLRmlv+(5j&(Ph
 60.1102 zO1vOOY#<{mD+YJeudKRt{7@T+sXH6MHJy^F@Ge>o+#8;jhGvsY#B2N_PEi!MxAn)$
 60.1103 z;iiz=->`i^Q34R$sIj1+U~>Whhu1i*hJ&?71-c!t?iNt;=kKdWQ&LhUz%$A|a`+e)
 60.1104 zHqzvMUKU<f#zxQ2&#%GHJO?9lx{$kQrhv0WIlQF+C*P}=xyt=+^>3XXN*CHdW(eIp
 60.1105 zSDx876Pms&)6-}_SCoR7p%SD7u0y_?YmpOZ%{Ldrh^~O?$Ff;apL#7>8()@mRXt=w
 60.1106 zxsd#oaW<7}iQcLr^B_$fF;JkZvg0@ZrmK?VY}9PiWlNAab3x!4Nk>OV4{>+xrf5b+
 60.1107 z2Aks_KriM1>-tY9NQK<&)`!LZv3w$Aqo$UU6#n$S<S;cVN+AjakfN}9#QXQ}2hwyV
 60.1108 zCnr_tw<9AWr02_LY)WQ;OL79bCF4R%fSp~@eyRQaoMx$x`VMeJBj9IWK8jv3O#S>R
 60.1109 zRd!=kiiKN^9+i#4bXoa|>r4S@gbhi;#N<nd!V7Kf&;OP}$@?&ItH5e9fA;ytJzN_D
 60.1110 z14HGF(E|dO1MP2bvj=X?25G9N?HYx{`)X@y%;v40V7}P!0MZ~^Ds(*}QX9zr#&%l(
 60.1111 zu<C`ERd72nD$bprSZYV_^SvlhfLJSy>fDTxHK#{q)YtCww_Ah1$+6B<Yi=WE$Yb_%
 60.1112 z^)7rh&^XY<*&##Z3)N`f)J`BIqYy^z!5F8M<}EEPm*ob{WAOHU<+o(ljiIMfkXDP2
 60.1113 zXGG0PxHrXIv$tk(Ny&$;-Ccc(;zpI9z8=D4RMga1J4bdo;q`FV;~rpxr-n@)l*_(<
 60.1114 zz%uv(%RqoTIuFT3n}Rz{c&_v|7h3({ibT7>cDe5VY4}RpUzez)r#ApW1d+7vT5^EA
 60.1115 z*`NVn!{mHsfljW*!^3l-rlxl7=wuO0XG2Fv$H92u;_hA!6%g*O|6U+^K*%QVK%_wl
 60.1116 z*Yd1I7y+7TSYE<c&3`@k4^WgXEU#$yg~WA#SX6Jpb-KYD*qsJXmVOZL+aH^Z-L<dQ
 60.1117 z|MTb-nbid!`4?1%kEdget+f&uVtP=N=NNO)kx_oo{RMC20DVjB*4SLyS(4coXdLA6
 60.1118 zQ!Sf=88eC);=%#cStx=HKZ}9Ewe56f0E?uTHHDjomiGC!$nfvq-&ECJ`5rF6S7R4u
 60.1119 zXD_$##sr+Xy1FW(H|#Li$aD4A`R&^n9J7eXNOiy&2`;X#3-~W0yD~a4?**}oMjJo-
 60.1120 z{A`x5u9VWAM+2-EBtpU@JZ*eBW@ct}poL7mzzqEY?EM{x$Hc4a>(<-#)Hf>c8+vAt
 60.1121 zsVs1bgC6unxhXt4_eL)wmO;$SD-gYzZ;Dl#cXe?o(xv9>1coq2lmZ0_p)jMc_;dvC
 60.1122 z(W8l`=4Nv`<{NgH0)-E!V^UIxb1N!1(&37Culkd6i;DW-%cr`lw;S8rI<6<1qhY4q
 60.1123 z(fU@sj_4@w&`Fh+NUCriqC`m0j*C2`Xk^6#FQzJ|pfK@_lhc@wB^mA%-1IXPTPP$n
 60.1124 zG&O)&c!D}@8Yq`UX7-4K+&}a424!dLhAnEvrKRd797IhZstSxnv4{`$2O2L14&I?Y
 60.1125 zc=qtA;Og70F<Ln(DJfMxzIrNh^33J6{-jp$Qt{}_MwMDOm8RVmX(HZ}lT%af@HNo)
 60.1126 z03>5GGYtV@A3N!+crp&mQa!Gnf3Bc_RhpG0t`5TTjj1U$u7$C^{U8FaogThX5gq-y
 60.1127 z_M*QkFOLoz;wODw?9Jru;lV9fAS)-QiUv75JBJ50e)@z5%#r}G@G0<9pB^2l^!()!
 60.1128 z$Jb+IU_i%y_|SmYd0jqRynul-SKELg*sU8Sekz_N`20vm>Ak8SGCpq)a)SGPXfL2I
 60.1129 z{1h#~2oeiATDI{huR?nJP>rpuIjf5-V&J?3N_bS99YZTT<pkwJq^Ji40%%i{lVyVg
 60.1130 zkE3MzhlU(9o_C*|xP*JtM7?;lxwGRQ;iFx3bSKEq&&~W74+7yc{!One7>Aj)HTkz&
 60.1131 zVMb?VWhIND;etjciVfC`Q;8RBLH%y8PLtLzX<w_Td^)SMpRJLSlpOd-E=ERO?4e*Q
 60.1132 z<z#_7-&sjl*NSe0p28tCs-mK*O6%~hv9VEQ<zuR>j*d?8(1Baxh3j*eELB8AM8ZSm
 60.1133 zJv_c4C`1f3&iCdXtcIu3<Dl<GbGu6O7x$v7pZQP~=sC%abOCLC16Ys_zC~+I{o=y`
 60.1134 z9viT5^{4?r5^Uz==SQM*f{0>*DE70mDk_vvp^pCOe#r}Yqi3Im2_ie~E5@s|N^}$y
 60.1135 z2507*y*Io(Ji^rIUEJK(rJp~agOBd2Vq=xn)zspb;7bjiot@?fCEC?#xu>pICtDW)
 60.1136 zF~neF?O<$7c??9OMyB7DwL2PGXdvI4`FI`5LdM@SGgS!iix1M-n<2pPc^w<a*79_!
 60.1137 z+qGjOBZ~-e*iSjDzIs)tzkjWvp%E4GIx!)E5jg-z!f|J1Ag>VO%F40r3kV>!P`NAy
 60.1138 z3Q%|`*wNMys)($rAMFkmY7?w!_vBoIa`PMt?JM4run5a|wZ?3?ZM+EZZ?0H|SWpwF
 60.1139 zU7i)(XpaeNsUR?+ibrioN{<%wcj|m0CQ2Vd=n+&BZ1SE3U#UICaBe~J@RY28<CUq>
 60.1140 z#s~|rNhc>KG<%Fd5!(#nkmszgPK=M2SP!JuP%CR`F>oTrR5;lHOcilhnV5`iUQ`&9
 60.1141 zb%el|ndGeOu))IEh65Z7(@Pctxjjc$Kw*2yoTgrcgoO3|Xfa{h!S09m)o#v(^qCQ)
 60.1142 zNT)b9Q`#?yqv&>r7MR#&udc4r+n=BN2E6#1?f>r%k1_}s7x!M(kvSF#?*}zb8XQ47
 60.1143 zte;pU54}Xucs8G4Go@9`?Nu5Z8+SoUN=jKUyE!j8t#n~=1*CKeyKcwJP<eom<ArGG
 60.1144 z==x5pHa9nW?&Wwtdi8T~FbWF-%Mh-n;z47JfrS-?yD&93m;Ute;}a?#p3}2PLiRFt
 60.1145 z?JAns*ZC_zo}G=3j^f1$a}#61#k@X*g?Xsy>5-BV5fQ<S%#+j7N=|p{7i5cRCTP;q
 60.1146 z)2E@BPoKVM>*!n!C21ieBbNa<tgov2M9CU!=jO(X49P1fr0Oqzt@W77Qre77NKIu{
 60.1147 z?_p+Rvp@>?`qlL7231L&426qQuxX&AQUc~2!UJ)EI9lsjdw2AW7z-$TVl|I>TF5%9
 60.1148 zh~{phk&f?)xsm{B_rz^FR?)j`WCq3Rg;9@!96b*YkNAl46{iMSpq$@Sal|Gj(&3`6
 60.1149 z{Qb+~coPllm5$TL=qNR5X=xUb{|E>OR5}Tlg5y|#|Hyq&3Lc(!R<5MfdZ%(5E(tvL
 60.1150 z>sL9uZXJt+oSa-)TJq)Pr43-vzgK&Stf67rD30Ue>JB6ijmQf6Xi_ft>cjclCHge8
 60.1151 zEErdDn|1KLy}dE`x+eQR8^3w8P}H8*bU6G^9f*)P<`y<eN{Nk|%VT(>7ccV%qiUW^
 60.1152 zyb6f<r$|e|lA;AMxO_@M8OT;IhxI811O%9dGemxw0)!tM8}t9Bx0f5z4|Jg^1Q)KO
 60.1153 zGD%EN*GGl)nmk6uXB;~ZPfl3S0`e6zw=1Xry0@4<AtHKvdU{$6Jeby#Cr<|b9Nj^{
 60.1154 zlk&e^JU!X^rTSk_h^X~OGY+D6u#4Ak@exSrH9OjyZ?+v+s~f=m0v04({j`(x;mgaB
 60.1155 zY$+%8JuV&|bL2L7tFN<O#Pdj+BqklDUZ9|`@DQQ^)}u^G#<Q}%z8opw+c*C3V;Kbn
 60.1156 z^T&@L7d-ncpHWhz4lh3l?qSQTI4DlRjl0yG_JHZiM7RJW96yVWA>}7Nl#$g`ofp(6
 60.1157 zFhOWyJbzytL+xUbNNFjCJfKMB7XPla={FN5F}IA3!2*!YGrVj3^okkW1ATp;lA8_=
 60.1158 z4;d3D4bt2_-_^dv^VBvit*PN|X!6M&t+kzEl5w=_0Ss`G42-pkNJXRTPF}^qf%_<#
 60.1159 zsXD;m`4->n`PKDxgYR#b+HV0z(x2?k@@eWkm!>3S)2pyk_--cQWYPT3DzJ!yO78?g
 60.1160 zG=BT|&H<fi=?iB8O%&Erz|qjM<k2zJ<1&k&KKCy;jV@bMv8g#VHSwS0;=Y;y(4eYq
 60.1161 z+_PZ#0ldpIR#w(jpW}+^>K&Xu(WHL+r0IpcGcM1g)pyS$3BuKe7M&VS;4|xp`r5iW
 60.1162 zHg`uy<%<s@f#NZJ0!j@P?b!jZ9y-3x6t(Z!INmZaFz^JFg2!$HcNM-~j$}vqNG9@(
 60.1163 zg`GVg_Jjzdi6ZshsWN@8TOg)Mk&uv_zPs%*IbpZ@Tvn9<p1;k?wj9n#@Vz?e^*vY&
 60.1164 zgc~G01+w9!$oM)fjWhv}<%^$sc*pC5a$tnM@6c!ZEPHK@<q{q0DQ#_SeHa*!e~~Hb
 60.1165 zyPfG88yid9?0uf-an|g2tAh+-Vq!{X_%bpw%B!oZw-go@_FN^g8y2Z+YBF!_>^SRC
 60.1166 z8}ASr`ox~J{<|&Th<+;6c(%XLs-|U+lXXwQ`|NL}R;`V?Z|)MtBRaFc)79PP;2qq)
 60.1167 zzKHUo8kkE+OB-kc&;K513jd)r0leO&)X0Q{1SMfEt!j&?frxGeS_%pZ|I_V>33xCb
 60.1168 zD^|369$N^BW-5}1c-0Ktkv@IO45kDVuAL$5v?^1WyNQ8<`U6oxI)2;4LyuD}p^$bi
 60.1169 z(a!|c5y(O<5Dvl!cgADP{NiAVwy&?x=dkJZ#!!0oOr_~dm7h$tQI+234uuA_RUOY9
 60.1170 z;STV`qQ}Ial9KZE)YT`LvPYw$(1OVZm*IBr+s?1a#wR8&y}Z08o<Dz1wXEjkR5gC1
 60.1171 zCkfORb*y}Pr^y7-lP9jfZ%lUuG{CUoe|RcX=K;5dgy!Ei=m9%6VAdIdPX^wVDl?&|
 60.1172 zh-qzg)hsVPJ^c@UbSg4#wV;?hROTA_6!M06p#h1(w4NiSBE%Y=9<;r5@>ra$AXJX7
 60.1173 z;P=^h<HBW@g@VP3AvP;nfgZ*qaV(9;AwW`(qd0$e->>`A>|H<pIsW3pgXfSvox7x@
 60.1174 z#D)m-p5h<op02Ju6`z=~&%p0mCGGpEUXM;pta*BS6TW!<{0WcVzne>Ek;6J*jc7Vz
 60.1175 z#5cbUDAgda8eFzMVL+H<!dlx#1K<m~Mn@}I7#Uw(|7mc(=e$19iyRP3{W1{+1tkYQ
 60.1176 zf2sp+9T^!3X$(%=%ZQ8n+2sGP<qoLt8bE60e8Q6-#qNm2jM|_%xK{xqFRzB>=18_D
 60.1177 z0G8Ur!^0H#?ptRHk1ZZagf{HDZ+FUD2g>vsOqQ0HzrdAUS!`{0iU2Ou!XODAq1y~B
 60.1178 zXLj&upl!~V4?Rx6!>qf2zx(p#i{#eX?(99dQT^oTXkiAgeM(r;4!{x@_+UZA<6w~#
 60.1179 z2x>e)4nshu*Z%zZQvqRgwA#zc6v$?F_IKJ7kTfIQ%;71giS$AsGTJ)KPUaRCMK4~w
 60.1180 zAO^0-n(uLS%iYyZO<SAzY%1TI6f7bRaceN&)2OJZAK+>|c~w;^oeK+M6B84)6LhTb
 60.1181 zCAn(bDYgwj$jNX=;;)LCqVK_?YZCRniXTYfDV`pFY;SKrzuXyV2sZ^N^YinAyIZE)
 60.1182 znVPD)?o6@<$tAIA12Ep3EY&sapMhI{_HGPk*2DYOPl3fWUHto3?;aHT@Tn{ZH}~I)
 60.1183 zAcl7TcPh|A{b=RoCXr-f%>GO<HT)YYjDJ?Ox3{wpmz9^5X~21YPmz$3AI-ad0A_Wk
 60.1184 zv!g@C1B>Lz6Lp0&er2k^sv5b|V8Cr;ir;!4uPZ#Y-c6M<T|pR!HS)vvOfP`@bWWMg
 60.1185 zFD$f9_?C=MOl;G&=49BD(gZj19qgO}knO5f&LUoEsty$HK&F@&JssT()uu2)sH3B!
 60.1186 zA}skiPB&%%dq5y`6(pO%a3gkvFoR?e2aq@cLm(4&yio$SY#S3w!bvqFDKba>o;z6p
 60.1187 z6+|r&Zgju1yF35gi?0|cNP%J7<U~YP-;I8}lSe~C3uhk<!6G4D6#>}AD8$ODP`%U$
 60.1188 zXEY8Zb5eV^1t9RIDhmo^wzemV8xaV^E}1NKbXggj=BroX!z+i<7JezZoVg-bPegq@
 60.1189 zGQK6#Msb>U;c!NZQ#3t#7%CMR7RG@RaJbUlf5Jk<|JKL=b`o&6#$XcyaoX4WqhDY4
 60.1190 zg89*pCKJ)wr!C6M>q-}NwJExAY-(!y4J-+KG_&jW@6LCnr>E!YS{p7(>wUh*`pn7*
 60.1191 z5IGp<7cBaX<6CfnF#x5GxDKi+D$Caw7mqQYJd-vv8UsPz4z!*Qd^SpDQ0(B~@E#b6
 60.1192 zkM*^+_?~;yv$LAhGc$>X&0Z65mDf9SeFcTmvtNp0zHmvrx|s+2Tfg#Ge0_XmL1gSc
 60.1193 z29x!KnD{=d_}8(>MfGxglIrSs;deOClmEO7cO6;*-%j#i7Or_64pw!uJfc8=Ur5Lq
 60.1194 zkl52&5a!+S@s9^rx<Ae$vheZobL*rBkOJPc-ts=z)%^~aCo4n4CMy}nUtU~P@&fTi
 60.1195 z9~JHdc<*oPzdIq5-I-dpSFc{_z$Zvhh4aRcrt|<6&dhtaa|(kxJME%x$*55GNAmje
 60.1196 z($d_gVt#sgn@$%8#w)aPi5{<J*Z21`=~#y|gMxz8l-Ik-{cDJUG&&C1@en5CwfjA?
 60.1197 zn)Y(=3HEO=B7jUM<CBsigZ&p;{TDWueufe^d!2qd7?OSU$~Z!7qocB}t}N{1N5bBE
 60.1198 zT`jGGM)!S#NcNTs$#&JV-<76aKzre3!$p}Do^sU-*$ZgQH8|&Yf}cD9%Gun@?i6s`
 60.1199 z$wsDsq82-Iwx6wJN6C-`A%uW#Bs`4}<MO?}N*FGt5}l>_0Y~3#9#DzDClL&cAR$Ne
 60.1200 zIm;~pK{F9e%)>;@&8<emTMwLHsbQ<%tsn4;mS10fWCLD{00j+=gjCG$&oWrAczxel
 60.1201 zZf<WE_GW7PbC(+X`eZ|Z5Xc0k?`C4A*7lb+3qfZ0$`bI1I@OlLXTZe&l6n0)TEE_5
 60.1202 zZgx^|c%6a;1K=|CGOzc)yW1-z^g!_dpo%wvvv&mZ^rxh%x^((uYpee}@W#ZuiV6x*
 60.1203 zLT-Px8uSV<P}==T0IeZX2V0KH++IeLdU~$*#3qf^mFhJ-b6)F9_}tsuJCK}AgoTV8
 60.1204 zq{Gf$e&0I#31nnxsp$&{*NQh);bV04Bm)D3lAEKWabzeXZ_VM9p}+6t@vvAcycd7f
 60.1205 zpTs^fFfd@Fr>{Q^C;>011jK9$4mt`u;QMh925P|IqUe8jD|K>liTApplnRM&_PIO)
 60.1206 z%PHds0N2Fv@$nNdU}+9>jg{u<QgT|&UannW(71qtR->Y(u61#BwG|N-W;z9aaj0{0
 60.1207 zvQAJ?@XFZFuf@sCEGMs}MHH?#hmUzr%H|nip!nNYGhUXKmeD2lSfBYFO|rSmQLSlc
 60.1208 zXt;ZA&ER(La7K*B+21G3A|mP2Ks`A<c<`XXVEy*yM)v0BhAL%@JWzbI=>w@iRY!k+
 60.1209 z@gm&za9$k-Oz+d}gmt*BM<_PA0eCf){-w88V1mX(z0XQ|LF`yyGpYw^vuNysXV3MT
 60.1210 zaoe3yx1o`H`?lgVPa(B$vfMDUtfb__RJkD++*0Qde2UK7g2z%={Oc$Oz>HOLzY7Uz
 60.1211 z;o@V_J!imV1#oBG$<m+h3%-`MKuS&h2twO{?}0d0q5R90OUi?5R^oZ40?^t3PCmB=
 60.1212 z5Gba;zP^E{r@(DbEOj1SEAo5IN(q?f+QO;qX6xcg8x4)bzN^!nIq)!w*9Skb7s~X%
 60.1213 z^G^TzRjtBMb>txoC#1lw(_b%N7Zns7<Y2_Yo5g}`Opqv21!e#rLwT`K*7D>VWRDR4
 60.1214 zxbk|!m*TX3q!0SIihsgQbTyZjme!ZK5WvuH17*DRH7BRTl7r|5a3!7pdh6A8@wimz
 60.1215 z!|9}igm4-xpq4G|<{E2f;jUruXo5x3vHF((wEG|6H4zX23H5IlGRAJWYy|*yt1n|G
 60.1216 zEH9g=8yYSI!ad)I1_#xFk=4M$z_1>bbFn>L+1nec1InE+)7VM|DA4<A>guno-yj8!
 60.1217 zl>MHbR_E(9H_+ElXJ_@1B9N7pJvcZp^7im(;wlMz@%2Z4f8_4k8m&8eaBM8Ddru7I
 60.1218 zU`mbELkkOw+N1j~LqbCSGzycZ6VuYtdU$(ldU<=xJ>|zkM|l_1*4FmhpxFz{j^7Ul
 60.1219 z@99%}IO~Z72`4!@x#Ge7`)VZX@d;f(QW^9xaf6{z#$aM>3`6hQIJSl}O0I#<(XXkk
 60.1220 zwRLiKragMW^M3sU8o<98ufM-Jy$>IA<mToM0A2KO1js!tEiJVcAo1mryP1WB|1{~=
 60.1221 zJ2bZ5UD*zVlKU}mvON`WGJ92S(0oKD>cfDytL)z50F=$1g`M5NP=CMbBXY6(U>Pg!
 60.1222 z0W&G&W8PCoTudhHF(P^K`2hw-<wNjK-mfhmYHI4}#6%4R9i0@ogY0-^ZBUTZ=aN^2
 60.1223 zlfi0Se?2(FF*M#lX%MZA@545vHX|j+9mUZ*Ndk!U9tY-A`5q*QkFUN6=GTEs_^@UW
 60.1224 zw+a%MlZzB{-_!f74mYwFVP=k`-Ib^@?S41~JlCs&iQVx0{QLp4Dwsz)J3EV@#kIAG
 60.1225 zFNFJ(e=SF{B=FR+NS^szyu~w-p#W%t1j4fB+xPF)d=7tz{zY5V0IxLpJ-7tkSA!EB
 60.1226 zpEcXr+1nR~Vv!`W+6smKRCXwgLFIlUY-D8A2G@Wve|<+tNLbv}*|`--pEC@`C6mKg
 60.1227 zG84}Ce(;h02_vk=`Z2RNjxTHe{<TYl_osLr{v^}b>c0F^+EwI#a~PUXV+z!NL95rP
 60.1228 z?90R$RLJ-G%s$CQNP1vf>jQ+(_KmR37W#_#7Q|%EcD(*8Iv(1rm{<WYkYHwEF-f=g
 60.1229 z0jOu!BDi&SM@C9Yid!KmL*(hsR6YYEBM*~bQDNak3-ei%$n_I3KcBBA6RW*(;mObc
 60.1230 z@72dk^uM3&0_1&))@NI!4OSwdUV{^@jux&40RWFzY8o02s-a=)(f=)?v9!uWaf&QB
 60.1231 z0XugM0{|@Z;pwUUB$3yjZ;o5(g^hN$AJwI#q+C^0Rn1@Ya)+d*>W%_@nax!q#^Cx(
 60.1232 zWQE{IVJbPGWl-KJl4RWu{yj6J0Vh?rWM*a#19YcZ9@c#aq!&9K-TGcUqpC36@|tPi
 60.1233 z52!N6DyNDX!q=}~rvdq8c5{2afVbU<BPZ8S5Gqw;Ax7?VAi){gSyWh3VixwMy0Vfn
 60.1234 zF2OxSoPrxWP<+HeJ#95d2nv@jK|#t^*P_Qk7nCQWiF%=%Z$*NR^1RCPc%9qSbR~to
 60.1235 z^=7QJq(pvsuAZ~&!;|APFjS7fk?%h){4+N<EtkmR+3;pnwQ%SEasd`v%3?k_%VB1J
 60.1236 zo6LE23C2iXUfzZr4D%Z>9`mqYjjwM7Cg)-hEMRjDf8cbFen|w~V|@AYWxuODaTJ|a
 60.1237 zrOEU5y}9q^UV^UDI^HG3Kr=nh|8?mj+WKlp5dhR*Ao8ErYYGxkSukdlWqtZKi+pjv
 60.1238 zjjcu>@BEzX(WAH-z|+EMz|Ppp$b?1J@B#{(0P_~E-{?}9?_uX=N<>WT1oye}0P3m^
 60.1239 zs6{u20ao>wFY~<sP&l$OGR~%?2{_a3ef=nkcLSE{<XGM8%uHRxOI_R3pGF)gU@Z<N
 60.1240 zB^E49O(l7l<D!=;@;xV^2$9aE1PEyJn`s6@3Z&=*7NweAAw})rawAg+u6-pbob#HL
 60.1241 zkT7YPRkx0&FEvT22ZYmthnH8PKM;-?%lIho0eU7p<$p`TOF@yPsoEtgnIc5S!O2+|
 60.1242 z6&B{fZ#hJ|k(EVp-E}oGHMQ|~?mOQZ(5ntEdTl0^7w7v6AFlwI+k-dX9M`fU1@kW8
 60.1243 zvN`e#fKh*m&!1T9!OHEfD3V|K3aN?p02X%OY_(Q7GvK_|2GRt$;FLn^yu3VngH9!M
 60.1244 z-0H{up;<>J>IkCyi)AK*TUu~erf(G$2T>PZbaB(01IR%?aDeC%gS*NcWlM#!7&Lig
 60.1245 zYbz<W)zsIQZvp@W@a&&vYGI*~8WR)KvGi8DWfcejKg&<8yR-HACA#%&x3B_JR#w)5
 60.1246 z_y7Ek*P{UXzbI{J5ZHi|4%2z<by|cYT%3m-x5o>u0U=OfCz6SHac|%2H+u$OO0fI`
 60.1247 zRO&IXyv8_$g!!rl24y9Mg}t@a)y$b9-fnppqJx#CfSo15y4sF<3l?Ac5kks?o*Q}u
 60.1248 z=^^2sz?Mjy;-(uOUlHeZdEwN-*ZjU$H9x>(o>Wy=tAj}XyuH0G{OHl6==5~`wSmuE
 60.1249 z&OmpireCdraUUY#FlyV4iNX0vub5#)OG9I2ZDsX#cXyW=n3z5SHofFQuu`}z24t4r
 60.1250 z@>3mp-(H{lTkfqUen5*)NN`;42oL^uyYK&5LPEj<n_P699f&?wc6Lo(4vvDl%F4oI
 60.1251 z_)ZX5gicy4iF%ZAKyOt5-L(qLd0wWl=h!Bg%6knB4Mp&Q$jr=4Egc=5I`xYW49TLt
 60.1252 zUS+~$4uemqc}{f%g@mdt2UBQALlY7vgnrf5OlnPxj>f{h3zL9nQ51Au|L_AiC2qKZ
 60.1253 zmx_vtmONeD8!%_)4h{xuz$kON@BPtpbv<<(-YOl@6aD9SgSbIZ5VuJ~PS{66kH7#T
 60.1254 zk9*>wE3}V~yM%f0Jm%r4ompO9ehZe!Oj&WLHTTSW4N<ymYZv4MuD9F)9H_HLnNk!u
 60.1255 zdTKRTC`e1K7*Q`siUHi%w^KlT68II3xk_>~xJSaYI4J|<+{C+T&Tcdr+7Umn+xD}B
 60.1256 zD_?v?rdOxOc`V`L!Y!xQgA|Y<;!RK!81sCS2%TOtIjWB8f8ZOS_&-k>o}Xuy905iU
 60.1257 zC)D*0T^r>c%8wsEUW`qGu})j<_wx5d7-0p>M(_rU|1aoMxY&gyPqZW>^P?^D1Sms&
 60.1258 z__nXVx2e}4f`_^RapXp5-`(BWC$JaK;o;+%wIf$N63=H0lBcM7%$D@P(sIKOsE(P4
 60.1259 zy4*q<I=Uh<0jCarX6EAF-oXD^W;i<cajR#r1p_FQD7ha&O<bPy*HF}p6=;)VEfeEu
 60.1260 z=Gd4@F7O2+ho^3CZsyU^(P_Nfb*~bP&`~5eXqcEHT;UwXckkZuDpa?v99Gy(KMS3%
 60.1261 zwiKeLr{@AL(YyNcc*7mA&T06^kD8C_R-77YIy$81Dk?aTpZ}g7_mc$lL#LSWN5Rn0
 60.1262 zKe@X47;Ywd`px6;i{HzN(yw3y-d>$p2Yvg-&qMZc%4&AVEBb$i1O*I<UkL)=<l+g#
 60.1263 zaLGSB#|Ykl5l?gsjL{9J2HE8uG%VtA4ayK7B}xatB99zby0A)tat!x=k3;q`bamA%
 60.1264 zmedY-04LaNLQ+ycV}bPuf;X3vKYbdr@tlFfOru2081CHi-T&WR+4JYmnT(B%y@1a-
 60.1265 zhwI$0qzk#r=e}1K^E#2K7umJ55d+#qHs~JK(dA+g_LX6yOYhjvpI-~!EVML0D1Lr^
 60.1266 z_RpS-%uK=C{vozgWwrJSB)N_|ldPqMs`+Pb?(XD(`30QX0uXaS@7`geBK5j_+&%TD
 60.1267 zgO|XPZ}0$0E%qM7i_DL;`0bs&GKwbRM56{bc<2YPj;1X3x4_TN$__LtejR0++58RO
 60.1268 zI04SK)2TFhud1XJlO7m|*Z^?r4kuGezW+5gmJBBH=d)+e+7%QOY~d=$@MZxuq}AYL
 60.1269 zF6ri0w+*8Cga5x<_gUaCrLV585_u-ySX&o<3JJNV`07=oAK=<YiNL#-hjcQ-)ihxk
 60.1270 zrF#fG6m9#FiK*#Mv$C#DeiL_YCV0EXxfb8q8pTY}hVGB#ADvxXR^ifIyxQ8@HUtC&
 60.1271 zrDS<?<F;^yxZCzPqp6&n+-rck{msqI&xPBE(}nWI;C#({_wK2~$^6zOZ@~1Gl(2;4
 60.1272 z=9)*neVRI$2SC(T*!%1QP&v6d#l^a|z(v65ZVHgX)Xq*%?yE8n3oyj%5R{RTff|H{
 60.1273 zJ@hduYQmtxD9~L-M&>Nj|LzI19sRIC-8jL20Woh0)|TjBqy#jJ>@Qf#DBQ%XvJ^PN
 60.1274 z_ZGie>7qZ)1f)zHQEpnPRST;aM-mrJ)J16$(j;+;8r&py!$~2(n{Og;Z<#_?{l*$w
 60.1275 zVEls7-kO`!rVnrY3MS(O^5QFg=5Ri8TaEQEC-9og4SH->fFzxJKhe&Cv7;v5NgA~H
 60.1276 zH8(eR4HwaskaCph`8!=b*I86?A7HB{4jvwrlcK7IMw$C)_OC67f`OUY6waat_F%kj
 60.1277 z{I#dGtXN@TAu+@Ou-wl0o4b`&L3nxjn^gH{+?{p7!6*|e-5*ooEeKSosk!+9nV26b
 60.1278 z;~&4ZKKyjJzq<3)$yP65;6V?~h2GxYBB0@Zt`DXr#ee$L4lL7{&-EFr90ktEhp4D&
 60.1279 zFE1~i&!0bU1Cw$}rUn#>ca`0ARS6Kz34oMS5dpEW%5Yo81*i?c!0FBHt#_u7JKL{?
 60.1280 zg;u3`XS;A#)?4!bFm7a&(m2F^IIPi}>uxqY${pFtg*RS2?8Arg9-z<(4Hv2{hkfn^
 60.1281 zQ9k)P`pgEh%OAB8DD}~kJU&Do*}^k^G?N4vC_H#IUCe)e8@}+cybIjsCY1H%3l$Vl
 60.1282 zQ^TG3R#!#k6EOsaYNag@`4CP|0s;L@iU83zK3?OtIg;G~0(<}H>eMz?sRA%!Dv0Lr
 60.1283 z)##&>6BZXIr)BhAoH3;V6AmII_>v1GBQLM^21{rym+>|}F)_j;j#a0oXA4Bw70|x+
 60.1284 zPXFSkc=h$?me|<Xeg*?`)Y09&qoJw!%R`t<qujur&vkoz4=j~vSQi^&k_lg=8`xi7
 60.1285 zUNS*%FAj{m0XlpZ5D-Y119a~Ip3=(A?QHPk;^G=84b9`DqjvCT5B>l!&J(B*9B#Wq
 60.1286 zeSJm4QM_QrzrY&=dO%K!cBo~*WBeapHtpjKm(;y~*vGts6=3+-E>bdk)CwOdaPa|j
 60.1287 z3}GVUs$i(VYC`~MQRKr@@Z5hj_O`JCf&kUECbpJQf5lj&3V43;ae*Bp>KMd6E+@PO
 60.1288 z64~@;Sb2GQzZiSq1FMAu(Z%(m1)Q9mcx4OI(&idiZBCZz;zLcqDV4hK&qsxjk_)-9
 60.1289 zIQ|U5ngs8*=MTs}A1;4kQaufyy1C%K5wf4D!Gw&er>U0XA|md$E-io$vdO=GJ^A|8
 60.1290 zD`ixr8Dcl2cuO5Kvz+y>FF)2~i24>KWMq^%fLP~wGvD+9KF<KCb9Ces^7gwpMH}!4
 60.1291 z%M3W^R{Qro<z;16;Da^|7nhpJ<Bj3kO&7sGfBwkAIsGrRwa=Ifn(EZm)MSF~z*I2<
 60.1292 zS**MdoU#Udf@fH5q2P1AH@C(nP5n3~*aZmECV=aB6Zu$JSPj%Kqgg5|DvWG_%KEQ4
 60.1293 z!u;N!KYFzxyQQV2%&ICX+o&v_LzT33|E=_c7O9SsI&-E1AMHCxM<id`@@rYu5;l<K
 60.1294 zMB-wQTUHZCSjBS)`u+QNTUS?J>BHfBG02O!0hZjvrL`i>=&Yglik6uJDewcu|I0lI
 60.1295 zEBC*<X@HMV2jE87jC%AZVel$tONs>V=5<IRBGPOitfZ;AVQXzY5%vJB>Nni#vskm7
 60.1296 zn@&D?1l}>beDdT8OXYzi$7lIH`b?isSdbo@W}YPh+~JoXUC^~}Xl|~#isx^dh<Dv_
 60.1297 zu3XYUWMt%LA5lXp&rd)R!$&~0M`u6RoRqb-3o#*}8WZ7b1xSGb_aGoV1i}0g77pE9
 60.1298 z9GXrBV?6SDjE~RB#LWBzX9eKG3;3RS)rBk0SiEgkX{o-xmR13s-v>t3yb}Zk6!4kL
 60.1299 zlDF5pq@qG;bxuoN9Vi_5HoYAHDAneIf`aeR!PV)GS7j0SKy6-L2;B)2FCX7VM@Ppd
 60.1300 z_Zq3L$%8;~C8A+`dq^T4TlB(cGm3=o4?pS9c|_fNiiAJwdou7uFa~%)8;|W}UcP(r
 60.1301 z)f^dJqvk0fPbuYxMi>FD`1a`8D@U87)C8%61h~##XMaCyDl2DKS^uJ&0=6&#J<k8Z
 60.1302 zqw?Z{0(977bgdk2KhLdyvk-w!F(#ea1r)o>O_oH^{Ulc1b#;AxR@}4mrBHH<&F$?Y
 60.1303 zcuz#m>{&6JqJ~IqZ7sLG{q8ngD72%qv-bDU$cWOf_I62i?b+hu;w=me45#zBgoI9r
 60.1304 zmYbTFSEF_BW{lmi#jetQ-{3p8*iA)2_RBv&2f8k__!f^QM*$v$Z~11_*eg^jC@Lxz
 60.1305 zC3l)V^TfOtq-kI<M8s>Sl?iN)SSF8cqTXe5hZNHj%n&ui*3nvjBeO=y0l(+bDm5Bf
 60.1306 zs0}3Z`gIv$!G(|LF8J~y014_45O~|WiRb@2wwT<+_UT{jDP&@h#oyn&nHLLtDL*^<
 60.1307 zR9q1fW1PW(cPnT}Q4TalU*HI`0kX%-@V4XCy#(-tO-f4IcXM;&m79~pfyioXOt~kX
 60.1308 zm6H?v;R9yuEf6Kr9YG=O@0wV&Dkxq8eL|HJ`8xjr+z6bnz4i3uM7pD7W=02Bf{Bt+
 60.1309 z0)PM+s;e6qv?p8^IpN+J&pyjLB(dqs{@vY`8ypzmSJ<K#64LGX-ZwN<c2eGY7lHNQ
 60.1310 z!S{av!EWKKJ(7>-<!o#F`<a$DHcYsa;NLo1z+C*@+cVHJFks`_*HpFR;^vNL`oj<K
 60.1311 z_Aw!0XlQWof8jKg$~SBY1DR`P_zOm6=0}yKjg30XDPo>S!8`!p$>1t7De%VgTVG@2
 60.1312 z?6BSN@bJ?*zMIy5?`YP__pr8yAWf+2;>|{x-y6ydZToH$rHp$L|Ev3h&jYKfo`s($
 60.1313 z0uVH3Wo5nVj3gxY_VB<Y6?CyGZ)<By-rlwmOn*%XiAzWXhK0)gtY`!3sv6K<ysL{#
 60.1314 zO1$kRd?^Yr2Hx@vd|(LBpeWcME~iaXt_GC+t*9Mus^8upfnor#U3H1+0Qo(SFE=t<
 60.1315 zMZC{SaKSfwczPya6LDmf7)KWYb02#@GU`-SM~8{30F#J=f*cBY_*BPh?@vQ0i12+b
 60.1316 zqc*4(XhmTj4vxi{-@nJ3e6P<ew6u~P)YRe=zka3mUTh15JM-b;Q{;}u+ZtJ0Gje5q
 60.1317 z`Sb~o?sb|Lzr{fEcez9s$3Io(k+b2C=<OsWCBOLk_?WGa;H~RCqPqJGZ@X{9iCu8p
 60.1318 zuqW`tQcr4hoCzwHQo+{*MvW`A{^X^Z%GpuEFbgf3LO#$I7|f9?nD`{H+g@e`vxG~h
 60.1319 zqrAg(LAW4~jLE7apmyCQepr2E$E=T1%NIBR)ks1_bivQX6~|*Wl7#^9lpd!vfOj6<
 60.1320 z2V}^a6QjcB=IGb;|GgAzHFkUj)O_CZjum%`(XTv(S6EZ<X_BO_?)Uj120=j`#f$4a
 60.1321 zh18OS`1lL(<Nh}aLZu}oHX5Zm36&<D5d&a`lEUeA-^hxAc%_>9Gc(g@P(UK$<<bkV
 60.1322 z(UeTs!^q6WM$lw1g{Kapr2zr~|IJJdqkY$hCznU}wH0bh<&xO;<%5TTn-6{X)XNnN
 60.1323 zaW{}-C4tCjXNn362|a7H!NY`6tG1i=uCV_BEO7=b`q6AwRu<v%wT+EU1bS3^#~zSx
 60.1324 zvH-VuwVON~ZB+k{st_*FFGT#i`#dyFmN=Zn_6KNL_f=veN4RgGjzHND3wU18CbGDV
 60.1325 zC>|W?C2D{<!?dxSRls8=prE2YFDxiHc!Y=N0$v^k8Uegf6morV>Ei`-SP>v*m`LD|
 60.1326 zPEx3(rlyu!t6%Vo`=*IaCd{wfG?oR{1p%9$mZ1O-C#Nz!JG<g#oTBJf70?i6{fVq{
 60.1327 zc<X64_Cn^P@qWSKC+3wNhs%H2TP~JSllpVrcP4k!msM<M*4NkR-2K6#>V0_se#G*j
 60.1328 zM-AY7l0F-H`QL1-00C_Pft#1;HH`TUBy;*Ev1osCS!_cTCcI^3Vfk%xU4$%dWRz7I
 60.1329 z7pGd-+Ujro|Bi|jA{n^=A>LlGAO&m!?+3IPblGGIoYm+2sr#etD<?>&m(+0lMgR>G
 60.1330 z&LQRN>x)}X?(hGv9T-U&cJ^{4AQ{*oetv#6ASiTc5Emdiy^0G9qj<TwSJ9u}^VF`h
 60.1331 z(<VHWK7nYOs)FH?FV?`T(Lze9s$b3Cyb)UkR`210&#}S{oWw(EH#Otd_l5B`O!Fxz
 60.1332 z|Jy9-`B)&Na?H%l^*;+ZTljg;tnco!st<fhV7UGIQItvM)vJaUpUWe8>sdr^L?9<8
 60.1333 z=M?~hpJ#h>vtWrt4f8qtNv5-10BSvQ_2#?dN=Rj8<>5#Iv!<6Hc#>19w5E;Uc)GBV
 60.1334 z3HS^}APSHflqy(*c>`7lY<z1V%zG7zqaiqgPe-9Di8+r{-Q7_PaYHCor=I~S`{@(R
 60.1335 zMcM$C=OmJw$$-7lffr@cW+A8tayK`QUUBH~{5%OqsVn-auCUwR-#sNIC0;+aKzt1Y
 60.1336 zLBDae_ybuA{E03uw(SKmwvs3RdCV-3fr5f!wxc8G3ecAYz&<@q&8aGY9~Qt*8QP!&
 60.1337 zY7rEB_Uz~f7_(*p(&$h5`Id*^zmEY_8q&<y@$A}RdR|x7)RbVynpJA?0Qb(6;3ll9
 60.1338 z`b)=pC)IZL=JHsdnu-b&Oqsx3qbu`gK$^k!V8A9|2!M=?jg_~ywzPSDE)Lp3&?UYS
 60.1339 zJNmwB_Uy9{M8shv9-W%1y9Lk{v(aTsMbu`z;6}iCom)rLXS_g}76>ojMqsnp04MeW
 60.1340 zrDp=Pa06WTsG_nG7gv9+;qHG};%>zXN=9FN9N<Y|GU@#)PFDHR>M}LtA8`LTLJbW4
 60.1341 zQ1?A0$#EGa&+?RacmYaE8QKpa9bu{06g6C^P&A}fY$bJPi;nUxGNLYU#PJdckO5#e
 60.1342 z4VSmJdI>_L@z6_A|NnNn6x8Na3TT7>QQbj9&;?H00z~jG2lCpd$j~kwMp438Cu5qy
 60.1343 zk<2$kD?r)Hm%z~ZxcWyCxlIuY2}<#$kR-_Fl0>FZei|)K!H`HRmx%M`)qk5cbT8iB
 60.1344 z=X^}i6QkXkIO0huP_08KSinB?9D3(oLyME6jAg`KkopEC;3rhFP&w?Pl&#Gr;pz6&
 60.1345 zS`HZ_nAhw{z}E=gcmKN^Hd6Qmu}EC-#SUt7$YITnlN1JDrU}hZl+^?$#y-sA3%G?u
 60.1346 z5gZTNXqD#urn6AksiC1Phw(FL9*IbIDjFaa3M0G={@>S0=69h6paw8!eQHIP9`ItP
 60.1347 zG||`@E8nvWmMo=c!d^vAzGp-qaG53BA029y@%@=n1A1M6tix}cUibgqJ41)}mY!AZ
 60.1348 zZQv_;1|z5}nv(!hx^6w_bEZ@O;f6C$ZUV6sUF$!J=bJ=UYA1O0Tb|<o-3fe#r&d;i
 60.1349 z3GKP=ge9MnNjh27vfV;|G;45!&l8;>^{ke9rhO~9|IhzGtA@ZtSxZ2T;rMw@Ol46^
 60.1350 zMhE>Bm&C-dk310S*DS#Q|2<RSNF@=vIF|Ilm7;h@$>h)PdmB>kbtF6%aMuT@CZ1vJ
 60.1351 zQ;R_Sj5Fwx8^PTxlvGrbU?HXx+}+*H>FMcReNIiqcGz-!^yrcLM^XWkw1k8SV__5c
 60.1352 z5=<?;yVv^fPFFG3?QMe|zmU-R18nRmjhv_ZU#hA;{kMm(xM<}2d{z?HFudmI1t!|=
 60.1353 z+jj&ST&oOSq>{SuOOg$_iamO4gSzA!3g1KjoQY_<cM$spi?Zg!^0G-Tyl36f)nx-;
 60.1354 zfUV8Rk<P8DQG5S$X+%L@zUbe1>pyciTd^tk7H->oe6sb64i^{q3WzH~(uXg#6%<M*
 60.1355 zCnjpmdSWO&<LDInPy-4I7&JUR8>&J>U*-k|BF^=@K`>7Uc%2k<4yN)cL_|cWAr_Mi
 60.1356 z{lej!rOrAw)iLV^UtM=5r}yTYXFvC^jlstkKmdy^G`iZ_*iO^Fc5-?KXW?J58#Ijo
 60.1357 zB+czo6uUiX2fy_`^i7YA6%ZC53(J5}M;LA{);Tjfdp?kiM0(9$6N?kYnkn#hNhBe=
 60.1358 zU$fusRsH^U9C$M;ZsKHli`(kg6gZ0mpSkXpm6avHa$8nbHj3;keCre_`$QmWpM^(7
 60.1359 zO{^SWy6Ec8R`tfwFIc;DKa`Oxqa8UJ7K7u=q!Bp`H6aC+!ZiPX7RV6fgm}z6gVXMf
 60.1360 zg~3JBG&}-v;M=2Qd)oc3_;I!LGt}$w@Nfn^63ckAIGiUO67m8ou6LD_2vb5{9#cV1
 60.1361 zuDC8+$r)$|R=`}c`uh4AHKxZN!a2FQoV$Pj79kdaL#9jRwRajC8nQqHq@)nL1AZPx
 60.1362 zdq}GF2S{^S;wZYRe?{uWY5Vidwn*YY^=S(La34@F*2sl#L-N^a>gknm8@Hnj!<Wv%
 60.1363 zBN%{pbq2O4fr^Ui1Mmp<Q@s>Cgvp2_*jO80KyUAEJe%R0L{(ZPDez^s6~G0PaGUcC
 60.1364 zZfli{q$JJMV5Q*q@3&YDTl6-4qXFk40ZOO|u_qJp%6R|*&1;~nEU{2w95e@~Y8a}j
 60.1365 zs`?+v)5Y<<U2OXV*2*N%You^przAkSDwciN<f3**2TM|O3;zFZ-@lzJ)vd3|d!0T*
 60.1366 z0*#N4+W>`ne`7c^lh?HCgU{i=b1<S&n&k$&20A)@HI<c&@M+HxEN8t>Hb+<gWq*m;
 60.1367 z(CPDL@f7<f{;M?-j?*6p_ul6HSODPjk<vJ%G?Xh$lOTJSlFzLDdf)}*{oiEy{JTBZ
 60.1368 zZ~ysokc*3pN6Eb$&VI!V{fWWK!0;{O^Jh<HTG}-?3ybwqAn%$H4Evwq{de%-KH^hl
 60.1369 z`e?oP*MQeF6%-VF2zORT1fXG)ZKA(tfjD@1Ey{IjnZ8;MXW&Ur&V6_10g?3v1#VX-
 60.1370 z5A)YNya_BKBH{~_Qt3p+?s%c<9DKq%ldqWh=i9e$sX#1v!0jG=NJvth9z2ND@hp?F
 60.1371 zvn#m@!6GSv^BPP6(HXEdzmSZGj7&&mH{5&ibrc2O_rkn?->cGTtxuXQsn}(y9aYNH
 60.1372 z&b9|Q99Ot~P;6}MsMQ5c=uccvO%@iGcq?)el43Myw$8r#880uH>*fe$e#mnFH^-H+
 60.1373 z<D;W8U`Dc<;Dpgk|GP>TcXx6%B_#@1mD9tO?iq7)bE;dr*}6dlBrGEGfPh8o0M4-|
 60.1374 zWYJm_0c*}ZaB<<KiJIDD+aK>xMFD<zg2kt(qN3tJF5pC?tgoNW=W$?EXfj!8+Wi48
 60.1375 zxKQnL>2%#y_S}|Y-!*AN=l+!M!4I?y->Z|Y*!cJyCO=XzvxB#6cz{{Z+Q|ag0<3`A
 60.1376 zu_6z%)Yw_VT&(#LMbUJQ!x?!X>ilZ-9!|<Id+W^+oUSTjV{5yEHZLkF8Wn<P(Bh-L
 60.1377 ze{r~S2E`;L<=44vjg|fQ@xyU>mx-Bq%SSYGQmMu&EIT_}o;{Y_|7J8|c;gqsXr{)x
 60.1378 zVSau-L642__WFFk!L0X_1CVZ~?{!sFRe2zz<&N-a$@1)x5v50lh6_zE6v^Vd`+&Up
 60.1379 zPA23wfPh?FT?I0I&$Ly3@(zM9<M6+`VG9flbgQkcl?8rq;P~{E6&ddMo9hb}<7*&#
 60.1380 zZ1x31_`#UeU|?hO!DXYI!Q%NRqwyX1Qd~|sZS97;O!53*2yytraZgW=(i31@m4VNB
 60.1381 zS69cI^uy?YT+FWo_yZGwBYI`Ixt(YMeSNaD(BfPEKEN>FN2|>Ht2(abWo5_IG&IW2
 60.1382 z#R0--H2B>%K7ojyJW+?c&R~gq7F}LnpNqQh>E!{DP6^+;sk-nH)z{QaViktdI!}Jv
 60.1383 z)g9%$io2hazS8VXS^I(i|8fD&UEa(!nqPs?4%%<IX43{wwj2asWA?f}vrh+$v<eK|
 60.1384 z1Tzy;yseE*Jg`ce+{6l5B_%BUPOCl6^z`{Jj;ngS=hhk$U8my6h>2|w5TF6o*l*}e
 60.1385 z`x~vbEpT*ai8oH&`us6^`b4O?8`#jvA4Ku@<%O%!?W2?e=mgloG6{vtd!pv$<xyoj
 60.1386 zFflPjwFu9DcUP=mT7WZy8$FNn5<R{b6)}04c60IaCNfe0<el(-3v7KM0`9r_kdz;X
 60.1387 zoRBbI7uYX$mIQb!I+f-BvlSh+-UmC^y{U4;Vc_9sfdFla4i9foR#S7aKVBcCTJiw%
 60.1388 z?dj>+2iNm>bl>Rp>(}`0_9-bTH^424r3rgF#W{P@($m{Q;?mN=hjsR|C1$mc47@3^
 60.1389 zI$7=oQC3t}Gb0CdbV#4V>3q9jQU>9Z{K-<?^U41HViX8O{*!j!-*#vJriJzo7>Z6m
 60.1390 z`q$Iyeo`>~C3QbXTqY1FOixD=;|n^K%42*9st7{mc;>N&$I2*|g$&PgJk?{UWMWf-
 60.1391 zKLxAdsmRc$)1<ace`0MF`=ni;8!JwcHhjD~JuvXOdSAfO!fjn>|C-FzKQuJ-obx38
 60.1392 z^z?KfB;?+y77aapad!pK5v+d{GDVx2`1!y6EpNT6%9~VIQ?rU%Dpbv9nJU%Y-~^gM
 60.1393 zHc;H?pgykZ6$?Q%n?aLRS;Ow>lp*=%;vxqx4b5tUROmwi{T83;b%2CJa5=HC4<Blx
 60.1394 zqND4gBO<DB!=(q#f?2XwZs%iLPy&GSaP|Lx2>S}Cs=BV-4JeH?3P?ywH%K=~iFAY1
 60.1395 zp+O1hPyq!56r>xZOIlDsN$KteLApEd+OO~T-+$cu-*Fj(p#wPQ?7i2V&wQRW=Umgc
 60.1396 z(a)$)x-_fZ-#z6YxPOB!>yml$jSMipkubnEPv$4~69%%h@ltQ+B^}-g`Ucor)6(Zw
 60.1397 z4S5v}4Z`A>Oei2Q@K!OJb&R5{LAgZ-wNWW<h)fd%nVXxxIYX{BEV*1CDZB*OJyl}#
 60.1398 zZParpN5yw(anS?rPm@sT3jh9HqzaGQx}Ta0vOpjT#zw}*3WJbi6oX*oFv?aRc&PeN
 60.1399 z`kf4o*RyByjb>(MMerEqmNdU}rslrB(veH8l(nqTP)x+*$G<r9H48{sr>Cc75-k~2
 60.1400 z5;YGl5Bl66`4hlnqR3|&{pSMp;p2sV{QhlGl2M+xNC<t=Wi94H$HXK+mM}I>HGW6F
 60.1401 z%%!cXn>Wiq5Hd`$3j|&9eNW~XOeQ9#WB?jV=jUEk4`WhOdq>9QyRdpDCiFA`H!x--
 60.1402 z!mMgZg=^=5)gO`aT7S@f?WNLUR#q1d4^>Qj;M@^Kf7`~!W(<V6Qdp&F51GGjnw~a1
 60.1403 z-zaTlsL~dfwK_MtEA5K`0i&>;f|&?=T$kI)M*rTN(H|PXn+~awpzVO~hyDm^cuB_h
 60.1404 z_4@x^5?8%QeMvxNQRnwO^aVb^X9!a9AiDeExtsuk-@q;}V4I|vEv2uYSnEgu;#bvl
 60.1405 znfco{D?***EdciBlSTj!s*4~Oa6HVE4GV^kEwlnc8$~ruY(}0vZt3S6wDq^1J<mlz
 60.1406 zDExhJ#@!hWekx5zz=brwyU_dugoGRQd`(`c|7dgo?m%(8efxHfoSa<fmoHylihdRv
 60.1407 zl80M%R8>?)2y_5%@jijadHSzq$N4m#E@I^#J9Chlf#~)I5c_rD<GR?qZ!h6l!q;_D
 60.1408 z=+Lj_eQnVS=vj9>m)1X1FX_vXBuq^oph4vo6)O2|n(+_%?~m5nPn7!sg?@Z+czC~K
 60.1409 z;W@+E`FR9DM(%;`gqW0+;$wCK%pm&&<s1@-;{JWQL`pZ!C#CR;>Qx{-cP6X42q6MO
 60.1410 z!m1WB72ez5zJ7gF?A-ho*NKydM+1`3)cmBNt{xRDK>FtAQ%VsJ&JtQ<y_7X~BkUvk
 60.1411 z^sNN?7{vs5fSR|4+u`X>uM6;cJTG*z#OTI$a$Q^ism2)i6?NbV8guNRyz1}4>tjWJ
 60.1412 zwcC<OF6F*4%9ixaeJAlQG4YG6%*<PWKafABkBA5lU*_ZIx5eOU4#r`jdi4C+(fQFv
 60.1413 zJ%~iZ$fz-a$*pGj>l+(u%gf99vrK^2F#+FlviI=tuuxFwm@_LoZ366OJ2yAig$Og~
 60.1414 z-1sfQt%si!v-OF96>~{-sW>@1muuPD7PJD0z=~JSaRxldG1&PQU?OEFn-fD+kOeoX
 60.1415 z(a=Vo@cFNf4h1tnm-q^kpFXr`Z*RxyO%@z-2W#xt(9mGcdr=??q>huz(Yn?JpWW!R
 60.1416 zu;>173IhWJ{C-wLxXHk%MkK9o?7W`qw;lq4V1Q2tM{#|~#<q+MZwcp14NPOJaO8m?
 60.1417 zF$<^|nqi%5hjGT!ekm!b&RABxD9PL*t;AHl+S*!MNx6K@L9pN>OQlaAR*FnL>|@Q>
 60.1418 z?0f_yQekecRX9*iDqx9506*)&KEhabxCNhYgDT6Bpe*P8C&m5JRlAViVe-@Epb|%w
 60.1419 zaI~A%#XsI=?TtW^@bLILc^yG{gX_&+ZN&pzO+;=QDPB_iOxUg1c1R<6*Hx;eX!|Fn
 60.1420 zgl`wstKEkgj`LH#D9Y3#K^_?svdO!jGRcwel9B1t5n*zGbqpFC88KpIXTP2TRN)Q;
 60.1421 z@Sv^kLV%y28?0|8ysL52gvEi~*VV;?3gv4mqNJN~-isIYuEveoO@#MXn%rkS|NM;S
 60.1422 zGGE`^+#Ft1Qd9dl>P|#VY$MujC$<_F8*3Ys3m(Wws*oG=8IX7az$%L1!^0nI$Up&b
 60.1423 za@>eHM!go>2B;<m>$km!14&K|da0j2xo%bTi7COBvboZewBzCJZHK`)GBN_hi50HR
 60.1424 zjyF;|P{*}EEJ^}$R+=L0?sz+{OY2EIr{tE(@zu$k_a+dV+AdT8!PvNz1X#I6MQ7+Z
 60.1425 zIs2cP9l=4qpOtl{*5xf4Z<t@**4?nyKNS@frEntM2FUgaAlsYT+T<9P%fMr*YU84%
 60.1426 zl@^VtI|lm1I(!LcQ81xxI9&{r<+19${}L8+eGC!?&w$9{X>j=yVZ1sgyz_ktkcS+4
 60.1427 zSKs3aE1R3MKL1ecDx>JPe;pCx<>j>w(W`Nq)1De1Sh_LolSO_d;qiLc@$7q6MQS3o
 60.1428 z+>VgE$N4|;3`+l+8%`}k_|#0hkjEV#U6qR*$!Bgz4v#Vw2?f>K^Utc-?&Q>zfZBqB
 60.1429 zo12>#53>L-FXx$0!#+^Hd(O4V{EpLK7k~ut0SlNrw8jj@3pg3$FONu>0uILcq_DhP
 60.1430 zy=&@oQIRs6dP{rzL5msJ5P<qS5MZkMZ4qRA1;`LwB;ma|UKX#B`$RCDjF0&Xc#(rU
 60.1431 z3^QNxDJe_t7Q{qFHIee$k3YAq<?+1*85<i%u^CkVhR;XG)h^Oiiw8@}!^!zY$|Ws1
 60.1432 z`Mw{}z28n;foeYnK7U^<ZH|b5fV<`APt#2x_-1%R`^7GIn|}gApzX~G_u;UZ=-Sxi
 60.1433 zpT9~kEBojNE~Ei4EuM#~fX5be$;rzfAO*-}*?1m4B*GMm&i8!?HyIE>#oxat--Z$&
 60.1434 zybY+%)dtsEi&)J;+@pm?iu5X&-@kva$*7w8od>9`0t`ZiOZYe_{=_2%Is!J762sa|
 60.1435 zz7qJn)4?@HxI@bhXmHQq$>Of&!*A@t=LG#H-F0B0gWAL>gs!QM4e9XE0~z04v!zW4
 60.1436 zZ7`uh_1_}`bE#+$Zn$@-9|Q-sqwICl93rf#oqAJkfda1#B+FJ00Un1?P{3f}<BK6A
 60.1437 zCGBYR*vm{XWFPZJN4r*FcXV=^bDjV3>J%PJJ`Uum!$f)O8?OMrqY<4TKR-YHSp^?4
 60.1438 zlMI8q={s7Q#>Txl-+leg*BH^LsL~45vgAfkCT9hq`OQt%oNNE<vp;s#PIIZiFD)Ic
 60.1439 ztOWMNZ_XkM4cX-ZsA+qc0KkkzkNWuWCvZ|*YT!j-Y$<EB(wqs(%E^!RUabh-c}tt?
 60.1440 zEL#OaB<e*=2qD}JKm#b#GXMp=HtG`q>^0#29QZhNq4bG^KO;IO6tRhkok#(u&B1)}
 60.1441 z2?_Zo=`F3T`7R#CCXKTRKc77`@!qP!oY`SvVlwSmc6Li^19pcL(1Wm}zav2RIWRC#
 60.1442 zvueB>>9AFi`J<<U0~;+3P1DQ0#n!W7eh?F{pNOS#EFGLFrt9&F_@29(frTR{VK=;I
 60.1443 z?dT}>YTbN>l-%6RY<Nl6#6;EPyGNNguaqWydj92*s`$)M)f67?)J|gMXk0+5$J@a{
 60.1444 zbz@W04E+AR|LudTxar6N+ktE{-RrHZGZJ`|nBLHs_au4~4-$R_dVNAE(y9uZs)tuU
 60.1445 z&WN!4c5<`?_47ft8n2^uBFe~IMhTl0E3bv1yS8_z#C$Ho1!nKXrlvZYf`?4PtE{YC
 60.1446 zdCaGI7xM7(3gwH7QKW}U_u&qSGeE31;Uo8?9EON_UE#EmjijXHWSoiLny7Vudhn-D
 60.1447 zL?t;tAYN}<qej0OURv5W<fNoFZu`F#<oT0|#{o_<Yvu6xR)Qyf5o}-f<;&9(!niI6
 60.1448 zA-_wH_l1RaNtEB<3e*`m7XUxWTVyKYZts*CvN-h0EzseemwT$IBA&YT_M0kpc6Mjp
 60.1449 zJN0o_t#?g4P$cB!f`OV5JOF}p$9;ERvPLC|Kl@%mDfkGb_$NwAODNFW<^h5V8Jdr&
 60.1450 z=mMrqfn+3M*<W4PqO=}Aew>n(Wo{1c9Wi4FJ$gPL0EfOUfJ;Hc{P~)b>yLmeV&*Wa
 60.1451 za}|F0aMc7JTH8shJjSEMqjw2ZL=lkZRks+hu&^co>i3Y7laq#rhhu+y+=3U@>Iy9I
 60.1452 zgJL!>Lv+4b#e|~2|IPUuG+ZGO`^K8FIEf0h7{?TNe=kkk-_KJ%(tqZuZ2Hna)Kuib
 60.1453 z;hP2>5{Z@~V;q?2cmsyhwDhVj!_jTh9eIIiMO&3zVwFryP0h>nC9ru+d3pJd+1c6P
 60.1454 z8CB-z<g`7cp~>vaQ_Bjhvn(zuszlhP2)g8aXkL&h1#+PxJzXLtvU74$U#VY!i;L^@
 60.1455 zIpFdBHb6Ugy1G{KRXJXs?nz2zd|2ArGAd?zz1lk{;B~l4HgjI>IFnf8x;987Ec`8J
 60.1456 zcv$mJWP5ao3{BM|ps6gl!QXH}K>NqQqZGw&E)R^rMOAV3Cx{`ZlT-jQVzsor%}x^5
 60.1457 zdI-p%OS)j`*lfM`4)CMZhLF*v-W1^#a4iGDw}>H+o%$0+5W2AXqM`^W`;)C<wX;%T
 60.1458 z)mLIz?{#zqPhzmJv`px-;FfFjyONTj!QW`SxpL~<U+%&QzPBFiKte*Y5B(S&)mCyH
 60.1459 z>hZkI+gB-I)tl_oDg2O?wP^QuM|AJ-aiLD><oNjbdqT{hHn^MS{YnEiDhQ!(P;myy
 60.1460 zn;U#DI=5%O-OZ?d!W?5e(fQ|Kq<tY<DXtR1aVycP4<4?`Qq^t2O*}d}8YSj?{`mZG
 60.1461 zjdp7&H*y#}Rx%<Y&9NB2+)mhmkCorE<>e*YQHWk|Y-}8*q6vAyJ4H=|QvT3K)KQH_
 60.1462 zLEytdcwB`W&ynsS^?zex#G^#gY`~&H-~+gh08ik~+vblKr>B}g0%(O(i5owH?H4%I
 60.1463 z-PlUMD=#Z=Z*P3C5Z<1iBfarlS@tX430@2E;RN}q+?I;23JM{UZ>)|tCvg2v7tkX2
 60.1464 zmfGWhKAn*p(@=^w@jF}Y1&pU2X379p7Qu@1IL&_lq+{Z%wc$Pms483eu7}730Czi_
 60.1465 z5qbLfljCC&lLnu&Q9yVuTHD(6wRCjI_dG;uv$C?R*N5}zvF@_7x;Z;Xt!>XGhz)-J
 60.1466 z`ZfM)``Zrc!x+WHurQ_O0<FSrxa-VBU{2F6J~5FWyw=igDnXe6PVj$*y#vHG?zpaH
 60.1467 z=7$$R=W+`P3E6gjVgk|#qj_$w(F^>a7|7j1+hQ>whKc)=X~Vjf`PIx8-r>`(7Z(?|
 60.1468 z!soaPdF-YqA<%Oe&~Pc0bFb4t1n2<<NZ5F}uha)fQ!uy`X>04%Hz#xcjlWu3WeX#3
 60.1469 zBO~!e6vR#&1fNS4Qmyo+BvIkxKls(zxrlb_mge?Ujp~-d$<dgJ6)<>&p<!}1@bZ?~
 60.1470 zS>w(1b!KOGcc;VMUF*%c#>R0VU`G>mM`HY(N;#0=bO0aFQ0(s`BWp4TtP60(PN}WH
 60.1471 zb6S6~_G_=ttV|P7<bSLofD2-T1W~IMcsudDNG(D;OUxrze(&rcj}J9hiyY)>78s|v
 60.1472 zv`<g_)N3*uF_VNDs1QtHS%bGM7K<l958Rf|R!>>8As6Zz$dWJ4QB8wCQDE=jfUt@Y
 60.1473 z)h*De@oLl$P+>m68pDf22t^hA{2K5<7_|*f7tQ}=!L6^QMXW)M$6LjJV5Fx<8us&9
 60.1474 z-YsOwnyNqW9B?4&w4XnJ9v&1VTYAd2_Si(Mr{B7gNz?&l;Ug!>4?gH8)Z{%(Am!AK
 60.1475 zB_R}03;7L9@DoX}2HZtT_U(R&Psyb^n=(1n4nZ~$0_C*+t%K)^TE6DX)z(Zib@jm?
 60.1476 zfa~TeL^E8?3{{IrRS#KL+KD>cdbP{C#~Z453pv9bM!_y!cmvhL1OEppBng?hR^uRl
 60.1477 zKz@cAuoOAL-b5SRjTm=(h)Y`k9s8D)J8fK7f~!!y&UYJz|4O0-vJW;c4?RWpV9uqR
 60.1478 z`@!F&aR<QaotR%E&m3`(GlbP15@Dmh*=u<lhlh?ELYp}Eo8UjMr1(kP)3+GxtgF$t
 60.1479 z>J?pzm+JQ}e#8xkCE%cxf|x<CJrMX_JW7&HRsTs2QnXV_D6mYeLk}fe{wh`QVd#<J
 60.1480 z@>>aRE8V1F2|QMJI(vGysuT_}R7K=O9iV^ncMJI$KnDaNBnt&pQ;)iVMk<kRDaw8C
 60.1481 zf3;!q%AWtivqzjgj(mM_ksGo9yTgx^lyoz-x{PmdaPa;0N#l*1o^{>JEi(VJ{bk3x
 60.1482 z4V@B0!Fk}f>_7p#Y_Ge68~f?U>urVqzi;f0gbn$Wouo*G7d^lrp-;OHw$)hBDdd=A
 60.1483 z2D8<fqz_bCNh-GI8lAkZFFkXAzCnu&4+~p5s!XY~pZ;351H!LWB4E^;wxaMDa$-V4
 60.1484 z^Zak{{>?48;2Ov1><;q60|k`lUw|;c6H)>Or>3t@mYcifagT<U_6#0%1JB=HzhV$k
 60.1485 z66rA?pZQ?^8bm(JN=C#;z&pMAD0WdILWuWm%ftTrVM-pMa0ALuSb1SXKrp;qXuACq
 60.1486 z#NYdX354HeH(ZU5kH0rF#BUoF7uT+pugUAWr#qA<9|_=KMnPG*n^MR%FOOvo-qo3T
 60.1487 zrI;<{<t4-j!VMiDDU3vz;Xq}?11-UN=WW(K5s&9HKtN$m*jKNcu9udSAn54m;^`O}
 60.1488 zlZZ%2%I$1zb>Y7Zk&&vYs)~W<J+#uwM-&NE?ie`L^HGC06=7lNQl|OH$;Qe`M@&o{
 60.1489 zM~W>sMpi5>C561RI*<h)y}TkQD98Y8CpIqb?gYh_ZkbuoMzzBf>aS(za}WvPB*`~&
 60.1490 z0mts0cR+e#!VMKvPEJk(KVG4<&dhAL|BU7hF5dfkQOnYP3*N|rR;*vL+o*Qam<HG5
 60.1491 z0Y*<j3zetxzwY-mG&Cf$>W<GyJu(9kASQ|5fuLBws#8Eva6*xeV8Bx(RsRt)D=RO2
 60.1492 zu(+L%&-Yruwl2=jMqr4}^}o4RFHi<+_6HEZmpK5vfP_T=j-Tx$CG~nD011T*#2Sqp
 60.1493 zCW2N#jbCm}F1IW^CxUA`V{;sK8ZJuS8nWjC;&j*$85!vTK>NwSz<@UN{N~zs<@If>
 60.1494 z@5w1C<YPs88tJuj8PacyK-{r0*3dBjy}Yb-^AnAV2<sNITLfE=m$S38vg^j#dSPjD
 60.1495 zd3m`<pZJYW5MmC<sLh#gWBei_)1h)%riZHoT5#;K<i4p5w669&*`7Ihxijl<7wCzf
 60.1496 z%g)5`{P;C^4*)j(t>+t~Y(qe}3p0RK1^@OLvXW@rB_mGji+l0t{_Uh5Z4j{ZH8nrY
 60.1497 zzrhuIh^Uwd1tfg5CrRK81YvtdM#hd`A89u>H#ZYqH%uxJ;V#O`?=5X@3-n&R;KGG)
 60.1498 zp!eb7#0(4!+#o~+0aeS)#1zu@=O76?L;~LSlzw~X2qggCZhbkNr&h&Lf2jVW*q}yP
 60.1499 zKAg<*>E${$u$k`HuaTE*hH`F`5ECa@J7VGBu&qbDOn&sDX+MmkVRvQEqa4u9yA+~c
 60.1500 z!=4+X#VE#}%Q5@FMFpy@%so6F!H4unLO&LsCn6&w2b!9ip8V-eF_6q6^)Y!3OFFQq
 60.1501 z0>JW<qNAG^oNE=WtgOnCl9F1Qo2BjT><R^pDJaHz_vzl7%C9Pm$Hl~yl~+_u6k~jW
 60.1502 zo~o-iar5wKSkKNqbv=rQftB({!*WGcvYv!Xyy;x~Gpq$J>A$#T+yW#lWs!arreb!~
 60.1503 z%ad)R?cIfDa)_Flxzl2@(x$nytE*OX0%(Rp_$YQNalgx#AjnWazkmP!a<Vfwm-ZyL
 60.1504 zP+eWU8_qrAK!5tu+JRM0yYI}Vz$2?-Q6zv1yWd=2U8yK5Thy72!e{7}=I4j(HDPgl
 60.1505 z0(|LRB$fE~huByI64ct-DtB?Rv$M0bq>;^pP)QY;xVbz#h)6twldRjYe{Ft!v1E%R
 60.1506 zkxNN9<8^(ygbUul0}0S74Kr;Z?#uz+N;}TfSxS#wOgS~y0yJ6u2^N5mm5q&9$U#S2
 60.1507 zQ}bS$n6Lg-RvGXbKk>_5=}Y0A?+57{Su)gksi>Wuow_S4E6ysV`P0*eORKBaLqIe0
 60.1508 zhqbCtPEK~(+uK{*xpRjb@MTgElT*e0XF~}{AKt%zpA0-~T0ny&`-WA;&RVvBBU0wo
 60.1509 zZoj4SduLE-t(M?8;nZ-}R?*O4Y?t{8m=FV-NyB$(WNAxFdiZpQZD@DDi(?Mxi)$3<
 60.1510 zo`9pFr>!k>Dc=Jb_BeCkkG*1IVmL#&ssg;eU&(+l#{2mAvnB1@W*Z^5b<IPdqV2v-
 60.1511 zMu6boCQs%2TRLk%)2c5uoRSBjoDv-!?a>v>Hk+%OMgli7_<6h8PgdrOL-3SIR5Ual
 60.1512 z7%kcKE3JP4zNrLMTY@qMTTDz$_tsR6FolrouiCF)b=lVMk&-e2y_smun^;g*_K}_>
 60.1513 zECKjN@#$(-q_Z)Q--_ujOPCOR<f5R@>6fg=M*p4&3SnpciYo=u=7{m>0l(|zIFnl&
 60.1514 zW2GnEot@k_zoS(L;p##|>6dVd*4U6;=LKLrygf%VFO=cJAKYhC`xCKN+I-N>f0?Q|
 60.1515 zw#1|(Q<H|IhsRf;)XA9{qZBmw2wlJB<z+)9C8Z94RnBX!b?fa^{+lL7Mm^WN&A4dv
 60.1516 zjEr-GMe_NYgRp&W?d)*4y1LrGkBHdT(9`Px+PLhd(q@SL;Oz2A5GE=rs&-6VTt!$|
 60.1517 zm<lT^Yod>jPvG|Uw!Xj=5)u+0K0ZD_xNTzY1Z7JAIaN;|S~MQ?3j68l>3vjY&?uyY
 60.1518 zFCty?jjij(faTBEw^85}X7e-7Pe6PVy9yZrxS)R*5mBx8_4&dNAdYfZD^vV{9%(>9
 60.1519 z#m?jB;js%13BiXWOJ@vA{hZH1k25W8)>}+88a#B>yI~}3WFJ7tB!Be$8QgiI?BeWv
 60.1520 z>gMJqXUJaD0r)@N$H({JF`c!BPtYJIr=4{GveVa_6@8fOCJn6MW3{nXdwY8`N8xk3
 60.1521 z!^5lkjZUUr`bZB^ulCxh2!TqtJ3c)8IbsYG9ewo+WAElfg>R{0t=Z1vqPqM1k5`(u
 60.1522 zSKz7+z=JVJ3Fi?MOn}F*Q3<7#z+(h^04p4+)P4z1UI1axN6ch)cv$8F=!t1^GP3wY
 60.1523 znqSS;w5+V%2Ousws;H>EH*F4%(J-!H(JuOW(<3nFK}1AUnIuq9S^3Frxs%u%`chpT
 60.1524 z3zkb1&H8u~u9NI9Gj9(C%8;ojFYg&xr0b3AtBaiB2I*kz{OKAelX75jwDc{H=?EqP
 60.1525 zgJw7d(csd=|LTZ3Tb-20eS12z_dN?V{q;pN4TwVQ3=BDav1|s;23X?0>TO>{lY}Sx
 60.1526 zpf4|$<RXiTSY4pg#+wWAKF@=d7%y+{jb)dZ$8@eFVcBl%ZtYw!EfEb&U#`du=f;I}
 60.1527 z#Ze8=BT1v6h7G*FqTElx!KesF$C4NDH@v?EhvV_@o)wJH*Sfk<HA;Cni>s`nQU$?t
 60.1528 zsb=A$p<EhI7sKFUY<fsSQ89EGPKrlivKxNoWC1FBy*q)&-OSv)G$}s*7a1AZd%$80
 60.1529 z-u6z`d7o@|hY&KxqWplV1~AMQ7sp%Qa`g~flT~MHYinaPG&GAqphZ0gk^dp|tFP}*
 60.1530 zds|!L)1$!P;8>&|u#sYqWGMh-zJO<<AqSKKckB%(7cirxrCmDSnWI93=fS+>=Dk>o
 60.1531 zqF3Su)YVZ=R(58#+QEPT`V<%EvNK!XHNvJuZT$>sJ_zP8qVUYrsOacozl$w_v6hw=
 60.1532 zF*y6?<LJ0e|MBsmyPRBG_~qp#dYP`zHegOVI;F-bQHhDRFLvi8g()L*lZD+&V%_nh
 60.1533 zJM1-X_4W3;ivK$MPb~odh~difM=A{s4XDkT|G<r~uyC;hD@ma=%>^(72ly1TK19Vb
 60.1534 z93Q@~gkiwj9@YCe4D|E~P!ESN39IhB34qOY(Q#ns2i5iyQ8i|*p-p^tqeOr{ylXX!
 60.1535 z1@7A(BdRP6VqF3}gCy$~CoV4Tkp)#wPEIEw<CB)|c&_I3v1kT(bbx}oqN3ukRQuuD
 60.1536 zP~q!0Z@R9}H#qE|hk%~NDrV~|q>^wLCkuP*&dc@S2?F^KJSy+co(JZgx3r~sd7Q{X
 60.1537 z0wqxY`1mgfD%0(*^VrM$Y0;=Uc(2;ZMgBq$kiClX^5L^*7TlyuS0{60`_@_3wzg*0
 60.1538 zsj4$>f1%NI1VCery<p;j?H*OVU|{>d$|Y6Z@A~Y|_0{=NQh%vQBL+Z~dp8}7Y1qA8
 60.1539 zT}wl2t|K*beo4wP-(GGd()Y7I52qB>zmhuzxJ&{MIz)mAv1YE<h>nSGj0)S=uU~(G
 60.1540 z<tjj;78E?oVE@b<6M6^YCF@CdZ<_PJaoB4kcRCe%^yt0Yix;FW>%&a10DD4)01Z&a
 60.1541 z-WsBW2meX1#|`PR#xB;M%xbh}HiB0Wmz0#a0Z9O3o><)loALLrkFz#W0Ei$bO5;<t
 60.1542 z-D%=!-hg@`>P#z+^pcVY*(=rDp%@-SH(p&`ovkM~PlEF4`8ofSR1rONiRG=WnSOQS
 60.1543 zLiSoi$43|%SOg(5T|?hNP<Ja{cHq|Z*U->NIzs8GMHwqL5P%>tfC=3IcHC?;-?QkH
 60.1544 zJQbLJ$i&2zAnxBFStfZmUsJKLpuh~}2LRT}l8h7^d0E-pJalvx@i||AudL*Z1j7g?
 60.1545 za&vi5>_x8jIXAbkZvYLK(%N(Dk+5)BXjqsae7-;4$C{cNZC|he(bnv94ZcYNp8FQ!
 60.1546 z{{A=5(9qD-0L5<s@mUkw)z7fitgOyq*r|p=b@5)cC0KVsfJ@35Ppv7i!E=1scy*jK
 60.1547 zyHf!;zDA~%J0&4pnjrmjY`K8H^Qp}f`^ksW9+(eIgN@z-^@Xmg+Lvhb?Ir!&z`#7&
 60.1548 zLO@5^q2aNyieMaae!~h8K9*;urWxBP!JXaR${Drn)YR$czzO)Xv$JuROH@Pjpu^ek
 60.1549 zH>XRH)jRbk#*jV%g!03E&i9Y(6-SKXl<!j>8EtJ6T<H7v@3yYZeACm@Wc&O3rxOzs
 60.1550 zB0WbSq^&J1WccX<sp`z1#O4I(k=yTAA9uT@QGVFg5G{n{0>UF2AtxtS9E?6XHZ}yv
 60.1551 z;m%zWl2}oP$x3F3lZR(WaW^F;r3V)Whr&=tr`@bfR}ttWqiTD-Yj~dsNrE}XR`eI{
 60.1552 z{YPJVFc>{VQVm@^XX@Ox$@%RAG?}xL5)$~%&d*2JSME=Kb1!uOcZvbU15nv&^geN%
 60.1553 z0%%?W6kzw{q&`0g9+-gSAMx>Ub4T64)G#n8$npvxFgwl1cW#%bFXDhW6p0shcQnYr
 60.1554 z|JB`Xq0z{<x3`xAsMmUbS#PCzU#jSFety2bSqD5J)bDsx&%oQ;dk<V@0nFJ~R#(Rz
 60.1555 zo!xpi8UQWmvfw5omfD`5r&dr@RQJAjv^AyE6|KlhGNi>!444t(XvTf67T(@NWotCL
 60.1556 zxtP0&0#A6jkt&5kr?U$KT3lQ_lp;!N;j-^qi8yw#u=p&=QMud|hwF8=97oGL^&q-q
 60.1557 z6&qC=!*%E1h(sSC1nu*8T8HZCIeelOu>|3$q#0Sl?{}Kitk*_y^5NlO7YGY+C@3f_
 60.1558 z|7^GxF<Br<sHoszLCh>Hf@Ni8$UTj9bwaf1g2_4cI~A3c_Q=qTAu&ZZ8<*Wkfz}(S
 60.1559 zUqnR2w&83gDR6alb+<L_ZVj2(xLRKIx4OFZ`uY{;TFf5qTT%kg34Rdp_6bRQbmE7|
 60.1560 ztlvc_GYrkUsb)N#Z@p`BziDajH-H~?lM3)=mCjdi94Rqrbc{|*bBc<IX@%?5Qs5AG
 60.1561 zL`Min7Rx6Gz&spQA_j5#zPWA0_5cCc6BZi!RZUIpwZl|34j}a-b=82X_641roYal=
 60.1562 z_y2(N0#p9i2UIrz?Y!d=v-Guw5g@3ZdwF?{ZqL?V%!U%P42RUf%)b!;oVE)ul7zN)
 60.1563 z?4&SQL}7j7A1O9(0cnOujBU_|{ZEO10s?|c<EQs%1O#*(qSf<1TUuEanydnqTO3E?
 60.1564 z=;)}=57&?wQRBT&1M$UWtkk3?s7>h}6;;|Z@Qn||WIlQS*$Y4_*7rd$@iH5YeiZC5
 60.1565 z0Vwj5$B+B%HkyL4DgdC=9<1~X?Ndf~ShzBGe-VzvfV+4ebR$*%5mgka@M3D=Dcs0Q
 60.1566 ze?cqf;WdA7rZP-E58}AU28`x1a&nVxt*v{!E{O4o2?gj!b8{A=DG&qIYKffBR<o*?
 60.1567 zx!yeU>(}^VJ*ps0X3NLf>SRYNmF4A8`Q+^V$P|z!b4+YJV8K?bM3@uM?%d6_K#C%&
 60.1568 zu+Qmkk%`|~Yj#df+xUkbp^<wnKYvP2n?)N_Xg(nXQoH_E#jPf3b?o`6f9L=&KYzgv
 60.1569 zS7Kr!c7sR~2=4A)UUhm>Qc`qp_97h@mX?Md=MHHpW~=+Mg@=TMq>Jc-h*w-*u5Q#=
 60.1570 z60o?wKDpwiAn=Kqm$!0ty4J-#Z#gQ8AQmW-b2cYHt%M&ukfbov*3!zRH)b`cF7lWt
 60.1571 zw`>LB#eDzZKm~Bl;c&fL=WII!BIit1{E7$*0@6C$ZnS7mi#evUpnw@ZiwFhaK^DLi
 60.1572 z$)6lxEw_4-Vq<fNb7m7>eg{^*+#HPa?IqwQ-~6u5`C!=yV});i@(1WCkQS+;-p3!h
 60.1573 zySq1vPbjI0Fsu9sxw*L?p`hI%LOIWffF*+&c+IDtJhiM&;MwbN;Z1C8tcpFq!2^Pj
 60.1574 zdvJU-0y4%(ODkp%4!BbjFGjE@{!RJc8SCpSEo*IKbjF@4ug$sw>u}Uk`C_RJL;n3e
 60.1575 zwR(6C?D6q&RB7Y2P_CtTRs2ZG-`yoV1hv^H57u8c;DrS5zV9C&mnZ_lIsL^{x)CVI
 60.1576 zLKj4BT^&Dij}s4kZrjYqiPKMt^jkn<uV|)X#3%-V*f<Ws{BRxVM^jTKhV_#+uZ5=D
 60.1577 zVfh-l+DJd(_TIuXNM2HO6)w^dB~qj#aMNRc|4Qma5;|>{mKw6l<eQ$Ek%d0Q$6IS@
 60.1578 zX|<+DE$V1#aYaQ%6+u6`x(YLjh0t#`RfGV-Wm5QAok@c|?oG$#pYnqNd8(stu4_?S
 60.1579 zfVUH8k+)gc+ZUBrRT0O0`jmHYWfN)yq6o9M_XR_^Wws2BntxhWmU&VIHts!6iH*8!
 60.1580 zJpssi6bAyd*scG20|^PqdQe!`va_3UR$?L<L%&E!8}ROWT|h^Gf4v4;Jjdka%j*0U
 60.1581 zJ~2_z8MwyN?=FY2GVdqcg1o%PTj7A+in2ZUT(PygzaM2kQBEJJ5BDEnf#=U9!p|R@
 60.1582 zh=a*i@nmo+(M^YkiY)z@x&S%g^JhAjo?Uq=Dk{;wS@?|3Z~}XXT1aTpqCJA57m#`1
 60.1583 zRo6OhV9!LWmtWUc#_ODyLvJ66s;>WK0D2maa`H+_5bXMud93vG%WzdtJ#dMw!qSFL
 60.1584 z8(Z5<u6x)=zRK<tf7w8MmT%;>BBc0%6vvx_uKUXd9#>)9E?|2WDDYVh6g)gUBLb<w
 60.1585 z>gnNPw98AM>v%46WYy$Hrk+RZTGw`^_59C4M5`_yIT<x@x()Bpt-vV+u+HZzD=YgG
 60.1586 z_SGV+tVOpVfRQrR7^IhgBGjL3&)8Mijxfg+8`OA_6{u3<Jw&3WrENY0(hwowIL#TO
 60.1587 zn9a+<!GRIkZigHI;+414RCUiD(2^_g8N&IcrDNU(c1}(lNCAh3t}Z=Z*uH<hdmd26
 60.1588 zCnYJhnsK=-wuHQbT?3wT#m4X?`H?2gN6y>GuTH}SW*_c6yGw{3XoYU{qCPM07rHeG
 60.1589 zHliny4{rGMrKO>P>+VR2T4tuFD@O(R`3Ji?J9RxhJ==hluUr8hy)s;t*n_YOQiS0;
 60.1590 zC^RqcAt4aS{(#8b&dtejhJN(*sTMl^zX~a4i#q5S7!qw_IapbTlRnQUIW@c>3TstP
 60.1591 z*Lw^Fj1=m81N1s3D=TXis1ZY4+{km;FcQn1@iN+lW?b>^^y7M;v+`zmE7f)5R>0t(
 60.1592 zdX@VVz*Q7{ee2I>iz~MJgE}nCz|HGZw%@-a&rXCng-tcqBLFbC9Vq~?7daW3z^%pB
 60.1593 zu!DRDK<e={qCY<MIUJBTj);gb4-XGd12^n<UHd1M+<SXk@NIf}dg$)%?#9K*P9G#B
 60.1594 zUIIwfMgu<sgWQ(s;pYfb1Ah0)G`{+856A7R37~3+saPJb!&Nl6mo_dbX=)r?UP(@T
 60.1595 zc31PiyfZ$-mrLmtLNd$)am4-3N_*^qnKs8lam_6A8~_y~V`EBxfR&E&5%(2PARQf@
 60.1596 zHE^Hh{-+CQeXFb18#>0Gvc>E0(8e=xfmmb8D~cd`|HQz;!WuTLu^z}|?flj;Fi>U#
 60.1597 zZl50bpzE)m9=@#3M4)$Fo9&=yhpPjNK$~KkmBkCf^TONO+MI!ed?lA<I*=)=2aEh4
 60.1598 zfb$Lklpk&^e)%Mczt|ZNaON2=>=-^iJ}q{W29YH|D^9{ABX@WlCV7v#AM=u_9G(41
 60.1599 z%iUlIW(0~#LR?kb)|MGO#L>erj)v!@`T3?Zz$|mZ!juXL^E7pI?1FS}qoSg2!~&wb
 60.1600 zn4Fw!SLf*u6tOZl504#i?h8X3n|z@;Tw)<@ef<LZ!!%*{UIl8rM{A>vUPtSn01=<=
 60.1601 z>**QkbkPLACXq5TGgEH3*#6c4&nu%4^>VcV{LTn)v5NHc9}k(CJ8gku?gbMB7HTpl
 60.1602 zi+B!ZfFBcCr<#uS^c24UT<mt@GOu(GfNeJLx31v1RpAcZnK}9)ZrlXVKS_$95~s`(
 60.1603 z-uTQ8%p)8yyLC&&dqV$~ORy1d!!izsot^y%Zgrwt2C*s=1hdZ|64yy(q?b+DTQ>S#
 60.1604 z(bc6|0xoLAk=xQDQ^omTcH_1IK`bnV4C%EuH`f<%8$>&9J$O_&&{Nak;yuoP0}%r>
 60.1605 z*_}HsMGAeBw}*G{ME-^(4DiWt$1iHYQhVgdi1PI}yRniYcso>3P>`?RnwL0SPNVkg
 60.1606 z*J1c@(Ha~KJ)kg-X1#Z2vWC_ap)XZc4wsu1ed_L;;~%s1wts!3WqR=70X^HYCb%6p
 60.1607 zz~90$5oCic6BBxZ{?|UlRXrUY3Nk@F_A_;S?rVeDYe36$Lto0v31GtA`=z?tak#i0
 60.1608 zgxVKp`^z@L>s&2>8e*PoP7sa()bJt;&&eEG>jdF{1l~nH9?Vu!66&wIg}gv2<Br;_
 60.1609 zSAoDu6LeW|0ScoiNx(_2hTcLUTU{T4U@&p7m!QT2;y@>oQnb##<sCjQV5-^hdFR8#
 60.1610 zy~mpqLpQLq+Su8#Tra$(TExV}WJe$n#>Xcocah+d+u2PgxK>0!pr$TE`mOdYG_*Ku
 60.1611 zN|CSJG&Gr!j)IW2wKb=HxrKtiyZecnq@<*|YO2UurOi;zFpw~xAqgWRiY2%Z10HE@
 60.1612 z<B%gv79Q*mZdtz(0~VH9j)ET_f6m^8Rjh3CTZi@r-wS&h8k*C)?1r3?VPQOI@EM_#
 60.1613 zJXXCjLBYY*ao)E;6bVY~(kV5r0@g%YV?V)t12AtxMQm|vtN3WtkU3`X{A7pY==hlA
 60.1614 z0_bxu506z0y?_Sl$=R>Ks)`j)ef$dB$D_Ib(%jKx{Etnuv&KfaNj=)|SdDFX!ura=
 60.1615 znL3DBqB`{@|G^z-^>Jsk6y!U_ChJi^O`|+^M*QO$glg24hR|dlF@OxcCnKJiAwTQP
 60.1616 zx<pP;mP1K&sa|#L>gqD55^~Ms0G3p&SHV!2pC7_N61E1{x0wuy^YZZx<kbun$1rhl
 60.1617 z>}crdSZ!}^CTnPDH1i4w#8v3Bijvb2VAL0T@itZzdtpC_QMBPD>v=Zy?c+n}Eb_}W
 60.1618 zW6&F3GPcqyvpynwhy!{wI}|Kpm#104Gh>vSl4A7h4I1tv_!uk^pVQ|i;CA5L+d6#k
 60.1619 zOKB3VQe0r*tyy5S^6<E1WE7O3Ecr;1hTSGCE#QL$(#!I|T6l$o^uO4S6lj{5%mu$f
 60.1620 zL4zOWJytBJ^!t8j9~{?xe0&OCzkXfN7D>gC%xNm6Vwal3gXq5J3KZ<!nIl#bB`(X(
 60.1621 zPnmE6@Tr5>T6Wwe+zgPKmez-Xja}pm7yNk<S5rrKSX235zVHX$ngnDD3VU4P=2T5-
 60.1622 zECk1b3|O>Smg!<@Xbj~<ieEp1QxvxW$b=qkj0rmdd1H{TIS8jLS9(*t{oyUgM8Td(
 60.1623 za{z^R;6a^M=H|4`0IW=b=)j%zzqz83rdb9zQzYOtyE)P5e{(*NC65Jn>@7z8Hd){N
 60.1624 z%5GFw=?`KYH494^6&~KxTBo@N&GmRs_4Y4pNp2Stt*zM)czHET(^8U?+Xg|Xm7xBB
 60.1625 z3Y?-55cTX}<4U9+PkwT8^0iNKk7V8N6XIfp%Xxo3aR{U|XAQ7}ULysb<k1JtDpLgb
 60.1626 zLSl}&)9g?wGG3)d#4eF!OHs*zID`aYuLyc2s^x1YL8r%+6e%tDM6D};_>+~D)f=?t
 60.1627 z9l_%G-d|k%d3}9d*^)cqMVgo|^S6pw#t(*2vDl+S8tnn=O5v@$-Z}r2J)j_cKKa7d
 60.1628 zM-(a5?KKT=NoQet18p}?0fL|q2S=oVzJ6zQW#y-{i;J;(5C`b1tE(L_U5v6bGhcTs
 60.1629 zJI56Fd^-68cWu0=HOvO+vJj}Riax_vQvU+`TT-eJ!@KwqJ5spph*A_2N`i`Pa;L$+
 60.1630 zNY9ZzB#e7w(7_SfG&r#RwPJSWfHiMaTIeooy1)yhg^w;Zxj3uL_Wa+jq;NYvJdlQ`
 60.1631 zY{_f;8=&8cT%j)y3+tlIulcrC@?tC8e0)ZP?H??!{2}KuNmsAuf+G>+AdK|O$ASc(
 60.1632 zk_E0pkm;sbHMO)Hu}zJ5E1Ru85E3uDx-5gNdxyFz7sqoneZZQ<YZCR}s*WcTD!()0
 60.1633 zXvd-9miyqvvTzyIFQgA^p%_r275e_sQ87^QPKAP^lq8D@vL2{;D7#v!<dXk3S9>h3
 60.1634 zy^ojmM0}*%tw)E`=1hqPy!ffuzfb>|9gTDG@VrS#n4r!7_Vw%d@ULHw5vHaC=3Cy%
 60.1635 zt}R;e|2ACj{%#sRqr<C9>V2ozY8{d1?B%+GM=9`oanOy9+DtnaFGS{$T)=U6V`GC9
 60.1636 zxYO#k%p4|UIb-;TP*P8C0uoD`3wTn^!Ob1zzu1DYF+V?F01F~fnuEF^5(A1f83Ps;
 60.1637 zmIQ*3z|mP&`+v(e`Z!S_AGBwhUHgL27?KafU5l0B4eo<p`hbTB1VeoIAp#kXq6zfT
 60.1638 z%gynH!!Z;82?j<+1LhdTy23)cnfIhTGzL?-b#;j!KYVx=m7Hv^uB-d21kjU_(a~}M
 60.1639 zR5PQa+ULhpPIn{k3zlEMs7A3)#b5isD;LIWg?WK(p8^_u;o<EahI;4zLj>nNifiK_
 60.1640 zsh<{{_d<`AuA4#ZGpuo#;)l0w-M6PhVpw!$XTH8L_me+~drZem7LICez9dgMJFaCw
 60.1641 z#rN~)&t^Cun3<Vr<~>RB?;<mPxQld&l#bcM)6SP6NTGBuKnCK0E=SBq@x92CWBVd<
 60.1642 z+?k;H%Xjt<4xzsmWc#+>`()DRd@Z*D7<wDbN)A?fx<p-9KiEBcmY%9Jn#gCDY;I=8
 60.1643 z3NX4SG%U>1TA{=VC__#zu8*YT<ScOEwSs~IFIXU6=ik4)Y7HY!Pd%c+w}wzk2~fWz
 60.1644 z;beRT2C^k^mz1RBt341Vk;6hmm3eDGa3gW6Ox@jmew{4n@)`<gUf{ib>lS)*Q`2@|
 60.1645 zig3+qxuG=qdANP+=Nq&zR#sLbHnZ4K*9puZ<ddB_ftM~W(d*mZz#O_b8cv&%+Lt;I
 60.1646 zeW^yShpTFT0He9%u^gk*37`7!adGT0dw#TW;eXI0a00|J&Ncc!1rZDkZHpir*iblR
 60.1647 zDP{wxBn-~eWWEP(>e2m(K|o#Z6A@|h05E5k)`+gLvXgJTP*YP^Z-V8#?zfj)8sbaj
 60.1648 zf9sK&Xnzp=5Q7w;RJ5nXWe$u12W(SlnR=Tvcy*Y3GY;~tMTSr_<wv$a%7AxzM)H^e
 60.1649 z1N&o4r3qHAfXf|_u;~;1Fe}p(e!2Nrx6aij1Y8T;eJ1eek*;d@`AU+L2ylvU-Z2M2
 60.1650 zqig_ELcL83qHV>OFY)8!<9Sb-;0)myzA6)V^eRdGf)}T!yvk`}^*zt!|C6b{``<Iw
 60.1651 z`ELJLn%H$?qS8jgA09Seihbu!$>S$a_zfzp2R;Cn7?&#I$(=w@Sx``L4_sDRJ6zHa
 60.1652 z*KjH*E5Fxdj=^S#&ZkGf{cYnjGrm4*Y6G&u!oqH+25xSAOIeX(`xyh)1r=6(a*?Dw
 60.1653 zIlbViez)u**#T-43l*2rr!gbr)eE4Ra^WIVViFSL?V;RA?HLG<ipoh_M<<u>r=)?y
 60.1654 zcejn$HK3CW;WSgJ!B}sKu&KHEkjL*|A7TDmcu_=KT`k1PHr?QxbOMBk;L7jcyWo1?
 60.1655 z&-xtnyv|mNi><6Nkv}^cGbz?$CU)pe7R0S9eDYe-8Zt(Dj@mP({nvd|(GDP8lzS)+
 60.1656 z53ty}oH7KvpHl{GMGkRFl?D-1v{107q0DRX+EIJ;i3aB4da084W2IAmedivF#Ldm^
 60.1657 zp_m;7j~~o#2?Dofz|YUmZQ{8cqd2oKetl|=9M(EWa2o{~S^ua!G$e#;fT;YRy_gc(
 60.1658 zYI;V-19&vS!FpjSs?pcyKff23!wmf#=Gh=z`&a=n)d4OL8%mTS`L7hJ<H`2S6+J;n
 60.1659 zY@wEo4O19_XHju+Hn66?TAwrLCa^^2H|HB1?SK*JsaXOwW9PX$|I-g#q_(kfuU@%D
 60.1660 z2L$yKSIE%d8v!DrS>T@u0k0Eru(xL*AtH*0v+w}>a_&IdMY=E2fL{_55k1#GwuAy?
 60.1661 zXiVV~awngDt0*s5wzIRVlGz!Zd`J+o3ZFCvSFl%IZ2w8~_Y+`dX1=^UI}nIvGl)H&
 60.1662 z|B12<xXXy|jGDoe89Xqn`7JKhH>*C%6L`amk%8eDKxSD#n~u8r;CfLOAl1zP+m!XE
 60.1663 z;3K$_U=09>nCk^=%q_O>NcU0j28V+GJ@K7Lx}TL~+RpN#K6Xo*GD$XY_KB5fg>yfv
 60.1664 z#mA@3#>js+<0jKHGo_Ry9=WZ5TCQ{35DCU6RcFFOKP1{4GxjbX?CpKRQuMyntSYgT
 60.1665 zNla{3(><lM)Tub5yp9geU<Rn?e`eGD@}se&q-5m46ab{BLA8B{L7AEC0)R(MpafgY
 60.1666 zxRe;8Z7{Uql6D9$thFfYE{83KMMp=6$ofrG6hYNv9^doB0uZ>$8?Vom*d79CmsWZ&
 60.1667 z_+l|o<H?gdt}cj>Rx_bpRjQb{I38RIq2Hs!!z~bmiyMhrP?VpazYkoO3k1f8LzTo(
 60.1668 zQ*-mhJzIBQU(t$;3`sj|13TKtb`4n4>H*7J-!tb<C`eCF|0ie0s$ZF>Tans3K1t$K
 60.1669 ze>D2$fpoC7=O{*y6dOk!xW+_)xbKC)RS;u;NJ!|&Jy(ZwaR8tR-jfSNcvy;xy`SWe
 60.1670 z`df5~@j7VbzMg~Raz6mJH@z#}osMUlC+PnznxGh|EdZIO4I+XsDh}Cj!Msea9aXG~
 60.1671 zipqJ%XMG@>`mtgtgj}uPid4W&IVAjwii*lBeQDxfXfI&xrlmzp4sFkTYag8knqdSP
 60.1672 zo{q=LSCgHatHI+q55j;xr950ivAAe<R0r5R8<!FwJ}-A>ab}YBK=em~+S=MW|64<D
 60.1673 z_0OIjmCt&9gP#@n;Bq*e{!N8!)5y`iLiPL)QBh6#B_;eNrKMwaYu1I~@bLNA!otGI
 60.1674 zXm-GZ(RfcL>`LoboXpH<l7K*e(>pmyB0{MOOWWe7Ed>S4M=x^K^LIh`$7Nz+St274
 60.1675 zm!-k4udACJf65M|2{5%7T~<W>ekWjSUWcDi05QwV#d+}e{23+!BoE~0_LkqwyN+Ah
 60.1676 z5%?K32b`&TQ2!17xYQ~VTsRB9QKd3I+=fO*M%pS6J^Qm&c5#ew3;%l1E45t@5w@QQ
 60.1677 zI2C8!_MViCh=`Y!m)CVSH_dNd&VlE*3J(azFI$TM8M}6Byjme3A&G5W+DnAy0b;Vt
 60.1678 zN8HD+tZ@QL*#JB~$hVJE#VHqVJmp7NSrv*_1WG+H7%J@g`BPHez@Q5`G1vXm(0^(H
 60.1679 zTH`7!dF#KxvufcPO^C#eykl}w(tMz*&C?PS3s~4|f%&?gDsj~RzG%H`@`#w2I6sJq
 60.1680 zxf>6HQv(1EMxEfA+|<-mTEY9hbU<gl04$%OPOxIqmKGuce?66ulw`MmvD0{hfsXFM
 60.1681 z&d*=n2OvKh75g6bT2b*97jPs+vhbYa`NDz%^|VN!dMcQim==)W<nf^t1`jv)BgmS8
 60.1682 zfdSQJ_Ui0U+9(MLNfZVlgX^!Q$bNbvr~$dZ<ekD_lMY!#4?yK*^c?eL=XTVa>sODE
 60.1683 zSiO_CRFq|=%@iO9_s^oh0OGd)Ws3Fay_6>cSZNy&Pe!7mqIPgX4&GOXTj3GbR5P5-
 60.1684 z1~rZo)AinC-}Ca`krNZskAtZ7V{lNNBz=qi76h(?phspk_(RvS?$_rTrMbCQTfo?N
 60.1685 zignARL^bB#Qu(dMrKQaw-f6)3u;z6*A7)0f%yb*>C)Jlyb#yH863<pwfR8Dm;=u$i
 60.1686 zY~R|}w(oina2o)&x0lyq7f0h}(uWV}Bw=&}Awu2#|8~&Q|3VLvdg<fy9X>wC7s%m-
 60.1687 zKN}mu!ILHxJDr`K9w2T|!LyjXgQO&}Fff=5$}JR7Q=aIoc_FGs<btH&lNPJq>VbIw
 60.1688 z46L%Gjg1Wnd<060xWAtu<T^Tf{H3D8ZhwDY9g8|9CT6_>kby=GAkkVzM@JVo#!9D#
 60.1689 z$Hwf8PRh&6A3@J-ZEc@+*S*|I{3kVo)5EXuuf~8NA|zepXEXt~pdIMm%zi?Dxu1fP
 60.1690 zAaaIqdP`BSGTA2-8pIJ9>=}9edD_wP;$3hDCx&!aEL)eNf<o=tVi*TW4`7nx;p75`
 60.1691 zO%1NiJyO!rVS!Q$%OH~M*45R8wYIkU8|dkEAOVhT$Ak^Aa;q0n=De&p*4?dqpelAo
 60.1692 zM-DYLH7TyS)?q?`K#WH-s@@sK{y9W1AfUrG`Z+s$kFUlCQ^w8Btqo9gH7s4JjHerH
 60.1693 zT4C~d(ALvV0P~_8jcsjmD{bNA1EnV713<QNig0lB-Lt+k_fNO22cV!`(NR$)a35(t
 60.1694 zJnS9b=%jFRaw?v%C@3tP08EJz8RAY*E)37e$dENFJN0?_^7zQ*PcQw}bS=-++?)wu
 60.1695 zeZM|+-MomkD-2IaNU*OpEMejt1Vo$&<{Fpavk&rPQmU$G-vj3T`n<8BVK%RzAXH6L
 60.1696 zvju+cGpgcOpFX6fQuaRM`~=>Y;`17D9K6vDPs6Ui?>I0pz+h=<`JG84=L4SfzsjOo
 60.1697 z5S{v7k3#iHrl7-*+1Taz*sWVq?vnN28O%m`LX8_9NabckX%ljFL5UgmkS2hu0#0sj
 60.1698 z^%N1${a%1LC=AN+yQOeWW-rBkRxRu{d^%)*(VL(B&JC~Y>+2^ELVFN)%Yy5GJSE+&
 60.1699 z0N8T;Kc<U7Ah!8b7SHdHIM*6>mk`Hu3C4?hKj1~V^auqyf?}8T&KMRFKR>^4D4o1y
 60.1700 zY%yQ!HUy&4il&F9kx|O5=R|-1k7pGVr*k*gaYDAkc@N-<e82f0ujt@@+Q3K9|D15r
 60.1701 zrVvYrj&3e3EX=YCUPcO#%1Gx)m^2XuDBBqr7$~;9yv$lKH)U(?<yDu;I07Uf6@1DP
 60.1702 zz4OldVjr=&XJRZWh@M2PYOuPvwu1cpqpm%Pe3XC#m3pjY#})iNVJnT>veRXDb{0WO
 60.1703 zN;*c0jSBEm&{fFDW>q+XQq;EDtc-}qs<)_rM(!_m?PaOwS07g51ilpf`00}c+1<NV
 60.1704 zT&}DAw*LM%UQo3DHM%M%FPVd^>Qp}l<tPse5riXA82uhU_0E5y3$U_cnY}X~Qu=$G
 60.1705 z_pp=2e1%@D_Gi$-&6lSgjA@U7q~_pCP(D37vkB2t%q9TNtqhb$VMz%BfKRLpO-4{)
 60.1706 z;PCp&*kCgK7a)?$+%`rVE{?Z01U&bDFG|0?lU-_DKbi6*w{UZ7i+pFUvF~ViHxI5~
 60.1707 ze$(K45qfZNP%G@deTW>;6~`gWs{2I(t{%dk;g5-pEfCGc#KKa6Pa4R{$x)OLf2#xF
 60.1708 z=XQV@#L34uQXaF9UQk?YDI+5@4sQ+f!v!~Xh3?k9A-AE3h=?c@v^y=TX<}EkWq<(#
 60.1709 zWGWaSs&F;sPKbZ>Vi85<)w||}UqMn2lyuN}=`z7RXkN|TTv5RZ<WKP<+T=VuJhgRh
 60.1710 zUncC|EO@7s#q|BDxu7K`AW*+cM05z}6H%d+o+N><MMdvVfTC~LuzdaI%?3O$kk4VV
 60.1711 zG99esgnLI6{mIVEH!EAXDVz5Qa3X#rB%~M${Gq>1B_brKN0mr{$9pFyZyOuMq1`DK
 60.1712 zC2A46HtW;}6+D@m{E1eQt`LT&@A?C?fAT%#kFy80n~#)LRAS=Tjq2dB*c{+8NtcP?
 60.1713 zlm>C42VlvJuO#L_f4c#KS;O_<J_x%B4~Z}@FXnEJ;f7Li=HJDiKL=_&efkXU9ImqJ
 60.1714 zOFgZ1`LpghnfKqa9MC@%Y>tkO;f318%>Asnr0n3=Hfm~WIfRT)if$j)$MO=+2nz}E
 60.1715 z1EN(>0~DJx5^x?Aeo9KpDqx*N$UVlo!RMGzymHQB&|Tv^pfh*31ZF+Vb%AFDm6eql
 60.1716 zdn7Y}Kxms0+_lV4A?_#AHZr2sx$wO578#JLanF5$5a(khQF;LaQsIXWAL@=L<KyCT
 60.1717 z84+6A+Alqv14r$*R<D!z9qI%eryr503*z1bk*YVIOWLkTT1slY#OT}0gX}nCGJeyh
 60.1718 zzy`Qy+OX6>M@<c%1=tNdk&%hw%1^3>^Y#z74|Kc#>3JIEl53A{)OZ?!X-sW4s)5^)
 60.1719 z@Yh4IQKgGN;gaz_-dU)0nrkQrfGrDDrf{hKU1H*Ff#|f4A3rwr^b|V+zajql^C$fq
 60.1720 zG~AN+@7}GNTUdOi|Mkm)JGiRq==9)E-xR!E3Jm)?B`L{!tv^GWNvG794|u#{$b$!1
 60.1721 zkToya_0^95AM28ft(v*RoV%kKDZ`k>(TdsnQ>Q)+@6W|qS&N>!OpO%k0Fh?j#%566
 60.1722 z4G$4M$vXmHUNjX!K|%W6$nc5am~b%}e7LbrVto8+h#qjrija5j=1qXO6k%uYy$?-K
 60.1723 zPuun-3lb8Ok?EsA)z#JdG#?SO?3nCvg~>ctPsGAn)lXc2?DoGALldf8793SG5LSHr
 60.1724 z`0-3Um$_p8GO(HzJp+S{BUK5BfQS72$HAqgrFalfphte_@JtN57)9A6@J60i_SCKz
 60.1725 z8jwG7{Lp{o8Z}<3_4|QZJn4BVE;|W<DVXg3O=*&Y->)NQkqJ6mWM^=H8pD@WP{4Q#
 60.1726 zJk|IA*m1{6>KP@Jg<B6;G&D34YHHk%Uf;&T6cH6Azq-7X32thFQ-c838ST4f>6K!M
 60.1727 z{`~pl0zTV*v`7#4t6_<;C@`;){d|BV4z||TPt)Y#X%3O^-r-qTTJ8ar&U~^p6{qNs
 60.1728 z^#5&!%+YHE!RuZ7Qb+yw@3vOm@oN0m{nQnJ2k<C@#Q+ghQ#FB`zV7p9nZB%o|7V9M
 60.1729 z598?n*^@~g*TuKG;08pyYtM2utgqwY#H+Y?V*!_Wn`Un!--aZ3`i~n&dnYDItL-P8
 60.1730 zcaFwP{=huY7g*4VK8ux;(;N{YAz{7inz}nKF0Lqf-<7zxJLQ~A$~DquG{3^og_zB&
 60.1731 z*osfmj<-l8UwJ``WnWm{p@;q|5GUf0(Uc*<3)C{yk&%=fmzBW77bIfE{8Y#`Qr)kP
 60.1732 zS-<8>?=W<~Q9LK#CNcGM0%h9CMvTrg?gY<4g`^IizLPUbvCXM0`N+lDdT)V~P}~_x
 60.1733 zi~v+CB6=Dcn#?Dq^c_X^5Ir7qMPAC1;X#cmsszrw3REZ)(VBVab;S&!I9ZW1s;0U!
 60.1734 zv9f+riRaAtH8WGMP#>)i4?Q+xpBN!?c5%tRbLWnbyu5tjky>bY_*Qgm?C8=fG|ETQ
 60.1735 z!+)lMuHK%XPv_A|uwWJzHbB_f6`mX)JG#yUYiesN(h(@AM3&~*J}DY~s;9^F!reU$
 60.1736 zuB^zlpZzXa7W48TM~0?$T5-y;j|AzIQbOOHg#cgePuAE*<6U9Y%m_uAkIKZt!HDrY
 60.1737 z&#)84g%<?TZ!?|fiqMoZYa?bFn9)g1wGjzi0C@=PHrw?>SfQ^ofvQTYu0jR|22%)n
 60.1738 zl<>lOvZX(Ntg4Z`TqY(as#YKIGHTnwC39Aup0%4F<tb}NPA4r))80`)_~5I`lPw<@
 60.1739 zQsFb2Lg{CHtX&ULqV<MDEA@+uWoQ=OdubC85-y26`w?&nls<771s41o{E-Zat|&bn
 60.1740 z=vDxaL$$XuLJt+ZsK8YyB|JPFCt6Rt9L|XY5?MijA#X<b&&NozCG_CsiDo^hGXHOX
 60.1741 zkHb>&?w>EH@;f(6!+B~)(aQ+Y3f8Q90ZHSMPusJ{Ht37G!K%{OCV)6wODXO*U6H@x
 60.1742 z?ct$`bN|s7*OqtqmS%@a^qF!@5K;BK=NPr}{ODZy!iOrZ1WQs`$fxDbYa#ZOC+(?v
 60.1743 z!+O&w)JPIJ<FD}W)!JViuBw&dkn;yt|E>i(aTzdki%t;NN|mxN&t-<?9`=`;29u$y
 60.1744 z%qMi){(02h&mH=slhsysGeI`xmm_q;_!18=1Jtv#vtyt>cE(Cg8q2_4+LNga^H=gF
 60.1745 z+=gC2sJfj0i>$W*s<MmPhHn~a0Rd4YL{LDwyOfgdLw5;+bfXd?CEXw*4N}r6Dj_A^
 60.1746 z-Q8XPzIonv=KsFWnKRDlId|-}*0ru{@3q$^Aw-JSj{9j!Qo+!m&thao;!N|l6orb0
 60.1747 zhCMbWX3?cr=p^(C#8m2^@PLno5fgIeXvp>zy1b^gV1!;$Cv<()P)qIV523(_ymv|I
 60.1748 z*ZT+W{l|~(4~sNx4!SscaR#j`jDy4n$DTnkRl7BTbh{6&N5gMlo8Uac;iZK2^H=7|
 60.1749 z7NtZjL-3+9_cLnhpI3kyuQ9tkluS)QL8NuDr`WJ34uzL~$S@;TpQ%H7O2k26eGwy@
 60.1750 z)eQ@J6$HZiVl^{jnP-WwN;PpP>I$j3)_DUNUWs---JMG~AI>W*j41^8B3(Qpm*&2l
 60.1751 z_zFgkxZl!XY-j_)z)-q6I~Q^27$FczdLUhOCUM!EgXqcZDQW2yzF;z4`WwrWRL+v6
 60.1752 zVilc|QrQ0YZ&Xk~z%vvS6!+;tq&;4pFd;}CJKYmkoF)`FMra39C#!;aR>*y6shp7w
 60.1753 z_~7~Ck`h+9mf^3ht?dI{5eA08d&zGa_kzR2UE~xLT>7mmqGDoVROQDs9UMxF3JPpe
 60.1754 z$=^2UNBH}rUaYQK<^YY!yS%c}8S?4VH=x|uJv}|QW`BN=gS#_jD?PQ2Qba>Tt9-y?
 60.1755 zhXW|!XSnf6kU~!R9Xvc{_rpG^Wa1D9_JSWj2F+(0z4hB7C{JWxy>jYlZ?`{f6S;P<
 60.1756 z9V;`l>Ykbb5G9oP^(#EJJU^Hv7r!r`%&o^E=(6<pUK>z<=T@BL3CT6|)YM||w1ZJ_
 60.1757 zaIhUzV%8Zqi%rU$a(r@9eDH26W<g0y%M$4QCE^DUHe%x9vY#?AMBO7L?POqJczt<!
 60.1758 z$&l`~-w_J9XdL&_$_p_5gT#O@kvpz<g1_>`KA`8Nxy=XbG<cpgGCqG^G>jRVlJfAP
 60.1759 zrA1uF)%66u?SXX#;`L-T+b$TrwYPv5DFVvF!QR@|CIzQ(LA%N7`l=b93v-i|ifo|J
 60.1760 z7u*-y?-m0|d$GCs8oo?TM1<lCd;5|yK>Ez!qdvAlzKM~aN|Vhh8>_TU-T`#{a-hHe
 60.1761 zAvQMl5+Hx;&CQ}iAMk|}gnX|rnMg_FUwT&CjsNJlS?q|`Z|wwZz5)>U(Bd6FAXm3@
 60.1762 zRPwB^AfWI*pIjdFS|on2vl(G71}}4-%zSgcQM>?h=!!cC>7B(zQ+gJb;=g&SIny5J
 60.1763 zYdPgl2xU^e^=sa~D0M$rW)``*EblGSsd^|YCuasm=AM|C*x&mc=BC0&gR0s+Jw5X4
 60.1764 z+7oHvju_M!h9PnE<v$FGPF*7Y^E+k6^QCwL-RtX<rU+!n)AJ%fLn3IIMXO|Xd2_7X
 60.1765 z5tmY>rlzKUa8RvoZ6F6<QBkqjdH(LBM`?HvNdCC+oaCNkuTZ?z_Agur9fxc;J~uaa
 60.1766 zroO(O)1oKEVY=Sk(Gd982B2S4e>*#In*=;aNl7a}^4G{vvUKK8T?99o29Ti}D4y{T
 60.1767 zxjF8+ju$-t{|@-A%T%2!ODY(zqpgW5417xA`VMs!U{MuiWoqqed!rrOiOM6Tf+4Q-
 60.1768 z_bx6j;|>e0_oqK}kI!_nG)>+Bq0s})uCF7kQa~Q~^a*RNxaoSG9nLTVD?MpK7vaBu
 60.1769 zOIE=r8jVd%*Z@+uP-j2a@(=FVNn$zf;I>gzRSWLj^B536uE&pm-Szvuo0O80G6-&k
 60.1770 zsL}l%5gZ&@U0tolmI%A$@HeHWhsE{#vh(o7#qUMxj<bW6)L*}Tg>(tug-;}SxYCvA
 60.1771 zDCOl<Usu!S`1b9?x8MWd|I+tzPpawa;zWuo>yyPmwmcFb=<7g~s^z#J0jZSAqFX(S
 60.1772 z3l(S<4+jMWSrj5F7_8bqQ{&PJ&^&&e`p9E7<1WaCc&(j45^hCDN5ehkFExu0L#`*=
 60.1773 zQ=~gJD{1qAm2gLZ2yhQq4*liXS)~Ax3*sRMpgpLvRGx9@)5Ui>FGpzuarBmJN*J1S
 60.1774 zo$+?bQApkA(1*{iqDob8b(m`j7;EhuDbyzV;dQouO&*r5Vg3w^$?b=oz29}J*16$i
 60.1775 zXU5lPu{{zuyxvN&tp<gyUQs6r480aK@SFfU*dKV?)51mz_JY_VL`6P5H0jVr;Z8*N
 60.1776 zsvRU(XT56sxzFAg$7WkIO(GgJkyO0Ar*>H?+BV#rutx$_DyfhrSVIN@+P8c-q-k*U
 60.1777 zF(kzC{BS^#Nd80>U`TRW+IB*6GUL(yem_i0(k80j>=@N6fY<s9a=juSFYln|pJjMQ
 60.1778 zF2J9M4AC9%qIoEy-pwIfzqk#6S)Br)OdTDC;9l+52kAG}$h&O%!a$b}QV6(Q8db{<
 60.1779 zPhRB>ttS<{%*x7QA813G{T)p7D7&MO%Vrq$#fum2VGnqi8EI(dRm8;J*#hWnlaiD?
 60.1780 zB_Fo>>u@^KbUl>w<HwI-ew&f+VeUsmnj1y-T|GT<AhfJP8E4>~1f=)xucbsrW_<22
 60.1781 z<rfhVsQ}WTRxX|yMigg>HkeH0Qk%4fvL)98D0RqZNd!7|iPx(Cn*hL`d-7v#e?mwb
 60.1782 zf^hD$+qH#L#FNW@Za7~rpxziR+8BwkT|e^Zh<q%C96=#4{N&lQwH%-iWgR!RCTj*f
 60.1783 zf4)bPP-BQ4a}@h<dFgd=vD4&x2sD5R$#aAneFrV~fFudjzVsGuSLBF$Qw(xrR}vTF
 60.1784 zYw(6s4<__AG~yPfTxW#L50<-?0jTwGRVjG#_fUkI99?bEl`kV<B7YukuN_2(Q+S|=
 60.1785 zq<Q(C>3wZ&?Xq;=Yd#3_^73Nfc|H0W2Ldo$)E0W5<K@;^IXyfzf5uY3D;}j^9261~
 60.1786 zlAWI~yT8{)dBVWR7)?(26jD-FHbQ~mbqBv1Q@CC|TE94cacQXoQmel{-^dfWI*fKT
 60.1787 zH8qtl%hsu~``a2ttNC5mVQ|ffdwY939}JZRax(~iA@JgdfIN2CtlLoX+J9Nj%SmIv
 60.1788 z#=&_N*|`LdehomLVjW9M%RGk~SH}}gb#?XVuCj`XqM>LxhS+s@=UHiXJ_EoAc%dY-
 60.1789 ztgP%I(k$RUis%qf4qG$V$5qL2L>H(r*gmA7aF*x8OZPdq8l0?g3<4J$(!KWp0O*Gy
 60.1790 zP2iL`@-i|Gn}Bn50I-C&KkLcL$}R%Ft`4I)K(L9>P#meSmnJCimVf}M@P~Z8K4@F5
 60.1791 z(wM%g#h)lJ0a1fc(b1FS@ra3u6XdURhpamW^HilcxqcdbPENLg)h&JlKuH<Ll>`tT
 60.1792 zC)!Ou-j<G)ccAO*>%ZrO4|kewd}jNz<S^Ep_zxuRy#g1Q@V#81l(3twzu)AtH6F9v
 60.1793 zYHSPSNe>$i+K?qD8JqF%+|g03-fUrmER_y86W`UVbGdQ`T&RM1yE12C66t=FcGW=f
 60.1794 z`P-u_3Pbh+J!AGxc0fC^j7>~%eSdsTOtgA)dh!cjM3)r+^QJ@)-dR@y+vA(`n@fu#
 60.1795 z{9*VUB~3u@UlnP{ExxUJ1aJ7UEvQ-m+~?aW7^HwbM=UI?Z$l^SkiC=BV0W63z!Yzy
 60.1796 zne;IyEe}uCuuRW86bwO)LajbexNHCP^t5wQ*f2dOr`kl5@6BJpDyC8W)C)9>U{}V%
 60.1797 z#<o%C;&SzE{dG@1S{rWR32#CE92ci?P(EGlV4^8OgAKh5f2bYp<^hs}9T;j2UVi>{
 60.1798 z=*zRVxze^rojSEnc??`!71^cvujp)cR}i|oOd(-mN1Q1iL5^G5{Ffoo`ToNP8{v8`
 60.1799 za@_fa1&ZVCsf~uWOMj6JypLjU%FH@d9*i?r+`mEpjAMAq=kFrj9%j>{H4Sn*mSZQ6
 60.1800 z-Q?&K4vvAoNt3XS?(Pcs@VI|<JB^+Lhoyj79Sv+8$;<NJe<0%H6<)Ih5<}TNMh$;1
 60.1801 zu1GV<GNWICjfz4?YH@3PPC5qwkhlhRcbqqd(YWX%(IAyPHMnz|7KrtKK7c2foo?F;
 60.1802 zbQF%RUx-1CO%3+aINV{y;_^zUqWBu-75V=D{z+_?Rd!QlJU)eRd;!n&99V&6A}|Os
 60.1803 zWPh}-9?-X+M5`bx`ziI-O0P|fjZ=`Q0F$PhvoTS<7<rM|$9Ya2ot|#MI0lyh_9i5d
 60.1804 z6<=Rn@Qm6t$E>{y%*)F=hT!4fkX3R#vAA?B0b%EC26uo$BMg@G-57q326>&%1tCpT
 60.1805 z+7{fmUYnm+S(}?v9ylEA?37cT*=;@#M^QRiL4Yuu?XCFs?Hiqug^5X~C!n|oVMN*x
 60.1806 zRje$V{jBKF)yYgcz9=OLNvrnD2~zik0x<B}ZGecp?|P1Z=gu=8z3e{AU3ilRdsSmo
 60.1807 zQ`3IMh<?ZfU}<Aj(;gcqU%pV4uh0XYDgy|=_6F)R9v;o4v@|<zhxx_DZ+PGW@F!9>
 60.1808 z%bC1i<aG8!RhQ7tR@Dq%-W$t|4<96kn%|)u=;`VXE<YNv<gDzBd%j_{&Biu1I=cGd
 60.1809 z!v{IQ7`XuBNE$1*m_hcxj}EZ%UtQx0P-xGjA|82nc6JslC-C$0=ezDqQ=IL0vW)OG
 60.1810 z*@E=@ft@zt&C0_jNEF>4D7+vofW8RKJI{+-HNM5wxojc2DUSi#2RH;Mf)vSMY;3%)
 60.1811 z*7}5wjsZuLn^~`R5!S|UAwcDFW#+y1{*b-{Gz>=?=zvC_t6E0|g>dAdu=cQMiSOUP
 60.1812 zR|MvPsPBFvDClJ`BNP0JE_$uLp@A`;N&BtI;c6e(kSuswc6gKVk7Pba^HH7|FCrYM
 60.1813 zudlCL-fKOq_#at*7Rc%vHu<Z|+lmE4!><Q^uy^+M7Q+p-IeB@t?!d<eY+49%$Z2aQ
 60.1814 z)+?q9o1h>g|Mdj4`1qd${*vHsGfDt!X5#_`PheLtv`)LPr0T;w4n_-IJ-q_>6xn*a
 60.1815 zsoIUewlGi6j-`E%AosYqxbd!Jo;UyAqhWuC+joCyJj(5Me;`^O)d2Whkyw_>7@SC`
 60.1816 z;hrAW=LvwYwpNQz!Dn%q7dUTMFND_v;jYJ-AJYpTWX=I+uJ!YyjS6zFm6a97;X>^J
 60.1817 zXIKW}bOPS8_G$e<)nuVHtW(%w{`ZStIPT<O=*r5<aPQ{LMj$Qh-qz^C=Tq{ph{355
 60.1818 z5DwI2_p$R>M$K#R48=L*=H=5hjyWfQz65D#XbhikSHlMf-??*VL|j5*Lee=7Xuu_S
 60.1819 zncf_5w!iiDf@^Sc!`<SA2V>ja-QAhlOMstWV{5wMqJEEW6M#*v@7YrP&l&HNsWX5L
 60.1820 ziMF}Z`XKPlrOl_d7nRrmSWf}4e!Jgns!>qubLAm#7N?LCty||J-&btV^!AI3N~@NN
 60.1821 zib}U5vq9q~4iyHB%{Ec&f&LLWITkM>9tp{|{QAWa9Tk=G`0-=!P*3W^?Wwxqp(<FP
 60.1822 z8TeiejSLN`<3d0qC<AUWwc3}tfU`jsWfU75TL~XQWuGqW{prv{2sox7AT7(*lOp-l
 60.1823 z+}zy!MH)H>7fG?POArJQq6bk#5{O^9yxsfrr<kgW3JnJ2Sk7<FN#2pbX0ne&_4KK9
 60.1824 zB0v~b^{jz4T3CX@pQg)wY`AN!euT)i+de!``Kn5F#sPwSeSOt+b#>*-V6M{$<Xr6W
 60.1825 z@p01WsoNRI6}9z;{c=_yRjNZ@)EI1h@Ko{!U$e^<3>m|{<3Muf0vK?|lcj=1<aQ3q
 60.1826 z`OyN<&PFCCsyTnejEph_ThA4L{%<V+4C2+Frba=29>8r#2(_K6t>|I$gd-iq(w~G%
 60.1827 zuib-#0>lr?zN2^pANP_qN5J=mph?!t8$ivR3E6HBQc(NlPDQ1b6G6r%eg^M#v|H{<
 60.1828 zg!h#=lL`pb@fYtjoJ?=naSFJG0ls74e$dThQ(>OKWuw9DCkL;VTGi`j_Kg<m*07t7
 60.1829 zeAhebQL&UC$Wc^;YtRV^UgCi8D9%=~0*EBkCHSHV0F2|wwC9_mmzxC|MYW|s2_&~h
 60.1830 z<0e|O0J86x*Vr^=s=?`ZL5-ucSh%)@6LcS;Ae_);tqy{}A`k^g)vV<RZ*PeKz;*S@
 60.1831 z6@U_&i+F_7{S&tbs4R9CmYp2<q#%%qJzF-4n|yE~I3Y)AqoCs`C8lkr2)HuSFfwjP
 60.1832 z0_VRID|@tnLFuJbkmv=1sAx__E{;j&9Kg6DJZJ0;sN-Xwi>)d|tol)DMa7VH#dwlp
 60.1833 z2@v$2qS6SxMz5OXe2`F978li2`R$Sj)Cz{8fZ`7V(s~)*!Z0`nWM!%W5C$zk-1i9X
 60.1834 z{U+*QPb?gknGB~8@OTXjH5?iudew#miHnO{>+NCT<16;|_TD@b61s|yii$G1fB(J|
 60.1835 zT;!mDrN*G%9USj~;%Neg8&6JJ`nC&Z%pQga;A)YjAmR1q=00T^&;eOe&O4YXPc7eb
 60.1836 zDOR(KTSQS#u0XX2E}=X;&yOcz()zpvl$%8q`NDMx#Oigr%P*7+&Bki#-``!!Nk3Ny
 60.1837 zkIhG#ChYC;6DS#9o)baG$K=FV0n4eb(=|qRSK8&~OX%q6!}t4-+9-X0B&Pk$d>O_r
 60.1838 zAWp@_rLM25``V%wTyoAmJDBN1AfdMC1z!(E!ko9}PUvTOV%!WuyIEViAjxLaxTQrT
 60.1839 zOAQGz>qiUvGNN0uMc@s12Ij1x&uMA;sxnST>qAMjpRDj1RAEQSNKH*026W8ABIg7+
 60.1840 zbF3SiLJWv?Z&6XvBK&7rDpp>E-_k)s_^!)50-x})Kl}3oHl2JD=Q6zM>BZyMwzgdS
 60.1841 zso%|Y0DN&#wns)raupZUTx<Xz?Z(KK&5DYPi5a|<*J|)^R@#|vki%ITA`C`_S0u&&
 60.1842 zUE7CQ<?d3v0o~?Q9Zx^!F!-5g0&~F*FC+^1d=b&(fkjpDD6vMo&!AkO>&O@x8MDac
 60.1843 zw|-sEhp-&;`dn7e01WMQK$ieIy^Qq=)<t8JyYL#t14o(Yj%fN3fe#hs<>lLr7u%hj
 60.1844 zdUn<JR;(U}t16D(Q9#{qrh6Zc8R_fmNAJ{be9r({0=LoYtn9;@N4AQp>ISU|okB{&
 60.1845 z()v2Wf)ZUdN1>ZlFD@-@dbP38?DBNaoag}?8=JYOlF->=^z)>Lxk3~xcwMZf2QE6Q
 60.1846 zlIk;#xkduNfi>(Cj2InVT)xLvNXy8SV))I^8&7=vh}i^_cAi)1(Xp}W2V&82am#85
 60.1847 zgf$8Td+{!(MDa5e0RaJTEiEl0xV-^>FwlaCVA5Dwv*^^+=W^gm0>0Pv3w@bVQ$RV}
 60.1848 z5c0H^qt#Yd=i)9L+uGVX?9TpN1^GHo=<0Cb*VN=BT_T-X=-BwUHEu^Ch@-@pnR#Q|
 60.1849 zfVNskNpw%mz(?ZYZfrR5C&TmHC@sB*z%H9ti_wb1iAH}$e^?D*g%#96qQ%9@^o77S
 60.1850 zxBXqNUODqq?C<Y?OH52GtFGp~00UI>P{5^YX!n3Eb?S+bkRBdp1B!W1%GeD&vqygS
 60.1851 zu7mktuJY@11(3T*;LXvVTNNYo27tNn%TRndHhs}b!mP_XI6Qp(?%WP2P21EoT{JW_
 60.1852 z7lzpUWv`B&9)%f@)I185Vq~*60VZGD3>V(1TL>4}21)D00Ir7JUhZK5yuGZveB<{x
 60.1853 zh~jc}F?1o%W3@zPMkXdTViJ<dV0JeNIV{z^y*+b_%!h(*_920>74Zv`KWmV4QSIxl
 60.1854 z#_gb|sL|S6gwfh@zf3h4fy^vCLP`SWfgpJA$s6FrAr@T;k#Ei)E@TArrz*TX-qf~$
 60.1855 zO3KR%V!Ifam<k6t48dET0oT|@6b-vIAT*5v@hOFW&di7i($bptw?{svpY+^mfVZ;<
 60.1856 zw0<sR+wL~|J2s~63S8;{WG-2d;9@g6viVv&3V;0gfnX!UpRn1!h8w$a;^Rjo;lBgk
 60.1857 zb3*BJ`qOr_#3(a0C55wB_~LacqjYvkN{Y3@Ly*!3s$P%1{o|Ah$TehYW;R4l?hc@X
 60.1858 z>dl)S&pM|y!fBwaJhy?zJIu|^`MRG>xz-^$Uzq;+^M?<Jpf<<F_Q*_T{rXk7k;(v&
 60.1859 zvCihCx62@TB_$>AKYsjZFjA;(;^KCD;7-z(>$j1OCjbMclh*=jtqB+6$e|LOk?&-h
 60.1860 znj^9t8^e(?F^jd<L;2TmzZl2s%QHl*4B$k^+0S_(Dk`ckKYxP&_Z#zu`v(<ySu+B6
 60.1861 z?rt3cSWNOne7w_PdsdK&HiL<pyjcm`Hl*-l2UBMU#w;Y-H~MLi9h-znn&bK=n26rX
 60.1862 z+uM5wuKcCwjA!AQSe!5&r643Ee2COMHPtYT;a@W?$6?V^&t=;F`907<5~|KJ#>QVm
 60.1863 z);xgVT!NK4O#B`Rc^p0mWBeD0>}ix-Aqm5q>#Gf2v$gSxg7fvEg1ald=^_*VY^q92
 60.1864 z^VSk!7P7&0KVt07_H{~Xs`F0$fkKMW=u)Nagn0I=M0RvY0q~>NzP?h04@ax3mO;f$
 60.1865 z*W(vpfEDUocaDLWV+W}uS;W_;KSLtOxa%l49}X>`AvO*XpF5YvLBvM^(zm3Lz)I~1
 60.1866 z0@@wqBmJR>p-)zTK|BUN=wRXCP`U|B6ggGr$|DfKS@9qP3Jj(|1-u6D>imdtbEe7n
 60.1867 z-Q4ohlG*Y5QQ&f}W}Bm>xElMD_3i_&qcXDq-B!0*6a^r2c5{8wgbk><yzofP+oewz
 60.1868 zG0#+A-q%#j`t~j1s&Rg0Wn|U`u<LFO;i+neOnKiMwzSkqQJTorFwZh>DNm4!Qt176
 60.1869 zX5t8Nzliwp?+{r}@Fr(0k+n*DB1w~Sd=6iq_S|_sUScG12oQQk3h;Ip5J*gdf|tWz
 60.1870 zUxf5;$QibqvU?vj43CY~<QEpc!h#;Z41J19wYR&QE9fvU>9<Dk^0skZ2Velq<kys>
 60.1871 zq$@xg9yK;Ln*9pG@1+F)b&Y~AsPwNuv)H3}-ObbUL6rG9V1!8&QagZFxV#iLflC1z
 60.1872 z^xtFxcMVLGr6mlW{`oUQmLYbSwggeuw36;C+}YE!-46_X;U5@Cg8P8GaP@2@y_YpL
 60.1873 z_|F$0pkslqco3PEw!H|_JeTqBkM&0zBL-|;k4zN2+mHyz4aO%XY=Dz1v04x2z6VaZ
 60.1874 zteC`^m)qD1A8bb-DSh~W`}N1^QWGgn@W&bCx3&H(xi_b0XQfga7gdC!1b&fWMbeUz
 60.1875 zPIWygd_-20^y?tmZsQA|&XNrr4S(00a0KzV@?bm;koSW0AQ(hm0D3J_tXordF<hi0
 60.1876 zAuB7perU%Y3(q5MmiHcC0lrC!0lj<o&b&8Se!?!neR9*a?aP-h6BO%1`N$|J8?;Z4
 60.1877 zJQ`>P1avfJ{{0U80Ry2nd*VGbQFKGdPmW}qP8;bK2;=V611^65=;#@%1)zUy@B;M!
 60.1878 zR%UlHj{zDyZ!cqKw@nF*5$5w0_ddI1o=RRgC;hZpXPh3q(W3hf5gl=2a$`*%pbHg{
 60.1879 zlDfJXd~!&fxtSTo(ed$j_M-RJYu7M=f}2llW*2VE&1J~T$ecY97M`YNVtO?cGlsk&
 60.1880 zfHxFzh4-a{qXa-&D(j`^-u$01ybs@8f;C$|ev~E#)?s|eYAAXQqF3L>IH$c`Ivqe|
 60.1881 zeBE|!!E~bvi0#|~)peJI%0H~TySxAFCac-p0T~*B+e5nSFUmv!R^tBq_iwjcHHPv#
 60.1882 zc^@$F(UCr)_yK+yhw@J%;ZISZLxid$J3D)qhT#$5LVY8)-*fWWQor}v)IHajaj0=W
 60.1883 z$kvmK(%xF)b+y-r2p{MbSbZ(n33}gA=n?>6i_J8UFVpCOih*<FJMoNv7-(n}<0U`9
 60.1884 z&~T1Qm*?ShFonG|*_fUEl2?q}p>kmps>blA`5j8~rP%bS0~Px|(x~s}j~^uu_d8kW
 60.1885 zMF8J*?pd1w9+2ib<*XS~vjTC+eC4N8OiQ^-Ogy-WDh>X8xTlB}ATHv(KG*`Hh6Gu9
 60.1886 z*phR!*12Ftj-`Q9I!|p_)+HuBUalCP*Cr%XSp)Yz0P)83^l5Hv3M?l-2*pQ5M{jTn
 60.1887 zyE-|k!5eQp(lqt;nHiryuVCY$p{A#oLg?#H8>)|Ptqv8$kELHNb;hS6*o~9`AasXi
 60.1888 zrtYEa76eo}-xIw*%2P091e9thWBErWS-NN|=u3XSESAwS-q-N_pVtnsnum9;@G)u>
 60.1889 zK80s53ikGi=oL<-q@)CJ9tn=VZutsQigk_dcdj%&a;VmI=Q{wg@~nL6^(V2irLflk
 60.1890 zn!9pyxgz5IiZUWN*nyLl@AB%ZQ$AW7E*tfGnHgOCM&&EqjW%Sh%+Jq{Uj!Rmyu70b
 60.1891 zUW;{DXdSBA_1ItR;J;FR{*04zaC2|G!bWqJqgQa?TjZVA@d1bJFQx=o(q&9PgeXQ)
 60.1892 z8}*D)+&YceLl9xQ%$g{oW@b-<3~p-;%7BccPi7uibBc;()I7Fabq6`!nUG$<b$jy~
 60.1893 zh$jAIou)5enq5w|r{u4%cdsvYFz9G$IY;fie}BCDXF2WxkNpma<<w8#E-$_Q1mZqG
 60.1894 z?iO<07%pmDTU%4e?(_s~Bj=e<Z<<gyT?AZH<;ta(J!HK%tn=oGtEw^U5Qy}C0HQt8
 60.1895 zp@2(Yz+LZpY>@q8Vq(yPbSpu8i=By)(b#mjJSL?+?6R)F5-Ss=D`(1qT1Fk|%G>9O
 60.1896 zvCyKmfi)yG_5p&JpI=;zBu*{^(8jL^4$%-CexJkqTOzY6L+n1rBe&TeU~yMXhFEUD
 60.1897 z&%c8|ezd>O@3cDFbaS=yShHB4Vo>W9Ob!7I;F9s$&rU@MpRf9bkg@>n?@J<PRe^v@
 60.1898 z?0aCNc_s^M0<VyQXKtI}6DjPHCfeXx?jo(yugOLl_5J-S$zcz8T-=uvEdmpCd^@6^
 60.1899 z@VtsY+L{>I{3hyovb|Ml{O8m6z=UGGI&&WLu7tb6!NEm{#3zx`tghRW8`+%|h$4A6
 60.1900 zx6@R>x*WL>fk68d+ko`Ejfam<nF0W_@>Nm8!xcP+FXz)LvD$v0yP_l#hCYwqky$8E
 60.1901 z;#fo;MKO#VeW&$azt{lH@XM$J!51}#d-NdOMyuY;bOMf9crYik)t^ilyjV6WMgSav
 60.1902 z-lO6AB2MrPcv2zm*P{g1we`8Vt5OSNIAK8Yd+Nor80fF)x&f!}Fz`N7e_yi#j5Lah
 60.1903 zhBl=-v*`%WqKJqz?Z1DIT=(hICq!`6h`#4@yY3{eXGaZzJkxHE-2iqOWltRJ?d91!
 60.1904 zI4IA6oSs)!*8h6{2`A?dR$<}mAA4oWKtb}lZl@>;IjjSMq|V33cMM4BYoy;mbGmPI
 60.1905 zC329yiqHA>Z8X5&|COZB4A(uZ0Jvb$8#o-lP<3c`3LnRx$u6(wd~rbE^#h(gV=`{?
 60.1906 z7v@wntgK4zTjN}$3)gzW!ovA*O~vw03`!<e{U#uUmOo3=s_LBUGA7{}iuh5Vmb+hU
 60.1907 zt>b364i7-WRsXp2VoTXO%j}R?FW!kd3E;$PTUR8-{^xhQ{c<c>o^Eb~Ry_^ytlQYw
 60.1908 zn0Yh}Gc$AT*}=+49y0sCH79Q1R^i!q@F1-^7u!+5AlB6;$SzNsZi+ZwDdr4}nOax~
 60.1909 z0B%}46h9030gbeh$gI=o<=$|W>cpQ)%gESS+9*i^)n6S?$SlWUU|?t}r0|wb=O=<p
 60.1910 zW@Qr0BzLgC-wy^SXBt(-$S7m}WXAV|(^fJ)I(lLEp9KEYSr<p|VW0I)S9Arud~&8a
 60.1911 zqf^Gtct@1Y&xmA_u7Vu|6eEUTF<eAsVq;TKUQsdRG-#?}W|p-$<vO!f3tZJh5if55
 60.1912 z6PZ<PlL`>(hYue*9V~YjM3+2eVTu2asL0px?gdYL7Ut&%l}l`qXKEC5Yj9khE=1VD
 60.1913 zeQ+is^4I{KetHW2VT1NN2*h_^;WYQ+&O57t?5x0`Akv|eQw&Nk`xk)TB-SXsded;E
 60.1914 zAuAUiqF)>jFn?lne0cq2+AiD?V-a5zd#<i3YZXZsnRW90#5axBF`Va&7|n*IAE@@$
 60.1915 zjyz~-X-8og)~k8@hfPGpKwnLb_Bk_i9K0frf&WMsaPBD10P&1B>)cr?d59v7k!NP%
 60.1916 zpFX|4Tuy%D^))kd3Z#(KABZB_Cr_5t9Oo;3b7Ns++h%_Knqq8XlG@+jPyFJ=i!z{!
 60.1917 zwO_ml2un{lSc+B@PK0+X^UI495fTyu9HTT}jsO3brR=PBGj`P9pzQLx8TozuIPM1m
 60.1918 zVqw|$`XC*y`4~p~1J@!HBP!NwLqg<I{ln_&>bU9XmPeYdkBUFQEBf-3#l675s=_yy
 60.1919 z2L;QIU@aXI78a(EGr(0q_Oq=`%6au)M#xdBBi!S+58fxLU+>me_iQ3sn)W<i-{YAP
 60.1920 z;MYeQPmtjLsOr5UH<v>IosM5D6xrgGR#;;{go}~n;+e0wZO4C5lQQdC_HUrAQ)-OE
 60.1921 z^&LbwR1_^t{&7x7&2rFY^Vq@!8t|BqUpNA#K%?-!nXcz!<>np+@m*lIw6qjB!_p8E
 60.1922 z5;8tLtzV$@^vC~5&YhJsPiBb>B}*hKK;K+IBnH%&Mu>s2M1wG(_U`W3?Ck7uc>r<M
 60.1923 zYhCO>=dH;Hj}T7$za<kx^we;*1U)@{MQUoQ26Oy|iLo&)d;s;b{tQqnJMe<S1E7@C
 60.1924 zfB-m#=Um}sP`K37IGGT|S(>5@ITDzF($&><t5Cb#&g*#0q9QOL7JyliUR~uzzIuUO
 60.1925 zf@fM)Rn>C5fltjLfP4%<IfQ>?%z41Gw?M_8T_swib$ox5S~cS%a0D;YX@j_~0;uZ5
 60.1926 z`0Sb0Zh1cdocX;r%BDT=>zUW9$QhZLncG15tjxGAgv~~XTvxkFNQ^$DpcqQ#c@v(-
 60.1927 zWusvyalsArvBW-w>!kAeq+{=tG6G@EJq@cW_~d98SVV1XSeVK9`1q(>02t;01OJag
 60.1928 zz=e~SBMUHWIQJT_bS0|3L4)}W#VdSh1YuN1O4Vh~i`jgpF)FN0_Mlm3m>t>?YhNBt
 60.1929 zysl_iYsa0fvYT431KPe>V7ofg5~#|GZ2g}9Eg~p>t=r@?#mvs$&-eJT1a)+W6S%px
 60.1930 zfq{W@JhR>);OW)?jHdRNI_sK1il{JeUIjT&+t_&i83sm>NAbf=xD?>er+eN}QBjln
 60.1931 zK4(j(&Ktvt4gFkZe`EH5$bg%UKUPpsh?XxV0AfUwg4dqvEnqcV1Bcv){Lf2qNlD{7
 60.1932 zvgzsnx4<De21f^8o`f^)|5F)JFl3$l_3PIK`LUM*t?0YU0phEgB@&yWA3x@9Sy`c+
 60.1933 z!e@yr0EOb5?;~<`IKUXDUj8j7rxTusNz3j;K|$$+`RRkOEx2#OF)*zo9|*Hfz!>zR
 60.1934 z0VJfPq~zB+t*JQNT%F8#Y?ijYO;%OTRAaCO%5du*CFKrChl?>$QS+7-7CG3Mm```W
 60.1935 zQ@R7yG<JD*@P^Cj+DbuRKh0^SCsmkUA!WDLc_Z%Yw{Mcm>+6W6l@(24_x;6s?Q-)e
 60.1936 zcFo}7gqRrOI`4~Pcc~XIY5<^B^YZaoc^s}PbGz-%Mp>kLbISq02Vpu|2i|y?w-E?O
 60.1937 z62YTE)v8xjt^#fSqaD%odH|8`+HX(t_14!5zOb^&8|>^XfJ^4h;A1&BR=Shpw^mn2
 60.1938 z7e^-a!yP5YWl&BZLNmx(mUCO^NYZG#5B+>~+$ILG61vI?bD-Dnc0>MsV>z(ZmQpYW
 60.1939 zDyn#=(ssfFHrYL5;)fj9hKa)7=gr`$+kCFhW8u@|LFyg@YFu&~XixB+Z-u$JCEe}q
 60.1940 z_Jfw3+z<f?i3Yr1{9t=~dmIQ)ys*&F!ZUjcpm~Y_e2ye8{n4_tTuorq{9cXXr^`I@
 60.1941 z^2LiQLhvKI+UdoP=o^~&PCYyd{=;7n-qhbM9NCzgpZ}VdpC9FQx!2b4_wV0t46*B$
 60.1942 zss=evDof$ww;IP4yyE=)e7>{OwVZUH1^`8$`uyNIK$&Q|F!24isD40|-?+?ppWH)g
 60.1943 zhP#_M!bj6~{{4%`vx54S!k9e-cu^uEsf*@oYsClCIBfryTg8yp4Aw+1vORJ0q{b+>
 60.1944 zHd)YpL|g{y5C#QR;!tFs8iNi5XGgfr2>?~AfWWp-At7d^rKM@`2Py$%p<E&e?>ROe
 60.1945 z-uL?gMSYe8z==v+cl37v5yv}SFDSl@f36b;HxzeTFpUGAw!0pplJ`SKR`xB|r9qL#
 60.1946 z1l$|XKvMGelL2Qg@~~+DxGEYN<~O~**X6^nnJB#vm5cZH-zFl8;@X$?le}+3Dy;31
 60.1947 zC(|3C<nspy2a{gLvL_byF)F}ohSt)iNX_k$k8J`e8;^!{c!1t!<aeV9xve=)YEz<4
 60.1948 zoSa2GcSU-QJY#3iEz!wNTRvJ{9mdGQQk+N2@4o*nXwT%ylP6pYN4BqDI|0nHY;>T(
 60.1949 zhQ6shL&tlVTYGbTae%b?tEJ^{{z!2JW!TFB!=nY3rptM2{>p23dKB(LRsU+FC_len
 60.1950 zCQIdMtgPq4QfzE&6rhx75O68=zQGZzJlllEWnfBlgM%PSAF>kLiOQr$XaN0VA3b`+
 60.1951 z<w)V_?rxRD|0?qKq4{wo*bBHk%#p;43mc&na-GQEZKiQ%_gkIH?|411$mK?c*?sK;
 60.1952 z5e)<a5#1Hlxpbs~5&M5H;zE$Fo}LYte!a_9k{qDqvjRKyj=!rN76OI#+aIF<Bvw`Z
 60.1953 z<Fr2bjK^^TK0)w8Q$u4|7E4`SeeLz@*GdS)x@El}8=G>*$i@@M9*jIf^$a#e1umc|
 60.1954 zVS6_-@X|6+#Umv!{lx_Q{_-zlu|Jte<J+abKCK)-Vq#-EE)Lf?Tw46^NThqL=Ly5z
 60.1955 zS{ob)VF9O{V^&QyjfmA=p<a{@tmr@Pcn?CBNyEH?s1=va#KgqriDHbbS@*6^o|-jx
 60.1956 zV%Cr~+z^R6JUl!}QTXhex%Jd^gXhS)b8K|9$qmqZ=hM{=zn(pN*0EH#(})fHR#o%Y
 60.1957 zg0ix*Ga-+n$d!}I%a?(_CTkoo?z4c1dauSX1WYs}%MA?AM|SOfw!egk;JSS|cv^Vx
 60.1958 z2Cjj;XruJ41}RD)MaXm56A+QBva&L3LVqzaG1-M9XTWgT*!s3WvfaCx4`K0;Ph>ai
 60.1959 zO5t-9-w28Q&x~1V5Ia&XxlU;SGxQIItWS1=9^1H=sZ&K`CZWrEAvCB5&ff4**GB)o
 60.1960 zh%rD)d1_ouq`&~?M2-KuNEY_#6Tg|w#ma9+c=ZpigmC89lUE-C*gyl%f#E^c6^N+#
 60.1961 zc+K*w%gamtfvsuBUZJy0sR-s25#Q?)puj)DXJCyHguJ3tO{Ob{R~$Jufo_@3$}1jF
 60.1962 znZUerCoeVyUbhqRI<=QKIe?cfKw6eR(twx$iW|@Wu7E_@<9pU=fQA1^a24+Lw%sbf
 60.1963 z=(;)DXL5PEcLoz`R|eDd5<w^w-Ci0_TmW?B*Mf&17-K>KP*k(2MqTq?rp`{}S$Y?O
 60.1964 z!IE2@HJR>vU6Va84S4LOK3prqm4wJ#-Tgn7o6ykFhsiZ8|98!7l1;&-<G(etZpTm}
 60.1965 z3-o}1fPQ!z5tDxX={leh=P=C_Vq{>T1!G8<_(~&BCC~avdH=wGjfbvYgGYr1O@0O(
 60.1966 zi*Wb+p%V`zcwYQ(bw<4;%}?MPj@)*W373F~l6svj#ovLq)pCZd0rqoreEJn{iw(j+
 60.1967 z;^nTSfxXw6;R>Ry+!yXaAshR9L4|E-7Pn-EvP&v}X$`llERx&?&ozl;3i)NY#)x@%
 60.1968 z)YgNmS%<y+05av#%~sV+{bL%M9{+%VA#xQ<0zyKSxWq*50ZyeX6<AYs{_X6vh4-g`
 60.1969 z7c85do&5w{U6V{x=>Ah;EDER)kh-(^KOx(2=dT%%ZP5T`=e?q1R4Ewx4xE7@zLN|3
 60.1970 z92;w9;bw<GB&mWF8dhFj{=Ia>YSX2X&GO$DL<du<LJ&x=Kt{w7laR<B92}V4yLT@N
 60.1971 zgif6n1J@0`1q}Rv;H(3WPm<+oXzY`@o3{|<m#zqF$HScOP(3u5cr?}0gOq?fC*ZBY
 60.1972 zxD#TB(!`{tPvUoNj3I{0QN;ZzJp6keH~UufJyOyY`?(gh6)v0MLk0$hs8o=2oldr=
 60.1973 zhK_9ON=p72U!PC?Z!JL2=?%ze>4vr8RaLI;Z{P0A4DdqD0|Vt)1Plq`kAytn29v)O
 60.1974 z(uKFMAwZ|^4PDsp9UVP~{DAW(U9CCscZ`)=q|z&<=}wMraJmRgwEz8^&!x7%JNHWr
 60.1975 zBpR{o3oRh`c6J&sw&fi!Fd%yR90mz?MnOSA@6NdAn(I38{6F4MA2K{85g@o-i{ZeL
 60.1976 zA1jLNLiS%TL@BCgsl|O|uC34QCj-A^L1AH``rW1Zd6noC_SB#784ZtPWwQ#UA|Cz8
 60.1977 zQA`g%1YXPa<DY3=)bHPtqytOv8VJzv_tMhRV#&i^My02}fwz8olJyc>5)cq55rv3n
 60.1978 z{JS|EP$VUNju?a|fW^R9&7jZe={t7P=FejPA||8(CUDYzCHF{ewX=8ta&ZyI<4nLb
 60.1979 z(9zKugaic{fVL<A0k#M)VnEhW+I@X}cn%H@;eet%Rg{-k&sAec1n4IOujHruoUf@5
 60.1980 z%zYZPGDSYEx}8qBtDMYEEPBsxRAai=42m^mFX%R5@7yngs*#kSTmn9l{5GIf-T)_X
 60.1981 zqkr<G28V*5bLXH}B!WYb4zO&(V96$<UxBNDJ2*KzJF5qQIAhkUJ$xw<%p{sSA0?aR
 60.1982 zVPG&*Huo!NB?8dkn|BzGp59Jrp0wB$H)J30?&cmIAAg6p=YjO(SccO*k4uad;IlDY
 60.1983 zq$zy17+t^+`<ITNzg7plk-T%vE4l&A85{VG0T;6NDSq(Zpd=<H9>cXNNGRyU@aA<x
 60.1984 z;4){?bn*-;Pl<8Ei8hCebe4Wt4ZH*_T7Zw2S1pW;jphx2cg;XNiu~8B?(oivyen!K
 60.1985 zNRsxG5#$r}+0t6x8tOBgDdbk{KV=wvrHDL=MMc((>mX4h<k8@B&+naan^=WjwY`xN
 60.1986 zAoYqM*E-xPLw;V~Rk+YKOsGmYZuF&`B`5jswl)C}_Idn9Pln-1thWmVx4W&JJ=_V#
 60.1987 zm6=Lf8n4j|g&|Ey<H|=;z73!z2WRksgn*(sk~E4Tiwl8TGKkr>wl)l0GFB=cfM4ws
 60.1988 z6Bm_LR>8JE{BLKnQ@IWD2?Ze7dB3`R5r7mS(xM+t($EbC6^=L;nR1RjhX3*({9p=9
 60.1989 zXRQo^X_JHBc>cHPDmPXLYwn_#fN_hZ+QU~-$I5pQncEoSAJTnI^Sc#+sL&d;O)5a}
 60.1990 zRl^W}wiviSj0Co=te6djg+m-HXrg$dJR$t|A3)^L&L?nj%XH+YNL1hlG}y_=bFx~w
 60.1991 zw?&-5zw941ztNap5wmXz<_?S1j?4M*`Hz_yNkz5<l!6pW1mB@W@;N*x?#N_Vv$?S+
 60.1992 z5AMv(=ZD0e$kFCMg=Ru1P@OH03CKU*$bnqL)OEkPa~Aap{4}Ut{z?@hEq^Z>>O7i=
 60.1993 zis}t$l&_$T?jNG5BVtgVVZf9BhWeEb(&Df48TS+<OQd?Mr7IPpJvsZ0c2oi?ke%kd
 60.1994 zaj7s{)KO?|2Qb{6-EV<l{7g&rnIA8dSy*piO+#0XkfMVOph{y5af)$Q2n!N?=0YWT
 60.1995 z`-fzhQj}Dy$skUQ7G(Hx@S#W~@TqKszlwO`cZ2MP=~vKRN^tui+A3~GS8S2Tly@?a
 60.1996 zyjdcT6>&khIh$(CIObAURN4|G{p|f86r!QQ#=_Xe@WTOL*7o+zk-nfWtIZ%V7fzsa
 60.1997 zp&ERag7g`==lUhZ2h?U9$OYUBew43!NJ?n4=`^iWNJ^-)M0ZW7${2hxI|>89|EIPP
 60.1998 zWA0S7{lW8ZM?RNu6Pcm^?*(X+Za&y6kTJY{D1{^${17E_XcYPfxoK{S<_=Wj7**m1
 60.1999 z10zn+Nw9B-m7-9?&()`kY%jJ+1r_@3PE9KVdlWvQXeI^Tk=i;#MGKh&Pw2BPLn=W{
 60.2000 z8T5mFtb83~uC5!~7z24$AG0)+ln;-lfDdE#<EWTYjuFb-`U?iPA-`L9953dA2BG>t
 60.2001 zc&L5?5QX0e{IG~)lvBM;s$A6?q87?=_5XQON#LhYKlG4TfZ*{RsF6qjlg8$ZOtcZc
 60.2002 z=D`y`EJ)}@_=o>oyoOGkZ1@DYBH0-FY#cy5?M@ZUCV#9_lnjMGq@vV*<<K{pw*R^6
 60.2003 z!#X5ls029VV{9s~D*U^^7B&eebGS1S@OZcrw|Kq@`_HNG-sMt$10kRr@CZaG)Lu<V
 60.2004 zPr!f<+vEH5T=K%#UK1fWw~z<c{7RC5-YkDR8Tqk2zY<C5t1YJwk2%U0)Mh#`q-BAP
 60.2005 z1X0=%aB#|EL8Z{!=4<W2MqY{2iL=80ZWTG?grbCIm^u1xaDg5o{e$=Z+VrstM4{zz
 60.2006 z<V~ua`K2cxx%t=7jWAY5Jc+XBm*U3w5OTCzZyT^72qgPXB=Ffo5}6FOSsyl523d0u
 60.2007 zY^-rsC=2>ZrB+W+fzgYMNeqS%F7(0j#Ux!2xhL=$T@af4x?upIqMdvm+Po)#xqjG!
 60.2008 zl#7&tJj?Kw=|A6Z74~EO&8oF2N<NE5op_WFo>%)98)N|<5wis+C>HwqlRD_Xk>z$n
 60.2009 zdWy0eJNk}OjK=Q`_(D5*C9*Uy+*j*pDjdFgbSlY3t^YQS4vVhF4oPi_CK(F&F_nIx
 60.2010 zDhqT)vV=x~Uny7Ih4!hs-tx-)&v$bV)-j9@+qp|otiHY=2qbrbv1GUsYDrGzAXm}p
 60.2011 z#};MsXQX=bp*-nUfkZmXK$qxLq<%T=rJO^Cm@_*T@KtT<C|i=fzk#PuEWy});(xND
 60.2012 zjLGqlpyD3U&kzWHdWx}fg2oU*W*4e%Dzq=CyDY$N*0w0rm+yrcfYp!Ou>7z@jgFe0
 60.2013 z%m+%KijrZ~Y5ZsITy<3F>3dcqgeMUal?wPbL^6iI>98^Ub5VRqM8d5&&7Tz~Qu>uU
 60.2014 z#Qh1bF1UNQ;*&Q4b8c0eOy02g>VX*?rbY613>$#wa{csz&>#k?dJCc7xIz4P`TQ=R
 60.2015 zLKJ&~meAxr$j6WMSN9dc-`ZgK#@?O;EiVo=|KNQKc=Vp&CKbfZ;5Z@Dr6PEUq;~w~
 60.2016 z6$0})Cgfdy|7(O~(NB_QIf$Jqg*XPK8g-V{?=i$IF8zHS=^K(8-a{-o*nIkYDAGap
 60.2017 zePs>$xragacIRKgU{zG6Q+M@?4yGNV>{9rP4BjUo#OwL`Qj#K!#cu$l8DA&?{a|VQ
 60.2018 zEha~+?w@oCBfTQx$G2|TgNI4l9TZH_Zd-fD5GElNmBm!`W5MH@rKjcT8h8Dv4UpjL
 60.2019 zykqnugUlcj@!Wsbp+7vPWFd>6!f3ETwmLcq8ddA5U8qP(9$bbirZ#&*`OxS`7<$OC
 60.2020 zjH(OK#o3K8{OTmbK8}~)h@RH*mZJ4?9X@j#`Fb0>$~HBmek2q*S3MyFJyKTyXmYuP
 60.2021 zQ0BsVtVz}}-y?Zpej#YN;J+(w@cf!OCmSo!p50NP{GJbPMpInKi~sV(a6d*1W`x`-
 60.2022 zZ-bkZ#3}RPXLv-iF{tYMq<~LFqK%;>;Legl{Fv(8Qjj2Svrc_UE(L2$f@?#VZD{Uv
 60.2023 z>%)-$VyNinJ@J`=*N_-Zo3RWQWR3Y;>mz^RJAy_hAsX2B-{}3+p(v{Q5iUppI>pe6
 60.2024 zly=@i`)v4bi+JHUzwXw{jz*!=yW$~HY&32C<jkVgC5nSaH4>-qo3!A7H>C2r2hCH}
 60.2025 z?>G~f7kb_i&Hd=0Jh6x3cSSPV(>5E^ew);X_%UZNmP06{8OKnK*fX<VnMw}Y#Uh=G
 60.2026 z0)HtiWbrctP~r7?4Y<T9a`Oyy8ca%lJCGGozM{M*H$Va+`d(ueJAAnv1ypF}BL!;Y
 60.2027 z$691Jtd<=y;p<m+dT1qREkR->mVLLsi+m!8V&v571F1xsSjjg~d8NA}z{4U2{zH%4
 60.2028 zuo5IzoMu9xzldjh7d5#3PzcPWAL2L5q!0w(zH{QTgtRFIDiskQiA_7kZq2BelLlca
 60.2029 z$|`LmM1V)71g<qsb;l2hAiJ7E-Fri?K^G&#V}sByWT=V^l2xX$HS=h=W-B%MQYk|d
 60.2030 zxk)I14x1ER5Y3RoFB8g^NZ2aQytv!qdWmF=(SP50v8<_*7S~V2KfUTDK%Q}OA-~b}
 60.2031 ziJYNMpnoCOhvN4}P%$O$z7rwR?Hj5}Sl3BA61U^>B^7{RJ^)|2avc}5Jed-Gmz7_N
 60.2032 z1{(qr3de|3Cb7NLi64jyDRTb|bv<a3n2+S^@fWB$ay|JSrT_2Y&+8LfP;2a~`w(;T
 60.2033 zWE5msM8I<EycQ-Xvl37*(kPx$f{_KoG;f56PVOa*-P2V3Xzk%h4R1<Ry7G?*h6l|V
 60.2034 z;7S;N0-<&vpjR#FCWnmBZ?W9-+E5Y3=6xMLjXVCIIQ}C&?T^HfH<Y0bs6MdA_1d%X
 60.2035 z+y^zGtBjwnyzp_wxv=!$(~taV$Pj)08+3LkgMd&6rC?_VWA|Ghf8r^}PqXSLE$o_6
 60.2036 zf>fNP=>Z}{W4C@y@q!1l{2m_iE{&gW@Ply6eMmRxa~BOG&=&kS29|Z7$kCKnlmbK;
 60.2037 zOG3{?rS0y|kf4+l_|y|NQ=XP%#Lo>+?(Li)pJMx?jx9hwmdA`#x7sXu8@=R#-*Z0<
 60.2038 zrMl<R7EX_v$x1)0hJr`Md*UZv!X6_1iVyP1Z@e#!bQoZ-Zbjgq@o9i6^aR7-{6Gf!
 60.2039 zy1VlFld>i6PcAg^bY@a$2E~oCIeAt03gy<NOd=sIWJ6p(MgnuDdOB-K+h6XGFUl<T
 60.2040 zY#gu?1MFOq##A^wDS&`U4(3A8hk`eOfd^Chlmkc~gIGOfXaVX8|2rc1uC#<?&oMS_
 60.2041 z1#wVw<`u{57vD^?&#6j1j+D;+M1cbHQN%UW`2JtA3%;NG?4~!m3CK!w@42N+weB*O
 60.2042 z7t-G=?4q$|VJ~>oN+~@}V9szK&ydy+W6uIjQ`p~M9etgy3^FA4H;O24R(X9pDk6_i
 60.2043 zclrDScd((?cX?8{>B(DiL+1?HJM+Q7q;c9aJy-UO!=7zhPZnc=OsFsIA_A1$^Q5No
 60.2044 zHFcox5FUya?(B0+N{?H!*+xF_J0f77)<@nY^S=|F%YDzkvF;bhBjrZyogOOGU2m5$
 60.2045 zGlEF&R`|*cRoM>RG$B*}G_%93vOT(bKtTTc23Pz@v*3KMjdDsMg?G+qZ42IMV1<N)
 60.2046 zq#ieI=Nb9=^A~tJavq3rMnVCSTb`SY1iV?FfcbYLu2Iwz_8nw@EbcPExeMum>tVK#
 60.2047 z>eH-i)grA9{C1X-Aagl&h1ztU(?CJ^l*i|%3lSFxkGcrKeQ5=YSLRDgOELzYTNP;n
 60.2048 zE}NM8^=^CWbZ{ezT$DAeSt87GVtqeWxf3(x$JUh05J0ArcgX-Ttw7okrH|6^o>2#G
 60.2049 zo?9XKFVxu<$xVDU{fPOxaQrK`Y-XR~pHKIuJdQW{jDRi`D#*`w>w>SFX%Fq<`JqCt
 60.2050 zNLn}<D~v?i@{XnFX%e_aA7izLO>(=8*+X(oteFzCFqE)BMhOjaCm?UDLn6bUT^Ys+
 60.2051 zM=0c}jUR4|?6AN)IgD>PsHqq?v<zvX8FBC2Ai3T1B{5bSxWxNH*sKJ3z6j4607ms-
 60.2052 zr{eT7hp$|VOob(i<WC#B=1o0%*r3P2!ct{K6Y{bB?V-n&FA{Gs1xAH?gbZzz3J8+s
 60.2053 z7V5)a<T$fTeo~O+CvxQrb+n96wjW2|Ine<KiXag$w*Z61pZ&xbL-dxheYD4vz>-3e
 60.2054 ze#iQ(&yEdcor)Pb;h76T>K%YFu~^`{?Vo_Gj;}ZV^C{;1k?(vk{W&GS)6;gRv;Cz`
 60.2055 zUw8w7hj*`|v$I+3eHgSZ99aBmhovDNhzZ(#!Yh}NrHfjE`5O5R7r4D9gWp|PU#13$
 60.2056 zXZ&L%{^UWVsFJ5<VOP`8(9rYiSLXD})_6sy&CYbgb#`ad_4!6MyyWyq$YW4|k8iA_
 60.2057 zv$Nps`e0sFn$P*#>tIP_X!M6w^i4-JeZ#BcoT(Z|3oq}BWFb!%kyu&vg0*x1J4E|w
 60.2058 zzSn1k=V>UA=keyA;M>KIn&#%&-Yzbc-bO|llWlD|G`zf8a8tc93`#Fn*WVxS$~yK=
 60.2059 zHG0?ezC*$A0v^z%5C_-TpBmJ;bocGvu$i<HGijI6W@fm-U{ctQ*K9&SUW@Pl`L_po
 60.2060 zv!)?oXFs$03_e=4w#HA>IOi;6H!?p|aSltM*x_2m@9;h=^V&-g7v%!Z>oMtjWfDPn
 60.2061 zXlqWjA=sqMUFd!s7CmkW!XrO_W?+dn-0spweHJU5xW`_j`@MiAvBGK~+fP23`$!sI
 60.2062 za`E1TxBrte>+Yh%XWVT3`t^%LqX-epY1;l7AyWjdSe@V*hQ7DAw+(*+Z#JCx@4&@L
 60.2063 zg9uJ?TtXtEt&5`#O}p+ZANcHM5KOCO=G{r(;7!vu+sTM7jOKCzh5#?BL&qd+L(+ub
 60.2064 z*3b8#zto4_=NgMz{AlHx$$3NH#M{F!;9a@OHmvfdNbt&7PYNH$2!gF1-j~f%zuQ9K
 60.2065 z7|f*V(V+i!u|2YR?pIJmlh0LcD%bpDny-Pk^%z(I^TGqk@$n<S!I+0%k2GE1`!~*(
 60.2066 ztHzKVukVp3rKT2RvS5SV8hW2&lGB`$GTpN^f>Pvgvc|D$X!m-tBbxc@{OCcQ?L;NN
 60.2067 zdS4OTw<7}>d#%yu>fD26S1Fkai500?0dq!R2HpNqvk<fm6_g^9(Sc<6%T$I8@TXJB
 60.2068 zuDwxPa?mRDkr02|)YKG%P-W$tneB3Lg@4P!y)!cg9R=M0Ge5k{j8xOm7*CqsKRCG8
 60.2069 zbaQ>PIpwNFJaUe)yTe`iv)>a#?DJEGR=i;?lVI`*uD;*D6UZ9q$cyy{E)%uBwnnWE
 60.2070 z(I$-=OPSnpd3-D$NrOrAVqGP!GVJ-mg~|OgCb^JihP2*;E{?i#)t=4fo-Tovdiv?*
 60.2071 zXhq>QcqvvBVRNCbu8so+;2qr4q_D8il&jG{TqVzxJg%ms<g@S5y822<Ny)!D*Bx#?
 60.2072 zR`b=Fn`>7kYwP?W5xr||HxCb4q%S6I;j!7H!hKIIpibx;ay1UfIOz~7M5ZbfX8C}P
 60.2073 z>SrOhMAH4rqQdo33@7Ec@2Nhz>~!<YblDcz!slTVy-*HaX6CV<6?L$QY5QF(KJsn$
 60.2074 z28v0je2OYY(A{Rro(H^nDtpGl)N~i0Qh3v2XIkjuu~fKQs-Qc&#pY;fRNVA;M3Ff$
 60.2075 zF)`-#+P+C^XotteR+S?}MMu|aJW*-ula-Y<2^T``t`8NQ=zRZXyYM@h2;bP)_|eH~
 60.2076 z-!IE>nHE|mC^YCheaqZGb(J&h=J<bH4yp--rYu#KkRwtxiktO(*$+?JgrUk+Lz29&
 60.2077 zas-lfe@xk*DJu5DXKcOGDEI^X2y5K9E+8Oab93``reZ^PcXz?VhYuGaGHq>b@d||A
 60.2078 zhRg-XUh6T+Pl>I;FvlQ@NI=SQPNLd(6Rhxg>y3?#?To$IT3!~!+_&)>N-fAKV$*ZL
 60.2079 zd{32jhs&z}oAK415K@*N7khg$_&5L&$K}uuKCCvqX+n5Bc9SIx&!2N)V`ApQrALmN
 60.2080 zTU#5K-1KyG`>va#b4jtWPYg@7Vw#$KmoCo^%Jp=0)j;H4;y&PZ>pS>v&@^pxvOT4a
 60.2081 zO~TZUg@+f%mGw_wU!T2p5}pDbw&V=0uo*#rLPtk#dwt!>(!_fW^0Pw3BcZb0!^4;`
 60.2082 z;M~4*EdfWun6j^4E$&R!jXYyy3=whLot=kk`Fi*^_ZHeFg*=aWpU~6mjE;_~!S&mg
 60.2083 zaJxNx?ys4d0XkK7&KQ2rbt=DM2DBvM84VX3?8L>ym`;P+mYp4}z+Lrwgt)lWc|oX)
 60.2084 z|5~_9MD!SLU8O26{{9bRalHzg^ZFq2uZJ-<!-aX;`b8QXJ!wKVJT9A~Eq93M1`(uv
 60.2085 zPlf$PGO!K9kefd+XIvnlI_O(sp(*O~Y>!D?VA6GI)&kpDq^B5G=F$X`0%lfLdG$_f
 60.2086 z{oS8G6IdxL-@O1>P)QTnZW$5$eCuy4W8A-`klZIsOiVW*Q=Mot>0QbeX*}lVM*!o#
 60.2087 zEQZ}ODKXKiHJm~xXSqL#%cg&%P&-;*P3?DORTZVt=^3!VZO?4_qEeRb-|x1+x{x@L
 60.2088 z*1U$!yZMv#RKut+=iP^!e0}%8un7(H_gg<Qgy*DfBqjZmuf4!v9SJzC{%fF?2#o0)
 60.2089 z;I<uKEVJzUYKJJQ9DcL#U9YYl8w-m$Co5~ub!U1@PEiD80}Kd<Qn<b(?<bRlu(0r3
 60.2090 z=!@sk5Rc<>S2Hlm;A<8xuA%k$KOxK`-}TCcTsF1p=PrT6zW?{{pATWMKL&(>_i&fb
 60.2091 z``l?bn23IU)ty<d)|Ag~vU>WQA_s)tubVKQ>2@4^{0I!l!eS+V#^<72vtWol5T8<?
 60.2092 z7vM`$bN_gSjR48LdwcOL25Arkw`&jn^r?&#E5Q27aCm#Fj$*kdbwV%W|6}W|!>Y`>
 60.2093 z|KXbwl#~W36#<b>kp@wur5mJ6K)OLtR1ih!ZjkP76_f@k>24|E(DCl=Jm246ua~1U
 60.2094 z*I~{%_ugxLV#iu4C1^mUqw7`K?aov^*Xyp|Zqg$$&WQQ=;X_qOSXd=i%g)|j1Udkd
 60.2095 z_AzPq5A?Xkl!!CpiMS#6ac14lLy4J)2o1IhiV&sv8n#Wkj=152GKoMPOvwthg&!aL
 60.2096 z2(DiJgdUKTl%#uUQdMaVpd?H&1+Y3f?N4+>AR#PS)LV{_=6<-x{_4O)#-p&#C8t_W
 60.2097 z6T)%>#D{Q7X7lP9__+Y46_1-ZfgS^ljEvf70imJtip736Z{Ey8e<?vmP96=TUSBMw
 60.2098 zn1h338J;C=wW%y}($vr(GX*SdP@&8It+iEB%<gwdVw3MFxwf{py6fh+20Egoq@;0v
 60.2099 zdf1mUIst+`9iXib97}&y&36yKj@LTpU?VO-y^I7!%=lkUeIPJvJQ%kX%GWIPf~{Qi
 60.2100 z5gbCoLlK{&lES$Y0)UTgbB+}t4!f%=E2A)4=>5;;Uaa=t6!uEiGV-mIVj%i*es<RR
 60.2101 z=so49&FyWYYX~e-bvE~gJ`t^DY)prYl9B}t9v2v4JDqLCkOUb(k1#1EYCDjeWo9x?
 60.2102 zdv7<6N`uJ)Ad(3`#LeBkSe-TM58O0nynFYZWsQQJT>%*9q;y!ea=Yo&zNr*Nj07+s
 60.2103 z@@SJtIN_`yB8v70i;FVgM!;)^mjx@Ii0cgTgA@(IW6*NJr141pH))ODhxWUZcN9_U
 60.2104 z`Nh#U5-!FpQ(U7v%-)q-^svtEdQ=8#f@$TX68Ad`ja2R=sIz#rE#;n;**3#p{8K22
 60.2105 z;q5_i+RWge2xeuE(}PXtH1B+TeEh=W^9%5HJg_+t?AOOCp(Sj++Mkw2MMVX_ZrtJ8
 60.2106 zU=ELffM%*X>)5~BQmX?QkL3{tLBW`a=;(Hg0JyW7EbPvq%R>4A9cm^~JX~B}FTdPA
 60.2107 zcxRl`sOb+50@CMeNXRwb8#ivWeV`R4My-IfHNck83OWMG&yAGWjg{rJwzf{z)ZCwd
 60.2108 zSDLh%+ewl8LPAd#78Z)f#>R5@{{FoWe&88kle3*2#~*jqvPsbbWEp==gTSft`@saX
 60.2109 zi8l(!v=3nN+>^!q{pb)pYChS-*jOv)y=6sV<Rbzb!&YFq&}O&**D)P$1^3TW085@6
 60.2110 z9YxAKemqlAQ8Dz>jK=~5mUr8a9}|ANZ4`bWI}0_+yMZLWb@S$2ykEp4bYvFY;A7DK
 60.2111 z?3Dm?A}nL90JWp~W9r?rP&6W&b*TotpRXMzy3qS4hF&w^1X|$(Y01VvTm^<)uhpWQ
 60.2112 zKlr%hy9xItytY{Cv1_6sD=YhSrpZ@6TPaC*M>!!hR@MPYksQ5u9lMT!yuX5a<nHj^
 60.2113 zAcpy3W%j$EYjx{;HbJAo+xdAjgQiiRtTl#%%HEmEploGOrxc|Ev_KrB4%<*QH8mAe
 60.2114 zofi0CUL3<BEQ*^m&MUn-{)bcUO+e8JtT^5uisd$S>hA9514^gh=*VMF%=bk7<oNh5
 60.2115 zCEgX8r=$y^oK34h7^*?go}ZsjcY5*SX{CBCAmn2(1C=(oF_Dow*@_7xD8K~+2L}gm
 60.2116 zXa3bI%o|9on6FpWMFYH~78V*>t|%{G&ZQ4DMTYa{pFcwZMQ+0z#m&ik;19Q-KYxC)
 60.2117 zcG594>^<A6-xh(lJB$F2qX3DHPfXlH7<hRH6O$dzj&@(en-LPKs-LqS-g>5^r)PWX
 60.2118 z_U-3r419bQtskDk8cqlTGp`y<AQB+K(BGRN$mzQ^Sz84mTu?vTvM*VNF&qnVMEVKq
 60.2119 zbTy^ZHe892YiS#vJGTOO`-dBt3`GWz=_?F@9Bo7ca)A9d&CyD*7?7P?Q?l1FCHXqX
 60.2120 z#%kN_uf&ITEvY6waAgHgmOsdb0Z%wF!y}U5AJ3k6en~$+KXZ^@ekZ6=Bg>MpzVo#m
 60.2121 zx&Wh8T=X#Pme(9LLy^m`PSb>Exbm@sKaCbJ5zwp_(bjksuSs4u>Y%*6x+S|-wp8c0
 60.2122 zXQSt|4Mj)%4QBYhNshF*V964NF(|xqa&%NV+c3K9)ULGAQ0)D>IZ-X_do=gvX8&o@
 60.2123 zF_0i@2wJ4vo$cCswEsH`fB}oa@)rY#H>j4Q1g{MJR!qD<(EIC`>T$2|wg@cM&SPh1
 60.2124 z$7h8Gz=ebIzN7JV1a@KSOA=m*g{gCT@cfOC^D-u#xSxm^J9}7;W`5l8(&02Pfr{8q
 60.2125 zqoShhBq$KI{NaA_$6#JYAN1+!=;W?$_MeVtJpSnCvdIs7aPW)r=Bek!zhMZ%CgdnD
 60.2126 zD^rb*j&@Q`dSHHfFyRooJ=5%fivWUQEpWI5BU%nLHa3EB1@DVSeJuc-r~r;s=7^41
 60.2127 z^p~kj9!smMU%q#}K{F_CZR*D=IYD1lIoG)pAd84&)L=3YEYb|pi3DubU}Mx+0DWrP
 60.2128 zcRuVb9H}FEfP~w11`+`j6$Ey|+YVTxlbEQe;WgiWsN9#TXZ&nE|NQ12ovL^Laqwqs
 60.2129 z&vVO3AA=#?t0b_9Im11*D@{_6zkpMF-yd1uB+JJiK;t}@h@o<MS(^Rca~Pxgs;L-q
 60.2130 z)1`-JZRyBs;nAfSbt?VNXZ~m5BfJ8Mj|iQ@6Q}}_)D2oeZth*;^JzdTGNb6f4v$w-
 60.2131 zn$ZL10Oy<xJf;_210Q}2uqUb7erkNcaT<j5_hRkRbd$@Ab2<Q_<mTq)lK^0`F2Jyf
 60.2132 z5z>j&$O)?XkQX<d<e8z?hu8K`fso8}1@Psrpzt2}^c8)y?-Zn@LyVTiN+E`CH1o}6
 60.2133 z8HuY(>8Lh<<??cW5RPiarq6s&FK);d(V-0(jzCUXnPRQ4%b2S_N16TwP*|r~@-cS8
 60.2134 z?pyjgK(ASrkHrg4dt`iRdj7U;J|3GCAaZ4I(ydRj_z0;CcSvaH82ZcExaK~J_sjuX
 60.2135 zh!nDq^yAj;2_U3M%~fMzm*bN3RBu_C3QiYGJRmbW|0SBnN6~-$M#Rp_!XoRpGu!G7
 60.2136 zWcE66<2~_Z3QkUCD1a5yr+{_*L4;NRR6Ewxyf*cE$89y9sk?wKabSO3H(NqbGEz{$
 60.2137 z^oH^5c52K8gVk5Qm!DoH+uL#(;20o<LM%i0jsrn>b<D@AjW5&;2Tf&oyQGM+A7No)
 60.2138 z@*TM+Bq#T>1A&6p0>o^@DvesB7fKHHPSCQpwl19IkLk*SZokQ9IB&n8fUW%Bjb>O}
 60.2139 z51Oc+1i^ZT-z7H-HPOCAzhft)eV|T5LSo7s(={d|BlCxV_QBAf(e60j!S0@(uqy>X
 60.2140 zCC9rOh5!YJ8PJ;~9Ah`rB>Fm;4w%hdfEn)GiT=R7zrKF``W7sQw0C$|j2Qs0$MX%5
 60.2141 zl*YuweD1NZ9k$`$1Ej3)?|&KZ>v^(&mjZ!EzO}WrDHPs@Ig4vx$#!#C+I^KS9jRl`
 60.2142 zxD_DXk5y!kE}LIZolg51`59dFSUR2Tld<MRMvxBURS`*|hxaJCO&(fnYK~+@-P7`d
 60.2143 zYeP8=4Gjaj_aWU9il1@K&b9`<3+p*ed~&4(uf+)|mZTVpM+{PfrMd(+Z8=%arWQ*o
 60.2144 zh1reM?E|_T?d-S?;^a}k^&P0O6>}svk(fDK)9nPF1{_J_^dwalQvPOVQkmhCo<S=<
 60.2145 z{EI7I9v<pI<ZV4MGs~O;DFCnP*B~tx<#*LDg8@=h{XG8#UbjOe7>P9ogo-iIU&=8>
 60.2146 zypWQTl3UCC(-&g@$cpk+MgkvoJfF2HFkZO1Kmvrq15S8|bTFPZml1hTYe0E<`5!Q9
 60.2147 z%kWke4Ud^D)%h5Z?=)yFJw1hgsoa-5=Lu%Xf^HJkVN(TgI7T4`eP5prOVhY0&b*5m
 60.2148 z#0WRm%)i}QP!)qa6=6->eG4b>%gFBthr%k)W0U6qKW_-yE9il+iNK}c(1!O<fPxnm
 60.2149 zC@n1&;EC&A?SX4&Q)%8IC%1l~-`5h=Mvp}|;C=XO?(LfOu6utDf9%|LOLXn0(UXOf
 60.2150 z>@g`V(@A{?E7hKMn`<C$H7MgoBKy|X6zw%-8Ya=v(MhG!RPIE{3CTyZUG+NIx7IZ_
 60.2151 zHeLcBH+7Gdb^VOCFOD}S0|2wl?~-S2BO@d0KYz;RudZ4NBRJQt<sk?!FK=gOXI@@K
 60.2152 zMP$AEwxO24zrPL;<mI`vZx)xA{{rN<#9I9;Pb=clzXbFY0Ro^PC0=6ShC{=y3qT?<
 60.2153 z`52DPTjZg&-`)^%D#^(a(}?>`dV&{rFEgtgRa8`tbJbuyKx5cvNeQG$m%P0E0z8w|
 60.2154 z)V}QQ=B9~t<%-;DqT%pTo}dx=^OOCxH~{kauxh9ekO+~|ZwR9F!3dtfW1(09@S;U|
 60.2155 zsjG<PL*xuOx<R#{V7V+oQB#M`&~)M|;zAoigvm}&mwZ=;fzU@6|Efi$D87q$U~*WG
 60.2156 zED`2zS$Nk{A`qV0uV2d~eSuwox|aSf4~gZrF6@5cHf@)M#a+<Cvo-VKY4IFo@pC?H
 60.2157 z)~FHP9DNQ;anHZ6@@JwvrH5=#d%7FBcrD7qLE^g2%h#Xjx)g`A`z8u~xq;YPm2mO&
 60.2158 z49qqnia8JW(9OcI`dB6H1t#uX33>?tINSbrNgC`T(`K3CtLgCk?dQ+LBfwZSM9JOp
 60.2159 zo~m=L6mxcQiG-KeQv7DB9gKE?CSCIbMAT>c<AW!MZpG>|N5`Fr2lw~`4ci^-3JVL*
 60.2160 za#H-fWSfm@oy>IsKFdFOa&<ewp~-Uz{E-{y4!A3RXJ_Xq+fI2VT_!Xc_ReU!bLUP2
 60.2161 zkfBF3_Z?euO3km}Q!^?lC{&;!*x1-Q#fFX4_)V9G&6hos0P`%}+^UWN4hqA&+RMBE
 60.2162 zn9ATfQT@v{#g|wuWC4N*XJaX$%Zl9NM$gLrB_SoWk{d13tAUzV`}tAKZ`;31##p3c
 60.2163 z1UzQqkgt~s)XDyIRh2iC;cZN$3Jag^!YwAIcGyi_iK1PrNWYXv;8GljVs6Xc#IxVO
 60.2164 zwL>q@xBXp-F@ChSUrV6wPWMjm>doR4!<D4W3gnO&`7Fu96i<Q2E6_7NTfU6>Q{BpI
 60.2165 zu%kWRXnp0Dt>N&~^tM8S`h$0mGM>T9C)MfcU%N*}G=Z?)?*=jDxq7&Wjchj_8jgRu
 60.2166 z{djV1%}zj%*Q!7DtkQN=%*oj~|4DnJ^<ehnj*gCWX60mUbcr0Lq>HD_H+{s6HrLl#
 60.2167 zH%E(&22M~LYHLiv$n553;roz~kVGM8i<K{5ScG%cJFj1RtpW5+?+j2<;(2%NEG=_B
 60.2168 zynR~(yEeN%0i*qlCvIFR=|R*1(891ll3#l?uxdUxr%p{l^4utl!a@L%-k_!RJvX{M
 60.2169 z(OO9mba)_}rTRgZQI&v_E7cg#`n!`x$||%gF1303Xf+xi*G7{8vQIueoz}uNzzT9f
 60.2170 za?*s2eo0fyl1R>viF~1JMknsJ;qTi}TRO1k47lh&FCoU1L=cvc2g4&1J_})j4^r;G
 60.2171 zNben7(8$*m)vmG|8$5~DtFZdCeK_M!Z*{-1qJr<MwzAsENP*5m6L4t8-`0S*?Y-}^
 60.2172 zsuFm?2LwNO9F+2tC%Gj3@jT{ob)_^~uy^_d@D?HP%Dy7?*@Q#0P{UrYuqb}c<42DS
 60.2173 zq2c6W!-(mk%^I+>S-O$CHGPgYjs&$*4w6sYd`m$@(r){K3ilO1A7#-uE59_apU*_*
 60.2174 zno2Xz@D+I#4mhQS@gtv-x*~PkwQXc%WThyKN2pJ-j0I(7Jh0LLS<ur<_NO*BtRH(U
 60.2175 z)TXDW3+X03PWE$k<e3y><gygVLuGb78Z@_WR%Ue(K#!lo|LiL!noDK&YU|YiY1D75
 60.2176 zx_~I$^#j#>v~X;Lrg=ON)F%sU;mMfqM!p4ZRr~M<kin=%-4fBT|5%plt=sZYxKZ{d
 60.2177 z-~!lyVIXG$ctw<csfi5Su_^y;CjdlqcM`YhqmohyO<xdWLR~SO+YLU)PVF@>7Lwty
 60.2178 z&L<!cvh1q1Tyh4i9Dz*@1ygZ+gQIKCk*_^ovqYQiH!wnf_x5Z>r<z|Z1p5MtWC7`u
 60.2179 zn9c$_g*;*;&c(*3R?l&xk|Zj8glj<ZEu`JTj!Eo2b{%!6xJ7JrH@<7ckzjR41x=-Q
 60.2180 zHQ%2#)sb#Vd$Y-+zY+X*fFA<%5TCu62|u9RP(tqkB_rvzi9cc)rDgfUHqolNi@*!K
 60.2181 zh?L8UoBpkkrTRjhHHu2~%dpJ{xvcr#M4|F8$-_}-ECC!8yNat`AG)|HDFPN*Zz(*+
 60.2182 zFbFH?&E}Bxe)JCjrrO@)x`<Z+iN_f>J8OLR{eDFbaH+7eSPZ}Ih)Y>TMFG%$R!Vy}
 60.2183 zk(Q6*7pnk|by{YG<YN`GM_OAYZxX-D<KgA)iIU42a5j2FK-<~V-Thvy(aq5@{Kl1X
 60.2184 zM&hduEdglH(9qD}jgh8@x8`Vt-TqiOcPS8kcYb0h%9q=r!Mn=*XOw=GDFTJEvOXFo
 60.2185 zuZtu@4|<6r?96;Lg;0pHyl)T?2=goaJ|p^?bt55rz$%t)MEox6K=hCee<+<gD_H^^
 60.2186 zY}sC@S+2oKrU(Aw2mh5ZPy)ml_%G-EcABt9-$tzXXuc&gp-Q#c_!D}HOv=Yt3Err+
 60.2187 zE$o_ESXgL~laqV1va%*iQN;eDmnD&ym)Rkb5LBZ`7roueHuy7-&N~3J94FAD!^7MA
 60.2188 z9(c-l_uY9J3e%K(q}QsX(vBXl<NypG>Uaz$Any4182y`ZWLlH&>Bu1_r9r(LJ9OLp
 60.2189 z2RcA7^Pku0Roh>(<XnRzJ|g#9nOAxWiMeQT_^Rzsgp}m^^$aHTN>5oBD7r2FydIm7
 60.2190 z5Y%dH6$b|UcWkS%%E=&Jj#hKdO4@thM}%H`s_of>7zkxA2C`qaZ|fz#?mb0$-a;Vr
 60.2191 z6z`-_Gr!PNQCaXzA%B=>ZEfEcjKPq9G5CJ_5>H9hE`3ogJb&Y52&uz@WuB@>B#iS=
 60.2192 z;<1OesSaW!^l0vShzNzY<;^<Y&s%4R3hA-P2eYaU28xv<Mo&ZZi#A*I0JWKrkkAcE
 60.2193 zyhrk*b&PMTKI6<PuKL}3f>e=(8%JCB8w`6%Xz@og;LK;if~1S#;Y7@px>Jb_eE1=6
 60.2194 z-<EX#{8@6u+~u}4S-bdy-oHRl=L96?;NkYn_VZXldHR$-tx6dsvOtEnSNdDas#afw
 60.2195 zy&RY1pt~S&TKl-saBz6&{{zI?s7i~BzpiT`{R3@jZ0CK9`<2<1txe*GtB8?r>(}+v
 60.2196 zl;Cf3>fCV(_~2ov_GftG6xb7bMoPx)KnQ3$-=_h8jX2&<j2}f|W#G);iNP^=J|=;b
 60.2197 zLL}MmZe<He4^DN{%6@oTPEM|7Z>8@s;QN|8^3fH)!)TuIVBuX^_?(Li=J7Lti=WGV
 60.2198 zDVOl3CYn_PFY$@Bd(hrgqqo*~GoDJ_!YZBSd;$W3vcVkX83z{0qUPr2d0;8}E*3tD
 60.2199 zuW!B^nVL!(>b!+BZ!R^rt*_tn3(%CEh;&a;uoWM5uvD5cFkI1cSthLDFWo{5&1TEo
 60.2200 zVVmsM*esB#VE%FktX5}r3aOPJ*@zA2iOMt!BwiW9jIv2G`tOlL+kO>mXsVgMZ!@vh
 60.2201 zVI!yYNY4wBr4~pi<mTlabi7X!78j?})3W5mug{@%n+Rt}gsxb0G4vMU+qV={Q%?r&
 60.2202 zF|-zF4iNK~2TQpJyk#mYEp63vXw+Dmo$bF-I23_9kWGw)8<R`&4FYaT83CLf0<Y5A
 60.2203 z%E-KqEA{m8@#(C#8zUAp?~F85&8=wt{;yEM$o|@38_<?0xE~GsdJMS!Dkv-@gE!3E
 60.2204 ze`U$@CM6}^*c@2xPm|tN%TdaDkGjA?U|HYKKS%&rxpGs!H_hh2fc{86h=bvV*?M4w
 60.2205 zR%Tq<JI7l6TB)?zggP2b$%aX|uy18;t&_6?W$zX5#f{P8l+2o%`#p{iV!EDdss#ZJ
 60.2206 zt4Bjk?S=YXYI-m*Fp!>^$@r<Zwsw4Uw7LwW>Jo62&ywTfsQ69W-@Ck)dU{XK5oiK=
 60.2207 zywR1Fm7F7>jOm_FHwdA?7j+|~7vob_ROD9%PTi?izc4g3baHrDgN~9?Tgdz15Bf`q
 60.2208 z{>8uGh4rJ|g<V+4{|Lmq+wShJCSXiETwL7Bj~|uW3Utby;>)+eQ-a?Q>tznDD2?IM
 60.2209 z^-X3crhge`;4hEg94XWjU398729EqwHV5u*H!&q%JC7PgpvNvC;m#p*hGb>DE2i&r
 60.2210 zyCjGncBQlA-IlH1#FQM0>NVy{S1`aym!U!L$Es`4d5C+Pzg*$fkA;q|&d&D-?`4So
 60.2211 zeQt$!F%oONE(LV@q!1y%zVSC^h=T-$d+s1{poaj{6R{>B%HJ6I9k=ZQL3&Hg&WQfw
 60.2212 zj~jDaTVf@J)m<xl<~Eh_Y8o2DtY~dy_cT5JdNf>z0<uxh^!$0p^t9jGsHkDvYz}P6
 60.2213 z|2_}=<{P+;&>&5anueBJVN=e5KV#+IO_vv^#c&78K+p6BfYwA<rY#w`$qbEZAk_78
 60.2214 z)yt?8inDf)eXtPOtY265EMVKGdhf%n#@n}U6~vcc<mIsjtLB>JtLLqxd(SV^kVre#
 60.2215 zCYs0Id&7Ve_`l!DrX9nkzq(7vDm;0=0q-P?9-zXaZf<7wc7A>y)1c19+AXFD|0xUU
 60.2216 z``B1YASh2J1u{slz2=di=q{_OD*EEkG&H2X2VX1Io-{7j4~B6k^;CTxL`7&yWdZw~
 60.2217 z&WDcAcjQ0wQ};MukG%c=KKLz@Y%W~{<4$2}Pmm}DhrXj3P@+Q4%ObE0_3TRwY?^wP
 60.2218 zwa?QdOI-ZUK%*c(&B`>_2DpICfJ(h}`llf&m;>`@IM4q#kVHKyR~c?F#tyTN^TkHR
 60.2219 z$9KXye?WGZFDAK9cffAxv%vk(XcZei=Zmeh8n|WjNjCG}MguB`0w_1|!sgogdfpMR
 60.2220 zC(i#i6Ux0%Hp)nNhnXG1!ojiJlOo<6bWt|rce+XPN!G05-T~Y&h1Uo<czM+*iHKA#
 60.2221 zHmhgEUN||a4p)oUyKOqvc%ky1%gKe*MnpuUyKhf_hE>_iwJY_$C*6PXbs2VkgY64{
 60.2222 z_w*<p@AZk-Pu9711-F?z1yfNC8*LVzpRVPkB+f4^^uRjoPcac}LOPdP|4To`52c2U
 60.2223 zUQs=<+!-qVa79w5pMS;*E?B}IS=PR%67`;Y*==dkZ)m`0vv+oN3DMEfmEBd#UW82m
 60.2224 z9{P)wYIln{&IWt~xMlbE@82UkfrM)~IA19FtW<V~a@9ijSA3&Q|F%&Wc|=7=kDU3&
 60.2225 z$HhIpAz&wKYek=_dUvmWyUF=uSXd=#Xd7Jh>3o{;h)gMtC+nx<^vQ>JAc~X|?{jZY
 60.2226 zxzCUZ9wc4=Z-O?Zp;i<TnS>W3?*PuYXYF%!O7tB-`kLC>VejVt=t#LcrkmrHTck4F
 60.2227 zVn?$<lfhf2IDuBY9}yQm*PG)RmiBcrPls$)y-cl#LdfokG+mr*Z~%r<o-Q-*GS$)=
 60.2228 zeF;(}FflO^x82W<3a@?R;NZZiRNLo?zn7{iaWOzt>7c+s#;aGa3L>)?=cix6AmXR4
 60.2229 z4A@jEAfyo;nfoz-@EcP7zou1l1LR_cMH1)tj%{l7d#@lA6cpA@PJcCUaYJ=qMt}V(
 60.2230 zbpXbxUcbp_>@|=mZf<TNz)2SYuNVC46)9{kdq_(|W8-!2Xf@;G88oxUocc9fYddq_
 60.2231 zwy?0U(60nZ0y-l{V0GFpF#E;1zI;AMJN6WuhAu_ZgjbM9D8HdUUBE-f!3NzA&z%a5
 60.2232 znx{9#FOQWekW`is$)}{IyYp>?qlJ2hnN6lrPf5itj!c_@&OEZ_qh^Zf(!hN!<qEtw
 60.2233 zAp$GtNMqyuyBT?z@%UrGzjdp)xH#*O&`?h>*4YYipPK-7ywT@~@rpJ@M~aGyf`9}+
 60.2234 z-gg4zSg69%J5o&#V1Dr<t#H+2UETOQ5gkLiIyxEyr(CY<L;ExSm!h9qk52m<Yky>3
 60.2235 zzX~8&hh*i>Td)6LP`0@hpp(t<BUCC)g^LpJ%IZdUbcNj*&o*jf6gzL&h6!OaY7&_P
 60.2236 z&)s2VSKFH;e8?{-s5MpRx?!kRt)Z#e4z&4@i1dpvpibt)=*62JgA5}>YU=7Vr|aFf
 60.2237 zgUidE^RHBFO*h^v`0~XV8yj1G^UojZ%|iAE4|F|_cAmWfc$E))q%%;4vdYRI?Rt2c
 60.2238 z0(yBV-_t{aXtTrSx*pJ&i~DQ3!W#Xk+_LWhS_|Mv+<#j;DnL{c(%hfjDcIN=$atfk
 60.2239 zF>nS{$c2Kud_4~AF<`#W=f!ofn3<XR3NB>z-4L|bkLob91jFVw2$+=(JPAC3Ao%Ur
 60.2240 zvM-s|<@m383_!bOb4$w<iqN(gkf(i0$s$6xSy?;n2hwFO+B=VcR&t{O@1x}Dc|2B7
 60.2241 zP!P&%*&B)8vfPt!KD6HKf7+KMOd%cPKL7ol&cDr2?~~JKlt0k}Al3|~aOzbR^scl6
 60.2242 za&7mWsCrKO{P}Y-;4_==#&q?OQ&1Rn_w<Oua|S<x_pq;Ai7qs#7pO{2owd`^89V;^
 60.2243 z^{f0xFu(xX7=&C_!w*kT8@5fwmO@NG0&A`Iy_R~WVS38#zBQQ&#<Ob_xToBQw}kZc
 60.2244 z^?i21ylEvSC1nA?+MjOntuHTK!u#0K;JHVK=KAsKe~>-!0L~JPsF#Z)aLC0?o_-g{
 60.2245 zmN{ePmen4_OFKJ`39#?Ti&}ludn(@KSP-ovMFux0Nl0#6S=CNX>MNO;q@&(mzinf)
 60.2246 z*B8%!Z|4oYpJUpWlZEF=!tMm@tgJS>Bd{y_YW(NVCc|*c9`5HaE-uD`5v$gj8C~j%
 60.2247 zks*GUIjs}}Y*ey{=hxwsDv#ay766*T;}a8vhdVoz_Z_B1n)mnjb@xcg$;&d*(_d|E
 60.2248 zZDB}DNnL>>wR(2ES7dE%9Sx?}j>7sWPCD90wBKk%`~tTJM4pp(f0kt|I6d5+2zi(e
 60.2249 zJ2^%Dt7w3W20JZ(z~`K*1E1>*(C(e@=|Le9aFv89lFguw4-2uMX?k8Lz74-%j#82n
 60.2250 zFVL$r_Z=B}+uCHX5Fn>uH4a7~WQ9C-QZ4=b#C|vm!{7t+D^G@lscUIzISkB&{+~?{
 60.2251 z^{lM(%y;fo%54<{%Q6y=#Pi#tBPx$S(A0|iogER^9ege?FJA|0Q2t^uLfL6QM#%5X
 60.2252 z;|y?i8Ok>K_~?iQmQPne?)#op45U7_t%IxrC?gSy*2f>|!ZH%r4*ra(odBf2gR}(W
 60.2253 z-*`Z&H?k888`R{&`jXiXnEnHQ&V<fRxe>UQIGrUQ^Ad&Sm7bo?*45Rup>H$@9Ia-7
 60.2254 z_8b)*o&ChnrX2X5%qc#<;sC5#_9oUg0_uDdO3p5)nLk_*!K^Hx9Xj9g5`zE&mtumZ
 60.2255 zgtGV9QR#6Y7H*yY(cGIy^mg)$#F}nyRq#OEs@O$@FXBR&laZ0J2?F|WdPasr$^%zc
 60.2256 zSP{q%wLZ)=Wf~P3Sz^%>Pj)nJTm1S8CMF(83jPyOOA8C9^Ru(y<)x(;h(SmMNap)U
 60.2257 zOS(+xXDMmvHVD&y#w#}hVCSOA8gFlJLI4RrQvdw1bM~SJJ`T2Z8VA8_nowShxr?5z
 60.2258 zwnW)Tf9IlB0M~-{fy+-rVA#D->l(5vk<{XTKHR{PO*eQB8m6hl7F0iAig=<3*i`c(
 60.2259 z7kDgn^Z;$PBC`Jbo_{kjkaiIAPIw8AboKOXVHK7F&3v7wPoGMC+r*>fN*xjK5J{fw
 60.2260 z=?Oza*4EZgV()C&M~e(dqGDp4AtLD;m3f?Jd!7Ia=VfAgv;)HA_p3K=CbV^QauJDJ
 60.2261 zpZM}e+oBye$NA+EN)Zpom(PaxtOv8nu3@5U0MwUdiWolj78GHEtBvef3eF1u$vHy-
 60.2262 z)!axd<l5`NMu!=(40ZukH8u9m&d&A10a6MIW>~0BxcPWFp|LMn)OPr{z)E-AAn+V7
 60.2263 zwBagresPoT{eQg}w5#lNn83)Ho160=sQ^m6blFFt*!K<(wfYB1uVIlON=XlvOzh%T
 60.2264 zSFM~w(kW$RWF7^{^h~|^{{3N7XlPfec~>+RMhlQtgGftz`y*aJP2FW>JVolP&-eYd
 60.2265 zLDmVt;<3Xvm3Tn?7?l{m955RO-yF~|l}k@KfCw-3oa?Q?qTwEF&s=hGbMJZ?8yl~I
 60.2266 zEVupD&!%0%;JWrJ>m5AOQ)1E<av#jO5Q29@prD|%?D|7t3G8woMcoj$FFnL9DI%V~
 60.2267 zt|K5FG)Y8C0AFEZW5+y{kr{gp##$*wtWha_tIF8iJj<-y)}M@=oSYg_VIi%|8_&+l
 60.2268 zx{3x*L}ts!aQNmik3RH);tbhY9k@NWI*?&|$I$)7i>Is26gZep95G#pi*lx}g+u(-
 60.2269 z+_yK&$n3_3-q?`2iHQlOd^Fpd2c(yEAHzy@P0cD#LcsTN=!m1MYt#+Dc9T+L2Z!RH
 60.2270 z-Q5))`>WTBf#c&j@5BFi71=rV!8eXKm1>xjHO!>8Lo$;%C5gVvOM$7^cZN+5-Qa0u
 60.2271 z{=}U0^uV4u$MxsU6gO_z60H91=}i``w^dbDHS<jpd)H=ikSyx$qs~f(i=3UG+ZMfM
 60.2272 zXJf0Fo11&%Wx4x*X93))ZCJmkvr@r*MgNV$>R<TT<xqK#itzJC0iUV0@t_<~sez~f
 60.2273 zb+=8g7?{+s8=_!5Z0J%C*N5{1{my|8wE)`j?klNhja~l=@8{o<^YEzo5p_?C2d+bI
 60.2274 zJge5{utZ0EX?S>fZL5-iFW8=LtdH!mFzt$Ff7j@RqSjVb{R-UuK!I*$-pFBvc^A1j
 60.2275 z(0jRgc_x5!Dm@7J0zG=ejWzFCN3;a#7PbSKLW?#FBmu`tUrKRq)jjf1PXs2?{W#Xx
 60.2276 zHj~o$v)j75x}9hUFt$-DECtTx!)emk8gPwpb8~ZJ(bJ@Stg`Ah5zacM(YWf17u=1U
 60.2277 zigniAU0n<BX@tt$B_+||eyb2H_5tQf!|6Va9BUL$jzZk8H|bvlil1p28Uis2Y*EH(
 60.2278 z>%uNyz%DNKH&ZF1@6L0I$Xx`uTq2N@>8Q0)I#yVV)Ztw^3nL@r&K=^bF@CdF-LP(X
 60.2279 z{PNQBa(pvzmq{P!MB|O`8$Ek=(;J9P(X|#5<ml)~7PUgfZSpWk^koV#Dw-TI&hT(q
 60.2280 zs<?rF5<nIGb7M`QEAI&ijG!YxL558S@w?I^#(T>>9L*Oewmm(ivW%+Zzkd(;hyz)?
 60.2281 zen&pqOt6B!Vs&*@7p^W*;*zs@+~MHZ%J#d5e{xeirfV2oLQ_*y(XbRyZG604al_vb
 60.2282 z8U%#WQKR=^5vpH5SDj~7DV|Q$>-z>UbWgV5;H2ZrqAdpT@!Gw3PTc(fu#=*U%xfxS
 60.2283 zvdMSCYIqKOi>~Vdb07J$hDUs389vFbKj)koZ)j*R8!a~a@tEFs-wc4QXI~jdnu^sg
 60.2284 zdIxcFaVo^j(o*oQ;LyS5gu%6I*Dx<nMw^rWOjK{DU05D&&lC?9loj^#m*H{xSrNZ`
 60.2285 zg^T$4`7N3~A>s`7$Ed;lxBu#Kx4#F7?Ay1$`2g+K1Y64kaX=2zZdoqtGd^tI!eiR?
 60.2286 z_|c;f0y>dZen4$Q=ck9>PqI{dOHF??fDhK<GHrjad-smt$r^JEK(!m^*8dKZIxoME
 60.2287 z2n`KwaF}WOOvP)lcw-~=?EwrqZ9TnvhTfZ%x;=~gdM<F2>G|cwImg|*cgdBLMM}T;
 60.2288 z1@s{Sz|23e7K$$?L`s~NI+a{V#E~xr1$-MIhW&x5sVy#cSi0fRa1)GgMP`$4>QmC!
 60.2289 zZwTo}tbfIZhZ~mzxvF(;*s~U|V_{(tsayC+Qc_ZpOTJkrTY{k<DjUG64-W0XM~a-x
 60.2290 zxvQ&3VqLYk&iRfnJYI*rNYTjxK%Ovq3lL{VvW1!{0yMy#nVFQv`Y&}x=~7*=v$MlG
 60.2291 z59?>YnHd@RDDPi?_mCQ4VP}87d!~qnhDL@sZj7*Rv@bt@Ut3#CBN4<Ow92dkOdfj^
 60.2292 zr$N12A>yLQ6t)z>6B!w4hK8i2rQHcmF{pLQYTeG@|M;%BxR?e3?wK85yzA#ru6sZW
 60.2293 z0XZ4==FQ`b##_Xg&zwZj_R+aIhOlk|5*rWJ=P164zO=G}+kAO(+5)doSn*M}&$b5b
 60.2294 zQLt%;cboC#hJ=JXXuV#k8wR^P%m4U5+vWD>_pa4gnK?h9K3wR*wlp&vsylFTch_>P
 60.2295 zoz&%TfCdY&^8xHP2>H!1hQr{>!^e+Dy_;XaKBE2oDy7ftb+S}-oJD<sJJ}ZXJ~+zG
 60.2296 z&JF>=$~x_}QOFEZfE>eB50}rKKJPF?^EpqUW*2OR07$ht5oqtVL-22h-lv<@H#U2A
 60.2297 zrW?Jb;uJLVMZo)zx~~sCDFaN!aK8Pr_iFo`<Cn}##wOUlU?xX7WyI^gJsa&+Br`jE
 60.2298 z1ha)s#KU+%`xqxZ$peqL+Xkjpoy*$i+sJ!h`NG>wS{+wMi&H3(4>Urm`9JWPnVD;K
 60.2299 z3oX_TSJO1}OMOq>ii4|Q?<u(DXi}=(uU%c&gWCN;zcM~P-bqONU@><_9y=_Zg|8Bu
 60.2300 z7&u>U%J)|$O1(Wiej>A-QTN;~3%;W^#>#UllvBj8;0X^{4oa!=$Jv=r?^M0Jt&%YT
 60.2301 z0fF4?_L(Igpl)Ez)PjbY^!8#EfJjndB)+>nRc}d8MWwS5dp2`<p7K#M-yEXpli`A^
 60.2302 zfn2rzS|88RDm*Cu03G^$FDEZAZ$z{M`0(;2C(rK-KRy;iw_chc=-@XAw5>^;Lc3<Z
 60.2303 zt!0#UlTWQXFqgygZK3oSEr~+Te`6Jxun@R+{WRlIW8TdB-OcJ5@*nN(hB|dF*7LAE
 60.2304 zk;8DF24P@epv|x`kpB(2YB_F#nj;g{4hewJaDTj~QZqh^(=9Bjqz7|XtE#T<0=<&^
 60.2305 z;h(XH3YWECKZZAo$wX|n#1IJ=m;FLusZd*AU*kr602Tw-v^Z-Tf*j3od%$5$^=_Ly
 60.2306 z<E+8a2?=^R=0OTfrZd1JYeJp@!hGtUsAv-IYCH~lsx}*WS$VlFyXEg+(&GJD+Z_?i
 60.2307 z{ClE4M<u<Dq>>eC*2pA6`TWVlGv31K?j7)5mO-X1gI^lOjR)}q2P+wm!iedG-MTlx
 60.2308 zFeo9aYikiqik<MhS7EkN(zx^Yx7USQTU(bvM7fPv@r5m$Q}f%XZ+*J`xB(!;$>HWi
 60.2309 zb@*1=7Hr}+sdB5WU0YYz2A*94Qk~w7{(+0tB``i_u%bO4^7-@UZcf97RdsFcpIWR@
 60.2310 z*A;c>gIZNEz6cH+0T1|hv`~-2V{1}q6pThZJOv#4W5N1le@*Ry^RfcBsF9nSz{=@%
 60.2311 z^I_`DOr!Vc6$Cb&gezzxK1Pso)|Zwv)TFI9Mhf2nq!@t>6#ez}6NkfZN`D_28OZ~H
 60.2312 z8%n~gRCB%}e)(hzL?bBzGq3>`zPayz(XdhS>|5;Z#~(;nmY1EtbFC~bE;9D@^c1ey
 60.2313 zkH%)xMF4X%#(np0u7v?>R0!OpfQ=9p`6gy&j2?i=_K|Q`0IvNI)*hAw^u8r(J5s=G
 60.2314 zXlVEs(iJSoxuwscb>1U5BVxa(LWKFus~2I?YR*O!Fn7Y%LZspPG}e`%r}<fdk20Q7
 60.2315 zyY&t=`(LKRV>BQoUI0~yCZVcI>;PC8jfUW{^T8jTQ^f><V==$8-%`z*DypiVQAfKA
 60.2316 zL47IW^wOi5*KlxD3Je?TnC>21ruZII0BUL6nyS}|7!_n^S5yZggRjBiK8TXrZ@vvE
 60.2317 zB#YE44T^s|=i)Q@j&l_d_9}My#hMrwC0=(tzdW7<9zw#Tz!JyxOzNWM#lp#&!yb@o
 60.2318 z0<d5>B`VdqZ#}=Dz%2CPtxb>)>48B(--7X|er*8P8LGh=rSRaV#qZmufKPkAt$+E#
 60.2319 zk_H5uo{r9Nhh;)ilEI+f5g033u22u1OzF|?-z0SnB@c0}P{t#0aT6_7tJqM6EqXV$
 60.2320 z=leU7Q1PQ#jOR8sdFFC**FJ8|y8&R<0p_u?$#E`l1AMkfZ=#SiEI)6&&>r^W=FOWy
 60.2321 z)Z<%#cOx*-U!K752I&?vc)YiwgOvCj|Hb<xyRXpG1JW*H27KBEYzHg`hU5^aZCf#C
 60.2322 zN5^o*qzC*Nxf>>2lqjY$%z%~_iMG}t>}|ij9zj2#l*pmqKx<*Sd$*&X&;t0HT><+^
 60.2323 z?HuxNASr0Uh#ROytOH5SIYemTx-p_iPC?=BI#QsM<S<z?_a$YJje$Yp7kG<!Lj`CR
 60.2324 zYr)UN!h+xbdggk~eZ|ru56!~I$7eq}Kb%?6*Vhjgtl(4>Wdi(FKLMa)$*!j1;sOZP
 60.2325 z;s62*w3a-L{9k}?HSTE^;K2L4wsj<1{b|x;7w4xLL4kp?-adgI7d>q=t-jalvV$38
 60.2326 zWr#2bdUrh<bkS~`qD6z}im@9j!|Leh@Oco6YNIeZ;*L}3Y-^K=j*Gjyb9h)x36lBc
 60.2327 zn>TMnZr_$J@!VTRkQ$HO^o>7b<x2po<OHgG1roxZeG4W7!E@x(R990Idz<)O<jJ04
 60.2328 zjbke}BV*>z-``#kyiv2Io*E+#>snF;O5-z-3-K+=@|zfth%`;??F}__baV#UO4AIf
 60.2329 z&{EUW(|hr$8|gVXIN+@ocAKxSuKHdfprNEDB2tmVF1NF@vsoe~32hUp)Wrv%4v@AE
 60.2330 zZoV?|@l||voPvFq_|=ldd~FP$K5eZiDLMK<hL1Ck^+`kY0J&;W8Ed)a`62zwFk)!^
 60.2331 zvTW$yojb2%A|n|A5gOGdB~3XG8+gOJM}TveLB`LmtS}Se;i>aA4b7OCnqmNn-uNht
 60.2332 zdN?y)zwilD1UEcX46hh%4dq6FnQd8Z>fh5)SLcFNC{uDs!XIUTAtrnUo^BE-F?GJk
 60.2333 zhH|VsT$Jz4pO?@ETJ?1!i%5ygrgMZ~0G=A@TcGjzpOW%lZ(&o5S@0}*J|VCIhWvH^
 60.2334 z_Wvz#@2`C7FjKg9FMkd$oftNHxq1P+t&<|=ds1XjFEF4T=n|4XyR^j50Dgvva}dz*
 60.2335 z0xY%1_RSN`_**c3Q78rH))lziL`FyFXL+<USE(BXG_tdZh)A$6YFKL*ZfGW<JUl(|
 60.2336 zfsZU0n+9>@aN}S^46d00()Nytic0G1=&&B}Mc}m~Ng&&#Bu4f3fDtc6X|NyxfNbm7
 60.2337 z4eBcLFDk;r!@r&anVmL6FXr?6ps;#+T}MNsZQiNY=C#y|gWZK6`r_ivqx&)5;ES{c
 60.2338 z1R$?-a#mVEX#W5@xAwQAxAYr=O~18YcPLKIYn@k$;Qh63$EKJ`&nrQ@LAkh+6)X;j
 60.2339 zGSYxMt3?u%HDwi%sMFU8fSKEVvgY#&dpOo=T_dfKli3;&#dmt}ftXC`i?OZLjh0HY
 60.2340 z+Wo%TbB740;@PujOAzLAIm5HWXMh`*Psx!WM@qEWT(+kT9{8OdeHOT8b{%toCmX#)
 60.2341 zdg=`uiGm6_G-LQeLPEoN=b5Ux>mrW8xsO{9W}Ej{26GrS+3{O+$LgC(GDwW#Ib56_
 60.2342 zTb~R<bC7*`5o6@{qQMK5w+iw{6O2qXIs#9=spTk5@!*-E!DUJsmJkz#1c4r_a#34b
 60.2343 z+i&MzoQq*G<3NDpF>s-?^1Img@859%z*)j(qI+PB#yZS+2oicmfLRwt0m{L@Qii}R
 60.2344 zQewZar#GQnsLiCDtnUM_S54Kq-s2Gz)WVPek|NSY%6lAOh4<d^*{6epgKMTQ*;3v5
 60.2345 zqL6SPyvyhYuBPLgWAvjt3c5;;M`$`&$nq&L5dB0;Ei3!nx3DYg;EgHSP(Y5}pXx>+
 60.2346 ziSOcB-X!?s9oz>L7^rrbxrU96eGF)$3|@x=#`wKh3rHz<;`0-@sv#YW$4$+Z#;#q$
 60.2347 zz<m35kb{GR5qwAxmns`K?Ua-Vwu1=8a0YBD@nHLSAi+fD@{5}~xw=PXPWSr6X?=Zt
 60.2348 zyH+Dvg1rv@+(m0CDJ^|!*yJ<T_VsIeuivZJucLq;n|8?c-Pzw)2eP6H9yY9%U{FDU
 60.2349 zVYfOzL3IF@_;oUp`|;bH3P2gvG?gy|I5;c`eAcQ>r9Q^MuYCg2WZBK$-d=IA1Nb>{
 60.2350 zkIVDJAp5C0bMRG*ajsosP2#uJJWFtB(%BY!ai1p7tDv-`L`6eW^YiJ`dGl0s6~us7
 60.2351 zI{kG6Q4ih(?7cS7lOXsFXm6*PZ{Kb=@7{U4LIf{8_GQxtY@mFyv1YFYoQV-*4itr3
 60.2352 z1h)gb;tT{H_^cTwb{^PY1yI>YYinBT=G`c{;L1u=N%geXJzwBe@Ru9lR_@oYQXeuh
 60.2353 zGCD!Z&Sh$_OB8A@fME_yO=ZwA<u6qzEGY?R2f;3two_{}wVQYoe5;%Zq!ZzbwT!oV
 60.2354 zKzvn@J57ZJ8v!EO!Ojrg61G8GAL&fzMthH4(x@o^5Xh9+R}m3v3EA)Zw<&XPGAkvP
 60.2355 zM0G7Cz9V5K=M&)k_#<O-YHFgO4J)DN5imn$&np`(2Q($+0zC*sv2rno(vyW^Wo$Al
 60.2356 z-d;l}5FeBEe^(^91y|#VM-Exy>}_QKoy>pL@x8rW*9AcNQRS%N?T*f?fk(_`$a}a=
 60.2357 z7(sCh?M$8lH}jlLl87_sWB*R=TP$NDWTWaX0bGk7sswDhUsF?~hu6+)X?+uCercaH
 60.2358 zfG8j=7x$N8g)FahNV+V;G8N{PE96#u@dUuxE_(Z*0n6f5|Ck9UT~Y*bPVJhJm5ias
 60.2359 z_1cabF4jTX(SJV=<RSiVrTcrim#(NAhKfmNU<Czx6tAr<ZsAH65LjX<>FKwa!?$;3
 60.2360 z_}hoD7~WDuk_GgkX(L?4bSLVB*O4RSq1WIOuF(HB$vv(Q93RlY1;tm40saI#9wN1J
 60.2361 zS@Sl0)J&mmw?w_+QR1JEr}VYAr73E>2qo+jV&495cU_kbP#4!{-VGrJBAi7;MMvj}
 60.2362 z7at?eyg73r9j>D8wg2tHTM0474u6&9+7Ob!F3(iG3v4@h&)cnR|Gl2xco#brk{~5<
 60.2363 zw-*7<Ybm%5&jS}a=FK1fn*(@G!&@C`X&riP#R=bsf%F;~-j$%wT}x0reD5kM^Rj#P
 60.2364 zOZ9*I^AEdNk=(dplkw+V_jq_zD;(#(68N9(z6s0iGEs1H;@O6X*WJ^z1XLx6P6ZHV
 60.2365 z;7#d2%Vl)~4Rnp{8dk>LJ@IXSddywojCxk4%LMqQq2b_lc$bV;)N5#D$lMy=rjq*Q
 60.2366 z%a`Z9DdG-e{XUB)F$@YHFw1rOohK6JBAAtH=;-L=1nQ4v^sDUR;FcD~unoU6P|d*Z
 60.2367 zd43g~@rf9iM5zN_{zxlq;SNMrePkqQXksEwE8M-}G-^7#i%d3pYiR?;08DB0_}EzP
 60.2368 z4LzfW4_^(#6YoX(we#w#s$VezfX17-oDCxUTdQBxP#CB~Ds%Jh-FNgPB&NxUiEL~f
 60.2369 z90K>)+06k-z5rqf_HbVUMD5kNu={1XsJ?clqx}Ah`By#g$O{QEalzlcJuHM0o_aV7
 60.2370 zA-l(OL$@gFLJUkI**~2oDFTsW1c>e_;Gj22DJU#6hHc_tZBpRYLJAzH-aY&p^5KKP
 60.2371 z$Iwt-|C9Z@#T6BiYMPqu01*^`mtPXzZipBJej+5>uDSM*C(J+^9ya&>yZB_{4I#a*
 60.2372 zh}Zs4pNXpHgg{*^BB`4BR6qufSoS4X-Vm_Ujw?ka%%5mw3>Xij%h1Zn%L_H1ALyyt
 60.2373 z+J`b25@8`y3I=Zv=4<gS@ae@GR)EOKkd~6l4C_0u{=ZGWtFOQ20eNl#xgYL`y#zLl
 60.2374 z)Ey||k>7uL;@$&E)N%H=i__Qd9Hljrm&ZzeP6a#&MDJhQ6r6@M9-HI*%t&N?eZ5O}
 60.2375 zEVmH6g8%p6Ky$rV?bfG~X^(}lB486-mz`?k;T|AMl-vlwSlUM)=?wH6?LC1m4^md!
 60.2376 zx8|eH%*@;Y9`qGR`9P4X9}*H0zD`W&4Wvn9*QTVTd<B@vMCl3-#R5-Q)7I9eBL)UW
 60.2377 zjw5F9M>6rdhZ;U&M&A~8`E(1TUjV*6{V0BM{|&IHLpJ<?V!Jca)7fGbn8-*;8R4np
 60.2378 zL&oW$ZA=7+0Jim!!i1smab2|;F$)U|Ctn|*bv9fC8r0LaPznRs&6<Xa%5&rFcy9zu
 60.2379 zhZ~xT1J{PmC7gd(Vni2l%jUoVIktP2%5n|3c3t<7ba=20e4UN0Eskv<#@1rFP32xm
 60.2380 zr9~$nuB7<8o&72AtBVAo*Vxd&YS9yqGV4ngoi1)Vu_>MNYCiib-zV(8^_!82Nq2d1
 60.2381 z5eJP6nR0Eet@R`WqaGU<_q4RM6nLXd8yl|t|AHk&)O+M#xeBE|e;^*xQ&UrQM;i{e
 60.2382 zrpg7Xwz3T`;T{@LS~oj8JLhZb>+hW$ZX0d=`BPvccZ^yBuYo9Ed2x31qWb-Nyijh_
 60.2383 zb~Ao=TFe0@GV~Hb0O+_8Smi*oT9g8nOUTK|IkrBWKZp{SfAVBb)bFfD)7Wz8%Tt3p
 60.2384 z#8*K;itYj<dChbqQkJm*E+X*;wWh+dv)(NMXiHmLTYrc1wXl;!JbyKTjEf5^+@5e~
 60.2385 zMrl{t4Brdhpc8hp8v)XT<l(JP(HxgyHw0-A7}8IGPiTOxm$oLV`(UYoYHU186(vsC
 60.2386 z(7G2!*4AK-aw||>3+HENr0@=}mc2d4Oizy@79v8YY^bmQXXy7K`St71Dy;{Zw!30D
 60.2387 zg>#43<0TSg8S~~H@9X|MUi9waEm**oM;vHy7ePTm4S*<{a1RAF3Y)0Lf&9J;csY0i
 60.2388 zEdU<v0?f_@I5;f_e7C5aoSYlJ>BB?Y@Z<ps_REDe9)9%pDqSZbA%T74S02X2#dV<e
 60.2389 z_HM){CHYS8JoExuxeFGY2gHH`z_oA&zIstn5f)r<&fTuJ?VZ7vBx1^VS>#6k<iisH
 60.2390 zF-X5?q(QS^<7k$Aj6R<DM1v<U4K1zt>A_|wHE@1oAj)1thdk$ae+U3k1_g(Hto&2b
 60.2391 z4|JmIus-#J)&j)@0oQ^rU$_QSs@yimfB)MTP|uETh_UYE2ZG~E6kRs(gcukvUc7L%
 60.2392 z;TJ@mxbM!li2;OJ&20Vyn=GEf-nXMEngF<fG#v%Xo05c<mK`1;C|=hjK>|ujN{BOf
 60.2393 zNxpYIMi0P{Kmyb=Jsv$z=9LG~1iq(|L-V;?H85FT4$}=|Mz=l<o$!k|&IVv0or8mF
 60.2394 zS69btA3uCpGu7lf@d997QTvFnWpCmK@atPySs9xlFg;Qa9Ls<SRuD@mhBub1zmE2w
 60.2395 z1mjVu{_S8+Ve~ymjqd)t@c&}|y8?oPhgXn_p@WpTZfFt~YIb1;tPSQ+{F!OKd}d-Y
 60.2396 zk7{XY`30LYT?;lhGmFJ&fhCJpBecM*4+fxNeBT!V*;_PhqjT+b`bdZRO!bW4hM3LJ
 60.2397 zmy4CY6!$C)9la{McO2~OVJ!FV2^*=ayOe(UvN{hhvl3ErNi>-LAh^7K`%y#QfK`dh
 60.2398 z+OGl-)D)}5ec&l|jTmqdAe&5!=zpRIfM0)4mL1mJotC?)62J_e+EnTWYqKqL0=eDt
 60.2399 z8}1XU<qz|)<hj}YfNPk9v=8{yvs6o)j+YaTK)}nRNiYyujTY*~SlJo$9G^1ad|i}P
 60.2400 z=7fZgOreamwY67aiHtRCxHwJ%L@^3H;CGZvD7h#b3k#8cy<5*U<a0#CYXF(n&z~3S
 60.2401 z*El}oK>l4MV2UUO(ox&2<^mAuW9R#cx`mihQc~-MzQfdqJc_l!nygWkTNA(S+<LHh
 60.2402 zB04aUyoQEJHeuoV<?%+L(dKp=R}>iUUe{&?CexFnBRqKTV!%6Er`*DIfY1yr72YFX
 60.2403 z@n(J-Lpp``yE8M(ido?^;s>(5m5Pe$76PwnvFlaUtoi#L{Ly(#K@k&wFb|-LpZTrr
 60.2404 zXwh(PG&6bV7_2PyG*_Js**QGS@%|S0`t@r85s|ar%qI~x$*g=8O>oh~ANT=l=#`ht
 60.2405 z%)64^Hbx3b5k}%Ch4g>AySwA<7u3|$j^W+HQuD6p??*=-8-Ri0p963nzJ}wwKk)d1
 60.2406 zo142zEn6Y?ZiECwIBb_^-Y6Lb1kyPP21we@<-U{@TWf2b4a~`0HRd?LS$K$tNOBbr
 60.2407 z^0!H^Rq|SNe?h%^a>;0=08~xV^mkw_Oe$#oT#w`Tlk`D8k96>eh)gcP^Q_-c9ZOD3
 60.2408 z7b%UxA4Bu(F0n7DC@o$;GcwmAlEe~x=q$~5SgGG+zRW3KSinXvug0sU*2U-C(V6t;
 60.2409 z#clqI$zKn#v`EQRBqR@>|E97?nW4YG*Nr!k+Fzo-J=!(;vs?5~f90)nZ*8yZj3B)8
 60.2410 zr<mweOH*#qa}6DyeaVEU<K$08fup+nGP(W2k4Wl02cbkzRNgBhsc|uoaf!n2_GQ4j
 60.2411 zWQV-$Fv|n6!20L|jSi2)v`CV3YhWOH(%#m>kB<|u&VQ4r_W@f)b#*Z}#jtI0qvk5$
 60.2412 z8nv5gzFRs8*-g>hi!{2vh6Rm;L;jYf+N=%^+dPQJ(audmtFvPVIk}KtPw|+pD0pl6
 60.2413 z(bC)U@^UutYkT3N_*UZQ&tFIUp2Lk!;K)bg%*0t(WLGyf^ftawOO4+|Rpzx0;(n?-
 60.2414 z-{@civkJ?BXrI<LdLMe_T^6b45&>1VvAtdVBt9}G#+Cpfq!TIm+;!<r!^*;9OaL-V
 60.2415 z`_?C`aSw0rjrWT5LQZBKU!G?0J^65QGMLk3`svfB)&XzB2yHn<#bL(OIv@$KkS9-`
 60.2416 z#IIDy$7ryUx&8S)m!X<VIWB$OQzV%Zd3ft-Qbz%7h)YwDl$e-T;ZGjg_8y3>8o<AA
 60.2417 z;Oh1Q(A%D{UE(O*k_%Wa3WGaf?n})fAtBV?RJ;$j3@pu~(@q%$1T>lBvcP-8GvQk2
 60.2418 z*Vsz6?XDqq0($kgdY1+=9%}+GPE1F4k=k_ha^>`#;T5HUKmfJ$6P%l`DwN@&q=UbI
 60.2419 zf2qsgVP@V#leqPX3vO64I6FJ9eZXz_e{})&*9P|x2^P}z$pA6;t;9`$MVs&;SMYVt
 60.2420 zoz3DDG*^V2)Qq~2;3VnLhqsc}IZ^w!Y=AfaYPr24(sx{}%{C&my*-qxMiun*)c!XZ
 60.2421 zbZLM8%d+tBaI_yE>8sK5?p2Kx8_no6Z^C%kc2txar$Su{<#pSjKg#W<zVDc-lxwZ4
 60.2422 z8~@rXcM>4oUVdI)tfZu5JVwC56dn-I4L-+Z*&!=XJiYt)ag>U_35bytfUAeJ;(k7d
 60.2423 zt{Wq@)-e+TLn%!_!f>Q|S4(lk+~(v|cJ3eG7+Bi%kb5b?pfN)RywR6}0yA_8504ta
 60.2424 zv{Qzvx$1bxeeZ*U<(SyM6)iLrbNSi%x$D*k*(_BOL{?tj)EAHot$~5Tw`g`f^4N%o
 60.2425 zZ$Kq`8~_vG!lVc5gT%SB-nk>gW%B(k-T4U$myXX$Wn0V8GfU6KrNTlOwT++w>4RaT
 60.2426 zXhBt{tj<bCOiXNZw&J@p`?4onF~Oy?XgH-<^warrPl7O7KyGes=hv@N&P1GSY-YU)
 60.2427 zf_?67A!Kx54xM3NQK225X8Kn|8C__zc7GV)^wI!T5x<_rtehN6|G?!Zl-cL@(+$?u
 60.2428 zo_ovn26ZmiF)kD2^8l%f0;vQYk^7YZpe%<T2t9x&O_Kin0ztUO>#;LC4d$}-_M`W!
 60.2429 zrB(yCl7w^;{_3{(J6qN28(Nx^BY1QoH8`+yso}B6O7qD#%JcK{jfR)_2*B0h!GDdO
 60.2430 z<N0#^;o>Gpgcq_(N(4sr_z6AHz=%u;p-|GY!qVUH62hN;)=BaC`{YVO&xnu}Ao4a6
 60.2431 z#Kgpe4K3ASrm1qe2MO@MIDYKR<>c&4Qa)yv^vq2vEgTk{IQ{uk_7Lb5Ot<Z6Uq?GT
 60.2432 zwwdsY{iVgl9fUztbP7n9i`ehq9~Mca_5Tre{VK1Rt8Qa&YG!F!zGJ5m2{LJ{{l^bI
 60.2433 z<yfwpNgZaag7%ZEg+-4{%Ex#BO4Mqz74gQIKYNx|QCd0>xt5)s9e=n!d@s}V$A@o%
 60.2434 z&&P*kSV(R1e%!i!dy1Bp_FFI^{q!D4S|4Nwg&NLX?Ck4XfeTvP?Cd=vLP9!@^WU#l
 60.2435 zL*mLeD$dLMHKsf=GBRJM$;a)IGTGo6Q7lfV<>=_x)ZFY3Z!lm~TqX^X805(}ULGwF
 60.2436 zZVU~nqalDLR`+ib;gAjt47lZM6%)jY`}-B6Hb%YC`VLPeak%U35E_J^sqD@xqF)y*
 60.2437 zq}LXgmu-64VXYK#-;@3DSFbQPfJAI>Mvdsjds+=g=@7sBzP~f~%`i#WodY)ZsP#T9
 60.2438 z+62&KOFNz+-p%#k!T2s9N=*<;4Y9G5uw=y1%HpC`ujv1R;H5;WGl8KVe_U2pRwkG!
 60.2439 zvOedF{Ki0G<mmKNu*PNq{Lc&iXS+Z2;4<kz0y8ec_3Z1b?mA6&=FFt@&H^U0NVDjO
 60.2440 zhzPrr{j~@8e!$D{ce%Mg0WnF7h78ZP2JvIVKFmp+qc;TYtq2fa%iiv0Fl%kVeEqlt
 60.2441 z##8WLLCSytB<a`8{Jcpo04s0mUnyd!m%w1gwzswIqA~FDs#*GYSXgBDN<Kafh>VEH
 60.2442 zP+R}AxoO~acC_oAqny%2edC6$Fc_f!kFNKQ=eqm<fZxanp{$IoY#}ovBg)=;?>)=R
 60.2443 zR!Nr-vI*IHuWXf(%<L^$SrH-h;XX&#_50p`-1i?ISC7lv=kq@2wVuy&UZZS-ks`eF
 60.2444 zT6m{L+G50sk&zKU_ROC@{w6jy%;)jIa8EMM|FFOjiQYjc>-mPj8MU<pqE4ECDh8bW
 60.2445 z@gYA5Nt$c)Bu-9B`aav)0DhAT6W)b|g~{(Td@)@JI5K{HB7idg2jEtbp4%+}W<%mV
 60.2446 z0|Vps*a$<+KNNrui~y=#1xVH}Wo2b+jIrD$L~CPA15S?13ye}?=Hukx7}>HV3(tl2
 60.2447 z_6vBOAILdX*6+K2ZU6D%cLP@rDIEH3DGiNlvVNql2tIgrveL498*r<9`+80`wlBg*
 60.2448 zCIHIqp-zv=U)>NDbl(^)e6L$(RLH|paz@k)ps5w^^AGz#;^zS9r1gLPECPpp%9{wR
 60.2449 z)J9~k4Z#VnJ-1Mq(P3d>t6<OAE~W4M(alu*{%dVzMSIPstqwSt6}N_2O82^?q@)7y
 60.2450 zl82Mg;yCuQb^{mUCPSPST2V3O<>fYS>NE<ier=37egd&-&e+K4{xmWF#zOx;;o&3l
 60.2451 z;>X9wVH0J>sV9dsu4|n7Rg6pU7WDMjy5`%tRe)X5J@>LR&uU1?$Q%f6!&J(<ek%Fw
 60.2452 za;GXGjWv^>KPwPuahn#;d3|kvf_X7X&Ug7!%qDF3L?!glECcvb=G6YO*K&*pWkqZ2
 60.2453 z>xJ$WK=Jc;fi)1e0@uU>uZUM+`yo?(eS5gygwLhSzy0`OG7nUS7cr}zVrOAtNjq}n
 60.2454 zF7CCc)Z*geO2J@y@$m~qxT~!#OCblB^pU*2zJ8?7J9c*VBoK%Jc=a*lO5}rg?=lY_
 60.2455 zTxPr$7AA7c93yvqZ6Ixg!YeL1T5XA72mmD?gkM_pN!K|9S}I~~SWMNxqto&5RLWqY
 60.2456 z-rjq*x7wGiX^EBr*0}BNItHjIuHLPL4It-7aO@1Fxc_fO;L1Hl1632bjM-~~#>FKr
 60.2457 ziX@T`Yse)>jC-&963o@Rnx>ft0o_b-B#Du;a$Ej%^#~wv`_+7htz+)+&SBvlZ%@zC
 60.2458 z{bo}`C8Y=-fM+68$3BK$>HRTYntJatkJR*4N}I`$2(O<5OF!cPA9$CWW&~675)u=u
 60.2459 zYgm*nIZ($%gOFJ6D6IF^_aF*H6Jga;VXj0D-KfkvHEmm4PJG)<lJ%|&WQf2{#PZsj
 60.2460 z`zW#SkLlWCX%Kv0Vi8d5ojIj?i1&W{D7~Kx`PFN{`sX9V!X7>J@(Mf#tjkg`u5a(>
 60.2461 z&o9E0%#4hBSlHOG9)b3~O|`7Pfx#=I8aws3TI>S)K-+;mXpDkT%WwT*etuqLhdk^)
 60.2462 zb3;Re4G5}Rz_IKOz7dAG#vN!51GLd;X{BMM@7_&%0E%nk<>mF!X5h_K=TJaa&~5Cq
 60.2463 zJ5O@M!^52beyp#qs`@PrDCRqWg-ktpIRpjkx_0j$IB+^(Vq*5ebOoeV)ueoUXa}3V
 60.2464 z<NGMflFLCI18~e-j7&^p@1FE5K6JRznkQzYLPsQriT>nTfr=XHXE&|)?A#p3yw6&i
 60.2465 zI3Uv>$JUCTJb5Cr)~%3x4RDw~ux-_ViMVKK#eLnHs!o_DuD>&OVVLjVzb8#dNJzOf
 60.2466 zQfgSwFZ~nP^t!o&Ly`Y>?S#i`?P*Gp^Ra~tHa51D{WIXp_W{97e3O<Yy|lFCS*A@u
 60.2467 zEu?1oN)hW>ra^<7wVQDz(eSG<G*)DY<c{*&0lc%IXBin8LO_$50pe!7dGn(Y%HPcF
 60.2468 z?Z9WZS|;X!G*R1JF>#ZO+S=OH_V%TpR#&fHooH!pW{h0tzIju6jZ0ce>M4SVc>gGI
 60.2469 zPrO&CmBPrv;tm*62Y@FYQx)bP0}dQ(m9xsWQAZ1d@~Wz;zgJUT(ftDgIIMY-;}vo(
 60.2470 zZeNcuNW4UVk3UM$mY$Z@-{!Hd5utZWFh-7%8CC)N`T6NPD-vRi#hN>u&jJHgLkS)p
 60.2471 z9%{oPiBC&EJ$?*X+1R9Tkl_07zQ=Bb$7r&iS=^$csgB>pzi?M$d8{GV`D~QrA3y#b
 60.2472 z38zpC@$h^x5Tkt$;-W)bNPbSvF7g(TSSuj+S3qHYZ4YHWE2ye^t#8VUS8#sxjL5>H
 60.2473 z0a<=)MMfV&gaEA)c&$I3%~G?jYE{+`JdF>a^;7^xaRbFvNbcJhd4RINclKvr^^Tw4
 60.2474 zDP{NDmEOdK^Nr$i{*QR6-!1|xfFI4LKbqJ8C&fd8;X&`p+8Q4`fqHd%xV>)z$Qi0p
 60.2475 zhgPc?INzXGr698J=j7xJ(@Tf`8cCltJ~a~O;~Q}rOcxW0UBZyGv$Io?laqUXwhvx!
 60.2476 z>~g7ZJ{dzOj{`3r;_vU@p{}m}1$c4_Jw3fom>$4%5mc@nT0u>BY4P@K!^oHJZkU+$
 60.2477 zc^P0E9mxY~ZMc22Lz&V7xecL*`4abU-@N&Z5J?m9d>s-JvJ87N-$P9Up-P2F(Zi8R
 60.2478 zk3oo$I@mwqh=fh{*1lpPn-k@##uaAwY_zrGErDt{T3a)9&(1cFSIs`bz~0!RYA_n8
 60.2479 zsH@Y_1KZ{3Sgs7H383B%C9`&}uBIzrztX|pjGtEALe*HUWMyQgzb8^D=4xnSW4|y5
 60.2480 zj+T;=GNmc#{0v)LTbmh>q4jUy82GF*0JWR=od%~?hXuel;!5;$1{gYRWMriOV5S%a
 60.2481 zbnmdTvN8eeag@8ZHYuNwkkI)~+j;9j7nSQJcp#$E){=P<YBiBh=wIj6q(Q88UKq(&
 60.2482 zb&N0?%D~p?heenEAQU;i@os8rQlu60^^iYp0AY|)IuN+%4`XAs!(Cl67Ut&k9Bgdn
 60.2483 z0EYJv1P>VLbNh0RByGL~Y9JB$&p+Rz-@I{RidRq;_1Y4ufy2+oinNd5Fj}S24@3K=
 60.2484 z%&~>;^XL1665i8oL2ZdIUdVQmoBGEH+4Lnb00IbNR9VAuliB;H11C3G5H)Qw`h#pM
 60.2485 z9bz6|An&_kV!3eA9;8NXu%}e$^XKc-kKw5=ukWw#5dhQ7@LtCs`*XZc3s7;UTw6v-
 60.2486 z$*qCe26sPrYY7JkS6TPcl;~A5C<jdBR-!7WoJiG-*?WP}Plpv^U=wt-><@^d@$m4#
 60.2487 zp<v&Dmw64x)n@Qozf@}?ymRMHKe>3uU?Kqp@BOu}d8=Dnw|e{gOVNWtFmo~Px#jBW
 60.2488 zDi2VwIO4HAUHc1`q*vC|@Y}^l1E)t5+oL5cBBBE@o~)4F5Zxl|9Rd}&wpPOTS3xQ8
 60.2489 zkNi;G4!5S(f#H&2VqxhN_0}FxRH^p$^}z@o?=NopV{J|M1lZcDN}5QmjQp>6kCt9`
 60.2490 zM^brnii*zQBQjAmoTIMp+tUKF$nNegt7)Cn)JND>h!C+EOiw#r?un(8zbzdkfkV&v
 60.2491 zK~s%4oJb0%XidtxdTOt|y*&%yU2>IFLC$hOx8i{}tgqM2@GFLcBlQfa@bK``+^2vC
 60.2492 z=Su92_Xd{D%E*{wH(6o+Ve#XO#D_v}42W$`Onw3T-^8Vf%5Mg7r4PKF@5@e$k+*N(
 60.2493 zetWdkMXK~hsItp5A|-RJ4MZ|hfRSdcdlNdnfn)lxuwc3jPdo&kP6JHf2Cye1EK*v0
 60.2494 zD6|K}P}LL5vSz3HND8O$$!mS(oHGM0j6$uVPs|(GSK_+`896y4J3%BTARwqEsCL9J
 60.2495 z)cVZI&TcV1Gt>Kv<*8EyBrdRwg^`t2PHW*XJ|SU`+q9LMl8ESGcW*DpW`jgUSXie;
 60.2496 zXeRdlYK_mn4NQ{W2ab5piZ?l|xVYHva~zuwJVA2#JvWxJcO)J8-Ymkgs1=8vauLBo
 60.2497 zc6q(%Ky0MeVjtr`Y$!xujl=VZ>-bo|Sj@}&0oupx?Ci9GX~cjvVa@G2vnxO19HGV+
 60.2498 zJ9lPV`*X>b0>6vQ68m0?GH&p7#Pzyp^my3=rs`=?fZ6sYOoJj1_x60R6A?vQY(4(R
 60.2499 zoHhA@T(usC+0~*QqcMXk3OMwo6cA&1zO~YsAv@n1)Uw1Lo~CdXkk*I=&ir+cl>*bX
 60.2500 z%kej^NliELBQ}W0bzuTv`XNM8DY#eooEYNz9Ly)3yy5|0<mq7o<eP8fvX@u{B_@0X
 60.2501 zhhF&w*zb_n`keSLJ{D$uz9of|c@Ze2aO~Z45WOyfEKcyncpq)5JFkU>u!9%bp3_9w
 60.2502 zk#w0?&*0yOMCW~wJP_vcxd*>Uh*~Ayh|89Z1oxyKe3h*Qa{Ly4Cj7vEX!0sC=o%m2
 60.2503 zH6ev$@gXNCCr9LsC>|ydZY?Y=`)S4fKh;-O#vA~?&o3nO&UlAdYC4%;%^JK;^co2%
 60.2504 zDHF_ByCEel9nP$jq;~)3cYu#00Ksf3)MD=fPM|vN%^NG_sdOR@4lKLeAI$IVUaDxZ
 60.2505 zYg=jl8i@m6a15`&-np;68UrY{pA;AKrhtF|E~3RwN^nEOikyf@ZGC6Q)Y`$pVe6s5
 60.2506 z-rk;*%Y5@xn`{)#go2_X$Ifhn<=O6{bSv=c0FB*NR8;JLXH=F2es2v+TfRON;x@|C
 60.2507 zTWCGGa|$?AonEEIgM6SG5>xLUWv{^kw!<wZ(sWc=XlSTS#$BI1uBdKD9#aG#%koX7
 60.2508 zC0$OW$R#=)Nn1;7C==yejTUsXgvup5<<Gsn$_xw)TM))1#>H91#K(8~ouiI46S$01
 60.2509 zG8ephUNf1%s}6?5US-5=eK?m;r`#m%upE0%YDr#6X&Kt2w}!@RQpDr?Q0BMQ{#4zx
 60.2510 zv@}O$HG#SSXRt73AO=$9YRs{eZ<INhBE4p}>#mF93_E2ZpO6p=sH)0L)wsC0N$czD
 60.2511 zTVcd3hdq6L{1buB9sgWShV&E<A?G$B!M`EmL4-VPFoI3ELflvTd_;gbp<`vsd-b@7
 60.2512 zf$jJWz@r%O1Dij8|FnDnBCAMm-Zh*{8eECRVCQgiHG0%oNg_aqW<5ZozjJ5e78BER
 60.2513 zKC|}Vy~dNlfdRqlni{R$WB=UD(;{)@FW3mRuv>>0h-DXL&j|{-d4TY(0X*fx4Hyd?
 60.2514 zNKJr?TXZ+zq~>5aR}lqk*%$ox`@2DKQRdIt3BmvdWiPmi=8qGMonjbFG~A`eTkL}S
 60.2515 z9DO6TpCRT`PFB{3<#6uS-T7);RaxMN8u0pUs!0J8YT|wPRWfaV0rqNM1+060aBV*q
 60.2516 zCN{$s%`Y?xJK#k3gYRFYe{s92gok4zz6Tqm*8qc`$d-))LA@BLh8HymZzo_Ye~77`
 60.2517 z!h3~vz<*)2SoLOOx|_E*EqLCqb6`N_jG^+*n1CFfOixK&B=m~PSNMMI?NP$Uq}99#
 60.2518 z@Y5hr{+aIOZZj$hbm>nKNJHpYSqpCS^VfWxZ}CgmU+v$dxOz3leQUDPFO;zcQuXUJ
 60.2519 zG(RXwNVKZ#NAkL-%V9weye6+L&V!|_tzO$H4|H_My8HT+)|ZzVJv}_)yuJ_J+t}D(
 60.2520 zU-|j?Gt4+X1RhI!kkArWYXQ!bcv)0_ZN2>o#vzAp*%t8XP6zNDVsXZ`EkMJt>3Dzb
 60.2521 z^ylNdo#kz3DQ4eWi(EyotY=qLMC&i0IS#xLP769-A*VeUR8di3kdTl7oF?4!M}=}S
 60.2522 z?*mq{a9Y@y$<@Q7#@HBjRcbmezrdt%5=}Ba#u9iFji^tb<Tiov{RB#wzP7P3U9e~i
 60.2523 zM7R9==aL`{EdRWG={DIG6yyZpB?STtnNff*|0p_72kbom#fujbL^zj3);<Bxod<{K
 60.2524 z-T~}F#B*b`7T&!8`lSskb-zYQoK@_6$?n!fwc;}+_Ey^TQ%1SWHEJuR-_^JK<Y!=T
 60.2525 z7pZWW6RDq^)N8u;3~R-x(PQ09T|K5SBV!?2F_BAH-1Rgrj$}XJ^w2XRD(cQcrKRla
 60.2526 zKw9{v$;ruoo<4nQP=1B7nlsd-n`l_-%cWf)WTtBIKf52T;uSETNYW+tSVaKJbOJL=
 60.2527 zYTHKL+}!%k&Q4v)5r9LYoo3(t<WURgwgQNeUiKArPl|}A!!zt>Kooiqf(=ZRo7NjP
 60.2528 zd2JJKcZ@ar>^J7*<?W$Rs9qW|Un^*c_w@BC!n>DxW@l&FJ1r{hf#^+*ZK#1O^gsEv
 60.2529 zP8Ckhts)V0){LrkoZ!dCA|#CZ92z=WYSJ=&M_70Y7YY2m_+kKn{m++ia0-T9S;)eb
 60.2530 z0hWmi{ZSlRHxexl(?VYvap_k2?5~ob9uv@tI~AvWLJx+?6yvpND=RBXNJVWe=|nvM
 60.2531 zEY6`PmliPM`WQl@$(#ZFNVgqK-+l-*x4Brie4hVTz?UyyV1rnPoi}f&#R1sz_4Q3S
 60.2532 z+M3ejlXU>xKpnv8tlZq(H=P!2t_!Wsq*t#le#uo#bVJ=Ae<SQJ0xz}=nPZay5nqG-
 60.2533 zX7Q1PTl#yyVA{X3s%lUs=|}Ly#i3nOa#B(OfM1@T%b#MH4r*QPe|B_tyMy3C^Ex*6
 60.2534 zBQ~s%m%u_`18{)#GF+yrI?DkJ4jEkIpqeqcMV5+4T3O{NI`@<SrErf|=w!Whi(mSH
 60.2535 zfqSs!Uoorm7KhaoT8#rkN-IL`6H5H~s;RAQ%^a^laf?h5Q!7Zl$P_reacW7JRY?K}
 60.2536 z15BvFmVT`d6r2PBbf*uFK@bT1^V{OU5iHsUW=ynr@1%1=$H<rm@Exg%iODrjKviA=
 60.2537 z_BH<{TXtKw)L_hcp*3ItsHJiSkEKkW7jJlv)%a<+iN3!5YhbyBXZq~%DXmBIerJhX
 60.2538 z#*L*5I$*<ila-Qz*UjAK&xwNfudrr)CnNBr&;roLhUu9$yDwRk-cvRMZ<6(Ayc8I(
 60.2539 zbsa4PEyTPxD_9*!JDv5e0QlwQ$$6t_FjW^mKml?n;Akue5FpN1j^ibdOdCDyeWiD%
 60.2540 zDlK1(JjKL&3J(~7SlulFBzwMb|0PTx?F}WkVUTwQ8&m)D&p*4YTwLRYeLaJNwm%ly
 60.2541 z7NAtogUicZpPvW-5W52Vgd6AjR&I8~6nKnajY6xwbTLs@0QwaqGRHNR&|qu#hGJq(
 60.2542 zWT@WNw12mcyY)9i|JayzNy|CahzUbX61t?9SDlZW8*g`aw=9dfww6|h|DoMs){Mn>
 60.2543 zPkegLxXX6vznRS~wvd$Y`wZp)nLI+if-R;#*au<g?!m(T-k!&g(8rG-YuQ*^Q+T|%
 60.2544 z?<me;)cp91%xP^^6>ooH4R~yCOxKjufu#xw?y-XH>9fEG;Gq?uqocE@*G?Q$HyD}h
 60.2545 zBy|U!9d~PFs(o)}V`u+-43C^czscun5cBa>Q=0C2ZvQnjNHgFe*TF|Z2@h&M8znOz
 60.2546 zpN7kDIQTp#yk}@4WMN_X0&ka%r&iLu=YRSMM({owFVR2t?7W9#uUQkT4<uty0LaWZ
 60.2547 zAdCX;<j}^?K@4d=ncv^8Uuc9ag<9r-Xo#;}<AQAyOeJEpsXPTVWn@BE{j1-;4HgFQ
 60.2548 z!pu_&6KQT~@ziOj`S&7nqtwXZ6Nr}1#b<u7AE%*f%ZjOCQvw+w;soH8^<cW#jWG$l
 60.2549 zOXy*dk&!mMUZSF+$N3q7DaXy*we<j>#h0RB_u)KPj)5SVYI=@54=n2*7zRx6gw&`R
 60.2550 zAp$b$F<p+;Jta9gjIR`OEs%DA9tGrMfz$1u!^~9s6r+%vVx|6q;6?{9l-haDq5LvE
 60.2551 z^kBn!7k$Sz9TStX^=F+HV?JtJ+}wA3HcRW#*ZPuUc^`f2U_f92cCsbi|NkYKUshID
 60.2552 ziNogUh^oXkdyJgNHFJ%^(T>s48kxI)B{L)rkCA}qc-8XwXI5-+vE$_1d(V6UHEC`N
 60.2553 zq=m4d#JRN!Ha`dP$lL#D&N~)nNEobP+zhFaUqKWkdjNK}{{qO}+}OxS^`DhQ(*bm(
 60.2554 zQm@Y+bujU4d2c#jxgVH88ITq&(iKUS*l$HCuE%)u<}*Cx;xMfr78fyzi<_+FZPq!@
 60.2555 z`1=A+;r-|L&$)?G!?lFuWcwlEKx43sOR(X_8$MeVUO<1*B=6r3Spy;4p?sk(w-W;?
 60.2556 z)+yc71+Kxd?d3~c9RP!{LqbCj;T#^(3=z-ICl98>J1zPJK9(6b89|%{$1CA^d3fMg
 60.2557 z*Vf)BOg~a$CE3s#6&tLxE8d|5{{1C(J1d?<jexUYa{QY&B@I+0<mCCs7QoAet@;2c
 60.2558 zC?_xf#cG!n_xXE83Wp%`g(h#+wch5cDh>DhHoVET%+(~gm|d@K%)}0^_13#CoXMe@
 60.2559 z%gf7E5(FhAGW?GBth<3C?=LS~y$2v`7I5UOhKlgW$kG@y-?cRF*VR>3k3rBHZpfyO
 60.2560 zS5S7Ks?(cjb+8k?vW<ZN>npkjG#r+d!ER$J8_!-*f>;x{*TW(ZO1KKp5-dD$JU>J2
 60.2561 zgYDF@{3Ax6)31pA)#2h^bJPWF?<?4t3bv!C0j~1aKu=HMH3U{kR-3&?&zPRy2SE5V
 60.2562 zAwIqmd7G1yqb?6P3pEXrlb>(MN;39b%EiUSLNK*-$c2RjR~W3VE-E6z!?emu-VA&+
 60.2563 zc6V3Tp5uDeJ+}txo#uU&BX~vv`{G7{VD|cL;C6PDIIfbS;)wiEP0i!<&KymOJS}z#
 60.2564 zd3kvqcy6>0<l_(a?R2;=nXl=tt6$jttcEg(Tqn*@r=rX(EO>Xt#CjJVFGaG@)6*YI
 60.2565 z_M3+eR&!2MHe%7|U}jnA5ZePoV^K}F3&mq*WW*T_BFB9$VqH#1D?VBi+hc{rQeE?6
 60.2566 zAs(!4>DxDc(;S8vx!69yPiucHQSjMZf@y&?U`upbe%(eqHpi8%EG)8OA2$AfTt%fZ
 60.2567 z7i!MTMOIYYUIg##azosI(sJ>`^OQZaWF;L(-r}-=u^}(Y=@%*agS_@#|K$SY=X*?6
 60.2568 znAZ|qr513|vH>8F@nmoZM2O0qoDeY(EUBe+k{Ls4gej2Oh#QvxsZ7De!%K!&DHE`r
 60.2569 z?LZPwc5wF+8?e{1<eQ!|b<V9Yl`{6wj|MPP*fb^oWDWQgcYYuxF7g7JaWZo9ZtUP>
 60.2570 zKHF8;D)$>euS)>XCZ@uEphl9Cl9h+2FT=xyflJ*vrcMn5aKx91iAn#WP!KIx*nM@m
 60.2571 zU~nS*<x3%0)~5+jz3>`98;GQnlM@J8elD<g1P>s8C;fL8{GDuU@?sz25fbja^E+~R
 60.2572 zv1VUxGO4hAa<EAbqTZlsTOg_nNRb#2qBna^O`fmyq3G}%fasoQ{wq3w>Xkdkz?box
 60.2573 zI!*8Eqcz4GK)?EJ|G0KSdh=>{r^vxj&^f9;&q1C&-r=wq1h<VuJ$OZW1CCMn1-rvc
 60.2574 zm^LQ$+Y|$Vc@$OG#2N#{vhwX)mQR$|H>J{d?~;T;Q2&F8M|O7_@ZJS%TK^&WTV#Az
 60.2575 zyc8dyWBi}!>HrKGOX>{=Kmp#uy{kL){xMs532}9GrPNiDJH3D5`ZD1(mjS8FXbvJA
 60.2576 zD_E;Dl_~v#esOVe-az>}ZNM+}sQtA;M>39=FJD#-)3hFf2x*Yt_jtemP7|zZS3f`g
 60.2577 z@Ik6Sa@}#F%zi)^1-vo%mvR8`T>H>u9s#2&hWCU+fjiZtT~wZ^*rcRSQ_Vir833Mt
 60.2578 z1NiQ64xosg#l@@8kPMtlK$yK=AeQN;82;kDnHdbBse;bFfX**x0To~d!1`B8;5h(b
 60.2579 zwLSxf2P)0tZp)u83|hrTY^TnS?-%rcA&|`VGgkvN&yU?05rOZ1(6K~DMkbP+J36Yx
 60.2580 zg~TN!q?j~%^sJ+f7F79i&WnoJQB8y?j8SJqjX;KEYQ{1!hqMeHXu!(`4>>tGOozpl
 60.2581 zm0Znnj%#5`Ztm{=8k(9@cU)$_W(d1?v9qy-?cXBML>;*cQ8OV<lNF0U;Z<Fo%iPA=
 60.2582 z_O=)!3(E^#!~e;~;L)SX^@Gg`$A|zzJiOk^1O#QHK{N;%r$L+-2p-?*r9+1_nnG$+
 60.2583 zlM(7KT{;U)A<^TomB<@Ni$4O7rvYGaN=k|aK+p|<j5N1dcE2(Nh}2rr6LTz%P4nr}
 60.2584 z(ozGm`}I9WnnFod7K4hE)YAcUC71#WT~W(H{=z4~`eS=nQrs72>Rl(2o6UHW9|POk
 60.2585 zugO?)YjDd{n=CMo>`ml80<ccKp|KHm$BtXu+%yz-oo|i<0IxIf*B4pBvF(8ji3Rh+
 60.2586 zt*O9LCK}{AVBVF0+-aRQoapG4l(zsW4~(*(%yimRYono|bpkG&BK0(Hl1#b`0Hb?K
 60.2587 z$V17V66P;9+ypf*h}q*6WR#R5Iw9ePj2Lz`$}^Uc!6HNsf6Q&dgf74!wKC~Zo4U8=
 60.2588 z8r)@Lm%n7NaEObid&Ass&&~1UxVX3^;}+k8qWt{)fhUrN^73IS3qS!ckGWd9x|+gD
 60.2589 z+whY|NN{OsDSkm~w%cl7^32E3E1Lla8`|Brm19CuW3}a!(<;)ZYKAp->MSvGIYI3@
 60.2590 zu&mB=;Q3g!?citNH^x)GGlbOO=@*Faie`#bKEMIqTd&q3{wSJW+6@3MD#IBqA^=sE
 60.2591 z;pm>rur7TIfKTiNzz`iYG&Ca3pTmBEummY8JiPiJ5P(|U*Ivyv?X;%y+YP<t-S(oO
 60.2592 zpb!~(&d*=cH$82@m+}NqNZ_W*Hp_3DWc>Q&p#yel8&<XZbwyBMo|G4Bu~UnBl|1u(
 60.2593 z{zJ^~&|~lLkc`u??pBLH2L=LSY85~gWJtty9)^9GTc)Qwb21InXf`vxefvf^!3xv0
 60.2594 z;8agG5?m{5Yk{7+>uy)1<nXdoW;J<>FV{@<d0JcNs&r~tSTN8cu<AAw_2)SrIW^3C
 60.2595 zA>%T-UgLkfCwn{kaIYGnBf{bDVMCGP=PRd<djr~xQczUv2l&aiwDo=h@OSX~Q|R{0
 60.2596 z%#1GPrAs7)l>DsqLFZ>af`WptKYfy;+8)CigQ*uNU`S)f`)jVKw)3NNjZ5fHI);a<
 60.2597 zx^91NJk*w+vA3fg3|!p;p@+&>N?O_-IB8wS=afiaia>FAcJ|VcX1>ap!BZ6+`~9j6
 60.2598 zF|XSWBmjPUbaZy=!vh@`WA_w@x2NE(J=JSi4-6nhMOAfm@guGVhp{4;^5#8-b2u!;
 60.2599 z(8h*22n4EnfD}xYY;5iA3kQyEWMpI_FOR|=50BS}nclCD<d?#_GECSJHa8|FhUcbC
 60.2600 z1gm|YAgrHtn0@zXs+P$xc!R2&)_?cOfEEQ1{-}OUPHrbmbeV@R5Eh>V!ZBkpa#med
 60.2601 zyzxNKRN#O~<Lz~2%8_}X11xO1GtKYeh=k3lYFl+39kOD!I!wFY(A&wh$lXhuXzO_B
 60.2602 zT*uoB+}FXDy1BVIeQ`m789MB2rYPt#`*<zYwRQa#@LghJVjOUO8DOD1*5ip*!*?vZ
 60.2603 zB5FXem;xLI57slk1Ml^?bWjK01Od#u6Y}Cklc9luLKE<WtyVp+`N4zw0jRF-?)@aC
 60.2604 zywC67-@AJKIxB^^|L>1*7VGiv-~Tu|o=@3k$U8eZF&-Wsz8)GH`U9gl1SR>5sUH^$
 60.2605 z002ZiJU!fwy3e2<iJ@qGL4a!r-!|4f-kz>Kg14jHfLIs5x*?iyw6kC;6m<5-mxB|8
 60.2606 zA-&_{<L2p5&1+KAn4Y}7h4VT<wr8+qHm`Vw>1NTK<UvIvEr_W<S_4jv0M9-N0hnWU
 60.2607 zb~Z;dPl@f<;bGZb-(Lle@FWHhTRlU=aA_&25ZC6PGUFkaiC=CgL|<HLiAfMgb;phg
 60.2608 zexu{y2<HQ`Hc`lZy|})vU+FYeh0UQ;B4^1<6*Lta9c@NKMy9h<5DAB$aBy-)I=Z@Y
 60.2609 zrwKY6&_s2QOtEls(hw37_P`2%K0dyFpS$U|goNHb1U`q*5A5}(9FFu1Ha0dnhS}ug
 60.2610 zq#T#gyRTUiwRmtKS-~xK_6;3PXS|_Z0UUbH2;Z~sQrR+JWcYjb9<s-?SFxSgD_~+`
 60.2611 zD$zvcm+a8ZynY}ndlVzb_y%ltZ$C<3xw72g^eph|f9Ky<sxj0MGp^u_NNPO#5Pphy
 60.2612 zg#+AR{jOKp0)W9qfEbb2($b>T_EZjtnlc=0*$ryy4WmhW5JXx4fqAp(8*se0a@2OR
 60.2613 zQJl|x-7P#qmMiflJ^d4MA|kpXR|#=dKR}yUSy^wxF%^}1CB7`rU2&a%Q7+$l_I}c0
 60.2614 zi%zckI{H_J;LJgq9z471WJf<gzh^p3PKA?Bb?=&+|Cmx3Opu%w)$X`T$%QjrqLV#f
 60.2615 z+=U6oJY?ay4t8-E$aUUni-9-7>j0#bdj3OoF_-aO<<HuL$4N@ejov#hyKlrI?FSbh
 60.2616 zY5|Ck73Jll?r}xRfTF0+K?=~IvFS%bZ`d1*1~dw_B0>`yK|~c)dcF}tc9C7fpFCk2
 60.2617 z)H2W!!vkPF4t@WJ!>OB0)hUvxX-I1=2!|H&3Y`TdCCk@E$)s?2c<Jp1{$9BZH>z9f
 60.2618 z5IYooE{O<DjqZw8$SsP9h<MxF+|29lzHemNEsaAj!+7bd*#&zclEU#p^MWOtLPjb4
 60.2619 zCGyO{Ed3v7CGQ5WBLoz}@RRc_5r4!(;Nmh&ON%|84KXN9CdyKMZ+4rci{L4L_(KGR
 60.2620 z=E3hp=Zw~$JmzLC=C@@w%8EnZ@%tt6hXc=oNa|DD%2X%2am6($xzj~lx|zv)HKhEu
 60.2621 zI=$MsZ?9dP{o($-wWJTJaiKxdDMkOOd-__R(~yic8H6!X<Tuh6apUj1(ht7BG#0NP
 60.2622 z*XIDQxTdPm-dz{P0WVqg*)~cm?ZL%E1~<vI7Lt_t+^C(gn5qo~i{Mvme7=Qzr4YdV
 60.2623 zdn=V5)m<%H^xua_#_NX=WvSRyM*ep{HVE&>BH%j+A_NH4#r=#7W5A(Y&%b+236Jx@
 60.2624 zk9Du_p`7%U%k%)<UHoN^=N=M`E$Or+IgP7eQ|lx=NRxK)vDXtfrf&8Ys9&s;XwTmt
 60.2625 zEe9?XUcwn3R?DW`2`3s(FO1c9%a*x!@s6MN*Kxl-seERq$eKJ>r4D!KVn5&txv`PM
 60.2626 zw^ll_fS&a-qp4j|u(>KVeP^{=7XAZX&yDA8R(GGuL}o<-8qk|~<?jRgwo${rhFAYC
 60.2627 zVNZ>>m;(H)WLuHZ=d@_DRENk!KK*;U*R_dDM=SZH62l&T`Q8fpLtZbU5F(5FWC+RI
 60.2628 z|85Ec8lM(brBH({Zl#6-9Bxg{K5<DHo_z9mjl($jLkgk&P?V-zh#=zlcN;BUZ0tz=
 60.2629 z6@vk>sa6#4J6o_>lwh;`|F>DH*#D;z;;0NU6FvtLXCm-T;s==2R|Ei`(=9{xF8CaL
 60.2630 zC~}lm@@nvXOYGtCiv@kYB_-##h6@D`e_g5?gzz9*T?9F$a5rRuxT6pI$PmJF#Vz80
 60.2631 z<*A499sO$&Sa3L8a6B5(lZ#tV%?aBm!v9l?NaCj(WB6>zWBA}9k>#g<9~r9dZu;NO
 60.2632 ztrJROea-v#gG82t|2{)h)P}Ji`JWO;-bN&E1+#<qB?CI-`S#*{NiP+B{`Y;ug^M_<
 60.2633 zxu`^=>t4RrFU8P?!n-Mm1pVKhaG4`|h{}HtNOKkGN|{lJg5MpJUy(UDqM7^h?<e)J
 60.2634 zA}eqACvBvAO2+Sr=|;4uXVZm52Tj;%4e~tv@;^ysBX6+jfQ>tof=$K-A?yp()K6`W
 60.2635 zBt^vf78inpm$^^=puNKovIg?v1@a>B8Kk*!ai{#pPXv7zb2q;d<L?4<uF9aPJsGe}
 60.2636 zz4$mNhnhRF8DhgXIRAcMN`%Y-x{PoaK?sp0pRA{icMSZ?=pZx<N#0;Z_`feUQ>Frg
 60.2637 z4x{4p<dYgtEwGtd2+@;J3J_yoEFvOkzyDvauZi47qrL-NR1HZXa!3VT!ZA5DMl@b~
 60.2638 z-~S#;L}LUNcL*e65Oo(`Fz0OVBex0KxwI1P{!@c@7>_TvqXEIt+>X3~@aTynx|Z1Y
 60.2639 z<P>u>3j2@<9xv+U&X)7DQ#?SnR!seWb}qHIw}<urR@cCKc8{a)->dPxpn~+%_}BX9
 60.2640 z=%JMubXYTC8%*M&*MWEpDB~5Z(Z1fX?7nBBWNx0h0^1nBYiP*z0LVj~FUSb<+56vZ
 60.2641 zHfQ*M-zKml)3<dqG2(`t-%v@sK49mP?uQHMm$0ySY41KZ%T{Bx%MdK}z<L(r0)4q8
 60.2642 z;8PN@J#i<er}-B_0m_1s9+C7$b|^%n53?FxPy~+mq3Wr+U)``YefMxt9Q=Ll`BQdZ
 60.2643 z9G=E})eMou`1mQWAG60Wt>wBX&A*?pctvaQ$afM*fgE^kj>YY5&Yy>e1AJc8;2lTV
 60.2644 zIXHyF!oueI`ui3A{rw9xUjJ25W+$W??ayUNyJfxUD+c}1L{f6ug<9-ZR#p`ojyK7|
 60.2645 zDFB{41b}zPq3?j4oV?p_oX~Qj%=o=wy^Hnq)RdTA+2hN9{S5O6+9cYf4NyAb3pbV)
 60.2646 z7e^xa;v+@R;zJn_K-B?st>N=hIwu1_71q{yL_|ieNVw7();T?T<n2wn2hXx6CVs$c
 60.2647 zy{Q&I?|df31P^X*?mOy1XR{6N0n*aarx@+1)1!c(lXaH&g_`+FaIE{#XyvuPa_AFB
 60.2648 zqH(@91DjTb9@yTS;D*RDU5s4PwXhB?hM1&up+_ISO!A<pax~aJ&dm6I%2Q5l)Y8&Q
 60.2649 z5_gq=qiO;E<##PGUK>a&R#H-md-duSM1~3o%xrKDIy<&CO;)mbosu$5fAeNGJTUI8
 60.2650 zJ|tDX!SUCY`U_}-O^`Z7jY2rV>-j3QC0J_s=n}%hlK**j*62*){Ld0XH~-08Koo$9
 60.2651 zPrbcMD8meL0DoUbMYVnX{++dW#ac#6N-A2CjtJ0%`FGwsH1*y)^YL9T<NvDc+HG1%
 60.2652 zwqO+SkS#C~B**w_*nMU=gd8InW`OyhqmKMmR#*32XWzXiga-qzrbb3ijewsKz}rTf
 60.2653 zO1;ldFtBmg1~W389f}NZd7S*RF9!5q_-^2z$-8uPZ@1ud_;tV%BF}!zHhetY2|C~W
 60.2654 z_4PeQI2;bBnjtQx+BOH9wDa=uHNYWFRD3o{l_$p+H}0c_ngoEvWaTO*=3%rqdT!3X
 60.2655 zj*UHr{p-I^R$7j|e};Vnmc>1J^2GZ5crb_;fHz#^$3oj63XWwR3viySc<;W@8ZZpO
 60.2656 zu-NU}YB_;{=VvGacwWQK#%2z%d;DOAghcQByot%g8JxBOdrwg_UJL7Ke}WOdI*^u{
 60.2657 zJ%8u&<;$}>t)~Oe-kTLbBaz!FRl>sy{}zZknVYRJm&QI2Yz8>=L#V}Ey=#WFmR4M3
 60.2658 zQ<L8qSXFw_4AA_()H~(XMqIXiZ-n_^|4eJoPUXLW9?uQ^Hs+YNzQDk#{JsUh?HWYV
 60.2659 z!lx`bm;WTbH~V9=MfWLOy-<q`!9Vf-1C)8oBnWjtB%Z;|$;KwUxwOP5#L3xj@g?iQ
 60.2660 zWq1xxyj=&#$=WMgiB?qugA~crV>Aq`Wtj&L<}7X(wMj`FFUP(D``VJBkUQ+3?<Pcj
 60.2661 z3`FMwyLQQ;W&u5+UhPkv(7Z+F=)zbr<#c?wJ+spct24$FP$-nCf|62=Nu$U5Gnl?#
 60.2662 zm~p-wt199$T~ny2rlz)-ChA>=Cb=`;ays7{FeA>-&wmO&%!`ziG(~<27N&aubGQz`
 60.2663 zvq<2dcl|l?u_v25Q2;x4Dy4~N;~?3xQ3SA4p;4`AeQhl%t%%2W8$CU}!V}>GTM;24
 60.2664 zE!e-Lc7~8j@Yd#XPptQpQyn`m?=Y;H;7(3TVkO1x%s_URq9jh>ZD#B0>Z(Gf+T(;y
 60.2665 zi=Hu5!0vl&LfG*+F4O|1G^Z{2?X;LU2^yLh82HMhRfLCy!JbR!M94ppku5{nvV<{#
 60.2666 zv<B?g@w?8)_C@|0;=%E?b~i*ENgrK^;}=NbE4~VID~5ooJP{NW{0LYnIe6RO<=S-=
 60.2667 z`_-526&Y^cym3)1^jwLV7z3N24?7r;SmE#WX(FBugEck$XsP`Pa5avT73TWrPbBvi
 60.2668 zU(n`(czb%Z<2_kpuSpINK2-5_uv6*2j~~ai{Tfz0hCE*VC_X9alh5gPy<d2zMP7Kg
 60.2669 z;!1&fHt*c*EIZ@1%kIF$TCNcj3v*W)!&Dh{_V|d!k1uSerl)n#+Mi()I<=w>4euZi
 60.2670 z-P~RiT)$1HJJ%{3Mf3a_)|JnmUS0`B8Jj@3mjTnfLdnnS{e38N%7{ysiv(8~mPEfb
 60.2671 zGN~5gkdVmewc;fOvg`jboU6!#ypafMeRjfkAoh5-J^$_7_O+=fH?nYT$4*`8N;vDG
 60.2672 zeRNcd4Y*9;xhgg4VY8iWq`k8<H|xp$zi^VCTPk=XY(e$uHGP>cMZ^rr$;mdUcU;RJ
 60.2673 zeOcbvU_bkw9aTj&v+%7myoCh!xk@eNv-j=OwT>D0Wn~SUQHL`Dqw(Z0bvyO8Ir`?t
 60.2674 zSn-{VAUu3`Kn}^zwmLfQs{sB83;&s})HCO7`wB{s!G6mK0(?|Ipu#(kcjm=XpFTy;
 60.2675 z^Oc($NE5w5EADT11$jY8+bRw(+%I~dF76*Icm~1ZTw4T(fMB4_|9DRsDDySoE5Qa8
 60.2676 zsys$(ud?p-Uv_H<tFQOAcXD#7$<57`V!W0d5)$&OCFs0$dvB#T;1!LS@3~KX_~4pi
 60.2677 zbyd|_T}_SFrxiEY8VhDwMZJ7k1*fU_%E`%fCiB@^9Q&WyA-~T~cZjjBQ0DOAyLP@L
 60.2678 zwTBl$bxlo8BnV6l=`{z`T}e@qc(&PRq}jABkaT*xzpsx3UX$g6fU1q$w(P<`2RaDW
 60.2679 z*)rokRb{<C?QCgb;fwcNiiIXh7in*8b+%{K5fv5nF*7q$cXBG31I~JT^jr|mIm8UU
 60.2680 z_Y8~l?wSkZg`_%&XwfRrE^wJ{sYtT5t1CBfuT4>MjJzX(>AfqT*ZNZvvuS)S{((6u
 60.2681 zC8llSlIK3Ov>C5mTaQ<J>YQh0YhMtdNqTtHSQ;5otNOJjukJEr80+bMf~_V*p1*kE
 60.2682 z$EjEG^(s@foS)ZH*OfpQ7cN?aSvf@uLEwmZi|Q%2u=^jNqecNUPQ*Y!XsyOBVhPh_
 60.2683 zQA8v~W8#yO?GJzdv{XcrfT@v%cWR&^QQewSgCLmQK+J$1G$bS>;CeP4Ed)t;&Nuti
 60.2684 zC32gV-FZI}4K~vL#F{r5wx@$V%KF{i-0;hOi@2{w9Nby(AK_tQ>YVNCQxb5QeRm7U
 60.2685 z9<b{?*zh-|k5bgjDNiH@6W*Kp`hRUlD+d~XPhCCcFvkL(WMG30z-D4%inpUnw*Cj0
 60.2686 z<637|*R*kq?--e6l|rr**z)b_cYCHaL4RS_hS}w>mPicZ0>gf>HX)x?^;A)GbTp;+
 60.2687 zS6FTu6B8pCxxU#EMqF!RbOksOTBNF~>RoLM4K3}$R<X0#pl$DpTZvJ_aJFW?N@kPy
 60.2688 z&JV`e9y@!#;UBR1%~fP}Zmt(zjUerd54B+5SoC(->{I$m#$BHe*uh`FnwcA;Iy*a)
 60.2689 zi_gWuVnt@Ob#zilNJt(caH7(K>2gd=Ol?H+-aRy3#%p3n-c>*wRV-#YJ0IX9AhNs_
 60.2690 z_uiUZ<oDW|JX2R!SDBicS_NUgcCyj4I75qF022wjuVMM>fv)ZZ`*sGb%YbKPu&_GQ
 60.2691 z$IGj({-oBV#n*TTz%v8O`eH7ygnsN`0QB^9!CQ26bm+y!$5-mzO0f9W5$1Vj_%Eq`
 60.2692 zN`_RRS9}0^X<ORJi-*WWQpN`@e!wJ0t*NHpUEkd(E~oUr2b;x@ru3x<J+h!dCTC_8
 60.2693 z9sK5IW(=La+ukkj3iPtJ&JAm8J8%E>%OiX>G9r5XffzUJlzJa{gF0=A9e}5>U?YDK
 60.2694 zRubH#l$5NZqL-JE^z?L39SK<Mf)49qhbJcL2X>zR`Qy)b*YM#@fH`b)iJwT)VI#n$
 60.2695 z6X8BrqKRTD%?-DycbcjyL$0^BwleLs9L>i9`Bv@jK3sF2sq=JEl7Rg{OiTt~X|w5b
 60.2696 zsm!tzZDC<y0sE(gwu9;MH$*%NK7IboE8)2jcL2~UXS$eafw7qEh4#o1S4nwlk3T}Z
 60.2697 zBd8Ud#sQrS-e}s#$I9+{_(3s|i{frXZgcZ2BNtbh3{zrlZ7taN#a!qmB5t83nmjjk
 60.2698 zMq#ft)LN>6r9@Lv(dUqB`XS$8>G^z<_aGLmgQbRt>8hwTU_wVoa8(uWVT1cx3H0d?
 60.2699 zE+GvK4O@*TTR?oI2-v1rSR>Rp?c?jKkffA%4dLbG^*GTy@3W{RadB}G2`d>M)<~lw
 60.2700 zkjjjH&YY!z+HvF)5Qygl0SBpY7%S?C5<g*Wf~B0ml_}R%RTT*&o1}vHiJhtT3A2df
 60.2701 z<K4S=zom%iI7^4(_h1L_uMN%^xB5?!A)$n{D$@8DEJDux`1)9Eo2GU`OznwP0?^gb
 60.2702 z!NKybyK46K_D^$i7@w`aJO;?Y$&o7bj#+y!`oX0E07JP9s;uPiCicdosU3X(l6{+j
 60.2703 zfkDUb>DsDA-ym~NsSxl#E%eeqUfmE~#X-cy#YvHe>%&a4&!yBIXM%%~tAIrzuy)(h
 60.2704 zIDq#$zL2PBI6}w3AeBG&bE*3VTKm|TcI+F$J9iQ>pes!Cnt=mk?vMlpfIY$u#zhnq
 60.2705 z6!^n<EA>i_dB0?2s0OLyJKu4gufYlinwbx$ozGTU%2ohG31C`h9Ghm=J0lls<DGzc
 60.2706 zy;|j@+w_D;nNfp<_u9Y>L*((nn6CYv_g^|g?W88wv5OPDX7VnKKT;>74;{8bX`W7(
 60.2707 z01J|K9^5<y7|fyc8>N_UjY=E5)^@PAUP;c%${MMxtegNOFD2j~bH(3IQq$-M{(A5R
 60.2708 z4R-7(UqAObUP-J*zJ7R)M}SnAy?=_&99syR)koeC6=W3=nf{ia5$HzAV{t!fbD}&I
 60.2709 zV{G49Ifb7M1JNlr*>1D!Cdh|XVEWZI$FP+}T1~83dCTFnCNkOJZrjb>`uoF8c6Nmd
 60.2710 zw-tpb05rWW!8>?y?J8pHlK*l6>JRqzijd%U?}Spp@4SS;dYl0y8=Re;B~QtY>a-{<
 60.2711 zDJjW8h-hf$>3Mi!hym@~-`^+RKlZ0U{7=^N(WnHS9*O~b8Uy&UDLyfALjQ`__Ow7Z
 60.2712 z@QiJLCQO44Kp1YD0%{nK(GDKTNJ(j(<PY%dESj?cDD(k90SQS-cE&n7T^mE0(hrV)
 60.2713 z%%ytX`<s|Q>{5!=j$JW4`6OEKwk;U~0Jm_^=6Gq~$slZq6u3T|yI$KOI}^{L>%dqI
 60.2714 zRKRUxv@k{VPaEnmb?!^HtfSTgI2+?<ZK+Y-_NSPeb%3zf^$rZc?#piB;o<rO1Oyha
 60.2715 ztDy?O(n?9UGwFnc-VNYlNlW-avIDD3<9e)Wnb}m+L{?yL3f=QR!;0LboJQ{|x`<?)
 60.2716 z8Dc)czD}>MUcEX%K|%57+c%4Z`1trypr!ogA3|mU99YA-^b~6?ztEKm7=jb5P&@}g
 60.2717 z)*XO`o_CLy_F#pe(M_#%)FnE6N%r6o<PiOBSk4UcT<QsMmqoh7eaYehzL|kk#Kgp7
 60.2718 z;NwJda&q+Ya&jsH{QW!lYzO?C{f=BRM)Fmg(!~R&wdVxc*+2grFEvbr2|BHSTE#*5
 60.2719 zoER5Z0q4xjPY1wTM8X>)B!ox?V9_HG-oTo=a)a8UnIi3T!_JABnI;dwi;_1oAnnPA
 60.2720 z18%igNthQG7jJz0_)!!+SduOpHct`W`a%R;=pf9Wodb)z3xCMCjFKt<AYj>F?N>Yl
 60.2721 zT=LJz$OtDHrvZu9jGs0;=}iufUXx5U93;5kW(mOb5&$OA5NrhCz77C<{P!4m#>pMc
 60.2722 z%--g?3Z|BB0HXZFcfJGA)e$1;e=YGT(uY=YL-J{iCB5Cvo)UWL&^Q3nUyixA7R&)C
 60.2723 zr@|0(d(z2ko45>-Q&9K@Q`@`#XaJ)701%Fps+TkMu7)(CUVYMSX-dq+`{X{o37lMp
 60.2724 zbx!L^FtPJ|8tf$}?65$HI8KylM_%V)aO_VJ=n?ZfEQuNA{Z;Kc-^^A}nr0v+_0$vm
 60.2725 z)SlSpYV;IvCwl^&-<OYN#@y6>hVxtsc1q#oHf~&Qw&|yA1DJmf7Y~o4v^e9W&KzK=
 60.2726 zt%3qpmhCka5MlGQ*j@Wm?{L?*il@FOMU0Rqh#;az@YP)_$UH^|#si%V#-WhQ#11z?
 60.2727 z1p%;TAb4?;JiHSQxEAIzZsZS`C^L?NRYG88M{IzbV+2=MyRQJO{sa5cB`vgISn|ot
 60.2728 zyt?OD-a_U9Fgw+ADf16D)fYtMY$eh3+87G&61ugM(^fpZJ%Jf}(jcHG13BZ<+!f-!
 60.2729 zd)J7C2k`TSml=U4>*KZ=0pq0w1^;|p`e_9-^D3&VW5I?s$b4(%fm0P_32DVi?)vO?
 60.2730 zT!Vv2IMB>cCkLt|xR~&y>PByGuYO%!9c+C*Jpx{!VQp<~|K-b<vjgd3Guq6tmD=p_
 60.2731 z*ASb&q!=<<+QAmD?UZK#8WaKV(Ft1w%;gnPmvZPh-;{kddJCP`rtkWHhxe-$n37k6
 60.2732 zxg&1i6pokVa{oOIm=JvQt>Xua%A1E1LE=C?efO4o9(cC6&NX_vC??#xJQ{RXJt!V-
 60.2733 zTJK_9bh7pwkKAka-6KnKlo!C9LHY&;<4J03BdQVyuo*jws`?5uGjq}M^71~cJ|^a(
 60.2734 zI+>#N-@TVV%|5!p3(Wl&5cxv!b}g`}$-!j4{CqjaB6kf(0a(0WV?Qzn2sU?qnV_e$
 60.2735 zv@vRBbv3=VuC6Q~D=Y876zkbfL(aidjNb(9a!4xTzsKDnl^&~*TZO32v{}Z=%gKG+
 60.2736 zdwlnKe!gv5@s)(c#8gIRX18ZgpWeSkRy@Ecg1`g9Uo8IR$~HE6`T%xWDH|68b?!6g
 60.2737 zO=bt~jgq+8*2ZS9)1p%O-n}Q5^73J6QkiBcDJh>zOG<EoqvsXz_^$T0Wmm?<rHmr6
 60.2738 zS9|=>cyhMVWu~s*=j_jM%cN6XRzbmcCF%I8zw}<<QNiCM>+NJTI_h>Oq$!db&u8_#
 60.2739 z+I#+yvN4MG+$tud;%Tsx)ic(Aa1D;?I9)hTgo?%-N=wI4{}^tTjDK<1>~KaE7K|B`
 60.2740 z8kXQaAhOyKyY%5R<I)i}v+6Z;^eoo&qs@5T*Y1NYM}C7XA$}5Tq6Q%#0N_*b=13+c
 60.2741 z9RNMmA7!$cd-q7%wzUL=xvVdIe}JcgSlO{9gvt}dtl!g8I_|qbd{bDMn8%-1_I$;}
 60.2742 z6dA8gdoKh`@Z7w4(+jvL`*PE47uePR_p6YS#(yw(g@bPtl<8f?`zl#&aNka6y3U!y
 60.2743 z-<VcfTH42${^Q1|>?d@@&~T>c<d-As#=Iu*^;>`ir6k0~B>~6(2;j|3sm!;xla-$2
 60.2744 z=2|B_fBqm7{Ff(EW`vCds8cH`mFHAZ|5&juC-N4+^9NUms&Fo$1B^?A6LMmP^OXfL
 60.2745 zM+gL}IWGwqL?j9L{`#Kf+J@3$j#m(<B7hzD(IuP9Jgs;sXe0ui^5$GDEj6bKHS=Y3
 60.2746 z7Y*v1^bNOPnjPHJw`moI3E!}eqqtQnfie!@Vjq|V>*Gpk@vD>Ebh)+XMEM`|c61~_
 60.2747 zeLKyQhVcd2B8KcOGCl=G#VbB{(;wN}v(*EjtHlsgfds4M>w?G@uV-Mes;93{>eev(
 60.2748 za<#6W3)u6Ig*I0L1Op4-?r=f%?;<Wqg<E1Gipa;GMZ<!NsJET}=!5XSy18kX)hC_H
 60.2749 zC?GJ#%ElI!t7z8nXem_Q+S)o&!Pxcn{ojCM{sM6KRhcyw7S=U9JUn_t!N!JJ*6^`r
 60.2750 zLbB^EY64js3k!yX-j$(v#*|JAdHq`npO<=uhSZAYY{!bURcfD;ZESApHoSWm2Rrov
 60.2751 z3z@inr%+1)xb@`T^^ts2{tg%R_@ajo9~OKX9Gpn(T}cvp^o=S~n)oK>?u}qI#2qPd
 60.2752 zFmVS$$W&ux1@H9+fa`34&u@xnxPDsOkL<AEF`RnQV}+}vr1TO%#<1jMik$%R@*05O
 60.2753 zUtNvrwnUROGo!m&{hu_I!^ndh5CZha!+mu`HFi7}WEY75l7;{`0>qkvjfrV(Uw;nt
 60.2754 zSfIHIF`KL~j|^mO3^=Xh@mOYnCrM|ehV|*}y<>{G8h8B;BdP;V4+Y@?_Rz>kENs0!
 60.2755 z{_xXDh5blgjdH4BE-5MLm;U~Ki7^v#zr(E#SaUGWZt3IW69JEtH}rB~O<8v0E&bQ>
 60.2756 z`MRdOz#rbu5Og+R0WkT|l{AT<d2uc-uBnlcYLj{WuCA_csdrq(zmFCYw*fC7`14z*
 60.2757 z&Oza;->(|5ztSR4=q$(<#iSTwhB!Dl4mjA^h5W@$O<74cKm>Uu$2goQ$LN&%g7vvn
 60.2758 zO!d^3f~Dn>g|zfXx0^S!ak&x=%gW0aw#@roKRm-GRDu?&qoX5bEfx5$@}Os4HhU|g
 60.2759 zs&hH`txetYx6jC!Yyy6El0OHyxBN>W2(Ng?7URW4_pbnd<N>%>BmtA6s;cd#16)j=
 60.2760 z1~5&LG=iX@pflQ_KUetxi*AP9%0{(4e;QY~%ry#1Wma?vz-fw5-)xKO0pMR`3f>JP
 60.2761 zX7N&YO;pGo1%LNt9YE9rc3lyRj(?o2<?@r0lRW^Y+=<mq5J^P)gWgUi>BToAHS|;}
 60.2762 z6M&+ZmHp1Lny}Uh1)E)xlaT2BJoZ-%yKli1uTZ+|){v{jT&=-M@;Nc=#Fqs3;^afE
 60.2763 zaFkypE&a1a<?FuweoH~8$>^bS(>6-j;0ZvHk5$&aDKq&0*;B72DPoFzL`a}lxKYE(
 60.2764 z)7#xGYi4V!n;ai+{dS&)jLe2PMvir3tP=#$?>sy_%+oWwM@K<D7L}Bo?C_L+)4{aH
 60.2765 zPTlW`BoQC%>b<=kb)6^6s^g!luFLUbB===x#;+5Sg)<qq_<A;$oe?uDJ#Mh-dHorf
 60.2766 zW8_aD{0EWSqcR|J`&<#M@lgv^A;46_k|ad-$C^%Tv5L;i>>PGJ4|*V4T7Eyq4$+G&
 60.2767 zD>r?6&_0>86bB`&KbGHotUdPAM7#HBqV`Uz?v3YCSNSJeYt7JaOL|txVbmsOPK%NU
 60.2768 z+utasG;c;akUg~JtVX)`R}g(fW7H&mnqy^o`71z|u2s)&68&ph213SYx9)j9Ud#nL
 60.2769 zqK3z*(D%1YidxK9OWNov&ZUU9^Rv`quIoUrTjPzm@*T?0*Yh)4)#u}3Ioi<rFUqj*
 60.2770 zz{5-}1fDv>kgwwj<XZs5cQG(`_vcR^Q=0ae<YfJu6BEH`7<&<sk&dOeggm|vT_kN9
 60.2771 zw{VJz8n(5bZULZZ|FOhLFiw6wNUD}D6HnM9Tw25KrRoN^^P-mMeQmZtwgr0tI>GKd
 60.2772 zm%8USrh+NycaV0tQLQ28H}Q#$<RwXPoK$APtMf72<df6lzzydr-2iKcUMq*4J>A~r
 60.2773 z&x7TMg^v%6nSQryWVfGp#qO~$zsfqKP$RxZii?RFQxp!|$gnR@SZ5=_T`f*bhx6P?
 60.2774 zaG8-YZ>@}|38_rA-&*YPvbh?Hg<1}5kur*zBkPMEA}w+6&2|Aku8fIMe^OiP`6MI5
 60.2775 z^gRd`CM<v0AMl|sS}x{J?;!tbpXOV_udGEZk!wKvLPYEyS&Z*4e#DES5!)!4gR=ne
 60.2776 zJb5+&jVQcofg{NS4DQY~NW!u}#K~1xS1<M8T-!g60B*V%{s2$q)6m$MfQf}=Q)<#8
 60.2777 zVw@aRBn&J9c;s?=sanSgmHhnVYvkmKlor&$qyBt+mol+8U|TvgK3-e<<1J^wxDP{4
 60.2778 z$dURs(@iWo_0vD&v_&8aVYD}dmfVc(DfsLSHd&pOgydk*t>FzrVsGJe#@J~gXa0ts
 60.2779 zsb%sW9}+1D9*FN<aXQ#>$k291-jbw@oi?A8UCSPw`KeGdym4e;a@nlNTMN&8gIhRW
 60.2780 zAs$0btx&7MccwToLMB_jK&$8<nd}~ufW$9${1j;_iM-eG!M4WoT*ogw3GcDeDcshy
 60.2781 zCMXiCdxv<elmUHBQIf5#XZUX?D@lX-ia4f&)H-9t1r6RLkrEN9WtEqk<{HQBz?neE
 60.2782 zxA=wlmD#aJ?(Q7!9v=QnA)i=O(<8R#Tl}J`s;VeSF>B=&6nIVA0$U!*$^FwGb5oW9
 60.2783 zg+d*>HlBA80ZyKvkSlOkp`^5QQ)$`7*}2rcIV&qm2#$Bt#5rwOdzqn+yiOU34wcIO
 60.2784 zvb?c#=|7kIM6%$$8M2UNFof%DV~A6pX|i~m_L>s2=Fc9MjOI}nICfq|Ma2dkR=Tuu
 60.2785 zap#<&PVdOudvkMhF9PV1{!oZoK42m&Dr$`YKr@c0ZpT+cw{voHD?Mrr0e<$u2YgdR
 60.2786 ztax~2#M5O5BX6nrXszD?^Z&k_jwppv5qY7O#^K`w+-d<f=KvpG!GIrZ0qwYb2tuX7
 60.2787 zE&VD+*q8YtPy)B5tRuezKpiI>Bn^+B>Mj!ycmb3fRGK*6o5&6Ay0ja-nnlXzS0@&Z
 60.2788 zj>Vca>|9(n-yL)f%l0W@Zs<t%CdM<|uZ{>0UHq+oUt{BbrrIy`q3VWhx*C605`}(^
 60.2789 z!%I>h%@HBIcAR!Pt^8>E=Cv9*9**0$D;|P~h`Ze^44fh#tT!3oo~d`d06P2+zqVK9
 60.2790 z)qETs)v5ylJ1&yyP96~0-16b}OkNbNgkWSu1pgSpGc7mZS4FkLnRiGC2?^=>iES{D
 60.2791 zy}i8+l0`Q+HxFMkU<*H5<ee5SMWB7XY!>KFCG~f^cG1kjHyq61zvwH7CB2a+zfDQ~
 60.2792 zKKQAG<MCZW{QUgF07Hmm_c1p&Uj>+8G+#9%#h!cfOLn&+Zmx-NHWhw&rw0BFk+^zb
 60.2793 zp>d~2I}&Uh9H+KB^DU~v)GCogVwq}kK;QwT<hqu?Fl%Yvwzjs;j*ixZqNk;#7-WCQ
 60.2794 z6aoBF;DdlL^{b8#AEc&*I2J@BkP@`$%VwrPeE%m@oRB<A%A$QMXRL>L$<Flr!DMVU
 60.2795 zXp(J#D2EXIy<`8b;atVE`wZ$=qG|>u&YOFr@J+GPRJ!2=s<uCSy;{b-0G@A>L{lmP
 60.2796 zD3+G~7{Y|@I(RRlm|MH45p;H(AL*3}oR{Ly&sFHVcZ!Pjl`w{G^&DURpI#3wd!SWN
 60.2797 zwM!rgg1~oS4O?`UsAtQpE3F3pKV-diR90QL2f6`8BqT(TR8VP<Mv#(HX({RM?k<%O
 60.2798 z0Z{=d0g-O$29=UfL`pzFx~04B+@9|{<J@~4!#`epAD+F}n(G&9%{AwrPZ;E@{6fhb
 60.2799 zg!uRcuX#@u_JJR4r>CZt<e&asTPx-%D5=a?+6nHOm331u0>hf$M|<HysO)Ox)RggH
 60.2800 zrQN8l+YaHSOZLgh$#(C@{!UG8(#3I_A?p$q0)u#JjQ(eYfmGkD`s;3ril(^z`SfJ4
 60.2801 zrl!ViPVNRTt!S#!$$V;nJnD7xYU~b_iNjlCV6sPwL9Ek>iJcYd<#Q+C2L}g7Ug`ir
 60.2802 zvcA2&g6f{>tny_)Mqb{2%fG*CIMCO(a{2FQzkfD}NFX!s551z){LemFz7{M)-Ycbw
 60.2803 z&K7D{kX#`rx52qnTVLwy>nkg-pkSs@vG)77ZX0Nfk=r_z5!}A}>jk&u-e$Nj{CJ|2
 60.2804 z{di5AA$s!jvkM{Uo?f4R+-JkDwXTaQl4{mCyp#m6l<8MrMDDFk2oMqw@GXH%t&vFk
 60.2805 z)EZ8%0D+wW5zl@By{lt-e6ly;J~E1ji@QmT8(fb5$fZVCOIrH;&Zj3>8sX%(cLyuZ
 60.2806 z&f}3~G=-gflNUx9)z0GeFgOXtRm!xtFI79wzUY9butTpWYpJMw!3-4f*%dySOLEw>
 60.2807 z(Ftvz?oAQ#F(<lm#q3pVY%2>pyID+ZESD5L@c^jy<AKKpv)c>3(~@NT26CF3SJ6JI
 60.2808 zf2XIL1$cP!dCDs@GJ;@jy4Rr>^toABI@LJhRB32vx*+=c=sQpOP1(j{s;ln|J}15*
 60.2809 z#K^#qh<pOXqe&I^a-Qhy%xjYpHz`sLmUsdlzkIyLC0kBH;%SK*OC}{1Rk)w8uO}!t
 60.2810 zIZ9s3S8Y;K*48XrQ?22J#wI2Nmq|$Q{f}0wGyym1lxfCk(9I3+oxFryZ`@!^Cnu+s
 60.2811 z=g)DT?eBXkIysf-g8^$OD2VuMUS<Xha2Ah@?W=K#=8LRrt+ig4N1r}@N?m0?w!|DO
 60.2812 zn|s&eZwpMOet}LE$BEuGEQtR4ORpbD9sI3Z`#oA|r&D71`RO~48V3lyE4ab^RVQL)
 60.2813 zf}W?xHH}eGN^)WS*URN&E>0*QzL<eS^>aj&lHpg%m`HKGcUQC=C%>Ez9onJcG!%~x
 60.2814 zx%zjcqDzA%_9t@v=FJv5`1?dQvy+{T4fLbTn}`T}EbtO8D|))Rojcpx<NKdm0UmPL
 60.2815 z&4I)<0A75&JU!QOadCeM(?(q(A=wnK@m>G(Ia9CJmD%@rza;q38z{TfduM6aW~j(+
 60.2816 z2t52fBO^K;hUmrZrK6c>CEP;@x{R>x2`(Ls7>w$0>)1x==IIT~8~0zXIPU$`V`Yd&
 60.2817 zOKj;p(PYa)57X(dUw^Mzch(upN`qQu%FCBc-bF_@f6jl30n}y=R?Ubzfm=jGMB3E!
 60.2818 zX6x6lIZFzy1@-m9Z6`;2k=#5yTJG-dA819qW0pzS62n0xdZR};B!OSPe}5^4Dna;>
 60.2819 zxsZ^M^-St$Q$WD7bU2w;9K_&gxs@sxsO<jq`%yxN2L}UJP5zvS*(b<jQ$}X>YD|<M
 60.2820 z=zUs>gTq6#XT|r2=Mv;YVDPe{qocpea$jatTzM5AZ#e~ixdrB)kXG1I#AQw%F!GoO
 60.2821 z*RyPSd+u9On?b-yg_5^-Eir<slfpu~Oz<d7w{J(mi~peo!>91LSP0EX@AKN4b5rvd
 60.2822 z^Vzk19T)dFr1qOqitr>Rn#+K{_jk;O3Kr12SFa4|NpWM(@JL}IN%)i4O-eMmYjhR8
 60.2823 z_Se%6_9g;Sn~h6MkyojyJr6(y4D5KsCM9)o^7FrSy7SKa8%JJhmq3X^2e@E)0lSfz
 60.2824 z)=9^kprX4({SM2U;bBGYN73pnEHBH^+Txsh`r_|c-BEC8X#VCe&`t^A;c~(7Tv~>P
 60.2825 zhT|WNn#T{DXHh75_UxJ7Rs0a!wg?KZkdTnI79Nwi?gaaQ<Bj`ClA)JGX!xwv9_sm3
 60.2826 zv|r3QoiK$kv4%Kb1Xv~!78V{4XPLr$5-8*_E*!^W@%>j^OpK)zAKJ8b0fNCCy`}h_
 60.2827 zm-XD2yFs{rm;z~$Hq7Vt;QJ#pTVH4)L?FpDub~{TZ1KR@1Qi!66{9oGf_!3P1_nBY
 60.2828 zKhYi{(h5fK6g0BwA3nH-aJII$yTqpY`T6l}iWh2@&^vv7MMuUrlt)&9@_F}sh4nxl
 60.2829 z;aK?M-W>lQz0K6K<Lr~MI*&rpgPG{35WG@#wY4wa-ZmI#5D<v7v$4^U6h^Q2`$$U%
 60.2830 zr+AOT0Ny|^De9%3Jj_%<@2IB%#>S@0ME+!+VbZF0OzVTt_^r{f3KJC|<TBT--O#!O
 60.2831 zyr3L#cH)tLfsi)d+{|oIHCL^*Ih3%OQfGe>mSPB6!xaex^lh1)oh`BdUEO=QzcKw1
 60.2832 zzR9=0&STB_{fLPbjCe9kg7MMrY7d&qm9Na?i1s@Kr!{!>SqQa<zrSd6ON&(AUz+H|
 60.2833 z#7^Jsh1W)kikHHHFxc7IZx!lPy+v<9*xK3MIy^iiXnaJDbFLqcoFg8sq)QJ>Hnq^3
 60.2834 z-V;NcOh6I-<_*aR=({oWNYK>WoZ$sPA-Xl{lx${d%BiQPcfr)c!k~|AgWqn%bZ=#t
 60.2835 zr%b=Wdv>hBN1z_Sd~R~GcOC+(FxHRKCmDWy0@c;43&jQeK2t4W_c1UqgiTCLVhzje
 60.2836 zM){NAon7PkY&0~A^&2`d#BY*VJwIw~ZRPty3$rPYfi_AlM7t>zG<LVOWpRU>E-!L%
 60.2837 znQFPXg_iYZymc#qO}CoU9WY+#8g}E^sShE{{P4zfyNMfn@v<)eApb1@IDUum`dw07
 60.2838 zX{UqD+4~^CIjYLaE~CSY_V=6vK&L1k#eO2b?@1Kis#c;YuX>~y9uZ-Cg@R&uX{ICk
 60.2839 zWi*3=ECh+e@#waqn}-LvO0Jq0fLrjI>{m=Q#b7=!k7Z=pXOKGk@egip?yD3O6d~yS
 60.2840 z=UTLS7+47bANwJf`R^4YRSv01Po6xHYVaGYbwjJp*iL|;#zdsL>3Id3Ft1)PBo6HR
 60.2841 zW{WpTU|9mH!4Oze8Vut1^?OuQNu6j_+2N?OSk}k#pxz0n%IqN+<lI+BVt<jkv*}c_
 60.2842 zDLfu$b3^N8RSrpsi;G*qw{KCF^%ymWm|db3u9ms-@XL`L02KxjLCMF`Gccfj4nY%R
 60.2843 zR>tb86rXtXq=@uDh_y|qWh*8xt@?prZPjY<b~{3MbI~m@g{7tZZPQ2d(MqDsLjzT!
 60.2844 zo?c!%nh^ABfHu@<X^hkT4U_PvPcaF4?=eKDRUXTs8(Y`7jDuLp-2vcsfm3k*<-Xi;
 60.2845 znv$}Wm+x*$NlD3sA+XP0AqN6}-8BpB&zf@A!=6J~<T4u(&H~_e5uLukOtr=LcZ<WB
 60.2846 za&bjyc4WN}c-w(rzdT=+m2G`m?928L@?1AeLR-`*Ch~SP8GtGKJvMe>|L7>-O>*+s
 60.2847 z`(qWrZcbMxr$rH?FF{41!|hQV9cfC~p$P|*l0+-$+@b}_0~Zf(7}o8^j|wGVXfUUw
 60.2848 z!BYV}w;}RuZEThs@7=p6ihMNfcteVC^6|x@C6m%Y7<9~U<%&-i^}%YTjHDH*4OjX4
 60.2849 zK_zz+0+BoyPYdA;I6bCzadCO%==iasRDq4m=J<AI-y%zMt{Mx%)Y;Xw11^X{?k!u#
 60.2850 z%1A|ih``5Z&#=zijC=oOiN1LwkNiO!MMZ^$87(g{l7!``tE&rL85v6MY8$~uc+9&U
 60.2851 z9mZ;R-gkG)ONxm##mQpuFflPb`)2;w%-npbJP!1C$R(OYFMyEH(JF_4T@YlqbTl<_
 60.2852 zz^u>0s{f9KjlXcrzqdL)edBppSPjg(+nU|qY-Z(`eF;1kw5J>G*P<AdQr;Qc+Om;_
 60.2853 zNo~V;S2@@pEzz^HD;T6H*C&^5fHl*^G9=4mCAUXitHXnEva)L3BJ?oP%{!of_s6*A
 60.2854 zmoHx;a@4G!S-7*Yv7HMz*%|7~O7uhPjuU`URlI%f?%lh|^y9N#aW{lK{_3s;?Zc8q
 60.2855 z)sm*!bHd5yw1NV8$zK2#Z*`=kr1DEl+LyNdDaHJKU&qGA%H$9|`<%1KM@2zlg{b))
 60.2856 zC?xS0N_u&D6*k@L=;)yQz?t-|XmfYh-ZlQ`;m)#+CwgX-Q}1EQO#vgbbQ$m|-R2}F
 60.2857 zhSdGhBVyG9ksCK8XEWntVp_2CSYuB&yKZy!_V&U|kWeD^z6UBM5w~@#4Qsu3tgB#6
 60.2858 zk|iW14SkL7eKpO&%4#AdEnOkxwiIIm?tB;|bF-?dYVp>=alq8{^qGQ^QWGmF?wSAT
 60.2859 z@j>AgRt>54mKMh-YC&W5(W_Rl3~0OjPY&HUPWBrAn+qVo$@z*_$d##}ynNeQMdhc6
 60.2860 z-IMG_lZ~~eGiw|-G+(UA@2K+iu79uu-IX8pm6Z+?_QiiGMl$8dWA9Wr&vtHqOA@%x
 60.2861 zBDqZIk_^A*tBlBTQiti_;oZNBi&|O!-LgKhIpJE~-rl&3jM>h}^QfqydB;1OVV4=r
 60.2862 zhXxJEeMM6fV`4I7uit+Cz_QHzn{|G^gSz?^g`wRg7Y-^DDuk4b>?gYUl(Eh2=;ER}
 60.2863 z>&MH>8<Pqecq5+6gmU)L!|O!aqIM(Y#NZ^eJkhE<pFe-zfIl9ggx69oBEWnO4IXRy
 60.2864 za;t8orKQ`A2Xj<tVF-_n-Q82upBWGBK!+uaoERG$|AIy7L;+B;2N64Z;rw~QJo4(W
 60.2865 z$VfAX;nK`+AEd)|`$w}BlIAvch79T~fMiehn$FygPmk902G+Ee>H-kYgUwrLQ^3K?
 60.2866 z4Dyyo6KAJGB_-$GW2Sk{yW{_rfTR)iy<?B&A0yyo24n@((r3UN6@s={nx2~*Gy&&G
 60.2867 z<FWF~sL-aam@0jJ-SK<5Ri7}*I*(V~n&8o^topLN&`#$<MkW3y-gW5l7iJ)Y)id-T
 60.2868 z3iRqUZoHUv<0ryVXt70DF{qJ`8K@V>U>E8pLeRp@SINk-cx*4BDL>;G2c>AwXhHwu
 60.2869 z{Vy<yci#!Rw58S8>lPQCq8l4lKQp$`ZbH0nito;jn$E&$1?=B_s8p7_fB$}R*qk8s
 60.2870 z%VV%fMsjf+ZoeyR;&ki|8uWK!0qF&dzXV-W&?b1ZZm&$(s=`G2tIQ%QUn1>2Qv-|Z
 60.2871 zMrWUtw4MI-+G?+@ES7CP0f8aIrT$zypoSxf#|Ep$1RNY3v&DE9XSNRd;q@p)y*68z
 60.2872 z=;^;O@$jflw6)3H@jKjJL17Qgs{`$j*YW}EZG&R6&<2Jf#OuFA%xT9vBzmLYzkW5$
 60.2873 zpTE%A-K`dkpPiYRYd<woVZ(SX5L66WACEOWJe<!Ts|ZvUnjmcp&mkn~Oy&F=L{c7=
 60.2874 z2um!>H6C+$f{hf#?B>x?9WdW7P)Uj^*alpAw9|q6##AefuAW{O7``=TJk5m<uyjDK
 60.2875 z5OB$*DJugU_HnSVEIm2odLczmxh{6k3LbC}rduVr2`D^lAlyAZA>m<#Bo38#@_18#
 60.2876 z!HsKSDJlAe`V9;W3?!10lCeb0L^!-(#DFwIhz2WchNk-a)uzkKdC3B~?M5?Htdc9o
 60.2877 zYFyei?<yHtTILMos%Ce$MN(x?jxoM|kTdc{Px8B&q@53hWdrcl=@K2MqM{<@<y)!#
 60.2878 zhs+zlZV}<^gmlezN=Qh2@b&e@hczG%gEy?vaQz#IM*^9MtCI$rnmLCPmuYCmmNsX*
 60.2879 z2I=VNj5>cT0t;&1*8KSCF-M%u@yqiUF5D#}CH?&`5H)~+@M2|SuibIHelK5vn2gMv
 60.2880 z5<ZRIzt~?cZerjwJww3od|jGo3V6J;G;#kWwNnB6o~<OsU3c5h@Evq<UCg)j>wi2Z
 60.2881 zdz~okRhsSn%Tq<=O$YE`0a~Vv<>pPP*lRhWCTLZhYt+;$#^CIRA^zGLy3!;=-{t4!
 60.2882 zS%Lx#ULCC>Un=DS*UA9S1rHGv6vPH(;DDds)~azfGxxK*PLvq9fw*JdxnO9{Gb&+8
 60.2883 zuU#L{=e0R=yt1+~Vva}J972%Kv-sf+D9x=G;o+*~qi)~EQT2X_`p&D5Ah$BmWx*33
 60.2884 z8OirRR+jsLoZK{Lf_zOyMa2(@(*?jkK>((wL&1)`rW4v-SLS<CqhOK)CP6B9e@IVP
 60.2885 zU}0fd0K20C$oPU;HLE}IkFJuEQi<F0U_ZL>(Cac&;Bd_$(hD{>okL1WoMJOGGaY}t
 60.2886 zzbB3M%;n_f_AX@9Hi>$&zWYix^Uv0SD{{wuC4OwOIg}=b;}5!9i2~a9CW1?$>5~fO
 60.2887 zz$ZfxL=tRds*#bA`SlGAU9PiR7YPXX(9#S^6g=iPlkYfvAV}@82nq@+2W0U4+!A)#
 60.2888 z=6TvknvUIQWudxZ61UlldGMoV;Kk!d1SAnd6O$X1!k&&+fYSOP(Ny%hRla?o74`jv
 60.2889 zf$aM>>YJNqr8G1&gyaB;X7-qJn~CrIx<X2tV{belnX|pKGmDzg%=>S-14yFUO@QqN
 60.2890 zmx2CYB1FW*k8ZsCnAWcM=usL;+4lCf^@&biPR@H+=>rzv6gw)CAG?8=S_GkNgNLA*
 60.2891 zEroK&Icu6sq_{0@ZG$-Mej8K4i@U3%c5^+c#fKs)-a^dbM#uZpQFgIL5oim~-1)zM
 60.2892 z$D2n+v=>%ZbOoJfzJ3V|L?Wd=6VxbzmO|SxQqmfCx)jcI-EP{($HTL^LQcNt0B>{(
 60.2893 zqMc`;?Y%}18?pexy`v+VF&T#Q05P<+E#Pu`{qCJDFX+Vym^SQZpI;><C54l-X}%hV
 60.2894 zsmDcd2nYr!-qd++Ou2(0tnV`ARzHe<a8qrEXe;DhSKBY(SkdM9_^YZrZs^Sk?}JS<
 60.2895 zIU5@rqbmC`&&!O8-9xd@qCj$4Ka)u}f|oBz_1o2o`tn8MBqQVITW*>!Fn)e8Fgpqg
 60.2896 z3etU93UZk$xi3U~cB|Jtg$D`6j(_~aBq{ndHm%YY9Z;m8mV#(N0^}AHWB|Ck+;v@0
 60.2897 zE^gTbElom0V>bfYI}UAJtf5%jZ*kUXhbCl{seA>85DhZ%(ZHESBeTcf-;YiL9NpZm
 60.2898 z{7aAi79%kT%;s{qyQ<^5HK(wZB;cS8to?lwo~;H9N~;2w%+BYYp5ly;A78~rN1GU0
 60.2899 zTeDb0z~<)X+nh)0S*dWYiKJrP!T-abCtWDiM?@@24a;+OX^BP1ci-`MlKsD13dQ;S
 60.2900 z9|%I5Un?aGRS<om3g+fFpIDMl6>Ts)++K{_6zAdLi9TI#Cae)VUYE2t*(0n!;37&)
 60.2901 z0WcD&&)dvmBjfblU+)HWK8hy3SnaP*-l`RTT2N4M4&*os-5kiPLIrvG7F&KDN-C;+
 60.2902 zkJS;rq=T(_i(DT{*-RDqqOsAju?DoKz{TC&-KU@|kC0Dj$-+Kx6+ghdT0Xx|5+>C=
 60.2903 znhC3?Votc$dG>|6lM`2d<*e+Jg|Z$|AHbW3jAlOW?)-QNJw5$)I^e?C@87bjDk>3x
 60.2904 zGlmuJtJ;yK12r`@wuFRHxCq){BWEE2))HNOKAyE~4;$FYyMBk|>2-BJxe{sOrlzL(
 60.2905 zHbX@egp|Aw(hn^pU+OT+U?RziL(JwKrrhY<-GBi@vzsnf*vTb(ZOzp%H^|D#$t}BX
 60.2906 z6|ZRudu;}#ci+!!nV4w$SX%l9J?Jh*%g3;62{2#IV-<-2blhK>2k2KNxqMjx{R^t=
 60.2907 z*|Q6TwP1{xQMsQtaTubTO-xLj_aaoby!A7W#rHeUrRar1n-A0&q91|KKbETL{`&QS
 60.2908 zWKQqw6?4%18sFpVYHF;y^~uS|N>P{}`SnY4vs2?OxVL(pDtj*E{c0~Z(wD8I1UBsb
 60.2909 zRt&T12x=PgI$w~41?6#M@y+P+xAB9%Cywrj$@MXZg<1xftu;A0S?#*`=0r*CWX6BG
 60.2910 zEizOgA@z;;^>Va=r>abP?+kZB1SN3P0vcEzf8XV9R-GIlY#DV*P@|1?&Zfd|i-x^?
 60.2911 z$&YT_hUMm3#d4QkzjJ3l!THM#0fD&JZ{DaZpFHJ<CydnnX!yjsG_&#OY`afMPANs$
 60.2912 z>TOJnsYG_)EQr+z5UVo!`uZv3UtizwYi@4-MkPcGfVd5G&Y;YWsn_URGXOl3jPa?r
 60.2913 zw?ucbq~5HHj2u}&vqAu{>Cw`)OkM5mp%kDS(ao>#=o)(c`t>2Kqhb??zc5(n>DU)8
 60.2914 z)Rn{JZ^N$wXE`2A5EPYo5BZMidCBk`k{nxl@friWkOkQj@toxPdf~`*0id2zJaP^x
 60.2915 zwCv6)dh`Z7Ta+xX;W8z0H^_4R&*$OR)>Z-Vj%zV-aRyx-9S7O!`5Kh^TwQP3UF7BE
 60.2916 zdC?vn+(>sk*NrIIOcu0kThPwIeCm<ay!WdPQ_88Q5YUQyZb<wcCu8hjiQe@PBklwh
 60.2917 z505<+3yXPfKsDlj#UL~rn51N6u&EHV<r;cb>;n)`KpeXcS()3iM$eBQ$^=Tu;QK4#
 60.2918 zy-5*x9==UuOP_$e@Vh{Wl+*QK;xZN%7LL%=_DlHq+h=<d0R$C;g?mnT=P+aA0jDyz
 60.2919 z_I#&W!t|Y-oZ5hi17y-08XZ-9eTA3%b5-qPCcp;}EG_7-l_>8$RjoP$3ME9hwy`iV
 60.2920 zYcn!4xiG|mG!dqlT{PWh5|qZ5x$ntT<Rm1UhMO}T%p(`aqiF8VQBzYF;4(XWbxVwm
 60.2921 zRi6&g(&;{2DeG}Yd$9ck=dS;0)>-{XfRAs0sH|L)a(ZeC|M>V=Z4zzbMb1<la0_jE
 60.2922 zkrWr_!Fv1l+FSAK)tg&AV)-wgScc|dil3dHgcH&V?{5QyUcw_|Qx1NkrmmjbQV@~?
 60.2923 zoUuC_XF!HtTGcN#eb^1cJQXcuRTCE%*JdjO#EQ=A^zyC(h}fl%nry)UC^$LabuJ=R
 60.2924 z4io(6^IEAgU!6mMjoA44`N^=*li#%b{QL)A1|N-EarZ#%Bmm%P>gYU1d$^AW+qAu;
 60.2925 z$>*Zen>fKjH%AIF(DNrRwAyWY-y)hF3TA>q<tQanlp0K7>+rDG`?9hvaV4c53<$Sv
 60.2926 z1vxpM55P(wB=~T1Qa*VDQ!^tG*TnR19Qy+b*C4OnyfMa6Q`#43z1nbb?HNH3*|!Hs
 60.2927 z9MXcdkB`)3X<wD<rY90r>Fn&}jfqSV@o7942=5%1Ea)<~5sXK^;=Q}F_*hLXWAgLj
 60.2928 z;$rS=mxnsnODZdiR6;^A#C3J4Z9s?9;$us??<}diI5@1?U%GVZWS}8#YHF(bhD^lz
 60.2929 zqhkGRc7|UgBZETG=p1BcWM>;pl$y!S^oX5NI|1qbfUnL6n|a2-$T*=oXT}M()MN3d
 60.2930 z^evW*tSriRB0iM^;Bl#|Y==qk5Szh*j)l=G2mK~6ZD@A7hImD_imq-qH!p7iX5fbp
 60.2931 z^aO-)$H%_vU&TE=@7#xA0n*7pKFx0pTzG&cS;T>Xez7&*Beu7*!%lI>(QpqvjI!@`
 60.2932 zlDkPV;83l}mL->&crY{nEot5t{5{%(R<y_={xO(>Fz*Kw@Sm<B)e0%X!&|7|T)s<&
 60.2933 zHr*6{!ph3J2r;t>9xfPEf-HnsT~J5}Wmv0mUhR8{G-Xb+&X_L{oY@hSe0ekLlg&;R
 60.2934 zJt=+}4Gl+oYx!TsD4mn%W@iV8M#^2xy*xd0Du-%ZEF!6u^=e&van7qxq=;XCp8~GZ
 60.2935 zzcYq8FBF#{Iu|V)N;KNP+Sk{oibhkeU3%NE4Nu`iKy+M~l%$V#qx@0BWfpZn7_#c>
 60.2936 zSAu2InFB*oA;Pf{T3Xr<==nO@6ZZVQd-t>e0QXLgk9j3RQMz1W*+&n8M{v$zS{oVB
 60.2937 z;UT|&|33HW%$Zk1O^x&T<fM+t0PRypZk88RP{2kO*A+`Z!F}@|?RLvV(T;uV?za6?
 60.2938 z@3r+VR{Ej-1@JI7XKMv(rvpcaM@Kd|$1h*LoEoXmrFsEGi`IWzJAdw64CcT=V@%o_
 60.2939 zV1koc6*#}LO7WeWAJkZ+RU>+nHbsAlTb9UUI%0oPMf@=ObFM4yuhR*<J@@7Q3uUJM
 60.2940 zYP4O3vKQjFJ8Y2&m>v#VBrP~LcHlkQmiJ|+nW(5JCH)g!j{A=u5sLub5MRFBd<n#Q
 60.2941 zt@~<XiHfFHiE%J%tgJeO=_U_1_cnT~6|FQ}?{~CofeM~_=ey|L^aOsp#L&$;?@~A9
 60.2942 zfuf>@*Ring{*O;xUHNqYQWKyv`TyPSLeuy~0#1+LHToUB9ePV;Iolb_Qj8Y%>H~A)
 60.2943 zT3S&to6l(50IC&jK(s<Y#qWvkaR2R$Wz`LqxW~oAlaFcbJw*x(9@Fl#{^wp2Nbfi%
 60.2944 z3(|pR?8u0So1N4yyp#mwxAh}FR#g?h6ZNZ24GZfK&s7_FKRw9dlAN4ectI`H4IDt_
 60.2945 z7(mJ@dOi9*klBvx;UxrhgzMvIrh98!o3*D7yIyVo21pG>dwcsYhcBh!Ph^sc*#}n}
 60.2946 zo8>%!?$G&}8AsswJ{KT;`;qZ`BluMO5f+Aq?}-!hI70Ymgw#_W>s8*mb*ls$|LPAX
 60.2947 z_`mc!&A`|86BVNw?6EwX$T~=b*qllbKo=+@8Lo->*N0S3&&*^Pr9xQG&Cm1v{P{E9
 60.2948 z$jIm&T8H>17uW0a{l_}z5wh@G7Xm@&XKgPH<Qsydr3KUNx4F5w9c!#1*<)s6+jl-$
 60.2949 zvHktMXS@=l!?u-b31TnNY?S72Ndl3vPwShS0?w~DIW7V!>_#&xbq^SHzOpvUoC6gl
 60.2950 zb>aN^R+y{D_0|@Df0Z=%4G-5Cn46m?pHH+-r#rgM!eWdO2re<Qvo+EPr6nLc0l+kS
 60.2951 zCPsWVcJ|<t!yVNVB^D+o<&*EQ?kiQQZgX(F#8V4h+VT_@T6b^DNvkL1C(@>#z`XNx
 60.2952 ziCXI!5;HKCyq@-R%Eg=*=iC@mwCzxv$An*8TtWf`TG`hNP2t*c%%@4&2f`gqNJ<*D
 60.2953 zDsD1veX&s7bSkt4Bw7eTKwiY!Q74i136!&4%oS`x8ljn~nVFlKjlN!4?wEf;>OE^|
 60.2954 zX(<Jj>H8)wuKiKvV+{>{%Q<`Sxn?5X+h0*KXFu>2#X@_$BxjC?%A`+z3C4Sbru~fm
 60.2955 z%#`zsS)H4kBS9QJJce*iqPu4MQ6m%@8j3ze>3FSMexAxJcL@(Sd;)^mp<)BV<&g>-
 60.2956 z4-*rUi^+<`uRZIFrUz4oBg4Xa12$*ECbJZhbU_YN?5#~S6(@(UxZPx67{rmj>$Vgl
 60.2957 z9eRm|B}FX29xWZ0|NJ>lnM2bFf63!w{n?SsuQpV8dh-uOhSbEx#TQFV+P^R;B+gtT
 60.2958 zCvP|7PAG0T5a8s@$tx)6$I5HQL9fD++^2F*-h~*Esc4v*GS&chcZ{A~qZ=S#Ca!?}
 60.2959 zdXt=Nhn~U7QBhHqWM-Ph0wq6(mmhU#QW!6{iY7-|+S`-REz&p+y(Qn7uf*8^O!sZ(
 60.2960 zQ>QmPDW@SuhaQh&gOxRsmF=`!#f?LL<f-SgydSYyO$|7`c#YFgd>)Xz3i~uJurY1E
 60.2961 zl&g}0l5%OA<BxMqo=bjlu>pE;|Est6^-L}R>y89VtntQFs~yIB(17%ejEr1}rj}M1
 60.2962 z^6A^RLf1c^o(OGy-d!1vzM$rlX#eXYon3PXfmK36f_KyDVg4$tYhkb%3803{k3b>X
 60.2963 zkTQ7F5DYhge&b|i?Yhp!)_qRAvZ#^Z^VhFAoz2aX=Mc0OJEfp=h8NJ-ENFj0kmPe%
 60.2964 zf#Kod4~7HK@b28k8M#VH*%=rT`5HJ7XzNAk!UI6dhBS4G0mkH*`p7M*{TwZPL!Lk}
 60.2965 zjEM6cuLnNR8IwI(fBiwvNnr>JZP40>o^=+cbe}-5@=3&QZ*QAcR#y6|s;ZWxr5UMP
 60.2966 zS>=v{!T<K|-Mb)ki(%lFDaHWd6k6m@tK9O@1+!5QtG02s4N`L1`&UM*dQb!O668cI
 60.2967 z>*JybJRBS*;xH*SAD<)av*?kJMv@Z6`VHDx?>`Q&<XvIa=+9|<kf!_*NL9+i!{Zda
 60.2968 zwV$cNtgzTHH#J577ov0$e59ISB8pKJ)z$H<v$L&u`1ouZm8=b>$a}pycfPh?<Ky~o
 60.2969 zUcGXBe9%DGUP$xi4(J6AU(wXbl@(ogVD$TM-@YX%x^7`^t|57R2&QS2RV*nf3D09~
 60.2970 zoJJIsNqtBJpl2}0JsA@N)K%E>AN4|%{08rAgTn<b?hw2%wS|R+k-0g8+;t+(1=m_%
 60.2971 zbo7Dr9x4-t+I)2bLK?vbP5(0}=-hx1NXvKNuwTN|J9fOewE?=NXL7@nS4^zQo{o;r
 60.2972 zPC`Or<SG?aI4rVatWPhluyVssY|&Gwn<N*%0i<0^?Xf_&X?j7o40=9CGp1Tvq;A+9
 60.2973 zb$|O7Oh!ibL8DMR48|!FM#KwNqUsZIWl5a!%1Vt$n($VY-_=gjiv?O`za=FkR$}xK
 60.2974 z0+G1L61(I54VJ1CR5rQ0xn02xmRN#_QV3kq^@SA>Q1n+2)edftR8%CAc&$|G_V+zG
 60.2975 z5H_7kdG+7Ty}geRwa{UQ(MonLk-~d=C|g$A4!@zKq_l>|F;8QyuNUPtJu50Ix&p?J
 60.2976 zD*$+0rW6&;6?u7i-swcO#5ZJOJiWYP0p{Y1^y&r=V5T1-hGu5!nXt-k5#d}-7II@r
 60.2977 z7V&W(U#`r|sN_;nR0MI~TcqF6Nh9j(c@aTnw94c2R(ecpcKvumye-(6X(<I*AMrmu
 60.2978 zM4~Zx!yez9JPCfTg-Q!xQrUA;j(6Swpf0$6RwpkFT*~ve<<}VjW`Bbgl0mycdBTFt
 60.2979 zWFyOOBN&5+Nk-d<6^s>q2i@-cv#)O$0QC)E7}>(|a@Uh3<?JtCBz8AvyG-gE8dyQA
 60.2980 zusXW9Tpp+>Jp2hO;RSmB+u(cfM$n`!0-u~bPWwFC)nc}~x*7-V9)$Mi-c-KpG}W>N
 60.2981 z#O@;k@&lxq?#%40x)2D=h1-q$64RdFzI}@w)!1I>m9(gDto4wSe3|sw5KWmjhVLV8
 60.2982 ze@Rm&z|a5I)7x9)-1+mF0y1AQ1HrGf2nh;q^rVQ`Bt=Iz=jP>oNK8z8fhMpCTm8(S
 60.2983 z)>G$L<{<;2Z)9ipZQk*Y3L#+>+NE{o0yg#_ks!c%CzX)vLOMJSC7l(l+9`OI1Bi7h
 60.2984 zc<;vtM@Qs#W3_yZs@aMlfB9yF&ZCt{f?<w_?{ahhi~&v?9j!Bkkqic``lg(64Pav!
 60.2985 zNSoGnq`ZTUnK{hF$SAGW9^K}Qq80H*Gs<7mzkWWLCV64}N1CL;%d1=;WUdT>2J;h2
 60.2986 zF0ve}b<0dmHE;rqcmc*!HpXne;$SV{jFpRz?+Utyc(l8!vky*huEJqLzxnQ~R%7O;
 60.2987 z&z?;O9IaNJdm=7=-ZfQ@BaU?mfTM7}G_5ihOl|YwT#|!O$E>q#62Bb_0M)7SK%V+y
 60.2988 zMes2R2xaADoh7g|yr6weK@m`**Hid|gM)36^{p)*L5Fc+b-vFOJmxd#{@4u>k+B?r
 60.2989 z4gYX5c3FN9JhXQlKUIS9yTxPP{q^zkvc0jf3ZLbV_r~xL1Rzwsc2^Q85D0ue7GhV)
 60.2990 zT``C8`Un_HLG&svCMKpYTF<{5R@!$U2VE*L?K8BFd53}DPAr;(V0#(<#O~q3EO!ez
 60.2991 zO$GJ6xg}SRhliK&>;fUj%kc0%wEGI`vOWyp#rIo8`1<<pBcuou;LRQj8=HLh*RO_a
 60.2992 z!)5JSaeB4NWK&_`;XE~7TUlJu9Wh4-2kP7j@~xwHl!BrzVF!*OSy;b9mpGdlI^^zq
 60.2993 zHs!`8j%$+Qwq{n<_+h49+<zvK_RiM+#!|RMnjvy$NNw~8hN;kJd*RUt%;b|@$<?F4
 60.2994 z2RA?TGl=>!p@~P&+o!qEt<OAvEG=^O$?6F*m0Z%2l9EGxef_70Y8JLkxWSmlCGimf
 60.2995 zHy$b}4fPET#p!5j)`t)OSR}>0b+$8xbM8x>Oqz1Uh4s|hL)X8*YvepVtG(F6ub^Y`
 60.2996 zyUM}f9e``wS_hz<E}Hn`v3dni8SICJ$4HgKZ8m1+G%Xz+LelV7zW(jOLLIymQ9tjV
 60.2997 z!NJNUkW0TI#@(`2a-9?8cLk6IYnz4BSi5Kj1#6$<eJ92pe>E2M)6VoT5_E5)Kj#r2
 60.2998 zgGm3QmwoWd|J83d9YB~#9o^mk#=d=Pj^23gpKgz8#}wDrrYwWSAtEO$YdynHE$D38
 60.2999 zR^u}N;fXb2^<e}t+HCyS9>gX8k{>=k{!Pp$fuM8L+nwMm(HpdGT%4S*)YQ~;Rd@Z+
 60.3000 zRK?<A2LrPrC5C8bfa=Fy!ukz%IRv=D+~q~HL1ap-2p!^`KEh)oy_G2G8TV>Y1#_}l
 60.3001 z0z=&5Wk?$*&=SMw;AmiL9$)+R1<8p<KPut2f0N)UL^D1<?qGLBiW?kpM)d=fo=44H
 60.3002 z5>fH%<=5lov$}hGOMW*ur~7^hx>y59*1I@-0!r&vg;k$SwapMm+{%jWCFIVXJ8Jgh
 60.3003 z^#{SVuh1rk+32Zh(Z`R<*K){`V9t}80QrIrHTM0YPq01#f*R{o*|Q6|ufzis(2b6a
 60.3004 zBsN*~Ws!rJUtxOvz|w)6SrTlv#rJnJXzCvR#fv5AHp3fmX0hq%>34*Mg<XMbSJ5rQ
 60.3005 zeP7XM&65ufcb4M<X1>0@x?|Vx5%Kbx7_Er??>n8Kjo1vlCN!u;ym>zaoSllyI3L&$
 60.3006 zera#N{}C+PFEAwDou=G*$;mVZf?<c1-!D(5f5Q7Djr5tQO8++(U=V4;+E4fTMptk1
 60.3007 z+=6V<Wd7M^H~s%4czaIdMp<a6Dr;!SU?C<Z)7m1bUc$761qBgvfBsyzvcA22xMJ|o
 60.3008 z-(NJngc%t}4YtVLyLCe0pWzwd!PS{aRVo^0m+(@1vKbf|%XIbhq&v$=2rBMTO(pE~
 60.3009 zk_1|B<dJ-GM3fSTs3ly)TiCv|U;5vxb&0P$Zh`-h>ON%BdcO1`m^g>5)OqQzqGfLV
 60.3010 zDrfWB_~xz{ixfTa#Q-aBR|XNr|IJ80_r(Y6@+VqE6?x~s!%>hfmKMCF(aMG!{N{ka
 60.3011 z>Wp~vN?<nfA!(Ed^Z(pU7{{<j6fqVM!z+Om-)t^T`UTz$Jo{*fQH}kcF>q#R`__Mk
 60.3012 zW0{E*w|%bi$@+NO1#t^Z56m=Xx+XDpD){BthTMT;IlEsdasN1%QA&F{c;*Y1;V67J
 60.3013 zMM5!5u@<ne=W7+x{ZDd#ucUJZ3d3o+uVpiNv7ddGbj$prgD_xxwbReXS-afAv)n8}
 60.3014 zaoHB@4?`d=f}7Ms{ePb|@g;b~>91eEzRdX^T|xax2HC6~qW85W;(|}DFC}Asy7<Wr
 60.3015 zX~2l#Pm=yWw?D4)Vt_AH%+1ZE_4f9rM;Z`eTl*xOHAWcVk3>0sSs0cV{x~3580$%`
 60.3016 z^#8B1L0f&go0?{LfGVy@NYJteR!$cWVw0fx_my?qOjpDoBjgA^#&!RBGGd(nlbZiv
 60.3017 zYI>Tc@8{3o7@wM(r)$E)@j3_;JlX$!<$`58vJkbTl4*i`9nbymqXv-?K(JsU0M~ts
 60.3018 zGaKl06A07xaI&y;)_wT!)W+Ic`_J_B<!_UYQs3;zCz}IDeq$3+261rV<&c%jAa~BG
 60.3019 zq`mp?w+F$h-R9xs+&_*p@Gr5l*Adl_kd%xB>A$==pBj+JKfn+El8=oo;s#0B*Db8c
 60.3020 zWcuiioJWry{UxLoUSK8(+a9g3*(-phtn~bqv?Y$I^=z}m-EQTihe#)e@7X0=y8n!k
 60.3021 z?>WaBT^L=iuC_Lr8<`-i&-2~9*|GwQ);ugMEJRRH@DS}LzgcS5_29WOme=~9CzGJI
 60.3022 zb<u_kBTWHk+&gCX?%jI{-?S4Wo7oSm+IYCs>^557VLbjsx7zWu>)zk7OSkpwIXilK
 60.3023 zhAxPshuPbSd^X&!JM$Z!<zOW!q@<-OOwG(nz;02PnVI3gejrs*UQQaYGw@gt{B(};
 60.3024 z?io?hMfho&GLs>9!i%htIZ$zT&_Wr{pFih(`0ydus}9qc^78T@StI^(A3lD3MMXoi
 60.3025 zdV>^~K)cF5d3JS`rpuH&KXH`fOXvmSGEp|`t!|b1yJ~paaucQO|DC?72zdsqNEw^b
 60.3026 zRkZ){o9Jk*CCngxFbDYHyeUGPUt<LViQN$tq;Pk4HwN_rV3JX!Tk~@fl+kyRFex)?
 60.3027 znEIWif#pK=;kUAxID~`(=-&*LT-@8YZ~LR7Pvj-x6M)ik^iXJQb+oDw9K<TxG*s2V
 60.3028 z|L<?XKJ@;X(;aHG>_#c*l+}-3Tjo8z>G#PG4-W_DhsB@y9qkT}RXa6jq1E-$($WZv
 60.3029 z_3GM0{0__ckl6SN=ULg%_NZ$~Z7nTV(G8__md$4!rkyB($up>CWoKtUkBG>)N<pFS
 60.3030 zw({%sgziufKe``;W{$4>D!K7_U_d=PuIKdRi2a(Ff47MLvFA$C$})QMxw~6_?m6*|
 60.3031 z<I=J+g8n!HTH!lK3YB9dV09wMZ|i%`%+HT5FD_oZ>%Ox8b!4PAr)HJjw;Ek!Q*J3*
 60.3032 z+-i>nsWJW_f&EqX#Q(iV`!MXqi=SdXy9Ec4R03>ws9$bF%n{cf{(sVlS^US`mEPSk
 60.3033 zYBc{wxtEb~GddWLyv=^NRC>N)YHuQ7Ev>ltwyNk#QbIx)#;5P!73=*^ypIT|_{;nB
 60.3034 zEq;A8N`MvbV`OT2)8T80eywX*(yLdWC<N?vpA;6_6^>Jogav(>b-r-%9A-#qAq@U(
 60.3035 zg;!HhaIn)QT4BqiH*dZ$Gc)%dZFb$}LAQEGiAG&}Uvb@LVfg@G_s~X1)T9l6@8oE&
 60.3036 zj-^RQTN@X+PYn}4sy+Q%l0dOYu*4(XM&E-+YvT=Ft1Bx(XfN+t&y5c?XmcZnyb&~?
 60.3037 zXamg>(PDeM{pa(uN8rZjsi=~kf_uN4yEpp(%dsv{eXmt%tCb{B!*C80V+UTo${SXr
 60.3038 zm4?P!(O6k^Vc&hu2nj3CZ4)!ITdQkLXO(qs%Wu^+GzJOurmxY`+Ux4;fB#V-s(fbi
 60.3039 z6NCeJ)}gD6{7HIlAYt!6!zN(Kw`+(Z2$s0_@WBJi=#-Sd4AC8y{QUe@5T;Sty_N)r
 60.3040 zh1ZG7>5K<MgNXt$6TM1e{+2i+<QOa1j$1UN(*FTnPf1g53iIyxNn&d16--2z<MH;%
 60.3041 z-UQ>opco6wi!$`~1gJGM>-Y%m)RRohxjb0t0uqcHBhbMApw$m;-3y|Vk3mkFo;dci
 60.3042 zVGb=X_^ej=kiCr!>*7RHK$tR91P>UirNzY#P#Fr~#i@lwL|7?VOff!zSsX#zXU`oU
 60.3043 zY@Od*n+Q<RX@Uhom4l~+{F$75RFuEw&~#$HGv+bj7BnJKR#)e99wFdj6%dF6$5p6W
 60.3044 zurN}Qf3~|iYJ%34k=@x1i8w$nf(_eN+Cm6)jC3icijK+ZftTaZtIerbLtoW@f88iM
 60.3045 zFOMa$sVTq+oo)>D^wR_)&mI6{Wn?!$98C;EO)Mi~`@5R!1N@sW@&i<~!*J;>nTE9#
 60.3046 z5uX%=1n$=2ygb=iBQz~aTjbC9cH;Wx=F;nw6#I;E4Q1s|AIr<tlBp8pL%<YSmop23
 60.3047 z#W+adu_)lsttM)n-?BoklY}k6+gAO!Wyo;r7RArSZSB>(H9kR5Yd3=>FmBwqVWqBq
 60.3048 z#cZfZuP8P))|KA$B&wjGU=VOVMI!A-VAm{}x0hFIVtl+>qrU>?<j$*e>(^*Ib<cO^
 60.3049 z1*@ploxh8D^*p`le^}Dj5#7c^%g+U@{Nh3{Gcw$lkr`)UX09o5UmekIaG<|&g8&id
 60.3050 zh*JgGI+#{pUq9&MBbutD0F$lZANSy9xmKBZ#lS#SUfv6t>^}8_Abz`%80srm+>#{H
 60.3051 z-WxRe&w`DX)2gsmmr+($ehUJd8Cmxf7SS8^rU5B{jW(QlHn==gTvc3X0B$4AJ*ldy
 60.3052 zO0gF`-aL<PjISrMaBvKMTmuo`mMrA9<OQ}wqqg#Oe7xmNQe2w|3&}R$-Vf3gXt~(m
 60.3053 zbsoi;-gRm$tskVrtv$K@z&H$x?^HN~Wn#>XpP8G>^4=HtKbf4HHlxM-V3Jg`<QEa7
 60.3054 zIh3$R_oLyxmxr5yfe67pd$eejhK2?uT?9UM`rxsOgSP^JTBA(0fuiC|Ydx65G|AAz
 60.3055 zbJ*C23)*70ZUyV9skNL#o`}CE`2$aBl9e9-MBGqXTB^}gaHt<m#c%sywA#r;8%AQV
 60.3056 zGnSQS)>$w}f=-hDweR-D9augQf5+;Eb`G}Y{Yi19CzqFxs(tqU8cBVn=e-4rWnKAu
 60.3057 zN-#z|^2Y$tD%Srm-x1=&Z0u}pE&t0=*Q;}vrWW?(9B*$25B~}rLoSK2vx^HsmSS?A
 60.3058 z>O0Ipc=4;iqLDsl=tXI?=ZWVZm_;?WjW1umNaS@r!$V?dCA74(3WkRB6}-J`^<`v2
 60.3059 zScZPox-E~$NJ}p+FX_NP-uRFKrb|eq3;^GEsXv#J-tghWFj?wHOr-lu`NcwW^YhEg
 60.3060 zBpsl@W5JWg3O4s!eT_$R*iMhPda|32H^W`T#RHXKbgm%$4&%0Q2?@C+26A$8pV8hU
 60.3061 z`i;I1*M^Eyn>5)p!nhR`6@7OaQJh({NcGcL6IO$8tyFyQfRl@xo8%gBm9*brnhM{w
 60.3062 z%lUbEOYA>*w-eEpLa)*6uldLJ_C-s+tG{dd=3v0xfxP>)I=F7!c=pY>#8iBzMzxZh
 60.3063 zl$3Meh?x{u>i+#Q@D^nsK1gK854^Hbp()XnM~{9m!~vY1osntdf_*&LUQ}HRCA_vv
 60.3064 zigPZ+-rm0V<Z!3X#>8Z+w8rj6x$yJ&oym>6fiIC-j5`;_G2ag+od2&WI8snnex+(|
 60.3065 zo|Tr8l7ikj+S#oBf91fT-6jy6ix;h2P<N_*n6zMRQ19t<w?wmmPVK=>5^KM$VN_pX
 60.3066 zTo)9q31Qk6LRVxF(A^cZG%QA*WHW<&{EvGqg$d@eadB!<v?8uAv=C0~{v3MT;147-
 60.3067 zva+&jU)lg_v}fn$oRRBvbf3k2#`gC;`H>e-o;;CnXh<`;^zXE@FI!2h&hMx)6X^9!
 60.3068 zzrov0zr;AW%Dw6Jjr-=ROr+?3vk(J=jAZ$6gHIKDs9lFo#oz7Im!;r7JUmQLyEjqe
 60.3069 zl8uM_u;dK}akErUcI8Shdd;EIdVnPqh*1YLi6$Qz^`-mMHw*L|Mk+kk#*^#ZSC_=l
 60.3070 z<TdGVGOL+km29pdDR>9omY2VO>kb?U`R;$jLe>v_8@ju@DaZ983J*aIF`MT~p|v2N
 60.3071 zoyQ})6L5MkFZ%cIUy)z7yV>BmPs%{&Sa&6$vzgq|BJ~y^38`(s(Gdd0a5~kBHw2-y
 60.3072 z%g)5~v7)5pAu!~coq#|U_N?0tB1%k9n8I%{l$9{G&(oX#7cO7jymhMth-DsAE&Rb!
 60.3073 z%B>2zSXnN=Lsth6kG)c~+1R=B=X1Z5`|nR)NZsDvrX)OukejxyQb-jQVP<5!9{|iq
 60.3074 zIWCQ657C-yl6!f19U`w160De_JM@S2q#Yd{m(ezu#kw`zlR$nw?Ck6Z$T~b}UyaLr
 60.3075 zt@R!`ZZPF7ni}1rubrKFgEPMYoz!8*Sk^MZlf_oaJ34+$2DbVEYZ<L2J185)d<%rN
 60.3076 zEyBsmt45=2(xw|07Z=CL&%aw)RV9GlmwYSRD|s<lF%B)UjfJeNtVqck$vgxr!742L
 60.3077 z`xsbr7rh!XK7Q6Sp4=|2S9F5aWIhq<cR|ZkRZ96$FOiAUL)AXA!f6vtYd4j?e*c76
 60.3078 ztD4v-*~(gru8sJ__MiBV#HFM#h)pMq;*F9h;{8%5t_f{*<0pMM?^?9CJb-7>I4ZLD
 60.3079 zn`}a9$S>f&652U)$5liQV#+0_uy7U=`K4Gm?ObyR3~@JLvxCuy^>Gn(mCX=GKp+38
 60.3080 zRmf1Wfk&OsUXe&tyNS7lMIBniAVd86!Y*xwn8{Rbc1kI3nWr!<4e|#jtsBOu{m-92
 60.3081 zmq@})@3=0!3SBMn6;1tY$cc{(PG{8ABvgQnA&%qF+w5Q73EJP^pBu=397h}`W#SR5
 60.3082 zMR=Ei9j&pNUj@*<WpLTtikH$EEZ3h{*2h!J%gfJbsHwHVV)Ow&qjfOWE?$?2!f7r@
 60.3083 zQ^G?|w9}D)Rg?(|JSO}E9u#UMW&I%D+}x~H!yO(ew~7XyKu<}R^ASX&K$8v>fDD3w
 60.3084 zQ%VI*?>Va6?f#7k2@DE4H#ylH>Vnovt+OAioy^*+&|bv~)dFdSk02G=3bg>rSm)VR
 60.3085 zS662|#=R`m3=IwEr&_~D<K?rA;A`eyl;3VT=B`e1%PPRU4w2rNvPl5c$93VRN^T4b
 60.3086 zN!SBn+Nd{g-_AMhuTLKT{Q1)r21>KubAzeN?WMJi4F!Vi?(WVdZJch`+!7NLQ!q9*
 60.3087 zw(%HE@m^xqH#B@ti5Pagxm9@n{CTUj#v}WU&(AJ6*iAH^C~9iP|8fohG&Lx<?ETd!
 60.3088 zD)y=2&-ZPMLJhf6-RW@IOiDaFykfMxH$M_6o4Mp<Jsm;8<0+BG3FMI}ck@k5R#ukS
 60.3089 zyLazu30Mz#7(hoe-i+>;o5^o%Ou;}tI!uU8I8C=zKwKN3w_-PdMDOc1cn`Rjcw#4g
 60.3090 z8^rjHXKXiGsKycix~#L_aZ=)*v$M0hscD9Cn({05{6hGh>;wJ%@#HhNnVBbd%O@s+
 60.3091 z6|-+7NED2Wj40o|dlzle%blK{z9mSln5vpV>`l$tO?hbP=#WSEuTCJPF)l7{0ZZ1;
 60.3092 zzP>v73v4Vb#`5u;M)Zidl@+rHIPVyVv;{EE3*6q@3muJ(jTf<>eWq@UdHYsKc&nR-
 60.3093 zSZ4Zc_7MPdSE8zMN&LH*nEqPxZ;6{CKD$9h+7&FynJUEP+U!rH=tY#{&9ptKkUwpa
 60.3094 zRD`aV&*qXGLU4j5u;aQ0+S=Qrb~ZP?H;>kus@_$~crF)KwPj>wC6X6p_bqDl(IzJ+
 60.3095 z5BvxP)1|F2T<^9_Ha~2UO2gwc)lvz#@`8qjW=HIF-vqs*Bmz3XSYBPq&CLy;{<S5i
 60.3096 zNLX=`pFQi18|ht#rsps}qouAN>ok&6Qs#}6nA~42HS5ymxBvZ16WEOptY&^^=F*b2
 60.3097 zy+e2p)^DBmMF0?uSovGGZs`pM<P{Z}V<KN?owu%{`QZZ+V>jQZ8&P|Ddt1YTsk&Av
 60.3098 zX7aRo@+w>EoTjR3v#8rrOkb4P=>pmoEEYj*hf6a>IXD!Fu3fuU7I5ZI*k?hC8|->1
 60.3099 zH2r+_Q0m+Hf#n@3?qTnR_Li1%EF`U>Vn8=}AeGCiL+v3pqO7lfT18OiDnyf;kzwj-
 60.3100 zZEY=KXJ^M0*M**(9W22NJHsIOyxR@`k%|F}wub=G#;zs)SFCqoa=}%|($ex{o^B25
 60.3101 z#i{`YWKsnj#yuILbFq;9KhFrCK9~B?J36YPZ(z`af9cZO#?!-Pb<l3#0$?IK<=Zo}
 60.3102 zvb-A(m-5rHhAR8Ek<;7PM;d%Q+-z-ayT}cEi7APQ)&aE)MIXe217H?P{_Z;tN?X)n
 60.3103 zs;jee0hn{c&BG%uUk#S1)KegEe)Mk8LXtyc$Ijkf9P&GV$qSf|k(8XA2dOQZY?<Hs
 60.3104 z7Rw32wEeek?GPfEkwdH0G-&Yzxc;H5Yx%+6Oh!fq7rcS1Ub*G#11o>Pu{VGnW>w|o
 60.3105 zoO8egLVSD!MfLUXOmOcbhZFN}Ta3AYy|TMTv@c$~`1ImshOc#Z+k)g7nztAG3jHT6
 60.3106 zIIjw&DgRnlxp8oCz!ofFRH3A$m7pF!FgPf4+7oa(ebKPttG|>~kb1ls=hgQO4awc`
 60.3107 znysy^5&4gcomEv-R&0mfEcL{59;`PLvdRZ=FflpG%gR#DudcF3g@^Nm-b6J9kI$~{
 60.3108 zIKcS*m0u;zXklXyPRhu078Vxl;zK`F>0i5Ebef)?mfkyh>U3t&)RuAUiMZjVbxJC#
 60.3109 z;Y!uVp+ew^S=rd|A1Wv)<mBd3e4ce~?d|PNh-Or345lNaWYRlzPN!?9L2xhp@4S;<
 60.3110 zxx&TnaE$R+-P+9D+_|%}GahV)+u>}SLH(j@?I~E7RssTo{*@KmY^)2HX4v)XtGoI>
 60.3111 zN66eb-t4-qpT#&!BjU}=dHuTh2CN!^9JM@-roFp@f(dzAe;~5I%E`+|z%O;iLOfqt
 60.3112 zg+xY1YAA*KyjoPh7I5tJDOyQ%_}!Z~Z<MaP`iZB=q|>1t5!n#&`}Z%{4Hjr!1_p?2
 60.3113 zHRUdpz@?39A6(u+Ycc<Mc7gDcz)rf^*Yn6nyV1%`;0%F49~(3qpxLEI#A3i>V`Jk@
 60.3114 zd3kvOtb4_H@M@e0VqjpvjC@Mpu9@`*i-J>5@D}-0?Y2CK>xo>tbZO2pvcuF`DOEIi
 60.3115 zdTnjO#%%<2QeDBAn!0-HIpmdWW((Nhn$_Vl#$R1sa&&QB9dC`^ieLYj_||*!%lT{M
 60.3116 z<mA^zx6u9$(jaX3Zf}mIav5>^9d3V*kB^_T87ivjnsvrSK9%)|+U&HrlZ2fE4rceA
 60.3117 zjud!`_JF|YJL2HrphS?q5iN$SEzLxJJM9a>61@hst{u#xqWV84xE29!6gPt;(hgjx
 60.3118 z@UbP_-T5sJw-=KM4~H-0zkGSgU0q#W+{Pw9uGjLWkf7j2Of0N?K*P{u3rWd|2^Ox?
 60.3119 z+bsy9gyc{xgj`1{IxSQ(Qzep(tjoFv2L|?KWMp!!aqEi>^g{mx;KT@keGxXOJhXhX
 60.3120 zn8kN$e~&cWPYud2`sy00gNpC&OcEgPm6>YQ%)Pw56N?qH`y#>U*2u+i6izwUSl_){
 60.3121 zCra+{cV(qq$O7a->hcZrD%I)AaM}5>U~B|&sNcYz=<Dm#&F%m3<5P|E><f`t*$P}{
 60.3122 zUP^+FfdRe^H11(d*pT6z3+V6f*A)WHeLd@sPAj-~T=`=1+xogT6cX_fR04|r=p~i(
 60.3123 z`%z?=NOf&(9)i$j_9)28$t|`=U0d7SZmO=n^BLaBv~n#8J?Uo$W8||jC4B^n+Xo4R
 60.3124 zKi|<*S+rv)jR?(9QdivVy6!|i)-T__*&Qwo<hR$<*0S6-Xnc3qtTTo`Q^o31S!r2W
 60.3125 zoxDe;O70<8=!a@*YC5{Q)B)Y`T&tC;j7K~SY@i4lsF4T+!N-<7`h4M<YfTRw5zhKI
 60.3126 zfeAGjgZWCUWOj(hTS#DCU7h-;>;daKd|rlVE6<Hq@?|E{7Z~r)Ony3F>&j-rL|gKT
 60.3127 z_RrJWYHMp#7aKH*in6lWSff*2SLb5_*sAU7>MDw@W%=<_XF(eKIRpn$7X3l+KkeHH
 60.3128 z8QIw66A}}>{f>55n;pjM7yEmA@0pco3OP799MpSl?ZeBGg9ePp%6{{P#9cz->BlM;
 60.3129 zSc0{=MMW<sr=~ujDd^$3A3Daz^`{pWa@?Jq9<{f&RshsW5z*4xS3DO=RurHWbk11G
 60.3130 zFK%Rc%tY#Us^mZ!X@0J{N|89aqhIs^A9-kVZ>c7mq|#`IDK}a;^E}#Tdk=h_HApt_
 60.3131 z@b|ZX(C<3lp;iD5wLkFKzz+Q3BPl7VuL{fBJLc^#X=cy%+r>1e+oQ-=Cz_htCz3=&
 60.3132 zL@GdZ2%r!_N=?mn!LwXcAg$N3jpnX9DcW7MFe9S{O?Lj-5zUDAxJb8Sd9@xeaeGML
 60.3133 z$L`%{!|VG82OVgK=Q^~#N0}a09%GsLx22zdsRZn+F@EO@`<$KZb-iWR8N@`;iv63w
 60.3134 zrQL+rs?UPN^*lYRnS_M2W8&kP-k}RMS#fRW?%$sHkGy7`q>I06T&PAzMl4x13UUP4
 60.3135 zBPNn7Y=-#HV`H<Rg%CuHzMP{#(5l^;MMXuOUR!e;XunmYZ(COfJ-NtT>^Y%{etV?M
 60.3136 zL^^$v>J6-4QQ%C)vh6KWl9u*4y|HoJfFXJq%xOh&v4ga-vNBDi%<@J@8V*6s-)Re8
 60.3137 zwR#*x4C9j}!n9;!@Nb#7f4Ag475ZT(jwPAiOC&{4JlxtUZBr+{pDGQC>kwD%RB>r(
 60.3138 zDMy~6?}r}W@UsVsio0y=>}EqlLp&AQ>?ql99B=hhb*G5v{NC#&bhzForIeVI#C(&a
 60.3139 zV_|CQXK|y?RZtkF5V{NOq*Mi_+!X1xwIfwEHN*Gw2Yz0~59w}i&vr*^OWq{05*H(U
 60.3140 zA|B84YUutmst_&7QG3MmGI9r5&pwl*{MUnsEJO>3j(2<AQ+OyO1lyoQa|IWXxqrW%
 60.3141 zEFj=a2)w60EAg4^Rr9oQ{F=@Cre>JPZ*2V1|7p7*fwLo#sq)Ci+S)fUG0}IxnlD;5
 60.3142 zGY{>rLP13I<CAfT8rGO-5G^)*FZo5J4fE6F6MLNhd@}8GyCpA)r*H~uRQnciNRdqX
 60.3143 zYtV1OpFe-jYz`r?VIaae<Lh(poxp=n4_!qJF+T15-%m@jk-01_FZ;m?tp^bs313{_
 60.3144 z&|q_Xd`!8zvNGeBijnr20OZzk$B`Hhb}8|H8t?^Sr)U>u^$!jCY##VtOOQ8Lx=w`u
 60.3145 z^5si*QBl!I@b!iNo|qB8ETo7L<2^N!c%ho+e?J<iU(C4aDJ&qGy2eZvu1A2471m)Y
 60.3146 z3$P!4a(tY);96_`e)ReOsJt+IL>2jCfHg)G^q;W`ph@q2U}<gbJh^p%?xyM$4@Fz?
 60.3147 zCW5pt8y_95>lhxcaryUg^r@}r5l4(aKg9+9)8{bgM`|(5FQ9!#Sz+Nf$?U#I9j2vi
 60.3148 z0|ONuU0va8fB$k&FYMB7KmNjLW0{D7cq7%q|AiwQy6t&OD=Q~boO6E*3ky>yBmW=9
 60.3149 z-U2Agu5BB=010UkQE3qAlI}1l>F$zl=>|nWKw3&lM7mqLq)R}$LAtx)UzgAGzW=vp
 60.3150 z_Wouw<2X9ZeXlsz5o@h;odL2`c*nA`vVAEjDW0~ryQ-dq6c@Js2BW_?kRW^L>zl7c
 60.3151 z|I{=L2pAB$?B!=->N{`o$3RA!iM<u`OS?UG7yR?*k6ocotw~&BqNUI2j!tcVzpRCl
 60.3152 zlG3C|MGlS6E1#}q`$ez@e*p7$H0>~e72Hh?dOv@7-VYq*4sek>ngy|9pcy~~6p)gV
 60.3153 zB7$ZRuqEV^tvOS2`~oJ(JqaR5hbl20U;NwsRp4Qh`VzTO;kC;Nv|=(4nMRTsiuOSK
 60.3154 zO;1c{jLkgDl1;Yn9vE1Sjfp9#udDlfd7As6o8Uip0d|YntQi;>-ehECRBt-+kw@S1
 60.3155 z+aMhr9%{hVgX+C5E4`eYIJJt#?gOANy3rWhw7tDe*zWD^{gcG=wgvXkvc|^7C-gDF
 60.3156 zz51->1_lNsfEf$G2wC+k{RrE3<s=N<+x5Af;sx+8WdBFvY0%3J``#teA}|Q97f0r+
 60.3157 zfTwxYl$GtkT8X!9I5!yqXiO+``SB&?&}_Yjm-pp1_i0PZb8)|Bks~0!1x}|Ou6Jzf
 60.3158 zb#VaIVr;FgeTA!P9~p#?tvdn(Mm@H&V&VdpYwqwmEft>R>e|});=%&O-ob&z(@2Sc
 60.3159 zn@XIt#`N2;+u-Z^-a8N_boF0`3ZEMgzTI*>+cQWlFXzAs6?-w+=;H%~8t9|Ak%>tS
 60.3160 zlJ6j32q9n(GLJXMxX&&x^JF>-^%}jEy}SfbA@~^0`Y|>HWh>L$o0w2@1MhSY=bbJ7
 60.3161 zYkFE5zOn|4l7z=(;J~WV*4EY$P&~hYT(>bZ`zi=*>5`iO>6CrrV|J50(v?YgM**;)
 60.3162 ziH64GvYMJN%|>ikz{qw3idV6-D;}De(Xp()Z9TeOvNCmni&vd8X;ps0MZ3cYK`4G{
 60.3163 zmuE}iyY21m!9aDe(BPtlyWfS@-0Cv3vK-(djcb=<qhUa-`~WiRqAlcMRYKu4PkY|;
 60.3164 zH1cjEw#7g)??-k=Yl91fq3uau2F*CUtgQ0gxO$rXP-nQT##w91%A!|RS7~IVq;h$^
 60.3165 zuYTN~?Jr%b#5~1CqfPZXnJ9+OqiO+Vvx9L8KowL4P<ZayVEOuWNUb`f^Rq{oR3M_?
 60.3166 z+S^;4?Cs&Yy1JIX@%5J<fP>ovNdyD>gZ-c2ZZ)^Hr8!kr0m>RQGy*7XlmuNMQW&1U
 60.3167 zc%hPzkdTz0&!`6Z0^J;geh1Or!XkGHPRaDynXV>M%8~^R){KMj+q!y=vefzxAt2tj
 60.3168 zTMWH5Zim#Hdkd|zBO@b>krFR;N{u92zi?Wf;as{|uRHRMS6V090$R0devj;hf(A@_
 60.3169 zI?TP#=@}Td$BOjy4uCfvajcr_j$wF_Af0&wMvHd;^fWxKXIZ&t8%QjVldTD&;Vik`
 60.3170 zLpob{76m;{&WMG*r>g)+5wj`eC<`X`jpCu*NrxXwh>@}fifwAL!ZJ_KeLch3H*oV-
 60.3171 z+?obz%GW5PY%_ee4951AsHiA?kM+dF#7QPO27C!yro{XDA`tuVf?XE@s<fUWK!b1}
 60.3172 zKb|0c_;5^BUES>TVzVe5KHG-hdZD8N({Eg7GgWCl4qLg224R<->44qF+Z*P%9!_YQ
 60.3173 zXt=2H=7I;^-*CFt#r6gs3bFKivdMg$jLgi1J?bD-sY)iSyj&g_L#MgxCIcygCDqjl
 60.3174 z=I$(9T&lm7_z@sL<#7Y6wRioWs{!V)<siJvK`67nvopH}{%nD@_mi_2*PZo|2^JI8
 60.3175 z548j*0%%Xq{_l!=(F+_0H_$+9(b3U)R#nLYZbMyckD$L<g#1twXg@DN6<h>J7mQA9
 60.3176 z$(xRDCq9y&KYvQAS6GZ>x3siuLXc*`C^2?~1XbSLLjeBwps(M)wdA6Aj;iT-E$^=+
 60.3177 z+J+%R4(qZK5+CuQ{1!%`RJr}5qu-OHI1nxgi6DIL_%xbYCQ740PhGw9Vl6$qCFte1
 60.3178 z{j2js4fyVs6V|w#&^gtQ($XPP2!5{^M^Z`(?}NWTo%N|wj`B+|Y!IYg@9vZ_Xm*D=
 60.3179 zE^pYP;sZ;=8KneubR-!SIl#;(;bg)$ca<t|p{DVYH&Zwye9Dg=Kh9xQ!Ou~qZwb0j
 60.3180 zqpez~{rEiG=jzF%KI<Pw;ApoEE^ZYj@7mecXTi@B6G8Jp(Bf^+)K=A0UF&FT|E{;*
 60.3181 zmG$Y!6CwYq-QYQKAA(Eg)B_u50r|o?xD9(P7=yyMR}RA%EOq3b#7mqM6r$gi>0bj0
 60.3182 z;HXSL5)l_?>I0y6?%oqI2^mp>rh4-b6u)<C^YdR>k;~wnU}akTKc=Z(l`|)G=>G3{
 60.3183 z+>h4cfpavzJUcV9s-k)NG_(@46l&se+0o8BTyx}$5+S#<0c3g~2o{(~$#Fkfan-gC
 60.3184 z3=~ZR9&c-IPU{GM@j-szqu1_xl*le<9)cRN{=3YliVa>|0~nfV1VHA}a|))|YP>k@
 60.3185 zwNqEr)7P#LbbNfgf}YsjEd|V4f^-1<tmu#I>`qZCyhsRQ%u=5SKvGapNQNNb=ReI(
 60.3186 zo*neCRDB}hAI(*KMT@Vgf}8RE`*<i2)7=T|rb#vY;;&vItK}#=SC7%s(&{5Yk1$bM
 60.3187 z!1xl<MM}8Wkwx|_{{&yfKWqu`|6*16mbbLl3+T@-d~YjYq?~~Rr~sd3b+y-u1KckX
 60.3188 zSi-?#>FW-<I&a=QkttBsidn2XUrFSA)BZ_8UA8BEc)k7YQak*reF_Nk$;rv=Os+2{
 60.3189 z>v^|i8KA{@K|ehUdV8hg8ctjs9F&eL!V7M~#sJ$Lx-K7{uk2UqHzO)&Yil3cHeRow
 60.3190 z@42>HdV1EuWobrWuQ2!H?VF|eXK(l*=%-=HNW8VBWm)bOpT|l5k~o<czJT-Axbwq@
 60.3191 zam*v8Kub)1`0ybXh>rmHzByynQyLl%f(H*YLa#eJB@6(kNYTfz_4M>ymzI`NfB*hn
 60.3192 zy3t{^|E#i-OAb5m2{2VgqR*eVWB|i!;_vUTVi4gke`^rWSuTJD5kfyW{%i7BXlW&m
 60.3193 zQ*W<mPQh9sgL7!n0Q}y8#w#r2<X*f$>af>yadBw_%j*>cVPRpdphrwjY997oXDg(C
 60.3194 zhM)%z9$-RH4|%(DJ)GkC5$(?Vl8g-hSuG+kfD18dx;a&za#VN;ehBG<Xh1lSOifSs
 60.3195 z!WEUqNm=50f(%RI+YL)<@=qPk4~!k)yvm89x&x`I1$;=v-MuDRx2UQ{uiE`Mw*#!Z
 60.3196 zB<s@=GY+tVhm2R=YZg$$nd^{<o10rvDiNf=HC}R1T+EthQL@k)sO2vL%c?%$#3|X>
 60.3197 z*!p{VUZ*4`Cc+2ynU`amYPZ5x00+M-=A3J~?9Nt<t-B{-p+S%|wUWzn_k*3PIq%H|
 60.3198 zw?mUT>#0htp1wZgV`pif4oh?M9Jjj4@^W>51;FhGnVFd#T)Nhr92~3=L`Xzb5LSj|
 60.3199 z1Xr0+mY1Iwu=t%#%CHbd%&W)+M3f{j+PxEHrX&bEDpuQ*6%0R}=QPSpnloO<EwZz*
 60.3200 zEdoI&4&Ws-Fi^Y|ppI>C67ONSWHj|M@|`<-YmV-5^ekZEwVDUK=oyCW9zd+kf6Js1
 60.3201 zeuJqM2)|x3VQ<g;s;VkWAS2HJJ=s)V_N5A^ij(7tWDSb~F6Sj?oykXnSQDg?;(A8n
 60.3202 zb7ha*>#K7+Du>#DHrd?WWq~(JPe<C3F$l_wG%LCR72ky*%E(Ub1US)_fB)Q*;O}V1
 60.3203 z(dol?*C6uZ39I_$OE||0eh>w&>KFsFZ>lzPR+5m{<St-ZGmSdew~5<sg}U_?b2?LS
 60.3204 zfh7ev>*VX8*~&oHpxMV6rdS;X1yOFVfVw&XSs*Ur=z=SO^U5stEKsHo0>tKhb8eai
 60.3205 z*Ul1VXCKDek!!wM&q_s?wtR_j)OdS2EZft~SfM$y`g|RX!jZ7s!S}{>&ScrKoRN*8
 60.3206 z?Cfmaj@H&NpgD4L=^Z4f@zK`-+KFT+hC-08u5Rx8_lO?89o)K13G~&uxw-i*Txs$W
 60.3207 z2oP>aTe&~R!+?Z~MZmz=^~ttCxgLX1-#R~Bl?w|FwpiMCWlUW67fBz~pZ@XI8DQrO
 60.3208 zz|QX0*7VRmlhbn&$`2Pf3}pe>KG37PJZ-q}N;B)kz`#(7{rvfRD5;=kQbNMI4LX~2
 60.3209 zr%~y`cGX-VDntvcv$`tnglsL_Bg~aIK&n&=WYuPk0EyFbUru0fwPh0qg<rqq9sCtN
 60.3210 zJZh`Empdb$2=({(OR1^B&%I?P=4f{O<iLt*U5IaGOqNCMiDMxn!NVIm2VW3tJN={N
 60.3211 zXZdzP)ogHfUS3%)a95oJ1G{)^jCu`qr8zl437<b3sSE;E{FrGTz-9d`5F5yjb;Vbs
 60.3212 z$w0&Av08#55M^d&4#IfIoaA_G9<>sNg@Y50frFD;XV4k|`QDuR_)MB>Bp^c(DJeVp
 60.3213 zC86V!lNKro98Md`&G0!_Mpl*{fJh(OnC=j*Dw~Sjrp>O_Phe`kd?7qs1uF9cJV#oL
 60.3214 zNckO{x=eTPAW}mj0Dr`bZW{$gloK*k^CaOJ#<_cU9Ss|M2T*~Xl%!<I=7J*x?SUSS
 60.3215 zf>o8*0BB}{s}m7&y;#pe29YM0z+tYaD=#mPgrb3VeGWt`UrNL6{Z_`m?z<7;|Lu&<
 60.3216 zw_{18V61g%AE=L>uOWRVmW;DiQm7n+Snmc_*;jiLhK)-$ccc^8+O(OT#z^H*Mt=Oc
 60.3217 zv`=epZcZAAL)Op2#3Vxlj0+&h@KWv7E)J|AV91G;;mngpAa#HgJXV1q2Gx9A+@P0F
 60.3218 zAUHu`0I0Y+ZRV;P?vi8z6euDhf?UA!%x<SEn#OCaK#P0&s6jPvo2xfBC+FFzilpS-
 60.3219 zQ&AxodHD#H_?YD6Z2&NxVaq*nYTieK;;&MDZrpC*ipW5Ja0^pYXCCj&)P}*Evn(RF
 60.3220 zmyN>PpSz4y4Mu?n?K2qt_9~=BCZshHNHnxKCaqC6FkL|agsL!3Pgg`c7$9GH+H%6O
 60.3221 z)4XE{63H9+a=H9AOf4EXwnO}OewUqihM#<VeEIFeHBOuKA;H0=Dc%?6vp~eKE&vQ#
 60.3222 z!BwD+eg+nnr_F5LW4HC8j1Rzu{)l`ce!=!gCvKM#FQ^?fBW_*^?cRkYU?)ewPR7u$
 60.3223 zO(m&+l*X^f$jCwCYZ}CN`fvsBzQ)6fswyoeZEKCka6YOceT<Qk9X=kOVTwtnJZ)zz
 60.3224 zM*i-2Nh=KxkNVJ9IU9U~l1r<h;s4KJ9_xP(^CSz)%Ri?iB@s)d$sfVRhaU^N9~tTC
 60.3225 z&E4q<E*%<D3^Yw~qi!*~Y7`JjlXuj>d&Ni)9UT>=IhL=X)Bq&iFO@u1<XmO?_o{hM
 60.3226 z$7Pj}p!t2*mEf-j2M4I=K`pJVwMX#1)7RL<Jo12IRxZG=@3*$LE(5!O&CAQ%|B`YL
 60.3227 zu62v>&s>!k^wv16hVk}FNl7hM*Vbz31hy_5HDr$>xkl`xL*$VX`R)0}8LFb9?*v2I
 60.3228 z+_#oSzSq~!5PyfS&Q8bKS5KEVegZ4jDqS(B9r(QEepr0~zfJ%bu~`Fz+?JJ<Me{i(
 60.3229 z<`p0)9*1ge1v9fX5`qw?bnx@~T;0%+@>Vp{pYj7K3uajW3N`c-vC02G`&aG)|2g$i
 60.3230 zTEoM`yK|pfnsu&;pN~&dWw5-ma!4k`i%iIKoIyZ98{XceYpUNM8ukXlH9jh85rTeA
 60.3231 zOh`(}%3{OSxRGQSkbazg{;{^UMlihjKhEA1qSxzx{NRCKH7?cC)O-ZiG+FYOFBWRL
 60.3232 zy8R1wJS$v2d(Eh#V9?gKx0#BHicC>ZQD5u%Tp#Dwdz`K`9*=4nXI?8RDb?$G9goNl
 60.3233 zTV^PlKNtnyz3zwvHGzeZ_vXzTt%kG3kYB#OzBI^)2xYabugP)a{X*N@#VWTyckX<8
 60.3234 z^z6B0hGN0!rDm<Ob#_(NX*37nHXUK;$#1x<b)DV9do?h4TJG-dD<HJHp^LfOYx67_
 60.3235 z9wfwfz9Zw~63CG2&H1YTy?gfzd$zTi$2Qmn^HE8PARRw;r3zhBQyRJ_Pg<}0xaabb
 60.3236 zT<ew|K)wU3N{)QV)p{UidJSTiqwiO17mCs1yZ>2P36lj>u2pTHkyus5Z9beS(+||O
 60.3237 z024X+yp6Q9G@MtjL?fHz%FoJLybu1NlUWa(>k{z8^tG0+H8lxOE5>v&ZWaQ`E<A^*
 60.3238 zp06!{MaS_I0U}}T{X3%<Q{zC}e+5o=yv};M#>vuunTUddLREzf%$mA}h9oy(=-!lV
 60.3239 zqZ?dXZkb@!3Ur)<MIt3Ka>4HA%Iy*`ZkH98)@eJD?H*ZXDDbfCskOj-zM{gz8W229
 60.3240 z8Zq4d&*>WA`z*KvU7ekK#Z^^f5X8a3AzxNjmJGk*rlzFiz)3^1x&j1jFfiy!^(K9U
 60.3241 zH?#E~c|aVPc>fq2OczIjudW(E5PeMUYvWj8ND1a=FQnjy0B2#sq{Ky2PfkuQ-^qNe
 60.3242 zDeJ-x2nIM~p|N!E|MRP>rpHYgU%!&Ofmw6*_V&Ig(5hnV?&(ni(W_XfT^(hMj)(Bi
 60.3243 zL`qX{4hhFG>#(tWv8{!K!7BUCy7?Cxf!rEV?gMc`4Z#UT)9?NK`1M>DkQc5Ughux#
 60.3244 z$H&b$>jycEl^6*el<8xZiA6QvzTJ;MIdOI&2ziQyfx#f;up(U<7#KL++WLYGfH<Fr
 60.3245 zhev|BDQUPkultdi@AmQH;^Ljb!9ljEQ+9TCUNCeesMy44H>tPhsX=*aMcAJ41MhG*
 60.3246 z;0^IsC5Rl!xA(tG(=j6>1FnJR;^81*K17w5xYX1n;^gR9KBD<5C@5$U6J?3+;lqb9
 60.3247 zbilmN+wla13teQ7mwUr^@R0zBuhT$qIp)GL^?YWzt4$f$#cce}K^)!$v^G{#Q{$Xa
 60.3248 z$YnFla}LI>5Ee9O(EP?mE+Pci3%E|=bvT<5EWn-DwJWz6q0ghU071Ej0?E_j>(G}8
 60.3249 z2nzODG7hdgzOk^dfQzr^{m?F)?C&ppU2ByWC-wTZM&+d=4I^Xz@IeKT`FBuIa$8$k
 60.3250 zKBtR^tKLCH&6D`f+_&j+dzzIza}++<)zvkPnz`Hb0q8D|FAIMa#RCRa4$X!J&=R2e
 60.3251 zwORl-Q3{{UBRPm%{OGVWHO*2<1);{H1Ei_Ds_LjRV3(a?uyUnRTo;2r0neE!{e^>$
 60.3252 zn}egA3m})eu5QZP!<9a(sl!5zGV1TO<V9Jz`98Oob33s`aPiJ;dD^{MqO^|e*I&X>
 60.3253 zGS;C8Z0L*7$%}vXOQ29O_MP#P^t~2;44bD<pPsY^;>5|O2xx$DlG1g#yggeAcZp@u
 60.3254 zBaH<-4rcosItIq3gp?G$JAjN@fpzPVTopvZ(AcUs9bpl`{X4#V^~xz<vm&>vtt~^(
 60.3255 zpgoL)zx#GS+^4uboQwtD{dAMN1Tk&lU~g}e51LC0xDXqXS5$0~m5^9FHg^P3W0RYg
 60.3256 z_vXisA7%v1+T$%oY*>FUEfI=~i&un%gzzyl7s5s!ajGI{&9P=5h)iR+WW1Y;0fPVY
 60.3257 zXS26Ct9Cq-JGlup>_8yK*1GIYqN1Qk0T}hay;>Dcyb#(*xj6z_kk{?tPZ;nxoGZ)A
 60.3258 zy!QYKb;mH|t@b6-uvx=JuzJSyd`Obw<7qp4dmYOPe!D-y;ny|oPnswJBsv9OX8rg)
 60.3259 zjr{!lyvw9Fe(+$x=O%g;EL$hJ!|WxM3`K>hsj2N(l#wr9yzs+ls*eDo1~CX2LSEjx
 60.3260 z@QVO8Ha4VfZEZG?{-@ATYeze~h{=?Y)&)nR6ejH-^7A`8g+e|zbu_>z0Cy}&z^G3C
 60.3261 zF(_!=9vgyRd{Ud5m@vm7=3%X?uTM@>rtgxGk@*e4LdE6s$p=#1vDMUX&Fv4N4QQST
 60.3262 zI`h;|{Cmn^)c5acSvJkTr&_M#=&6m9sUvV9W<DnMVv%^DS;9Vkj2K=&qPYDj7%B17
 60.3263 z+Sb+uP@Y|c1Qj-YOfWJeLXL}xiIN^ILFJ51#3jA9v%_r2masy@n3<9Bw$1R_Q!qQN
 60.3264 z&CLsunc70x6_#Vzb5*u;ADfz*`n$WOl8g@{(C)M(y|Y0gtOHW_N*CGp1;mO6NumB=
 60.3265 z`Wug`0O!s2;1WDkG&DGu7n?;rwTT40<G^}aXlW(-sWVpYZf!Y6bQztv*Qa1Yz$&Q_
 60.3266 zV~bna+Ojy?+vD-`@;XIHd>6g1IXW_;ARb2icy(nZ^I|Dn*dAbC3H>I8LA<}apTX$-
 60.3267 zsUSp!=-ct{!O!2rIV@d(vr3zro4jCr9s*>(tT!3e6U`cq{O~+2S%Rt*d~<o6RK|%#
 60.3268 z#h1HwMH|6gMpD~bTR+3X!YEBmO`j$9sh&9XzxzIDhL(_!FnxA*CX0w*TYHJr%J`c|
 60.3269 zo859R1lczaX$I}zgQj12`1n)>MMbM0Us4|EqnCXWdm>7UZ_nh%kfGScMHqSqg7}h|
 60.3270 zSM93}`T1)##l<_qnpK^S$+MMnpHWbxmF)`Ndw%^6^kfAIYK7*@{(EL;W|qKZt!Zgt
 60.3271 zk!$MV!EgLEv-)wU*mH4lR4qn=DFCqJuc`1ns<rz$2}55(5W4@j6+0f1!oosNRMbFh
 60.3272 zQ`1#!!q7~TkCl`k0<ba5P^#{p`mA7@G5mYD_M#t<Yv1KcqAlX&)YNU%rBJ=D9DYa}
 60.3273 zaf!MW@Dy9$6?2lGr_DdYM8Si%)<#R!^JQ6BiZtQR20ARPSx5($f`bRJ`j1dlh!dLr
 60.3274 z&z%j54*>*h378$>WR2T@{v3@nBs=nvNK)awm1&NVre31QM-R(c43?(09Jg}Lii=Y#
 60.3275 zsIT|RN>6`76WFRCu;Wbr;f8-f%F%BM`A5~>W&FQ`A@5>`;QHa_=8rwE4&XR`e*S93
 60.3276 zoX-q#J=GwVjWw5opQmL{SUH2wSm!`iQ-AAE`hXb<clV3Y@Y8xUzqtF)c_Pu@9Ryy7
 60.3277 zc1~tySq|G-fkBa~)y4#X{9BV1J@DzOuE#cKLv8KlSKTbhtYJ}C*R%To_Fb~%Qg5;t
 60.3278 z84JfYgMbww_CDTFiPNcdc8Y(`kSr^X43XoaiGjiXI%pOJ)cy-G%1Gs+`V-CM)YR0i
 60.3279 z0kZ*-oV>hr(D5OFaL*!Mm_@X(TJBLI`Eo<b|J~|LpZf7O{T9A1x#q}cXm8I3Ox*eo
 60.3280 zO{%A&Y4rfGE*hY}#P{w|+~%bS(GY}40=U|0X?gDa=FOA(^mM-=pl}s(l;I~tjsedl
 60.3281 z0;l;sw&Tz0Y8hN>*!}Xv`f_8#qEfer=J)96&GPO2N@452I{_KOhrR3y4<0-?fgn^I
 60.3282 z(xXPFP1V@Iz>YT<<wx#<aDka(@bUIr<0Xo|4UKcaLc@=NCIOScv%I{#Rn%~iOU1}2
 60.3283 zeHZ#VypCpUY>W*X8Sh`LmT*zS-xi#7<m4jv9zUi7mMsbiO5$_srsL)wD=9DkJv%ZI
 60.3284 zQ|x(e9|}iBjFhveD8l~6NZv0XW;&Mb0sJr{Vh27csj7<O;p3B{XJDX<^*X&io#Q|K
 60.3285 z?c!&gB=9j#&)e-M0MTs*28L~A`Uexu&7vctqp?zyk)&tDATR*L`HH1Kwywg;Xb>@@
 60.3286 zZ33fy06~-x$NwF5UWb)WOa00Gt?G=iCWGHz)d2*(fL~qtSvDXv#b?s{=#cOE=2#I~
 60.3287 zWJ1C^HY7$yMs^M~$CuF}y}9|_-J(hXy|-_lEiK3Ck=8q`_Ll;8YvUJspGKA^6~x)~
 60.3288 zpRQ;Z>ng9ag}?^jxWWKWI0J-d{Ly%Y7AiJeHerPY{!+?OegiuHu4mce4VX57S$_fo
 60.3289 zP$t<21lUtLmP(igxPeQX^*d=3DW5qZ4tdBDmY<zn48Kdw@7MfGuhDyE`*=)`Y#**O
 60.3290 zvL`AmE_VkJVHq@^=%k0G(RFNO<SqOPwf^Mj*eQIWr~`m`80WSR5LqY1#l`MDhjTSf
 60.3291 zJqw~!QHhD0u;f06pgYLObT`LEJ{4Wd_ApRvgISS)pyIMJzlXZ6qFsh1RQ>(^OqeKs
 60.3292 z1&TQWU?q?K&QW?=xvE{~x_>r%vGev*bk(dogFHFzuiDESrhZP7nHnd~@N_A-g7n*~
 60.3293 zv;74K3dA96;56?3+z%I1t@Xa<GwuFNr|9b;`UjW@#MA95HBx;1-`mj?aQ<ydboA0*
 60.3294 zD~|AINFb#_1kDMjHNUy%@J8;&w-WL1nY|!hiMljwn|R)du%-z6+_b|j5)u;XCgFGf
 60.3295 zkj(GWZ`>RI>=<C#|9(0c+x%QgD)<eMVm%-%Du94JpV2vOdWY0HG&Ce2m(2Inb*Fmu
 60.3296 zL+lj%s1;?5R8H(Jyd5;3>@vH)k1{nkC#=gHr$y4L&kE<^)*C#gCFZsNxqZ3YcpCQU
 60.3297 z)7E&ci*3cW8_KusSm&MT_2|^pU1B04hEDKvKj`K6U%!6Qu(PpEU+`6yl|}zFDLWQa
 60.3298 z*@Rc||MP6^&Yu2UkyHkyW{MmwzM@r;g1Y+J_)LWp09t^KeEj^pYzd#9M0fEFXUSDv
 60.3299 zZdc7gkVyI<>(u0=0EqLKc_SN;FCs)9BZUQQQLPmpj{oz!2!93j8*S|*mH1<FuhXwf
 60.3300 z-@hpKT>rO5K$dLs!NTErJ`uOg?^ojDE(tC1$;o}Pl9KxtHa3}ZsX~IawGKy|*fM}l
 60.3301 zx)Qmp(Gj6|VIS{nhN8M5M0lU+mnQt$p}z)bn&UzXaw>ybp(_U$SEjR?MqFH+DIlHR
 60.3302 zxrwDUj1TgsKvC4y?cDzC{%7-y!lEts0Yyg`3C1sritl&tQ<r~1%n2pp9^IX)V)>Dl
 60.3303 z_Re7P6ofjl3G1Ve5X4e{q}VfF@@APY85_VLHPEmY$_54tPQwjuZf?#H#BDQe2WVM@
 60.3304 zTwQo9r=lVT-XTSS_SUmfQ6^EI&v_oocq=LnxfZBe${M$a5{+fN?-~NY#1Ja>#I9O9
 60.3305 zSvBve=YHEmQP2-74<)!zTj0@=V|Y>$@hY4n2mF2>of^`hv#-Yk12DWH1n|+jugjcQ
 60.3306 z6(Q6#IH=HQHu&x0`tmfed)b~cq>b&!5!?T{D6ycsV=q{lrCy$%9F<eiQBh)AC>oG{
 60.3307 z62FTLf0LhAqeaCeeJ^En*Gj_^ydVe?3wrsSiILIKfb|h3&;YSL%U1r+n-%g#R!Uw{
 60.3308 zMml1myx=k)`fkF_&3zghOOUHu6gQB>%Z>$!WDP%Ux@HY|N%^?8*5uVI|LUkUgNq%}
 60.3309 z4oSJm$;nPnq13yO-Oe;`+)hirA1aPJ5?p?P53UyM4a_k~<t04D1WcM77YEBdDL`jM
 60.3310 z0l)AdadxiUTuDbsDVq0VRL?RM1jR_bg3Z77SiZ(^#@g4?(x?~I(S1v+3YUl!zuAEv
 60.3311 zVY$2%erq8A&je?KY48NF04c5E5ffWA&;jKiz;4?A=TYdbi;s?;-T>QmHTaBY&Rgod
 60.3312 z{~q+YF8&OX3w}u%m7bnX3VqGa?!^9^8wu9v^3m1dfEKb4u&{eZYzgiterXL(n_!H3
 60.3313 z;<oYd@Ors_!9j8fCiejr78dca2R?enRH9cjAd@l81~@Oy@3Yj?SLuVeK%||kgXuwp
 60.3314 z<mqERfBuYr32*B$g%f?OM1r<vYF*;#J|Vzo(%*QYO8`)tK*+1qBWpm=|2$XQnyxOR
 60.3315 zWM%y&aLvxkJ5dIj+GT(H@8KHyd~<^yyjNrb)SVcZkRrf`oy+!>Ks=Nb7KYiKA1nun
 60.3316 zii)oM>Ykl#NNzLi0v`5vf4^+|f?cnY+7n7j2|7ADUCn~gBti=gLI+$kA~3D5oJe`>
 60.3317 z;G?3xh4I#-8NaaT6eA;}@#gEC^woh>m$^!7tpeluoUzRXV2+N_v9Wiu0jJD0czOKV
 60.3318 znkciKNXaUCi)L5kz6sB=BcIOcuFoxhc+c{eMjsp;oPuRO{merI=zCTczso}t$qdEP
 60.3319 zWp&Tr0GN+Ijh`}``L6BW{`^ODnSC_3w0zRh(IF=fVv}gz*B7c@7J|>uT{m*FdLKN6
 60.3320 zPx^vWCMPu=B3Lbc(>{enUcEv_nxF0SG&asiHopWb?+JW_Syu&^ujZAQ7<zPcGzJ2k
 60.3321 zsz_`#)qWWxWD;v2t_P%sC>7oy0@U5pvmQJ3St_HN$=uvrRcR3=cN=K96!CCU5*zov
 60.3322 zW&4p#eO#z%VnXBe>o9)!|8i;;r|aJ3*}v1Emp&-*h|B8HJ&2r%iRpVrMq9^$Yqj={
 60.3323 znu5Z;*~!Tba}L6wrS{P1ncJ)7w{PF($O#_*ZUf5gVDfB#Y4;N`Zz+Jp+7Y%+MCcKx
 60.3324 z#pgSa2z7KqR-;DPYrG(%2lIUi?BXxUaX*32J`&%qoo$ztvzh*3KuQMuqHH3!?McOS
 60.3325 zN@Qd+FmR^Ce2#1V*$U|||E5}bo|h(XySWnuLZ|JE;$&VNh>-qrcg%zP)Y1`CJ8vYJ
 60.3326 z;}TJIUcbiZvril}`|#}>Wq>+krewwtv(gKMi?N4jX(<NsY_16_`od>R?EmPYuXgiI
 60.3327 z2m_0YhIvG5aC#CgJ-x-^bhU%{?sWBVV8>E|tveu@^78WdR_vbjKxyjXre%9hpjhxB
 60.3328 z-?}=1Sj8NUfnqZo8<U2EZiXjJMJhTvefy`UaV*+Dif88L^rB*7MwSCo+YB`d&JPF0
 60.3329 z$&h7|`8etM_}p7QJ!WsW8ZV~!nl+#XAJY+rez@FTP`4?|*YE1<tI*8%{QCE~?{E&8
 60.3330 zeIy9j#@~Qa;(z@3@fHY83|^m`D<qa&Y^WHJ`UMbSEAaUlsj&Ce&xO`NVRMb@J1_$}
 60.3331 zg5SL#Uub%M9sBt+W~1l%LG(jr?f96)ME;nbWxU+HJR}an&=FqX>n#?SmRR}#WIpBM
 60.3332 zI)QgP86fCedO9*ALEhA>PHPZ{QV;~}h(=Lkoap+oyTh5OR>CrH`|#oB#pPuW0%^gn
 60.3333 zI}wc_tZwR;H|2z{9sdA)>GO(9O&vgn;L<&wV754+8Pt^e&=<ZQAr;(QT%`yQ4{_Lt
 60.3334 z>&3~G?F^V@GMJX!$@ranRSHz^OAlirKpPty<C~)eMDW9XAHg6zLh*a%aI`jfSAaC!
 60.3335 zy4qwk{RH`Ww&^1iEZxl8sdokhe<v1qX=y3_+n||y&*_Kf6oM=)1IzHPNafq5_K$<<
 60.3336 z|K$21z?Zn$j@;|dT^xGobm8k_&BQ{}HBKRx9`$9W0~c^cGzRR{?`djkJ_4A84*7yl
 60.3337 zsYij}sw=7p;emmHD#!!Jn`1LOv-Oq(OZ)K?6BEp}F1w_3xM(%?&x-Q%IRY_UcBV^e
 60.3338 zo~h+1ugvLTU|<wH|M1SDHat9BWhAs&pIlj4c|0pC%Y#_RlV=Td-rKM%>gki3%X~rJ
 60.3339 zw~H_L!S^L=DJ%amE0ZOFpxz{2B^7n`M_&7jZR<3$N%1!4*IeA(N*au@M&rc>@M{;{
 60.3340 z+>bCP!7y2ok)^WrH~@O)jqc)*GyZK+0T+Wh{uy+?Hvh@UeI?F^5H9E!EqpjXOguYY
 60.3341 zsDbj=)W`|!f54p|yeO=CI}{xpjGlK5u*Q6$#eeA~<-PSAXLvvOOV2VPd<}bRXNP&9
 60.3342 zyW76j?J!dXcYKQH4g@DRrmhc=kdUY@X;Vi>!o{5SZg1vpL$qrg*FR)tQs)|Hs5v;W
 60.3343 zTLOvqgjuKN4?yL+`}_NSd1^(>fa}{+=*upK|1Q^fPFI6?e|V{KykycS{a*3)EBW?}
 60.3344 z%N&!C>)w0;h_1Q27#L-mW#Wtk!w&&R6Z}14l+jw;cU3irHO5uc&@guz?l&xfFJmsk
 60.3345 z?}WnX!)3+A5dg#PJ`wvAfdu92*4K0anGzElyP}|_W!Vt6UETp-J^b+8fIhtAb({nh
 60.3346 z9q=$dJiNS4ZiYmVh>T2Vwb#?9PgN0OmSq}WQl`N<6rT5m<*f(6kC6M(S|6w7=;st6
 60.3347 zuZs(y(zIpL<nvqFcN=fL&my0QYu8@ZQM=ct&=Q330xH-6AJm%u?VI*vOtCnQj}lab
 60.3348 zfUe}I@q*md)YODxq$=FM=xS*tQt|Qe2@43+wG0e|7lGk=NjW&bww7HnJ>Yy{WNuF9
 60.3349 z0kp(+eZ?SL&-HVr{s_KF$%NJ6;&H5sCIk_N1~jc6COEA0nxndwH*8ubIRfwhUWB|D
 60.3350 z9p%ZBCsUi7n-h2M-n~yqNC<RE1*1|EF!b{yYI+68(AnJWwVrU#5<p#Gc8{*EJP$8S
 60.3351 zC?h*Jg8bn04hvgbIRBqrxJy2LP<@7fApV(O*8fMgqf<?xk2Pr}3-0s!R^Uw8t^+Yw
 60.3352 zm7e^~OchN_OUs4DB(qj!zA@mIP-J9ejiruo+p_7bnwl>RkrE%bx3^VCh+|`fGIQKc
 60.3353 zPEPnB-<le}yhJbhnB3d3#+w*h)<<ZTV}&IAwzG9WFD@)B*u(o!Hrk~|k_Ea&G+>2#
 60.3354 z#IOIj_e4xx<upQK^cH7icvxv_m~upbbl{5L!p*IEB(z#8qtw0gH_%OeD$kHcoDtta
 60.3355 zl9G}I9;Z76y2bkM)_}~;0LGxk;1Z~_QesX*EDb8Ww_pGTrKF?+R##TS`g?mnH8`#-
 60.3356 zwzP#jOzrOO{-Oz%tBR5mJ0-xN0wCRb1XbXpKj5Hcli7^BLrdOt%s$0MQ$<jgo7)A8
 60.3357 z^J(nm-8+a5zFG3LABAtP4vW8k|1LCkQtDX@y%T|0SXg)=5ic)6lD{QtJxPF8i<O{S
 60.3358 z87O|!ft@-(uP>>r{Q1h@vj3zW5UWdWZthyFT+SWXnh5y-SigGz9x)5Jt}`ItP4)Ej
 60.3359 z9OA1DS_8zm5)00Or><uj)7!KrCKYh~)x)uj^VRYxm9N_d3lj7-J>5^595?@ldF|Mp
 60.3360 zGQsLvpdvm#-Weh<udH;=>31K8r4TmkQIE)SiV>`l|2ZmQ>@;G7OOv!62m(oZAKf2+
 60.3361 zDmZC$RJA6jW@&GsRToUsH#((E3536wd=M!>XRvW_)L=o%z2;a`2n?WP`ry&Kckfm>
 60.3362 zV`e>e>)n~-^588Dw|Dy=KceM{bn3H;czEz946G^zhlIfIa4ctj|32=dW^DMl6qv2j
 60.3363 z48@%DhL)2cPhMVLY=TQ{*Qs5-I06z9EGw=l3)G;Oi>XmjY=;-en<YR)E?HPuh@tsE
 60.3364 z=LQ0(ysFCf^ze`YsK0?k0k?yZ1a{LKT>#dm9yW;Y^ruUWUuP_P;9OkG#<Pl=n3|fV
 60.3365 zsKzHIT4H~!w3=9aO&N&^6nB&g`D8MPr9e2nhBR}mH2^Cb>1s~7Dn9<v;e9GB6r^WQ
 60.3366 zpSB@DUxD}i3?`(`aee4wwqMv~N4vz>>7lQaugTC9&pPm&l5y)_6mveqmZ26{bk7V$
 60.3367 z$ylij<(_T<0O{958LusYeqRPdx-u|5#Z%{XSvf*zRk?%*=>v&7n|VC*)9_h>Y?c<&
 60.3368 zXO>8b&dQFT9UUPM1j4iC!yB9_fVHzu=NKPRu!eo04yY*{Y2u%xgd<lT9-jCYSk%!u
 60.3369 zf?gMnVU3NAljW>cL4dYYRaJ*xym+C~czu!x7bXpno^lmP842YM6=R1W_-1+w`1r-s
 60.3370 zSr3*Lu+D6%38F$mLTnCK`r2SJSJKds#6d?_1fianqXI<99#E1c?q5iuCR8#{`EsXC
 60.3371 z)jYcwwD@0ad%-YK@bf3KdtDsK`W8NT23KzgMDuZ)nsZxCu2Iu<dzGn7pOEPTSW2mA
 60.3372 zEE)k)XC&w}I<+tP@q=e10E<Wy2#lmQLpu1c)&<&5qte-vx>I2c_|;+^g0Aq8kozyi
 60.3373 z#kKscDJUqUdd3938maK^&blsz<|gyI1OSl`6Ejg&Ss4YV1TMhoKuwj_Q^7S_OWmr5
 60.3374 zhTrzu9_oFXZS-k$1zlT4KtMPE=GftDDOgqQu%hfda;*RK2@@5>zh0S%3{PU;X#IXW
 60.3375 z(N#lXvq@P6@YLvbw%s$$eyBZGr|STjv+C;VUT6Q*XFbBk#=eNAk(&+r^yv==2Z!DB
 60.3376 z=g;#q6TC0hvqpgWID}usUjl*a2GxhRe)&R}$C<~N#kKP1PjTbfVu%6oNINAZCGP>L
 60.3377 zx&y5r@fb5eCH`q#Ppz^ZT*uK5&I<?Ji%&*ot73dw?DY<JgCs!1PmKoRXs&0)_~*p{
 60.3378 zg+Oc)dkip5^f6L~Ha3NVkO=r$1+CqUw{b;6LK+zy94z3rnPx5G{|thf2_OA2%(M@6
 60.3379 zU7NKf-*`kfxb81%4yS_O7|$NDxVyZ(Y&GRvcYQJ?Bb5;)K^+|mLGWen%1iki<@&0s
 60.3380 zs%b#PeG7KwKt22hqh<;fqn9zJZlOT(nws5gGx2#N7J1g%%wyWkhcs0)^UKS|#bsqr
 60.3381 z*b=0_DbxFdu3pF_upvuOMTLo_(`jjGsUW@+*;!qsc@Xr{JwuT<Nt!wuzN)cd+i;#a
 60.3382 z?L4V&3n!|5lc%*p3T0N&fN)N)z4w|?kF(@bPjd6~%g4+(z5_Yk(X(vd-9hG~ebmpt
 60.3383 zd&Jv@3+WGjd$kRCAXnJyqI~z;tB`Ni+J)_XeKPwywY#H8kR1<kD=;X^SEE|Cp`1Y4
 60.3384 zr;CT9z?&!(0Lr5B^Yb?u33~KB`lqUF*}<yNXbr?s<Kp1>^#C2&Uz(ao+RK!G<o?&w
 60.3385 zw?iZe(k2zc(Otjc<iER6Q**PZ50HLI+_SDvtbhhqHK0hA<@Ub4K0S{O$v@@7uB~Qv
 60.3386 zI^Gz0*LZtVE3TpvLlV+9v@=yzq~HGOG5pZ4n*<eJR9sx#<iVq<<KCUBvAx9*mQe-T
 60.3387 z&&=2VHwd(-A!)KTv42uhZ!9e=zBQgqS}tLtAT<vR$er9=?#|8Bxj7_T+Z`;03(sma
 60.3388 zc)F=OJ6D39gwQiG=0BmM%UL^LO?{}jqo%4FdonC1T%989GrQd$N>m6OiDl_Dyj8+=
 60.3389 z^g9-WBIlQz-qpj$m?$qEl9Dn9hlLS5rKU#Dl1UsD%^I%Nq3OZ<@7bs(7>yfNV2cZT
 60.3390 zIy>!h^7H?M5pfq@|4Mt&c5PlOP5q{G**-v<*_0k19dwud5g_(FpdJ)dRN9PKAK?-b
 60.3391 zq62;Wes9n2jk<b#Fu;OGm;vvb^=Z`^V;8;sW8TYVSwip?emY7@L-g>DLw&Y{NqF~d
 60.3392 zcecLPYWl}p)fgchLm-3^;Zp}-xCGZ7YnT}srAzgj5k;k?Kb6;BlO0_evn2!&aoZRT
 60.3393 zzz=IlWl#d^6bxT&JLzQ~_(+=R1>%N&5&*_t?QX-NxrK!xT!(CKWMo93!2W+blb)(h
 60.3394 zXlQ8IfODtk_g%M8|5|4kKsSoFKkv&q0=+rO#K}3r#KWV$xV2?vGXS)p^7{I^+YAZ6
 60.3395 zaW{UBIX$z;?h-3Ky_CA1o~=r9h0pDcJi7lky<&Y)FQC&B!1^PA^!t-|LjeF%%cU?n
 60.3396 zIXS8HCvu0M0?Cc6E_82b$Yst;?Skh5k>Yo4gQfDIh&u_?fZ`ho{n~ECzxOu-E^5&1
 60.3397 z%IWJAEB^115rqWl%w{%eS7HFo@5IuN9}5ZE{3kE5@cpXjqfoK;^0Y=9j(jy>@&LvJ
 60.3398 zNM#sKr=oQJGULGPL9V%b=Y8b!v}`cS@4<Qo2=>0qh<@Cva-GcBcC76C@H$+2=`jI8
 60.3399 z=33zwwBs#<%N>P|u2jy3!^1-jAf3uAt*x1q$Z>xGG~tYljEox7^$6VsmUVmcY-Pm+
 60.3400 zJ?JId3I3JSs>0=B<2^V9@|U%U-$M}piTu-AXx{vgCr^|0-^<(^h^>sjNh&mDs`XUb
 60.3401 z<Z1CSmDHVtv%gt#5Y||$zsgWl;UJU&(Hi5(r_*J`_CT6iscXRw--=7i{E~zB!>>7_
 60.3402 z0F7*J;84ANAQ4>X4kDC!_V<plGHdU}Zu;0}5a59{W%_k=|MzL~w2$axx`|bDMl1rF
 60.3403 z^^57JD1aFt49)yLXeJd>ECoJ427GX{VTtl1Rf-Rce~*O^9Z?%?5#~9dItZdc`S(P6
 60.3404 z%~m>VI1*U)8GL2B7^#cvh+ywqvH;nvGWV$YTif0KrEj^Xx9=KF1j~w_<o!rPl=?V!
 60.3405 zeep`_X~`?4OXHPe=js?$-NV>Srpyd(rXn4sO_SM|1w<x<8kOUm721djcRt)P!i`k<
 60.3406 zU|<@{KD8U3z@Gd#fOC3opkqnEq<<q}A!)JB)klb|@Gf~Pt7eAc#M<Vj79gMsbpPjh
 60.3407 z%Jdad8Hzou(t$Enps^AC-@5Y?Qy~#-2*cM*-iZKizYV2wg45=&&11Y!u_wc39Bf(=
 60.3408 zPlq>;Pl|($HL3^A93Lgik>jcZVZ#t3<pe08hxJpK!6Oni6=RIN?A&17p`~oLkn%wK
 60.3409 zG8=CKs0ir{v1tyfb9o~d_;>4PS{jgneBKC~wnQ6Ft`$YhCu5BShhgEuZ&LIz8-MJp
 60.3410 z+oz_q`jA!ZtF?g=cLa^5!3$ao&w(384>#<LR0Pvk0?Ht<dJPY^y^g%`XvLcn^*g|B
 60.3411 zEvP6y<4cxpFJ)}S$xTYUMrb@%cnVsnn4>(v`bm~LdL4X07)EaPw_sd*_VjMXAyV`*
 60.3412 z8<J~;B%}ybastTX#Xtbu$~!JL@c>RDfHn0#_#-(0q(zaQ&-F-ITAHY)uI`Nz&B=pF
 60.3413 zMEZ6WiMCS4VO0s>BYMGi*lwmvb;y90(?oY|jVLST{C2e#I^Q+rAiVeB!Ld&wx9yEn
 60.3414 z_h&k+##QyUwl+mDyo7v?*_B!S;nP>{2ZWT|Ea+tt9@z;C1?i8P^dQf>^Ii~!&Dz92
 60.3415 z17`p~GXUSmZ2J5ee-1c8mSkC)*q-Hp&d$yY$!KbwWFaqi9c$}?K(X}5bw@t2qA~VL
 60.3416 z-(Ulc*k_M0F?&kc0G(~P*fD=E<vh3CKRC#(Kvr?r;*8NvlV3Apn{c}IGm(-CzT7No
 60.3417 z6j}o=iTR6wo4sF~Ve@LL&nyEQTdDEduQbg_iQg8f-@Z|<G`&M=sIIQw0TR;ga^4Te
 60.3418 z9yr<xNS}ic`TYER7A^@?v~%a4&v}ntfRTxbdyX=_9B3{ukfSPUYGlq%qy!<zZf<S|
 60.3419 zy}i;^pf4Gk1+k-JV<AL@gjDv`(?@~AS7~q8hcYtQ5_)yhMt}dNl9rX-IR><MLQhL;
 60.3420 z2ke;I)wZn<gLa8wo6IoZH!v}O*4NE9y55)=8PT5Z%xtD6B&<8_FTUcA?xOku1pa;s
 60.3421 zPi2=;3()MSBV%KKE6t-qKyj#YadHL$f2idS_?zCdK6XrA4Uj?*8ynknX<6Bf)a%#A
 60.3422 z$H&J}0RbpMvRU_0P*65*FUA^UJAVG;xSsVwqevDv7%f<4fGiQ}P`;8j9T0i&{T1<5
 60.3423 zEFo=_zbq<-e*XM9Up4D)sc&qYfeC>KbnA+GdJH_++DvWLxEY80qtJF;#vXJ<MMdH;
 60.3424 z3W5+U?M7uA8yhUlR&8r@^JlvC?jvv>jXU#qd(!QqZ{MCTf}R3t$erJq>vef@PEAdH
 60.3425 za=xCG`d&TuK|K)uZqVN0fUt+a$@rTk_@shJEQ~k@*y!eEx5E_`j60(NWMF>$2H;E0
 60.3426 z@A*d`>Uk>MfBe`j!RLzIwBOa`I0=x_pH$C-E)hsVT3UeJpyflr`fygbw4~(QR91uM
 60.3427 z_w}*n;FQ0p<m7F)g%)I%0@WVDLv;ZG0rhHao2V`$>aqz&2^pDVt#UJk>Ith#4sLD?
 60.3428 zwF1ot@KaUq7<(q8p9L651Ce~JBRIArB_Z($z9|^+Duh7AZZ4}VJ3IUC<HwI_bo@nh
 60.3429 z6m)c$nCa*YOnT#=)#T^*hBh(_2{mk;5)(o63=B_+xUAM{0i8xHE*hSi4`;^MZR!HK
 60.3430 zM?oW-gmy<Cv{|mF+<dqjPB@K1Ktfr2m(mzes9jA-$H@4(;vxC|Zmmk5>hbH>uMc^B
 60.3431 zZt6_k+^X>^Rb?<+<EN*m)j=D<3XY12dAhf^#|kEq!^t$YKSh}0=RJRos+1T2`iw~W
 60.3432 zQ1N1W3ijVCK?SX59Kq$9OzFex-z!(Vz>-t+MvfUY`&`P{6E962)Mj|^3OMX+pm51r
 60.3433 zfuOS+5IpU)icx05Z2diXkugLj;3|IuR-U`KxcHd$^bdvQX*YL8#i+TBk-SzF`k1j0
 60.3434 zmWKFRASNl*R;$ehzX8W=aB(y&=O9CUpPrunJ1}Y`YR2Xqga+>JHB&&ZeAX;b{j<Go
 60.3435 zjfRP7<mcx%F<b9Z2Aonr<$GKxJ16H})x!^r>c!+&>ES|zy?v-CC>E5Il#Wm_SR0}c
 60.3436 zT(0y>(0v+J;ITb~4tv?3L`6q4obJx0GU1|q9bW%%wFId0ZjzCy>1Dawd+Vgb;0FvS
 60.3437 zNKL&7>@33jKkutRtZoN?@>T~@)$9#Mfpzh!ZVDN$b=h5c|Ni|Fx_^r?51jma16*ls
 60.3438 zkK6gt`ta);xRCkA!or|UcJ`pz2dyd_EGbFJeL5y470}n$78V=pC*CO5VD=p0^kUS%
 60.3439 z;<gn>n9)vGPfd*mM1+#6np*AEW5Q6ee4W}#J!NI(!+edh-`m$(NGO=`zlVkve<i7a
 60.3440 z71409k*7qWBEZSP@e$0mbRqpBWSKFBgd@Ou(jCKqZlhskWyPdlV1EVX;|f6^Ady>4
 60.3441 zOiU>-45*&K2_j(=^Vn?w(_ypKWtq)?I+H1r*pm3=3vol@@#dH*lU_qzUqn&frFMu%
 60.3442 zVgx@jh?mSZhzin0{)O7)30)Ami~WTNZr?#Od;rxss(Hpo?)9IIHRvA714*7!;FkJZ
 60.3443 zpOqEGPjo}z8<{vGK^b1qhZqSecmL;uU`BPGL`tY@u?q`BqSKXNMmfQ%xBZg0RChe8
 60.3444 z1(z?`bh<b)hxf-H@(8arp06Yt0BM5(0nLh+5)mQa#hJV~yzcls=%pbFToF)1U0r?p
 60.3445 z>ike8j#)=BSDF5FXh<;wMC+Y9cg#FJJ;x6Y>|ecjfz-Nv3wmrKaC>$5z}m~U2n?bK
 60.3446 zSn!j;lB6Bh)O(y>9QZLpkNBOfu=EScdF}s5utH~-mz%(ay555tt`1(OPL!F31M{VK
 60.3447 zzBN%c;$A;X@ewzq?Zm|Mc^WRn7#bQnR2n}-ngKyX2=HBiQZ`8miH|Q-G__VhRBd%e
 60.3448 zK54$bJhh#!upD!<IS1hu+|$#ujnD$`_S&EA88j+o$s*hJ0CPSzq#A(?0T*95Vo~9i
 60.3449 zl9D2pqiiAMagwhFu&t5eMF58rz7Yakz*hS0+Y(eC4Pe=*SXqDFOh{AT&&|stiG3Rt
 60.3450 z6?FyQy*L_C(=&FU=;xmEyuU@?+YKC0nL6Wp;Qa4G$%hv}@h=nE*4=xGkIppbbvnZW
 60.3451 z+F)IlYX#gQeMlQ34h~Lwvp#O!?aifMVq#)jvUyDw2<_GYtPoze10#CjPYYC3RG3Ss
 60.3452 z8W1CZt0Dwn_#UoTpGg@mw9=of#cBBSBSHG$$N2d8X8<myb%1TB6LiCJT5W)jf!Xo!
 60.3453 z@WhBPQ7&Z!0E9X-<kZv*RQ#yATdgD??_^mDxuS^N_2ovuMA>77F2eslD`KOeT_#ko
 60.3454 z%Tj@?gvb1~6j@18i?vNgT5I96JS~SL6<+;IN`nl=9Nipct_k`afPz0Fqy|_q^W<rd
 60.3455 zwnH~)2tv+r{-B|unLQx4;~)%0gUU4v{s1Sa3%7o0w4%Hm4L}tQ_dsdB8L(_G!b$j@
 60.3456 zN6&dcBvS!qgX96ABS6ghH6UVp;1@ujd7jw?`exSDXeLEQE>ybiFV@a_9`>be3+^#%
 60.3457 zRc;;l;Rx}-RcQO<gs+bt*Z=|g6MlV8g;wz9Y{}S{lXf9iMOnGC`n1fXFE^Rz?P82=
 60.3458 z<MpV|$<~BLf$EeAE=7zKQ(9VD=&M(+Qh+iEj);iB_KOCMx<kxsPo+*B{TSZtExYoi
 60.3459 zqowV{#m6_oVgD?Z;Wk_6W_-mOa=Tm0W<K=29mp$A`$NmI!dGzo)YR0dChygj0-T%{
 60.3460 zzFwDGI_v4~>B-Qx1DcW5da`^CxSX#2rH<j`(?-|*Z*`fO0SFKnazx+YV07*nsi#B&
 60.3461 zuEnj#s#;nMmGzam%80)C`Hb8UYhvGfnp97FS6$uN{Yu1Yr_E8F#R1!iQsZLPyqID}
 60.3462 zh6t&QZEsUiQPF^|Xd1Qpy%vlG&{^l^ucCfiKH76&9oosthOziuF0=;bwYIc4LU!i|
 60.3463 z#+Odt6?6VP5&L9zFQjc84Bk1s^{oWHd?Uv)yY_Tuy4t}~*KPTMjHF}`f0Zs}Wcg*X
 60.3464 zqf@HoTig5gSzlQ<M=P;M2eEE3$Wfapq12gQ?36Hgz2l4@0v;h*))Xh}tod`Ze#D+1
 60.3465 zUHTv`Ct)ZvSwDj1oDyYZr+!|FVT_b<G*h-A7@HK2m@cDyZRRn4?%hpEKmo2tYYI3q
 60.3466 zQW=2q^+6+_3JK{7TKvu?C{VS;8H2CvlX=G<!&>HxG<6^<eEA=Bd!j6BEQ!~_;;cs_
 60.3467 z_JKW4^E46*4JG9_^Q*J{f?UC?tE*4@`}@Zf6cmKq+*Qt(iiBXScYvss^*LJz6es1e
 60.3468 zBiA2D5#-(3*;xTNak?P<5owefz5|kv3?D6f6sxJIJYBUNE7EI>eI3V4_ipaFAhz0e
 60.3469 z%VTbvq?+vP&O@Le*`VzJ4eIE-wsrgMxR5%KInD9U-e^uvkru1%j6V)-XRhd>r=yER
 60.3470 z5-~T=$!DLMdj5&}#zjp*fr5nB-UtJ-nysro1(bM68zU7*a;DedslgoGCEa9eKmcji
 60.3471 zI0h{QYE)EId;?M80s*hYoVpxF%xj1f30Qs_zS5rtE1Dt_FBA||*#!kL2u=PN4~-NQ
 60.3472 z6iC8wtKW2lUBR-3h}%ZH7a$nBX>Ytj9sr%qu_7FoS?8VU>XS@o_~!oR8vNAj=2~Ix
 60.3473 z&Jd!AsOY=8tirUNSr?Jb%}#w*M^_Rj<Npx_Rb)+e5E;@qmZkrwp?u6=ujn2|?27~0
 60.3474 zPUYeF>O$_u#>QB0b7P|b{pNHT;b}1v#NoUJQP62Q+R?pyK#-%{ZNKnYnVxezHwyp@
 60.3475 zP>cPQYP?SM+cUK;O+cKW+8qM9pFOsDC>BaM(&7Wj$;r8_C0(5DFX<MBRe7Et)SC1s
 60.3476 zxqUKtbZKg&q1uUT-=F3$O>N1ZJyqjmDQ{wuIRI-u$0J@?$G}f9J`!|yv;rLB<LKx(
 60.3477 z0~QTZQdJ_agURDDaXABnwEAyiK)Rki5CGgY3L5W*0QlIdEEfgZX}H{(1g#3hCgRF(
 60.3478 z)!zUL37wIN$q5N^ad8PmJ-42!gfrs&8ykf;cXtPbfYctrY*iN!6eRhQ{D6SK{bxtV
 60.3479 zZCXi*0%fE`FPw~%@j8y679AV<T3)VfGc_<X;;v?BXqXESun(tfOQsb-$p{Xlsj2xL
 60.3480 zOw3S&*CpQv&5Vo;bRa_E!{MzldGPBJz#-UyY4T7|h`b!hQ!_4hqAyg<(^3f~5%!*b
 60.3481 z1H$_HA*1?NDJiLqxuGFSN#K}nfiF;niyG9_AF|NWM!Y?RD>u#X-#0;M`od|+{16}i
 60.3482 zM;};DSJ?{bxjo(8pJn?nnpr>X=VYbi-pL>FQBhGjIo7sAgTQLtT3BcX`s%g&2I0nz
 60.3483 z7b+x`F|^?Bu@uUUQlwFa;$E-227JjQE-Q6Ehg&V3iB-*+sSne4X?tq~@e$*p`BzXL
 60.3484 zf;4h*Gncu|yc@h}^=E|wn!nrhu+d-f$}YFSO%M7MvV;JEAeRPeXSszgK{|5*RY{w?
 60.3485 z4Oy8j;ZuFAijrVKPL8A*2JRL-LGXiNF<7Jm>O=$tnakX7mr(D)DTfBCVq#)>kz*?Z
 60.3486 zsYO!K(!}u*5v)gL143n|NNuJ05gx9#W@dKTvj9w)8yj~UF8e)z9UGLClr%k)X_y2~
 60.3487 zD5tNl?|OZ}=jM=gs?#3(r(p?f*iP>K2@Ve4qWCajMSxF0&>etHk_#k8mk|z&pnw2z
 60.3488 z3zgakJrEif09?6T9K(Rh*&V1aDk^e0WB!tu_^Q@<8(k%Dgbn%_8hZVVgF~5&fM5mp
 60.3489 zr*^%&iudBrAUM<sATYm1z;g(AU!5J=rInT{B0wM<b^y{?JK6WU0DYmdJ6q5HIgy2d
 60.3490 zAsRsh1Uw}TO$VG<1lMyU1>cFIS!NR2n(g`E!GnX3A3st<^QRBm{4*OG8fxAlp>nl%
 60.3491 zbf{$mfd@p&IX^c$An<r$pPOP}Z~{O`>#R*x6|Gc^>4u>AHr`(E4nBMKtmE=@cej)c
 60.3492 z6H=y+xi<CKndWtY)cCJ{ae16<@%jKslAY>vb1uBc(8Gfxcq9*RX5NJk4i5fYNzpO$
 60.3493 z{E6=~LHOk`ChxM#522x>4<!M~-rxfw)Hg0JP8TR~2M33YKx~qYdZVr=#Ty@_n$m%a
 60.3494 zIv`+X6ylvOS&`0YeCwfEls%MulGY-mVkBn1Kq}a4F-ZoWv}RSV)I(@G#Nor3U$I3B
 60.3495 zth-&l6ghn<LXda3y*}OD9F%j3PGC2c{SA=z#aRznK)>Y#kCkKcw$J-8iHL|2fE}g#
 60.3496 zmY&Y(yD9YrfJ0tKIGNt*pJ=%-bZqR=>rK7e8Z`KB%8mTY`1l$wHjm3EEOqfPkFAmp
 60.3497 zF&6C~@*{(2&ixmsy94cQ|EIb$e~0>e|M*K%Dq9N4mK0^rGL>aUR3xNqW2bjyCu2+q
 60.3498 zgDfQ^S;`WTVwj=q@ire~B3WXF#1O++s)?~DzUNin&mZx5{V>;D*PQD$=bY=@_x*gF
 60.3499 z<vwkWx<JhlROi94RG38R5U5`9E<m3<cgNapPFo_8NWOD-F%|?6U~2mc4Yf5E0*`}V
 60.3500 zGg4Ds{Sh|y_VYg_lpPzY?f}l10;E#+wytidslMKJCj^}O;R17yuhIJ<qsy1I+pWYZ
 60.3501 z6%_!yd9rP10I39$hZ!soz&qhtYxKF5UIYG;w(FH0fJ7nh{&Ub!m8S)q!kt$1^5wJ8
 60.3502 z-^+u)e1|GrjT{^t9DRJsno@|RrSj{*_UG_4D_>7fPt-!Tbp$AeRCn+CNg@z1-1^pK
 60.3503 z=u`Rm`DBGtrxti10F3$Yba`u+`<wil8tY)t)hY0)ztU?ZL84g)g@isEycijA;J5iw
 60.3504 z#e8xzuYR#pfpjRhRS`5I<a_m?av&Sty+3GfYx~3?tBuQ17t4!X{g)Hp+iM>GEDYer
 60.3505 z=hd;u$mDF&t5*-#Ha4^@uftI&97G}QLe=>d3mz9fyb?s?Tsw^)<nY<`lLL=1RR6=@
 60.3506 zSm_u|^kQ`Nwa$IC-j1}|kr3U;N43bJ+&#4IK{n?r{W`wF9HzGB^O0OxY3Tw*8JSil
 60.3507 z=)#q0Y`5v?T98(5D{Ig&S$tu-MKS4O{~V6h(4e)T-lKy#E+@xqX-^W9L1zfTSKU7c
 60.3508 ziaz1|(ZugreEf}oTKFhHJU-N28;|)%GIXXu?MFc)Az4D3_95hn-jM)qX`k&H1N?Qu
 60.3509 zKq(h2^i+uVs6&<ih^>FIvbG-P<Vm_H17EW@mLzuC9T(&z6~1)UKLTULl$RvaeN6e_
 60.3510 z+%wl9mqYD>hYk&0yL$C&yDx=Ad}RD0V|;uZK?)(N2SaDDbB_&gwkU$&#0IbSj#!_{
 60.3511 zgrF1h@`1l55>@V`J$keYzT{Mn!)1Ann%Upq-z01L^dK9iIppdHCLQ?he1M=p6YU~z
 60.3512 zG}W%MOmelVlU)xTKy?9Oo90VzJga{+H4Dyg-)x$V;8g?!&WsNM4;_q?1Z2>Rx$L0N
 60.3513 z;}pU%PW(O*<)E`&#-^rN0*T~r)g~$;V)GyW*B)ZAeaU0T;CsuB%dHhw78li41~dmo
 60.3514 zfAK+aJfaik%To>oOb}Q)k%N<TSw`>$SK4<4E?RN?0jQD3MG0@i@r|QGf?Oho^ZH}|
 60.3515 zrco=c#mOzN5ZT{8&$xc?s>?f_e)eOnkeOzS*4(LC=@gyC1g%r2DwCz)>*BM9hv^|Z
 60.3516 zYpSX={Gq8DZ242?Tj7jGcDJ?&+!<q$+rJYS3<eSimo8n)?2pN@8k=*k3Jp_2yYh6y
 60.3517 zx`2Hp*7|(DHk8|gwy}{jzI>UDaYBYHGK`tswA>gSBKt>N+^#<0`FFqvc>5t$_pU5=
 60.3518 z;L*bYHFH9<v$Mz%B*BLCLr(Bs7jQbhwfu6>`>w7fMo(r&hI~%#XJDlX)&!w1$i(04
 60.3519 zvKksyPo&^f^Iy{yY>wHLTcZIq5ebAeo<pj7l%xtu2{4TSsucv^*US&4OXMm*@M6^w
 60.3520 z;AZ}ualHemu+czY-%i#n$AjM;o~!VqmDy$hpy2iN^AqM5RVxBcf;)71&JD7|1py5q
 60.3521 z(IOS+s+gLZik+I8T47zE>P(M`)h{@H<_sE6WOD(HMq2=<VKw$|cy(J_+kGG@3?VY$
 60.3522 zj4-&x!+@t4+RwC6it<1td3$*YHoSd{Yq%5u0@_2iT9lrPZBuCV{pPOviMcr{L9MWl
 60.3523 zyAu82-Me>m;NGea$eMVlJu#WN2h)fIbl%WVd#8o_8&OS7&FdL%Tv#mjI-GrTHYgg#
 60.3524 zu!Ob=WfrEK<*V;^^Pv0amf29T2NcQq^AKK+V{@;I96lT}_8<BT3yi^(9r*afj<nS|
 60.3525 zdVAPbjl}P*qL_bvTJH9q(paUReN~FHqm`Itb}Ua$PfrUtolNgUv??+?%euNuST!^b
 60.3526 zJc*=YlN1BuVC2ooiHVE1(sdm$a>N*{84&f2K*u$B_7@}VYyBiPKV4RtYTDYE&&*93
 60.3527 zwf&HxBv#btkz@F%s?7FHF*)SR!-oPNK_FUVK8Ns*Z-cq+#>Q&GIYfEUgsXYsE1z3x
 60.3528 z$0D=^p+z>kiRjcMAF)ie*&VUDKq&yg`SF&O1fvXaM*(LrQAGg`0vI?O>n};IpcASH
 60.3529 zM9m^l$LAc}grNZ{_3Tax7_@mackZB2sPAowB9RmE2p}W*eqmp9j6ObTaTo+aVvbIT
 60.3530 zTE&YO7j{7WsLhI2*6`6(ZumUx%Ad15a|F^wc6Tfn6z3`~$QPkUfx!np5Gm=R_Qc%D
 60.3531 zN!irYbon<>M;Mxw97{Nn3l<0;ld9^#z=rpeJsorkE5F+;figM;cy?gGa`mJ|ah3L`
 60.3532 zV=v3fOkRUR=FF)Ba%N@X;I#&I2P7qb{2V*;=Ch(@iRJ5r1nyDL7h;>;+AId7i~AcH
 60.3533 zIy;TyW$yzc4VOZpnvvZU`}#l-LHO-#R_bZ12<ck&y>EVqGa*H&VkgZ#;R?r^2p$LJ
 60.3534 z#Ayx~$1P|2!b;O!de^vn_Q--gnIZqc%X@-`8;N;?9e;e0J^<yvZ&PFH-A7%?Wz*d^
 60.3535 zfB%+{$Bm4P4Ewmxj5t4xkB@I^_1!Xx&lw+g`4#%a#Qp4@wSbM5*nO>OX=%T1hlU>Z
 60.3536 z{UFhj1pN9~Z*T7z0Km6@eXs3lTKaU^&2ih(8u-Z9SCH%P+_)DgsI5vX%J4p6#S^2=
 60.3537 zk&!6Bt(m?;4)CN=y)@aMZ$5jmQ0rJ9I5h=a5nVpLGtteqj~vA*S6x+Qw6%~D$$%5v
 60.3538 z*fT-p6dfCHFXY472w~QcPd9EYHqCxLF*!NEvGQH)-SWAj!Few5l<S`W1EIXRxw(6A
 60.3539 z(8gcmFqc>L)Ai|W|2xy&x!$a>l7fQ&d}UhN*_8$%&BAEq_Bd$-0s-OSMFVT1gDs;m
 60.3540 zN$&_bUMd1DASp?I4FJsbV&T;Rk~2yPx*Zlauj2f#5B~zsE(1cuW6AKPzS5i=@t(!S
 60.3541 zz*(Sinn0DT`)D4qJE9<X=Bmx@Lk2H115O(L?rfKrr{}G;5zslE-Ep=(sO>v-1igWJ
 60.3542 z`F+qX-or&wr~O8#utddtn3$MoFQIyc+_-T=LL^~_F6Qr$7#J9^mXS7oam~WW$S5%-
 60.3543 zC51jZI%@9htWvGn-!wuEFE)8H@l$=iBP{#j7l~L~T%J2RThwp2ssMTWjVWuWSO?nX
 60.3544 z4B#f8>h(wf(WK$xF3NaEdD7qtZJ{=`0HaZ{%XqVQ_IaY)rd}s?5n-@5kogn{Nh;`}
 60.3545 zR!}4PD>-NOk2{pKo%W|UP5|CsFR_$QfmN2z*uSI5Yfm#XMdl|b3s>3feo%B_4p@&<
 60.3546 z2kSC-1rp5~s+8G|;YZfx10pB;r)vT4S0^YWL=9MEbif<)OhLoTBPQ<2IRu{{vjtE|
 60.3547 z51lXn#%kV19yxt_(0iO5WjaYou~D(BdOu~bG*Dsz&#z{!1A|m|DC|oBdUQ-&O3Jx9
 60.3548 z;A@K-Gj;Lc-q>|esHDHxRIH$X_IztRKPemGYq$JBRNYHEETZsY(lvIB1azC#w0iWI
 60.3549 z;5|<eC^A92a-;+WuS0lvQ6=#Afm~FileBQ65*Vx>;j9Ie_V!Y#+v8EgKw9I@oDghP
 60.3550 z6($d#H!Cndw3e=wd&;%tZZRP7OhAk3V7S+f&}T3zjX(9*^UuX-XybnHh^o7rs6(I%
 60.3551 z#e8@&g<=@FG}Gr|6JFKU-j0w&Md(OCff&rF?3KI`KgxKbh>Eg`vU0|+_4UdW<c3GO
 60.3552 zet`$|j``74v=2!ZNFD>g5HFtz0pZlwNha(42Am|KnAY(CM6)D#R`9{Sd!B*S;n%Kx
 60.3553 zs$XX_4U3D5H`dqJXOGIr%pVXG43rFE?2qs1JMafm$XcC64$7x5UbsMo_qZUGmCeFI
 60.3554 z&(J>Hc#R<4BYp#tfpr%eoQ5UJ;4MeldW)sqs+@W{__wa#9jy7i$LyPjiY@Z_7<;4{
 60.3555 z!P1=h-`WSRa#KIYOL5|5(cAAQ=Bk_Ah(NWpas~R@DrWfmEuD4X4_p1QoU7@bu>r)9
 60.3556 zUteFJ(s$jiM|o+fsRck7KHGkAIrCt8db*mFl+>Tx(eM`k3ob6>nxa*BH`{Z*zU4zb
 60.3557 zJw4+iA*;(p{j)o%RO%x<9*V(Ws=Nyt8tlr<PjvYv1slCzmKESG9-YA)f!CQ66nM%c
 60.3558 zC=|}R-Q)nYl$jzF=*nC3$<?<Zi*xQvjDUXVQwV>MhEja*%A0!VOBk`k5f^>pxc`{-
 60.3559 zN9$qNxa!3cE}CkIdX$ABY2Y9W;aZ8NzwKk{0av>sBfy;pfA@1b=$_hb4jtkg--aIS
 60.3560 z{%MGg7ua1Exkm-BIn=o$fR1q9=~a4;yFNU@h4;~oH6@oo&68S{rZ<bN3$fVfJ+z7v
 60.3561 zZ41oq`PmfVKWin7;&ZOTv&5|mYaiZtY|*=~HE!ZEWl`1~_<fLNMX<8-^=$FD5ZSvA
 60.3562 zmB&jnw8Rc$WnJbx#Nt!$HIRAc-v?`<ISW=~P33AaLONGp9Qd=(uKpkMtP7!!<nY{(
 60.3563 zE7TG~is^0W%onEZN7V()@5Rg06;4+kxjSNX6dfaOllE?<Gf1@~^maHd<~aFq74Edr
 60.3564 zoX^m^F=A_S+@8PLoE;5Zh3h4ELeU&coV}T=olPvxe5ybV0t=P;lCTwVE?6@Q-3WrE
 60.3565 zM{p=9s+y#t@3&LB?DxleuDlV)%vjpmDpN`<k6$&>FIQS#trQcN2m_)U!Lp7bgE(1q
 60.3566 zVBV{B^}l~pduH#O_aCD<1YELr<kDB8t5cNy7Nayb=emBX38Oicl*+7}h>{O&>4eIp
 60.3567 z4wo>^1zBdu)(t;qdbXk&yZeKZSsKC3!JHC_b)s4A5Fz<09UvbL<{r+vYsQKN)p#mW
 60.3568 ze;ZrfMb)}0M!6NCGHv>NY=KVQT)q*vtfff~Rl;dtgWq<G$GnZy+FSTaRQzwH7`Q^!
 60.3569 z#F0)N7v5T(g)cJ>e!h*FleN>Ax=pi+8f_{QFYTaIL`y~Y>IO~Tl0JgcV8q`i(iX-r
 60.3570 zQOCEN*mrKyaaGCtp02UJ*wfN|lWKa-|9^t)THR0qImYUK@~QDT6RxZFLYKNfd?5r*
 60.3571 zT+y4qe{$<Jan7XL<|d)N4*#Out15Zg(W>^Wip+oWdjIc!)GKeH_P_qX4scd^2!ZF)
 60.3572 M1+()+eV6F}10)|yfB*mh
 60.3573 
    61.1 new file mode 100644
    61.2 --- /dev/null
    61.3 +++ b/vendor/plugins/restful_authentication/notes/SecurityPatterns.txt
    61.4 @@ -0,0 +1,163 @@
    61.5 +h1. Security from the perspective of a community site.
    61.6 +
    61.7 +Better than anything you'll read below on the subject:
    61.8 +
    61.9 +* "The OWASP Guide to Building Secure Web Applications":http://www.owasp.org/index.php/Category:OWASP_Guide_Project
   61.10 +* "Secure Programming for Linux and Unix HOWTO":http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/web-authentication.html
   61.11 +* "Core Security Patterns":http://www.coresecuritypatterns.com/patterns.htm
   61.12 +* Stephen Downes' article on "Authentication and Identification":http://www.downes.ca/post/12
   61.13 +
   61.14 +h2. Snazzy Diagram
   61.15 +
   61.16 +!http://github.com/technoweenie/restful-authentication/tree/master/notes/SecurityFramework.png?raw=true!:http://github.com/technoweenie/restful-authentication/tree/master/notes/SecurityFramework.png
   61.17 +
   61.18 +(in notes/SecurityFramework.png)
   61.19 +
   61.20 +h2. Terms
   61.21 +
   61.22 +* Identification: Assign this visitor a name and an associated identity
   61.23 +  (picture, website, favorite pokemon, trust metric, security roles).
   61.24 +  
   61.25 +  bq. "Behold. I am not Gandalf the Grey, whom you betrayed, I am Gandalf the White,
   61.26 +  who has returned from death." -- Tolkien
   61.27 +
   61.28 +* Authentication: Verify this visitor matches the claimed identity.
   61.29 +
   61.30 +  bq. "My name is Werner Brandis. My voice is my password. Verify me." -- Sneakers
   61.31 +
   61.32 +* Authorization: Giv