Repository: versatica/OverSIP Branch: master Commit: 8d8dd360be71 Files: 167 Total size: 3.6 MB Directory structure: gitextract_ue3_qfqk/ ├── .gitignore ├── .travis.yml ├── AUTHORS ├── CHANGELOG.md ├── Gemfile ├── LICENSE ├── README.md ├── Rakefile ├── bin/ │ └── oversip ├── create-deb.sh ├── debian/ │ ├── changelog │ ├── compat │ ├── control │ ├── copyright │ ├── oversip.default │ ├── oversip.init │ ├── postrm │ ├── preinst │ └── rules ├── etc/ │ ├── oversip.conf │ ├── proxies.conf │ ├── server.rb │ └── tls/ │ ├── ca/ │ │ └── cacert.pem │ ├── demo-tls.oversip.net.crt │ ├── demo-tls.oversip.net.key │ ├── upgrade-cacert.sh │ └── utils/ │ ├── create-cert.rb │ └── get-sip-identities.rb ├── ext/ │ ├── common/ │ │ ├── c_util.h │ │ └── ruby_c_util.h │ ├── sip_parser/ │ │ ├── common_headers.h │ │ ├── compile_ragel_files.sh │ │ ├── compile_ragel_sip_message_parser.sh │ │ ├── compile_ragel_sip_uri_parser.sh │ │ ├── ext_help.h │ │ ├── extconf.rb │ │ ├── grammar_absolute_uri.rl │ │ ├── grammar_name_addr.rl │ │ ├── grammar_sip_core.rl │ │ ├── grammar_sip_headers.rl │ │ ├── grammar_sip_message.rl │ │ ├── grammar_sip_uri.rl │ │ ├── grammar_tel_uri.rl │ │ ├── sip_message_parser.c │ │ ├── sip_message_parser.rl │ │ ├── sip_parser.h │ │ ├── sip_parser_ruby.c │ │ ├── sip_uri_parser.c │ │ └── sip_uri_parser.rl │ ├── stud/ │ │ └── extconf.rb │ ├── stun/ │ │ ├── ext_help.h │ │ ├── extconf.rb │ │ └── stun_ruby.c │ ├── utils/ │ │ ├── compile_ragel_files.sh │ │ ├── ext_help.h │ │ ├── extconf.rb │ │ ├── grammar_ip.rl │ │ ├── haproxy_protocol.c │ │ ├── haproxy_protocol.h │ │ ├── haproxy_protocol.rl │ │ ├── ip_utils.c │ │ ├── ip_utils.h │ │ ├── ip_utils.rl │ │ ├── outbound_utils.c │ │ ├── outbound_utils.h │ │ ├── outbound_utils.rl │ │ ├── utils_ruby.c │ │ └── utils_ruby.h │ ├── websocket_framing_utils/ │ │ ├── ext_help.h │ │ ├── extconf.rb │ │ ├── ws_framing_utils.h │ │ └── ws_framing_utils_ruby.c │ └── websocket_http_parser/ │ ├── compile_ragel_files.sh │ ├── ext_help.h │ ├── extconf.rb │ ├── grammar_ws_http_core.rl │ ├── grammar_ws_http_headers.rl │ ├── grammar_ws_http_request.rl │ ├── ws_http_parser.c │ ├── ws_http_parser.h │ ├── ws_http_parser.rl │ └── ws_http_parser_ruby.c ├── lib/ │ ├── oversip/ │ │ ├── config.rb │ │ ├── config_validators.rb │ │ ├── default_server.rb │ │ ├── errors.rb │ │ ├── fiber_pool.rb │ │ ├── launcher.rb │ │ ├── logger.rb │ │ ├── modules/ │ │ │ ├── outbound_mangling.rb │ │ │ └── user_assertion.rb │ │ ├── proxies_config.rb │ │ ├── ruby_ext/ │ │ │ └── eventmachine.rb │ │ ├── sip/ │ │ │ ├── client.rb │ │ │ ├── client_transaction.rb │ │ │ ├── constants.rb │ │ │ ├── core.rb │ │ │ ├── launcher.rb │ │ │ ├── listeners/ │ │ │ │ ├── connection.rb │ │ │ │ ├── ipv4_tcp_client.rb │ │ │ │ ├── ipv4_tcp_server.rb │ │ │ │ ├── ipv4_tls_client.rb │ │ │ │ ├── ipv4_tls_server.rb │ │ │ │ ├── ipv4_tls_tunnel_server.rb │ │ │ │ ├── ipv4_udp_server.rb │ │ │ │ ├── ipv6_tcp_client.rb │ │ │ │ ├── ipv6_tcp_server.rb │ │ │ │ ├── ipv6_tls_client.rb │ │ │ │ ├── ipv6_tls_server.rb │ │ │ │ ├── ipv6_tls_tunnel_server.rb │ │ │ │ ├── ipv6_udp_server.rb │ │ │ │ ├── tcp_client.rb │ │ │ │ ├── tcp_connection.rb │ │ │ │ ├── tcp_server.rb │ │ │ │ ├── tls_client.rb │ │ │ │ ├── tls_server.rb │ │ │ │ ├── tls_tunnel_connection.rb │ │ │ │ ├── tls_tunnel_server.rb │ │ │ │ └── udp_connection.rb │ │ │ ├── listeners.rb │ │ │ ├── message.rb │ │ │ ├── message_processor.rb │ │ │ ├── name_addr.rb │ │ │ ├── proxy.rb │ │ │ ├── request.rb │ │ │ ├── response.rb │ │ │ ├── rfc3263.rb │ │ │ ├── server_transaction.rb │ │ │ ├── sip.rb │ │ │ ├── tags.rb │ │ │ ├── timers.rb │ │ │ ├── transport_manager.rb │ │ │ ├── uac.rb │ │ │ ├── uac_request.rb │ │ │ └── uri.rb │ │ ├── syslog.rb │ │ ├── system_callbacks.rb │ │ ├── tls.rb │ │ ├── utils.rb │ │ ├── version.rb │ │ └── websocket/ │ │ ├── constants.rb │ │ ├── http_request.rb │ │ ├── launcher.rb │ │ ├── listeners/ │ │ │ ├── connection.rb │ │ │ ├── ipv4_ws_server.rb │ │ │ ├── ipv4_wss_server.rb │ │ │ ├── ipv4_wss_tunnel_server.rb │ │ │ ├── ipv6_ws_server.rb │ │ │ ├── ipv6_wss_server.rb │ │ │ ├── ipv6_wss_tunnel_server.rb │ │ │ ├── ws_server.rb │ │ │ ├── wss_server.rb │ │ │ └── wss_tunnel_server.rb │ │ ├── listeners.rb │ │ ├── websocket.rb │ │ ├── ws_framing.rb │ │ └── ws_sip_app.rb │ └── oversip.rb ├── oversip.gemspec ├── test/ │ ├── oversip_test_helper.rb │ ├── test_http_parser.rb │ ├── test_name_addr.rb │ ├── test_name_addr_parser.rb │ ├── test_sip_message_parser.rb │ ├── test_sip_uri_parser.rb │ └── test_uri.rb └── thirdparty/ └── stud/ └── NOTES ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ /*.gem /.bundle /.config /test/tmp /tmp /Gemfile.lock *.so *.o *.bundle .DS_Store Makefile mkmf.log /bin/oversip_stud /thirdparty/stud/stud/ /OLD /TODO /NO_GIT ================================================ FILE: .travis.yml ================================================ language: ruby rvm: - 1.9.3 - 2.0.0 - 2.1 - 2.2 - 2.3 - 2.4.0-preview2 before_install: - gem install bundler -v 1.12.6 - sudo apt-get install libev-dev libssl-dev after_script: - rake test ================================================ FILE: AUTHORS ================================================ MAIN AUTHOR =========== - Iñaki Baz Castillo (Github @ibc) CONTRIBUTORS ============ - Jon Bonilla (Github @manwe) Lots of help with packaging for Debian based distributions. The first deployment of OverSIP in production for thousands of clients. - Saúl Ibarra Corretgé (Github @saghul) Testing, ideas, proposals, too many proposals. - José Luis Millán (Github @jmillan) Intensive testing with JsSIP library acting as a SIP Outbound UA with OverSIP. ================================================ FILE: CHANGELOG.md ================================================ CHANGELOG ========= Version 2.0.3 (released in 2016-01-29) -------------------------------------- - Suitable for Debian Jessie and for Ruby >= 1.9.3 and Ruby 2.X.X. Version 2.0.0 (released in 2014-09-24) -------------------------------------- - [(437abd4)](https://github.com/versatica/OverSIP/commit/437abd4c6e389c4add03395e6f33d456d2daa8a9) Remove Posix Message Queue dependency. OverSIP can now run in OSX. Version 1.4.0 (released in 2013-09-15) -------------------------------------- - [(7befa37)](https://github.com/versatica/OverSIP/commit/7befa378d535bb5822dc7260516eaae8158fb9f6) RFC 6228 (199 response) implemented in `Proxy#drop_response(response)`. The method now allows passing the `OverSIP::SIP::Response` instance to drop and, in case it is a [3456]XX response and the received request includes "Supported: 199" then a 199 response is sent upstream. - [(1159607)](https://github.com/versatica/OverSIP/commit/1159607ef524c8bba012fb19f60153d52b7d23f3) New `OverSIP::SIP::Request#ruri=(uri)` method which replaces the Request URI of the request by passing an `OverSIP::SIP::Uri` instance or a string. Also allow passing a URI as string to `UacRequest.initialize` and route based on it (if no `dst_host` param is given to the `Uac` instance routing such a request). New class methods `OverSIP::SIP::Uri.parse(string)` and `OverSIP::SIP::NameAddr.parse(string)` which generate instances of those classes. - [(a2971fc)](https://github.com/versatica/OverSIP/commit/a2971fcc5c2e4fd4ed816d555b59442a64d22c33) New `OverSIP::ParsingError` exception which is raised when invalid data is passed to `OverSIP::SIP::Uri.parse(uri)` or `OverSIP::SIP::NameAddr.parse(name_addr)`. - [(2689e02)](https://github.com/versatica/OverSIP/commit/2689e02d4358daf12eac76264a0e2cac96fcb665) `OverSIP::SIP::Proxy` and `OverSIP::SIP::Uac` instances now allow setting multiple callbacks (for events like `on_success_response`) and all of them will be executed sequentially. - [(4b7c47f)](https://github.com/versatica/OverSIP/commit/4b7c47fd27e5186c71541952a1bb28af35cfcaa5) New method `OverSIP::SIP::Uri#has_param?(param)`. - [(774de3b)](https://github.com/versatica/OverSIP/commit/774de3b537fb6afdc71adb1047184cf0785c495c) New instance methods `clear_on_xxxxxx()` and `clear_callbacks()` to clear existing callbacks in `OverSIP::SIP::Proxy` and `OverSIP::SIP::Uac`. - [(e58974f)](https://github.com/versatica/OverSIP/commit/e58974feea8cd7962ea3efa8d8476f4bd54e52f9) New design of `OverSIP::Modules::OutboundMangling` module: `add_outbound_to_contact()` now requires passing an `OverSIP::SIP::Proxy` as argument rather than a request, and it internally adds the callback to the 2XX response (for reverting the custom ;ov-ob param) so `remove_outbound_from_contact()` is no longer required and has been removed. - [(31114a0)](https://github.com/versatica/OverSIP/commit/31114a091c9649574af0710f23e459f0bd488757) Added `OverSIP::SIP::Uri#clear_params()` which removes all the params from the URI. - [(c610d90)](https://github.com/versatica/OverSIP/commit/c610d90b326174b37368f11b27d40c839d76de9d) Add `advertised_ipv4` and `advertised_ipv6` configuration options for running OverSIP in NAT'ed boxes. Version 1.3.8 (released in 2013-05-16) -------------------------------------- - [(04b0882)](https://github.com/versatica/OverSIP/commit/04b088259f0881f5a09af9ebef9ce6e5387c4c02) `request.fix_nat()` works now for initial requests regardless `request.loose_route()` is not called (thanks to Vlad Paiu for reporting). Version 1.3.7 (released in 2013-01-28) -------------------------------------- - [(ac18ff2)](https://github.com/versatica/OverSIP/commit/ac18ff28e2eaebfd9b3b0f69893e84adb5be04fb) Added `OverSIP.root_fiber` attribute which stores the root `Fiber`. Version 1.3.6 (released in 2013-01-03) -------------------------------------- - [(0a858b1)](https://github.com/versatica/OverSIP/commit/0a858b11bb1351b85690f8a5aabbf7d467ed8792) Encode the body in UTF-8 also when received via WebSocket. - `s/2012/2013/g`. Version 1.3.5 (released in 2012-12-17) -------------------------------------- - [(6ee6b8c)](https://github.com/versatica/OverSIP/commit/6ee6b8c808e24ad9680291e67ff85ca30889cb2f) Fixed a bug in name_addr.rb that prevents the NameAddr to be printed until some URI field is modified. - [(9b20db3)](https://github.com/versatica/OverSIP/commit/9b20db392711e89ae3971945bcd2916df18f3907) Add via_branch_id attr reader to UacRequest to avoid a bug in `OverSIP::SIP::Uac#route()` method. Version 1.3.3 (released in 2012-11-15) -------------------------------------- - [(d9eee0d)](https://github.com/versatica/OverSIP/commit/d9eee0dbe0f7e0b9a9d8527ca9c57dc67cda0a8c) Improved OverSIP security limits (Posix Message Queue) for Debian/Ubuntu (fixes [bug #27](https://github.com/versatica/OverSIP/issues/27)). - [(834462a)](https://github.com/versatica/OverSIP/commit/834462ab8481dd9855c501fe52247a28f3700bef) Use C binary syntax 0x1 instead of 0b00000001 (fixes [bug #23](https://github.com/versatica/OverSIP/issues/23) and [bug #29](https://github.com/versatica/OverSIP/issues/29)). Version 1.3.2 (released in 2012-11-03) -------------------------------------- - [(3d7fa9e)](https://github.com/versatica/OverSIP/commit/3d7fa9e4440968b7c13fe4c65b764ed71d084ec8) Fixed a bug that writes an empty Record-Route header when an INVITE asking for incoming Outbound support comes from a TCP connection initiated by OverSIP. Version 1.3.1 (released in 2012-10-04) -------------------------------------- - [(042fdaf)](https://github.com/versatica/OverSIP/commit/042fdaf17bfeddf22ffa80637b0e0fb387a77bff) Fixed an important bug in record-routing mechanism that makes OverSIP not to add Record-Route/Path headers. Version 1.3.0 (released in 2012-10-04) -------------------------------------- - [(6afa5a6)](https://github.com/versatica/OverSIP/commit/6afa5a6c2572aea4b78a3aba2fc5d2f0d81d96ce) All the callbacks in `server.rb` are now executed within a new [Fiber](http://www.ruby-doc.org/core-1.9.3/Fiber.html) allowing synchronous style coding by using [em-synchrony](https://github.com/igrigorik/em-synchrony) libraries. - [(b950bba)](https://github.com/versatica/OverSIP/commit/b950bba6aa8d7e3e28d69f7fb3d850a4719e02ba) New class `OverSIP::SIP::Uac`that allows OverSIP behaving as a UAC for generating and sending SIP requests. New class `OverSIP::SIP::UacRequest` for generating requests to be sent via `OverSIP::SIP::Uac#route` method (also allows sending a received `OverSIP::SIP::Request` instance). - New methods `initialize()`, `sip?`, `tel?` and `get_param()` for `OverSIP::SIP::Uri` class ([doc](http://www.oversip.net/documentation/1.3.x/api/sip/uri/)). - New class `OverSIP::SIP::Client`, parent class of `OverSIP::SIP::Proxy` and `OverSIP::SIP::Uac`. New method `add_target_to_blacklist()` ([doc](http://www.oversip.net/documentation/1.3.x/api/sip/client/)). - `OverSIP::SIP::Client#on_error()` method is now called with a third argument: a Ruby symbol trat represents the exact (internal) error code. - `OverSIP::SIP::Client#on_target()` callback is now called with a single parameter: the instance of `OverSIP::SIP::RFC3263::Target` (API change). - [(7e9733e)](https://github.com/versatica/OverSIP/commit/7e9733e95f04158bb69ed13130984e335c80c73c) New feature: automatic blacklists. When a destination (target) fails due to timeout, connection error or TLS validation error, the target is added to a temporal blacklist and future requests to same target are not attempted until the entry in the blacklist expires. Version 1.2.0 (released in 2012-09-04) -------------------------------------- - [(c921687)](https://github.com/versatica/OverSIP/commit/c9216872ccd43c3977b8816551f33d9d0c178899) Added `on_target()` and `abort_routing()` methods for `Proxy` class. - [(7e54d1c)](https://github.com/versatica/OverSIP/commit/7e54d1c89351e0517bc12d543e577dff46f251a4) Don't raise an exception if the received STUN request contains an invalid IP family (vulnerability!). - [(f7eefd6)](https://github.com/versatica/OverSIP/commit/f7eefd6d8e02d30e61fd219f4426e6e63ea7f2a8) If request.from or request.to (`NameAddr` instances) are modified before routing the request, changes are applied for the outgoing request and reverted when sending responses upstream. - [(0f9d3ec)](https://github.com/versatica/OverSIP/commit/0f9d3ec9da96c51197535bcd5f0c65e5749ec855) If request.contact `NameAddr` fields are modified then changes are applied in the forwarded request. - [(df1389e)](https://github.com/versatica/OverSIP/commit/df1389eda22806dc48f6595cc3e6460c58391411) Added `SystemCallbacks` module for 3rd party modules to set custom callbacks when OverSIP is started, reloaded (HUP signal) or stopped. - [(9d310d6)](https://github.com/versatica/OverSIP/commit/9d310d6678ee79c47d17b5aab010a49b8683c3da) Added `OverSIP::SIP::Uri#aor()`method which returns "sip:user@domain" for a SIP/SIPS URI (no port or params) and "tel:number" for a TEL URI (no params). - [(56e099b)](https://github.com/versatica/OverSIP/commit/56e099bb0500e6cda221750ade7848fda614b522) Added a new method `OverSIP::SystemEvents.on_initialize()` useful for 3rd party modules configuration by the user. - [(aac4bad)](https://github.com/versatica/OverSIP/commit/aac4badafd924cdbd3344a6636fa9588d0b84c79) `OverSIP::SIP::Modules::RegistrarWithoutPath` renamed to `OverSIP::SIP::Modules::OutboundMangling`. - [(ce48977)](https://github.com/versatica/OverSIP/commit/ce48977ca786def6d9c9f8af8d743da7c105dcf6) `OverSIP::SIP::Modules::Core` moved to `OverSIP::SIP::Core`. - [(98e5308)](https://github.com/versatica/OverSIP/commit/98e530869e57150778327b29e5a977b2f6985f8d)` OverSIP::SIP::Modules` moved to `OverSIP::Modules`. Version 1.1.2 (released in 2012-08-28) -------------------------------------- - [(d91d2e4)](https://github.com/versatica/OverSIP/commit/d91d2e4899a777dd7dd101e83fe36a1bca744398) Require EventMachine-LE >= 1.1.3 which includes the `:use_tls` option for selecting TLSv1 or SSLv23 (fixes [#12](https://github.com/versatica/OverSIP/issues/12)). ================================================ FILE: Gemfile ================================================ source "http://rubygems.org" gemspec group :test do gem "rake", "~> 10.3.2" end ================================================ FILE: LICENSE ================================================ Name: OverSIP Maintainer: Iñaki Baz Castillo Copyright (c) 2012-2016 Iñaki Baz Castillo License: The MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================

[![Build Status](https://secure.travis-ci.org/versatica/OverSIP.png?branch=master)](http://travis-ci.org/versatica/OverSIP) ## Notice This project is no longer maintained. If you wish to maintain it, contact the authors (see below). ## Website * [www.oversip.versatica.com](http://www.oversip.versatica.com) ## Overview OverSIP is a powerful and flexible SIP proxy & server by the authors of [RFC 7118](http://tools.ietf.org/html/rfc7118) (*The WebSocket Protocol as a Transport for SIP*): * Works on Linux/BSD/OSX * Fully asynchronous event-based design, never block! * Enjoy coding your SIP logic in Ruby language, feel free to code whatever you need! * Fast: core and message parsers written in C language * SIP over UDP, TCP, TLS and WebSocket (use true SIP in your web apps) * Full support for IPv4, IPv6 and DNS resolution (NAPTR, SRV, A, AAAA) * The perfect Outbound Edge Proxy * Written by the authors of [RFC 7118 "The WebSocket Protocol as a Transport for SIP"](http://tools.ietf.org/html/rfc7118) and [JsSIP](http://jssip.net) ## Documentation * [www.oversip.versatica.com/documentation](http://www.oversip.versatica.com/documentation/) ## Authors ### Main Author * Iñaki Baz Castillo ( | [github](https://github.com/ibc) | [twitter](https://twitter.com/ibc_tw)) ### Contributors * José Luis Millán ( | [github](https://github.com/jmillan) | [twitter](https://twitter.com/jomivi)) * Saúl Ibarra Corretgé ( | [github](https://github.com/saghul) | [twitter](https://twitter.com/saghul)) * Jon Bonilla ( | [github](https://github.com/manwe) | [twitter](https://twitter.com/jbmanwe)) ## License OverSIP is released under the [MIT license](http://www.oversip.versatica.com/license). ================================================ FILE: Rakefile ================================================ require "rake/testtask" require "rake/clean" OVERSIP_EXTENSIONS = [ { :dir => "ext/sip_parser", :lib => "sip_parser.#{RbConfig::CONFIG["DLEXT"]}", :dest => "lib/oversip/sip" }, { :dir => "ext/stun", :lib => "stun.#{RbConfig::CONFIG["DLEXT"]}", :dest => "lib/oversip" }, { :dir => "ext/utils", :lib => "utils.#{RbConfig::CONFIG["DLEXT"]}", :dest => "lib/oversip" }, { :dir => "ext/websocket_framing_utils", :lib => "ws_framing_utils.#{RbConfig::CONFIG["DLEXT"]}", :dest => "lib/oversip/websocket" }, { :dir => "ext/websocket_http_parser", :lib => "ws_http_parser.#{RbConfig::CONFIG["DLEXT"]}", :dest => "lib/oversip/websocket" }, ] OVERSIP_EXTENSIONS.each do |ext| file ext[:lib] => Dir.glob(["#{ext[:dir]}/*{.c,.h}"]) do Dir.chdir(ext[:dir]) do ruby "extconf.rb" sh "make" end cp "#{ext[:dir]}/#{ext[:lib]}", "#{ext[:dest]}/" end CLEAN.include("#{ext[:dir]}/*{.o,.log,.so,.a,.bundle}") CLEAN.include("#{ext[:dir]}/Makefile") CLEAN.include("#{ext[:dest]}/#{ext[:lib]}") end # Stud stuff. directory "tmp" file "bin/oversip_stud" => "tmp" do Dir.chdir("ext/stud") do ruby "extconf.rb" end FileUtils.remove_dir "tmp" end CLEAN.include("ext/stud/Makefile") CLEAN.include("thirdparty/stud/mkmf.log") CLEAN.include("bin/oversip_stud") OVERSIP_COMPILE_ITEMS = OVERSIP_EXTENSIONS.map {|e| e[:lib]} << "bin/oversip_stud" task :default => :compile desc "Compile" task :compile => OVERSIP_COMPILE_ITEMS Rake::TestTask.new do |t| t.libs << "test" end # Make the :test task depend on the shared object, so it will be built automatically # before running the tests. desc "Run tests" task :test => OVERSIP_COMPILE_ITEMS ================================================ FILE: bin/oversip ================================================ #!/usr/bin/env ruby # -*- encoding: binary -*- unless RUBY_VERSION >= "1.9.2" raise ::LoadError, "OverSIP requires Ruby version >= 1.9.2 (current version is #{RUBY_VERSION})" end $LOAD_PATH.insert 0, File.expand_path(File.join(File.dirname(__FILE__), "../", "lib")) # When OverSIP is executed automaticaly via the system init (i.e. after booting the host) # the Encoding.default_external is US_ASCII which causes fails when reading daat from # some files (i.e. the cacert.pem file which contains no valid US_ASCII symbols). So # make the default external encoding UTF-8 right now. ::Encoding.default_external = ::Encoding::UTF_8 # First of all, trap some signals in order to ignore them if they arrive while # loading server libraries. [:HUP, :INT, :USR1, :USR2].each {|signal| trap(signal) {} } require "optparse" require "etc" require "oversip" module OverSIP class Executable extend ::OverSIP::Logger @log_id = "executable" def self.run $0 = ::File.basename(__FILE__) ::OverSIP::Logger.load_methods # Options by default. options = { :colorize => true } OptionParser.new("", 28, " ") do |opts| opts.banner = "#{::OverSIP::DESCRIPTION}" \ "\n\nUsage: #{File.basename(__FILE__)} " \ "[#{::OverSIP::PROGRAM_NAME} options] [Ruby options]" opts.separator "\n#{::OverSIP::PROGRAM_NAME} options:" opts.on("-P", "--pid FILE", "Create a PID file (required)") do |value| options[:pid_file] = value end opts.on("-p", "--process-name NAME", "Change the running process name (default 'oversip')") do |value| options[:process_name] = value $0 = options[:process_name] ::OverSIP::Logger.load_methods end opts.on("--config-dir DIR", "Absolute path to the directory with user configuration files (default '/etc/oversip/')") do |value| options[:config_dir] = value end opts.on("--config-file FILE", "Name of the configuration file within the configuration directory (default 'oversip.conf')") do |value| options[:config_file] = value end opts.on("-u", "--user USER", "System user to run with") do |value| options[:user] = value end opts.on("-g", "--group GROUP", "System group to run with") do |value| options[:group] = value end opts.on("--no-color", "Don't colorize text printed in stdout") do |value| options[:colorize] = false end opts.separator "\nRuby options:" opts.on("-d", "--debug", "Set debugging flags ($DEBUG = true)") do $DEBUG = true end opts.on("-w", "--warn", "Turn warnings on ($-w = true)") do $-w = true end opts.on("-I", "--include PATH", "Add PATH to $LOAD_PATH (may be used more than once)") do |path| $LOAD_PATH.unshift(*path.split(/:/)) end opts.on("-r", "--require LIBRARY", "Load LIBRARY before running the programm (may be used more than once)") do |library| require library end opts.separator "\nCommon options:" opts.on_tail("-h", "--help", "Show this message") do puts opts.to_s exit end opts.on_tail("-v", "--version", "Show version") do puts ::OverSIP::DESCRIPTION exit end begin opts.parse! ARGV rescue ::OptionParser::InvalidOption => e log_system_error e.message puts puts opts.to_s exit! 1 rescue ::OptionParser::MissingArgument => e log_system_error e.message puts puts opts.to_s exit! 1 end end log_system_notice "#{::OverSIP::PROGRAM_NAME} #{::OverSIP::VERSION} starting..." # Options checks. # PID file is required. unless options[:pid_file] ::OverSIP::Launcher.fatal "PID file is required (use -P or --pid option)" end # Ignore user/group if the launcher is not being running as root. unless ::Process.euid == 0 if options[:user] or options[:group] log_system_warn "ignoring user/group parameters when not running as root" end options.delete :user options.delete :group else # Get the uid and gid to run with. if options[:user] begin ::Etc.getpwnam options[:user] rescue ::ArgumentError ::OverSIP::Launcher.fatal "user '#{options[:user]}' does not exist in the system" end end if options[:group] begin ::Etc.getgrnam options[:group] rescue ::ArgumentError ::OverSIP::Launcher.fatal "group '#{options[:group]}' does not exist in the system" end end end # Set the command name (as it appears in "ps" output) to given --process_name option (-p) # or to the script filename otherwise. ::OverSIP.master_name = options[:process_name] || ::File.basename(__FILE__) $0 = ::OverSIP.master_name log_system_info "process name: #{::OverSIP.master_name}" ::OverSIP::Config.load options[:config_dir], options[:config_file] ::OverSIP::Config.print options[:colorize] ::OverSIP::Logger::load_methods begin ::Process.setrlimit Process::RLIMIT_NOFILE, 65536, 65536 rescue => e # ::OverSIP::Launcher.fatal e log_system_error "error increasing rlimits for 'nofiles': #{e.message} (#{e.class})" end ::OverSIP::Launcher.daemonize!(options) ::OverSIP::Launcher.run(options) end # def run end # class Executable end # module OverSIP ::OverSIP::Executable.run ================================================ FILE: create-deb.sh ================================================ #!/bin/bash # Using this the generated stuf is clean after package is built. # Options -us and -uc prevent the package from being signed. dpkg-buildpackage -tc -us -uc # Similar option. The second command cleans the generated stuf. #debuild -us -uc #./debian/rules clean # Clean debian/files and the log file. rm -f debian/files rm -f debian/oversip.debhelper.log ================================================ FILE: debian/changelog ================================================ oversip (2.0.4) stable; urgency=high * Package for OverSIP Ruby Gem 2.0.4. -- Iñaki Baz Castillo Fri, 19 Aug 2016 13:11:00 +0100 oversip (2.0.3) stable; urgency=low * Package for OverSIP Ruby Gem 2.0.3. -- Iñaki Baz Castillo Fri, 29 Jan 2016 18:15:00 +0100 oversip (2.0.2) stable; urgency=low * Package for OverSIP Ruby Gem 2.0.2. -- Iñaki Baz Castillo Fri, 29 Jan 2016 18:00:00 +0100 oversip (2.0.1) stable; urgency=low * Package for OverSIP Ruby Gem 2.0.1. -- Iñaki Baz Castillo Tue, 24 Feb 2015 20:00:00 +0100 oversip (2.0.0) stable; urgency=low * Package for OverSIP Ruby Gem 2.0.0. -- Iñaki Baz Castillo Wed, 24 Sep 2014 23:00:00 +0100 oversip (1.4.1) stable; urgency=low * Package for OverSIP Ruby Gem 1.4.1. -- Iñaki Baz Castillo Mon, 16 Sep 2013 16:35:00 +0100 oversip (1.4.0) stable; urgency=low * Package for OverSIP Ruby Gem 1.4.0. -- Iñaki Baz Castillo Sun, 15 Sep 2013 16:10:00 +0100 oversip (1.3.8) stable; urgency=low * Package for OverSIP Ruby Gem 1.3.8. -- Iñaki Baz Castillo Thu, 16 May 2013 13:10:00 +0100 oversip (1.3.7) stable; urgency=low * Package for OverSIP Ruby Gem 1.3.7. -- Iñaki Baz Castillo Mon, 28 Jan 2013 22:00:00 +0100 oversip (1.3.6) stable; urgency=low * Package for OverSIP Ruby Gem 1.3.6. -- Iñaki Baz Castillo Thu, 03 Jan 2013 13:00:00 +0100 oversip (1.3.5) stable; urgency=low * Package for OverSIP Ruby Gem 1.3.5. -- Iñaki Baz Castillo Mon, 17 Dec 2012 23:20:00 +0100 oversip (1.3.3) stable; urgency=low * Package for OverSIP Ruby Gem 1.3.3. -- Iñaki Baz Castillo Thu, 15 Nov 2012 23:20:00 +0100 oversip (1.3.2) stable; urgency=low * Package for OverSIP Ruby Gem 1.3.2. -- Iñaki Baz Castillo Sat, 03 Nov 2012 19:06:00 +0100 oversip (1.3.1) stable; urgency=high * Package for OverSIP Ruby Gem 1.3.1. -- Iñaki Baz Castillo Thu, 04 Oct 2012 23:30:00 +0100 oversip (1.3.0) stable; urgency=low * Package for OverSIP Ruby Gem 1.3.0. -- Iñaki Baz Castillo Thu, 04 Oct 2012 17:25:00 +0100 oversip (1.2.1) stable; urgency=high * Package for OverSIP Ruby Gem 1.2.1. -- Iñaki Baz Castillo Thu, 06 Aug 2012 02:10:00 +0100 oversip (1.2.0) stable; urgency=low * Package for OverSIP Ruby Gem 1.2.X. -- Iñaki Baz Castillo Tue, 04 Aug 2012 12:00:00 +0100 oversip (1.1.0) stable; urgency=low * Package for OverSIP Ruby Gem 1.1.X. -- Iñaki Baz Castillo Fri, 03 Aug 2012 17:53:00 +0100 oversip (1.0.0) stable; urgency=low * Initial release. -- Iñaki Baz Castillo Mon, 09 Jul 2012 21:21:00 +0100 ================================================ FILE: debian/compat ================================================ 7 ================================================ FILE: debian/control ================================================ Source: oversip Section: comm Priority: optional Maintainer: Iñaki Baz Castillo Homepage: http://www.oversip.net Build-Depends: debhelper (>= 7) Standards-Version: 3.9.3 Package: oversip Architecture: all Pre-Depends: ${misc:Depends}, ruby (>= 1.9.3), ruby-dev (>= 1.9.3), make, g++, libssl-dev, libev-dev Suggests: unbound Description: OverSIP (the SIP framework you dreamed about) OverSIP is an async SIP proxy/server programmable in Ruby language. Some features of OverSIP are: - SIP transports: UDP, TCP, TLS and WebSocket. - Full IPv4 and IPv6 support. - RFC 3263: SIP DNS mechanism (NAPTR, SRV, A, AAAA) for failover and load balancing based on DNS. - RFC 5626: OverSIP is a perfect Outbound Edge Proxy, including an integrated STUN server. - Fully programmable in Ruby language (make SIP easy). - Fast and efficient: OverSIP core is coded in C language. OverSIP is build on top of EventMachine async library which follows the Reactor Design Pattern, allowing thousands of concurrent connections and requests in a never-blocking fashion. ================================================ FILE: debian/copyright ================================================ Name: OverSIP Maintainer: Iñaki Baz Castillo Copyright (c) 2012-2016 Iñaki Baz Castillo License: The MIT License Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: debian/oversip.default ================================================ # # oversip startup options # # Set to 'yes' when configured. RUN=no # User to run as. USER=oversip # Group to run as. GROUP=oversip # Directory with the configuration files. # By default '/etc/oversip/'. #CONFIG_DIR=/etc/oversip/ # Main configuration file name (within the configuration directory). # By default 'oversip.conf'. #CONFIG_FILE=oversip.conf ================================================ FILE: debian/oversip.init ================================================ #! /bin/sh ### BEGIN INIT INFO # Provides: oversip # Required-Start: $syslog $network $remote_fs # Required-Stop: $syslog $network $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop OverSIP # Description: Start/stop OverSIP ### END INIT INFO PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:/var/lib/gems/2.1.0/bin:/var/lib/gems/1.9.1/bin DESC=OverSIP HOMEDIR=/var/run/oversip RUN=no RUBY_GEM=oversip RUBY_EXE=$(which ruby) # Process name, it affects to the process name and PID file. # The configuration file under /etc/default/ to read will also be called $NAME. NAME=oversip . /lib/lsb/init-functions # Debian LSB functions don't add \n in function log_begin_msg(). # In Ubuntu such function is overriden in /etc/lsb-base-logging.sh. UBUNTU_LOGGING=0 [ -r /etc/lsb-base-logging.sh ] && UBUNTU_LOGGING=1 [ -r /etc/default/$NAME ] && . /etc/default/$NAME if [ "$1" != "stop" ] && [ "$1" != "status" ] ; then # Ensure that the admin has set RUN=yes in /etc/default/$NAME file. if [ "$RUN" != "yes" ] ; then log_failure_msg "$DESC ($NAME) not yet configured, set RUN=yes in /etc/default/$NAME" exit 0 fi fi # Ensure Ruby executable is installed. which $RUBY_EXE >/dev/null if [ $? -ne 0 ] ; then log_failure_msg "ruby is not installed, exiting." log_end_msg 5 exit 5 fi # Check whether OverSIP Ruby Gem is installed and get the executable location. DAEMON=$(which oversip) if [ $? -ne 0 ] ; then log_failure_msg "$DESC ($NAME): Ruby Gem '$RUBY_GEM' is not installed." case "$1" in status) # LSB - 4: program or service status is unknown. log_end_msg 4 exit 4 ;; stop) exit 0 ;; *) # LSB - 5: program is not installed. log_end_msg 5 exit 5 ;; esac fi PIDFILE="${HOMEDIR}/${NAME}.pid" OPTIONS="-P ${PIDFILE} -p ${NAME}" if [ -n "$USER" ] ; then OPTIONS="${OPTIONS} -u ${USER}" ; fi if [ -n "$GROUP" ] ; then OPTIONS="${OPTIONS} -g ${GROUP}" ; fi if [ -n "$CONFIG_DIR" ] ; then OPTIONS="${OPTIONS} --config-dir ${CONFIG_DIR}" ; fi if [ -n "$CONFIG_FILE" ] ; then OPTIONS="${OPTIONS} --config-file ${CONFIG_FILE}" ; fi check_homedir() { # Create HOMEDIR directory in case it doesn't exist. # Useful in Ubuntu as /var/run/ content is deleted in shutdown. if [ ! -d $HOMEDIR ] ; then mkdir $HOMEDIR ; fi # Set the appropiate owner and group if [ -n "$USER" ] ; then chown ${USER} $HOMEDIR ; fi if [ -n "$GROUP" ] ; then chgrp ${GROUP} $HOMEDIR ; fi } # Return values: # - 3: oversip is not running. # - 0: oversip is running. # - 1: oversip is not running but PID file exists. get_status() { if [ ! -r "$PIDFILE" ]; then return 3 fi if read pid < "$PIDFILE" && ps -p "$pid" > /dev/null 2>&1; then return 0 else return 1 fi } start() { set +e get_status case $? in 0) # Already running, do nothing. log_warning_msg "already running." exit 0 ;; 3) # Not running, start it. ;; 1) # Not running but PID file exists, remove it and start. log_warning_msg "not running but PID file '$PIDFILE' exists, deleting it." rm "$PIDFILE" ;; esac start-stop-daemon --start --quiet --pidfile $PIDFILE --quiet \ --exec $DAEMON -- $OPTIONS res=$? if [ $res -eq 0 ] ; then log_end_msg 0 exit 0 else if [ ! -r "$PIDFILE" ]; then log_failure_msg "error, failed to start." log_end_msg 1 exit 1 else log_failure_msg "error, failed to start (and PID file '$PIDFILE' exists)." log_end_msg 1 exit 1 fi fi } set -e case "$1" in start) check_homedir log_daemon_msg "Starting $DESC ($NAME)" echo set +e start ;; stop) log_daemon_msg "Stopping $DESC ($NAME)" echo set +e start-stop-daemon --oknodo --stop --pidfile $PIDFILE --quiet res=$? if [ $res -eq 0 ] ; then log_end_msg 0 exit 0 else log_failure_msg "error, failed to stop." log_end_msg 1 exit 1 fi ;; restart|force-reload) log_daemon_msg "Restarting $DESC ($NAME)" echo set +e start-stop-daemon --oknodo --stop --pidfile $PIDFILE --retry=5 --quiet if [ $? -ne 0 ] ; then log_failure_msg "error, failed to stop." log_end_msg 1 exit 1 fi check_homedir start ;; status) set +e get_status case $? in 3) # Not running. log_begin_msg "$DESC ($NAME) is not running." [ $UBUNTU_LOGGING -eq 0 ] && echo exit 3 ;; 0) # Running. log_begin_msg "$DESC ($NAME) is running." [ $UBUNTU_LOGGING -eq 0 ] && echo exit 0 ;; 1) # Not running but PID file exists. log_warning_msg "$DESC ($NAME) is not running but PID file '$PIDFILE' exists." exit 1 ;; esac ;; reload) set +e get_status case $? in 3) # Not running. log_begin_msg "$DESC ($NAME) is not running." [ $UBUNTU_LOGGING -eq 0 ] && echo exit 3 ;; 0) # Running. log_begin_msg "$DESC ($NAME) reloading..." kill -s HUP "$pid" [ $UBUNTU_LOGGING -eq 0 ] && echo exit 0 ;; 1) # Not running but PID file exists. log_warning_msg "$DESC ($NAME) is not running but PID file '$PIDFILE' exists." exit 1 ;; esac ;; user-reload) set +e get_status case $? in 3) # Not running. log_begin_msg "$DESC ($NAME) is not running." [ $UBUNTU_LOGGING -eq 0 ] && echo exit 3 ;; 0) # Running. log_begin_msg "$DESC ($NAME) user-reloading..." kill -s USR1 "$pid" [ $UBUNTU_LOGGING -eq 0 ] && echo exit 0 ;; 1) # Not running but PID file exists. log_warning_msg "$DESC ($NAME) is not running but PID file '$PIDFILE' exists." exit 1 ;; esac ;; *) log_failure_msg "Usage: /etc/init.d/$NAME {start|stop|restart|force-reload|status|reload|user-reload}." exit 1 ;; esac ================================================ FILE: debian/postrm ================================================ #!/bin/bash # Doc: http://wiki.debian.org/MaintainerScripts #DEBHELPER# case "$1" in purge) # Remove the Debian system user/group. deluser --quiet --remove-home oversip &>/dev/null || true # Remove the Ruby gem. echo "uninstalling 'oversip' Ruby Gem(s)..." gem uninstall oversip -a -x -I ;; esac exit 0 #DEBHELPER# ================================================ FILE: debian/preinst ================================================ #!/bin/bash # Doc: http://wiki.debian.org/MaintainerScripts #DEBHELPER# set -e OVERSIP_GEM_VERSION="2.0.4" install_gem() { echo "installing 'oversip' Ruby Gem version $OVERSIP_GEM_VERSION..." gem install oversip --no-rdoc --no-ri -v $OVERSIP_GEM_VERSION } case "$1" in install) # Add a Debian system user/group called "oversip". adduser --quiet --system --group --disabled-password \ --shell /bin/false --gecos "OverSIP" \ --home /var/run/oversip oversip || true # Install the Ruby gem. install_gem ;; upgrade) # Install the Ruby gem. install_gem ;; esac exit 0 #DEBHELPER# ================================================ FILE: debian/rules ================================================ #!/usr/bin/make -f # -*- makefile -*- # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 build: build-stamp build-stamp: dh_testdir touch $@ clean: dh_testdir dh_testroot rm -rf build-stamp oversip dh_prep install: build dh_testdir dh_testroot dh_prep -k dh_installdirs /etc mkdir -p $(CURDIR)/debian/oversip/etc/oversip/ mkdir -p $(CURDIR)/debian/oversip/etc/oversip/tls/ mkdir -p $(CURDIR)/debian/oversip/etc/oversip/tls/ca/ mkdir -p $(CURDIR)/debian/oversip/etc/oversip/tls/utils/ install -m 644 etc/oversip.conf debian/oversip/etc/oversip/ install -m 644 etc/proxies.conf debian/oversip/etc/oversip/ install -m 644 etc/server.rb debian/oversip/etc/oversip/ install -m 755 etc/tls/upgrade-cacert.sh debian/oversip/etc/oversip/tls/ install -m 644 etc/tls/demo-tls.oversip.net.crt debian/oversip/etc/oversip/tls/ install -m 600 etc/tls/demo-tls.oversip.net.key debian/oversip/etc/oversip/tls/ install -m 644 etc/tls/ca/* debian/oversip/etc/oversip/tls/ca/ install -m 755 etc/tls/utils/* debian/oversip/etc/oversip/tls/utils/ # Build architecture-dependent files here. binary-arch: install # We have nothing to do by default. # Build architecture-independent files here. binary-indep: install dh_testdir dh_testroot dh_installchangelogs dh_installdocs dh_installexamples dh_installman dh_installinit --restart-after-upgrade -- defaults 20 dh_link dh_strip dh_compress dh_fixperms dh_installcron # dh_makeshlibs dh_installdeb dh_shlibdeps dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install ================================================ FILE: etc/oversip.conf ================================================ # # OverSIP - Main Configuration. # # # IMPORTANT: # This is a YAML [1] format configuration file. DON'T USE tab for indentation # as it's not allowed and would raise unexpected errors. Instead, respect # the existing indentation spaces. # [1] http://en.wikipedia.org/wiki/YAML core: # DNS nameserver to use. Note that OverSIP requires a recursive DNS server # (recommended unbound: a DNS recursive and caching DNS resolver). # Value can be: # - An IPv4. # - An array of IPv4 (for failover). # - _null_: nameservers in /etc/resolv.conf are used. # Default value is _null_. # nameservers: null # Syslog facility. Can be "kern", "user", "daemon", "local0"..."local7". # By default "daemon". # syslog_facility: daemon # Syslog level. Can be "debug", "info", "notice", "warn", "error", "crit". # By default "info". # syslog_level: debug sip: # Use SIP over UDP. By default _yes_. # sip_udp: yes # Use SIP over TCP. By default _yes_. # sip_tcp: yes # Use SIP over TLS. By default _yes_. # sip_tls: yes # Enable or disable IPv4. By default _yes_. # enable_ipv4: yes # IPv4 in which OverSIP listens for SIP messages. Using "0.0.0.0" is not # allowed. # - Use an IPv4 string for listening in that address. # - Use _null_ for IP autodiscovery. # Default value is _null_. # listen_ipv4: null # Advertised IPv4 for Via, Record-Route and Path headers. # Useful when OverSIP runs behind a NAT and must expose the router public # IPv4 to the outside. # Default value is _null_ which means that the local IPv4 is used. # advertised_ipv4: null # Enable or disable IPv6. By default _yes_. # enable_ipv6: yes # IPv6 in which OverSIP listens for SIP messages. Using "::" is not # allowed. # - Use an IPv6 string for listening in that address. # - Use _null_ for IP autodiscovery. # Default value is _null_. # listen_ipv6: null # Advertised IPv6 for Via, Record-Route and Path headers. # Useful when OverSIP runs behind a NAT and must expose the router public # IPv4 to the outside. # Default value is _null_ which means that the local IPv6 is used. # advertised_ipv6: null # Listening port for SIP over UDP and TCP. # By default 5060. # listen_port: 5060 # Listening port for SIP over TLS. # By default 5061. # listen_port_tls: 5061 # By enabling this option OverSIP does not listen in SIP TLS but, instead, # runs an instance of Stud TLS proxy which communicates with OverSIP using # plain TCP. # By default _yes_. # use_tls_tunnel: yes # The port which listens for TCP traffic from the Stud TLS proxy running in # this host. # By default 5062. # listen_port_tls_tunnel: 5062 # Call the OverSIP::SipEvents.on_client_tls_handshake() callback when a SIP # client attemps a TLS handshake with OverSIP. # By default _yes_. # callback_on_client_tls_handshake: yes # Local domains OverSIP is responsible for. Value can be: # - A domain. # - An array of domains. # - _null_: no one, just local IP's are matched as local destinations. # Default value is _null_. # # local domains: [ example.net, sip.example.org ] local_domains: null # TCP keepalive interval (in seconds). # When acting as a TCP server, OverSIP sends TCP packets with null data payload # as described in http://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/. # If not set, TCP keepalive is disabled. # Minimun value is 180 seconds. Default value is _null_ (not enabled). # tcp_keepalive_interval: 300 # Use a hostname for Record-Route/Path header when using TLS or WSS transports # over IPv4 (rather than using the server IP). This is good when a peer # sends us an in-dialog request via TLS so it could check whether the host part # of the top Route header matches a domain in the certificate we provide to it. # If not set, the server IPv4 will be used. # Default value is _null_ (IPv4 is used). # # record_route_hostname_tls_ipv4: outbound.example.net record_route_hostname_tls_ipv4: null # The same for IPv6. # If not set, the server IPv6 will be used. # Default value is _null_ (IPv6 is used). # # record_route_hostname_tls_ipv6: outbound.example.net record_route_hostname_tls_ipv6: null websocket: # Use SIP over WebSocket. By default _yes_. # sip_ws: yes # Use SIP over WebSocket with TLS. By default _yes_. # sip_wss: yes # Enable or disable IPv4. By default _yes_. # enable_ipv4: yes # IPv4 in which OverSIP listens for WebSocket messages. Using "0.0.0.0" is not # allowed. # - Use an IPv4 string for listening in that address. # - Use _null_ for IP autodiscovery. # Default value is _null_. # listen_ipv4: null # Advertised IPv4 for Via, Record-Route and Path headers. # Useful when OverSIP runs behind a NAT and must expose the router public # IPv4 to the outside. # Default value is _null_ which means that the local IPv4 is used. # advertised_ipv4: null # Enable or disable IPv6. By default _yes_. # enable_ipv6: yes # IPv6 in which OverSIP listens for SIP messages. Using "::" is not # allowed. # - Use an IPv6 string for listening in that address. # - Use _null_ for IP autodiscovery. # Default value is _null_. # listen_ipv6: null # Advertised IPv6 for Via, Record-Route and Path headers. # Useful when OverSIP runs behind a NAT and must expose the router public # IPv4 to the outside. # Default value is _null_ which means that the local IPv6 is used. # advertised_ipv6: null # Listening port for WebSocket over HTTP. # By default 10080. # listen_port: 10080 # Listening port for WebSocket over HTTPS. # By default 10443. # listen_port_tls: 10443 # By enabling this option OverSIP does not listen in WebSocket TLS but, instead, # runs an instance of Stud TLS proxy which communicates with OverSIP using # plain TCP. # By default _yes_. # use_tls_tunnel: yes # The port which listens for TCP traffic from the Stud TLS proxy running in # this host. # By default 10444. # listen_port_tls_tunnel: 10444 # Call the OverSIP::WebSocketEvents.on_client_tls_handshake() callback when a WebSocket # client attemps a TLS handshake with OverSIP. # By default _yes_. # callback_on_client_tls_handshake: yes # WebSocket message max size (bytes). By default 65536. # max_ws_message_size: 65536 # WebSocket frame max size (bytes). By default 65536. # max_ws_frame_size: 65536 # WebSocket PING frames interval (in seconds). # If set, OverSIP sends WebSocket PING control frames as the given interval. # Minimun value is 180. Default value is _null_. # ws_keepalive_interval: 300 # TLS parameters affect to any interface of OverSIP using TLS, including SIP and WebSocket. tls: # Server TLS public certificate. It must be the name of a readable file containing a # chain of X509 certificates in PEM format, with the most-resolved certificate at the # top of the file, successive intermediate certs in the middle, and the root (or CA) # cert at the bottom. # If not set, TLS is disabled. Default value is _null_. # If a relative path is given, it's searched under the tls/ directoy in the OverSIP # configuration directory (typically /etc/oversip/). # public_cert: demo-tls.oversip.net.crt # Server TLS private certificate. It must be the name of a readable file containing a # private key in the PEM format. # If not set, TLS is disabled. Default value is _null_. # If a relative path is given, it's searched under the tls/ directoy in the OverSIP # configuration directory (typically /etc/oversip/). # NOTE: The private key MUST NOT require password. # private_cert: demo-tls.oversip.net.key # Directory of TLS CAs. It must be the name of a readable directory. Every file in # that directory will be inspected and every X509 certificate in PEM format extracted. # This is useful for storing the list of trusted CAs (i.e. http://curl.haxx.se/ca/cacert.pem) # or CAs not in a standard trust hierarchy. # This is *required* for validating certificates provided by remote peers. # If _null_ this feature is dssabled. Default value is _null_. # If a relative path is given, it's searched under the tls/ directoy in the OverSIP # configuration directory (typically /etc/oversip/). # ca_dir: ca/ ================================================ FILE: etc/proxies.conf ================================================ # # OverSIP - Proxies Configuration. # # # IMPORTANT: # This is a YAML [1] format configuration file. DON'T USE tab for indentation # as it's not allowed and would raise unexpected errors. Instead, respect # the existing indentation spaces. # [1] http://en.wikipedia.org/wiki/YAML # Default proxy configuration. # default_proxy: # For initial INVITE, SUBSCRIBE and REFER requests and in-dialog NOTIFY the proxy adds Record-Route header(s). # For REGISTER requests the proxy adds Path header(s). # By default _yes_. # do_record_routing: yes # Enable DNS cache. By default _yes_. # use_dns_cache: yes # DNS cache time (in seconds). A DNS result is removed from the cache after the given time. # Minimum value is 300. Default value is 300. # dns_cache_time: 300 # Enable destination blacklist. When a destination (target) fails due to timeout, connection error # or TLS validation error, the target is added to a temporal blacklist and requests to same # targets are not tryed again until the entry in the blacklist expires. By default _yes_. # use_blacklist: yes # Blacklist expiration time (in seconds). The time of live of failed targets within the blacklist. # blacklist_time: 400 # Use DNS NAPTR. If set, NAPTR query is performed when URI host is a domain, has no port nor # ;transport param. # Default value is _yes_. # use_naptr: yes # Use DNS SRV. If set, SRV query is performed when URI host is a domain and has no port. # If this is set to _no_ then _use_naptr_ is also set to _no_. # Default value is _yes_. # use_srv: yes # Transport preference. The list of supported transports in order of preference. # When there is NAPTR record, its SRV records are tryed in this order just in the case # _force_transport_preference_ is _yes_. # If there is not NAPTR record, SRV records are then tryed in this order. # Valid transports are "udp", "tcp" and "tls". # Default value is ["tls", "tcp", "udp"] (first try "tls"). # transport_preference: ["tls", "tcp", "udp"] # Force transport preference. If _no_, transport preference is taken from NAPTR records # (when present). If _yes_, transport preferences are taken from transport_preference # parameter even for NAPTR records. # Default value is _no_. # force_transport_preference: no # IP type preference. When both IPv4 and IPv6 are available, this parameter determines # whether to try first DNS A or AAAA queries. It also determines the IP type this proxy # is allowed to use for routing requests. # Valid IP types are "ipv4" and "ipv6". # Default value is ["ipv4", "ipv6"] (first try "ipv4"). # ip_type_preference: ["ipv4", "ipv6"] # DNS failover on received 503. # If a DNS query retrieves more than a single destinations and the first attempt # receives a 503 response, then OverSIP tries the next destination (when this parameter # is set) or replies a 500 error upstream (when not set). # Default value is _yes_. # dns_failover_on_503: yes # INVITE transaction timeout (in seconds). # Time waiting for a provisional or final response. # Minimum value is 2, maximum value is 64. # Default value is 32. # timer_B: 32 # Proxy INVITE transaction timeout (in seconds). # Time waiting for a final response. # Minimum value is 8, maximum value is 180. # Default value is 120. # timer_C: 120 # Non-INVITE transaction timeout (in seconds). # Time waiting for a final response. # Minimum value is 2, maximum value is 64. # Default value is 32. # timer_F: 32 # Call the OverSIP::SIP.on_server_tls_handshake() callback when # establishing an outbound SIP TLS connection with a remote SIP peer. # By default _yes_. # callback_on_server_tls_handshake: yes # Proxy configuration for routing in-dialog requests. # proxy_in_dialog: use_dns: yes use_dns_cache: yes dns_cache_time: 300 use_naptr: no use_srv: no timer_B: 32 timer_C: 60 timer_F: 32 # Proxy configuration for routing initial requests to clients. proxy_to_users: use_dns: no dns_failover_on_503: no timer_B: 32 timer_F: 32 # Proxy configuration for routing initial requests to the external world. proxy_out: dns_failover_on_503: yes timer_B: 6 timer_C: 60 timer_F: 6 # Add your own proxy configurations here and/or replace the above ones. ================================================ FILE: etc/server.rb ================================================ # coding: utf-8 # # OverSIP - Server Logic. # ### Custom Application Code: # Define here your custom code for the application running on top of OverSIP. # Here you can load thirdy-party libraries and so on. # # require "some-gem" # module MyExampleApp extend ::OverSIP::Logger class << self attr_reader :do_outbound_mangling, :do_user_assertion end # Set this to _true_ if the SIP registrar behind OverSIP does not support Path. # OverSIP::Modules::OutboundMangling methods will be used. @do_outbound_mangling = true # Set this to _true_ if the SIP proxy/server behind OverSIP performing the authentication # is ready to accept a P-Asserted-Identity header from OverSIP indicating the already # asserted SIP user of the client's connection (this avoids authenticating all the requests # but the first one). # OverSIP::Modules::UserAssertion methods will be used. @do_user_assertion = true end ### OverSIP System Events: # This method is called when the main configuration files have been loaded. # Place here 3rd party modules initializer code. # This method is not executed again when OverSIP is reloaded (HUP signal). # # def (OverSIP::SystemEvents).on_initialize # [...] # end # This method is called once the OverSIP reactor has been started. # # def (OverSIP::SystemEvents).on_started # [...] # end # This method is called when a USR1 signal is received by OverSIP main # process and allows the user to set custom code to be executed # or reloaded. # # def (OverSIP::SystemEvents).on_user_reload # [...] # end # This method is called after OverSIP has been terminated. It's called # with argument "error" which is _true_ in case OverSIP has died in an # unexpected way. # # def (OverSIP::SystemEvents).on_terminated error # [...] # end ### OverSIP SIP Events: # This method is called when a SIP request is received. # def (OverSIP::SipEvents).on_request request log_info "#{request.sip_method} from #{request.from.uri} (UA: #{request.header("User-Agent")}) to #{request.ruri} via #{request.transport.upcase} #{request.source_ip} : #{request.source_port}" # Check Max-Forwards value (max 10). return unless request.check_max_forwards 10 # Assume all the traffic is from clients and help them with NAT issues # by forcing rport usage and Outbound mechanism. request.fix_nat # In-dialog requests. if request.in_dialog? if request.loose_route log_debug "proxying in-dialog #{request.sip_method}" proxy = ::OverSIP::SIP::Proxy.new :proxy_in_dialog proxy.route request else unless request.sip_method == :ACK log_notice "forbidden in-dialog request without top Route pointing to us => 403" request.reply 403, "forbidden in-dialog request without top Route pointing to us" else log_notice "ignoring not loose routing ACK" end end return end # Initial requests. # Check that the request does not contain a top Route pointing to another server. if request.loose_route unless request.sip_method == :ACK log_notice "pre-loaded Route not allowed here => 403" request.reply 403, "Pre-loaded Route not allowed" else log_notice "ignoring ACK initial request" end return end if MyExampleApp.do_outbound_mangling # Extract the Outbound flow token from the RURI. ::OverSIP::Modules::OutboundMangling.extract_outbound_from_ruri request end # The request goes to a client using Outbound through OverSIP. if request.incoming_outbound_requested? log_info "routing initial request to an Outbound client" proxy = ::OverSIP::SIP::Proxy.new :proxy_to_users proxy.on_success_response do |response| log_info "incoming Outbound on_success_response: #{response.status_code} '#{response.reason_phrase}'" end proxy.on_failure_response do |response| log_info "incoming Outbound on_failure_response: #{response.status_code} '#{response.reason_phrase}'" end # on_error() occurs when no SIP response was received fom the peer and, instead, we # got some other internal error (timeout, connection error, DNS error....). proxy.on_error do |status, reason| log_notice "incoming Outbound on_error: #{status} '#{reason}'" end # Route the request and return. proxy.route request return end # An initial request with us (OverSIP) as final destination, ok, received, bye... if request.destination_myself? log_info "request for myself => 404" request.reply 404, "Ok, I'm here" return end # An outgoing initial request. case request.sip_method when :INVITE, :MESSAGE, :OPTIONS, :SUBSCRIBE, :PUBLISH, :REFER if MyExampleApp.do_user_assertion ::OverSIP::Modules::UserAssertion.add_pai request end proxy = ::OverSIP::SIP::Proxy.new :proxy_out proxy.on_provisional_response do |response| log_info "on_provisional_response: #{response.status_code} '#{response.reason_phrase}'" end proxy.on_success_response do |response| log_info "on_success_response: #{response.status_code} '#{response.reason_phrase}'" end proxy.on_failure_response do |response| log_info "on_failure_response: #{response.status_code} '#{response.reason_phrase}'" end proxy.on_error do |status, reason| log_notice "on_error: #{status} '#{reason}'" end proxy.on_invite_timeout do log_notice "INVITE timeout, no final response before Timer C expires." end proxy.route request return when :REGISTER proxy = ::OverSIP::SIP::Proxy.new :proxy_out if MyExampleApp.do_outbound_mangling # Contact mangling for the case in which the registrar does not support Path. ::OverSIP::Modules::OutboundMangling.add_outbound_to_contact proxy end proxy.on_success_response do |response| if MyExampleApp.do_user_assertion # The registrar replies 200 after a REGISTER with credentials so let's assert # the current SIP user to this connection. ::OverSIP::Modules::UserAssertion.assert_connection response end end proxy.on_failure_response do |response| if MyExampleApp.do_user_assertion # We don't add PAI for re-REGISTER, so 401 will be replied, and after it let's # revoke the current user assertion (will be re-added upon REGISTER with credentials). ::OverSIP::Modules::UserAssertion.revoke_assertion response end end proxy.route request return else log_info "method #{request.sip_method} not implemented => 501" request.reply 501, "Not Implemented" return end end # This method is called when a client initiates a SIP TLS handshake. def (OverSIP::SipEvents).on_client_tls_handshake connection, pems log_info "validating TLS connection from IP #{connection.remote_ip} and port #{connection.remote_port}" cert, validated, tls_error, tls_error_string = ::OverSIP::TLS.validate pems identities = ::OverSIP::TLS.get_sip_identities cert if validated log_info "client provides a valid TLS certificate with SIP identities #{identities}" else log_notice "client provides an invalid TLS certificate with SIP identities #{identities} (TLS error: #{tls_error.inspect}, description: #{tls_error_string.inspect})" #connection.close end end # This method is called when conntacting a SIP TLS server and the TLS handshake takes place. def (OverSIP::SipEvents).on_server_tls_handshake connection, pems log_info "validating TLS connection to IP #{connection.remote_ip} and port #{connection.remote_port}" cert, validated, tls_error, tls_error_string = ::OverSIP::TLS.validate pems identities = ::OverSIP::TLS.get_sip_identities cert if validated log_info "server provides a valid TLS certificate with SIP identities #{identities}" else log_notice "server provides an invalid TLS certificate with SIP identities #{identities} (TLS error: #{tls_error.inspect}, description: #{tls_error_string.inspect})" #connection.close end end ### OverSIP WebSocket Events: # This method is called when a new WebSocket connection is being requested. # Here you can inspect the connection and the HTTP GET request. If you # decide not to accept this connection then call to: # # connection.http_reject(status_code, reason_phrase=nil, extra_headers=nil) # # You can also set variables for this connection via the connection.cvars # Hash. Later you can access to this Hash in SIP requests from this connection # by retrieving request.cvars attribute. # # def (OverSIP::WebSocketEvents).on_connection connection, http_request # [...] # end # This method is called when a WebSocket connection is closed. The connection # is given as first argument along with a second argument "client_closed" which # is _true_ in case the WebSocket connection was closed by the client. # # def (OverSIP::WebSocketEvents).on_disconnection connection, client_closed # [...] # end # This method is called when a client initiates a WebSocket TLS handshake. def (OverSIP::WebSocketEvents).on_client_tls_handshake connection, pems log_info "validating TLS connection from IP #{connection.remote_ip} and port #{connection.remote_port}" cert, validated, tls_error, tls_error_string = ::OverSIP::TLS.validate pems identities = ::OverSIP::TLS.get_sip_identities cert if validated log_info "client provides a valid TLS certificate with SIP identities #{identities}" else log_notice "client provides an invalid TLS certificate with SIP identities #{identities} (TLS error: #{tls_error.inspect}, description: #{tls_error_string.inspect})" #connection.close end end ================================================ FILE: etc/tls/ca/cacert.pem ================================================ ## ## Bundle of CA Root Certificates ## ## Certificate data from Mozilla downloaded on: Wed Sep 3 03:12:03 2014 ## ## This is a bundle of X.509 certificates of public Certificate Authorities ## (CA). These were automatically extracted from Mozilla's root certificates ## file (certdata.txt). This file can be found in the mozilla source tree: ## http://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt ## ## It contains the certificates in PEM format and therefore ## can be directly used with curl / libcurl / php_curl, or with ## an Apache+mod_ssl webserver for SSL client authentication. ## Just configure this file as the SSLCACertificateFile. ## ## Conversion done with mk-ca-bundle.pl verison 1.22. ## SHA1: c4540021427a6fa29e5f50db9f12d48c97d33889 ## GTE CyberTrust Global Root ========================== -----BEGIN CERTIFICATE----- MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0 IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ -----END CERTIFICATE----- Thawte Server CA ================ -----BEGIN CERTIFICATE----- MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0 ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl /Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7 1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc= -----END CERTIFICATE----- Thawte Premium Server CA ======================== -----BEGIN CERTIFICATE----- MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2 aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2 aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/ qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf 8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t UCemDaYj+bvLpgcUQg== -----END CERTIFICATE----- Equifax Secure CA ================= -----BEGIN CERTIFICATE----- MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW 8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961 zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95 70+sB3c4 -----END CERTIFICATE----- Verisign Class 3 Public Primary Certification Authority - G2 ============================================================ -----BEGIN CERTIFICATE----- MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71 lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT 1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9 -----END CERTIFICATE----- GlobalSign Root CA ================== -----BEGIN CERTIFICATE----- MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== -----END CERTIFICATE----- GlobalSign Root CA - R2 ======================= -----BEGIN CERTIFICATE----- MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp 9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu 01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== -----END CERTIFICATE----- Verisign Class 3 Public Primary Certification Authority - G3 ============================================================ -----BEGIN CERTIFICATE----- MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj 055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC /Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== -----END CERTIFICATE----- Verisign Class 4 Public Primary Certification Authority - G3 ============================================================ -----BEGIN CERTIFICATE----- MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM 8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== -----END CERTIFICATE----- Entrust.net Premium 2048 Secure Server CA ========================================= -----BEGIN CERTIFICATE----- MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE= -----END CERTIFICATE----- Baltimore CyberTrust Root ========================= -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp -----END CERTIFICATE----- Equifax Secure Global eBusiness CA ================================== -----BEGIN CERTIFICATE----- MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV -----END CERTIFICATE----- Equifax Secure eBusiness CA 1 ============================= -----BEGIN CERTIFICATE----- MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ 1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5 lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+ KpYrtWKmpj29f5JZzVoqgrI3eQ== -----END CERTIFICATE----- AddTrust Low-Value Services Root ================================ -----BEGIN CERTIFICATE----- MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6 54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1 Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= -----END CERTIFICATE----- AddTrust External Root ====================== -----BEGIN CERTIFICATE----- MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 +iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy 2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= -----END CERTIFICATE----- AddTrust Public Services Root ============================= -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB /zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4 JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL +YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9 Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H EufOX1362KqxMy3ZdvJOOjMMK7MtkAY= -----END CERTIFICATE----- AddTrust Qualified Certificates Root ==================================== -----BEGIN CERTIFICATE----- MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx 64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3 KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/ BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE= -----END CERTIFICATE----- Entrust Root Certification Authority ==================================== -----BEGIN CERTIFICATE----- MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 -----END CERTIFICATE----- RSA Security 2048 v3 ==================== -----BEGIN CERTIFICATE----- MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7 Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP +Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/ MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj 0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395 nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA pKnXwiJPZ9d37CAFYd4= -----END CERTIFICATE----- GeoTrust Global CA ================== -----BEGIN CERTIFICATE----- MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet 8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm Mw== -----END CERTIFICATE----- GeoTrust Global CA 2 ==================== -----BEGIN CERTIFICATE----- MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/ NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7 srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF H4z1Ir+rzoPz4iIprn2DQKi6bA== -----END CERTIFICATE----- GeoTrust Universal CA ===================== -----BEGIN CERTIFICATE----- MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs 7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d 8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI P/rmMuGNG2+k5o7Y+SlIis5z/iw= -----END CERTIFICATE----- GeoTrust Universal CA 2 ======================= -----BEGIN CERTIFICATE----- MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP 20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG 8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 +/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ 4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS -----END CERTIFICATE----- America Online Root Certification Authority 1 ============================================= -----BEGIN CERTIFICATE----- MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP 8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft 3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 -----END CERTIFICATE----- America Online Root Certification Authority 2 ============================================= -----BEGIN CERTIFICATE----- MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8 f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0 gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn 6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6 Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p +DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh 1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk= -----END CERTIFICATE----- Visa eCommerce Root =================== -----BEGIN CERTIFICATE----- MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2 WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0 TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI /k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt 398znM/jra6O1I7mT1GvFpLgXPYHDw== -----END CERTIFICATE----- Certum Root CA ============== -----BEGIN CERTIFICATE----- MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ 89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+ GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/ 0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw== -----END CERTIFICATE----- Comodo AAA Services root ======================== -----BEGIN CERTIFICATE----- MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm 7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z 8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C 12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== -----END CERTIFICATE----- Comodo Secure Services root =========================== -----BEGIN CERTIFICATE----- MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP 9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm 4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H RR3B7Hzs/Sk= -----END CERTIFICATE----- Comodo Trusted Services root ============================ -----BEGIN CERTIFICATE----- MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7 3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y /9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6 juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB /zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O 9y5Xt5hwXsjEeLBi -----END CERTIFICATE----- QuoVadis Root CA ================ -----BEGIN CERTIFICATE----- MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi 5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi 5nrQNiOKSnQ2+Q== -----END CERTIFICATE----- QuoVadis Root CA 2 ================== -----BEGIN CERTIFICATE----- MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt 66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK +JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II 4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u -----END CERTIFICATE----- QuoVadis Root CA 3 ================== -----BEGIN CERTIFICATE----- MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp 8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= -----END CERTIFICATE----- Security Communication Root CA ============================== -----BEGIN CERTIFICATE----- MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw 8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX 5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g 0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ 6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi FL39vmwLAw== -----END CERTIFICATE----- Sonera Class 2 Root CA ====================== -----BEGIN CERTIFICATE----- MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 /Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt 0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH llpwrN9M -----END CERTIFICATE----- Staat der Nederlanden Root CA ============================= -----BEGIN CERTIFICATE----- MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6 22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== -----END CERTIFICATE----- UTN DATACorp SGC Root CA ======================== -----BEGIN CERTIFICATE----- MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA 9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv 33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9 BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3 DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0 I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI -----END CERTIFICATE----- UTN USERFirst Hardware Root CA ============================== -----BEGIN CERTIFICATE----- MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0 eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8 i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM //bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2 lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67 nfhmqA== -----END CERTIFICATE----- Camerfirma Chambers of Commerce Root ==================================== -----BEGIN CERTIFICATE----- MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1 erfutGWaIZDgqtCYvDi1czyL+Nw= -----END CERTIFICATE----- Camerfirma Global Chambersign Root ================================== -----BEGIN CERTIFICATE----- MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J 1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl 6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c 8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/ BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4 IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== -----END CERTIFICATE----- NetLock Notary (Class A) Root ============================= -----BEGIN CERTIFICATE----- MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC /tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7 tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6 4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0 ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5 ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM 8CgHrTwXZoi1/baI -----END CERTIFICATE----- XRamp Global CA Root ==================== -----BEGIN CERTIFICATE----- MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc /Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz 8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= -----END CERTIFICATE----- Go Daddy Class 2 CA =================== -----BEGIN CERTIFICATE----- MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv 2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b vZ8= -----END CERTIFICATE----- Starfield Class 2 CA ==================== -----BEGIN CERTIFICATE----- MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 QBFGmh95DmK/D5fs4C8fF5Q= -----END CERTIFICATE----- StartCom Certification Authority ================================ -----BEGIN CERTIFICATE----- MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt 2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z 6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT 37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0 Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5 LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh 3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3 fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl 1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/ lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro g14= -----END CERTIFICATE----- Taiwan GRCA =========== -----BEGIN CERTIFICATE----- MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O 1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk 7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy +fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS -----END CERTIFICATE----- Swisscom Root CA 1 ================== -----BEGIN CERTIFICATE----- MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4 MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn 7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5 haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9 MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3 1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW NY6E0F/6MBr1mmz0DlP5OlvRHA== -----END CERTIFICATE----- DigiCert Assured ID Root CA =========================== -----BEGIN CERTIFICATE----- MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO 9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW /lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF 66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i 8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe +o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== -----END CERTIFICATE----- DigiCert Global Root CA ======================= -----BEGIN CERTIFICATE----- MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H 4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y 7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm 8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= -----END CERTIFICATE----- DigiCert High Assurance EV Root CA ================================== -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K -----END CERTIFICATE----- Certplus Class 2 Primary CA =========================== -----BEGIN CERTIFICATE----- MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR 5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ 7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW //1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 l7+ijrRU -----END CERTIFICATE----- DST Root CA X3 ============== -----BEGIN CERTIFICATE----- MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ -----END CERTIFICATE----- DST ACES CA X6 ============== -----BEGIN CERTIFICATE----- MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2 5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3 oKfN5XozNmr6mis= -----END CERTIFICATE----- TURKTRUST Certificate Services Provider Root 1 ============================================== -----BEGIN CERTIFICATE----- MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0 acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ 8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4 W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46 sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H -----END CERTIFICATE----- TURKTRUST Certificate Services Provider Root 2 ============================================== -----BEGIN CERTIFICATE----- MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr 5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+ hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P 9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5 UrbnBEI= -----END CERTIFICATE----- SwissSign Gold CA - G2 ====================== -----BEGIN CERTIFICATE----- MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR 7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm 5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr 44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ -----END CERTIFICATE----- SwissSign Silver CA - G2 ======================== -----BEGIN CERTIFICATE----- MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG 9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm +/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH 6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P 4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L 3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx /uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u -----END CERTIFICATE----- GeoTrust Primary Certification Authority ======================================== -----BEGIN CERTIFICATE----- MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG 1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= -----END CERTIFICATE----- thawte Primary Root CA ====================== -----BEGIN CERTIFICATE----- MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ 1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== -----END CERTIFICATE----- VeriSign Class 3 Public Primary Certification Authority - G5 ============================================================ -----BEGIN CERTIFICATE----- MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq -----END CERTIFICATE----- SecureTrust CA ============== -----BEGIN CERTIFICATE----- MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b 01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR 3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= -----END CERTIFICATE----- Secure Global CA ================ -----BEGIN CERTIFICATE----- MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g 8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi 0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW -----END CERTIFICATE----- COMODO Certification Authority ============================== -----BEGIN CERTIFICATE----- MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH +7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV 4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA 1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN +8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== -----END CERTIFICATE----- Network Solutions Certificate Authority ======================================= -----BEGIN CERTIFICATE----- MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc /Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q 4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey -----END CERTIFICATE----- WellsSecure Public Root Certificate Authority ============================================= -----BEGIN CERTIFICATE----- MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1 iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13 i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8 bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0 bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ tylv2G0xffX8oRAHh84vWdw+WNs= -----END CERTIFICATE----- COMODO ECC Certification Authority ================================== -----BEGIN CERTIFICATE----- MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X 4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= -----END CERTIFICATE----- IGC/A ===== -----BEGIN CERTIFICATE----- MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2 TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF 0mBWWg== -----END CERTIFICATE----- Security Communication EV RootCA1 ================================= -----BEGIN CERTIFICATE----- MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO /VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4 bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK 9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 -----END CERTIFICATE----- OISTE WISeKey Global Root GA CA =============================== -----BEGIN CERTIFICATE----- MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ /yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 +vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= -----END CERTIFICATE----- Microsec e-Szigno Root CA ========================= -----BEGIN CERTIFICATE----- MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0 MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3 LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA 4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6 Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a 86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= -----END CERTIFICATE----- Certigna ======== -----BEGIN CERTIFICATE----- MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY 1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== -----END CERTIFICATE----- TC TrustCenter Class 2 CA II ============================ -----BEGIN CERTIFICATE----- MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2 xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB 7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk vQ== -----END CERTIFICATE----- TC TrustCenter Class 3 CA II ============================ -----BEGIN CERTIFICATE----- MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo 6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk 2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB 7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8 yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9 IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal 092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc 5A== -----END CERTIFICATE----- TC TrustCenter Universal CA I ============================= -----BEGIN CERTIFICATE----- MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG 1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3 ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a 7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY -----END CERTIFICATE----- Deutsche Telekom Root CA 2 ========================== -----BEGIN CERTIFICATE----- MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU Cm26OWMohpLzGITY+9HPBVZkVw== -----END CERTIFICATE----- ComSign Secured CA ================== -----BEGIN CERTIFICATE----- MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs 49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH 7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1 9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP 51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw== -----END CERTIFICATE----- Cybertrust Global Root ====================== -----BEGIN CERTIFICATE----- MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW 0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin 89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT 8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi 5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW WL1WMRJOEcgh4LMRkWXbtKaIOM5V -----END CERTIFICATE----- ePKI Root Certification Authority ================================= -----BEGIN CERTIFICATE----- MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX 12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= -----END CERTIFICATE----- T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3 ============================================================================================================================= -----BEGIN CERTIFICATE----- MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4 MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1 xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR 6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4 N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI= -----END CERTIFICATE----- Buypass Class 2 CA 1 ==================== -----BEGIN CERTIFICATE----- MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2 MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83 0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4 0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV 1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt 7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2 fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho -----END CERTIFICATE----- Buypass Class 3 CA 1 ==================== -----BEGIN CERTIFICATE----- MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1 MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0 n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c 1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7 pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5 htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915 -----END CERTIFICATE----- EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 ========================================================================== -----BEGIN CERTIFICATE----- MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0 Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB /wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK 1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt 2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9 AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT -----END CERTIFICATE----- certSIGN ROOT CA ================ -----BEGIN CERTIFICATE----- MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD 0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD -----END CERTIFICATE----- CNNIC ROOT ========== -----BEGIN CERTIFICATE----- MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5 Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8 BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2 G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m mxE= -----END CERTIFICATE----- ApplicationCA - Japanese Government =================================== -----BEGIN CERTIFICATE----- MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4 fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g /DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL rosot4LKGAfmt1t06SAZf7IbiVQ= -----END CERTIFICATE----- GeoTrust Primary Certification Authority - G3 ============================================= -----BEGIN CERTIFICATE----- MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr 2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt -----END CERTIFICATE----- thawte Primary Root CA - G2 =========================== -----BEGIN CERTIFICATE----- MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== -----END CERTIFICATE----- thawte Primary Root CA - G3 =========================== -----BEGIN CERTIFICATE----- MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC +BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY 7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC 8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= -----END CERTIFICATE----- GeoTrust Primary Certification Authority - G2 ============================================= -----BEGIN CERTIFICATE----- MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 npaqBA+K -----END CERTIFICATE----- VeriSign Universal Root Certification Authority =============================================== -----BEGIN CERTIFICATE----- MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj 1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 mJO37M2CYfE45k+XmCpajQ== -----END CERTIFICATE----- VeriSign Class 3 Public Primary Certification Authority - G4 ============================================================ -----BEGIN CERTIFICATE----- MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB /zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== -----END CERTIFICATE----- NetLock Arany (Class Gold) Főtanúsítvány ============================================ -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu 0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw /HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= -----END CERTIFICATE----- Staat der Nederlanden Root CA - G2 ================================== -----BEGIN CERTIFICATE----- MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ 5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65 48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737 qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz +51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm 66+KAQ== -----END CERTIFICATE----- CA Disig ======== -----BEGIN CERTIFICATE----- MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3 mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA 4Z7CRneC9VkGjCFMhwnN5ag= -----END CERTIFICATE----- Juur-SK ======= -----BEGIN CERTIFICATE----- MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC +Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678 IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2 yyqcjg== -----END CERTIFICATE----- Hongkong Post Root CA 1 ======================= -----BEGIN CERTIFICATE----- MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== -----END CERTIFICATE----- SecureSign RootCA11 =================== -----BEGIN CERTIFICATE----- MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= -----END CERTIFICATE----- ACEDICOM Root ============= -----BEGIN CERTIFICATE----- MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4 MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2 3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9 2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz 4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU 9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1 ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA== -----END CERTIFICATE----- Microsec e-Szigno Root CA 2009 ============================== -----BEGIN CERTIFICATE----- MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG 0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm 1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi LXpUq3DDfSJlgnCW -----END CERTIFICATE----- E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi =================================================== -----BEGIN CERTIFICATE----- MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3 MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0 cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY 8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk 9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4 Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX -----END CERTIFICATE----- GlobalSign Root CA - R3 ======================= -----BEGIN CERTIFICATE----- MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ 0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r kpeDMdmztcpHWD9f -----END CERTIFICATE----- Autoridad de Certificacion Firmaprofesional CIF A62634068 ========================================================= -----BEGIN CERTIFICATE----- MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY 7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx 51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi 6Et8Vcad+qMUu2WFbm5PEn4KPJ2V -----END CERTIFICATE----- Izenpe.com ========== -----BEGIN CERTIFICATE----- MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ 03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU +zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK 0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ 0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== -----END CERTIFICATE----- Chambers of Commerce Root - 2008 ================================ -----BEGIN CERTIFICATE----- MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ 0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH 3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF 9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ -----END CERTIFICATE----- Global Chambersign Root - 2008 ============================== -----BEGIN CERTIFICATE----- MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB /gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp 1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG /5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg 9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z 09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B -----END CERTIFICATE----- Go Daddy Root Certificate Authority - G2 ======================================== -----BEGIN CERTIFICATE----- MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq 9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD +qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r 5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 -----END CERTIFICATE----- Starfield Root Certificate Authority - G2 ========================================= -----BEGIN CERTIFICATE----- MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx 4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 -----END CERTIFICATE----- Starfield Services Root Certificate Authority - G2 ================================================== -----BEGIN CERTIFICATE----- MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 -----END CERTIFICATE----- AffirmTrust Commercial ====================== -----BEGIN CERTIFICATE----- MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv 0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= -----END CERTIFICATE----- AffirmTrust Networking ====================== -----BEGIN CERTIFICATE----- MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 /PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 /ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= -----END CERTIFICATE----- AffirmTrust Premium =================== -----BEGIN CERTIFICATE----- MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV 5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs +7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 /bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo +Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB /wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC 6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK +4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== -----END CERTIFICATE----- AffirmTrust Premium ECC ======================= -----BEGIN CERTIFICATE----- MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X 57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM eQ== -----END CERTIFICATE----- Certum Trusted Network CA ========================= -----BEGIN CERTIFICATE----- MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI 03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= -----END CERTIFICATE----- Certinomis - Autorité Racine ============================= -----BEGIN CERTIFICATE----- MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw 2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g 530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna 4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40 nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/ vgt2Fl43N+bYdJeimUV5 -----END CERTIFICATE----- Root CA Generalitat Valenciana ============================== -----BEGIN CERTIFICATE----- MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290 IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3 WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2 F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0 dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63 NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt +GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= -----END CERTIFICATE----- A-Trust-nQual-03 ================ -----BEGIN CERTIFICATE----- MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0 ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1 c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4 iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40 ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6 ahq97BvIxYSazQ== -----END CERTIFICATE----- TWCA Root Certification Authority ================================= -----BEGIN CERTIFICATE----- MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP 4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG 9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== -----END CERTIFICATE----- Security Communication RootCA2 ============================== -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ +T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R 3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk 3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 -----END CERTIFICATE----- EC-ACC ====== -----BEGIN CERTIFICATE----- MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw 0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D 5EI= -----END CERTIFICATE----- Hellenic Academic and Research Institutions RootCA 2011 ======================================================= -----BEGIN CERTIFICATE----- MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI 1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa 71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u 8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH 3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD /md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N 7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 -----END CERTIFICATE----- Actalis Authentication Root CA ============================== -----BEGIN CERTIFICATE----- MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6 zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2 oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7 hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8 EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5 jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0 JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+ Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC 4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo 2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== -----END CERTIFICATE----- Trustis FPS Root CA =================== -----BEGIN CERTIFICATE----- MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P 8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl iB6XzCGcKQENZetX2fNXlrtIzYE= -----END CERTIFICATE----- StartCom Certification Authority ================================ -----BEGIN CERTIFICATE----- MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt 2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z 6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT 37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0 dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0 aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0 aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5 fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA 2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8= -----END CERTIFICATE----- StartCom Certification Authority G2 =================================== -----BEGIN CERTIFICATE----- MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN U3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg RzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UE ChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3Jp dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O o1XJJZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsDvfOpL9HG 4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi Aez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/Q0kGi4xDuFby2X8hQxfqp0iVAXV16iul Q5XqFYSdCI0mblWbq9zSOdIxHWDirMxWRST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbs O+wmETRIjfaAKxojAuuKHDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8H vKTlXcxNnw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM0D4L nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS FGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9Ha90OrInwMEePnWjFqmveiJdnxMa z6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHgTuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8E BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJ KoZIhvcNAQELBQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K 2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfXUfEpY9Z1zRbk J4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl6/2o1PXWT6RbdejF0mCy2wl+ JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG /+gyRr61M3Z3qAFdlsHB1b6uJcDJHgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTc nIhT76IxW1hPkWLIwpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/Xld blhYXzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5lIxKVCCIc l85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoohdVddLHRDiBYmxOlsGOm 7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulrso8uBtjRkcfGEvRM/TAXw8HaOFvjqerm obp573PYtlNXLfbQ4ddI -----END CERTIFICATE----- Buypass Class 2 Root CA ======================= -----BEGIN CERTIFICATE----- MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn 9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b /+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN rJgWVqA= -----END CERTIFICATE----- Buypass Class 3 Root CA ======================= -----BEGIN CERTIFICATE----- MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR 5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh 7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH 2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV /afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz 6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi Cp/HuZc= -----END CERTIFICATE----- T-TeleSec GlobalRoot Class 3 ============================ -----BEGIN CERTIFICATE----- MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK 9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W 0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== -----END CERTIFICATE----- EE Certification Centre Root CA =============================== -----BEGIN CERTIFICATE----- MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw 93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU 3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM dcGWxZ0= -----END CERTIFICATE----- TURKTRUST Certificate Services Provider Root 2007 ================================================= -----BEGIN CERTIFICATE----- MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK poRq0Tl9 -----END CERTIFICATE----- D-TRUST Root Class 3 CA 2 2009 ============================== -----BEGIN CERTIFICATE----- MIIEMzCCAxugAwIBAgIDCYPzMA0GCSqGSIb3DQEBCwUAME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQK DAxELVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTAe Fw0wOTExMDUwODM1NThaFw0yOTExMDUwODM1NThaME0xCzAJBgNVBAYTAkRFMRUwEwYDVQQKDAxE LVRydXN0IEdtYkgxJzAlBgNVBAMMHkQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgMjAwOTCCASIw DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOySs96R+91myP6Oi/WUEWJNTrGa9v+2wBoqOAD ER03UAifTUpolDWzU9GUY6cgVq/eUXjsKj3zSEhQPgrfRlWLJ23DEE0NkVJD2IfgXU42tSHKXzlA BF9bfsyjxiupQB7ZNoTWSPOSHjRGICTBpFGOShrvUD9pXRl/RcPHAY9RySPocq60vFYJfxLLHLGv KZAKyVXMD9O0Gu1HNVpK7ZxzBCHQqr0ME7UAyiZsxGsMlFqVlNpQmvH/pStmMaTJOKDfHR+4CS7z p+hnUquVH+BGPtikw8paxTGA6Eian5Rp/hnd2HN8gcqW3o7tszIFZYQ05ub9VxC1X3a/L7AQDcUC AwEAAaOCARowggEWMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFP3aFMSfMN4hvR5COfyrYyNJ 4PGEMA4GA1UdDwEB/wQEAwIBBjCB0wYDVR0fBIHLMIHIMIGAoH6gfIZ6bGRhcDovL2RpcmVjdG9y eS5kLXRydXN0Lm5ldC9DTj1ELVRSVVNUJTIwUm9vdCUyMENsYXNzJTIwMyUyMENBJTIwMiUyMDIw MDksTz1ELVRydXN0JTIwR21iSCxDPURFP2NlcnRpZmljYXRlcmV2b2NhdGlvbmxpc3QwQ6BBoD+G PWh0dHA6Ly93d3cuZC10cnVzdC5uZXQvY3JsL2QtdHJ1c3Rfcm9vdF9jbGFzc18zX2NhXzJfMjAw OS5jcmwwDQYJKoZIhvcNAQELBQADggEBAH+X2zDI36ScfSF6gHDOFBJpiBSVYEQBrLLpME+bUMJm 2H6NMLVwMeniacfzcNsgFYbQDfC+rAF1hM5+n02/t2A7nPPKHeJeaNijnZflQGDSNiH+0LS4F9p0 o3/U37CYAqxva2ssJSRyoWXuJVrl5jLn8t+rSfrzkGkj2wTZ51xY/GXUl77M/C4KzCUqNQT4YJEV dT1B/yMfGchs64JTBKbkTCJNjYy6zltz7GRUUG3RnFX7acM2w4y8PIWmawomDeCTmGCufsYkl4ph X5GOZpIJhzbNi5stPvZR1FDUWSi9g/LMKHtThm3YJohw1+qRzT65ysCQblrGXnRl11z+o+I= -----END CERTIFICATE----- D-TRUST Root Class 3 CA 2 EV 2009 ================================= -----BEGIN CERTIFICATE----- MIIEQzCCAyugAwIBAgIDCYP0MA0GCSqGSIb3DQEBCwUAMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw OTAeFw0wOTExMDUwODUwNDZaFw0yOTExMDUwODUwNDZaMFAxCzAJBgNVBAYTAkRFMRUwEwYDVQQK DAxELVRydXN0IEdtYkgxKjAoBgNVBAMMIUQtVFJVU1QgUm9vdCBDbGFzcyAzIENBIDIgRVYgMjAw OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJnxhDRwui+3MKCOvXwEz75ivJn9gpfS egpnljgJ9hBOlSJzmY3aFS3nBfwZcyK3jpgAvDw9rKFs+9Z5JUut8Mxk2og+KbgPCdM03TP1YtHh zRnp7hhPTFiu4h7WDFsVWtg6uMQYZB7jM7K1iXdODL/ZlGsTl28So/6ZqQTMFexgaDbtCHu39b+T 7WYxg4zGcTSHThfqr4uRjRxWQa4iN1438h3Z0S0NL2lRp75mpoo6Kr3HGrHhFPC+Oh25z1uxav60 sUYgovseO3Dvk5h9jHOW8sXvhXCtKSb8HgQ+HKDYD8tSg2J87otTlZCpV6LqYQXY+U3EJ/pure35 11H3a6UCAwEAAaOCASQwggEgMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNOUikxiEyoZLsyv cop9NteaHNxnMA4GA1UdDwEB/wQEAwIBBjCB3QYDVR0fBIHVMIHSMIGHoIGEoIGBhn9sZGFwOi8v ZGlyZWN0b3J5LmQtdHJ1c3QubmV0L0NOPUQtVFJVU1QlMjBSb290JTIwQ2xhc3MlMjAzJTIwQ0El MjAyJTIwRVYlMjAyMDA5LE89RC1UcnVzdCUyMEdtYkgsQz1ERT9jZXJ0aWZpY2F0ZXJldm9jYXRp b25saXN0MEagRKBChkBodHRwOi8vd3d3LmQtdHJ1c3QubmV0L2NybC9kLXRydXN0X3Jvb3RfY2xh c3NfM19jYV8yX2V2XzIwMDkuY3JsMA0GCSqGSIb3DQEBCwUAA4IBAQA07XtaPKSUiO8aEXUHL7P+ PPoeUSbrh/Yp3uDx1MYkCenBz1UbtDDZzhr+BlGmFaQt77JLvyAoJUnRpjZ3NOhk31KxEcdzes05 nsKtjHEh8lprr988TlWvsoRlFIm5d8sqMb7Po23Pb0iUMkZv53GMoKaEGTcH8gNFCSuGdXzfX2lX ANtu2KZyIktQ1HWYVt+3GP9DQ1CuekR78HlR10M9p9OB0/DJT7naxpeG0ILD5EJt/rDiZE4OJudA NCa1CInXCGNjOCd1HjPqbqjdn5lPdE2BiYBL3ZqXKVwvvoFBuYz/6n1gBp7N1z3TLqMVvKjmJuVv w9y4AyHqnxbxLFS1 -----END CERTIFICATE----- PSCProcert ========== -----BEGIN CERTIFICATE----- MIIJhjCCB26gAwIBAgIBCzANBgkqhkiG9w0BAQsFADCCAR4xPjA8BgNVBAMTNUF1dG9yaWRhZCBk ZSBDZXJ0aWZpY2FjaW9uIFJhaXogZGVsIEVzdGFkbyBWZW5lem9sYW5vMQswCQYDVQQGEwJWRTEQ MA4GA1UEBxMHQ2FyYWNhczEZMBcGA1UECBMQRGlzdHJpdG8gQ2FwaXRhbDE2MDQGA1UEChMtU2lz dGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMUMwQQYDVQQLEzpTdXBl cmludGVuZGVuY2lhIGRlIFNlcnZpY2lvcyBkZSBDZXJ0aWZpY2FjaW9uIEVsZWN0cm9uaWNhMSUw IwYJKoZIhvcNAQkBFhZhY3JhaXpAc3VzY2VydGUuZ29iLnZlMB4XDTEwMTIyODE2NTEwMFoXDTIw MTIyNTIzNTk1OVowgdExJjAkBgkqhkiG9w0BCQEWF2NvbnRhY3RvQHByb2NlcnQubmV0LnZlMQ8w DQYDVQQHEwZDaGFjYW8xEDAOBgNVBAgTB01pcmFuZGExKjAoBgNVBAsTIVByb3ZlZWRvciBkZSBD ZXJ0aWZpY2Fkb3MgUFJPQ0VSVDE2MDQGA1UEChMtU2lzdGVtYSBOYWNpb25hbCBkZSBDZXJ0aWZp Y2FjaW9uIEVsZWN0cm9uaWNhMQswCQYDVQQGEwJWRTETMBEGA1UEAxMKUFNDUHJvY2VydDCCAiIw DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANW39KOUM6FGqVVhSQ2oh3NekS1wwQYalNo97BVC wfWMrmoX8Yqt/ICV6oNEolt6Vc5Pp6XVurgfoCfAUFM+jbnADrgV3NZs+J74BCXfgI8Qhd19L3uA 3VcAZCP4bsm+lU/hdezgfl6VzbHvvnpC2Mks0+saGiKLt38GieU89RLAu9MLmV+QfI4tL3czkkoh RqipCKzx9hEC2ZUWno0vluYC3XXCFCpa1sl9JcLB/KpnheLsvtF8PPqv1W7/U0HU9TI4seJfxPmO EO8GqQKJ/+MMbpfg353bIdD0PghpbNjU5Db4g7ayNo+c7zo3Fn2/omnXO1ty0K+qP1xmk6wKImG2 0qCZyFSTXai20b1dCl53lKItwIKOvMoDKjSuc/HUtQy9vmebVOvh+qBa7Dh+PsHMosdEMXXqP+UH 0quhJZb25uSgXTcYOWEAM11G1ADEtMo88aKjPvM6/2kwLkDd9p+cJsmWN63nOaK/6mnbVSKVUyqU td+tFjiBdWbjxywbk5yqjKPK2Ww8F22c3HxT4CAnQzb5EuE8XL1mv6JpIzi4mWCZDlZTOpx+FIyw Bm/xhnaQr/2v/pDGj59/i5IjnOcVdo/Vi5QTcmn7K2FjiO/mpF7moxdqWEfLcU8UC17IAggmosvp r2uKGcfLFFb14dq12fy/czja+eevbqQ34gcnAgMBAAGjggMXMIIDEzASBgNVHRMBAf8ECDAGAQH/ AgEBMDcGA1UdEgQwMC6CD3N1c2NlcnRlLmdvYi52ZaAbBgVghl4CAqASDBBSSUYtRy0yMDAwNDAz Ni0wMB0GA1UdDgQWBBRBDxk4qpl/Qguk1yeYVKIXTC1RVDCCAVAGA1UdIwSCAUcwggFDgBStuyId xuDSAaj9dlBSk+2YwU2u06GCASakggEiMIIBHjE+MDwGA1UEAxM1QXV0b3JpZGFkIGRlIENlcnRp ZmljYWNpb24gUmFpeiBkZWwgRXN0YWRvIFZlbmV6b2xhbm8xCzAJBgNVBAYTAlZFMRAwDgYDVQQH EwdDYXJhY2FzMRkwFwYDVQQIExBEaXN0cml0byBDYXBpdGFsMTYwNAYDVQQKEy1TaXN0ZW1hIE5h Y2lvbmFsIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExQzBBBgNVBAsTOlN1cGVyaW50ZW5k ZW5jaWEgZGUgU2VydmljaW9zIGRlIENlcnRpZmljYWNpb24gRWxlY3Ryb25pY2ExJTAjBgkqhkiG 9w0BCQEWFmFjcmFpekBzdXNjZXJ0ZS5nb2IudmWCAQowDgYDVR0PAQH/BAQDAgEGME0GA1UdEQRG MESCDnByb2NlcnQubmV0LnZloBUGBWCGXgIBoAwMClBTQy0wMDAwMDKgGwYFYIZeAgKgEgwQUklG LUotMzE2MzUzNzMtNzB2BgNVHR8EbzBtMEagRKBChkBodHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52 ZS9sY3IvQ0VSVElGSUNBRE8tUkFJWi1TSEEzODRDUkxERVIuY3JsMCOgIaAfhh1sZGFwOi8vYWNy YWl6LnN1c2NlcnRlLmdvYi52ZTA3BggrBgEFBQcBAQQrMCkwJwYIKwYBBQUHMAGGG2h0dHA6Ly9v Y3NwLnN1c2NlcnRlLmdvYi52ZTBBBgNVHSAEOjA4MDYGBmCGXgMBAjAsMCoGCCsGAQUFBwIBFh5o dHRwOi8vd3d3LnN1c2NlcnRlLmdvYi52ZS9kcGMwDQYJKoZIhvcNAQELBQADggIBACtZ6yKZu4Sq T96QxtGGcSOeSwORR3C7wJJg7ODU523G0+1ng3dS1fLld6c2suNUvtm7CpsR72H0xpkzmfWvADmN g7+mvTV+LFwxNG9s2/NkAZiqlCxB3RWGymspThbASfzXg0gTB1GEMVKIu4YXx2sviiCtxQuPcD4q uxtxj7mkoP3YldmvWb8lK5jpY5MvYB7Eqvh39YtsL+1+LrVPQA3uvFd359m21D+VJzog1eWuq2w1 n8GhHVnchIHuTQfiSLaeS5UtQbHh6N5+LwUeaO6/u5BlOsju6rEYNxxik6SgMexxbJHmpHmJWhSn FFAFTKQAVzAswbVhltw+HoSvOULP5dAssSS830DD7X9jSr3hTxJkhpXzsOfIt+FTvZLm8wyWuevo 5pLtp4EJFAv8lXrPj9Y0TzYS3F7RNHXGRoAvlQSMx4bEqCaJqD8Zm4G7UaRKhqsLEQ+xrmNTbSjq 3TNWOByyrYDT13K9mmyZY+gAu0F2BbdbmRiKw7gSXFbPVgx96OLP7bx0R/vu0xdOIk9W/1DzLuY5 poLWccret9W6aAjtmcz9opLLabid+Qqkpj5PkygqYWwHJgD/ll9ohri4zspV4KuxPX+Y1zMOWj3Y eMLEYC/HYvBhkdI4sPaeVdtAgAUSM84dkpvRabP/v/GSCmE1P93+hvS84Bpxs2Km -----END CERTIFICATE----- China Internet Network Information Center EV Certificates Root ============================================================== -----BEGIN CERTIFICATE----- MIID9zCCAt+gAwIBAgIESJ8AATANBgkqhkiG9w0BAQUFADCBijELMAkGA1UEBhMCQ04xMjAwBgNV BAoMKUNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyMUcwRQYDVQQDDD5D aGluYSBJbnRlcm5ldCBOZXR3b3JrIEluZm9ybWF0aW9uIENlbnRlciBFViBDZXJ0aWZpY2F0ZXMg Um9vdDAeFw0xMDA4MzEwNzExMjVaFw0zMDA4MzEwNzExMjVaMIGKMQswCQYDVQQGEwJDTjEyMDAG A1UECgwpQ2hpbmEgSW50ZXJuZXQgTmV0d29yayBJbmZvcm1hdGlvbiBDZW50ZXIxRzBFBgNVBAMM PkNoaW5hIEludGVybmV0IE5ldHdvcmsgSW5mb3JtYXRpb24gQ2VudGVyIEVWIENlcnRpZmljYXRl cyBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAm35z7r07eKpkQ0H1UN+U8i6y jUqORlTSIRLIOTJCBumD1Z9S7eVnAztUwYyZmczpwA//DdmEEbK40ctb3B75aDFk4Zv6dOtouSCV 98YPjUesWgbdYavi7NifFy2cyjw1l1VxzUOFsUcW9SxTgHbP0wBkvUCZ3czY28Sf1hNfQYOL+Q2H klY0bBoQCxfVWhyXWIQ8hBouXJE0bhlffxdpxWXvayHG1VA6v2G5BY3vbzQ6sm8UY78WO5upKv23 KzhmBsUs4qpnHkWnjQRmQvaPK++IIGmPMowUc9orhpFjIpryp9vOiYurXccUwVswah+xt54ugQEC 7c+WXmPbqOY4twIDAQABo2MwYTAfBgNVHSMEGDAWgBR8cks5x8DbYqVPm6oYNJKiyoOCWTAPBgNV HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUfHJLOcfA22KlT5uqGDSSosqD glkwDQYJKoZIhvcNAQEFBQADggEBACrDx0M3j92tpLIM7twUbY8opJhJywyA6vPtI2Z1fcXTIWd5 0XPFtQO3WKwMVC/GVhMPMdoG52U7HW8228gd+f2ABsqjPWYWqJ1MFn3AlUa1UeTiH9fqBk1jjZaM 7+czV0I664zBechNdn3e9rG3geCg+aF4RhcaVpjwTj2rHO3sOdwHSPdj/gauwqRcalsyiMXHM4Ws ZkJHwlgkmeHlPuV1LI5D1l08eB6olYIpUNHRFrrvwb562bTYzB5MRuF3sTGrvSrIzo9uoV1/A3U0 5K2JRVRevq4opbs/eHnrc7MKDf2+yfdWrPa37S+bISnHOLaVxATywy39FCqQmbkHzJ8= -----END CERTIFICATE----- Swisscom Root CA 2 ================== -----BEGIN CERTIFICATE----- MIIF2TCCA8GgAwIBAgIQHp4o6Ejy5e/DfEoeWhhntjANBgkqhkiG9w0BAQsFADBkMQswCQYDVQQG EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMjAeFw0xMTA2MjQwODM4MTRaFw0zMTA2 MjUwNzM4MTRaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAyMIIC IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAlUJOhJ1R5tMJ6HJaI2nbeHCOFvErjw0DzpPM LgAIe6szjPTpQOYXTKueuEcUMncy3SgM3hhLX3af+Dk7/E6J2HzFZ++r0rk0X2s682Q2zsKwzxNo ysjL67XiPS4h3+os1OD5cJZM/2pYmLcX5BtS5X4HAB1f2uY+lQS3aYg5oUFgJWFLlTloYhyxCwWJ wDaCFCE/rtuh/bxvHGCGtlOUSbkrRsVPACu/obvLP+DHVxxX6NZp+MEkUp2IVd3Chy50I9AU/SpH Wrumnf2U5NGKpV+GY3aFy6//SSj8gO1MedK75MDvAe5QQQg1I3ArqRa0jG6F6bYRzzHdUyYb3y1a SgJA/MTAtukxGggo5WDDH8SQjhBiYEQN7Aq+VRhxLKX0srwVYv8c474d2h5Xszx+zYIdkeNL6yxS NLCK/RJOlrDrcH+eOfdmQrGrrFLadkBXeyq96G4DsguAhYidDMfCd7Camlf0uPoTXGiTOmekl9Ab mbeGMktg2M7v0Ax/lZ9vh0+Hio5fCHyqW/xavqGRn1V9TrALacywlKinh/LTSlDcX3KwFnUey7QY Ypqwpzmqm59m2I2mbJYV4+by+PGDYmy7Velhk6M99bFXi08jsJvllGov34zflVEpYKELKeRcVVi3 qPyZ7iVNTA6z00yPhOgpD/0QVAKFyPnlw4vP5w8CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw HQYDVR0hBBYwFDASBgdghXQBUwIBBgdghXQBUwIBMBIGA1UdEwEB/wQIMAYBAf8CAQcwHQYDVR0O BBYEFE0mICKJS9PVpAqhb97iEoHF8TwuMB8GA1UdIwQYMBaAFE0mICKJS9PVpAqhb97iEoHF8Twu MA0GCSqGSIb3DQEBCwUAA4ICAQAyCrKkG8t9voJXiblqf/P0wS4RfbgZPnm3qKhyN2abGu2sEzsO v2LwnN+ee6FTSA5BesogpxcbtnjsQJHzQq0Qw1zv/2BZf82Fo4s9SBwlAjxnffUy6S8w5X2lejjQ 82YqZh6NM4OKb3xuqFp1mrjX2lhIREeoTPpMSQpKwhI3qEAMw8jh0FcNlzKVxzqfl9NX+Ave5XLz o9v/tdhZsnPdTSpxsrpJ9csc1fV5yJmz/MFMdOO0vSk3FQQoHt5FRnDsr7p4DooqzgB53MBfGWcs a0vvaGgLQ+OswWIJ76bdZWGgr4RVSJFSHMYlkSrQwSIjYVmvRRGFHQEkNI/Ps/8XciATwoCqISxx OQ7Qj1zB09GOInJGTB2Wrk9xseEFKZZZ9LuedT3PDTcNYtsmjGOpI99nBjx8Oto0QuFmtEYE3saW mA9LSHokMnWRn6z3aOkquVVlzl1h0ydw2Df+n7mvoC5Wt6NlUe07qxS/TFED6F+KBZvuim6c779o +sjaC+NCydAXFJy3SuCvkychVSa1ZC+N8f+mQAWFBVzKBxlcCxMoTFh/wqXvRdpg065lYZ1Tg3TC rvJcwhbtkj6EPnNgiLx29CzP0H1907he0ZESEOnN3col49XtmS++dYFLJPlFRpTJKSFTnCZFqhMX 5OfNeOI5wSsSnqaeG8XmDtkx2Q== -----END CERTIFICATE----- Swisscom Root EV CA 2 ===================== -----BEGIN CERTIFICATE----- MIIF4DCCA8igAwIBAgIRAPL6ZOJ0Y9ON/RAdBB92ylgwDQYJKoZIhvcNAQELBQAwZzELMAkGA1UE BhMCY2gxETAPBgNVBAoTCFN3aXNzY29tMSUwIwYDVQQLExxEaWdpdGFsIENlcnRpZmljYXRlIFNl cnZpY2VzMR4wHAYDVQQDExVTd2lzc2NvbSBSb290IEVWIENBIDIwHhcNMTEwNjI0MDk0NTA4WhcN MzEwNjI1MDg0NTA4WjBnMQswCQYDVQQGEwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsT HERpZ2l0YWwgQ2VydGlmaWNhdGUgU2VydmljZXMxHjAcBgNVBAMTFVN3aXNzY29tIFJvb3QgRVYg Q0EgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMT3HS9X6lds93BdY7BxUglgRCgz o3pOCvrY6myLURYaVa5UJsTMRQdBTxB5f3HSek4/OE6zAMaVylvNwSqD1ycfMQ4jFrclyxy0uYAy Xhqdk/HoPGAsp15XGVhRXrwsVgu42O+LgrQ8uMIkqBPHoCE2G3pXKSinLr9xJZDzRINpUKTk4Rti GZQJo/PDvO/0vezbE53PnUgJUmfANykRHvvSEaeFGHR55E+FFOtSN+KxRdjMDUN/rhPSays/p8Li qG12W0OfvrSdsyaGOx9/5fLoZigWJdBLlzin5M8J0TbDC77aO0RYjb7xnglrPvMyxyuHxuxenPaH Za0zKcQvidm5y8kDnftslFGXEBuGCxobP/YCfnvUxVFkKJ3106yDgYjTdLRZncHrYTNaRdHLOdAG alNgHa/2+2m8atwBz735j9m9W8E6X47aD0upm50qKGsaCnw8qyIL5XctcfaCNYGu+HuB5ur+rPQa m3Rc6I8k9l2dRsQs0h4rIWqDJ2dVSqTjyDKXZpBy2uPUZC5f46Fq9mDU5zXNysRojddxyNMkM3Ox bPlq4SjbX8Y96L5V5jcb7STZDxmPX2MYWFCBUWVv8p9+agTnNCRxunZLWB4ZvRVgRaoMEkABnRDi xzgHcgplwLa7JSnaFp6LNYth7eVxV4O1PHGf40+/fh6Bn0GXAgMBAAGjgYYwgYMwDgYDVR0PAQH/ BAQDAgGGMB0GA1UdIQQWMBQwEgYHYIV0AVMCAgYHYIV0AVMCAjASBgNVHRMBAf8ECDAGAQH/AgED MB0GA1UdDgQWBBRF2aWBbj2ITY1x0kbBbkUe88SAnTAfBgNVHSMEGDAWgBRF2aWBbj2ITY1x0kbB bkUe88SAnTANBgkqhkiG9w0BAQsFAAOCAgEAlDpzBp9SSzBc1P6xXCX5145v9Ydkn+0UjrgEjihL j6p7jjm02Vj2e6E1CqGdivdj5eu9OYLU43otb98TPLr+flaYC/NUn81ETm484T4VvwYmneTwkLbU wp4wLh/vx3rEUMfqe9pQy3omywC0Wqu1kx+AiYQElY2NfwmTv9SoqORjbdlk5LgpWgi/UOGED1V7 XwgiG/W9mR4U9s70WBCCswo9GcG/W6uqmdjyMb3lOGbcWAXH7WMaLgqXfIeTK7KK4/HsGOV1timH 59yLGn602MnTihdsfSlEvoqq9X46Lmgxk7lq2prg2+kupYTNHAq4Sgj5nPFhJpiTt3tm7JFe3VE/ 23MPrQRYCd0EApUKPtN236YQHoA96M2kZNEzx5LH4k5E4wnJTsJdhw4Snr8PyQUQ3nqjsTzyP6Wq J3mtMX0f/fwZacXduT98zca0wjAefm6S139hdlqP65VNvBFuIXxZN5nQBrz5Bm0yFqXZaajh3DyA HmBR3NdUIR7KYndP+tiPsys6DXhyyWhBWkdKwqPrGtcKqzwyVcgKEZzfdNbwQBUdyLmPtTbFr/gi uMod89a2GQ+fYWVq6nTIfI/DT11lgh/ZDYnadXL77/FHZxOzyNEZiCcmmpl5fx7kLD977vHeTYuW l8PVP3wbI+2ksx0WckNLIOFZfsLorSa/ovc= -----END CERTIFICATE----- CA Disig Root R1 ================ -----BEGIN CERTIFICATE----- MIIFaTCCA1GgAwIBAgIJAMMDmu5QkG4oMA0GCSqGSIb3DQEBBQUAMFIxCzAJBgNVBAYTAlNLMRMw EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp ZyBSb290IFIxMB4XDTEyMDcxOTA5MDY1NloXDTQyMDcxOTA5MDY1NlowUjELMAkGA1UEBhMCU0sx EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp c2lnIFJvb3QgUjEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCqw3j33Jijp1pedxiy 3QRkD2P9m5YJgNXoqqXinCaUOuiZc4yd39ffg/N4T0Dhf9Kn0uXKE5Pn7cZ3Xza1lK/oOI7bm+V8 u8yN63Vz4STN5qctGS7Y1oprFOsIYgrY3LMATcMjfF9DCCMyEtztDK3AfQ+lekLZWnDZv6fXARz2 m6uOt0qGeKAeVjGu74IKgEH3G8muqzIm1Cxr7X1r5OJeIgpFy4QxTaz+29FHuvlglzmxZcfe+5nk CiKxLU3lSCZpq+Kq8/v8kiky6bM+TR8noc2OuRf7JT7JbvN32g0S9l3HuzYQ1VTW8+DiR0jm3hTa YVKvJrT1cU/J19IG32PK/yHoWQbgCNWEFVP3Q+V8xaCJmGtzxmjOZd69fwX3se72V6FglcXM6pM6 vpmumwKjrckWtc7dXpl4fho5frLABaTAgqWjR56M6ly2vGfb5ipN0gTco65F97yLnByn1tUD3AjL LhbKXEAz6GfDLuemROoRRRw1ZS0eRWEkG4IupZ0zXWX4Qfkuy5Q/H6MMMSRE7cderVC6xkGbrPAX ZcD4XW9boAo0PO7X6oifmPmvTiT6l7Jkdtqr9O3jw2Dv1fkCyC2fg69naQanMVXVz0tv/wQFx1is XxYb5dKj6zHbHzMVTdDypVP1y+E9Tmgt2BLdqvLmTZtJ5cUoobqwWsagtQIDAQABo0IwQDAPBgNV HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUiQq0OJMa5qvum5EY+fU8PjXQ 04IwDQYJKoZIhvcNAQEFBQADggIBADKL9p1Kyb4U5YysOMo6CdQbzoaz3evUuii+Eq5FLAR0rBNR xVgYZk2C2tXck8An4b58n1KeElb21Zyp9HWc+jcSjxyT7Ff+Bw+r1RL3D65hXlaASfX8MPWbTx9B LxyE04nH4toCdu0Jz2zBuByDHBb6lM19oMgY0sidbvW9adRtPTXoHqJPYNcHKfyyo6SdbhWSVhlM CrDpfNIZTUJG7L399ldb3Zh+pE3McgODWF3vkzpBemOqfDqo9ayk0d2iLbYq/J8BjuIQscTK5Gfb VSUZP/3oNn6z4eGBrxEWi1CXYBmCAMBrTXO40RMHPuq2MU/wQppt4hF05ZSsjYSVPCGvxdpHyN85 YmLLW1AL14FABZyb7bq2ix4Eb5YgOe2kfSnbSM6C3NQCjR0EMVrHS/BsYVLXtFHCgWzN4funodKS ds+xDzdYpPJScWc/DIh4gInByLUfkmO+p3qKViwaqKactV2zY9ATIKHrkWzQjX2v3wvkF7mGnjix lAxYjOBVqjtjbZqJYLhkKpLGN/R+Q0O3c+gB53+XD9fyexn9GtePyfqFa3qdnom2piiZk4hA9z7N UaPK6u95RyG1/jLix8NRb76AdPCkwzryT+lf3xkK8jsTQ6wxpLPn6/wY1gGp8yqPNg7rtLG8t0zJ a7+h89n07eLw4+1knj0vllJPgFOL -----END CERTIFICATE----- CA Disig Root R2 ================ -----BEGIN CERTIFICATE----- MIIFaTCCA1GgAwIBAgIJAJK4iNuwisFjMA0GCSqGSIb3DQEBCwUAMFIxCzAJBgNVBAYTAlNLMRMw EQYDVQQHEwpCcmF0aXNsYXZhMRMwEQYDVQQKEwpEaXNpZyBhLnMuMRkwFwYDVQQDExBDQSBEaXNp ZyBSb290IFIyMB4XDTEyMDcxOTA5MTUzMFoXDTQyMDcxOTA5MTUzMFowUjELMAkGA1UEBhMCU0sx EzARBgNVBAcTCkJyYXRpc2xhdmExEzARBgNVBAoTCkRpc2lnIGEucy4xGTAXBgNVBAMTEENBIERp c2lnIFJvb3QgUjIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCio8QACdaFXS1tFPbC w3OeNcJxVX6B+6tGUODBfEl45qt5WDza/3wcn9iXAng+a0EE6UG9vgMsRfYvZNSrXaNHPWSb6Wia xswbP7q+sos0Ai6YVRn8jG+qX9pMzk0DIaPY0jSTVpbLTAwAFjxfGs3Ix2ymrdMxp7zo5eFm1tL7 A7RBZckQrg4FY8aAamkw/dLukO8NJ9+flXP04SXabBbeQTg06ov80egEFGEtQX6sx3dOy1FU+16S GBsEWmjGycT6txOgmLcRK7fWV8x8nhfRyyX+hk4kLlYMeE2eARKmK6cBZW58Yh2EhN/qwGu1pSqV g8NTEQxzHQuyRpDRQjrOQG6Vrf/GlK1ul4SOfW+eioANSW1z4nuSHsPzwfPrLgVv2RvPN3YEyLRa 5Beny912H9AZdugsBbPWnDTYltxhh5EF5EQIM8HauQhl1K6yNg3ruji6DOWbnuuNZt2Zz9aJQfYE koopKW1rOhzndX0CcQ7zwOe9yxndnWCywmZgtrEE7snmhrmaZkCo5xHtgUUDi/ZnWejBBhG93c+A Ak9lQHhcR1DIm+YfgXvkRKhbhZri3lrVx/k6RGZL5DJUfORsnLMOPReisjQS1n6yqEm70XooQL6i Fh/f5DcfEXP7kAplQ6INfPgGAVUzfbANuPT1rqVCV3w2EYx7XsQDnYx5nQIDAQABo0IwQDAPBgNV HRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUtZn4r7CU9eMg1gqtzk5WpC5u Qu0wDQYJKoZIhvcNAQELBQADggIBACYGXnDnZTPIgm7ZnBc6G3pmsgH2eDtpXi/q/075KMOYKmFM tCQSin1tERT3nLXK5ryeJ45MGcipvXrA1zYObYVybqjGom32+nNjf7xueQgcnYqfGopTpti72TVV sRHFqQOzVju5hJMiXn7B9hJSi+osZ7z+Nkz1uM/Rs0mSO9MpDpkblvdhuDvEK7Z4bLQjb/D907Je dR+Zlais9trhxTF7+9FGs9K8Z7RiVLoJ92Owk6Ka+elSLotgEqv89WBW7xBci8QaQtyDW2QOy7W8 1k/BfDxujRNt+3vrMNDcTa/F1balTFtxyegxvug4BkihGuLq0t4SOVga/4AOgnXmt8kHbA7v/zjx mHHEt38OFdAlab0inSvtBfZGR6ztwPDUO+Ls7pZbkBNOHlY667DvlruWIxG68kOGdGSVyCh13x01 utI3gzhTODY7z2zp+WsO0PsE6E9312UBeIYMej4hYvF/Y3EMyZ9E26gnonW+boE+18DrG5gPcFw0 sorMwIUY6256s/daoQe/qUKS82Ail+QUoQebTnbAjn39pCXHR+3/H3OszMOl6W8KjptlwlCFtaOg UxLMVYdh84GuEEZhvUQhuMI9dM9+JDX6HAcOmz0iyu8xL4ysEr3vQCj8KWefshNPZiTEUxnpHikV 7+ZtsH8tZ/3zbBt1RqPlShfppNcL -----END CERTIFICATE----- ACCVRAIZ1 ========= -----BEGIN CERTIFICATE----- MIIH0zCCBbugAwIBAgIIXsO3pkN/pOAwDQYJKoZIhvcNAQEFBQAwQjESMBAGA1UEAwwJQUNDVlJB SVoxMRAwDgYDVQQLDAdQS0lBQ0NWMQ0wCwYDVQQKDARBQ0NWMQswCQYDVQQGEwJFUzAeFw0xMTA1 MDUwOTM3MzdaFw0zMDEyMzEwOTM3MzdaMEIxEjAQBgNVBAMMCUFDQ1ZSQUlaMTEQMA4GA1UECwwH UEtJQUNDVjENMAsGA1UECgwEQUNDVjELMAkGA1UEBhMCRVMwggIiMA0GCSqGSIb3DQEBAQUAA4IC DwAwggIKAoICAQCbqau/YUqXry+XZpp0X9DZlv3P4uRm7x8fRzPCRKPfmt4ftVTdFXxpNRFvu8gM jmoYHtiP2Ra8EEg2XPBjs5BaXCQ316PWywlxufEBcoSwfdtNgM3802/J+Nq2DoLSRYWoG2ioPej0 RGy9ocLLA76MPhMAhN9KSMDjIgro6TenGEyxCQ0jVn8ETdkXhBilyNpAlHPrzg5XPAOBOp0KoVdD aaxXbXmQeOW1tDvYvEyNKKGno6e6Ak4l0Squ7a4DIrhrIA8wKFSVf+DuzgpmndFALW4ir50awQUZ 0m/A8p/4e7MCQvtQqR0tkw8jq8bBD5L/0KIV9VMJcRz/RROE5iZe+OCIHAr8Fraocwa48GOEAqDG WuzndN9wrqODJerWx5eHk6fGioozl2A3ED6XPm4pFdahD9GILBKfb6qkxkLrQaLjlUPTAYVtjrs7 8yM2x/474KElB0iryYl0/wiPgL/AlmXz7uxLaL2diMMxs0Dx6M/2OLuc5NF/1OVYm3z61PMOm3WR 5LpSLhl+0fXNWhn8ugb2+1KoS5kE3fj5tItQo05iifCHJPqDQsGH+tUtKSpacXpkatcnYGMN285J 9Y0fkIkyF/hzQ7jSWpOGYdbhdQrqeWZ2iE9x6wQl1gpaepPluUsXQA+xtrn13k/c4LOsOxFwYIRK Q26ZIMApcQrAZQIDAQABo4ICyzCCAscwfQYIKwYBBQUHAQEEcTBvMEwGCCsGAQUFBzAChkBodHRw Oi8vd3d3LmFjY3YuZXMvZmlsZWFkbWluL0FyY2hpdm9zL2NlcnRpZmljYWRvcy9yYWl6YWNjdjEu Y3J0MB8GCCsGAQUFBzABhhNodHRwOi8vb2NzcC5hY2N2LmVzMB0GA1UdDgQWBBTSh7Tj3zcnk1X2 VuqB5TbMjB4/vTAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFNKHtOPfNyeTVfZW6oHlNsyM Hj+9MIIBcwYDVR0gBIIBajCCAWYwggFiBgRVHSAAMIIBWDCCASIGCCsGAQUFBwICMIIBFB6CARAA QQB1AHQAbwByAGkAZABhAGQAIABkAGUAIABDAGUAcgB0AGkAZgBpAGMAYQBjAGkA8wBuACAAUgBh AO0AegAgAGQAZQAgAGwAYQAgAEEAQwBDAFYAIAAoAEEAZwBlAG4AYwBpAGEAIABkAGUAIABUAGUA YwBuAG8AbABvAGcA7QBhACAAeQAgAEMAZQByAHQAaQBmAGkAYwBhAGMAaQDzAG4AIABFAGwAZQBj AHQAcgDzAG4AaQBjAGEALAAgAEMASQBGACAAUQA0ADYAMAAxADEANQA2AEUAKQAuACAAQwBQAFMA IABlAG4AIABoAHQAdABwADoALwAvAHcAdwB3AC4AYQBjAGMAdgAuAGUAczAwBggrBgEFBQcCARYk aHR0cDovL3d3dy5hY2N2LmVzL2xlZ2lzbGFjaW9uX2MuaHRtMFUGA1UdHwROMEwwSqBIoEaGRGh0 dHA6Ly93d3cuYWNjdi5lcy9maWxlYWRtaW4vQXJjaGl2b3MvY2VydGlmaWNhZG9zL3JhaXphY2N2 MV9kZXIuY3JsMA4GA1UdDwEB/wQEAwIBBjAXBgNVHREEEDAOgQxhY2N2QGFjY3YuZXMwDQYJKoZI hvcNAQEFBQADggIBAJcxAp/n/UNnSEQU5CmH7UwoZtCPNdpNYbdKl02125DgBS4OxnnQ8pdpD70E R9m+27Up2pvZrqmZ1dM8MJP1jaGo/AaNRPTKFpV8M9xii6g3+CfYCS0b78gUJyCpZET/LtZ1qmxN YEAZSUNUY9rizLpm5U9EelvZaoErQNV/+QEnWCzI7UiRfD+mAM/EKXMRNt6GGT6d7hmKG9Ww7Y49 nCrADdg9ZuM8Db3VlFzi4qc1GwQA9j9ajepDvV+JHanBsMyZ4k0ACtrJJ1vnE5Bc5PUzolVt3OAJ TS+xJlsndQAJxGJ3KQhfnlmstn6tn1QwIgPBHnFk/vk4CpYY3QIUrCPLBhwepH2NDd4nQeit2hW3 sCPdK6jT2iWH7ehVRE2I9DZ+hJp4rPcOVkkO1jMl1oRQQmwgEh0q1b688nCBpHBgvgW1m54ERL5h I6zppSSMEYCUWqKiuUnSwdzRp+0xESyeGabu4VXhwOrPDYTkF7eifKXeVSUG7szAh1xA2syVP1Xg Nce4hL60Xc16gwFy7ofmXx2utYXGJt/mwZrpHgJHnyqobalbz+xFd3+YJ5oyXSrjhO7FmGYvliAd 3djDJ9ew+f7Zfc3Qn48LFFhRny+Lwzgt3uiP1o2HpPVWQxaZLPSkVrQ0uGE3ycJYgBugl6H8WY3p EfbRD0tVNEYqi4Y7 -----END CERTIFICATE----- TWCA Global Root CA =================== -----BEGIN CERTIFICATE----- MIIFQTCCAymgAwIBAgICDL4wDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCVFcxEjAQBgNVBAoT CVRBSVdBTi1DQTEQMA4GA1UECxMHUm9vdCBDQTEcMBoGA1UEAxMTVFdDQSBHbG9iYWwgUm9vdCBD QTAeFw0xMjA2MjcwNjI4MzNaFw0zMDEyMzExNTU5NTlaMFExCzAJBgNVBAYTAlRXMRIwEAYDVQQK EwlUQUlXQU4tQ0ExEDAOBgNVBAsTB1Jvb3QgQ0ExHDAaBgNVBAMTE1RXQ0EgR2xvYmFsIFJvb3Qg Q0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCwBdvI64zEbooh745NnHEKH1Jw7W2C nJfF10xORUnLQEK1EjRsGcJ0pDFfhQKX7EMzClPSnIyOt7h52yvVavKOZsTuKwEHktSz0ALfUPZV r2YOy+BHYC8rMjk1Ujoog/h7FsYYuGLWRyWRzvAZEk2tY/XTP3VfKfChMBwqoJimFb3u/Rk28OKR Q4/6ytYQJ0lM793B8YVwm8rqqFpD/G2Gb3PpN0Wp8DbHzIh1HrtsBv+baz4X7GGqcXzGHaL3SekV tTzWoWH1EfcFbx39Eb7QMAfCKbAJTibc46KokWofwpFFiFzlmLhxpRUZyXx1EcxwdE8tmx2RRP1W KKD+u4ZqyPpcC1jcxkt2yKsi2XMPpfRaAok/T54igu6idFMqPVMnaR1sjjIsZAAmY2E2TqNGtz99 sy2sbZCilaLOz9qC5wc0GZbpuCGqKX6mOL6OKUohZnkfs8O1CWfe1tQHRvMq2uYiN2DLgbYPoA/p yJV/v1WRBXrPPRXAb94JlAGD1zQbzECl8LibZ9WYkTunhHiVJqRaCPgrdLQABDzfuBSO6N+pjWxn kjMdwLfS7JLIvgm/LCkFbwJrnu+8vyq8W8BQj0FwcYeyTbcEqYSjMq+u7msXi7Kx/mzhkIyIqJdI zshNy/MGz19qCkKxHh53L46g5pIOBvwFItIm4TFRfTLcDwIDAQABoyMwITAOBgNVHQ8BAf8EBAMC AQYwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAXzSBdu+WHdXltdkCY4QWwa6g cFGn90xHNcgL1yg9iXHZqjNB6hQbbCEAwGxCGX6faVsgQt+i0trEfJdLjbDorMjupWkEmQqSpqsn LhpNgb+E1HAerUf+/UqdM+DyucRFCCEK2mlpc3INvjT+lIutwx4116KD7+U4x6WFH6vPNOw/KP4M 8VeGTslV9xzU2KV9Bnpv1d8Q34FOIWWxtuEXeZVFBs5fzNxGiWNoRI2T9GRwoD2dKAXDOXC4Ynsg /eTb6QihuJ49CcdP+yz4k3ZB3lLg4VfSnQO8d57+nile98FRYB/e2guyLXW3Q0iT5/Z5xoRdgFlg lPx4mI88k1HtQJAH32RjJMtOcQWh15QaiDLxInQirqWm2BJpTGCjAu4r7NRjkgtevi92a6O2JryP A9gK8kxkRr05YuWW6zRjESjMlfGt7+/cgFhI6Uu46mWs6fyAtbXIRfmswZ/ZuepiiI7E8UuDEq3m i4TWnsLrgxifarsbJGAzcMzs9zLzXNl5fe+epP7JI8Mk7hWSsT2RTyaGvWZzJBPqpK5jwa19hAM8 EHiGG3njxPPyBJUgriOCxLM6AGK/5jYk4Ve6xx6QddVfP5VhK8E7zeWzaGHQRiapIVJpLesux+t3 zqY6tQMzT3bR51xUAV3LePTJDL/PEo4XLSNolOer/qmyKwbQBM0= -----END CERTIFICATE----- TeliaSonera Root CA v1 ====================== -----BEGIN CERTIFICATE----- MIIFODCCAyCgAwIBAgIRAJW+FqD3LkbxezmCcvqLzZYwDQYJKoZIhvcNAQEFBQAwNzEUMBIGA1UE CgwLVGVsaWFTb25lcmExHzAdBgNVBAMMFlRlbGlhU29uZXJhIFJvb3QgQ0EgdjEwHhcNMDcxMDE4 MTIwMDUwWhcNMzIxMDE4MTIwMDUwWjA3MRQwEgYDVQQKDAtUZWxpYVNvbmVyYTEfMB0GA1UEAwwW VGVsaWFTb25lcmEgUm9vdCBDQSB2MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMK+ 6yfwIaPzaSZVfp3FVRaRXP3vIb9TgHot0pGMYzHw7CTww6XScnwQbfQ3t+XmfHnqjLWCi65ItqwA 3GV17CpNX8GH9SBlK4GoRz6JI5UwFpB/6FcHSOcZrr9FZ7E3GwYq/t75rH2D+1665I+XZ75Ljo1k B1c4VWk0Nj0TSO9P4tNmHqTPGrdeNjPUtAa9GAH9d4RQAEX1jF3oI7x+/jXh7VB7qTCNGdMJjmhn Xb88lxhTuylixcpecsHHltTbLaC0H2kD7OriUPEMPPCs81Mt8Bz17Ww5OXOAFshSsCPN4D7c3TxH oLs1iuKYaIu+5b9y7tL6pe0S7fyYGKkmdtwoSxAgHNN/Fnct7W+A90m7UwW7XWjH1Mh1Fj+JWov3 F0fUTPHSiXk+TT2YqGHeOh7S+F4D4MHJHIzTjU3TlTazN19jY5szFPAtJmtTfImMMsJu7D0hADnJ oWjiUIMusDor8zagrC/kb2HCUQk5PotTubtn2txTuXZZNp1D5SDgPTJghSJRt8czu90VL6R4pgd7 gUY2BIbdeTXHlSw7sKMXNeVzH7RcWe/a6hBle3rQf5+ztCo3O3CLm1u5K7fsslESl1MpWtTwEhDc TwK7EpIvYtQ/aUN8Ddb8WHUBiJ1YFkveupD/RwGJBmr2X7KQarMCpgKIv7NHfirZ1fpoeDVNAgMB AAGjPzA9MA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTwj1k4ALP1j5qW DNXr+nuqF+gTEjANBgkqhkiG9w0BAQUFAAOCAgEAvuRcYk4k9AwI//DTDGjkk0kiP0Qnb7tt3oNm zqjMDfz1mgbldxSR651Be5kqhOX//CHBXfDkH1e3damhXwIm/9fH907eT/j3HEbAek9ALCI18Bmx 0GtnLLCo4MBANzX2hFxc469CeP6nyQ1Q6g2EdvZR74NTxnr/DlZJLo961gzmJ1TjTQpgcmLNkQfW pb/ImWvtxBnmq0wROMVvMeJuScg/doAmAyYp4Db29iBT4xdwNBedY2gea+zDTYa4EzAvXUYNR0PV G6pZDrlcjQZIrXSHX8f8MVRBE+LHIQ6e4B4N4cB7Q4WQxYpYxmUKeFfyxiMPAdkgS94P+5KFdSpc c41teyWRyu5FrgZLAMzTsVlQ2jqIOylDRl6XK1TOU2+NSueW+r9xDkKLfP0ooNBIytrEgUy7onOT JsjrDNYmiLbAJM+7vVvrdX3pCI6GMyx5dwlppYn8s3CQh3aP0yK7Qs69cwsgJirQmz1wHiRszYd2 qReWt88NkvuOGKmYSdGe/mBEciG5Ge3C9THxOUiIkCR1VBatzvT4aRRkOfujuLpwQMcnHL/EVlP6 Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= -----END CERTIFICATE----- E-Tugra Certification Authority =============================== -----BEGIN CERTIFICATE----- MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0 E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5 dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB /wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807 VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0 8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G C7TbO6Orb1wdtn7os4I07QZcJA== -----END CERTIFICATE----- T-TeleSec GlobalRoot Class 2 ============================ -----BEGIN CERTIFICATE----- MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwHhcNMDgx MDAxMTA0MDE0WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDIwggEiMA0GCSqGSIb3 DQEBAQUAA4IBDwAwggEKAoIBAQCqX9obX+hzkeXaXPSi5kfl82hVYAUdAqSzm1nzHoqvNK38DcLZ SBnuaY/JIPwhqgcZ7bBcrGXHX+0CfHt8LRvWurmAwhiCFoT6ZrAIxlQjgeTNuUk/9k9uN0goOA/F vudocP05l03Sx5iRUKrERLMjfTlH6VJi1hKTXrcxlkIF+3anHqP1wvzpesVsqXFP6st4vGCvx970 2cu+fjOlbpSD8DT6IavqjnKgP6TeMFvvhk1qlVtDRKgQFRzlAVfFmPHmBiiRqiDFt1MmUUOyCxGV WOHAD3bZwI18gfNycJ5v/hqO2V81xrJvNHy+SE/iWjnX2J14np+GPgNeGYtEotXHAgMBAAGjQjBA MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS/WSA2AHmgoCJrjNXy YdK4LMuCSjANBgkqhkiG9w0BAQsFAAOCAQEAMQOiYQsfdOhyNsZt+U2e+iKo4YFWz827n+qrkRk4 r6p8FU3ztqONpfSO9kSpp+ghla0+AGIWiPACuvxhI+YzmzB6azZie60EI4RYZeLbK4rnJVM3YlNf vNoBYimipidx5joifsFvHZVwIEoHNN/q/xWA5brXethbdXwFeilHfkCoMRN3zUA7tFFHei4R40cR 3p1m0IvVVGb6g1XqfMIpiRvpb7PO4gWEyS8+eIVibslfwXhjdFjASBgMmTnrpMwatXlajRWc2BQN 9noHV8cigwUtPJslJj0Ys6lDfMjIq2SPDqO/nBudMNva0Bkuqjzx+zOAduTNrRlPBSeOE6Fuwg== -----END CERTIFICATE----- Atos TrustedRoot 2011 ===================== -----BEGIN CERTIFICATE----- MIIDdzCCAl+gAwIBAgIIXDPLYixfszIwDQYJKoZIhvcNAQELBQAwPDEeMBwGA1UEAwwVQXRvcyBU cnVzdGVkUm9vdCAyMDExMQ0wCwYDVQQKDARBdG9zMQswCQYDVQQGEwJERTAeFw0xMTA3MDcxNDU4 MzBaFw0zMDEyMzEyMzU5NTlaMDwxHjAcBgNVBAMMFUF0b3MgVHJ1c3RlZFJvb3QgMjAxMTENMAsG A1UECgwEQXRvczELMAkGA1UEBhMCREUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCV hTuXbyo7LjvPpvMpNb7PGKw+qtn4TaA+Gke5vJrf8v7MPkfoepbCJI419KkM/IL9bcFyYie96mvr 54rMVD6QUM+A1JX76LWC1BTFtqlVJVfbsVD2sGBkWXppzwO3bw2+yj5vdHLqqjAqc2K+SZFhyBH+ DgMq92og3AIVDV4VavzjgsG1xZ1kCWyjWZgHJ8cblithdHFsQ/H3NYkQ4J7sVaE3IqKHBAUsR320 HLliKWYoyrfhk/WklAOZuXCFteZI6o1Q/NnezG8HDt0Lcp2AMBYHlT8oDv3FdU9T1nSatCQujgKR z3bFmx5VdJx4IbHwLfELn8LVlhgf8FQieowHAgMBAAGjfTB7MB0GA1UdDgQWBBSnpQaxLKYJYO7R l+lwrrw7GWzbITAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKelBrEspglg7tGX6XCuvDsZ bNshMBgGA1UdIAQRMA8wDQYLKwYBBAGwLQMEAQEwDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEB CwUAA4IBAQAmdzTblEiGKkGdLD4GkGDEjKwLVLgfuXvTBznk+j57sj1O7Z8jvZfza1zv7v1Apt+h k6EKhqzvINB5Ab149xnYJDE0BAGmuhWawyfc2E8PzBhj/5kPDpFrdRbhIfzYJsdHt6bPWHJxfrrh TZVHO8mvbaG0weyJ9rQPOLXiZNwlz6bb65pcmaHFCN795trV1lpFDMS3wrUU77QR/w4VtfX128a9 61qn8FYiqTxlVMYVqL2Gns2Dlmh6cYGJ4Qvh6hEbaAjMaZ7snkGeRDImeuKHCnE96+RapNLbxc3G 3mB/ufNPRJLvKrcYPqcZ2Qt9sTdBQrC6YB3y/gkRsPCHe6ed -----END CERTIFICATE----- QuoVadis Root CA 1 G3 ===================== -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIUeFhfLq0sGUvjNwc1NBMotZbUZZMwDQYJKoZIhvcNAQELBQAwSDELMAkG A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv b3QgQ0EgMSBHMzAeFw0xMjAxMTIxNzI3NDRaFw00MjAxMTIxNzI3NDRaMEgxCzAJBgNVBAYTAkJN MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDEg RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCgvlAQjunybEC0BJyFuTHK3C3kEakE PBtVwedYMB0ktMPvhd6MLOHBPd+C5k+tR4ds7FtJwUrVu4/sh6x/gpqG7D0DmVIB0jWerNrwU8lm PNSsAgHaJNM7qAJGr6Qc4/hzWHa39g6QDbXwz8z6+cZM5cOGMAqNF34168Xfuw6cwI2H44g4hWf6 Pser4BOcBRiYz5P1sZK0/CPTz9XEJ0ngnjybCKOLXSoh4Pw5qlPafX7PGglTvF0FBM+hSo+LdoIN ofjSxxR3W5A2B4GbPgb6Ul5jxaYA/qXpUhtStZI5cgMJYr2wYBZupt0lwgNm3fME0UDiTouG9G/l g6AnhF4EwfWQvTA9xO+oabw4m6SkltFi2mnAAZauy8RRNOoMqv8hjlmPSlzkYZqn0ukqeI1RPToV 7qJZjqlc3sX5kCLliEVx3ZGZbHqfPT2YfF72vhZooF6uCyP8Wg+qInYtyaEQHeTTRCOQiJ/GKubX 9ZqzWB4vMIkIG1SitZgj7Ah3HJVdYdHLiZxfokqRmu8hqkkWCKi9YSgxyXSthfbZxbGL0eUQMk1f iyA6PEkfM4VZDdvLCXVDaXP7a3F98N/ETH3Goy7IlXnLc6KOTk0k+17kBL5yG6YnLUlamXrXXAkg t3+UuU/xDRxeiEIbEbfnkduebPRq34wGmAOtzCjvpUfzUwIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUo5fW816iEOGrRZ88F2Q87gFwnMwwDQYJKoZI hvcNAQELBQADggIBABj6W3X8PnrHX3fHyt/PX8MSxEBd1DKquGrX1RUVRpgjpeaQWxiZTOOtQqOC MTaIzen7xASWSIsBx40Bz1szBpZGZnQdT+3Btrm0DWHMY37XLneMlhwqI2hrhVd2cDMT/uFPpiN3 GPoajOi9ZcnPP/TJF9zrx7zABC4tRi9pZsMbj/7sPtPKlL92CiUNqXsCHKnQO18LwIE6PWThv6ct Tr1NxNgpxiIY0MWscgKCP6o6ojoilzHdCGPDdRS5YCgtW2jgFqlmgiNR9etT2DGbe+m3nUvriBbP +V04ikkwj+3x6xn0dxoxGE1nVGwvb2X52z3sIexe9PSLymBlVNFxZPT5pqOBMzYzcfCkeF9OrYMh 3jRJjehZrJ3ydlo28hP0r+AJx2EqbPfgna67hkooby7utHnNkDPDs3b69fBsnQGQ+p6Q9pxyz0fa wx/kNSBT8lTR32GDpgLiJTjehTItXnOQUl1CxM49S+H5GYQd1aJQzEH7QRTDvdbJWqNjZgKAvQU6 O0ec7AAmTPWIUb+oI38YB7AL7YsmoWTTYUrrXJ/es69nA7Mf3W1daWhpq1467HxpvMc7hU6eFbm0 FU/DlXpY18ls6Wy58yljXrQs8C097Vpl4KlbQMJImYFtnh8GKjwStIsPm6Ik8KaN1nrgS7ZklmOV hMJKzRwuJIczYOXD -----END CERTIFICATE----- QuoVadis Root CA 2 G3 ===================== -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIURFc0JFuBiZs18s64KztbpybwdSgwDQYJKoZIhvcNAQELBQAwSDELMAkG A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv b3QgQ0EgMiBHMzAeFw0xMjAxMTIxODU5MzJaFw00MjAxMTIxODU5MzJaMEgxCzAJBgNVBAYTAkJN MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDIg RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQChriWyARjcV4g/Ruv5r+LrI3HimtFh ZiFfqq8nUeVuGxbULX1QsFN3vXg6YOJkApt8hpvWGo6t/x8Vf9WVHhLL5hSEBMHfNrMWn4rjyduY NM7YMxcoRvynyfDStNVNCXJJ+fKH46nafaF9a7I6JaltUkSs+L5u+9ymc5GQYaYDFCDy54ejiK2t oIz/pgslUiXnFgHVy7g1gQyjO/Dh4fxaXc6AcW34Sas+O7q414AB+6XrW7PFXmAqMaCvN+ggOp+o MiwMzAkd056OXbxMmO7FGmh77FOm6RQ1o9/NgJ8MSPsc9PG/Srj61YxxSscfrf5BmrODXfKEVu+l V0POKa2Mq1W/xPtbAd0jIaFYAI7D0GoT7RPjEiuA3GfmlbLNHiJuKvhB1PLKFAeNilUSxmn1uIZo L1NesNKqIcGY5jDjZ1XHm26sGahVpkUG0CM62+tlXSoREfA7T8pt9DTEceT/AFr2XK4jYIVz8eQQ sSWu1ZK7E8EM4DnatDlXtas1qnIhO4M15zHfeiFuuDIIfR0ykRVKYnLP43ehvNURG3YBZwjgQQvD 6xVu+KQZ2aKrr+InUlYrAoosFCT5v0ICvybIxo/gbjh9Uy3l7ZizlWNof/k19N+IxWA1ksB8aRxh lRbQ694Lrz4EEEVlWFA4r0jyWbYW8jwNkALGcC4BrTwV1wIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU7edvdlq/YOxJW8ald7tyFnGbxD0wDQYJKoZI hvcNAQELBQADggIBAJHfgD9DCX5xwvfrs4iP4VGyvD11+ShdyLyZm3tdquXK4Qr36LLTn91nMX66 AarHakE7kNQIXLJgapDwyM4DYvmL7ftuKtwGTTwpD4kWilhMSA/ohGHqPHKmd+RCroijQ1h5fq7K pVMNqT1wvSAZYaRsOPxDMuHBR//47PERIjKWnML2W2mWeyAMQ0GaW/ZZGYjeVYg3UQt4XAoeo0L9 x52ID8DyeAIkVJOviYeIyUqAHerQbj5hLja7NQ4nlv1mNDthcnPxFlxHBlRJAHpYErAK74X9sbgz dWqTHBLmYF5vHX/JHyPLhGGfHoJE+V+tYlUkmlKY7VHnoX6XOuYvHxHaU4AshZ6rNRDbIl9qxV6X U/IyAgkwo1jwDQHVcsaxfGl7w/U2Rcxhbl5MlMVerugOXou/983g7aEOGzPuVBj+D77vfoRrQ+Nw mNtddbINWQeFFSM51vHfqSYP1kjHs6Yi9TM3WpVHn3u6GBVv/9YUZINJ0gpnIdsPNWNgKCLjsZWD zYWm3S8P52dSbrsvhXz1SnPnxT7AvSESBT/8twNJAlvIJebiVDj1eYeMHVOyToV7BjjHLPj4sHKN JeV3UvQDHEimUF+IIDBu8oJDqz2XhOdT+yHBTw8imoa4WSr2Rz0ZiC3oheGe7IUIarFsNMkd7Egr O3jtZsSOeWmD3n+M -----END CERTIFICATE----- QuoVadis Root CA 3 G3 ===================== -----BEGIN CERTIFICATE----- MIIFYDCCA0igAwIBAgIULvWbAiin23r/1aOp7r0DoM8Sah0wDQYJKoZIhvcNAQELBQAwSDELMAkG A1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxHjAcBgNVBAMTFVF1b1ZhZGlzIFJv b3QgQ0EgMyBHMzAeFw0xMjAxMTIyMDI2MzJaFw00MjAxMTIyMDI2MzJaMEgxCzAJBgNVBAYTAkJN MRkwFwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMR4wHAYDVQQDExVRdW9WYWRpcyBSb290IENBIDMg RzMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCzyw4QZ47qFJenMioKVjZ/aEzHs286 IxSR/xl/pcqs7rN2nXrpixurazHb+gtTTK/FpRp5PIpM/6zfJd5O2YIyC0TeytuMrKNuFoM7pmRL Mon7FhY4futD4tN0SsJiCnMK3UmzV9KwCoWdcTzeo8vAMvMBOSBDGzXRU7Ox7sWTaYI+FrUoRqHe 6okJ7UO4BUaKhvVZR74bbwEhELn9qdIoyhA5CcoTNs+cra1AdHkrAj80//ogaX3T7mH1urPnMNA3 I4ZyYUUpSFlob3emLoG+B01vr87ERRORFHAGjx+f+IdpsQ7vw4kZ6+ocYfx6bIrc1gMLnia6Et3U VDmrJqMz6nWB2i3ND0/kA9HvFZcba5DFApCTZgIhsUfei5pKgLlVj7WiL8DWM2fafsSntARE60f7 5li59wzweyuxwHApw0BiLTtIadwjPEjrewl5qW3aqDCYz4ByA4imW0aucnl8CAMhZa634RylsSqi Md5mBPfAdOhx3v89WcyWJhKLhZVXGqtrdQtEPREoPHtht+KPZ0/l7DxMYIBpVzgeAVuNVejH38DM dyM0SXV89pgR6y3e7UEuFAUCf+D+IOs15xGsIs5XPd7JMG0QA4XN8f+MFrXBsj6IbGB/kE+V9/Yt rQE5BwT6dYB9v0lQ7e/JxHwc64B+27bQ3RP+ydOc17KXqQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUxhfQvKjqAkPyGwaZXSuQILnXnOQwDQYJKoZI hvcNAQELBQADggIBADRh2Va1EodVTd2jNTFGu6QHcrxfYWLopfsLN7E8trP6KZ1/AvWkyaiTt3px KGmPc+FSkNrVvjrlt3ZqVoAh313m6Tqe5T72omnHKgqwGEfcIHB9UqM+WXzBusnIFUBhynLWcKzS t/Ac5IYp8M7vaGPQtSCKFWGafoaYtMnCdvvMujAWzKNhxnQT5WvvoxXqA/4Ti2Tk08HS6IT7SdEQ TXlm66r99I0xHnAUrdzeZxNMgRVhvLfZkXdxGYFgu/BYpbWcC/ePIlUnwEsBbTuZDdQdm2NnL9Du DcpmvJRPpq3t/O5jrFc/ZSXPsoaP0Aj/uHYUbt7lJ+yreLVTubY/6CD50qi+YUbKh4yE8/nxoGib Ih6BJpsQBJFxwAYf3KDTuVan45gtf4Od34wrnDKOMpTwATwiKp9Dwi7DmDkHOHv8XgBCH/MyJnmD hPbl8MFREsALHgQjDFSlTC9JxUrRtm5gDWv8a4uFJGS3iQ6rJUdbPM9+Sb3H6QrG2vd+DhcI00iX 0HGS8A85PjRqHH3Y8iKuu2n0M7SmSFXRDw4m6Oy2Cy2nhTXN/VnIn9HNPlopNLk9hM6xZdRZkZFW dSHBd575euFgndOtBBj0fOtek49TSiIp+EgrPk2GrFt/ywaZWWDYWGWVjUTR939+J399roD1B0y2 PpxxVJkES/1Y+Zj0 -----END CERTIFICATE----- DigiCert Assured ID Root G2 =========================== -----BEGIN CERTIFICATE----- MIIDljCCAn6gAwIBAgIQC5McOtY5Z+pnI7/Dr5r0SzANBgkqhkiG9w0BAQsFADBlMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIwHhcNMTMwODAxMTIwMDAwWhcNMzgw MTE1MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzIw ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDZ5ygvUj82ckmIkzTz+GoeMVSAn61UQbVH 35ao1K+ALbkKz3X9iaV9JPrjIgwrvJUXCzO/GU1BBpAAvQxNEP4HteccbiJVMWWXvdMX0h5i89vq bFCMP4QMls+3ywPgym2hFEwbid3tALBSfK+RbLE4E9HpEgjAALAcKxHad3A2m67OeYfcgnDmCXRw VWmvo2ifv922ebPynXApVfSr/5Vh88lAbx3RvpO704gqu52/clpWcTs/1PPRCv4o76Pu2ZmvA9OP YLfykqGxvYmJHzDNw6YuYjOuFgJ3RFrngQo8p0Quebg/BLxcoIfhG69Rjs3sLPr4/m3wOnyqi+Rn lTGNAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTO w0q5mVXyuNtgv6l+vVa1lzan1jANBgkqhkiG9w0BAQsFAAOCAQEAyqVVjOPIQW5pJ6d1Ee88hjZv 0p3GeDgdaZaikmkuOGybfQTUiaWxMTeKySHMq2zNixya1r9I0jJmwYrA8y8678Dj1JGG0VDjA9tz d29KOVPt3ibHtX2vK0LRdWLjSisCx1BL4GnilmwORGYQRI+tBev4eaymG+g3NJ1TyWGqolKvSnAW hsI6yLETcDbYz+70CjTVW0z9B5yiutkBclzzTcHdDrEcDcRjvq30FPuJ7KJBDkzMyFdA0G4Dqs0M jomZmWzwPDCvON9vvKO+KSAnq3T/EyJ43pdSVR6DtVQgA+6uwE9W3jfMw3+qBCe703e4YtsXfJwo IhNzbM8m9Yop5w== -----END CERTIFICATE----- DigiCert Assured ID Root G3 =========================== -----BEGIN CERTIFICATE----- MIICRjCCAc2gAwIBAgIQC6Fa+h3foLVJRK/NJKBs7DAKBggqhkjOPQQDAzBlMQswCQYDVQQGEwJV UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQwIgYD VQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 MTIwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgRzMwdjAQ BgcqhkjOPQIBBgUrgQQAIgNiAAQZ57ysRGXtzbg/WPuNsVepRC0FFfLvC/8QdJ+1YlJfZn4f5dwb RXkLzMZTCp2NXQLZqVneAlr2lSoOjThKiknGvMYDOAdfVdp+CW7if17QRSAPWXYQ1qAk8C3eNvJs KTmjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBTL0L2p4ZgF UaFNN6KDec6NHSrkhDAKBggqhkjOPQQDAwNnADBkAjAlpIFFAmsSS3V0T8gj43DydXLefInwz5Fy YZ5eEJJZVrmDxxDnOOlYJjZ91eQ0hjkCMHw2U/Aw5WJjOpnitqM7mzT6HtoQknFekROn3aRukswy 1vUhZscv6pZjamVFkpUBtA== -----END CERTIFICATE----- DigiCert Global Root G2 ======================= -----BEGIN CERTIFICATE----- MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBhMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUx MjAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkq hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI2/Ou8jqJ kTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx1x7e/dfgy5SDN67sH0NO 3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQq2EGnI/yuum06ZIya7XzV+hdG82MHauV BJVJ8zUtluNJbd134/tJS7SsVQepj5WztCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyM UNGPHgm+F6HmIcr9g+UQvIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQAB o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV5uNu 5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY1Yl9PMWLSn/pvtsr F9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4NeF22d+mQrvHRAiGfzZ0JFrabA0U WTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NGFdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBH QRFXGU7Aj64GxJUTFy8bJZ918rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/ iyK5S9kJRaTepLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl MrY= -----END CERTIFICATE----- DigiCert Global Root G3 ======================= -----BEGIN CERTIFICATE----- MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQswCQYDVQQGEwJV UzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAwHgYD VQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAw MDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5k aWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0C AQYFK4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FGfp4tn+6O YwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPOZ9wj/wMco+I+o0IwQDAP BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNp Yim8S8YwCgYIKoZIzj0EAwMDaAAwZQIxAK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y 3maTD/HMsQmP3Wyr+mt/oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34 VOKa5Vt8sycX -----END CERTIFICATE----- DigiCert Trusted Root G4 ======================== -----BEGIN CERTIFICATE----- MIIFkDCCA3igAwIBAgIQBZsbV56OITLiOQe9p3d1XDANBgkqhkiG9w0BAQwFADBiMQswCQYDVQQG EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSEw HwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwHhcNMTMwODAxMTIwMDAwWhcNMzgwMTE1 MTIwMDAwWjBiMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3 d3cuZGlnaWNlcnQuY29tMSEwHwYDVQQDExhEaWdpQ2VydCBUcnVzdGVkIFJvb3QgRzQwggIiMA0G CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/5pBzaN675F1KPDAiMGkz7MKnJS7JIT3yithZwuEp pz1Yq3aaza57G4QNxDAf8xukOBbrVsaXbR2rsnnyyhHS5F/WBTxSD1Ifxp4VpX6+n6lXFllVcq9o k3DCsrp1mWpzMpTREEQQLt+C8weE5nQ7bXHiLQwb7iDVySAdYyktzuxeTsiT+CFhmzTrBcZe7Fsa vOvJz82sNEBfsXpm7nfISKhmV1efVFiODCu3T6cw2Vbuyntd463JT17lNecxy9qTXtyOj4DatpGY QJB5w3jHtrHEtWoYOAMQjdjUN6QuBX2I9YI+EJFwq1WCQTLX2wRzKm6RAXwhTNS8rhsDdV14Ztk6 MUSaM0C/CNdaSaTC5qmgZ92kJ7yhTzm1EVgX9yRcRo9k98FpiHaYdj1ZXUJ2h4mXaXpI8OCiEhtm mnTK3kse5w5jrubU75KSOp493ADkRSWJtppEGSt+wJS00mFt6zPZxd9LBADMfRyVw4/3IbKyEbe7 f/LVjHAsQWCqsWMYRJUadmJ+9oCw++hkpjPRiQfhvbfmQ6QYuKZ3AeEPlAwhHbJUKSWJbOUOUlFH dL4mrLZBdd56rF+NP8m800ERElvlEFDrMcXKchYiCd98THU/Y+whX8QgUWtvsauGi0/C1kVfnSD8 oR7FwI+isX4KJpn15GkvmB0t9dmpsh3lGwIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1Ud DwEB/wQEAwIBhjAdBgNVHQ4EFgQU7NfjgtJxXWRM3y5nP+e6mK4cD08wDQYJKoZIhvcNAQEMBQAD ggIBALth2X2pbL4XxJEbw6GiAI3jZGgPVs93rnD5/ZpKmbnJeFwMDF/k5hQpVgs2SV1EY+CtnJYY ZhsjDT156W1r1lT40jzBQ0CuHVD1UvyQO7uYmWlrx8GnqGikJ9yd+SeuMIW59mdNOj6PWTkiU0Tr yF0Dyu1Qen1iIQqAyHNm0aAFYF/opbSnr6j3bTWcfFqK1qI4mfN4i/RN0iAL3gTujJtHgXINwBQy 7zBZLq7gcfJW5GqXb5JQbZaNaHqasjYUegbyJLkJEVDXCLG4iXqEI2FCKeWjzaIgQdfRnGTZ6iah ixTXTBmyUEFxPT9NcCOGDErcgdLMMpSEDQgJlxxPwO5rIHQw0uA5NBCFIRUBCOhVMt5xSdkoF1BN 5r5N0XWs0Mr7QbhDparTwwVETyw2m+L64kW4I1NsBm9nVX9GtUw/bihaeSbSpKhil9Ie4u1Ki7wb /UdKDd9nZn6yW0HQO+T0O/QEY+nvwlQAUaCKKsnOeMzV6ocEGLPOr0mIr/OSmbaz5mEP0oUA51Aa 5BuVnRmhuZyxm7EAHu/QD09CbMkKvO5D+jpxpchNJqU1/YldvIViHTLSoCtU7ZpXwdv6EM8Zt4tK G48BtieVU+i2iW1bvGjUI+iLUaJW+fCmgKDWHrO8Dw9TdSmq6hN35N6MgSGtBxBHEa2HPQfRdbzP 82Z+ -----END CERTIFICATE----- WoSign ====== -----BEGIN CERTIFICATE----- MIIFdjCCA16gAwIBAgIQXmjWEXGUY1BWAGjzPsnFkTANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQG EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxKjAoBgNVBAMTIUNlcnRpZmljYXRpb24g QXV0aG9yaXR5IG9mIFdvU2lnbjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgwMTAwMDFaMFUxCzAJ BgNVBAYTAkNOMRowGAYDVQQKExFXb1NpZ24gQ0EgTGltaXRlZDEqMCgGA1UEAxMhQ2VydGlmaWNh dGlvbiBBdXRob3JpdHkgb2YgV29TaWduMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA vcqNrLiRFVaXe2tcesLea9mhsMMQI/qnobLMMfo+2aYpbxY94Gv4uEBf2zmoAHqLoE1UfcIiePyO CbiohdfMlZdLdNiefvAA5A6JrkkoRBoQmTIPJYhTpA2zDxIIFgsDcSccf+Hb0v1naMQFXQoOXXDX 2JegvFNBmpGN9J42Znp+VsGQX+axaCA2pIwkLCxHC1l2ZjC1vt7tj/id07sBMOby8w7gLJKA84X5 KIq0VC6a7fd2/BVoFutKbOsuEo/Uz/4Mx1wdC34FMr5esAkqQtXJTpCzWQ27en7N1QhatH/YHGkR +ScPewavVIMYe+HdVHpRaG53/Ma/UkpmRqGyZxq7o093oL5d//xWC0Nyd5DKnvnyOfUNqfTq1+ez EC8wQjchzDBwyYaYD8xYTYO7feUapTeNtqwylwA6Y3EkHp43xP901DfA4v6IRmAR3Qg/UDaruHqk lWJqbrDKaiFaafPz+x1wOZXzp26mgYmhiMU7ccqjUu6Du/2gd/Tkb+dC221KmYo0SLwX3OSACCK2 8jHAPwQ+658geda4BmRkAjHXqc1S+4RFaQkAKtxVi8QGRkvASh0JWzko/amrzgD5LkhLJuYwTKVY yrREgk/nkR4zw7CT/xH8gdLKH3Ep3XZPkiWvHYG3Dy+MwwbMLyejSuQOmbp8HkUff6oZRZb9/D0C AwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFOFmzw7R 8bNLtwYgFP6HEtX2/vs+MA0GCSqGSIb3DQEBBQUAA4ICAQCoy3JAsnbBfnv8rWTjMnvMPLZdRtP1 LOJwXcgu2AZ9mNELIaCJWSQBnfmvCX0KI4I01fx8cpm5o9dU9OpScA7F9dY74ToJMuYhOZO9sxXq T2r09Ys/L3yNWC7F4TmgPsc9SnOeQHrAK2GpZ8nzJLmzbVUsWh2eJXLOC62qx1ViC777Y7NhRCOj y+EaDveaBk3e1CNOIZZbOVtXHS9dCF4Jef98l7VNg64N1uajeeAz0JmWAjCnPv/So0M/BVoG6kQC 2nz4SNAzqfkHx5Xh9T71XXG68pWpdIhhWeO/yloTunK0jF02h+mmxTwTv97QRCbut+wucPrXnbes 5cVAWubXbHssw1abR80LzvobtCHXt2a49CUwi1wNuepnsvRtrtWhnk/Yn+knArAdBtaP4/tIEp9/ EaEQPkxROpaw0RPxx9gmrjrKkcRpnd8BKWRRb2jaFOwIQZeQjdCygPLPwj2/kWjFgGcexGATVdVh mVd8upUPYUk6ynW8yQqTP2cOEvIo4jEbwFcW3wh8GcF+Dx+FHgo2fFt+J7x6v+Db9NpSvd4MVHAx kUOVyLzwPt0JfjBkUO1/AaQzZ01oT74V77D2AhGiGxMlOtzCWfHjXEa7ZywCRuoeSKbmW9m1vFGi kpbbqsY3Iqb+zCB0oy2pLmvLwIIRIbWTee5Ehr7XHuQe+w== -----END CERTIFICATE----- WoSign China ============ -----BEGIN CERTIFICATE----- MIIFWDCCA0CgAwIBAgIQUHBrzdgT/BtOOzNy0hFIjTANBgkqhkiG9w0BAQsFADBGMQswCQYDVQQG EwJDTjEaMBgGA1UEChMRV29TaWduIENBIExpbWl0ZWQxGzAZBgNVBAMMEkNBIOayg+mAmuagueiv geS5pjAeFw0wOTA4MDgwMTAwMDFaFw0zOTA4MDgwMTAwMDFaMEYxCzAJBgNVBAYTAkNOMRowGAYD VQQKExFXb1NpZ24gQ0EgTGltaXRlZDEbMBkGA1UEAwwSQ0Eg5rKD6YCa5qC56K+B5LmmMIICIjAN BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0EkhHiX8h8EqwqzbdoYGTufQdDTc7WU1/FDWiD+k 8H/rD195L4mx/bxjWDeTmzj4t1up+thxx7S8gJeNbEvxUNUqKaqoGXqW5pWOdO2XCld19AXbbQs5 uQF/qvbW2mzmBeCkTVL829B0txGMe41P/4eDrv8FAxNXUDf+jJZSEExfv5RxadmWPgxDT74wwJ85 dE8GRV2j1lY5aAfMh09Qd5Nx2UQIsYo06Yms25tO4dnkUkWMLhQfkWsZHWgpLFbE4h4TV2TwYeO5 Ed+w4VegG63XX9Gv2ystP9Bojg/qnw+LNVgbExz03jWhCl3W6t8Sb8D7aQdGctyB9gQjF+BNdeFy b7Ao65vh4YOhn0pdr8yb+gIgthhid5E7o9Vlrdx8kHccREGkSovrlXLp9glk3Kgtn3R46MGiCWOc 76DbT52VqyBPt7D3h1ymoOQ3OMdc4zUPLK2jgKLsLl3Az+2LBcLmc272idX10kaO6m1jGx6KyX2m +Jzr5dVjhU1zZmkR/sgO9MHHZklTfuQZa/HpelmjbX7FF+Ynxu8b22/8DU0GAbQOXDBGVWCvOGU6 yke6rCzMRh+yRpY/8+0mBe53oWprfi1tWFxK1I5nuPHa1UaKJ/kR8slC/k7e3x9cxKSGhxYzoacX GKUN5AXlK8IrC6KVkLn9YDxOiT7nnO4fuwECAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud EwEB/wQFMAMBAf8wHQYDVR0OBBYEFOBNv9ybQV0T6GTwp+kVpOGBwboxMA0GCSqGSIb3DQEBCwUA A4ICAQBqinA4WbbaixjIvirTthnVZil6Xc1bL3McJk6jfW+rtylNpumlEYOnOXOvEESS5iVdT2H6 yAa+Tkvv/vMx/sZ8cApBWNromUuWyXi8mHwCKe0JgOYKOoICKuLJL8hWGSbueBwj/feTZU7n85iY r83d2Z5AiDEoOqsuC7CsDCT6eiaY8xJhEPRdF/d+4niXVOKM6Cm6jBAyvd0zaziGfjk9DgNyp115 j0WKWa5bIW4xRtVZjc8VX90xJc/bYNaBRHIpAlf2ltTW/+op2znFuCyKGo3Oy+dCMYYFaA6eFN0A kLppRQjbbpCBhqcqBT/mhDn4t/lXX0ykeVoQDF7Va/81XwVRHmyjdanPUIPTfPRm94KNPQx96N97 qA4bLJyuQHCH2u2nFoJavjVsIE4iYdm8UXrNemHcSxH5/mc0zy4EZmFcV5cjjPOGG0jfKq+nwf/Y jj4Du9gqsPoUJbJRa4ZDhS4HIxaAjUz7tGM7zMN07RujHv41D198HRaG9Q7DlfEvr10lO1Hm13ZB ONFLAzkopR6RctR9q5czxNM+4Gm2KHmgCY0c0f9BckgG/Jou5yD5m6Leie2uPAmvylezkolwQOQv T8Jwg0DXJCxr5wkf09XHwQj02w47HAcLQxGEIYbpgNR12KvxAmLBsX5VYc8T1yaw15zLKYs4SgsO kI26oQ== -----END CERTIFICATE----- ================================================ FILE: etc/tls/demo-tls.oversip.net.crt ================================================ -----BEGIN CERTIFICATE----- MIICrzCCAhigAwIBAgIET/1hdzANBgkqhkiG9w0BAQUFADBxMR0wGwYDVQQDDBRk ZW1vLXRscy5vdmVyc2lwLm5ldDELMAkGA1UEBhMCRVMxEjAQBgNVBAoMCVZlcnNh dGljYTEQMA4GA1UECwwHT3ZlclNJUDEdMBsGCgmSJomT8ixkAQMMDWliY0BhbGlh eC5uZXQwHhcNMTIwNzEwMTEyMDMyWhcNMTcwNzEwMTEyMDMyWjBxMR0wGwYDVQQD DBRkZW1vLXRscy5vdmVyc2lwLm5ldDELMAkGA1UEBhMCRVMxEjAQBgNVBAoMCVZl cnNhdGljYTEQMA4GA1UECwwHT3ZlclNJUDEdMBsGCgmSJomT8ixkAQMMDWliY0Bh bGlheC5uZXQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBALXVloxokaERx4xL 0pH4rEe5liijlScKLGFJtpESUiG1pMTtWCxNzNTZ4J6mgdE07umS7567tHAEpRbr C+yJ+VzoLNEpOf+x9zm83NTs3xg55SbhfVEL1vQqlnsfr5YG0iTy2znUPM3r3LVS rTXz9UsIpnJO9ICvi28wz2a+HgStAgMBAAGjVDBSMAwGA1UdEwQFMAMBAf8wHQYD VR0OBBYEFLMUKsF6Xm3uI2UnBTXZihnyOv90MCMGA1UdEQQcMBqGGHNpcDpkZW1v LXRscy5vdmVyc2lwLm5ldDANBgkqhkiG9w0BAQUFAAOBgQAPj8XD5/snSPgjJocn TpWqbOIbsQBMn11+sRpftf2SsC82wQ4iZy3E1nEDVItO+YzGkxtt2VV+uFoWYNKp kzlTJDjvuE2lHwpiWgHIK4qcuC3NBYRKqopfmEtNj2vojQ3DPqyOA5v1YZyGw+SI AhSZ8W6FTvfiHCO5ut/d7036VA== -----END CERTIFICATE----- ================================================ FILE: etc/tls/demo-tls.oversip.net.key ================================================ -----BEGIN RSA PRIVATE KEY----- MIICWwIBAAKBgQC11ZaMaJGhEceMS9KR+KxHuZYoo5UnCixhSbaRElIhtaTE7Vgs TczU2eCepoHRNO7pku+eu7RwBKUW6wvsiflc6CzRKTn/sfc5vNzU7N8YOeUm4X1R C9b0KpZ7H6+WBtIk8ts51DzN69y1Uq018/VLCKZyTvSAr4tvMM9mvh4ErQIDAQAB AoGAVFzCOmaRmk8ra9YJ3hunoqdiGXy7yJ8ZtBGFGI2NeYJS7eLIU9XMwLxNUI4k ELIkXk4Dynt/3bDp/1YR9C6XeFEZkmLcA3jbaX74/mcx6GgeCdAUg1bvrzpSFqyk UYUw2ioFTKyfI1Z3VQmtWDxtz9BkHQ7uakOyu/HA8N8m0EECQQDe1velUoiQUTTn DlsdrMvwFhBvJHstXzZMA6Rwp7HKwh6kmaqycr4Lv5UZX/6nzpqiM7EO7eCD6l9n x7zIoOD5AkEA0OSHbCzJr0Wlxuq8joQe+ZXRz5BS+A3XWLG2ahnw/FdtLuxzNsWi PdDiUOO4xdPoVj/9l2xwkPTfDLsxmDRiVQJAWfZ7QBkT3P+L1gQrsM1EAAdIVzZp LCYWK5YE2x44Xt0Dtfv7t9Mu+ls7/GSO0HxOXVF1F8vdKiSCo8k1Y+HfMQJAcrLY zQP2ph+2+/cOG67eFys1biQP+pYXBWNnBvFBij0y/U3loVB5Wjnk2od/gFhvvVQb mVZ4pI9gHex3OdyhlQJAXNLuufGOEjnUC8lsmupiAQApMXscYPP0ahNES+hfX5uS ylXyHsIJp7h6tBbK/bv/BW4HYFsWUpLbjl71EC2ymg== -----END RSA PRIVATE KEY----- ================================================ FILE: etc/tls/upgrade-cacert.sh ================================================ #!/bin/bash # This script downloads the Root CAs list from Mozilla and stores # it under ca/ directory for TLS validation. # cacert.pem is downloaded from http://curl.haxx.se/docs/caextract.html # (the exact link is http://curl.haxx.se/ca/cacert.pem). # cacert.pem is just downloaded in case the server version is newer than # the local version of the file. cd ca/ wget -N http://curl.haxx.se/ca/cacert.pem ================================================ FILE: etc/tls/utils/create-cert.rb ================================================ #!/usr/bin/env ruby require "openssl" require "socket" require "readline" require "term/ansicolor" module OverSIP module Cert class Error < ::StandardError ; end extend Term::ANSIColor def self.create_cert begin puts puts bold(green("OverSIP TLS Certificate Generator")) puts puts bold("Certificate informational fields.") ca = OpenSSL::X509::Name.new cert_common_name = Readline.readline("- Common Name (eg, your name or your server's hostname): ").downcase.strip cert_common_name = nil if cert_common_name.empty? ca.add_entry "CN", cert_common_name if cert_common_name cert_country_code = Readline.readline("- Country Name (2 letter code): ").upcase.strip ca.add_entry "C", cert_country_code unless cert_country_code.empty? cert_state = Readline.readline("- State or Province Name (full name): ").strip ca.add_entry "ST", cert_state unless cert_state.empty? cert_locality = Readline.readline("- Locality Name (eg, city): ").strip ca.add_entry "L", cert_locality unless cert_locality.empty? cert_organization = Readline.readline("- Organization Name (eg, company): ").strip ca.add_entry "O", cert_organization unless cert_organization.empty? cert_organization_unit = Readline.readline("- Organizational Unit Name (eg, section): ").strip ca.add_entry "OU", cert_organization_unit unless cert_organization_unit.empty? cert_mail = Readline.readline("- Email: ").strip ca.add_entry "mail", cert_mail unless cert_mail.empty? puts puts bold("SubjectAltName SIP URI domains. ") + "For each given _domain_ an entry \"URI:sip:_domain_\" will be added to the SubjectAltName field." cert_sipuri_domains = Readline.readline("- SubjectAltName SIP URI domains (multiple values separated by space): ").downcase.strip.split cert_sipuri_domains = nil if cert_sipuri_domains.empty? puts puts bold("SubjectAltName DNS domains. ") + "For each given _domain_ an entry \"DNS:_domain_\" will be added to the SubjectAltName field." cert_dns_domains = Readline.readline("- SubjectAltName DNS domains (multiple values separated by space): ").downcase.strip.split cert_dns_domains = nil if cert_dns_domains.empty? puts puts bold("Signing data.") rsa_key_bits = Readline.readline("- RSA key bits (1024/2048/4096) [1024]: ").strip.to_i unless rsa_key_bits.zero? unless [1024, 2048, 4096].include? rsa_key_bits raise OverSIP::Cert::Error, "invalid number of bits (#{rsa_key_bits}) for RSA key" end else rsa_key_bits = 1024 end key = OpenSSL::PKey::RSA.generate(rsa_key_bits) cert = OpenSSL::X509::Certificate.new cert.version = 2 cert.subject = ca cert.issuer = ca cert.serial = Time.now.to_i cert.public_key = key.public_key years_to_expire = Readline.readline("- Expiration (in years from now) [1]: ").strip.to_i years_to_expire = 1 if years_to_expire.zero? cert.not_after = Time.now + (years_to_expire * 365 * 24 * 60 * 60) cert.not_before = Time.now - (24 * 60 * 60) factory = OpenSSL::X509::ExtensionFactory.new factory.subject_certificate = cert factory.issuer_certificate = cert subject_alt_name_fields = [] cert_sipuri_domains.each do |sipuri_domain| subject_alt_name_fields.<< "URI:sip:#{sipuri_domain}" end if cert_sipuri_domains cert_dns_domains.each do |dns_domain| subject_alt_name_fields.<< "DNS:#{dns_domain}" end if cert_dns_domains extensions = { "basicConstraints" => "CA:TRUE", "subjectKeyIdentifier" => "hash" } if subject_alt_name_fields.any? extensions["subjectAltName"] = subject_alt_name_fields.join(",") end cert.extensions = extensions.map {|k,v| factory.create_ext(k,v) } cert.sign(key, OpenSSL::Digest::SHA1.new) puts puts bold("File name. ") + "For the given _name_ a public certificate _name_.crt and a private key _name_.key will be created. Also a file _name_.key.crt containing both the public certificate and the private key will be created." file_name = Readline.readline("- File name [#{cert_common_name}]: ").strip file_name = cert_common_name if file_name.empty? unless file_name raise OverSIP::Cert::Error, "a file name must be set" end puts # Make two files: # - file_name.crt => public certificate. # - file_name.key => private key. {"key" => key, "crt" => cert}.each_pair do |ext, o| name = "#{file_name}.#{ext}" File.open(name, "w") {|f| f.write(o.to_pem) } File.chmod(0600, name) if ext == "key" case ext when "key" puts yellow(">> private key generated in file '#{bold("#{name}")}'") when "crt" puts yellow(">> public certificate generated in file '#{bold("#{name}")}'") end end # Make a single file containing both the public certificate and the private key. name = "#{file_name}.key.crt" File.open(name, "w") do |f| f.write(cert.to_pem) f.write(key.to_pem) end File.chmod(0600, name) puts yellow(">> public certificate + private key generated in file '#{bold("#{name}")}'") rescue ::Interrupt => e puts "\n\n" + red("Interrupted") exit rescue ::OverSIP::Cert::Error => e puts "\n" + bold(red("ERROR: #{e}")) exit 1 end end # def create_cert end end OverSIP::Cert.create_cert ================================================ FILE: etc/tls/utils/get-sip-identities.rb ================================================ #!/usr/bin/env ruby # Runs as follows: # # ~$ ruby get-sip-identities.rb PEM_FILE require "openssl" module TLS # Extracts the SIP identities in a public certificate following # the mechanism in http://tools.ietf.org/html/rfc5922#section-7.1 # and returns an array containing them. # # Arguments: # - _cert_: must be a public X.509 certificate in PEM format. # def self.get_sip_identities cert puts "DEBUG: following rules in RFC 5922 \"Domain Certificates in SIP\" section 7.1 \"Finding SIP Identities in a Certificate\"" verify_subjectAltName_DNS = true verify_CN = true subjectAltName_URI_sip_entries = [] subjectAltName_DNS_entries = [] sip_identities = {} cert.extensions.each do |ext| next if ext.oid != "subjectAltName" verify_CN = false ext.value.split(/,\s+/).each do |name| if /^URI:sip:([^@]*)/i =~ name verify_subjectAltName_DNS = false subjectAltName_URI_sip_entries << $1.downcase elsif verify_subjectAltName_DNS && /^DNS:(.*)/i =~ name subjectAltName_DNS_entries << $1.downcase end end end unless verify_CN puts "DEBUG: certificate contains 'subjectAltName' extensions, 'CommonName' ignored" unless verify_subjectAltName_DNS subjectAltName_URI_sip_entries.each {|domain| sip_identities[domain] = true} puts "DEBUG: 'subjectAltName' entries of type \"URI:sip:\" found, 'subjectAltName' entries of type \"DNS\" ignored" else subjectAltName_DNS_entries.each {|domain| sip_identities[domain] = true} puts "DEBUG: 'subjectAltName' entries of type \"URI:sip:\" not found, using 'subjectAltName' entries of type \"DNS\"" end else puts "DEBUG: no 'subjectAltName' extension found, using 'CommonName' value" cert.subject.to_a.each do |oid, value| if oid == "CN" sip_identities[value.downcase] = true break end end end return sip_identities end end unless (file = ARGV[0]) $stderr.puts "ERROR: no file given as argument" exit false end unless ::File.file?(file) and ::File.readable?(file) $stderr.puts "ERROR: given file is not a readable file" exit false end begin cert = ::OpenSSL::X509::Certificate.new(::File.read(file)) rescue => e $stderr.puts "ERROR: cannot get a PEM certificate in the given file: #{e.message} (#{e.class})" exit false end sip_identities = TLS.get_sip_identities cert puts if sip_identities.any? puts "SIP identities found in the certificate:" puts sip_identities.each_key {|name| puts " - #{name}"} else puts "No SIP identities found in the certificate" end puts ================================================ FILE: ext/common/c_util.h ================================================ /* * Generic C functions and macros go here, there are no dependencies * on OverSIP internal structures or the Ruby C API in here. */ #ifndef c_util_h #define c_util_h #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0])) /* * str_to_int: Given a pointer to char and length returns an int (but just possitive). */ static int str_to_int(const char* str, size_t len) { TRACE(); int number = 0; const char *s = str; while (len--) { /* Ignore zeroes at the beginning. */ if (number || *s != '0') number = number*10 + (*s)-'0'; s++; } return number; } /* * strnchr: Find the first character in a length limited string. * @s: The string to be searched * @len: The number of characters to be searched * @c: The character to search for */ static char *strnchr(const char *s, size_t len, size_t c) { TRACE(); for (; len--; ++s) if (*s == (char)c) return (char *)s; return NULL; } /* * str_find_upcase: Returns non zero if the string (*str, len) contains at least * an upcase letter. */ static char *str_find_upcase(const char *s, size_t len) { TRACE(); for (; len--; ++s) if (*s >= 'A' && *s <= 'Z') return (char *)s; return NULL; } /* * capitalizes all lower-case ASCII characters. */ static void downcase_char(char *c) { TRACE(); if (*c >= 'A' && *c <= 'Z') *c += 32; } #endif ================================================ FILE: ext/common/ruby_c_util.h ================================================ /* * Generic Ruby C functions and macros go here. */ #ifndef ruby_c_util_h #define ruby_c_util_h #include #include /* Required: http://redmine.ruby-lang.org/issues/show/4272 */ #include "c_util.h" #define RB_STR_UTF8_NEW(s, len) (rb_enc_str_new(s, len, rb_utf8_encoding())) /* * my_rb_str_hex_unescape: Unescapes hexadecimal encoded symbols (%NN). */ static VALUE my_rb_str_hex_unescape(const char *str, size_t len) { TRACE(); /* Check if hexadecimal unescaping is required. */ if (strnchr(str, len, '%')) { char *new_str; VALUE str_unescaped; new_str = ALLOC_N(char, len); memcpy(new_str, str, len); char *s, *t; char hex[3] = {0, 0, 0}; int i; for (s = t = new_str, i = 0 ; i < len ; s++, i++) { if (*s != '%' || !(*(s+1)) || !(*(s+2))) *t++ = *s; else { hex[0] = *(s+1); hex[1] = *(s+2); *t++ = (strtol(hex, NULL, 16) & 0xFF); s += 2; len -= 2; } } str_unescaped = RB_STR_UTF8_NEW(new_str, len); xfree(new_str); return(str_unescaped); } /* If unescaping is not required, then create a Ruby string with original pointer and length. */ else return(RB_STR_UTF8_NEW(str, len)); } /* * my_rb_str_downcase: Downcases a string formed by simple symbols (ASCII). */ static VALUE my_rb_str_downcase(const char *str, size_t len) { TRACE(); /* Check if there is at least an upcase char. */ if (str_find_upcase(str, len)) { char *new_str; VALUE str_downcased; new_str = ALLOC_N(char, len); memcpy(new_str, str, len); char *s; int i; for (s = new_str, i = 0 ; i < len ; s++, i++) if (*s >= 'A' && *s <= 'Z') *s += 32; str_downcased = RB_STR_UTF8_NEW(new_str, len); xfree(new_str); return(str_downcased); } /* If not, then create a Ruby string with original pointer and length. */ else return(RB_STR_UTF8_NEW(str, len)); } #endif ================================================ FILE: ext/sip_parser/common_headers.h ================================================ #ifndef common_headers_h #define common_headers_h #include "../common/c_util.h" #include "ruby.h" #include // toupper() /* There are 20 headers with sort representation. */ #define NUM_SHORT_HEADERS 20 struct common_header_name { const signed long len; const char *name; VALUE value; const char short_name; }; struct short_header { char abbr; VALUE value; }; /* * A list of common SIP headers we expect to receive. * This allows us to avoid repeatedly creating identical string * objects to be used with rb_hash_aset(). */ static struct common_header_name common_headers[] = { #define f(N, S) { (sizeof(N) - 1), N, Qnil, S } f("Accept", ' '), f("Accept-Contact", 'A'), f("Accept-Encoding", ' '), f("Accept-Language", ' '), f("Alert-Info", ' '), f("Allow", ' '), f("Allow-Events", 'U'), f("Authentication-Info", ' '), f("Authorization", ' '), f("Call-ID", 'I'), f("Call-Info", ' '), f("Contact", 'M'), f("Content-Disposition", ' '), f("Content-Encoding", 'E'), f("Content-Language", ' '), f("Content-Length", 'L'), f("Content-Type", 'C'), f("CSeq", ' '), f("Date", ' '), f("Event", 'O'), f("Error-Info", ' '), f("Expires", ' '), f("From", 'F'), f("Identity", 'Y'), f("Identity-Info", 'N'), f("In-Reply-To", ' '), f("Max-Forwards", ' '), f("Min-Expires", ' '), f("MIME-Version", ' '), f("Organization", ' '), f("Priority", ' '), f("Proxy-Authenticate", ' '), f("Proxy-Authorization", ' '), f("Proxy-Require", ' '), f("Record-Route", ' '), f("Refer-To", 'R'), f("Referred-By", 'B'), f("Reject-Contact", 'J'), f("Reply-To", ' '), f("Request-Disposition", 'D'), f("Require", ' '), f("Retry-After", ' '), f("Route", ' '), f("Server", ' '), f("Session-Expires", 'X'), f("Subject", 'S'), f("Supported", 'K'), f("Timestamp", ' '), f("To", 'T'), f("Unsupported", ' '), f("User-Agent", ' '), f("Via", 'V'), f("Warning", ' '), f("WWW-Authenticate", ' ') # undef f }; /* * The list of short headers. This list is filled by the funcion * init_short_header_names. */ static struct short_header short_headers[NUM_SHORT_HEADERS]; /* this function is not performance-critical, called only at load time */ static void init_common_headers(void) { TRACE(); int i; struct common_header_name *cf = common_headers; for(i = ARRAY_SIZE(common_headers); --i >= 0; cf++) { cf->value = rb_str_new(cf->name, cf->len); cf->value = rb_obj_freeze(cf->value); /* This tell Ruby not to GC global variables which refer to Ruby's objects, but are not exported to the Ruby world. */ rb_global_variable(&cf->value); } } /* this funcion fills the list of short headers taken the data from * common_headers array. */ static void init_short_headers(void) { TRACE(); int i, j; struct common_header_name *cf = common_headers; for(i = ARRAY_SIZE(common_headers), j=0; --i >= 0; cf++) { if (cf->short_name != ' ') { short_headers[j].abbr = cf->short_name; short_headers[j].value = cf->value; j++; } } } /* this function is called for every header set */ static VALUE find_common_header_name(const char *name, size_t len) { TRACE(); int i; struct common_header_name *cf = common_headers; for(i = ARRAY_SIZE(common_headers); --i >= 0; cf++) { if (cf->len == (long)len && !strncasecmp(cf->name, name, len)) return cf->value; } return Qnil; } /* This function is called for every short header found */ static VALUE find_short_header_name(char abbr) { TRACE(); int i; struct short_header *sh = short_headers; for(i = ARRAY_SIZE(short_headers); --i >= 0; sh++) { if (sh->abbr == toupper(abbr)) return sh->value; } return Qnil; } /* Tries to lookup the header name in a list of well-known headers. If so, * returns the retrieved VALUE. It also works for short headers. * In case the header is unknown, it normalizes it (by capitalizing the * first letter and each letter under a "-" or "_" symbol). */ static VALUE headerize(const char* hname, size_t hname_len) { TRACE(); VALUE headerized; char* str; int i; /* Header short name. */ if (hname_len == 1) { headerized = find_short_header_name(hname[0]); if (NIL_P(headerized)) { headerized = rb_str_new(hname, hname_len); /* Downcase the header name. */ downcase_char(RSTRING_PTR(headerized)); } } /* Header long name. */ else { headerized = find_common_header_name(hname, hname_len); if (NIL_P(headerized)) { headerized = rb_str_new(hname, hname_len); str = RSTRING_PTR(headerized); if (*str >= 'a' && *str <= 'z') *str &= ~0x20; for(i = 1; i < hname_len; i++) { if (str[i-1] == '-' || str[i-1] == '_') { if (str[i] >= 'a' && str[i] <= 'z') str[i] &= ~0x20; } else { if (str[i] >= 'A' && str[i] <= 'Z') str[i] += 32; } } } } return(headerized); } #endif ================================================ FILE: ext/sip_parser/compile_ragel_files.sh ================================================ #!/bin/bash which ragel >/dev/null if [ $? -ne 0 ] ; then echo "ERROR: ragel binary not found, cannot compile the Ragel grammar." >&2 exit 1 else ragel -v echo fi set -e RAGEL_FILE=sip_message_parser echo "DEBUG: compiling Ragel grammar $RAGEL_FILE.rl ..." ragel -T0 -C $RAGEL_FILE.rl echo echo "DEBUG: $RAGEL_FILE.c generated" echo RAGEL_FILE=sip_uri_parser echo "DEBUG: compiling Ragel grammar $RAGEL_FILE.rl ..." ragel -T0 -C $RAGEL_FILE.rl echo echo "DEBUG: $RAGEL_FILE.c generated" echo ================================================ FILE: ext/sip_parser/compile_ragel_sip_message_parser.sh ================================================ #!/bin/bash which ragel >/dev/null if [ $? -ne 0 ] ; then echo "ERROR: ragel binary not found, cannot compile the Ragel grammar." >&2 exit 1 else ragel -v echo fi set -e RAGEL_FILE=sip_message_parser echo "DEBUG: compiling Ragel grammar $RAGEL_FILE.rl ..." ragel -T0 -C $RAGEL_FILE.rl echo echo "DEBUG: $RAGEL_FILE.c generated" echo ================================================ FILE: ext/sip_parser/compile_ragel_sip_uri_parser.sh ================================================ #!/bin/bash which ragel >/dev/null if [ $? -ne 0 ] ; then echo "ERROR: ragel binary not found, cannot compile the Ragel grammar." >&2 exit 1 else ragel -v echo fi set -e RAGEL_FILE=sip_uri_parser echo "DEBUG: compiling Ragel grammar $RAGEL_FILE.rl ..." ragel -T0 -C $RAGEL_FILE.rl echo echo "DEBUG: $RAGEL_FILE.c generated" echo ================================================ FILE: ext/sip_parser/ext_help.h ================================================ #ifndef ext_help_h #define ext_help_h #define RAISE_NOT_NULL(T) if(T == NULL) rb_raise(rb_eArgError, "NULL found for " # T " when shouldn't be."); #define DATA_GET(from,type,name) Data_Get_Struct(from,type,name); RAISE_NOT_NULL(name); #define REQUIRE_TYPE(V, T) if(TYPE(V) != T) rb_raise(rb_eTypeError, "Wrong argument type for " # V " required " # T); /* Uncomment for enabling TRACE() function. */ /*#define DEBUG */ #ifdef DEBUG #define TRACE() fprintf(stderr, "TRACE: %s:%d:%s\n", __FILE__, __LINE__, __FUNCTION__) #else #define TRACE() #endif #endif ================================================ FILE: ext/sip_parser/extconf.rb ================================================ require "mkmf" create_makefile("oversip/sip/sip_parser") ================================================ FILE: ext/sip_parser/grammar_absolute_uri.rl ================================================ %%{ machine grammar_absolute_uri; abs_uri_reg_name = ( unreserved | escaped | "$" | "," | ";" | ":" | "@" | "&" | "=" | "+" )+; abs_uri_srvr = ( ( userinfo "@" )? hostport )?; abs_uri_authority = abs_uri_srvr | abs_uri_reg_name; abs_uri_scheme = ALPHA ( ALPHA | DIGIT | "+" | "-" | "." )* - ( "sip"i | "sips"i | "tel"i ); abs_uri_pchar = unreserved | escaped | ":" | "@" | "&" | "=" | "+" | "$" | ","; abs_uri_param = ( abs_uri_pchar )*; abs_uri_segment = ( abs_uri_pchar )* ( ";" abs_uri_param )*; abs_uri_path_segments = abs_uri_segment ( "/" abs_uri_segment )*; abs_uri_uric = reserved | unreserved | escaped; abs_uri_query = ( abs_uri_uric )*; abs_uri_uric_no_slash = abs_uri_uric - "/"; abs_uri_opaque_part = abs_uri_uric_no_slash ( abs_uri_uric )*; abs_uri_abs_path = "/" abs_uri_path_segments; abs_uri_net_path = "//" abs_uri_authority ( abs_uri_abs_path )?; # NOTE: Original BNF in RFC 3261 for absoluteURI doesn't allow "mailto:qwe@[::1]" (due to a bug in RFC 3986 URI). Fix it: # http://crazygreek.co.uk/blogger/2009/03/sip-uri-syntax-is-broken-with-ipv6.html # http://www.ietf.org/mail-archive/web/sip/current/msg26338.html #abs_uri_hier_part = ( abs_uri_net_path | abs_uri_abs_path ) ( "?" abs_uri_query )?; abs_uri_hier_part = ( abs_uri_net_path | abs_uri_abs_path | abs_uri_authority ) ( "?" abs_uri_query )?; absoluteURI = ( abs_uri_scheme %uri_is_unknown >start_uri >mark %uri_scheme ":" ( abs_uri_hier_part | abs_uri_opaque_part ) ) %write_uri; }%% ================================================ FILE: ext/sip_parser/grammar_name_addr.rl ================================================ %%{ machine grammar_name_addr; uri_display_name = ( quoted_string >uri_display_name_quoted | ( token ( LWS token )* ) ); addr_spec = SIP_URI | TEL_URI | absoluteURI; name_addr = ( uri_display_name >mark %uri_display_name )? LAQUOT addr_spec RAQUOT; # It solves a problem when multiples name_addr are allowed separated by COMMA (i.e. Contact header). name_addr_anti_COMMA = ( uri_display_name >mark %uri_display_name )? LAQUOT addr_spec ">"; # In Route header just SIP/SIPS schemes are allowed. It also allows comma separated values, so apply # same as in name_addr_anti_COMMA. name_addr_sip = ( uri_display_name >mark %uri_display_name )? LAQUOT SIP_URI ">"; }%% ================================================ FILE: ext/sip_parser/grammar_sip_core.rl ================================================ %%{ machine grammar_sip_core; CRLF = "\r\n"; DIGIT = "0".."9"; ALPHA = "a".."z" | "A".."Z"; HEXDIG = DIGIT | "A"i | "B"i | "C"i | "D"i | "E"i | "F"i; DQUOTE = "\""; SP = " "; HTAB = "\t"; WSP = SP | HTAB; LWS = ( WSP* CRLF )? WSP+; SWS = LWS?; OCTET = 0x00..0xff; VCHAR = 0x21..0x7e; HCOLON = ( SP | HTAB )* ":" SWS; SEMI = SWS ";" SWS; EQUAL = SWS "=" SWS; SLASH = SWS "/" SWS; COLON = SWS ":" SWS; COMMA = SWS "," SWS; RAQUOT = ">" SWS; LAQUOT = SWS "<"; UTF8_CONT = 0x80..0xbf; UTF8_NONASCII = ( 0xc0..0xdf UTF8_CONT ) | ( 0xe0..0xef UTF8_CONT{2} ) | ( 0xf0..0xf7 UTF8_CONT{3} ) | ( 0xf8..0xfb UTF8_CONT{4} ) | ( 0xfc..0xfd UTF8_CONT{5} ); # NOTE: Workaround to relax grammar: # https://lists.cs.columbia.edu/pipermail/sip-implementors/2010-December/026127.html # NOTE: This allows non UTF-8 symbols in headers! #UTF8_NONASCII = 0x80..0xff; # NOTE: Added by me (doesn't include space neither tabulator). PRINTABLE_ASCII = 0x21..0x7e; TEXT_UTF8char = PRINTABLE_ASCII | UTF8_NONASCII; alphanum = ALPHA | DIGIT; reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" | "$" | ","; mark = "-" | "_" | "." | "!" | "~" | "*" | "'" | "(" | ")"; unreserved = alphanum | mark; escaped = "%" HEXDIG HEXDIG; token = ( alphanum | "-" | "." | "!" | "%" | "*" | "_" | "+" | "`" | "'" | "~" )+; word = ( alphanum | "-" | "." | "!" | "%" | "*" | "_" | "+" | "`" | "'" | "~" | "(" | ")" | "<" | ">" | ":" | "\\" | DQUOTE | "/" | "[" | "]" | "?" | "{" | "}" )+; ctext = 0x21..0x27 | 0x2a..0x5b | 0x5d..0x7e | UTF8_NONASCII | LWS; quoted_pair = "\\" ( 0x00..0x09 | 0x0b..0x0c | 0x0e..0x7f ); comment = SWS "(" ( ctext | quoted_pair | "(" | ")" )* ")" SWS ; qdtext = LWS | "!" | 0x23..0x5b | 0x5d..0x7e | UTF8_NONASCII; quoted_string = DQUOTE ( qdtext | quoted_pair )* DQUOTE; domainlabel = alphanum | ( alphanum ( alphanum | "-" | "_" )* alphanum ); toplabel = ALPHA | ( ALPHA ( alphanum | "-" | "_" )* alphanum ); hostname = ( domainlabel "." )* toplabel "."?; dec_octet = DIGIT | ( 0x31..0x39 DIGIT ) | ( "1" DIGIT{2} ) | ( "2" 0x30..0x34 DIGIT ) | ( "25" 0x30..0x35 ); IPv4address = dec_octet "." dec_octet "." dec_octet "." dec_octet; h16 = HEXDIG{1,4}; ls32 = ( h16 ":" h16 ) | IPv4address; IPv6address = ( ( h16 ":" ){6} ls32 ) | ( "::" ( h16 ":" ){5} ls32 ) | ( h16? "::" ( h16 ":" ){4} ls32 ) | ( ( ( h16 ":" )? h16 )? "::" ( h16 ":" ){3} ls32 ) | ( ( ( h16 ":" ){,2} h16 )? "::" ( h16 ":" ){2} ls32 ) | ( ( ( h16 ":" ){,3} h16 )? "::" h16 ":" ls32 ) | ( ( ( h16 ":" ){,4} h16 )? "::" ls32 ) | ( ( ( h16 ":" ){,5} h16 )? "::" h16 ) | ( ( ( h16 ":" ){,6} h16 )? "::" ); IPv6reference = "[" IPv6address "]"; host = hostname | IPv4address | IPv6reference; #port = DIGIT{1,5}; # Valid values: 0 - 65535. port = ( DIGIT{1,4} | "1".."5" DIGIT{4} | "6" "0".."4" DIGIT{3} | "6" "5" "0".."4" DIGIT{2} | "6" "5" "5" "0".."2" DIGIT | "6" "5" "5" "3" "0".."5" ) - ( "0" | "00" | "000" | "0000" ); hostport = host ( ":" port )?; user_unreserved = "&" | "=" | "+" | "$" | "," | ";" | "?" | "/"; # NOTE: '#' allowed even if it's incorrect. user = ( user_unreserved | unreserved | escaped | "#" )+; password = ( unreserved | escaped | "&" | "=" | "+" | "$" | "," )*; userinfo = user ( ":" password )?; }%% ================================================ FILE: ext/sip_parser/grammar_sip_headers.rl ================================================ %%{ machine grammar_sip_headers; DefinedHeader = "Call-ID"i | "i"i | "Contact"i | "m"i | "Content-Length"i | "l"i | "CSeq"i | "From"i | "f"i | "Max-Forwards"i | "Proxy-Require"i | "Require"i | "Supported"i | "k"i | "Route"i | "To"i | "t"i | "Via"i | "v"i; header_param_gen_value = token | host | quoted_string; header_param = token ( EQUAL header_param_gen_value )? ; generic_hdr_name = ( token - DefinedHeader ) >write_hdr_value >start_hdr_field %write_hdr_field; generic_hdr_value = ( TEXT_UTF8char | UTF8_CONT | LWS )* >start_hdr_value %store_hdr_value; GenericHeader = generic_hdr_name HCOLON generic_hdr_value; ### Call-ID. call_id_value = ( word ( "@" word )? ) >mark %msg_call_id; Call_ID = ( "Call-ID"i | "i"i ) >write_hdr_value >start_hdr_field %write_hdr_field HCOLON >new_call_id call_id_value >start_hdr_value %store_hdr_value; ### Contact (just for the case in which Contact contains a single SIP URI). # Contact: "Alice Ñ€€€" #contact_param = token >start_header_param_key %header_param_key_len # ( EQUAL header_param_gen_value >start_header_param_value %header_param_value_len )? %write_contact_param; contact_param = token ( EQUAL header_param_gen_value )?; contact_reg_id_param = "reg-id"i %contact_has_reg_id_param ( "=" token )?; contact_params = ( SEMI ( contact_reg_id_param | contact_param ) )* >mark %contact_params; contact_value = ( ( name_addr_sip | ( SIP_URI -- ( "," | "?" | ";" ) ) ) contact_params ) >start_hdr_value >do_contact_uri %contact_is_valid %store_hdr_value; Contact = ( "Contact"i | "m"i ) >write_hdr_value >start_hdr_field %write_hdr_field HCOLON >new_contact >init_contact ( ( contact_value (COMMA @contact_is_invalid %write_hdr_value <: contact_value >new_contact)* ) | generic_hdr_value ); ### Content-Length. content_length_value = DIGIT{1,9} >mark %msg_content_length; Content_Length = ( "Content-Length"i | "l"i ) >write_hdr_value >start_hdr_field %write_hdr_field HCOLON >new_content_length content_length_value >start_hdr_value %store_hdr_value; ### CSeq. # CSeq: 4711 INVITE cseq_value = DIGIT{1,10} >mark %msg_cseq_number LWS ( Method %msg_method when ! is_method_set | token when is_method_set ); CSeq = "CSeq"i >write_hdr_value >start_hdr_field %write_hdr_field HCOLON >new_cseq cseq_value >start_hdr_value %store_hdr_value; ### From. # From: "A. G. Bell" ;tag=a48s from_tag_param = "tag"i EQUAL token >mark %from_tag; from_param = ( from_tag_param | token ( EQUAL header_param_gen_value )? ); from_value = ( name_addr | ( addr_spec -- ( "," | "?" | ";" ) ) ) ( SEMI from_param )*; From = ( "From"i | "f"i ) >write_hdr_value >start_hdr_field %write_hdr_field HCOLON >init_from >new_from from_value >start_hdr_value >do_from_uri %store_hdr_value; ### Max-Forwards. max_forwards_value = DIGIT{1,4} >mark %msg_max_forwards; Max_Forwards = "Max-Forwards"i >write_hdr_value >start_hdr_field %write_hdr_field HCOLON >new_max_forwards max_forwards_value >start_hdr_value %store_hdr_value; # Option tag is used by Proxy-Require, Require and Supported headers. option_tag = token; ### Proxy-Require. Proxy_Require = ( "Proxy-Require"i ) >write_hdr_value >start_hdr_field %write_hdr_field HCOLON ( option_tag >mark %proxy_require_option_tag ( COMMA option_tag >mark %proxy_require_option_tag )* ) >start_hdr_value %store_hdr_value; ### Require. Require = ( "Require"i ) >write_hdr_value >start_hdr_field %write_hdr_field HCOLON ( option_tag >mark %require_option_tag ( COMMA option_tag >mark %require_option_tag )* ) >start_hdr_value %store_hdr_value; ### Route. route_param = token ( EQUAL header_param_gen_value )?; route_value = ( name_addr_sip ( SEMI route_param )* ) >start_hdr_value >do_route_uri %store_hdr_value; Route = "Route"i >write_hdr_value >start_hdr_field %write_hdr_field HCOLON >init_route >init_route_uri route_value ( COMMA %init_route_uri %write_hdr_value <: route_value )*; ### Supported. Supported = ( "Supported"i | "k"i ) >write_hdr_value >start_hdr_field %write_hdr_field HCOLON ( option_tag >mark %supported_option_tag ( COMMA option_tag >mark %supported_option_tag )* )? >start_hdr_value %store_hdr_value; ### To. to_tag_param = "tag"i EQUAL token >mark %to_tag; to_param = ( to_tag_param | token ( EQUAL header_param_gen_value )? ); to_value = ( name_addr | ( addr_spec -- ( "," | "?" | ";" ) ) ) ( SEMI to_param )*; To = ( "To"i | "t"i ) >write_hdr_value >start_hdr_field %write_hdr_field HCOLON >init_to >new_to to_value >start_hdr_value >do_to_uri %store_hdr_value; ### Via. via_protocol_name = "SIP"i | token; via_protocol_version = token; via_transport = token; via_sent_protocol = via_protocol_name SLASH via_protocol_version SLASH via_transport; via_sent_by = host >mark %via_sent_by_host ( COLON port >mark %via_sent_by_port )?; # NOTE: By setting %via_branch_rfc3261, in case the branch is just "z9hG4bK" then the action is not executed. via_branch = "branch"i EQUAL ( ( "z9hG4bK" %via_branch_rfc3261 )? token ) >mark %via_branch; via_received = "received"i EQUAL ( IPv4address | IPv6address ) >mark %via_received; via_rport = "rport"i %via_has_rport ( EQUAL port )?; via_alias = "alias"i %via_has_alias ( EQUAL token )?; via_other_param = ( token - ( "branch"i | "received"i | "rport"i | "alias"i ) ) >start_header_param_key %header_param_key_len ( EQUAL header_param_gen_value >start_header_param_value %header_param_value_len )? %write_via_param; via_param = ( via_branch | via_received | via_rport | via_alias | via_other_param ); via_params = ( SEMI via_param )*; via_value = ( via_sent_protocol LWS via_sent_by %write_header_via_core via_params ) >new_via >start_hdr_value %store_hdr_value; Via = ( "Via"i | "v"i ) >write_hdr_value >start_hdr_field %write_hdr_field HCOLON >init_via via_value ( COMMA %write_hdr_value via_value )*; Header = GenericHeader | Call_ID | Contact | Content_Length | CSeq | From | Max_Forwards | Proxy_Require | Require | Route | Supported | To | Via; }%% ================================================ FILE: ext/sip_parser/grammar_sip_message.rl ================================================ %%{ machine grammar_sip_message; include grammar_sip_core "grammar_sip_core.rl"; Method = ( "INVITE" %msg_method_INVITE | "ACK" %msg_method_ACK | "CANCEL" %msg_method_CANCEL | "PRACK" %msg_method_PRACK | "BYE" %msg_method_BYE | "REFER" %msg_method_REFER | "INFO" %msg_method_INFO | "UPDATE" %msg_method_UPDATE | "OPTIONS" %msg_method_OPTIONS | "REGISTER" %msg_method_REGISTER | "MESSAGE" %msg_method_MESSAGE | "SUBSCRIBE" %msg_method_SUBSCRIBE | "NOTIFY" %msg_method_NOTIFY | "PUBLISH" %msg_method_PUBLISH | "PULL" %msg_method_PULL | "PUSH" %msg_method_PUSH | "STORE" %msg_method_STORE | token ) >mark %msg_method_unknown; include grammar_sip_uri "grammar_sip_uri.rl"; include grammar_tel_uri "grammar_tel_uri.rl"; include grammar_absolute_uri "grammar_absolute_uri.rl"; include grammar_name_addr "grammar_name_addr.rl"; include grammar_sip_headers "grammar_sip_headers.rl"; ### TODO: Quitar el HTTP SIP_Version = ( "SIP"i | "HTTP"i ) "/" DIGIT{1,2} "." DIGIT{1,2}; # In request. Request_Line = Method %msg_request %msg_method SP >init_ruri ( SIP_URI | TEL_URI | absoluteURI ) >do_request_uri SP SIP_Version >mark %msg_sip_version; # In response. Status_Code = ( "1".."6" DIGIT{2} ) >mark %msg_status_code; Reason_Phrase = ( ( any )* -- CRLF ) >mark %msg_reason_phrase; Status_Line = SIP_Version %msg_response >mark %msg_sip_version SP Status_Code SP Reason_Phrase; SIP_Message = ( Request_Line :> CRLF | Status_Line :> CRLF ) ( Header CRLF )* CRLF >write_hdr_value @done; Outbound_keepalive = ( CRLF CRLF ) @outbound_keepalive @done; main := ( CRLF? SIP_Message ) | Outbound_keepalive; }%% ================================================ FILE: ext/sip_parser/grammar_sip_uri.rl ================================================ %%{ machine grammar_sip_uri; sip_uri_param_unreserved = "[" | "]" | "/" | ":" | "&" | "+" | "$"; sip_uri_paramchar = sip_uri_param_unreserved | unreserved | escaped; #sip_uri_pname = sip_uri_paramchar+; # Let's allow ugly devices that add parameters with "=" but no value! sip_uri_pname = sip_uri_paramchar+ "="?; sip_uri_pvalue = sip_uri_paramchar+; sip_uri_lr = "lr"i %sip_uri_has_lr ( "=" token )?; sip_uri_ob = "ob"i %sip_uri_has_ob ( "=" token )?; # Custom URI param for Route header inspection. # as it's not discarded in 'sip_uri_param'. sip_uri_ovid = "ovid"i ( "=" token >mark %sip_uri_ovid )?; sip_uri_transport = "transport="i ( "udp"i %sip_uri_transport_udp | "tcp"i %sip_uri_transport_tcp | "tls"i %sip_uri_transport_tls | "sctp"i %sip_uri_transport_sctp | "ws"i %sip_uri_transport_ws | "wss"i %sip_uri_transport_wss | ( token - ( "udp"i | "tcp"i | "tls"i | "sctp"i | "ws"i | "wss"i ) ) >mark %sip_uri_transport_unknown ); sip_uri_param = ( sip_uri_pname >start_uri_param_key %uri_param_key_len ( "=" sip_uri_pvalue >start_uri_param_value %uri_param_value_len )? %write_uri_param ) | sip_uri_transport | sip_uri_lr | sip_uri_ob | sip_uri_ovid; sip_uri_params = ( ";" sip_uri_param )*; sip_uri_hnv_unreserved = "[" | "]" | "/" | "?" | ":" | "+" | "$"; sip_uri_hname = ( sip_uri_hnv_unreserved | unreserved | escaped )+; sip_uri_hvalue = ( sip_uri_hnv_unreserved | unreserved | escaped )*; sip_uri_header = sip_uri_hname "=" sip_uri_hvalue; sip_uri_headers = "?" sip_uri_header ( "&" sip_uri_header )*; SIP_URI = ( ( "sip"i %uri_is_sip | "sips"i %uri_is_sips ) >start_uri >mark %uri_scheme ":" ( userinfo >mark %uri_user "@" )? ( hostname %uri_host_domain | IPv4address %uri_host_ipv4 | IPv6reference %uri_host_ipv6 ) >mark ( ":" port >mark %uri_port )? sip_uri_params ( sip_uri_headers >mark %uri_headers )? ) %write_uri; }%% ================================================ FILE: ext/sip_parser/grammar_tel_uri.rl ================================================ %%{ machine grammar_tel_uri; tel_visual_separator = "-" | "." | "(" | ")"; tel_phonedigit = DIGIT | tel_visual_separator; tel_global_number_digits = "+" tel_phonedigit* DIGIT tel_phonedigit*; tel_phonedigit_hex = HEXDIG | "*" | "#" | tel_visual_separator; tel_local_number_digits = tel_phonedigit_hex* ( HEXDIG | "*" | "#" ) tel_phonedigit_hex*; tel_descriptor = hostname | tel_global_number_digits; tel_context = "phone-context="i tel_descriptor >mark %uri_tel_phone_context; tel_param_unreserved = "[" | "]" | "/" | ":" | "&" | "+" | "$"; tel_pct_encoded = "%" HEXDIG HEXDIG; tel_paramchar = tel_param_unreserved | unreserved | tel_pct_encoded; tel_uri_pname = ( alphanum | "-" )+; tel_uri_pvalue = tel_paramchar+; tel_uri_param = ( tel_uri_pname >start_uri_param_key %uri_param_key_len ( "=" tel_uri_pvalue >start_uri_param_value %uri_param_value_len )? %write_uri_param ) | tel_context; tel_uri_params = ( ";" tel_uri_param )*; tel_global_number = tel_global_number_digits >mark %uri_user tel_uri_params; tel_local_number = tel_local_number_digits >mark %uri_user tel_uri_params; TEL_URI = ( "tel:"i %uri_is_tel >start_uri >mark %uri_scheme ( tel_global_number | tel_local_number ) ) %write_uri; }%% ================================================ FILE: ext/sip_parser/sip_message_parser.c ================================================ #line 1 "sip_message_parser.rl" #include "sip_parser.h" #include "ext_help.h" #include #include #include #include #include #define MARK(M, FPC) (parser->M = (FPC) - buffer) #define LEN(AT, FPC) (FPC - buffer - parser->AT) #define PTR_TO(F) (buffer + parser->F) /** machine **/ #line 572 "sip_message_parser.rl" /** Data **/ #line 27 "sip_message_parser.c" static const char _sip_message_parser_actions[] = { 0, 1, 3, 1, 5, 1, 6, 1, 7, 1, 8, 1, 28, 1, 29, 1, 30, 1, 31, 1, 32, 1, 33, 1, 37, 1, 39, 1, 40, 1, 41, 1, 42, 1, 43, 1, 49, 1, 59, 1, 60, 1, 61, 1, 62, 1, 63, 1, 64, 1, 65, 1, 66, 1, 77, 1, 80, 1, 81, 1, 84, 1, 93, 1, 94, 1, 102, 1, 104, 1, 105, 1, 106, 1, 107, 1, 108, 2, 1, 28, 2, 2, 108, 2, 3, 30, 2, 5, 35, 2, 5, 46, 2, 5, 48, 2, 5, 50, 2, 5, 52, 2, 6, 3, 2, 6, 7, 2, 6, 89, 2, 6, 92, 2, 6, 97, 2, 6, 100, 2, 8, 4, 2, 32, 45, 2, 34, 45, 2, 36, 6, 2, 37, 44, 2, 38, 44, 2, 39, 7, 2, 41, 7, 2, 42, 7, 2, 43, 7, 2, 47, 7, 2, 51, 7, 2, 53, 7, 2, 54, 58, 2, 55, 58, 2, 57, 58, 2, 59, 84, 2, 60, 3, 2, 60, 84, 2, 61, 3, 2, 61, 84, 2, 62, 3, 2, 62, 84, 2, 63, 3, 2, 63, 84, 2, 65, 68, 2, 65, 78, 2, 65, 79, 2, 66, 3, 2, 67, 68, 2, 69, 84, 2, 77, 3, 2, 77, 84, 2, 80, 3, 2, 80, 84, 2, 81, 7, 2, 83, 3, 2, 84, 7, 2, 93, 7, 2, 94, 7, 2, 105, 7, 2, 106, 7, 2, 107, 7, 3, 5, 87, 88, 3, 5, 90, 91, 3, 5, 95, 96, 3, 5, 99, 98, 3, 6, 89, 3, 3, 6, 92, 3, 3, 6, 97, 3, 3, 6, 100, 3, 3, 6, 100, 7, 3, 8, 36, 6, 3, 26, 27, 7, 3, 32, 45, 7, 3, 34, 45, 7, 3, 37, 44, 7, 3, 38, 44, 7, 3, 56, 58, 3, 3, 59, 84, 7, 3, 60, 84, 3, 3, 60, 84, 7, 3, 61, 84, 3, 3, 61, 84, 7, 3, 62, 84, 3, 3, 62, 84, 7, 3, 63, 84, 3, 3, 63, 84, 7, 3, 65, 68, 3, 3, 65, 68, 78, 3, 65, 68, 79, 3, 65, 68, 84, 3, 67, 68, 3, 3, 67, 68, 70, 3, 67, 68, 71, 3, 67, 68, 72, 3, 67, 68, 73, 3, 67, 68, 74, 3, 67, 68, 75, 3, 67, 68, 76, 3, 67, 68, 77, 3, 67, 68, 80, 3, 67, 68, 84, 3, 86, 83, 3, 3, 101, 103, 7, 4, 3, 101, 103, 7, 4, 6, 89, 3, 82, 4, 6, 89, 3, 83, 4, 6, 92, 3, 82, 4, 6, 92, 3, 83, 4, 6, 97, 3, 82, 4, 6, 100, 3, 82, 4, 6, 100, 3, 83, 4, 8, 99, 6, 100, 4, 9, 26, 27, 7, 4, 10, 26, 27, 7, 4, 11, 26, 27, 7, 4, 12, 26, 27, 7, 4, 13, 26, 27, 7, 4, 14, 26, 27, 7, 4, 15, 26, 27, 7, 4, 16, 26, 27, 7, 4, 17, 26, 27, 7, 4, 18, 26, 27, 7, 4, 19, 26, 27, 7, 4, 20, 26, 27, 7, 4, 21, 26, 27, 7, 4, 22, 26, 27, 7, 4, 23, 26, 27, 7, 4, 24, 26, 27, 7, 4, 25, 26, 27, 7, 4, 26, 0, 27, 85, 4, 65, 68, 78, 3, 4, 65, 68, 78, 84, 4, 65, 68, 79, 3, 4, 65, 68, 79, 84, 4, 67, 68, 70, 84, 4, 67, 68, 71, 3, 4, 67, 68, 71, 84, 4, 67, 68, 72, 3, 4, 67, 68, 72, 84, 4, 67, 68, 73, 3, 4, 67, 68, 73, 84, 4, 67, 68, 74, 3, 4, 67, 68, 74, 84, 4, 67, 68, 75, 3, 4, 67, 68, 75, 84, 4, 67, 68, 76, 3, 4, 67, 68, 76, 84, 4, 67, 68, 77, 3, 4, 67, 68, 77, 84, 4, 67, 68, 80, 3, 4, 67, 68, 80, 84, 4, 96, 8, 6, 97, 4, 101, 103, 7, 104, 4, 102, 101, 103, 7, 5, 3, 101, 103, 7, 104, 5, 8, 99, 6, 100, 3, 5, 8, 99, 6, 100, 7, 5, 9, 26, 0, 27, 85, 5, 10, 26, 0, 27, 85, 5, 11, 26, 0, 27, 85, 5, 12, 26, 0, 27, 85, 5, 13, 26, 0, 27, 85, 5, 14, 26, 0, 27, 85, 5, 15, 26, 0, 27, 85, 5, 16, 26, 0, 27, 85, 5, 17, 26, 0, 27, 85, 5, 18, 26, 0, 27, 85, 5, 19, 26, 0, 27, 85, 5, 20, 26, 0, 27, 85, 5, 21, 26, 0, 27, 85, 5, 22, 26, 0, 27, 85, 5, 23, 26, 0, 27, 85, 5, 24, 26, 0, 27, 85, 5, 25, 26, 0, 27, 85, 5, 96, 8, 6, 97, 3, 5, 102, 101, 103, 7, 104, 6, 8, 99, 6, 100, 3, 82, 6, 8, 99, 6, 100, 3, 83, 6, 60, 84, 3, 101, 103, 7, 6, 61, 84, 3, 101, 103, 7, 6, 62, 84, 3, 101, 103, 7, 6, 63, 84, 3, 101, 103, 7, 6, 96, 8, 6, 97, 3, 82, 7, 60, 84, 3, 101, 103, 7, 104, 7, 61, 84, 3, 101, 103, 7, 104, 7, 62, 84, 3, 101, 103, 7, 104, 7, 63, 84, 3, 101, 103, 7, 104 }; static const short _sip_message_parser_cond_offsets[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 28, 28, 56, 69, 84, 99, 112, 127, 142, 155, 169, 184, 199, 214, 229, 242, 257, 274, 289, 302, 317, 332, 347, 360, 375, 390, 405, 419, 434, 449, 462, 477, 492, 507, 522, 537, 550, 565, 580, 595, 610, 625, 640, 653, 670, 684, 699, 714, 727, 746, 761, 776, 791, 806, 819, 834, 847, 862, 875, 890, 906, 921, 936, 949, 964, 979, 994, 1009, 1024, 1037, 1053, 1068, 1083, 1098, 1111, 1126, 1141, 1156, 1171, 1186, 1201, 1216, 1229, 1244, 1259, 1273, 1288, 1303, 1316, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329, 1329 }; static const char _sip_message_parser_cond_lengths[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 28, 13, 15, 15, 13, 15, 15, 13, 14, 15, 15, 15, 15, 13, 15, 17, 15, 13, 15, 15, 15, 13, 15, 15, 15, 14, 15, 15, 13, 15, 15, 15, 15, 15, 13, 15, 15, 15, 15, 15, 15, 13, 17, 14, 15, 15, 13, 19, 15, 15, 15, 15, 13, 15, 13, 15, 13, 15, 16, 15, 15, 13, 15, 15, 15, 15, 15, 13, 16, 15, 15, 15, 13, 15, 15, 15, 15, 15, 15, 15, 13, 15, 15, 14, 15, 15, 13, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; static const short _sip_message_parser_cond_keys[] = { 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 65, 66, 66, 67, 67, 68, 72, 73, 73, 74, 76, 77, 77, 78, 78, 79, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 65, 66, 66, 67, 67, 68, 72, 73, 73, 74, 76, 77, 77, 78, 78, 79, 79, 80, 80, 81, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 66, 67, 67, 68, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 74, 75, 75, 76, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 88, 89, 89, 90, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 68, 69, 69, 70, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 65, 66, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 77, 78, 78, 79, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 66, 67, 67, 68, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 68, 69, 69, 70, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 75, 76, 76, 77, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 77, 78, 78, 79, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 69, 70, 70, 71, 85, 86, 86, 87, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 78, 79, 79, 80, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 72, 73, 73, 74, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 83, 84, 84, 85, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 68, 69, 69, 70, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 68, 69, 69, 70, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 82, 83, 83, 84, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 82, 83, 83, 84, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 65, 66, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 70, 71, 71, 72, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 68, 69, 69, 70, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 78, 79, 79, 80, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 83, 84, 84, 85, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 72, 73, 73, 74, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 88, 89, 89, 90, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 79, 80, 80, 81, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 83, 84, 84, 85, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 72, 73, 73, 74, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 78, 79, 79, 80, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 77, 78, 78, 79, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 82, 83, 83, 84, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 81, 82, 82, 83, 84, 85, 85, 86, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 65, 66, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 66, 67, 67, 68, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 74, 75, 75, 76, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 65, 66, 66, 67, 75, 76, 76, 77, 82, 83, 83, 84, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 75, 76, 76, 77, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 72, 73, 73, 74, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 82, 83, 83, 84, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 71, 72, 72, 73, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 75, 76, 76, 77, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 71, 72, 72, 73, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 68, 69, 69, 70, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 69, 70, 70, 71, 71, 72, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 68, 69, 69, 70, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 81, 82, 82, 83, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 72, 73, 73, 74, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 82, 83, 83, 84, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 83, 84, 84, 85, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 68, 69, 69, 70, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 81, 82, 82, 83, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 83, 84, 84, 85, 85, 86, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 78, 79, 79, 80, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 81, 82, 82, 83, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 68, 69, 69, 70, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 65, 66, 66, 67, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 82, 83, 83, 84, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 66, 67, 67, 68, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 81, 82, 82, 83, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 72, 73, 73, 74, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 65, 66, 66, 67, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 68, 69, 69, 70, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 79, 80, 80, 81, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 67, 68, 68, 69, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 65, 66, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 83, 84, 84, 85, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 68, 69, 69, 70, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 0 }; static const char _sip_message_parser_cond_spaces[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; static const int _sip_message_parser_key_offsets[] = { 0, 0, 29, 30, 59, 60, 75, 83, 93, 110, 114, 116, 118, 120, 121, 123, 126, 128, 131, 132, 169, 170, 187, 190, 206, 222, 224, 226, 228, 230, 232, 233, 272, 295, 314, 333, 350, 369, 388, 405, 408, 427, 428, 430, 448, 464, 480, 497, 516, 535, 556, 575, 594, 611, 614, 648, 649, 688, 722, 723, 762, 779, 797, 815, 833, 852, 887, 916, 938, 960, 990, 1012, 1034, 1060, 1085, 1109, 1134, 1156, 1185, 1209, 1235, 1257, 1276, 1295, 1313, 1332, 1367, 1400, 1422, 1444, 1477, 1509, 1531, 1553, 1571, 1589, 1590, 1629, 1647, 1681, 1682, 1721, 1755, 1786, 1817, 1818, 1857, 1888, 1907, 1910, 1935, 1936, 1938, 1963, 1964, 1966, 1969, 1977, 1987, 2003, 2017, 2030, 2036, 2042, 2056, 2062, 2068, 2078, 2087, 2095, 2104, 2110, 2122, 2130, 2139, 2145, 2148, 2151, 2153, 2155, 2159, 2160, 2199, 2203, 2204, 2243, 2246, 2265, 2266, 2268, 2286, 2305, 2310, 2311, 2313, 2317, 2336, 2337, 2339, 2357, 2375, 2379, 2380, 2382, 2398, 2400, 2402, 2404, 2406, 2408, 2409, 2411, 2415, 2421, 2428, 2435, 2442, 2449, 2450, 2457, 2464, 2471, 2478, 2479, 2486, 2493, 2500, 2507, 2508, 2515, 2522, 2529, 2536, 2537, 2544, 2551, 2558, 2565, 2566, 2573, 2580, 2587, 2594, 2595, 2605, 2613, 2618, 2619, 2624, 2625, 2630, 2631, 2634, 2637, 2643, 2646, 2649, 2652, 2658, 2661, 2664, 2667, 2673, 2676, 2683, 2690, 2691, 2698, 2705, 2712, 2719, 2727, 2735, 2743, 2754, 2764, 2772, 2780, 2787, 2794, 2804, 2813, 2821, 2829, 2831, 2837, 2846, 2855, 2864, 2876, 2887, 2896, 2905, 2913, 2923, 2932, 2940, 2948, 2950, 2959, 2968, 2977, 2986, 2998, 3009, 3018, 3027, 3035, 3045, 3054, 3062, 3070, 3072, 3081, 3090, 3099, 3108, 3120, 3131, 3140, 3149, 3157, 3167, 3176, 3184, 3192, 3194, 3203, 3212, 3221, 3230, 3242, 3253, 3262, 3271, 3279, 3289, 3298, 3306, 3314, 3316, 3325, 3334, 3343, 3352, 3364, 3375, 3384, 3393, 3401, 3402, 3412, 3421, 3429, 3437, 3439, 3448, 3457, 3466, 3475, 3487, 3498, 3507, 3516, 3524, 3525, 3564, 3581, 3584, 3601, 3602, 3641, 3658, 3674, 3678, 3679, 3681, 3684, 3701, 3702, 3704, 3720, 3721, 3760, 3777, 3780, 3785, 3786, 3788, 3792, 3795, 3798, 3801, 3804, 3807, 3810, 3813, 3816, 3817, 3836, 3855, 3872, 3891, 3910, 3929, 3948, 3967, 3986, 4005, 4024, 4041, 4044, 4049, 4050, 4052, 4056, 4059, 4062, 4065, 4066, 4085, 4104, 4123, 4142, 4159, 4178, 4197, 4216, 4235, 4254, 4273, 4292, 4309, 4312, 4329, 4330, 4332, 4348, 4364, 4368, 4369, 4371, 4374, 4391, 4392, 4394, 4410, 4411, 4450, 4471, 4490, 4509, 4528, 4547, 4566, 4583, 4586, 4603, 4604, 4606, 4622, 4638, 4642, 4643, 4645, 4648, 4665, 4666, 4668, 4684, 4685, 4724, 4743, 4762, 4781, 4800, 4819, 4838, 4857, 4876, 4895, 4898, 4923, 4924, 4926, 4951, 4952, 4954, 4957, 4965, 4975, 4991, 5005, 5018, 5024, 5030, 5044, 5050, 5056, 5066, 5075, 5083, 5092, 5098, 5110, 5118, 5127, 5133, 5136, 5139, 5141, 5143, 5147, 5148, 5187, 5191, 5192, 5231, 5234, 5253, 5254, 5256, 5274, 5293, 5298, 5299, 5301, 5305, 5324, 5325, 5327, 5345, 5363, 5367, 5368, 5370, 5386, 5388, 5390, 5392, 5394, 5396, 5397, 5399, 5403, 5409, 5416, 5423, 5430, 5437, 5438, 5445, 5452, 5459, 5466, 5467, 5474, 5481, 5488, 5495, 5496, 5503, 5510, 5517, 5524, 5525, 5532, 5539, 5546, 5553, 5554, 5561, 5568, 5575, 5582, 5583, 5593, 5601, 5606, 5607, 5612, 5613, 5618, 5619, 5622, 5625, 5631, 5634, 5637, 5640, 5646, 5649, 5652, 5655, 5661, 5664, 5671, 5678, 5679, 5686, 5693, 5700, 5707, 5715, 5723, 5731, 5742, 5752, 5760, 5768, 5775, 5782, 5792, 5801, 5809, 5817, 5819, 5825, 5834, 5843, 5852, 5864, 5875, 5884, 5893, 5901, 5911, 5920, 5928, 5936, 5938, 5947, 5956, 5965, 5974, 5986, 5997, 6006, 6015, 6023, 6033, 6042, 6050, 6058, 6060, 6069, 6078, 6087, 6096, 6108, 6119, 6128, 6137, 6145, 6155, 6164, 6172, 6180, 6182, 6191, 6200, 6209, 6218, 6230, 6241, 6250, 6259, 6267, 6277, 6286, 6294, 6302, 6304, 6313, 6322, 6331, 6340, 6352, 6363, 6372, 6381, 6389, 6390, 6400, 6409, 6417, 6425, 6427, 6436, 6445, 6454, 6463, 6475, 6486, 6495, 6504, 6512, 6513, 6552, 6571, 6574, 6591, 6592, 6594, 6610, 6626, 6630, 6631, 6633, 6636, 6653, 6654, 6656, 6672, 6688, 6692, 6693, 6695, 6698, 6715, 6716, 6718, 6734, 6751, 6764, 6765, 6767, 6779, 6788, 6796, 6805, 6811, 6826, 6832, 6833, 6835, 6840, 6857, 6858, 6860, 6876, 6885, 6886, 6888, 6896, 6899, 6902, 6904, 6909, 6914, 6915, 6917, 6921, 6944, 6945, 6947, 6969, 6987, 6993, 6994, 6996, 7001, 7020, 7021, 7023, 7041, 7058, 7059, 7098, 7114, 7116, 7118, 7120, 7122, 7124, 7125, 7127, 7132, 7138, 7145, 7152, 7159, 7166, 7167, 7174, 7181, 7188, 7195, 7196, 7203, 7210, 7217, 7224, 7225, 7232, 7239, 7246, 7253, 7254, 7261, 7268, 7275, 7282, 7283, 7290, 7297, 7304, 7311, 7312, 7322, 7330, 7335, 7336, 7341, 7342, 7347, 7348, 7351, 7354, 7360, 7363, 7366, 7369, 7375, 7378, 7381, 7384, 7390, 7393, 7400, 7407, 7408, 7415, 7422, 7429, 7436, 7444, 7452, 7460, 7471, 7481, 7489, 7497, 7504, 7511, 7521, 7530, 7538, 7546, 7548, 7554, 7563, 7572, 7581, 7593, 7604, 7613, 7622, 7630, 7640, 7649, 7657, 7665, 7667, 7676, 7685, 7694, 7703, 7715, 7726, 7735, 7744, 7752, 7762, 7771, 7779, 7787, 7789, 7798, 7807, 7816, 7825, 7837, 7848, 7857, 7866, 7874, 7884, 7893, 7901, 7909, 7911, 7920, 7929, 7938, 7947, 7959, 7970, 7979, 7988, 7996, 8006, 8015, 8023, 8031, 8033, 8042, 8051, 8060, 8069, 8081, 8092, 8101, 8110, 8118, 8119, 8129, 8138, 8146, 8154, 8156, 8165, 8174, 8183, 8192, 8204, 8215, 8224, 8233, 8241, 8242, 8281, 8301, 8321, 8341, 8361, 8379, 8385, 8386, 8388, 8393, 8410, 8411, 8413, 8429, 8446, 8447, 8486, 8506, 8526, 8546, 8566, 8586, 8604, 8608, 8609, 8611, 8614, 8632, 8633, 8635, 8652, 8669, 8687, 8705, 8723, 8741, 8759, 8777, 8794, 8816, 8836, 8856, 8876, 8896, 8916, 8936, 8954, 8958, 8959, 8961, 8964, 8977, 8978, 8980, 8992, 9000, 9005, 9006, 9011, 9012, 9017, 9022, 9029, 9036, 9046, 9053, 9056, 9059, 9065, 9068, 9071, 9074, 9080, 9083, 9090, 9097, 9098, 9105, 9112, 9119, 9126, 9127, 9134, 9141, 9148, 9155, 9156, 9163, 9170, 9177, 9184, 9185, 9192, 9199, 9206, 9213, 9214, 9221, 9228, 9235, 9242, 9243, 9253, 9261, 9268, 9275, 9276, 9283, 9294, 9305, 9316, 9324, 9332, 9340, 9351, 9361, 9369, 9377, 9388, 9395, 9409, 9422, 9434, 9446, 9452, 9458, 9471, 9484, 9497, 9513, 9528, 9541, 9554, 9566, 9580, 9593, 9605, 9617, 9623, 9632, 9645, 9658, 9671, 9687, 9702, 9715, 9728, 9740, 9754, 9767, 9779, 9791, 9797, 9806, 9819, 9832, 9845, 9861, 9876, 9889, 9902, 9914, 9928, 9941, 9953, 9965, 9971, 9980, 9993, 10006, 10019, 10035, 10050, 10063, 10076, 10088, 10102, 10115, 10127, 10139, 10145, 10154, 10167, 10180, 10193, 10209, 10224, 10237, 10250, 10262, 10270, 10278, 10286, 10297, 10307, 10315, 10323, 10324, 10338, 10351, 10363, 10375, 10381, 10390, 10403, 10416, 10429, 10445, 10460, 10473, 10486, 10498, 10505, 10525, 10545, 10565, 10583, 10589, 10590, 10592, 10597, 10606, 10607, 10609, 10617, 10620, 10623, 10625, 10630, 10637, 10644, 10651, 10658, 10668, 10678, 10688, 10695, 10696, 10735, 10742, 10749, 10756, 10763, 10773, 10783, 10793, 10800, 10801, 10840, 10848, 10860, 10869, 10878, 10887, 10896, 10905, 10920, 10935, 10950, 10968, 10985, 10994, 11003, 11015, 11026, 11035, 11044, 11056, 11067, 11076, 11085, 11097, 11108, 11115, 11122, 11129, 11136, 11137, 11144, 11151, 11158, 11165, 11166, 11173, 11180, 11187, 11194, 11195, 11202, 11209, 11216, 11223, 11224, 11231, 11238, 11245, 11252, 11253, 11260, 11267, 11274, 11281, 11282, 11292, 11300, 11305, 11306, 11311, 11312, 11317, 11318, 11324, 11327, 11330, 11336, 11339, 11342, 11345, 11351, 11354, 11357, 11360, 11366, 11369, 11376, 11383, 11384, 11391, 11398, 11405, 11412, 11420, 11428, 11436, 11447, 11457, 11465, 11473, 11480, 11487, 11497, 11506, 11514, 11522, 11524, 11530, 11539, 11548, 11557, 11569, 11580, 11589, 11598, 11606, 11616, 11625, 11633, 11641, 11643, 11652, 11661, 11670, 11679, 11691, 11702, 11711, 11720, 11728, 11738, 11747, 11755, 11763, 11765, 11774, 11783, 11792, 11801, 11813, 11824, 11833, 11842, 11850, 11860, 11869, 11877, 11885, 11887, 11896, 11905, 11914, 11923, 11935, 11946, 11955, 11964, 11972, 11982, 11991, 11999, 12007, 12009, 12018, 12027, 12036, 12045, 12057, 12068, 12077, 12086, 12094, 12095, 12105, 12114, 12122, 12130, 12132, 12141, 12150, 12159, 12168, 12180, 12191, 12200, 12209, 12217, 12236, 12253, 12274, 12295, 12314, 12319, 12320, 12322, 12326, 12345, 12346, 12348, 12366, 12384, 12385, 12424, 12435, 12441, 12447, 12451, 12455, 12459, 12463, 12470, 12477, 12484, 12488, 12497, 12506, 12515, 12524, 12533, 12545, 12557, 12569, 12584, 12598, 12607, 12616, 12628, 12639, 12648, 12657, 12669, 12680, 12689, 12698, 12710, 12721, 12728, 12735, 12742, 12749, 12750, 12757, 12764, 12771, 12778, 12779, 12786, 12793, 12800, 12807, 12808, 12815, 12822, 12829, 12836, 12837, 12844, 12851, 12858, 12865, 12866, 12873, 12880, 12887, 12894, 12895, 12905, 12913, 12918, 12919, 12924, 12925, 12930, 12931, 12934, 12937, 12940, 12946, 12949, 12952, 12955, 12961, 12964, 12967, 12970, 12976, 12979, 12986, 12993, 12994, 13001, 13008, 13015, 13022, 13030, 13038, 13046, 13057, 13067, 13075, 13083, 13090, 13097, 13107, 13116, 13124, 13132, 13134, 13140, 13149, 13158, 13167, 13179, 13190, 13199, 13208, 13216, 13226, 13235, 13243, 13251, 13253, 13262, 13271, 13280, 13289, 13301, 13312, 13321, 13330, 13338, 13348, 13357, 13365, 13373, 13375, 13384, 13393, 13402, 13411, 13423, 13434, 13443, 13452, 13460, 13470, 13479, 13487, 13495, 13497, 13506, 13515, 13524, 13533, 13545, 13556, 13565, 13574, 13582, 13592, 13601, 13609, 13617, 13619, 13628, 13637, 13646, 13655, 13667, 13678, 13687, 13696, 13704, 13705, 13715, 13724, 13732, 13740, 13742, 13751, 13760, 13769, 13778, 13790, 13801, 13810, 13819, 13827, 13833, 13839, 13855, 13861, 13867, 13879, 13894, 13909, 13923, 13936, 13942, 13948, 13962, 13968, 13974, 13984, 13993, 14001, 14010, 14016, 14029, 14037, 14047, 14053, 14056, 14059, 14061, 14064, 14069, 14074, 14079, 14084, 14092, 14100, 14108, 14113, 14122, 14131, 14140, 14149, 14158, 14171, 14184, 14197, 14213, 14228, 14237, 14246, 14258, 14269, 14278, 14287, 14299, 14310, 14319, 14328, 14340, 14351, 14358, 14365, 14372, 14379, 14380, 14387, 14394, 14401, 14408, 14409, 14416, 14423, 14430, 14437, 14438, 14445, 14452, 14459, 14466, 14467, 14474, 14481, 14488, 14495, 14496, 14503, 14510, 14517, 14524, 14525, 14535, 14543, 14548, 14549, 14554, 14555, 14560, 14561, 14565, 14568, 14571, 14577, 14580, 14583, 14586, 14592, 14595, 14598, 14601, 14607, 14610, 14617, 14624, 14625, 14632, 14639, 14646, 14653, 14661, 14669, 14677, 14688, 14698, 14706, 14714, 14721, 14728, 14738, 14747, 14755, 14763, 14765, 14771, 14780, 14789, 14798, 14810, 14821, 14830, 14839, 14847, 14857, 14866, 14874, 14882, 14884, 14893, 14902, 14911, 14920, 14932, 14943, 14952, 14961, 14969, 14979, 14988, 14996, 15004, 15006, 15015, 15024, 15033, 15042, 15054, 15065, 15074, 15083, 15091, 15101, 15110, 15118, 15126, 15128, 15137, 15146, 15155, 15164, 15176, 15187, 15196, 15205, 15213, 15223, 15232, 15240, 15248, 15250, 15259, 15268, 15277, 15286, 15298, 15309, 15318, 15327, 15335, 15336, 15346, 15355, 15363, 15371, 15373, 15382, 15391, 15400, 15409, 15421, 15432, 15441, 15450, 15458, 15464, 15470, 15486, 15492, 15498, 15510, 15522, 15534, 15546, 15565, 15578, 15584, 15590, 15604, 15610, 15616, 15626, 15635, 15643, 15652, 15658, 15671, 15679, 15689, 15695, 15698, 15701, 15703, 15706, 15725, 15742, 15748, 15754, 15771, 15787, 15793, 15799, 15814, 15830, 15836, 15842, 15858, 15864, 15870, 15883, 15902, 15919, 15942, 15964, 15987, 16004, 16027, 16048, 16065, 16084, 16103, 16120, 16143, 16165, 16188, 16205, 16228, 16247, 16266, 16285, 16304, 16323, 16342, 16361, 16380, 16397, 16428, 16450, 16473, 16490, 16513, 16537, 16561, 16585, 16607, 16633, 16657, 16679, 16703, 16725, 16749, 16773, 16795, 16819, 16843, 16865, 16870, 16875, 16880, 16885, 16893, 16901, 16909, 16914, 16923, 16932, 16941, 16950, 16959, 16972, 16985, 16998, 17014, 17029, 17038, 17047, 17059, 17070, 17079, 17088, 17100, 17111, 17120, 17129, 17141, 17152, 17159, 17166, 17173, 17180, 17181, 17188, 17195, 17202, 17209, 17210, 17217, 17224, 17231, 17238, 17239, 17246, 17253, 17260, 17267, 17268, 17275, 17282, 17289, 17296, 17297, 17304, 17311, 17318, 17325, 17326, 17336, 17344, 17349, 17350, 17355, 17356, 17361, 17362, 17366, 17369, 17372, 17378, 17381, 17384, 17387, 17393, 17396, 17399, 17402, 17408, 17411, 17418, 17425, 17426, 17433, 17440, 17447, 17454, 17462, 17470, 17478, 17489, 17499, 17507, 17515, 17522, 17529, 17539, 17548, 17556, 17564, 17566, 17572, 17581, 17590, 17599, 17611, 17622, 17631, 17640, 17648, 17658, 17667, 17675, 17683, 17685, 17694, 17703, 17712, 17721, 17733, 17744, 17753, 17762, 17770, 17780, 17789, 17797, 17805, 17807, 17816, 17825, 17834, 17843, 17855, 17866, 17875, 17884, 17892, 17902, 17911, 17919, 17927, 17929, 17938, 17947, 17956, 17965, 17977, 17988, 17997, 18006, 18014, 18024, 18033, 18041, 18049, 18051, 18060, 18069, 18078, 18087, 18099, 18110, 18119, 18128, 18136, 18137, 18147, 18156, 18164, 18172, 18174, 18183, 18192, 18201, 18210, 18222, 18233, 18242, 18251, 18259, 18278, 18296, 18315, 18332, 18352, 18370, 18388, 18406, 18421, 18436, 18451, 18467, 18483, 18499, 18515, 18531, 18550, 18569, 18588, 18606, 18631, 18651, 18657, 18663, 18683, 18689, 18695, 18715, 18735, 18741, 18747, 18764, 18784, 18804, 18810, 18816, 18836, 18856, 18862, 18868, 18887, 18893, 18899, 18919, 18925, 18931, 18950, 18970, 18976, 18982, 19001, 19023, 19043, 19067, 19091, 19114, 19137, 19161, 19181, 19203, 19225, 19245, 19269, 19293, 19316, 19339, 19361, 19383, 19405, 19427, 19449, 19471, 19493, 19515, 19535, 19567, 19591, 19614, 19637, 19663, 19689, 19715, 19739, 19767, 19793, 19817, 19843, 19867, 19893, 19919, 19943, 19969, 19995, 20019, 20039, 20058, 20078, 20097, 20117, 20137, 20157, 20177, 20200, 20222, 20241, 20260, 20282, 20303, 20322, 20341, 20363, 20384, 20403, 20422, 20444, 20465, 20475, 20487, 20499, 20509, 20522, 20535, 20544, 20554, 20567, 20582, 20588, 20594, 20606, 20618, 20630, 20642, 20652, 20664, 20676, 20688, 20700, 20712, 20724, 20736, 20746, 20764, 20787, 20808, 20828, 20848, 20867, 20887, 20907, 20926, 20938, 20944, 20952, 20970, 20988, 20989, 20991, 21008, 21024, 21026, 21028, 21030, 21032, 21034, 21035, 21037, 21041, 21045, 21051, 21072, 21094, 21114, 21129, 21135, 21141, 21157, 21163, 21169, 21179, 21188, 21196, 21205, 21211, 21225, 21233, 21244, 21250, 21253, 21256, 21258, 21262, 21268, 21274, 21280, 21286, 21295, 21304, 21313, 21319, 21328, 21337, 21346, 21355, 21364, 21378, 21392, 21406, 21423, 21439, 21448, 21457, 21469, 21480, 21489, 21498, 21510, 21521, 21530, 21539, 21551, 21562, 21569, 21576, 21583, 21590, 21591, 21598, 21605, 21612, 21619, 21620, 21627, 21634, 21641, 21648, 21649, 21656, 21663, 21670, 21677, 21678, 21685, 21692, 21699, 21706, 21707, 21714, 21721, 21728, 21735, 21736, 21746, 21754, 21759, 21760, 21765, 21766, 21771, 21772, 21777, 21780, 21783, 21789, 21792, 21795, 21798, 21804, 21807, 21810, 21813, 21819, 21822, 21829, 21836, 21837, 21844, 21851, 21858, 21865, 21873, 21881, 21889, 21900, 21910, 21918, 21926, 21933, 21940, 21950, 21959, 21967, 21975, 21977, 21983, 21992, 22001, 22010, 22022, 22033, 22042, 22051, 22059, 22069, 22078, 22086, 22094, 22096, 22105, 22114, 22123, 22132, 22144, 22155, 22164, 22173, 22181, 22191, 22200, 22208, 22216, 22218, 22227, 22236, 22245, 22254, 22266, 22277, 22286, 22295, 22303, 22313, 22322, 22330, 22338, 22340, 22349, 22358, 22367, 22376, 22388, 22399, 22408, 22417, 22425, 22435, 22444, 22452, 22460, 22462, 22471, 22480, 22489, 22498, 22510, 22521, 22530, 22539, 22547, 22548, 22558, 22567, 22575, 22583, 22585, 22594, 22603, 22612, 22621, 22633, 22644, 22653, 22662, 22670, 22676, 22682, 22702, 22708, 22714, 22731, 22737, 22743, 22761, 22782, 22803, 22823, 22838, 22844, 22850, 22866, 22872, 22878, 22888, 22897, 22905, 22914, 22920, 22935, 22943, 22955, 22961, 22964, 22967, 22969, 22974, 22981, 22988, 22995, 23002, 23012, 23022, 23032, 23039, 23048, 23057, 23066, 23075, 23084, 23099, 23114, 23129, 23147, 23164, 23173, 23182, 23194, 23205, 23214, 23223, 23235, 23246, 23255, 23264, 23276, 23287, 23294, 23301, 23308, 23315, 23316, 23323, 23330, 23337, 23344, 23345, 23352, 23359, 23366, 23373, 23374, 23381, 23388, 23395, 23402, 23403, 23410, 23417, 23424, 23431, 23432, 23439, 23446, 23453, 23460, 23461, 23471, 23479, 23484, 23485, 23490, 23491, 23496, 23497, 23503, 23506, 23509, 23515, 23518, 23521, 23524, 23530, 23533, 23536, 23539, 23545, 23548, 23555, 23562, 23563, 23570, 23577, 23584, 23591, 23599, 23607, 23615, 23626, 23636, 23644, 23652, 23659, 23666, 23676, 23685, 23693, 23701, 23703, 23709, 23718, 23727, 23736, 23748, 23759, 23768, 23777, 23785, 23795, 23804, 23812, 23820, 23822, 23831, 23840, 23849, 23858, 23870, 23881, 23890, 23899, 23907, 23917, 23926, 23934, 23942, 23944, 23953, 23962, 23971, 23980, 23992, 24003, 24012, 24021, 24029, 24039, 24048, 24056, 24064, 24066, 24075, 24084, 24093, 24102, 24114, 24125, 24134, 24143, 24151, 24161, 24170, 24178, 24186, 24188, 24197, 24206, 24215, 24224, 24236, 24247, 24256, 24265, 24273, 24274, 24284, 24293, 24301, 24309, 24311, 24320, 24329, 24338, 24347, 24359, 24370, 24379, 24388, 24396, 24402, 24408, 24428, 24434, 24440, 24458, 24481, 24504, 24527, 24546, 24561, 24567, 24573, 24589, 24595, 24601, 24611, 24620, 24628, 24637, 24643, 24657, 24665, 24676, 24682, 24685, 24688, 24690, 24694, 24700, 24706, 24712, 24718, 24727, 24736, 24745, 24751, 24760, 24769, 24778, 24787, 24796, 24810, 24824, 24838, 24855, 24871, 24880, 24889, 24901, 24912, 24921, 24930, 24942, 24953, 24962, 24971, 24983, 24994, 25001, 25008, 25015, 25022, 25023, 25030, 25037, 25044, 25051, 25052, 25059, 25066, 25073, 25080, 25081, 25088, 25095, 25102, 25109, 25110, 25117, 25124, 25131, 25138, 25139, 25146, 25153, 25160, 25167, 25168, 25178, 25186, 25191, 25192, 25197, 25198, 25203, 25204, 25209, 25212, 25215, 25221, 25224, 25227, 25230, 25236, 25239, 25242, 25245, 25251, 25254, 25261, 25268, 25269, 25276, 25283, 25290, 25297, 25305, 25313, 25321, 25332, 25342, 25350, 25358, 25365, 25372, 25382, 25391, 25399, 25407, 25409, 25415, 25424, 25433, 25442, 25454, 25465, 25474, 25483, 25491, 25501, 25510, 25518, 25526, 25528, 25537, 25546, 25555, 25564, 25576, 25587, 25596, 25605, 25613, 25623, 25632, 25640, 25648, 25650, 25659, 25668, 25677, 25686, 25698, 25709, 25718, 25727, 25735, 25745, 25754, 25762, 25770, 25772, 25781, 25790, 25799, 25808, 25820, 25831, 25840, 25849, 25857, 25867, 25876, 25884, 25892, 25894, 25903, 25912, 25921, 25930, 25942, 25953, 25962, 25971, 25979, 25980, 25990, 25999, 26007, 26015, 26017, 26026, 26035, 26044, 26053, 26065, 26076, 26085, 26094, 26102, 26120, 26138, 26156, 26173, 26195, 26213, 26234, 26254, 26271, 26288, 26305, 26325, 26345, 26365, 26385, 26405, 26428, 26451, 26474, 26496, 26516, 26534, 26554, 26572, 26592, 26614, 26636, 26658, 26683, 26707, 26725, 26743, 26764, 26784, 26802, 26820, 26841, 26861, 26879, 26897, 26918, 26938, 26959, 26982, 27005, 27026, 27039, 27054, 27066, 27072, 27082, 27099, 27118, 27137, 27156, 27173, 27176, 27195, 27196, 27198, 27217, 27218, 27220, 27223, 27225, 27227, 27229, 27232, 27251, 27264, 27270, 27276, 27290, 27296, 27302, 27312, 27321, 27329, 27338, 27344, 27357, 27365, 27375, 27381, 27384, 27387, 27389, 27392, 27411, 27428, 27434, 27440, 27457, 27473, 27479, 27485, 27490, 27495, 27496, 27498, 27502, 27521, 27522, 27524, 27543, 27561, 27579, 27580, 27582, 27599, 27615, 27617, 27619, 27621, 27623, 27625, 27626, 27628, 27632, 27636, 27642, 27659, 27660, 27662, 27678, 27696, 27702, 27703, 27705, 27710, 27729, 27730, 27732, 27750, 27767, 27768, 27807, 27823, 27825, 27827, 27829, 27831, 27833, 27834, 27836, 27842, 27849, 27856, 27863, 27870, 27871, 27878, 27885, 27892, 27899, 27900, 27907, 27914, 27921, 27928, 27929, 27936, 27943, 27950, 27957, 27958, 27965, 27972, 27979, 27986, 27987, 27994, 28001, 28008, 28015, 28016, 28026, 28034, 28039, 28040, 28045, 28046, 28051, 28052, 28055, 28058, 28064, 28067, 28070, 28073, 28079, 28082, 28085, 28088, 28094, 28097, 28104, 28111, 28112, 28119, 28126, 28133, 28140, 28148, 28156, 28164, 28175, 28185, 28193, 28201, 28208, 28215, 28225, 28234, 28242, 28250, 28252, 28258, 28267, 28276, 28285, 28297, 28308, 28317, 28326, 28334, 28344, 28353, 28361, 28369, 28371, 28380, 28389, 28398, 28407, 28419, 28430, 28439, 28448, 28456, 28466, 28475, 28483, 28491, 28493, 28502, 28511, 28520, 28529, 28541, 28552, 28561, 28570, 28578, 28588, 28597, 28605, 28613, 28615, 28624, 28633, 28642, 28651, 28663, 28674, 28683, 28692, 28700, 28710, 28719, 28727, 28735, 28737, 28746, 28755, 28764, 28773, 28785, 28796, 28805, 28814, 28822, 28823, 28833, 28842, 28850, 28858, 28860, 28869, 28878, 28887, 28896, 28908, 28919, 28928, 28937, 28945, 28946, 28985, 29000, 29016, 29022, 29028, 29044, 29050, 29056, 29069, 29088, 29105, 29128, 29150, 29173, 29190, 29213, 29234, 29251, 29270, 29289, 29306, 29329, 29351, 29374, 29391, 29414, 29433, 29452, 29471, 29490, 29509, 29528, 29547, 29566, 29583, 29614, 29636, 29659, 29676, 29699, 29723, 29747, 29771, 29793, 29819, 29843, 29865, 29889, 29911, 29935, 29959, 29981, 30005, 30029, 30051, 30056, 30061, 30066, 30071, 30079, 30087, 30095, 30100, 30109, 30118, 30127, 30136, 30145, 30158, 30171, 30184, 30200, 30215, 30224, 30233, 30245, 30256, 30265, 30274, 30286, 30297, 30306, 30315, 30327, 30338, 30345, 30352, 30359, 30366, 30367, 30374, 30381, 30388, 30395, 30396, 30403, 30410, 30417, 30424, 30425, 30432, 30439, 30446, 30453, 30454, 30461, 30468, 30475, 30482, 30483, 30490, 30497, 30504, 30511, 30512, 30522, 30530, 30535, 30536, 30541, 30542, 30547, 30548, 30552, 30555, 30558, 30564, 30567, 30570, 30573, 30579, 30582, 30585, 30588, 30594, 30597, 30604, 30611, 30612, 30619, 30626, 30633, 30640, 30648, 30656, 30664, 30675, 30685, 30693, 30701, 30708, 30715, 30725, 30734, 30742, 30750, 30752, 30758, 30767, 30776, 30785, 30797, 30808, 30817, 30826, 30834, 30844, 30853, 30861, 30869, 30871, 30880, 30889, 30898, 30907, 30919, 30930, 30939, 30948, 30956, 30966, 30975, 30983, 30991, 30993, 31002, 31011, 31020, 31029, 31041, 31052, 31061, 31070, 31078, 31088, 31097, 31105, 31113, 31115, 31124, 31133, 31142, 31151, 31163, 31174, 31183, 31192, 31200, 31210, 31219, 31227, 31235, 31237, 31246, 31255, 31264, 31273, 31285, 31296, 31305, 31314, 31322, 31323, 31333, 31342, 31350, 31358, 31360, 31369, 31378, 31387, 31396, 31408, 31419, 31428, 31437, 31445, 31464, 31482, 31501, 31518, 31538, 31556, 31574, 31592, 31607, 31622, 31637, 31653, 31669, 31685, 31701, 31717, 31736, 31755, 31774, 31792, 31817, 31837, 31843, 31849, 31869, 31875, 31881, 31901, 31921, 31927, 31933, 31950, 31970, 31990, 31996, 32002, 32022, 32042, 32048, 32054, 32073, 32079, 32085, 32105, 32111, 32117, 32136, 32156, 32162, 32168, 32187, 32209, 32229, 32253, 32277, 32300, 32323, 32347, 32367, 32389, 32411, 32431, 32455, 32479, 32502, 32525, 32547, 32569, 32591, 32613, 32635, 32657, 32679, 32701, 32721, 32753, 32777, 32800, 32823, 32849, 32875, 32901, 32925, 32953, 32979, 33003, 33029, 33053, 33079, 33105, 33129, 33155, 33181, 33205, 33225, 33244, 33264, 33283, 33303, 33323, 33343, 33363, 33386, 33408, 33427, 33446, 33468, 33489, 33508, 33527, 33549, 33570, 33589, 33608, 33630, 33651, 33652, 33673, 33694, 33713, 33718, 33719, 33721, 33725, 33744, 33745, 33747, 33765, 33783, 33784, 33823, 33834, 33840, 33846, 33850, 33854, 33858, 33862, 33869, 33876, 33883, 33887, 33896, 33905, 33914, 33923, 33932, 33944, 33956, 33968, 33983, 33997, 34006, 34015, 34027, 34038, 34047, 34056, 34068, 34079, 34088, 34097, 34109, 34120, 34127, 34134, 34141, 34148, 34149, 34156, 34163, 34170, 34177, 34178, 34185, 34192, 34199, 34206, 34207, 34214, 34221, 34228, 34235, 34236, 34243, 34250, 34257, 34264, 34265, 34272, 34279, 34286, 34293, 34294, 34304, 34312, 34317, 34318, 34323, 34324, 34329, 34330, 34333, 34336, 34339, 34345, 34348, 34351, 34354, 34360, 34363, 34366, 34369, 34375, 34378, 34385, 34392, 34393, 34400, 34407, 34414, 34421, 34429, 34437, 34445, 34456, 34466, 34474, 34482, 34489, 34496, 34506, 34515, 34523, 34531, 34533, 34539, 34548, 34557, 34566, 34578, 34589, 34598, 34607, 34615, 34625, 34634, 34642, 34650, 34652, 34661, 34670, 34679, 34688, 34700, 34711, 34720, 34729, 34737, 34747, 34756, 34764, 34772, 34774, 34783, 34792, 34801, 34810, 34822, 34833, 34842, 34851, 34859, 34869, 34878, 34886, 34894, 34896, 34905, 34914, 34923, 34932, 34944, 34955, 34964, 34973, 34981, 34991, 35000, 35008, 35016, 35018, 35027, 35036, 35045, 35054, 35066, 35077, 35086, 35095, 35103, 35104, 35114, 35123, 35131, 35139, 35141, 35150, 35159, 35168, 35177, 35189, 35200, 35209, 35218, 35226, 35232, 35238, 35254, 35260, 35266, 35278, 35293, 35308, 35322, 35335, 35341, 35347, 35361, 35367, 35373, 35383, 35392, 35400, 35409, 35415, 35428, 35436, 35446, 35452, 35455, 35458, 35460, 35463, 35468, 35473, 35478, 35483, 35491, 35499, 35507, 35512, 35521, 35530, 35539, 35548, 35557, 35570, 35583, 35596, 35612, 35627, 35636, 35645, 35657, 35668, 35677, 35686, 35698, 35709, 35718, 35727, 35739, 35750, 35757, 35764, 35771, 35778, 35779, 35786, 35793, 35800, 35807, 35808, 35815, 35822, 35829, 35836, 35837, 35844, 35851, 35858, 35865, 35866, 35873, 35880, 35887, 35894, 35895, 35902, 35909, 35916, 35923, 35924, 35934, 35942, 35947, 35948, 35953, 35954, 35959, 35960, 35964, 35967, 35970, 35976, 35979, 35982, 35985, 35991, 35994, 35997, 36000, 36006, 36009, 36016, 36023, 36024, 36031, 36038, 36045, 36052, 36060, 36068, 36076, 36087, 36097, 36105, 36113, 36120, 36127, 36137, 36146, 36154, 36162, 36164, 36170, 36179, 36188, 36197, 36209, 36220, 36229, 36238, 36246, 36256, 36265, 36273, 36281, 36283, 36292, 36301, 36310, 36319, 36331, 36342, 36351, 36360, 36368, 36378, 36387, 36395, 36403, 36405, 36414, 36423, 36432, 36441, 36453, 36464, 36473, 36482, 36490, 36500, 36509, 36517, 36525, 36527, 36536, 36545, 36554, 36563, 36575, 36586, 36595, 36604, 36612, 36622, 36631, 36639, 36647, 36649, 36658, 36667, 36676, 36685, 36697, 36708, 36717, 36726, 36734, 36735, 36745, 36754, 36762, 36770, 36772, 36781, 36790, 36799, 36808, 36820, 36831, 36840, 36849, 36857, 36863, 36869, 36885, 36891, 36897, 36909, 36921, 36933, 36945, 36964, 36977, 36983, 36989, 37003, 37009, 37015, 37025, 37034, 37042, 37051, 37057, 37070, 37078, 37088, 37094, 37097, 37100, 37102, 37105, 37124, 37141, 37147, 37153, 37170, 37186, 37192, 37198, 37213, 37229, 37235, 37241, 37257, 37263, 37269, 37282, 37301, 37318, 37341, 37363, 37386, 37403, 37426, 37447, 37464, 37483, 37502, 37519, 37542, 37564, 37587, 37604, 37627, 37646, 37665, 37684, 37703, 37722, 37741, 37760, 37779, 37796, 37827, 37849, 37872, 37889, 37912, 37936, 37960, 37984, 38006, 38032, 38056, 38078, 38102, 38124, 38148, 38172, 38194, 38218, 38242, 38264, 38269, 38274, 38279, 38284, 38292, 38300, 38308, 38313, 38322, 38331, 38340, 38349, 38358, 38371, 38384, 38397, 38413, 38428, 38437, 38446, 38458, 38469, 38478, 38487, 38499, 38510, 38519, 38528, 38540, 38551, 38558, 38565, 38572, 38579, 38580, 38587, 38594, 38601, 38608, 38609, 38616, 38623, 38630, 38637, 38638, 38645, 38652, 38659, 38666, 38667, 38674, 38681, 38688, 38695, 38696, 38703, 38710, 38717, 38724, 38725, 38735, 38743, 38748, 38749, 38754, 38755, 38760, 38761, 38765, 38768, 38771, 38777, 38780, 38783, 38786, 38792, 38795, 38798, 38801, 38807, 38810, 38817, 38824, 38825, 38832, 38839, 38846, 38853, 38861, 38869, 38877, 38888, 38898, 38906, 38914, 38921, 38928, 38938, 38947, 38955, 38963, 38965, 38971, 38980, 38989, 38998, 39010, 39021, 39030, 39039, 39047, 39057, 39066, 39074, 39082, 39084, 39093, 39102, 39111, 39120, 39132, 39143, 39152, 39161, 39169, 39179, 39188, 39196, 39204, 39206, 39215, 39224, 39233, 39242, 39254, 39265, 39274, 39283, 39291, 39301, 39310, 39318, 39326, 39328, 39337, 39346, 39355, 39364, 39376, 39387, 39396, 39405, 39413, 39423, 39432, 39440, 39448, 39450, 39459, 39468, 39477, 39486, 39498, 39509, 39518, 39527, 39535, 39536, 39546, 39555, 39563, 39571, 39573, 39582, 39591, 39600, 39609, 39621, 39632, 39641, 39650, 39658, 39677, 39695, 39714, 39731, 39751, 39769, 39787, 39805, 39820, 39835, 39850, 39866, 39882, 39898, 39914, 39930, 39949, 39968, 39987, 40005, 40030, 40050, 40056, 40062, 40082, 40088, 40094, 40114, 40134, 40140, 40146, 40163, 40183, 40203, 40209, 40215, 40235, 40255, 40261, 40267, 40286, 40292, 40298, 40318, 40324, 40330, 40349, 40369, 40375, 40381, 40400, 40422, 40442, 40466, 40490, 40513, 40536, 40560, 40580, 40602, 40624, 40644, 40668, 40692, 40715, 40738, 40760, 40782, 40804, 40826, 40848, 40870, 40892, 40914, 40934, 40966, 40990, 41013, 41036, 41062, 41088, 41114, 41138, 41166, 41192, 41216, 41242, 41266, 41292, 41318, 41342, 41368, 41394, 41418, 41438, 41457, 41477, 41496, 41516, 41536, 41556, 41576, 41599, 41621, 41640, 41659, 41681, 41702, 41721, 41740, 41762, 41783, 41802, 41821, 41843, 41864, 41874, 41886, 41898, 41908, 41921, 41934, 41943, 41953, 41966, 41981, 41987, 41993, 42005, 42017, 42029, 42041, 42051, 42063, 42075, 42087, 42099, 42111, 42123, 42135, 42145, 42163, 42186, 42207, 42227, 42247, 42266, 42286, 42306, 42325, 42337, 42343, 42351, 42369, 42387, 42388, 42390, 42407, 42423, 42425, 42427, 42429, 42431, 42433, 42434, 42436, 42440, 42444, 42450, 42471, 42493, 42513, 42528, 42534, 42540, 42556, 42562, 42568, 42578, 42587, 42595, 42604, 42610, 42624, 42632, 42643, 42649, 42652, 42655, 42657, 42661, 42667, 42673, 42679, 42685, 42694, 42703, 42712, 42718, 42727, 42736, 42745, 42754, 42763, 42777, 42791, 42805, 42822, 42838, 42847, 42856, 42868, 42879, 42888, 42897, 42909, 42920, 42929, 42938, 42950, 42961, 42968, 42975, 42982, 42989, 42990, 42997, 43004, 43011, 43018, 43019, 43026, 43033, 43040, 43047, 43048, 43055, 43062, 43069, 43076, 43077, 43084, 43091, 43098, 43105, 43106, 43113, 43120, 43127, 43134, 43135, 43145, 43153, 43158, 43159, 43164, 43165, 43170, 43171, 43176, 43179, 43182, 43188, 43191, 43194, 43197, 43203, 43206, 43209, 43212, 43218, 43221, 43228, 43235, 43236, 43243, 43250, 43257, 43264, 43272, 43280, 43288, 43299, 43309, 43317, 43325, 43332, 43339, 43349, 43358, 43366, 43374, 43376, 43382, 43391, 43400, 43409, 43421, 43432, 43441, 43450, 43458, 43468, 43477, 43485, 43493, 43495, 43504, 43513, 43522, 43531, 43543, 43554, 43563, 43572, 43580, 43590, 43599, 43607, 43615, 43617, 43626, 43635, 43644, 43653, 43665, 43676, 43685, 43694, 43702, 43712, 43721, 43729, 43737, 43739, 43748, 43757, 43766, 43775, 43787, 43798, 43807, 43816, 43824, 43834, 43843, 43851, 43859, 43861, 43870, 43879, 43888, 43897, 43909, 43920, 43929, 43938, 43946, 43947, 43957, 43966, 43974, 43982, 43984, 43993, 44002, 44011, 44020, 44032, 44043, 44052, 44061, 44069, 44075, 44081, 44101, 44107, 44113, 44130, 44136, 44142, 44160, 44181, 44202, 44222, 44237, 44243, 44249, 44265, 44271, 44277, 44287, 44296, 44304, 44313, 44319, 44334, 44342, 44354, 44360, 44363, 44366, 44368, 44373, 44380, 44387, 44394, 44401, 44411, 44421, 44431, 44438, 44447, 44456, 44465, 44474, 44483, 44498, 44513, 44528, 44546, 44563, 44572, 44581, 44593, 44604, 44613, 44622, 44634, 44645, 44654, 44663, 44675, 44686, 44693, 44700, 44707, 44714, 44715, 44722, 44729, 44736, 44743, 44744, 44751, 44758, 44765, 44772, 44773, 44780, 44787, 44794, 44801, 44802, 44809, 44816, 44823, 44830, 44831, 44838, 44845, 44852, 44859, 44860, 44870, 44878, 44883, 44884, 44889, 44890, 44895, 44896, 44902, 44905, 44908, 44914, 44917, 44920, 44923, 44929, 44932, 44935, 44938, 44944, 44947, 44954, 44961, 44962, 44969, 44976, 44983, 44990, 44998, 45006, 45014, 45025, 45035, 45043, 45051, 45058, 45065, 45075, 45084, 45092, 45100, 45102, 45108, 45117, 45126, 45135, 45147, 45158, 45167, 45176, 45184, 45194, 45203, 45211, 45219, 45221, 45230, 45239, 45248, 45257, 45269, 45280, 45289, 45298, 45306, 45316, 45325, 45333, 45341, 45343, 45352, 45361, 45370, 45379, 45391, 45402, 45411, 45420, 45428, 45438, 45447, 45455, 45463, 45465, 45474, 45483, 45492, 45501, 45513, 45524, 45533, 45542, 45550, 45560, 45569, 45577, 45585, 45587, 45596, 45605, 45614, 45623, 45635, 45646, 45655, 45664, 45672, 45673, 45683, 45692, 45700, 45708, 45710, 45719, 45728, 45737, 45746, 45758, 45769, 45778, 45787, 45795, 45801, 45807, 45827, 45833, 45839, 45857, 45880, 45903, 45926, 45945, 45960, 45966, 45972, 45988, 45994, 46000, 46010, 46019, 46027, 46036, 46042, 46056, 46064, 46075, 46081, 46084, 46087, 46089, 46093, 46099, 46105, 46111, 46117, 46126, 46135, 46144, 46150, 46159, 46168, 46177, 46186, 46195, 46209, 46223, 46237, 46254, 46270, 46279, 46288, 46300, 46311, 46320, 46329, 46341, 46352, 46361, 46370, 46382, 46393, 46400, 46407, 46414, 46421, 46422, 46429, 46436, 46443, 46450, 46451, 46458, 46465, 46472, 46479, 46480, 46487, 46494, 46501, 46508, 46509, 46516, 46523, 46530, 46537, 46538, 46545, 46552, 46559, 46566, 46567, 46577, 46585, 46590, 46591, 46596, 46597, 46602, 46603, 46608, 46611, 46614, 46620, 46623, 46626, 46629, 46635, 46638, 46641, 46644, 46650, 46653, 46660, 46667, 46668, 46675, 46682, 46689, 46696, 46704, 46712, 46720, 46731, 46741, 46749, 46757, 46764, 46771, 46781, 46790, 46798, 46806, 46808, 46814, 46823, 46832, 46841, 46853, 46864, 46873, 46882, 46890, 46900, 46909, 46917, 46925, 46927, 46936, 46945, 46954, 46963, 46975, 46986, 46995, 47004, 47012, 47022, 47031, 47039, 47047, 47049, 47058, 47067, 47076, 47085, 47097, 47108, 47117, 47126, 47134, 47144, 47153, 47161, 47169, 47171, 47180, 47189, 47198, 47207, 47219, 47230, 47239, 47248, 47256, 47266, 47275, 47283, 47291, 47293, 47302, 47311, 47320, 47329, 47341, 47352, 47361, 47370, 47378, 47379, 47389, 47398, 47406, 47414, 47416, 47425, 47434, 47443, 47452, 47464, 47475, 47484, 47493, 47501, 47519, 47537, 47555, 47572, 47594, 47612, 47633, 47653, 47670, 47687, 47704, 47724, 47744, 47764, 47784, 47804, 47827, 47850, 47873, 47895, 47915, 47933, 47953, 47971, 47991, 48013, 48035, 48057, 48082, 48106, 48124, 48142, 48163, 48183, 48201, 48219, 48240, 48260, 48278, 48296, 48317, 48337, 48358, 48381, 48404, 48425, 48438, 48453, 48465, 48471, 48481, 48500, 48519, 48536, 48556, 48558, 48560, 48562, 48564, 48566, 48567, 48606, 48623, 48640, 48661, 48677, 48679, 48681, 48683, 48685, 48687, 48688, 48690, 48694, 48698, 48699, 48701, 48704, 48706, 48708, 48710, 48713, 48732, 48745, 48751, 48757, 48771, 48777, 48783, 48793, 48802, 48810, 48819, 48825, 48838, 48846, 48856, 48862, 48865, 48868, 48870, 48873, 48892, 48909, 48915, 48921, 48938, 48954, 48960, 48966, 48971, 48976, 48977, 48979, 48983, 49004, 49005, 49007, 49028, 49046, 49064, 49065, 49067, 49084, 49104, 49124, 49145, 49164, 49179, 49185, 49191, 49207, 49213, 49219, 49229, 49238, 49246, 49255, 49261, 49276, 49277, 49316, 49324, 49336, 49342, 49345, 49348, 49350, 49355, 49374, 49375, 49377, 49395, 49413, 49419, 49420, 49422, 49427, 49446, 49447, 49449, 49467, 49484, 49500, 49502, 49504, 49506, 49508, 49510, 49511, 49513, 49518, 49524, 49531, 49538, 49545, 49552, 49553, 49560, 49567, 49574, 49581, 49582, 49589, 49596, 49603, 49610, 49611, 49618, 49625, 49632, 49639, 49640, 49647, 49654, 49661, 49668, 49669, 49676, 49683, 49690, 49697, 49698, 49708, 49716, 49721, 49722, 49727, 49728, 49733, 49734, 49737, 49740, 49746, 49749, 49752, 49755, 49761, 49764, 49767, 49770, 49776, 49779, 49786, 49793, 49794, 49801, 49808, 49815, 49822, 49830, 49838, 49846, 49857, 49867, 49875, 49883, 49890, 49897, 49907, 49916, 49924, 49932, 49934, 49940, 49949, 49958, 49967, 49979, 49990, 49999, 50008, 50016, 50026, 50035, 50043, 50051, 50053, 50062, 50071, 50080, 50089, 50101, 50112, 50121, 50130, 50138, 50148, 50157, 50165, 50173, 50175, 50184, 50193, 50202, 50211, 50223, 50234, 50243, 50252, 50260, 50270, 50279, 50287, 50295, 50297, 50306, 50315, 50324, 50333, 50345, 50356, 50365, 50374, 50382, 50392, 50401, 50409, 50417, 50419, 50428, 50437, 50446, 50455, 50467, 50478, 50487, 50496, 50504, 50505, 50515, 50524, 50532, 50540, 50542, 50551, 50560, 50569, 50578, 50590, 50601, 50610, 50619, 50627, 50628, 50667, 50687, 50707, 50726, 50746, 50766, 50784, 50791, 50798, 50805, 50812, 50822, 50832, 50842, 50849, 50858, 50867, 50876, 50885, 50894, 50909, 50924, 50939, 50957, 50974, 50983, 50992, 51004, 51015, 51024, 51033, 51045, 51056, 51065, 51074, 51086, 51097, 51104, 51111, 51118, 51125, 51126, 51133, 51140, 51147, 51154, 51155, 51162, 51169, 51176, 51183, 51184, 51191, 51198, 51205, 51212, 51213, 51220, 51227, 51234, 51241, 51242, 51249, 51256, 51263, 51270, 51271, 51281, 51289, 51294, 51295, 51300, 51301, 51306, 51307, 51313, 51316, 51319, 51325, 51328, 51331, 51334, 51340, 51343, 51346, 51349, 51355, 51358, 51365, 51372, 51373, 51380, 51387, 51394, 51401, 51409, 51417, 51425, 51436, 51446, 51454, 51462, 51469, 51476, 51486, 51495, 51503, 51511, 51513, 51519, 51528, 51537, 51546, 51558, 51569, 51578, 51587, 51595, 51605, 51614, 51622, 51630, 51632, 51641, 51650, 51659, 51668, 51680, 51691, 51700, 51709, 51717, 51727, 51736, 51744, 51752, 51754, 51763, 51772, 51781, 51790, 51802, 51813, 51822, 51831, 51839, 51849, 51858, 51866, 51874, 51876, 51885, 51894, 51903, 51912, 51924, 51935, 51944, 51953, 51961, 51971, 51980, 51988, 51996, 51998, 52007, 52016, 52025, 52034, 52046, 52057, 52066, 52075, 52083, 52084, 52094, 52103, 52111, 52119, 52121, 52130, 52139, 52148, 52157, 52169, 52180, 52189, 52198, 52206, 52224, 52242, 52260, 52277, 52299, 52317, 52337, 52357, 52374, 52391, 52408, 52427, 52446, 52465, 52484, 52503, 52525, 52547, 52569, 52590, 52610, 52628, 52648, 52666, 52686, 52708, 52730, 52752, 52777, 52801, 52819, 52837, 52858, 52878, 52896, 52914, 52935, 52955, 52973, 52991, 53012, 53032, 53051, 53066, 53082, 53088, 53094, 53110, 53116, 53122, 53135, 53154, 53171, 53194, 53216, 53239, 53256, 53279, 53300, 53317, 53336, 53355, 53372, 53395, 53417, 53440, 53457, 53480, 53499, 53518, 53537, 53556, 53575, 53594, 53613, 53632, 53649, 53680, 53702, 53725, 53742, 53765, 53789, 53813, 53837, 53859, 53885, 53909, 53931, 53955, 53977, 54001, 54025, 54047, 54071, 54095, 54117, 54122, 54127, 54132, 54137, 54145, 54153, 54161, 54166, 54175, 54184, 54193, 54202, 54211, 54224, 54237, 54250, 54266, 54281, 54290, 54299, 54311, 54322, 54331, 54340, 54352, 54363, 54372, 54381, 54393, 54404, 54411, 54418, 54425, 54432, 54433, 54440, 54447, 54454, 54461, 54462, 54469, 54476, 54483, 54490, 54491, 54498, 54505, 54512, 54519, 54520, 54527, 54534, 54541, 54548, 54549, 54556, 54563, 54570, 54577, 54578, 54588, 54596, 54601, 54602, 54607, 54608, 54613, 54614, 54618, 54621, 54624, 54630, 54633, 54636, 54639, 54645, 54648, 54651, 54654, 54660, 54663, 54670, 54677, 54678, 54685, 54692, 54699, 54706, 54714, 54722, 54730, 54741, 54751, 54759, 54767, 54774, 54781, 54791, 54800, 54808, 54816, 54818, 54824, 54833, 54842, 54851, 54863, 54874, 54883, 54892, 54900, 54910, 54919, 54927, 54935, 54937, 54946, 54955, 54964, 54973, 54985, 54996, 55005, 55014, 55022, 55032, 55041, 55049, 55057, 55059, 55068, 55077, 55086, 55095, 55107, 55118, 55127, 55136, 55144, 55154, 55163, 55171, 55179, 55181, 55190, 55199, 55208, 55217, 55229, 55240, 55249, 55258, 55266, 55276, 55285, 55293, 55301, 55303, 55312, 55321, 55330, 55339, 55351, 55362, 55371, 55380, 55388, 55389, 55399, 55408, 55416, 55424, 55426, 55435, 55444, 55453, 55462, 55474, 55485, 55494, 55503, 55511, 55530, 55548, 55567, 55584, 55604, 55622, 55640, 55658, 55673, 55688, 55703, 55719, 55735, 55751, 55767, 55783, 55802, 55821, 55840, 55858, 55883, 55903, 55909, 55915, 55935, 55941, 55947, 55967, 55987, 55993, 55999, 56016, 56036, 56056, 56062, 56068, 56088, 56108, 56114, 56120, 56139, 56145, 56151, 56171, 56177, 56183, 56202, 56222, 56228, 56234, 56253, 56275, 56295, 56319, 56343, 56366, 56389, 56413, 56433, 56455, 56477, 56497, 56521, 56545, 56568, 56591, 56613, 56635, 56657, 56679, 56701, 56723, 56745, 56767, 56787, 56819, 56843, 56866, 56889, 56915, 56941, 56967, 56991, 57019, 57045, 57069, 57095, 57119, 57145, 57171, 57195, 57221, 57247, 57271, 57291, 57310, 57330, 57349, 57369, 57389, 57409, 57429, 57452, 57474, 57493, 57512, 57534, 57555, 57574, 57593, 57615, 57636, 57655, 57674, 57696, 57717, 57718, 57724, 57757, 57790, 57824, 57859, 57890, 57912, 57934, 57966, 57988, 58010, 58036, 58061, 58085, 58110, 58132, 58160, 58184, 58209, 58231, 58250, 58269, 58287, 58305, 58337, 58338, 58377, 58409, 58440, 58459, 58460, 58499, 58518, 58550, 58551, 58590, 58622, 58652, 58672, 58674, 58676, 58678, 58680, 58682, 58683, 58722, 58740, 58761, 58784, 58807, 58830, 58853, 58870, 58893, 58916, 58939, 58962, 58979, 59002, 59025, 59048, 59071, 59088, 59111, 59134, 59157, 59180, 59197, 59220, 59243, 59266, 59289, 59306, 59329, 59352, 59375, 59398, 59415, 59441, 59465, 59486, 59503, 59524, 59541, 59562, 59579, 59598, 59617, 59639, 59658, 59677, 59696, 59718, 59737, 59756, 59775, 59797, 59816, 59839, 59862, 59879, 59902, 59925, 59948, 59971, 59995, 60019, 60043, 60070, 60096, 60120, 60144, 60167, 60190, 60216, 60241, 60265, 60289, 60307, 60329, 60354, 60379, 60404, 60432, 60459, 60484, 60509, 60533, 60559, 60584, 60608, 60632, 60650, 60675, 60700, 60725, 60750, 60778, 60805, 60830, 60855, 60879, 60905, 60930, 60954, 60978, 60996, 61021, 61046, 61071, 61096, 61124, 61151, 61176, 61201, 61225, 61251, 61276, 61300, 61324, 61342, 61367, 61392, 61417, 61442, 61470, 61497, 61522, 61547, 61571, 61597, 61622, 61646, 61670, 61688, 61713, 61738, 61763, 61788, 61816, 61843, 61868, 61893, 61917, 61934, 61960, 61985, 62009, 62033, 62051, 62076, 62101, 62126, 62151, 62179, 62206, 62231, 62256, 62280, 62313, 62346, 62378, 62411, 62444, 62475, 62495, 62515, 62535, 62555, 62578, 62601, 62624, 62644, 62669, 62694, 62719, 62744, 62769, 62797, 62825, 62853, 62884, 62914, 62939, 62964, 62992, 63019, 63044, 63069, 63097, 63124, 63149, 63174, 63202, 63229, 63252, 63275, 63298, 63321, 63338, 63361, 63384, 63407, 63430, 63447, 63470, 63493, 63516, 63539, 63556, 63579, 63602, 63625, 63648, 63665, 63688, 63711, 63734, 63757, 63774, 63797, 63820, 63843, 63866, 63883, 63909, 63933, 63954, 63971, 63992, 64009, 64030, 64047, 64066, 64085, 64104, 64126, 64145, 64164, 64183, 64205, 64224, 64243, 64262, 64284, 64303, 64326, 64349, 64366, 64389, 64412, 64435, 64458, 64482, 64506, 64530, 64557, 64583, 64607, 64631, 64654, 64677, 64703, 64728, 64752, 64776, 64794, 64816, 64841, 64866, 64891, 64919, 64946, 64971, 64996, 65020, 65046, 65071, 65095, 65119, 65137, 65162, 65187, 65212, 65237, 65265, 65292, 65317, 65342, 65366, 65392, 65417, 65441, 65465, 65483, 65508, 65533, 65558, 65583, 65611, 65638, 65663, 65688, 65712, 65738, 65763, 65787, 65811, 65829, 65854, 65879, 65904, 65929, 65957, 65984, 66009, 66034, 66058, 66084, 66109, 66133, 66157, 66175, 66200, 66225, 66250, 66275, 66303, 66330, 66355, 66380, 66404, 66421, 66447, 66472, 66496, 66520, 66538, 66563, 66588, 66613, 66638, 66666, 66693, 66718, 66743, 66767, 66801, 66835, 66869, 66902, 66937, 66971, 67004, 67040, 67073, 67106, 67139, 67171, 67203, 67235, 67267, 67299, 67334, 67369, 67404, 67438, 67474, 67508, 67544, 67578, 67614, 67649, 67684, 67719, 67757, 67794, 67828, 67862, 67899, 67935, 67969, 68003, 68040, 68076, 68110, 68144, 68181, 68217, 68249, 68280, 68312, 68334, 68356, 68388, 68410, 68432, 68461, 68496, 68529, 68568, 68606, 68645, 68678, 68717, 68754, 68787, 68822, 68857, 68890, 68929, 68967, 69006, 69039, 69078, 69113, 69148, 69183, 69218, 69253, 69288, 69323, 69358, 69391, 69438, 69476, 69515, 69548, 69587, 69627, 69667, 69707, 69745, 69787, 69827, 69865, 69905, 69943, 69983, 70023, 70061, 70101, 70141, 70179, 70200, 70221, 70242, 70263, 70287, 70311, 70335, 70356, 70381, 70406, 70431, 70456, 70481, 70510, 70539, 70568, 70600, 70631, 70656, 70681, 70709, 70736, 70761, 70786, 70814, 70841, 70866, 70891, 70919, 70946, 70969, 70992, 71015, 71038, 71055, 71078, 71101, 71124, 71147, 71164, 71187, 71210, 71233, 71256, 71273, 71296, 71319, 71342, 71365, 71382, 71405, 71428, 71451, 71474, 71491, 71514, 71537, 71560, 71583, 71600, 71626, 71650, 71671, 71688, 71709, 71726, 71747, 71764, 71784, 71803, 71822, 71844, 71863, 71882, 71901, 71923, 71942, 71961, 71980, 72002, 72021, 72044, 72067, 72084, 72107, 72130, 72153, 72176, 72200, 72224, 72248, 72275, 72301, 72325, 72349, 72372, 72395, 72421, 72446, 72470, 72494, 72512, 72534, 72559, 72584, 72609, 72637, 72664, 72689, 72714, 72738, 72764, 72789, 72813, 72837, 72855, 72880, 72905, 72930, 72955, 72983, 73010, 73035, 73060, 73084, 73110, 73135, 73159, 73183, 73201, 73226, 73251, 73276, 73301, 73329, 73356, 73381, 73406, 73430, 73456, 73481, 73505, 73529, 73547, 73572, 73597, 73622, 73647, 73675, 73702, 73727, 73752, 73776, 73802, 73827, 73851, 73875, 73893, 73918, 73943, 73968, 73993, 74021, 74048, 74073, 74098, 74122, 74139, 74165, 74190, 74214, 74238, 74256, 74281, 74306, 74331, 74356, 74384, 74411, 74436, 74461, 74485, 74520, 74554, 74589, 74622, 74658, 74692, 74726, 74760, 74791, 74822, 74853, 74885, 74917, 74949, 74981, 75013, 75048, 75083, 75118, 75152, 75193, 75229, 75251, 75273, 75309, 75331, 75353, 75389, 75425, 75447, 75469, 75502, 75538, 75574, 75596, 75618, 75654, 75690, 75712, 75734, 75769, 75791, 75813, 75849, 75871, 75893, 75928, 75964, 75986, 76008, 76043, 76081, 76117, 76157, 76197, 76236, 76275, 76315, 76351, 76389, 76427, 76463, 76503, 76543, 76582, 76621, 76659, 76697, 76735, 76773, 76811, 76849, 76887, 76925, 76961, 77009, 77049, 77088, 77127, 77169, 77211, 77253, 77293, 77337, 77379, 77419, 77461, 77501, 77543, 77585, 77625, 77667, 77709, 77749, 77785, 77820, 77856, 77891, 77927, 77963, 77999, 78035, 78074, 78112, 78147, 78182, 78220, 78257, 78292, 78327, 78365, 78402, 78437, 78472, 78510, 78547, 78564, 78583, 78602, 78619, 78638, 78657, 78676, 78695, 78714, 78733, 78752, 78771, 78788, 78791, 78796, 78797, 78799, 78803, 78808, 78850, 78851, 78853, 78894, 78909, 78925, 78941, 78956, 78972, 78988, 79003, 79019, 79035, 79051, 79067, 79083, 79098, 79114, 79131, 79147, 79162, 79178, 79194, 79210, 79225, 79241, 79257, 79273, 79289, 79305, 79321, 79336, 79352, 79368, 79384, 79400, 79416, 79431, 79447, 79463, 79479, 79495, 79511, 79527, 79542, 79559, 79575, 79591, 79607, 79622, 79640, 79656, 79672, 79688, 79704, 79719, 79735, 79750, 79766, 79781, 79797, 79814, 79830, 79846, 79861, 79877, 79893, 79909, 79925, 79941, 79956, 79973, 79989, 80005, 80021, 80036, 80052, 80068, 80084, 80100, 80116, 80132, 80148, 80163, 80179, 80195, 80211, 80227, 80243, 80258, 80273, 80278, 80283, 80288, 80293, 80298, 80303, 80308, 80313, 80316, 80317, 80356, 80372, 80373, 80374, 80376, 80391, 80404, 80410, 80416, 80430, 80436, 80442, 80452, 80461, 80469, 80478, 80484, 80496, 80504, 80513, 80519, 80522, 80525, 80527, 80529, 80541, 80547, 80553, 80557, 80561, 80565, 80569, 80576, 80583, 80590, 80594, 80603, 80612, 80621, 80630, 80639, 80651, 80663, 80675, 80690, 80704, 80713, 80722, 80734, 80745, 80754, 80763, 80775, 80786, 80795, 80804, 80816, 80827, 80834, 80841, 80848, 80855, 80856, 80863, 80870, 80877, 80884, 80885, 80892, 80899, 80906, 80913, 80914, 80921, 80928, 80935, 80942, 80943, 80950, 80957, 80964, 80971, 80972, 80979, 80986, 80993, 81000, 81001, 81011, 81019, 81024, 81025, 81030, 81031, 81036, 81037, 81040, 81043, 81046, 81052, 81055, 81058, 81061, 81067, 81070, 81073, 81076, 81082, 81085, 81092, 81099, 81100, 81107, 81114, 81121, 81128, 81136, 81144, 81152, 81163, 81173, 81181, 81189, 81196, 81203, 81213, 81222, 81230, 81238, 81240, 81246, 81255, 81264, 81273, 81285, 81296, 81305, 81314, 81322, 81332, 81341, 81349, 81357, 81359, 81368, 81377, 81386, 81395, 81407, 81418, 81427, 81436, 81444, 81454, 81463, 81471, 81479, 81481, 81490, 81499, 81508, 81517, 81529, 81540, 81549, 81558, 81566, 81576, 81585, 81593, 81601, 81603, 81612, 81621, 81630, 81639, 81651, 81662, 81671, 81680, 81688, 81698, 81707, 81715, 81723, 81725, 81734, 81743, 81752, 81761, 81773, 81784, 81793, 81802, 81810, 81811, 81821, 81830, 81838, 81846, 81848, 81857, 81866, 81875, 81884, 81896, 81907, 81916, 81925, 81933, 81939, 81945, 81962, 81968, 81974, 81987, 82003, 82019, 82034, 82047, 82053, 82059, 82073, 82079, 82085, 82095, 82104, 82112, 82121, 82127, 82140, 82148, 82158, 82164, 82167, 82170, 82172, 82175, 82180, 82185, 82190, 82195, 82203, 82211, 82219, 82224, 82233, 82242, 82251, 82260, 82269, 82282, 82295, 82308, 82324, 82339, 82348, 82357, 82369, 82380, 82389, 82398, 82410, 82421, 82430, 82439, 82451, 82462, 82469, 82476, 82483, 82490, 82491, 82498, 82505, 82512, 82519, 82520, 82527, 82534, 82541, 82548, 82549, 82556, 82563, 82570, 82577, 82578, 82585, 82592, 82599, 82606, 82607, 82614, 82621, 82628, 82635, 82636, 82646, 82654, 82659, 82660, 82665, 82666, 82671, 82672, 82676, 82679, 82682, 82688, 82691, 82694, 82697, 82703, 82706, 82709, 82712, 82718, 82721, 82728, 82735, 82736, 82743, 82750, 82757, 82764, 82772, 82780, 82788, 82799, 82809, 82817, 82825, 82832, 82839, 82849, 82858, 82866, 82874, 82876, 82882, 82891, 82900, 82909, 82921, 82932, 82941, 82950, 82958, 82968, 82977, 82985, 82993, 82995, 83004, 83013, 83022, 83031, 83043, 83054, 83063, 83072, 83080, 83090, 83099, 83107, 83115, 83117, 83126, 83135, 83144, 83153, 83165, 83176, 83185, 83194, 83202, 83212, 83221, 83229, 83237, 83239, 83248, 83257, 83266, 83275, 83287, 83298, 83307, 83316, 83324, 83334, 83343, 83351, 83359, 83361, 83370, 83379, 83388, 83397, 83409, 83420, 83429, 83438, 83446, 83447, 83457, 83466, 83474, 83482, 83484, 83493, 83502, 83511, 83520, 83532, 83543, 83552, 83561, 83569, 83575, 83581, 83598, 83604, 83610, 83623, 83635, 83647, 83659, 83678, 83691, 83697, 83703, 83717, 83723, 83729, 83739, 83748, 83756, 83765, 83771, 83784, 83792, 83802, 83808, 83811, 83814, 83816, 83819, 83838, 83855, 83861, 83867, 83884, 83900, 83906, 83912, 83927, 83943, 83949, 83955, 83971, 83977, 83983, 83996, 84015, 84032, 84055, 84077, 84100, 84117, 84140, 84161, 84178, 84197, 84216, 84233, 84256, 84278, 84301, 84318, 84341, 84360, 84379, 84398, 84417, 84436, 84455, 84474, 84493, 84510, 84541, 84563, 84586, 84603, 84626, 84650, 84674, 84698, 84720, 84746, 84770, 84792, 84816, 84838, 84862, 84886, 84908, 84932, 84956, 84978, 84983, 84988, 84993, 84998, 85006, 85014, 85022, 85027, 85036, 85045, 85054, 85063, 85072, 85085, 85098, 85111, 85127, 85142, 85151, 85160, 85172, 85183, 85192, 85201, 85213, 85224, 85233, 85242, 85254, 85265, 85272, 85279, 85286, 85293, 85294, 85301, 85308, 85315, 85322, 85323, 85330, 85337, 85344, 85351, 85352, 85359, 85366, 85373, 85380, 85381, 85388, 85395, 85402, 85409, 85410, 85417, 85424, 85431, 85438, 85439, 85449, 85457, 85462, 85463, 85468, 85469, 85474, 85475, 85479, 85482, 85485, 85491, 85494, 85497, 85500, 85506, 85509, 85512, 85515, 85521, 85524, 85531, 85538, 85539, 85546, 85553, 85560, 85567, 85575, 85583, 85591, 85602, 85612, 85620, 85628, 85635, 85642, 85652, 85661, 85669, 85677, 85679, 85685, 85694, 85703, 85712, 85724, 85735, 85744, 85753, 85761, 85771, 85780, 85788, 85796, 85798, 85807, 85816, 85825, 85834, 85846, 85857, 85866, 85875, 85883, 85893, 85902, 85910, 85918, 85920, 85929, 85938, 85947, 85956, 85968, 85979, 85988, 85997, 86005, 86015, 86024, 86032, 86040, 86042, 86051, 86060, 86069, 86078, 86090, 86101, 86110, 86119, 86127, 86137, 86146, 86154, 86162, 86164, 86173, 86182, 86191, 86200, 86212, 86223, 86232, 86241, 86249, 86250, 86260, 86269, 86277, 86285, 86287, 86296, 86305, 86314, 86323, 86335, 86346, 86355, 86364, 86372, 86391, 86409, 86428, 86445, 86465, 86483, 86501, 86519, 86534, 86549, 86564, 86581, 86598, 86615, 86632, 86649, 86669, 86689, 86709, 86728, 86753, 86773, 86779, 86785, 86805, 86811, 86817, 86837, 86857, 86863, 86869, 86886, 86906, 86926, 86932, 86938, 86958, 86978, 86984, 86990, 87009, 87015, 87021, 87041, 87047, 87053, 87072, 87092, 87098, 87104, 87123, 87145, 87165, 87189, 87213, 87236, 87259, 87283, 87303, 87325, 87347, 87367, 87391, 87415, 87438, 87461, 87483, 87505, 87527, 87549, 87571, 87593, 87615, 87637, 87657, 87689, 87713, 87736, 87759, 87785, 87811, 87837, 87861, 87889, 87915, 87939, 87965, 87989, 88015, 88041, 88065, 88091, 88117, 88141, 88161, 88180, 88200, 88219, 88239, 88259, 88279, 88299, 88322, 88344, 88363, 88382, 88404, 88425, 88444, 88463, 88485, 88506, 88525, 88544, 88566, 88587, 88597, 88609, 88621, 88631, 88644, 88657, 88666, 88676, 88689, 88704, 88710, 88716, 88728, 88740, 88752, 88764, 88774, 88786, 88798, 88810, 88822, 88834, 88846, 88858, 88868, 88886, 88909, 88930, 88950, 88970, 88989, 89009, 89029, 89048, 89060, 89066, 89074, 89090, 89106, 89121, 89137, 89153, 89168, 89184, 89200, 89216, 89232, 89248, 89263, 89280, 89297, 89314, 89328, 89330, 89333, 89335, 89338, 89340, 89342, 89344, 89345, 89346, 89347, 89348, 89349, 89365, 89382, 89398, 89413, 89429, 89445, 89461, 89476, 89492, 89508, 89524, 89540, 89556, 89572, 89587, 89603, 89619, 89635, 89651, 89667, 89682, 89698, 89714, 89730, 89746, 89762, 89778, 89793, 89810, 89826, 89842, 89858, 89873, 89891, 89907, 89923, 89939, 89955, 89970, 89986, 90001, 90017, 90032, 90048, 90065, 90081, 90097, 90112, 90128, 90144, 90160, 90176, 90192, 90207, 90226, 90242, 90258, 90274, 90289, 90305, 90321, 90337, 90353, 90369, 90385, 90401, 90416, 90432, 90448, 90464, 90480, 90496, 90511, 90528 }; static const short _sip_message_parser_trans_keys[] = { 13, 33, 37, 39, 65, 66, 67, 72, 73, 77, 78, 79, 80, 82, 83, 85, 104, 115, 126, 42, 43, 45, 46, 48, 57, 68, 90, 95, 122, 10, 13, 33, 37, 39, 65, 66, 67, 72, 73, 77, 78, 79, 80, 82, 83, 85, 104, 115, 126, 42, 43, 45, 46, 48, 57, 68, 90, 95, 122, 10, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 83, 84, 115, 116, 65, 90, 97, 122, 43, 58, 45, 46, 48, 57, 65, 90, 97, 122, 32, 33, 35, 37, 47, 58, 61, 64, 91, 95, 126, 36, 59, 63, 90, 97, 122, 72, 83, 104, 115, 84, 116, 84, 116, 80, 112, 47, 48, 57, 46, 48, 57, 48, 57, 13, 48, 57, 10, 13, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, -128, -65, -128, -65, -128, -65, -128, -65, -128, -65, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 65, 79, 83, 97, 111, 115, 126, 42, 43, 45, 46, 48, 57, 66, 90, 95, 122, 9, 32, 33, 37, 39, 58, 76, 108, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 76, 108, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 45, 46, 58, 126, 42, 43, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 68, 100, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 37, 60, 33, 34, 39, 43, 45, 58, 62, 63, 65, 93, 95, 123, 125, 126, 10, 9, 32, 9, 32, 37, 60, 33, 34, 39, 43, 45, 58, 62, 63, 65, 93, 95, 123, 125, 126, 13, 37, 60, 64, 33, 34, 39, 43, 45, 58, 62, 93, 95, 123, 125, 126, 37, 60, 33, 34, 39, 43, 45, 58, 62, 63, 65, 93, 95, 123, 125, 126, 13, 37, 60, 33, 34, 39, 43, 45, 58, 62, 63, 65, 93, 95, 123, 125, 126, 9, 32, 33, 37, 39, 58, 78, 110, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 65, 69, 97, 101, 126, 42, 43, 45, 46, 48, 57, 66, 90, 95, 122, 9, 32, 33, 37, 39, 58, 67, 99, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 34, 37, 39, 60, 83, 115, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 34, 37, 39, 60, 83, 115, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 60, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 13, 83, 115, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 73, 105, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 80, 112, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 83, 115, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 33, 37, 48, 49, 50, 59, 61, 63, 91, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 51, 57, 65, 90, 97, 122, 9, 13, 32, 34, 37, 58, 60, 62, 64, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 91, 94, 123, 125, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 33, 37, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 46, 48, 57, 65, 90, 97, 122, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 91, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 58, 59, 62, 63, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 58, 59, 62, 63, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 48, 54, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 49, 53, 55, 57, 13, 48, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 49, 57, 13, 48, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 49, 57, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 49, 57, 13, 59, 62, 63, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 33, 37, 76, 79, 84, 93, 95, 108, 111, 116, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 58, 65, 91, 97, 122, 9, 13, 32, 37, 44, 59, 61, 62, 63, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 34, 35, 60, 64, 123, 125, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 9, 13, 32, 37, 44, 59, 61, 62, 63, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 34, 35, 60, 64, 123, 125, 9, 13, 32, 37, 44, 59, 62, 63, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 34, 35, 60, 64, 123, 125, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 59, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 9, 13, 32, 44, 59, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 59, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 9, 13, 32, 33, 34, 37, 39, 60, 83, 115, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 34, 37, 39, 60, 83, 115, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 60, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 60, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 60, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 34, 37, 39, 60, 83, 84, 115, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 10, 9, 32, 9, 13, 32, 33, 34, 37, 39, 60, 83, 84, 115, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 10, 9, 32, 9, 32, 60, 83, 84, 115, 116, 65, 90, 97, 122, 43, 58, 45, 46, 48, 57, 65, 90, 97, 122, 33, 35, 37, 47, 58, 62, 64, 91, 95, 126, 36, 59, 61, 90, 97, 122, 33, 35, 37, 58, 62, 64, 95, 126, 36, 59, 61, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 59, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 45, 46, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 58, 62, 63, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 62, 63, 9, 13, 32, 59, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 59, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 59, 9, 13, 32, 33, 37, 39, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 59, 61, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 59, 61, 10, 9, 32, 9, 32, 59, 61, 9, 13, 32, 33, 34, 37, 39, 91, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 34, 37, 39, 91, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 59, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 59, 10, 9, 32, 9, 13, 34, 92, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, 32, 126, -128, -65, -128, -65, -128, -65, -128, -65, -128, -65, 10, 9, 32, 9, 13, 32, 59, 0, 9, 11, 12, 14, 127, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 10, 9, 32, 9, 32, 44, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 48, 57, 10, 9, 32, 9, 32, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 9, 32, 33, 37, 39, 58, 65, 97, 126, 42, 43, 45, 46, 48, 57, 66, 90, 95, 122, 9, 32, 33, 37, 39, 58, 88, 120, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 45, 46, 58, 126, 42, 43, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 70, 102, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 87, 119, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 65, 97, 126, 42, 43, 45, 46, 48, 57, 66, 90, 95, 122, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 68, 100, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 83, 115, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 48, 57, 10, 9, 32, 9, 32, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 88, 120, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 89, 121, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 45, 46, 58, 126, 42, 43, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 81, 113, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 85, 117, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 10, 9, 32, 9, 32, 44, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 79, 101, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 81, 113, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 85, 117, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 10, 9, 32, 9, 32, 44, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 85, 117, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 80, 112, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 80, 112, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 68, 100, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 34, 37, 39, 60, 83, 84, 115, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 10, 9, 32, 9, 13, 32, 33, 34, 37, 39, 60, 83, 84, 115, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 10, 9, 32, 9, 32, 60, 83, 84, 115, 116, 65, 90, 97, 122, 43, 58, 45, 46, 48, 57, 65, 90, 97, 122, 33, 35, 37, 47, 58, 62, 64, 91, 95, 126, 36, 59, 61, 90, 97, 122, 33, 35, 37, 58, 62, 64, 95, 126, 36, 59, 61, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 59, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 45, 46, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 58, 62, 63, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 62, 63, 9, 13, 32, 59, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 59, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 59, 9, 13, 32, 33, 37, 39, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 59, 61, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 59, 61, 10, 9, 32, 9, 32, 59, 61, 9, 13, 32, 33, 34, 37, 39, 91, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 34, 37, 39, 91, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 59, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 59, 10, 9, 32, 9, 13, 34, 92, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, 32, 126, -128, -65, -128, -65, -128, -65, -128, -65, -128, -65, 10, 9, 32, 9, 13, 32, 59, 0, 9, 11, 12, 14, 127, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 47, 126, 42, 43, 45, 57, 65, 90, 95, 122, 9, 13, 32, 47, 10, 9, 32, 9, 32, 47, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 47, 126, 42, 43, 45, 57, 65, 90, 95, 122, 9, 13, 32, 47, 10, 9, 32, 9, 32, 47, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 10, 9, 32, 9, 32, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 58, 59, 10, 9, 32, 9, 32, 44, 58, 59, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 48, 54, 49, 53, 55, 57, 10, 9, 32, 9, 32, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 9, 13, 32, 44, 59, 9, 13, 32, 44, 59, 10, 9, 32, 9, 32, 44, 59, 9, 13, 32, 33, 37, 39, 65, 66, 82, 97, 98, 114, 126, 42, 43, 45, 46, 48, 57, 67, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 65, 66, 82, 97, 98, 114, 126, 42, 43, 45, 46, 48, 57, 67, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 59, 61, 10, 9, 32, 9, 32, 44, 59, 61, 9, 13, 32, 33, 34, 37, 39, 91, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 34, 37, 39, 91, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 126, 42, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 34, 92, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, 32, 126, -128, -65, -128, -65, -128, -65, -128, -65, -128, -65, 10, 9, 32, 9, 13, 32, 44, 59, 0, 9, 11, 12, 14, 127, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 76, 108, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 73, 105, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 65, 97, 126, 42, 46, 48, 57, 66, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 83, 115, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 59, 61, 10, 9, 32, 9, 32, 44, 59, 61, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 126, 42, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 82, 114, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 65, 97, 126, 42, 46, 48, 57, 66, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 78, 110, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 67, 99, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 72, 104, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 61, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 61, 10, 9, 32, 9, 32, 61, 9, 13, 32, 33, 37, 39, 122, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 121, 10, 9, 32, 9, 32, 33, 37, 39, 122, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 121, 9, 13, 32, 33, 37, 39, 44, 59, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 57, 59, 126, 42, 46, 48, 56, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 104, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 71, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 52, 59, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 98, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 75, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 69, 80, 101, 112, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 67, 99, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 69, 101, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 73, 105, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 86, 118, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 69, 101, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 68, 100, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 61, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 61, 10, 9, 32, 9, 32, 61, 9, 13, 32, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 10, 9, 32, 9, 32, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 9, 13, 32, 44, 59, 9, 13, 32, 44, 59, 48, 57, 9, 13, 32, 44, 59, 48, 57, 9, 13, 32, 44, 53, 59, 48, 52, 54, 57, 9, 13, 32, 44, 59, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 59, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 59, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 48, 49, 50, 59, 51, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 53, 58, 59, 48, 52, 54, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 53, 54, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 48, 49, 50, 59, 51, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 49, 50, 51, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 53, 58, 59, 48, 52, 54, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 53, 54, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 48, 49, 50, 59, 51, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 49, 50, 51, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 53, 58, 59, 48, 52, 54, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 53, 54, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 48, 49, 50, 59, 51, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 49, 50, 51, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 53, 58, 59, 48, 52, 54, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 53, 54, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 48, 49, 50, 59, 51, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 49, 50, 51, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 53, 58, 59, 48, 52, 54, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 53, 54, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 58, 9, 13, 32, 44, 48, 49, 50, 59, 51, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 49, 50, 51, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 53, 58, 59, 48, 52, 54, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 53, 54, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 46, 58, 59, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 58, 59, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 9, 13, 32, 33, 37, 39, 44, 59, 61, 79, 111, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 82, 114, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 84, 116, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 59, 61, 10, 9, 32, 9, 32, 44, 59, 61, 9, 13, 32, 48, 54, 49, 53, 55, 57, 10, 9, 32, 9, 32, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 9, 13, 32, 44, 59, 9, 13, 32, 44, 59, 48, 57, 9, 13, 32, 44, 59, 48, 57, 9, 13, 32, 44, 59, 48, 57, 9, 13, 32, 44, 59, 48, 57, 9, 13, 32, 44, 53, 59, 48, 52, 54, 57, 9, 13, 32, 44, 53, 59, 48, 52, 54, 57, 9, 13, 32, 44, 51, 59, 48, 50, 52, 57, 9, 13, 32, 44, 59, 48, 53, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 59, 48, 57, 9, 13, 32, 44, 59, 48, 57, 9, 13, 32, 44, 59, 48, 57, 9, 13, 32, 44, 59, 48, 57, 9, 13, 32, 44, 53, 59, 48, 52, 54, 57, 9, 13, 32, 44, 53, 59, 48, 52, 54, 57, 9, 13, 32, 44, 51, 59, 48, 50, 52, 57, 9, 13, 32, 44, 59, 48, 53, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 45, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 58, 59, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 53, 58, 59, 95, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 58, 59, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 9, 13, 32, 44, 58, 59, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 9, 32, 33, 37, 39, 58, 65, 97, 126, 42, 43, 45, 46, 48, 57, 66, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 59, 61, 65, 97, 126, 42, 43, 45, 46, 48, 57, 66, 90, 95, 122, 9, 13, 32, 33, 37, 39, 59, 61, 71, 103, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 59, 61, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 59, 61, 10, 9, 32, 9, 32, 59, 61, 9, 13, 32, 33, 34, 37, 39, 91, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 34, 37, 39, 91, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 59, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 37, 62, 95, 126, 36, 59, 61, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 62, 63, 48, 57, 62, 63, 48, 57, 62, 63, 48, 57, 62, 63, 48, 57, 53, 62, 63, 48, 52, 54, 57, 53, 62, 63, 48, 52, 54, 57, 51, 62, 63, 48, 50, 52, 57, 62, 63, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 58, 62, 63, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 58, 62, 63, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 58, 62, 63, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 47, 62, 63, 64, 95, 126, 36, 57, 58, 59, 61, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 62, 91, 95, 126, 36, 59, 61, 90, 97, 122, 33, 35, 37, 47, 58, 62, 64, 95, 126, 36, 59, 61, 90, 97, 122, 33, 35, 37, 58, 62, 64, 91, 95, 126, 36, 59, 61, 90, 97, 122, 33, 35, 37, 58, 62, 64, 95, 126, 36, 59, 61, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 59, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 45, 46, 47, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 47, 58, 62, 63, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 47, 62, 63, 47, 62, 63, 48, 57, 47, 62, 63, 48, 57, 47, 62, 63, 48, 57, 47, 62, 63, 48, 57, 47, 53, 62, 63, 48, 52, 54, 57, 47, 53, 62, 63, 48, 52, 54, 57, 47, 51, 62, 63, 48, 50, 52, 57, 47, 62, 63, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 47, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 47, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 47, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 47, 53, 58, 62, 63, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 47, 58, 62, 63, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 47, 58, 62, 63, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 47, 62, 63, 64, 95, 126, 36, 57, 58, 59, 61, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 62, 91, 95, 126, 36, 59, 61, 90, 97, 122, 43, 58, 73, 105, 45, 46, 48, 57, 65, 90, 97, 122, 43, 58, 80, 112, 45, 46, 48, 57, 65, 90, 97, 122, 43, 58, 83, 115, 45, 46, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 59, 61, 63, 91, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 59, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 58, 59, 62, 63, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 59, 62, 63, 33, 37, 76, 79, 84, 93, 95, 108, 111, 116, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 36, 37, 63, 93, 95, 126, 39, 43, 45, 58, 65, 91, 97, 122, 33, 36, 37, 61, 63, 93, 95, 126, 39, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 82, 93, 95, 114, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 39, 47, 58, 59, 61, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 59, 61, 62, 63, 66, 86, 93, 95, 98, 118, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 73, 93, 95, 105, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 68, 93, 95, 100, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 39, 47, 58, 59, 61, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 59, 61, 62, 63, 82, 93, 95, 114, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 65, 93, 95, 97, 126, 36, 43, 45, 58, 66, 91, 98, 122, 33, 37, 59, 61, 62, 63, 78, 93, 95, 110, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 83, 93, 95, 115, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 80, 93, 95, 112, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 79, 93, 95, 111, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 82, 93, 95, 114, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 84, 93, 95, 116, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 39, 47, 58, 59, 61, 62, 63, 83, 84, 85, 87, 91, 93, 96, 115, 116, 117, 119, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 47, 58, 59, 62, 63, 67, 91, 93, 96, 99, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 84, 91, 93, 96, 116, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 80, 91, 93, 96, 112, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 67, 76, 91, 93, 96, 99, 108, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 80, 91, 93, 96, 112, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 83, 91, 93, 96, 115, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 68, 91, 93, 96, 100, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 80, 91, 93, 96, 112, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 83, 91, 93, 96, 115, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 83, 91, 93, 96, 115, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 59, 62, 63, 48, 57, 59, 62, 63, 48, 57, 59, 62, 63, 48, 57, 59, 62, 63, 48, 57, 53, 59, 62, 63, 48, 52, 54, 57, 53, 59, 62, 63, 48, 52, 54, 57, 51, 59, 62, 63, 48, 50, 52, 57, 59, 62, 63, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 58, 59, 62, 63, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 58, 59, 62, 63, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 54, 61, 64, 95, 126, 36, 46, 49, 53, 55, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 46, 49, 57, 65, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 53, 59, 62, 63, 64, 95, 126, 36, 46, 48, 52, 54, 57, 61, 90, 97, 122, 33, 37, 53, 59, 62, 63, 64, 95, 126, 36, 46, 48, 52, 54, 57, 61, 90, 97, 122, 33, 37, 51, 59, 62, 63, 64, 95, 126, 36, 46, 48, 50, 52, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 53, 54, 57, 61, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 63, 64, 76, 79, 84, 91, 93, 95, 108, 111, 116, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 37, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 44, 47, 58, 61, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 36, 37, 44, 58, 59, 61, 64, 91, 93, 95, 126, 35, 38, 39, 57, 63, 90, 97, 122, 33, 36, 37, 44, 58, 59, 61, 64, 91, 93, 95, 126, 35, 38, 39, 57, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 44, 47, 58, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 44, 47, 58, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 44, 47, 58, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 38, 44, 58, 59, 61, 62, 64, 91, 93, 95, 126, 36, 57, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 35, 37, 44, 58, 59, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 82, 91, 93, 95, 114, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 66, 86, 91, 93, 95, 98, 118, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 73, 91, 93, 95, 105, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 68, 91, 93, 95, 100, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 82, 91, 93, 95, 114, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 65, 91, 93, 95, 97, 126, 36, 57, 66, 90, 98, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 78, 91, 93, 95, 110, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 83, 91, 93, 95, 115, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 80, 91, 93, 95, 112, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 79, 91, 93, 95, 111, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 82, 91, 93, 95, 114, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 84, 91, 93, 95, 116, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 84, 85, 87, 91, 93, 96, 115, 116, 117, 119, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 67, 91, 93, 96, 99, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 84, 91, 93, 96, 116, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 80, 91, 93, 96, 112, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 67, 76, 91, 93, 96, 99, 108, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 80, 91, 93, 96, 112, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 91, 93, 96, 115, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 68, 91, 93, 96, 100, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 80, 91, 93, 96, 112, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 91, 93, 96, 115, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 91, 93, 96, 115, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 43, 58, 45, 46, 48, 57, 65, 90, 97, 122, 43, 58, 69, 101, 45, 46, 48, 57, 65, 90, 97, 122, 43, 58, 76, 108, 45, 46, 48, 57, 65, 90, 97, 122, 43, 58, 45, 46, 48, 57, 65, 90, 97, 122, 35, 42, 43, 40, 41, 45, 46, 48, 57, 65, 70, 97, 102, 35, 59, 62, 40, 42, 45, 46, 48, 57, 65, 70, 97, 102, 45, 80, 112, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 48, 57, 65, 90, 97, 122, 33, 37, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 62, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 45, 59, 61, 62, 72, 104, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 79, 111, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 78, 110, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 69, 101, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 67, 99, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 79, 111, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 78, 110, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 84, 116, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 69, 101, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 88, 120, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 84, 116, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 48, 57, 65, 90, 97, 122, 33, 37, 43, 58, 91, 93, 95, 126, 36, 42, 45, 47, 48, 57, 65, 90, 97, 122, 33, 37, 47, 58, 59, 62, 93, 95, 126, 36, 39, 40, 41, 42, 43, 45, 46, 48, 57, 65, 91, 97, 122, 33, 37, 47, 58, 59, 62, 93, 95, 126, 36, 39, 40, 41, 42, 43, 45, 57, 65, 91, 97, 122, 33, 37, 45, 46, 47, 58, 59, 62, 91, 93, 95, 126, 36, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 59, 62, 91, 93, 95, 126, 36, 43, 46, 47, 48, 57, 65, 90, 97, 122, 33, 37, 58, 59, 62, 91, 93, 95, 126, 36, 43, 45, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 59, 62, 91, 93, 95, 126, 36, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 59, 62, 91, 93, 95, 126, 36, 43, 46, 47, 48, 57, 65, 90, 97, 122, 33, 37, 58, 59, 62, 91, 93, 95, 126, 36, 43, 45, 47, 48, 57, 65, 90, 97, 122, 35, 42, 40, 41, 45, 46, 48, 57, 65, 70, 97, 102, 40, 41, 45, 46, 48, 57, 59, 62, 40, 41, 45, 46, 48, 57, 9, 13, 32, 33, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 34, 92, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, 32, 126, -128, -65, -128, -65, -128, -65, -128, -65, -128, -65, 10, 9, 32, 9, 13, 32, 60, 9, 13, 32, 60, 0, 9, 11, 12, 14, 127, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 9, 13, 32, 33, 35, 37, 47, 58, 59, 61, 64, 91, 95, 126, 36, 43, 45, 57, 65, 90, 97, 122, 9, 13, 32, 33, 35, 37, 58, 59, 61, 64, 95, 126, 36, 43, 45, 57, 65, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 43, 45, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 58, 59, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 9, 13, 32, 59, 9, 13, 32, 59, 48, 57, 9, 13, 32, 59, 48, 57, 9, 13, 32, 59, 48, 57, 9, 13, 32, 59, 48, 57, 9, 13, 32, 53, 59, 48, 52, 54, 57, 9, 13, 32, 53, 59, 48, 52, 54, 57, 9, 13, 32, 51, 59, 48, 50, 52, 57, 9, 13, 32, 59, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 53, 58, 59, 95, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 9, 13, 32, 58, 59, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 9, 13, 32, 33, 37, 47, 58, 59, 61, 64, 95, 126, 36, 43, 45, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 9, 13, 32, 33, 37, 59, 61, 95, 126, 36, 43, 45, 58, 64, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 9, 13, 32, 33, 37, 59, 61, 91, 95, 126, 36, 43, 45, 58, 64, 90, 97, 122, 9, 13, 32, 33, 35, 37, 47, 58, 59, 61, 64, 95, 126, 36, 43, 45, 57, 65, 90, 97, 122, 9, 13, 32, 33, 35, 37, 58, 59, 61, 64, 91, 95, 126, 36, 43, 45, 57, 65, 90, 97, 122, 9, 13, 32, 33, 35, 37, 58, 59, 61, 64, 95, 126, 36, 43, 45, 57, 65, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 43, 45, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 47, 58, 59, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 47, 58, 59, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 9, 13, 32, 47, 59, 9, 13, 32, 47, 59, 48, 57, 9, 13, 32, 47, 59, 48, 57, 9, 13, 32, 47, 59, 48, 57, 9, 13, 32, 47, 59, 48, 57, 9, 13, 32, 47, 53, 59, 48, 52, 54, 57, 9, 13, 32, 47, 53, 59, 48, 52, 54, 57, 9, 13, 32, 47, 51, 59, 48, 50, 52, 57, 9, 13, 32, 47, 59, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 47, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 47, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 47, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 47, 53, 58, 59, 95, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 47, 58, 59, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 9, 13, 32, 47, 58, 59, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 9, 13, 32, 33, 37, 47, 58, 59, 61, 64, 95, 126, 36, 43, 45, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 9, 13, 32, 33, 37, 59, 61, 91, 95, 126, 36, 43, 45, 58, 64, 90, 97, 122, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 73, 105, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 80, 112, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 83, 115, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 33, 37, 48, 49, 50, 61, 91, 95, 126, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 43, 45, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 58, 59, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 9, 13, 32, 59, 9, 13, 32, 59, 48, 57, 9, 13, 32, 59, 48, 57, 9, 13, 32, 59, 48, 57, 9, 13, 32, 59, 48, 57, 9, 13, 32, 53, 59, 48, 52, 54, 57, 9, 13, 32, 53, 59, 48, 52, 54, 57, 9, 13, 32, 51, 59, 48, 50, 52, 57, 9, 13, 32, 59, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 53, 58, 59, 95, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 9, 13, 32, 58, 59, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 61, 64, 95, 126, 35, 43, 46, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 43, 45, 47, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 45, 46, 47, 58, 59, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 61, 64, 95, 126, 35, 43, 46, 47, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 58, 59, 61, 64, 95, 126, 35, 43, 45, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 54, 61, 64, 95, 126, 36, 43, 45, 46, 49, 53, 55, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 43, 45, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 43, 45, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 43, 45, 46, 49, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 53, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 53, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 51, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 50, 52, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 61, 64, 95, 126, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 61, 64, 95, 126, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 61, 64, 95, 126, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 45, 46, 47, 58, 59, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 45, 46, 47, 58, 59, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 45, 46, 47, 58, 59, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 45, 46, 47, 53, 58, 59, 61, 64, 95, 126, 35, 43, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 45, 46, 47, 58, 59, 61, 64, 95, 126, 35, 43, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 53, 58, 61, 64, 95, 126, 35, 43, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 53, 58, 61, 64, 95, 126, 35, 43, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 53, 58, 61, 64, 95, 126, 35, 43, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 53, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 69, 101, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 76, 108, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 35, 42, 43, 40, 41, 45, 46, 48, 57, 65, 70, 97, 102, 9, 13, 32, 35, 59, 40, 42, 45, 46, 48, 57, 65, 70, 97, 102, 35, 42, 40, 41, 45, 46, 48, 57, 65, 70, 97, 102, 40, 41, 45, 46, 48, 57, 9, 13, 32, 59, 40, 41, 45, 46, 48, 57, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 85, 117, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 34, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 13, 32, 33, 34, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 60, 83, 115, 73, 105, 80, 112, 58, 83, 115, 33, 37, 48, 49, 50, 59, 61, 63, 91, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 59, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 58, 59, 62, 63, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 59, 62, 63, 33, 37, 76, 79, 84, 93, 95, 108, 111, 116, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 59, 9, 13, 32, 44, 59, 10, 9, 32, 9, 32, 44, 59, 9, 13, 32, 33, 34, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 13, 32, 33, 34, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 34, 92, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, 32, 126, -128, -65, -128, -65, -128, -65, -128, -65, -128, -65, 10, 9, 32, 9, 13, 32, 60, 9, 13, 32, 60, 0, 9, 11, 12, 14, 127, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 59, 61, 10, 9, 32, 9, 32, 44, 59, 61, 9, 13, 32, 33, 34, 37, 39, 91, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 34, 37, 39, 91, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 126, 42, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 34, 92, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, 32, 126, -128, -65, -128, -65, -128, -65, -128, -65, -128, -65, 10, 9, 32, 0, 9, 11, 12, 14, 127, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 36, 37, 63, 93, 95, 126, 39, 43, 45, 58, 65, 91, 97, 122, 33, 36, 37, 61, 63, 93, 95, 126, 39, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 82, 93, 95, 114, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 39, 47, 58, 59, 61, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 59, 61, 62, 63, 66, 86, 93, 95, 98, 118, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 73, 93, 95, 105, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 68, 93, 95, 100, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 39, 47, 58, 59, 61, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 59, 61, 62, 63, 82, 93, 95, 114, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 65, 93, 95, 97, 126, 36, 43, 45, 58, 66, 91, 98, 122, 33, 37, 59, 61, 62, 63, 78, 93, 95, 110, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 83, 93, 95, 115, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 80, 93, 95, 112, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 79, 93, 95, 111, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 82, 93, 95, 114, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 84, 93, 95, 116, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 39, 47, 58, 59, 61, 62, 63, 83, 84, 85, 87, 91, 93, 96, 115, 116, 117, 119, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 47, 58, 59, 62, 63, 67, 91, 93, 96, 99, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 84, 91, 93, 96, 116, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 80, 91, 93, 96, 112, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 67, 76, 91, 93, 96, 99, 108, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 80, 91, 93, 96, 112, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 83, 91, 93, 96, 115, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 68, 91, 93, 96, 100, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 80, 91, 93, 96, 112, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 83, 91, 93, 96, 115, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 83, 91, 93, 96, 115, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 59, 62, 63, 48, 57, 59, 62, 63, 48, 57, 59, 62, 63, 48, 57, 59, 62, 63, 48, 57, 53, 59, 62, 63, 48, 52, 54, 57, 53, 59, 62, 63, 48, 52, 54, 57, 51, 59, 62, 63, 48, 50, 52, 57, 59, 62, 63, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 58, 59, 62, 63, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 58, 59, 62, 63, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 54, 61, 64, 95, 126, 36, 46, 49, 53, 55, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 46, 49, 57, 65, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 53, 59, 62, 63, 64, 95, 126, 36, 46, 48, 52, 54, 57, 61, 90, 97, 122, 33, 37, 53, 59, 62, 63, 64, 95, 126, 36, 46, 48, 52, 54, 57, 61, 90, 97, 122, 33, 37, 51, 59, 62, 63, 64, 95, 126, 36, 46, 48, 50, 52, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 53, 54, 57, 61, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 63, 64, 76, 79, 84, 91, 93, 95, 108, 111, 116, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 37, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 44, 47, 58, 61, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 36, 37, 44, 58, 59, 61, 64, 91, 93, 95, 126, 35, 38, 39, 57, 63, 90, 97, 122, 33, 36, 37, 44, 58, 59, 61, 64, 91, 93, 95, 126, 35, 38, 39, 57, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 44, 47, 58, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 44, 47, 58, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 44, 47, 58, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 38, 44, 58, 59, 61, 62, 64, 91, 93, 95, 126, 36, 57, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 35, 37, 44, 58, 59, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 82, 91, 93, 95, 114, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 66, 86, 91, 93, 95, 98, 118, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 73, 91, 93, 95, 105, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 68, 91, 93, 95, 100, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 82, 91, 93, 95, 114, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 65, 91, 93, 95, 97, 126, 36, 57, 66, 90, 98, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 78, 91, 93, 95, 110, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 83, 91, 93, 95, 115, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 80, 91, 93, 95, 112, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 79, 91, 93, 95, 111, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 82, 91, 93, 95, 114, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 84, 91, 93, 95, 116, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 84, 85, 87, 91, 93, 96, 115, 116, 117, 119, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 67, 91, 93, 96, 99, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 84, 91, 93, 96, 116, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 80, 91, 93, 96, 112, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 67, 76, 91, 93, 96, 99, 108, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 80, 91, 93, 96, 112, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 91, 93, 96, 115, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 68, 91, 93, 96, 100, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 80, 91, 93, 96, 112, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 91, 93, 96, 115, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 91, 93, 96, 115, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 58, 9, 13, 32, 33, 37, 39, 59, 61, 65, 97, 126, 42, 43, 45, 46, 48, 57, 66, 90, 95, 122, 9, 13, 32, 33, 37, 39, 59, 61, 71, 103, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 59, 61, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 59, 61, 10, 9, 32, 9, 32, 59, 61, 9, 13, 32, 33, 34, 37, 39, 91, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 34, 37, 39, 91, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 59, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 37, 62, 95, 126, 36, 59, 61, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 62, 63, 48, 57, 62, 63, 48, 57, 62, 63, 48, 57, 62, 63, 48, 57, 53, 62, 63, 48, 52, 54, 57, 53, 62, 63, 48, 52, 54, 57, 51, 62, 63, 48, 50, 52, 57, 62, 63, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 58, 62, 63, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 58, 62, 63, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 58, 62, 63, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 47, 62, 63, 64, 95, 126, 36, 57, 58, 59, 61, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 62, 91, 95, 126, 36, 59, 61, 90, 97, 122, 33, 35, 37, 47, 58, 62, 64, 95, 126, 36, 59, 61, 90, 97, 122, 33, 35, 37, 58, 62, 64, 91, 95, 126, 36, 59, 61, 90, 97, 122, 33, 35, 37, 58, 62, 64, 95, 126, 36, 59, 61, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 59, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 45, 46, 47, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 47, 58, 62, 63, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 47, 62, 63, 47, 62, 63, 48, 57, 47, 62, 63, 48, 57, 47, 62, 63, 48, 57, 47, 62, 63, 48, 57, 47, 53, 62, 63, 48, 52, 54, 57, 47, 53, 62, 63, 48, 52, 54, 57, 47, 51, 62, 63, 48, 50, 52, 57, 47, 62, 63, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 47, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 47, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 47, 58, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 47, 53, 58, 62, 63, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 47, 58, 62, 63, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 47, 58, 62, 63, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 47, 62, 63, 64, 95, 126, 36, 57, 58, 59, 61, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 62, 91, 95, 126, 36, 59, 61, 90, 97, 122, 43, 58, 73, 105, 45, 46, 48, 57, 65, 90, 97, 122, 43, 58, 80, 112, 45, 46, 48, 57, 65, 90, 97, 122, 43, 58, 83, 115, 45, 46, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 59, 61, 63, 91, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 59, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 58, 59, 62, 63, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 59, 62, 63, 33, 37, 76, 79, 84, 93, 95, 108, 111, 116, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 36, 37, 63, 93, 95, 126, 39, 43, 45, 58, 65, 91, 97, 122, 33, 36, 37, 61, 63, 93, 95, 126, 39, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 82, 93, 95, 114, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 39, 47, 58, 59, 61, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 59, 61, 62, 63, 66, 86, 93, 95, 98, 118, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 73, 93, 95, 105, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 68, 93, 95, 100, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 39, 47, 58, 59, 61, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 59, 61, 62, 63, 82, 93, 95, 114, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 65, 93, 95, 97, 126, 36, 43, 45, 58, 66, 91, 98, 122, 33, 37, 59, 61, 62, 63, 78, 93, 95, 110, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 83, 93, 95, 115, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 80, 93, 95, 112, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 79, 93, 95, 111, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 82, 93, 95, 114, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 84, 93, 95, 116, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 39, 47, 58, 59, 61, 62, 63, 83, 84, 85, 87, 91, 93, 96, 115, 116, 117, 119, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 47, 58, 59, 62, 63, 67, 91, 93, 96, 99, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 84, 91, 93, 96, 116, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 80, 91, 93, 96, 112, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 67, 76, 91, 93, 96, 99, 108, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 80, 91, 93, 96, 112, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 83, 91, 93, 96, 115, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 68, 91, 93, 96, 100, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 80, 91, 93, 96, 112, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 83, 91, 93, 96, 115, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 83, 91, 93, 96, 115, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 59, 62, 63, 48, 57, 59, 62, 63, 48, 57, 59, 62, 63, 48, 57, 59, 62, 63, 48, 57, 53, 59, 62, 63, 48, 52, 54, 57, 53, 59, 62, 63, 48, 52, 54, 57, 51, 59, 62, 63, 48, 50, 52, 57, 59, 62, 63, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 58, 59, 62, 63, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 58, 59, 62, 63, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 54, 61, 64, 95, 126, 36, 46, 49, 53, 55, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 46, 49, 57, 65, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 53, 59, 62, 63, 64, 95, 126, 36, 46, 48, 52, 54, 57, 61, 90, 97, 122, 33, 37, 53, 59, 62, 63, 64, 95, 126, 36, 46, 48, 52, 54, 57, 61, 90, 97, 122, 33, 37, 51, 59, 62, 63, 64, 95, 126, 36, 46, 48, 50, 52, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 53, 54, 57, 61, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 63, 64, 76, 79, 84, 91, 93, 95, 108, 111, 116, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 37, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 44, 47, 58, 61, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 36, 37, 44, 58, 59, 61, 64, 91, 93, 95, 126, 35, 38, 39, 57, 63, 90, 97, 122, 33, 36, 37, 44, 58, 59, 61, 64, 91, 93, 95, 126, 35, 38, 39, 57, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 44, 47, 58, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 44, 47, 58, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 44, 47, 58, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 38, 44, 58, 59, 61, 62, 64, 91, 93, 95, 126, 36, 57, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 35, 37, 44, 58, 59, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 82, 91, 93, 95, 114, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 66, 86, 91, 93, 95, 98, 118, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 73, 91, 93, 95, 105, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 68, 91, 93, 95, 100, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 82, 91, 93, 95, 114, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 65, 91, 93, 95, 97, 126, 36, 57, 66, 90, 98, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 78, 91, 93, 95, 110, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 83, 91, 93, 95, 115, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 80, 91, 93, 95, 112, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 79, 91, 93, 95, 111, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 82, 91, 93, 95, 114, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 84, 91, 93, 95, 116, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 84, 85, 87, 91, 93, 96, 115, 116, 117, 119, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 67, 91, 93, 96, 99, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 84, 91, 93, 96, 116, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 80, 91, 93, 96, 112, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 67, 76, 91, 93, 96, 99, 108, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 80, 91, 93, 96, 112, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 91, 93, 96, 115, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 68, 91, 93, 96, 100, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 80, 91, 93, 96, 112, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 91, 93, 96, 115, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 91, 93, 96, 115, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 43, 58, 45, 46, 48, 57, 65, 90, 97, 122, 43, 58, 69, 101, 45, 46, 48, 57, 65, 90, 97, 122, 43, 58, 76, 108, 45, 46, 48, 57, 65, 90, 97, 122, 43, 58, 45, 46, 48, 57, 65, 90, 97, 122, 35, 42, 43, 40, 41, 45, 46, 48, 57, 65, 70, 97, 102, 35, 59, 62, 40, 42, 45, 46, 48, 57, 65, 70, 97, 102, 45, 80, 112, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 48, 57, 65, 90, 97, 122, 33, 37, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 62, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 45, 59, 61, 62, 72, 104, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 79, 111, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 78, 110, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 69, 101, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 67, 99, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 79, 111, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 78, 110, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 84, 116, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 69, 101, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 88, 120, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 84, 116, 48, 57, 65, 90, 97, 122, 45, 59, 61, 62, 48, 57, 65, 90, 97, 122, 33, 37, 43, 58, 91, 93, 95, 126, 36, 42, 45, 47, 48, 57, 65, 90, 97, 122, 33, 37, 47, 58, 59, 62, 93, 95, 126, 36, 39, 40, 41, 42, 43, 45, 46, 48, 57, 65, 91, 97, 122, 33, 37, 47, 58, 59, 62, 93, 95, 126, 36, 39, 40, 41, 42, 43, 45, 57, 65, 91, 97, 122, 33, 37, 45, 46, 47, 58, 59, 62, 91, 93, 95, 126, 36, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 59, 62, 91, 93, 95, 126, 36, 43, 46, 47, 48, 57, 65, 90, 97, 122, 33, 37, 58, 59, 62, 91, 93, 95, 126, 36, 43, 45, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 59, 62, 91, 93, 95, 126, 36, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 59, 62, 91, 93, 95, 126, 36, 43, 46, 47, 48, 57, 65, 90, 97, 122, 33, 37, 58, 59, 62, 91, 93, 95, 126, 36, 43, 45, 47, 48, 57, 65, 90, 97, 122, 35, 42, 40, 41, 45, 46, 48, 57, 65, 70, 97, 102, 40, 41, 45, 46, 48, 57, 59, 62, 40, 41, 45, 46, 48, 57, 9, 13, 32, 33, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 34, 92, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, 32, 126, -128, -65, -128, -65, -128, -65, -128, -65, -128, -65, 10, 9, 32, 9, 13, 32, 60, 9, 13, 32, 60, 0, 9, 11, 12, 14, 127, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 9, 13, 32, 33, 35, 37, 47, 58, 59, 61, 64, 91, 95, 126, 36, 43, 45, 57, 65, 90, 97, 122, 9, 13, 32, 33, 35, 37, 58, 59, 61, 64, 95, 126, 36, 43, 45, 57, 65, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 43, 45, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 58, 59, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 9, 13, 32, 59, 9, 13, 32, 59, 48, 57, 9, 13, 32, 59, 48, 57, 9, 13, 32, 59, 48, 57, 9, 13, 32, 59, 48, 57, 9, 13, 32, 53, 59, 48, 52, 54, 57, 9, 13, 32, 53, 59, 48, 52, 54, 57, 9, 13, 32, 51, 59, 48, 50, 52, 57, 9, 13, 32, 59, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 53, 58, 59, 95, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 9, 13, 32, 58, 59, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 9, 13, 32, 33, 37, 47, 58, 59, 61, 64, 95, 126, 36, 43, 45, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 9, 13, 32, 33, 37, 59, 61, 95, 126, 36, 43, 45, 58, 64, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 9, 13, 32, 33, 37, 59, 61, 91, 95, 126, 36, 43, 45, 58, 64, 90, 97, 122, 9, 13, 32, 33, 35, 37, 47, 58, 59, 61, 64, 95, 126, 36, 43, 45, 57, 65, 90, 97, 122, 9, 13, 32, 33, 35, 37, 58, 59, 61, 64, 91, 95, 126, 36, 43, 45, 57, 65, 90, 97, 122, 9, 13, 32, 33, 35, 37, 58, 59, 61, 64, 95, 126, 36, 43, 45, 57, 65, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 43, 45, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 47, 58, 59, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 47, 58, 59, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 9, 13, 32, 47, 59, 9, 13, 32, 47, 59, 48, 57, 9, 13, 32, 47, 59, 48, 57, 9, 13, 32, 47, 59, 48, 57, 9, 13, 32, 47, 59, 48, 57, 9, 13, 32, 47, 53, 59, 48, 52, 54, 57, 9, 13, 32, 47, 53, 59, 48, 52, 54, 57, 9, 13, 32, 47, 51, 59, 48, 50, 52, 57, 9, 13, 32, 47, 59, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 47, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 47, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 47, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 47, 53, 58, 59, 95, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 47, 58, 59, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 9, 13, 32, 47, 58, 59, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 9, 13, 32, 33, 37, 47, 58, 59, 61, 64, 95, 126, 36, 43, 45, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 9, 13, 32, 33, 37, 59, 61, 91, 95, 126, 36, 43, 45, 58, 64, 90, 97, 122, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 73, 105, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 80, 112, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 83, 115, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 33, 37, 48, 49, 50, 61, 91, 95, 126, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 43, 45, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 58, 59, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 9, 13, 32, 59, 9, 13, 32, 59, 48, 57, 9, 13, 32, 59, 48, 57, 9, 13, 32, 59, 48, 57, 9, 13, 32, 59, 48, 57, 9, 13, 32, 53, 59, 48, 52, 54, 57, 9, 13, 32, 53, 59, 48, 52, 54, 57, 9, 13, 32, 51, 59, 48, 50, 52, 57, 9, 13, 32, 59, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 53, 58, 59, 95, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 45, 46, 58, 59, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 9, 13, 32, 58, 59, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 61, 64, 95, 126, 35, 43, 46, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 43, 45, 47, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 45, 46, 47, 58, 59, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 61, 64, 95, 126, 35, 43, 46, 47, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 58, 59, 61, 64, 95, 126, 35, 43, 45, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 54, 61, 64, 95, 126, 36, 43, 45, 46, 49, 53, 55, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 43, 45, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 43, 45, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 43, 45, 46, 49, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 53, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 53, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 51, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 50, 52, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 59, 61, 64, 95, 126, 36, 43, 45, 46, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 61, 64, 95, 126, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 61, 64, 95, 126, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 61, 64, 95, 126, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 45, 46, 47, 58, 59, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 45, 46, 47, 58, 59, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 45, 46, 47, 58, 59, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 45, 46, 47, 53, 58, 59, 61, 64, 95, 126, 35, 43, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 45, 46, 47, 58, 59, 61, 64, 95, 126, 35, 43, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 53, 58, 61, 64, 95, 126, 35, 43, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 53, 58, 61, 64, 95, 126, 35, 43, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 53, 58, 61, 64, 95, 126, 35, 43, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 53, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 69, 101, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 76, 108, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 9, 13, 32, 33, 37, 39, 42, 43, 58, 60, 126, 45, 46, 48, 57, 65, 90, 95, 96, 97, 122, 35, 42, 43, 40, 41, 45, 46, 48, 57, 65, 70, 97, 102, 9, 13, 32, 35, 59, 40, 42, 45, 46, 48, 57, 65, 70, 97, 102, 35, 42, 40, 41, 45, 46, 48, 57, 65, 70, 97, 102, 40, 41, 45, 46, 48, 57, 9, 13, 32, 59, 40, 41, 45, 46, 48, 57, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 77, 109, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 13, 34, 92, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, -128, -65, -128, -65, -128, -65, -128, -65, -128, -65, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 60, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 9, 13, 32, 60, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 10, 13, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, -1, 0, 8, 11, 31, 9, 13, 34, 92, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, 32, 126, -128, -65, -128, -65, -128, -65, -128, -65, -128, -65, 10, 9, 32, 9, 13, 32, 60, 9, 13, 32, 60, 10, 9, 32, 9, 32, 60, 83, 115, 73, 105, 80, 112, 58, 83, 115, 33, 37, 48, 49, 50, 59, 61, 63, 91, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 59, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 58, 59, 62, 63, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 59, 62, 63, 33, 37, 76, 79, 84, 93, 95, 108, 111, 116, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 9, 13, 32, 44, 59, 9, 13, 32, 44, 59, 10, 9, 32, 9, 32, 44, 59, 9, 13, 32, 33, 34, 37, 39, 60, 83, 115, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 13, 32, 33, 34, 37, 39, 60, 83, 115, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 60, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 60, 80, 112, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 58, 60, 83, 115, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 37, 48, 49, 50, 61, 91, 95, 126, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 43, 45, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 45, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 58, 59, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 9, 13, 32, 44, 59, 9, 13, 32, 33, 37, 39, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 59, 61, 10, 9, 32, 9, 32, 44, 59, 61, 9, 13, 32, 33, 34, 37, 39, 91, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 34, 37, 39, 91, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 34, 92, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, 32, 126, -128, -65, -128, -65, -128, -65, -128, -65, -128, -65, 10, 9, 32, 9, 13, 32, 44, 59, 0, 9, 11, 12, 14, 127, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 69, 101, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 71, 103, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 45, 59, 61, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 73, 105, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 68, 100, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 59, 48, 57, 9, 13, 32, 44, 59, 48, 57, 9, 13, 32, 44, 59, 48, 57, 9, 13, 32, 44, 59, 48, 57, 9, 13, 32, 44, 53, 59, 48, 52, 54, 57, 9, 13, 32, 44, 53, 59, 48, 52, 54, 57, 9, 13, 32, 44, 51, 59, 48, 50, 52, 57, 9, 13, 32, 44, 59, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 58, 59, 95, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 53, 58, 59, 95, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 58, 59, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 9, 13, 32, 44, 58, 59, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 61, 64, 95, 126, 35, 43, 46, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 43, 45, 47, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 45, 46, 58, 59, 61, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 61, 64, 95, 126, 35, 43, 46, 47, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 58, 59, 61, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 54, 61, 64, 95, 126, 36, 43, 45, 46, 49, 53, 55, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 43, 45, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 43, 45, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 43, 45, 46, 49, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 59, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 59, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 59, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 59, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 59, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 53, 59, 61, 64, 95, 126, 36, 46, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 53, 59, 61, 64, 95, 126, 36, 46, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 51, 59, 61, 64, 95, 126, 36, 46, 48, 50, 52, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 59, 61, 64, 95, 126, 36, 46, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 61, 64, 95, 126, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 61, 64, 95, 126, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 61, 64, 95, 126, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 45, 46, 58, 59, 61, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 45, 46, 58, 59, 61, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 45, 46, 58, 59, 61, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 45, 46, 53, 58, 59, 61, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 45, 46, 58, 59, 61, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 53, 58, 61, 64, 95, 126, 35, 43, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 53, 58, 61, 64, 95, 126, 35, 43, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 53, 58, 61, 64, 95, 126, 35, 43, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 35, 43, 48, 53, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 39, 58, 60, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 36, 37, 63, 93, 95, 126, 39, 43, 45, 58, 65, 91, 97, 122, 33, 36, 37, 61, 63, 93, 95, 126, 39, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 82, 93, 95, 114, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 39, 47, 58, 59, 61, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 59, 61, 62, 63, 66, 86, 93, 95, 98, 118, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 73, 93, 95, 105, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 68, 93, 95, 100, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 39, 47, 58, 59, 61, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 59, 61, 62, 63, 82, 93, 95, 114, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 65, 93, 95, 97, 126, 36, 43, 45, 58, 66, 91, 98, 122, 33, 37, 59, 61, 62, 63, 78, 93, 95, 110, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 83, 93, 95, 115, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 80, 93, 95, 112, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 79, 93, 95, 111, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 82, 93, 95, 114, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 84, 93, 95, 116, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 59, 61, 62, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 33, 37, 39, 47, 58, 59, 61, 62, 63, 83, 84, 85, 87, 91, 93, 96, 115, 116, 117, 119, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 47, 58, 59, 62, 63, 67, 91, 93, 96, 99, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 84, 91, 93, 96, 116, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 80, 91, 93, 96, 112, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 67, 76, 91, 93, 96, 99, 108, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 80, 91, 93, 96, 112, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 83, 91, 93, 96, 115, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 68, 91, 93, 96, 100, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 80, 91, 93, 96, 112, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 83, 91, 93, 96, 115, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 83, 91, 93, 96, 115, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 59, 62, 63, 48, 57, 59, 62, 63, 48, 57, 59, 62, 63, 48, 57, 59, 62, 63, 48, 57, 53, 59, 62, 63, 48, 52, 54, 57, 53, 59, 62, 63, 48, 52, 54, 57, 51, 59, 62, 63, 48, 50, 52, 57, 59, 62, 63, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 58, 59, 62, 63, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 58, 59, 62, 63, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 58, 59, 62, 63, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 54, 61, 64, 95, 126, 36, 46, 49, 53, 55, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 46, 49, 57, 65, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 57, 61, 90, 97, 122, 33, 37, 53, 59, 62, 63, 64, 95, 126, 36, 46, 48, 52, 54, 57, 61, 90, 97, 122, 33, 37, 53, 59, 62, 63, 64, 95, 126, 36, 46, 48, 52, 54, 57, 61, 90, 97, 122, 33, 37, 51, 59, 62, 63, 64, 95, 126, 36, 46, 48, 50, 52, 57, 61, 90, 97, 122, 33, 37, 59, 62, 63, 64, 95, 126, 36, 46, 48, 53, 54, 57, 61, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 63, 64, 76, 79, 84, 91, 93, 95, 108, 111, 116, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 37, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 44, 47, 58, 61, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 36, 37, 44, 58, 59, 61, 64, 91, 93, 95, 126, 35, 38, 39, 57, 63, 90, 97, 122, 33, 36, 37, 44, 58, 59, 61, 64, 91, 93, 95, 126, 35, 38, 39, 57, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 44, 47, 58, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 44, 47, 58, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 44, 47, 58, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 38, 44, 58, 59, 61, 62, 64, 91, 93, 95, 126, 36, 57, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 35, 37, 44, 58, 59, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 82, 91, 93, 95, 114, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 66, 86, 91, 93, 95, 98, 118, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 73, 91, 93, 95, 105, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 68, 91, 93, 95, 100, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 82, 91, 93, 95, 114, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 65, 91, 93, 95, 97, 126, 36, 57, 66, 90, 98, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 78, 91, 93, 95, 110, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 83, 91, 93, 95, 115, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 80, 91, 93, 95, 112, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 79, 91, 93, 95, 111, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 82, 91, 93, 95, 114, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 84, 91, 93, 95, 116, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 84, 85, 87, 91, 93, 96, 115, 116, 117, 119, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 37, 39, 59, 62, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 67, 91, 93, 96, 99, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 84, 91, 93, 96, 116, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 80, 91, 93, 96, 112, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 67, 76, 91, 93, 96, 99, 108, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 80, 91, 93, 96, 112, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 91, 93, 96, 115, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 68, 91, 93, 96, 100, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 80, 91, 93, 96, 112, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 91, 93, 96, 115, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 91, 93, 96, 115, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 58, 0, 9, 11, 12, 14, 127, 9, 13, 32, 33, 37, 39, 60, 73, 105, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 60, 80, 112, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 58, 60, 83, 115, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 13, 33, 37, 48, 49, 50, 61, 91, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 13, 33, 37, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 45, 57, 65, 90, 97, 122, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 33, 37, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 46, 48, 57, 65, 90, 97, 122, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 91, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 58, 59, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 48, 57, 65, 90, 97, 122, 13, 45, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 58, 59, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 48, 57, 65, 90, 97, 122, 13, 48, 54, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 49, 53, 55, 57, 13, 48, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 49, 57, 13, 48, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 49, 57, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 49, 57, 9, 13, 32, 44, 59, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 9, 13, 32, 33, 37, 39, 82, 114, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 82, 114, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 59, 61, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 59, 61, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 9, 13, 32, 33, 34, 37, 39, 91, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 34, 37, 39, 91, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 46, 48, 57, 65, 90, 95, 122, 13, 34, 92, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, -128, -65, -128, -65, -128, -65, -128, -65, -128, -65, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 59, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 10, 13, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, -1, 0, 8, 11, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 53, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 46, 53, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 46, 53, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 9, 13, 32, 33, 37, 39, 44, 59, 61, 69, 101, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 71, 103, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 45, 59, 61, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 73, 105, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 68, 100, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 59, 61, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 59, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 48, 57, 9, 13, 32, 44, 59, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 48, 57, 9, 13, 32, 44, 59, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 48, 57, 9, 13, 32, 44, 59, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 48, 57, 9, 13, 32, 44, 53, 59, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 48, 52, 54, 57, 9, 13, 32, 44, 53, 59, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 48, 52, 54, 57, 9, 13, 32, 44, 51, 59, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 48, 50, 52, 57, 9, 13, 32, 44, 59, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 48, 53, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 58, 59, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 58, 59, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 58, 59, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 48, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 53, 58, 59, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 44, 45, 46, 58, 59, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 48, 53, 54, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 53, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 53, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 53, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 90, 97, 122, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 9, 13, 32, 44, 58, 59, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 53, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 46, 53, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 46, 53, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 46, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 57, 65, 90, 97, 122, 13, 33, 37, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 45, 47, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 45, 46, 58, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 46, 47, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 58, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 48, 54, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 46, 49, 53, 55, 57, 65, 90, 97, 122, 13, 33, 37, 48, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 46, 49, 57, 65, 90, 97, 122, 13, 33, 37, 48, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 46, 49, 57, 65, 90, 97, 122, 13, 33, 37, 48, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 46, 49, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 36, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 36, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 36, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 36, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 36, 46, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 53, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 36, 46, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 53, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 36, 46, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 51, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 36, 46, 48, 50, 52, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 36, 46, 48, 53, 54, 57, 65, 90, 97, 122, 13, 33, 37, 48, 49, 50, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 57, 65, 90, 97, 122, 13, 33, 37, 48, 49, 50, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 57, 65, 90, 97, 122, 13, 33, 37, 48, 49, 50, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 45, 47, 51, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 45, 46, 58, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 35, 47, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 45, 46, 58, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 35, 47, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 45, 46, 58, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 35, 47, 48, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 45, 46, 53, 58, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 44, 45, 46, 58, 59, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 47, 53, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 52, 54, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 53, 54, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 47, 53, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 52, 54, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 53, 54, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 47, 53, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 52, 54, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 47, 58, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 43, 48, 53, 54, 57, 65, 90, 97, 122, 9, 13, 32, 33, 37, 39, 58, 60, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 13, 33, 36, 37, 63, 93, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 39, 43, 45, 58, 65, 91, 97, 122, 13, 33, 36, 37, 61, 63, 93, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 39, 43, 45, 58, 65, 91, 97, 122, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 33, 37, 38, 62, 63, 93, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 58, 65, 91, 97, 122, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 33, 37, 93, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 58, 65, 91, 97, 122, 13, 33, 37, 59, 61, 62, 63, 82, 93, 95, 114, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 58, 65, 91, 97, 122, 9, 13, 32, 37, 44, 59, 61, 62, 63, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 34, 35, 60, 64, 123, 125, 13, 33, 37, 39, 47, 58, 59, 61, 62, 63, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 59, 62, 63, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 13, 33, 37, 39, 59, 62, 63, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 13, 33, 37, 39, 59, 62, 63, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 13, 33, 37, 59, 61, 62, 63, 66, 86, 93, 95, 98, 118, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 58, 65, 91, 97, 122, 9, 13, 32, 37, 44, 59, 61, 62, 63, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 34, 35, 60, 64, 123, 125, 13, 33, 37, 59, 61, 62, 63, 73, 93, 95, 105, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 58, 65, 91, 97, 122, 13, 33, 37, 59, 61, 62, 63, 68, 93, 95, 100, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 58, 65, 91, 97, 122, 9, 13, 32, 37, 44, 59, 61, 62, 63, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 34, 35, 60, 64, 123, 125, 13, 33, 37, 39, 47, 58, 59, 61, 62, 63, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 59, 62, 63, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 13, 33, 37, 39, 59, 62, 63, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 13, 33, 37, 39, 59, 62, 63, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 13, 33, 37, 59, 61, 62, 63, 82, 93, 95, 114, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 58, 65, 91, 97, 122, 13, 33, 37, 59, 61, 62, 63, 65, 93, 95, 97, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 58, 66, 91, 98, 122, 13, 33, 37, 59, 61, 62, 63, 78, 93, 95, 110, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 58, 65, 91, 97, 122, 13, 33, 37, 59, 61, 62, 63, 83, 93, 95, 115, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 58, 65, 91, 97, 122, 13, 33, 37, 59, 61, 62, 63, 80, 93, 95, 112, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 58, 65, 91, 97, 122, 13, 33, 37, 59, 61, 62, 63, 79, 93, 95, 111, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 58, 65, 91, 97, 122, 13, 33, 37, 59, 61, 62, 63, 82, 93, 95, 114, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 58, 65, 91, 97, 122, 13, 33, 37, 59, 61, 62, 63, 84, 93, 95, 116, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 43, 45, 58, 65, 91, 97, 122, 9, 13, 32, 37, 44, 59, 61, 62, 63, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 34, 35, 60, 64, 123, 125, 13, 33, 37, 39, 47, 58, 59, 61, 62, 63, 83, 84, 85, 87, 91, 93, 96, 115, 116, 117, 119, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 59, 62, 63, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 13, 33, 37, 39, 59, 62, 63, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 13, 33, 37, 39, 59, 62, 63, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 67, 91, 93, 96, 99, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 84, 91, 93, 96, 116, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 80, 91, 93, 96, 112, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 67, 76, 91, 93, 96, 99, 108, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 80, 91, 93, 96, 112, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 83, 91, 93, 96, 115, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 68, 91, 93, 96, 100, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 80, 91, 93, 96, 112, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 83, 91, 93, 96, 115, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 83, 91, 93, 96, 115, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 33, 37, 39, 47, 58, 59, 62, 63, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 13, 59, 62, 63, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 59, 62, 63, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 59, 62, 63, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 59, 62, 63, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 53, 59, 62, 63, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 13, 53, 59, 62, 63, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 13, 51, 59, 62, 63, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 50, 52, 57, 13, 59, 62, 63, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 90, 97, 122, 13, 45, 46, 58, 59, 62, 63, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 58, 59, 62, 63, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 58, 59, 62, 63, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 53, 58, 59, 62, 63, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 90, 97, 122, 13, 45, 46, 58, 59, 62, 63, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 53, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 53, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 90, 97, 122, 13, 45, 46, 53, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 90, 97, 122, 13, 45, 46, 95, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 90, 97, 122, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 59, 62, 63, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 53, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 46, 53, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 13, 46, 53, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 13, 46, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 13, 48, 49, 50, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 51, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 53, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 52, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 53, 54, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 46, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 58, 93, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 58, 59, 61, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 48, 54, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 46, 49, 53, 55, 57, 65, 90, 97, 122, 13, 33, 37, 48, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 46, 49, 57, 65, 90, 97, 122, 13, 33, 37, 48, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 46, 49, 57, 65, 90, 97, 122, 13, 33, 37, 48, 61, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 46, 49, 57, 65, 90, 97, 122, 13, 33, 37, 59, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 46, 48, 57, 61, 90, 97, 122, 13, 33, 37, 59, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 46, 48, 57, 61, 90, 97, 122, 13, 33, 37, 59, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 46, 48, 57, 61, 90, 97, 122, 13, 33, 37, 59, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 46, 48, 57, 61, 90, 97, 122, 13, 33, 37, 59, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 46, 48, 57, 61, 90, 97, 122, 13, 33, 37, 53, 59, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 46, 48, 52, 54, 57, 61, 90, 97, 122, 13, 33, 37, 53, 59, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 46, 48, 52, 54, 57, 61, 90, 97, 122, 13, 33, 37, 51, 59, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 46, 48, 50, 52, 57, 61, 90, 97, 122, 13, 33, 37, 59, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 46, 48, 53, 54, 57, 61, 90, 97, 122, 13, 33, 35, 37, 44, 58, 59, 61, 63, 64, 76, 79, 84, 91, 93, 95, 108, 111, 116, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 9, 13, 32, 34, 35, 37, 44, 58, 59, 60, 61, 62, 63, 64, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 91, 93, 123, 125, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 33, 37, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 33, 37, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 13, 33, 37, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 33, 37, 44, 47, 58, 61, 64, 91, 93, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 9, 13, 32, 34, 35, 37, 44, 58, 59, 60, 61, 62, 63, 64, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 91, 93, 123, 125, 9, 13, 32, 34, 35, 37, 44, 58, 59, 60, 61, 62, 63, 64, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 91, 93, 123, 125, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 9, 13, 32, 34, 35, 37, 38, 44, 58, 60, 62, 64, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 59, 61, 91, 93, 123, 125, 9, 13, 32, 34, 35, 37, 38, 44, 58, 59, 61, 64, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 60, 62, 91, 93, 123, 125, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 33, 37, 38, 44, 47, 58, 61, 63, 64, 91, 93, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 33, 37, 38, 44, 47, 58, 61, 62, 63, 64, 91, 93, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 33, 37, 38, 44, 47, 58, 61, 63, 64, 91, 93, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 9, 13, 32, 34, 35, 37, 38, 44, 58, 60, 62, 64, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 59, 61, 91, 93, 123, 125, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 13, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 48, 57, 65, 70, 97, 102, 9, 13, 32, 34, 35, 37, 44, 58, 60, 62, 64, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 59, 63, 91, 93, 123, 125, 13, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 82, 91, 93, 95, 114, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 9, 13, 32, 34, 35, 37, 44, 58, 59, 60, 61, 62, 63, 64, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 91, 93, 123, 125, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 37, 39, 59, 62, 63, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 13, 33, 37, 39, 59, 62, 63, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 13, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 66, 86, 91, 93, 95, 98, 118, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 9, 13, 32, 34, 35, 37, 44, 58, 59, 60, 61, 62, 63, 64, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 91, 93, 123, 125, 13, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 73, 91, 93, 95, 105, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 13, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 68, 91, 93, 95, 100, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 9, 13, 32, 34, 35, 37, 44, 58, 59, 60, 61, 62, 63, 64, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 91, 93, 123, 125, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 37, 39, 59, 62, 63, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 13, 33, 37, 39, 59, 62, 63, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 13, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 82, 91, 93, 95, 114, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 13, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 65, 91, 93, 95, 97, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 66, 90, 98, 122, 13, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 78, 91, 93, 95, 110, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 13, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 83, 91, 93, 95, 115, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 13, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 80, 91, 93, 95, 112, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 13, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 79, 91, 93, 95, 111, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 13, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 82, 91, 93, 95, 114, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 13, 33, 35, 37, 44, 58, 59, 61, 62, 63, 64, 84, 91, 93, 95, 116, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 57, 65, 90, 97, 122, 9, 13, 32, 34, 35, 37, 44, 58, 59, 60, 61, 62, 63, 64, 92, 94, 96, 127, -128, -65, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 91, 93, 123, 125, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 84, 85, 87, 91, 93, 96, 115, 116, 117, 119, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 37, 39, 59, 62, 63, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 13, 33, 37, 39, 59, 62, 63, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 67, 91, 93, 96, 99, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 84, 91, 93, 96, 116, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 80, 91, 93, 96, 112, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 67, 76, 91, 93, 96, 99, 108, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 80, 91, 93, 96, 112, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 91, 93, 96, 115, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 68, 91, 93, 96, 100, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 80, 91, 93, 96, 112, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 91, 93, 96, 115, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 83, 91, 93, 96, 115, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 35, 37, 39, 44, 47, 58, 59, 61, 62, 63, 64, 91, 93, 96, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 36, 41, 42, 57, 65, 90, 95, 122, 13, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 51, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 51, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 51, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 53, 58, 59, 61, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 62, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 13, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 13, 58, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 8, 10, 31, 9, 32, 33, 37, 39, 58, 78, 110, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 45, 46, 58, 126, 42, 43, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 76, 108, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 78, 110, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 71, 103, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 72, 104, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 81, 113, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 48, 57, 10, 9, 32, 9, 32, 48, 57, 9, 13, 32, 48, 57, 9, 13, 32, 289, 293, 295, 321, 322, 323, 329, 333, 334, 335, 336, 338, 339, 341, 382, 545, 549, 551, 638, 298, 299, 301, 302, 304, 313, 324, 346, 351, 378, 554, 555, 557, 558, 560, 569, 577, 602, 607, 634, 10, 9, 32, 9, 32, 289, 293, 295, 321, 322, 323, 329, 333, 334, 335, 336, 338, 339, 341, 382, 545, 549, 551, 638, 298, 299, 301, 302, 304, 313, 324, 346, 351, 378, 554, 555, 557, 558, 560, 569, 577, 602, 607, 634, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 323, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 331, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 345, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 325, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 321, 382, 298, 299, 301, 302, 304, 313, 322, 346, 351, 378, 13, 289, 293, 295, 334, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 323, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 325, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 332, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 334, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 326, 342, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 335, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 329, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 340, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 325, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 325, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 339, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 339, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 321, 382, 298, 299, 301, 302, 304, 313, 322, 346, 351, 378, 13, 289, 293, 295, 327, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 325, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 335, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 340, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 329, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 326, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 345, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 336, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 340, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 329, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 335, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 334, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 339, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 338, 341, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 321, 382, 298, 299, 301, 302, 304, 313, 322, 346, 351, 378, 13, 289, 293, 295, 323, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 331, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 322, 332, 339, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 332, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 329, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 339, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 328, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 332, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 328, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 325, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 326, 327, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 325, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 338, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 329, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 339, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 340, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 325, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 338, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 340, 341, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 335, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 338, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 325, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 322, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 339, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 323, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 338, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 329, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 322, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 325, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 336, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 324, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 321, 382, 298, 299, 301, 302, 304, 313, 322, 346, 351, 378, 13, 289, 293, 295, 340, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 325, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 289, 293, 295, 382, 298, 299, 301, 302, 304, 313, 321, 346, 351, 378, 13, 545, 549, 551, 638, 554, 555, 557, 558, 560, 569, 577, 602, 607, 634, 9, 13, 32, 48, 57, 9, 13, 32, 48, 57, 9, 13, 32, 48, 57, 9, 13, 32, 48, 57, 9, 13, 32, 48, 57, 9, 13, 32, 48, 57, 9, 13, 32, 48, 57, 9, 13, 32, 48, 57, 9, 13, 32, 10, 9, 13, 32, 33, 37, 39, 67, 70, 73, 75, 76, 77, 80, 82, 83, 84, 86, 99, 102, 105, 107, 108, 109, 112, 114, 115, 116, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 127, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, -2, 31, 13, 46, 73, 105, 32, 33, 35, 37, 58, 61, 64, 95, 126, 36, 59, 63, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 59, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 32, 45, 46, 58, 63, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 32, 58, 63, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 32, 63, 32, 33, 37, 61, 95, 126, 36, 59, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 63, 48, 57, 32, 63, 48, 57, 32, 63, 48, 57, 32, 63, 48, 57, 32, 53, 63, 48, 52, 54, 57, 32, 53, 63, 48, 52, 54, 57, 32, 51, 63, 48, 50, 52, 57, 32, 63, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 32, 45, 46, 58, 63, 95, 48, 57, 65, 90, 97, 122, 32, 45, 46, 58, 63, 95, 48, 57, 65, 90, 97, 122, 32, 45, 46, 58, 63, 95, 48, 57, 65, 90, 97, 122, 32, 45, 46, 53, 58, 63, 95, 48, 52, 54, 57, 65, 90, 97, 122, 32, 45, 46, 58, 63, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 32, 58, 63, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 33, 37, 47, 61, 63, 64, 95, 126, 36, 57, 58, 59, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 33, 37, 61, 91, 95, 126, 36, 59, 63, 90, 97, 122, 32, 33, 35, 37, 47, 58, 61, 64, 95, 126, 36, 59, 63, 90, 97, 122, 32, 33, 35, 37, 58, 61, 64, 91, 95, 126, 36, 59, 63, 90, 97, 122, 32, 33, 35, 37, 58, 61, 64, 95, 126, 36, 59, 63, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 59, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 32, 45, 46, 47, 58, 63, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 32, 47, 58, 63, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 32, 47, 63, 32, 47, 63, 48, 57, 32, 47, 63, 48, 57, 32, 47, 63, 48, 57, 32, 47, 63, 48, 57, 32, 47, 53, 63, 48, 52, 54, 57, 32, 47, 53, 63, 48, 52, 54, 57, 32, 47, 51, 63, 48, 50, 52, 57, 32, 47, 63, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 32, 45, 46, 47, 58, 63, 95, 48, 57, 65, 90, 97, 122, 32, 45, 46, 47, 58, 63, 95, 48, 57, 65, 90, 97, 122, 32, 45, 46, 47, 58, 63, 95, 48, 57, 65, 90, 97, 122, 32, 45, 46, 47, 53, 58, 63, 95, 48, 52, 54, 57, 65, 90, 97, 122, 32, 45, 46, 47, 58, 63, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 32, 47, 58, 63, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 33, 37, 47, 61, 63, 64, 95, 126, 36, 57, 58, 59, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 33, 37, 61, 91, 95, 126, 36, 59, 63, 90, 97, 122, 43, 58, 73, 105, 45, 46, 48, 57, 65, 90, 97, 122, 43, 58, 80, 112, 45, 46, 48, 57, 65, 90, 97, 122, 43, 58, 83, 115, 45, 46, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 59, 61, 63, 91, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 58, 61, 64, 95, 126, 35, 59, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 61, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 32, 45, 46, 58, 59, 63, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 32, 58, 59, 63, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 32, 59, 63, 33, 37, 76, 79, 84, 93, 95, 108, 111, 116, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 61, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 33, 37, 59, 61, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 36, 37, 63, 93, 95, 126, 39, 43, 45, 58, 65, 91, 97, 122, 33, 36, 37, 61, 63, 93, 95, 126, 39, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 33, 37, 38, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 61, 63, 82, 93, 95, 114, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 61, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 39, 47, 58, 59, 61, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 59, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 32, 33, 37, 39, 59, 63, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 59, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 32, 33, 37, 59, 61, 63, 66, 86, 93, 95, 98, 118, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 61, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 61, 63, 73, 93, 95, 105, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 61, 63, 68, 93, 95, 100, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 61, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 39, 47, 58, 59, 61, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 59, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 32, 33, 37, 39, 59, 63, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 59, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 32, 33, 37, 59, 61, 63, 82, 93, 95, 114, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 61, 63, 65, 93, 95, 97, 126, 36, 43, 45, 58, 66, 91, 98, 122, 32, 33, 37, 59, 61, 63, 78, 93, 95, 110, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 61, 63, 83, 93, 95, 115, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 61, 63, 80, 93, 95, 112, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 61, 63, 79, 93, 95, 111, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 61, 63, 82, 93, 95, 114, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 61, 63, 84, 93, 95, 116, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 61, 63, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 39, 47, 58, 59, 61, 63, 83, 84, 85, 87, 91, 93, 96, 115, 116, 117, 119, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 59, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 32, 33, 37, 39, 59, 63, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 59, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 32, 33, 37, 39, 47, 58, 59, 63, 67, 91, 93, 96, 99, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 84, 91, 93, 96, 116, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 80, 91, 93, 96, 112, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 67, 76, 91, 93, 96, 99, 108, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 80, 91, 93, 96, 112, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 83, 91, 93, 96, 115, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 68, 91, 93, 96, 100, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 80, 91, 93, 96, 112, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 83, 91, 93, 96, 115, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 83, 91, 93, 96, 115, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 58, 59, 63, 91, 93, 96, 126, 36, 41, 42, 43, 45, 57, 65, 90, 95, 122, 32, 59, 63, 48, 57, 32, 59, 63, 48, 57, 32, 59, 63, 48, 57, 32, 59, 63, 48, 57, 32, 53, 59, 63, 48, 52, 54, 57, 32, 53, 59, 63, 48, 52, 54, 57, 32, 51, 59, 63, 48, 50, 52, 57, 32, 59, 63, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 32, 45, 46, 58, 59, 63, 95, 48, 57, 65, 90, 97, 122, 32, 45, 46, 58, 59, 63, 95, 48, 57, 65, 90, 97, 122, 32, 45, 46, 58, 59, 63, 95, 48, 57, 65, 90, 97, 122, 32, 45, 46, 53, 58, 59, 63, 95, 48, 52, 54, 57, 65, 90, 97, 122, 32, 45, 46, 58, 59, 63, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 32, 58, 59, 63, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 32, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 32, 33, 37, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 54, 61, 64, 95, 126, 36, 46, 49, 53, 55, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 46, 49, 57, 65, 90, 97, 122, 33, 37, 48, 61, 64, 95, 126, 36, 46, 49, 57, 65, 90, 97, 122, 32, 33, 37, 59, 61, 63, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 32, 33, 37, 59, 61, 63, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 32, 33, 37, 59, 61, 63, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 32, 33, 37, 59, 61, 63, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 32, 33, 37, 59, 61, 63, 64, 95, 126, 36, 46, 48, 57, 65, 90, 97, 122, 32, 33, 37, 53, 59, 61, 63, 64, 95, 126, 36, 46, 48, 52, 54, 57, 65, 90, 97, 122, 32, 33, 37, 53, 59, 61, 63, 64, 95, 126, 36, 46, 48, 52, 54, 57, 65, 90, 97, 122, 32, 33, 37, 51, 59, 61, 63, 64, 95, 126, 36, 46, 48, 50, 52, 57, 65, 90, 97, 122, 32, 33, 37, 59, 61, 63, 64, 95, 126, 36, 46, 48, 53, 54, 57, 65, 90, 97, 122, 33, 35, 37, 44, 58, 59, 61, 63, 64, 76, 79, 84, 91, 93, 95, 108, 111, 116, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 33, 37, 44, 47, 58, 59, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 33, 37, 44, 47, 58, 59, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 32, 33, 37, 44, 47, 58, 59, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 44, 47, 58, 61, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 36, 37, 44, 58, 59, 61, 64, 91, 93, 95, 126, 35, 38, 39, 57, 63, 90, 97, 122, 33, 36, 37, 44, 58, 59, 61, 64, 91, 93, 95, 126, 35, 38, 39, 57, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 44, 47, 58, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 33, 37, 38, 44, 47, 58, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 37, 38, 44, 47, 58, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 38, 44, 58, 59, 61, 64, 91, 93, 95, 126, 36, 57, 63, 90, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 33, 35, 37, 44, 58, 59, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 82, 91, 93, 95, 114, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 37, 39, 59, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 32, 33, 37, 39, 59, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 66, 86, 91, 93, 95, 98, 118, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 73, 91, 93, 95, 105, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 68, 91, 93, 95, 100, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 37, 39, 59, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 32, 33, 37, 39, 59, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 82, 91, 93, 95, 114, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 65, 91, 93, 95, 97, 126, 36, 57, 66, 90, 98, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 78, 91, 93, 95, 110, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 83, 91, 93, 95, 115, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 80, 91, 93, 95, 112, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 79, 91, 93, 95, 111, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 82, 91, 93, 95, 114, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 84, 91, 93, 95, 116, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 44, 58, 59, 61, 63, 64, 91, 93, 95, 126, 36, 57, 65, 90, 97, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 83, 84, 85, 87, 91, 93, 96, 115, 116, 117, 119, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 37, 39, 59, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 32, 33, 37, 39, 59, 63, 126, 42, 43, 45, 46, 48, 57, 65, 70, 71, 90, 95, 96, 97, 102, 103, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 67, 91, 93, 96, 99, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 84, 91, 93, 96, 116, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 80, 91, 93, 96, 112, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 67, 76, 91, 93, 96, 99, 108, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 80, 91, 93, 96, 112, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 83, 91, 93, 96, 115, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 68, 91, 93, 96, 100, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 80, 91, 93, 96, 112, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 83, 91, 93, 96, 115, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 83, 91, 93, 96, 115, 126, 36, 41, 42, 57, 65, 90, 95, 122, 32, 33, 35, 37, 39, 44, 47, 58, 59, 61, 63, 64, 91, 93, 96, 126, 36, 41, 42, 57, 65, 90, 95, 122, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 48, 49, 50, 58, 59, 61, 63, 64, 95, 126, 35, 47, 51, 57, 65, 90, 97, 122, 32, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 32, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 32, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 32, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 32, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 57, 65, 90, 97, 122, 33, 37, 45, 46, 53, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 52, 54, 57, 65, 90, 97, 122, 33, 37, 45, 46, 58, 59, 61, 63, 64, 95, 126, 35, 47, 48, 53, 54, 57, 65, 90, 97, 122, 43, 58, 45, 46, 48, 57, 65, 90, 97, 122, 43, 58, 69, 101, 45, 46, 48, 57, 65, 90, 97, 122, 43, 58, 76, 108, 45, 46, 48, 57, 65, 90, 97, 122, 43, 58, 45, 46, 48, 57, 65, 90, 97, 122, 35, 42, 43, 40, 41, 45, 46, 48, 57, 65, 70, 97, 102, 32, 35, 59, 40, 42, 45, 46, 48, 57, 65, 70, 97, 102, 45, 80, 112, 48, 57, 65, 90, 97, 122, 32, 45, 59, 61, 48, 57, 65, 90, 97, 122, 33, 37, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 32, 33, 37, 59, 93, 95, 126, 36, 43, 45, 58, 65, 91, 97, 122, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 45, 59, 61, 72, 104, 48, 57, 65, 90, 97, 122, 32, 45, 59, 61, 79, 111, 48, 57, 65, 90, 97, 122, 32, 45, 59, 61, 78, 110, 48, 57, 65, 90, 97, 122, 32, 45, 59, 61, 69, 101, 48, 57, 65, 90, 97, 122, 32, 45, 59, 61, 48, 57, 65, 90, 97, 122, 32, 45, 59, 61, 67, 99, 48, 57, 65, 90, 97, 122, 32, 45, 59, 61, 79, 111, 48, 57, 65, 90, 97, 122, 32, 45, 59, 61, 78, 110, 48, 57, 65, 90, 97, 122, 32, 45, 59, 61, 84, 116, 48, 57, 65, 90, 97, 122, 32, 45, 59, 61, 69, 101, 48, 57, 65, 90, 97, 122, 32, 45, 59, 61, 88, 120, 48, 57, 65, 90, 97, 122, 32, 45, 59, 61, 84, 116, 48, 57, 65, 90, 97, 122, 32, 45, 59, 61, 48, 57, 65, 90, 97, 122, 33, 37, 43, 58, 91, 93, 95, 126, 36, 42, 45, 47, 48, 57, 65, 90, 97, 122, 32, 33, 37, 47, 58, 59, 93, 95, 126, 36, 39, 40, 41, 42, 43, 45, 46, 48, 57, 65, 91, 97, 122, 32, 33, 37, 47, 58, 59, 93, 95, 126, 36, 39, 40, 41, 42, 43, 45, 57, 65, 91, 97, 122, 32, 33, 37, 45, 46, 47, 58, 59, 91, 93, 95, 126, 36, 43, 48, 57, 65, 90, 97, 122, 32, 33, 37, 45, 58, 59, 91, 93, 95, 126, 36, 43, 46, 47, 48, 57, 65, 90, 97, 122, 32, 33, 37, 58, 59, 91, 93, 95, 126, 36, 43, 45, 47, 48, 57, 65, 90, 97, 122, 32, 33, 37, 45, 46, 47, 58, 59, 91, 93, 95, 126, 36, 43, 48, 57, 65, 90, 97, 122, 32, 33, 37, 45, 58, 59, 91, 93, 95, 126, 36, 43, 46, 47, 48, 57, 65, 90, 97, 122, 32, 33, 37, 58, 59, 91, 93, 95, 126, 36, 43, 45, 47, 48, 57, 65, 90, 97, 122, 35, 42, 40, 41, 45, 46, 48, 57, 65, 70, 97, 102, 40, 41, 45, 46, 48, 57, 32, 59, 40, 41, 45, 46, 48, 57, 32, 33, 37, 39, 67, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 75, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 89, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 69, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 65, 126, 42, 43, 45, 46, 48, 57, 66, 90, 95, 122, 32, 33, 37, 39, 78, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 67, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 69, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 76, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 80, 112, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 47, 126, 42, 43, 45, 57, 65, 90, 95, 122, 48, 57, 46, 48, 57, 48, 57, 32, 48, 57, 49, 54, 48, 57, 48, 57, 32, 13, 13, 32, 46, 32, 33, 37, 39, 78, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 70, 86, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 79, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 73, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 84, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 69, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 69, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 83, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 83, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 65, 126, 42, 43, 45, 46, 48, 57, 66, 90, 95, 122, 32, 33, 37, 39, 71, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 69, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 79, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 84, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 73, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 70, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 89, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 80, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 84, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 73, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 79, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 78, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 83, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 82, 85, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 65, 126, 42, 43, 45, 46, 48, 57, 66, 90, 95, 122, 32, 33, 37, 39, 67, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 75, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 66, 76, 83, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 76, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 73, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 83, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 72, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 76, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 72, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 69, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 70, 71, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 69, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 82, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 73, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 83, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 84, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 69, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 82, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 73, 84, 85, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 79, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 82, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 69, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 66, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 83, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 67, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 82, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 73, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 66, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 69, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 80, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 68, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 65, 126, 42, 43, 45, 46, 48, 57, 66, 90, 95, 122, 32, 33, 37, 39, 84, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 69, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 0 }; static const char _sip_message_parser_single_lengths[] = { 0, 19, 1, 19, 1, 5, 4, 2, 11, 4, 2, 2, 2, 1, 0, 1, 0, 1, 1, 27, 1, 7, 3, 4, 2, 0, 0, 0, 0, 0, 1, 29, 13, 9, 9, 9, 9, 9, 7, 3, 5, 1, 2, 4, 4, 2, 3, 9, 9, 11, 9, 9, 7, 3, 12, 1, 29, 12, 1, 29, 5, 4, 4, 4, 5, 13, 11, 2, 2, 8, 2, 2, 6, 5, 4, 5, 2, 9, 4, 6, 4, 3, 3, 2, 5, 13, 13, 2, 2, 13, 12, 2, 2, 6, 6, 1, 29, 6, 12, 1, 29, 12, 9, 9, 1, 29, 9, 9, 3, 13, 1, 2, 13, 1, 2, 3, 4, 2, 10, 8, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 6, 2, 3, 2, 1, 1, 0, 2, 4, 1, 29, 4, 1, 29, 3, 9, 1, 2, 8, 9, 5, 1, 2, 4, 9, 1, 2, 8, 8, 4, 1, 2, 4, 0, 0, 0, 0, 0, 1, 2, 4, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 29, 7, 3, 7, 1, 29, 7, 8, 4, 1, 2, 3, 7, 1, 2, 6, 1, 29, 7, 3, 3, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 2, 2, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 7, 1, 2, 6, 8, 4, 1, 2, 3, 7, 1, 2, 6, 1, 29, 11, 9, 9, 9, 9, 9, 7, 3, 7, 1, 2, 6, 8, 4, 1, 2, 3, 7, 1, 2, 6, 1, 29, 9, 9, 9, 9, 9, 9, 9, 9, 9, 3, 13, 1, 2, 13, 1, 2, 3, 4, 2, 10, 8, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 6, 2, 3, 2, 1, 1, 0, 2, 4, 1, 29, 4, 1, 29, 3, 9, 1, 2, 8, 9, 5, 1, 2, 4, 9, 1, 2, 8, 8, 4, 1, 2, 4, 0, 0, 0, 0, 0, 1, 2, 4, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 29, 9, 3, 7, 1, 2, 6, 8, 4, 1, 2, 3, 7, 1, 2, 6, 8, 4, 1, 2, 3, 7, 1, 2, 6, 7, 7, 1, 2, 6, 3, 2, 3, 0, 9, 6, 1, 2, 5, 7, 1, 2, 6, 5, 1, 2, 4, 1, 1, 0, 5, 5, 1, 2, 4, 13, 1, 2, 12, 10, 6, 1, 2, 5, 9, 1, 2, 8, 9, 1, 29, 4, 0, 0, 0, 0, 0, 1, 2, 5, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 29, 12, 12, 12, 12, 10, 6, 1, 2, 5, 7, 1, 2, 6, 9, 1, 29, 12, 12, 12, 12, 12, 8, 4, 1, 2, 3, 8, 1, 2, 7, 9, 10, 10, 10, 10, 10, 10, 9, 14, 12, 12, 12, 12, 12, 12, 8, 4, 1, 2, 3, 7, 1, 2, 6, 2, 3, 1, 3, 1, 3, 5, 5, 5, 6, 5, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 1, 1, 1, 1, 5, 5, 5, 2, 2, 2, 3, 2, 2, 2, 5, 1, 8, 7, 6, 6, 6, 0, 7, 7, 7, 8, 7, 7, 7, 6, 8, 7, 6, 6, 6, 3, 7, 7, 7, 8, 7, 7, 7, 6, 8, 7, 6, 6, 6, 3, 7, 7, 7, 8, 7, 7, 7, 6, 8, 7, 6, 6, 6, 3, 7, 7, 7, 8, 7, 7, 7, 6, 8, 7, 6, 6, 6, 3, 7, 7, 7, 8, 7, 7, 7, 6, 2, 2, 2, 3, 2, 2, 2, 1, 8, 7, 6, 6, 6, 3, 7, 7, 7, 8, 7, 7, 7, 6, 1, 12, 12, 12, 10, 6, 1, 2, 5, 5, 1, 2, 4, 1, 1, 0, 5, 5, 5, 5, 5, 6, 6, 6, 5, 1, 29, 5, 5, 5, 5, 6, 6, 6, 5, 1, 29, 2, 6, 3, 3, 3, 3, 3, 9, 9, 9, 10, 9, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 6, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 9, 7, 11, 11, 9, 5, 1, 2, 4, 9, 1, 2, 8, 8, 1, 29, 5, 0, 0, 2, 2, 2, 2, 3, 3, 3, 2, 3, 3, 3, 3, 3, 6, 6, 6, 7, 6, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 3, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 8, 0, 0, 6, 9, 9, 8, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 7, 2, 4, 2, 1, 1, 0, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 7, 7, 7, 8, 7, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 4, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 8, 0, 0, 6, 4, 4, 4, 11, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 7, 2, 4, 2, 1, 1, 0, 3, 11, 9, 0, 0, 9, 8, 0, 0, 7, 8, 0, 0, 8, 0, 0, 5, 11, 9, 13, 12, 7, 7, 7, 13, 9, 11, 11, 9, 13, 12, 7, 7, 7, 11, 11, 11, 11, 11, 11, 11, 11, 9, 21, 12, 7, 7, 7, 14, 14, 14, 12, 16, 14, 12, 14, 12, 14, 14, 12, 14, 14, 12, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 7, 7, 7, 8, 7, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 4, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 11, 10, 11, 9, 12, 10, 10, 8, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 8, 19, 14, 0, 0, 14, 0, 0, 14, 14, 0, 0, 11, 14, 14, 0, 0, 12, 12, 0, 0, 13, 0, 0, 14, 0, 0, 13, 14, 0, 0, 13, 16, 14, 16, 16, 7, 7, 18, 14, 16, 16, 14, 16, 16, 7, 7, 16, 16, 16, 16, 16, 16, 16, 16, 14, 24, 16, 7, 7, 18, 18, 18, 16, 20, 18, 16, 18, 16, 18, 18, 16, 18, 18, 16, 12, 11, 12, 11, 12, 12, 12, 12, 13, 12, 11, 11, 12, 11, 11, 11, 12, 11, 11, 11, 12, 11, 2, 4, 4, 2, 3, 3, 3, 4, 5, 7, 0, 0, 6, 6, 6, 6, 4, 6, 6, 6, 6, 6, 6, 6, 4, 8, 9, 9, 12, 10, 9, 12, 10, 9, 2, 0, 2, 8, 8, 1, 2, 7, 4, 0, 0, 0, 0, 0, 1, 2, 4, 4, 0, 11, 14, 12, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 8, 2, 5, 2, 1, 1, 0, 4, 4, 4, 4, 4, 5, 5, 5, 4, 3, 3, 3, 3, 3, 8, 8, 8, 9, 8, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 5, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 12, 0, 0, 9, 0, 0, 10, 13, 13, 12, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 9, 2, 6, 2, 1, 1, 0, 5, 5, 5, 5, 5, 6, 6, 6, 5, 3, 3, 3, 3, 3, 9, 9, 9, 10, 9, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 6, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 12, 0, 0, 10, 13, 13, 13, 9, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 8, 2, 5, 2, 1, 1, 0, 4, 4, 4, 4, 4, 5, 5, 5, 4, 3, 3, 3, 3, 3, 8, 8, 8, 9, 8, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 5, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 10, 8, 10, 7, 14, 8, 11, 8, 7, 7, 7, 10, 10, 10, 10, 10, 11, 11, 11, 10, 10, 10, 10, 10, 10, 14, 14, 14, 15, 14, 10, 10, 11, 10, 10, 10, 11, 10, 10, 10, 11, 10, 11, 13, 13, 11, 3, 5, 2, 0, 4, 7, 9, 9, 9, 7, 3, 9, 1, 2, 9, 1, 2, 3, 2, 2, 2, 3, 11, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 7, 2, 4, 2, 1, 1, 0, 3, 11, 9, 0, 0, 9, 8, 0, 0, 5, 5, 1, 2, 4, 9, 1, 2, 9, 8, 8, 1, 2, 7, 4, 0, 0, 0, 0, 0, 1, 2, 4, 4, 0, 7, 1, 2, 6, 10, 6, 1, 2, 5, 9, 1, 2, 8, 9, 1, 29, 4, 0, 0, 0, 0, 0, 1, 2, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 29, 7, 8, 0, 0, 8, 0, 0, 5, 11, 9, 13, 12, 7, 7, 7, 13, 9, 11, 11, 9, 13, 12, 7, 7, 7, 11, 11, 11, 11, 11, 11, 11, 11, 9, 21, 12, 7, 7, 7, 14, 14, 14, 12, 16, 14, 12, 14, 12, 14, 14, 12, 14, 14, 12, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 7, 7, 7, 8, 7, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 4, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 11, 10, 11, 9, 12, 10, 10, 8, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 8, 19, 14, 0, 0, 14, 0, 0, 14, 14, 0, 0, 11, 14, 14, 0, 0, 12, 12, 0, 0, 13, 0, 0, 14, 0, 0, 13, 14, 0, 0, 13, 16, 14, 16, 16, 7, 7, 18, 14, 16, 16, 14, 16, 16, 7, 7, 16, 16, 16, 16, 16, 16, 16, 16, 14, 24, 16, 7, 7, 18, 18, 18, 16, 20, 18, 16, 18, 16, 18, 18, 16, 18, 18, 16, 12, 11, 12, 11, 12, 12, 12, 12, 13, 12, 11, 11, 12, 11, 11, 11, 12, 11, 11, 11, 12, 11, 1, 11, 11, 9, 5, 1, 2, 4, 9, 1, 2, 8, 8, 1, 29, 5, 0, 0, 2, 2, 2, 2, 3, 3, 3, 2, 3, 3, 3, 3, 3, 6, 6, 6, 7, 6, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 3, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 8, 0, 0, 6, 9, 9, 8, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 7, 2, 4, 2, 1, 1, 0, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 7, 7, 7, 8, 7, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 4, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 8, 0, 0, 6, 4, 4, 4, 11, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 7, 2, 4, 2, 1, 1, 0, 3, 11, 9, 0, 0, 9, 8, 0, 0, 7, 8, 0, 0, 8, 0, 0, 5, 11, 9, 13, 12, 7, 7, 7, 13, 9, 11, 11, 9, 13, 12, 7, 7, 7, 11, 11, 11, 11, 11, 11, 11, 11, 9, 21, 12, 7, 7, 7, 14, 14, 14, 12, 16, 14, 12, 14, 12, 14, 14, 12, 14, 14, 12, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 7, 7, 7, 8, 7, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 4, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 11, 10, 11, 9, 12, 10, 10, 8, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 8, 19, 14, 0, 0, 14, 0, 0, 14, 14, 0, 0, 11, 14, 14, 0, 0, 12, 12, 0, 0, 13, 0, 0, 14, 0, 0, 13, 14, 0, 0, 13, 16, 14, 16, 16, 7, 7, 18, 14, 16, 16, 14, 16, 16, 7, 7, 16, 16, 16, 16, 16, 16, 16, 16, 14, 24, 16, 7, 7, 18, 18, 18, 16, 20, 18, 16, 18, 16, 18, 18, 16, 18, 18, 16, 12, 11, 12, 11, 12, 12, 12, 12, 13, 12, 11, 11, 12, 11, 11, 11, 12, 11, 11, 11, 12, 11, 2, 4, 4, 2, 3, 3, 3, 4, 5, 7, 0, 0, 6, 6, 6, 6, 4, 6, 6, 6, 6, 6, 6, 6, 4, 8, 9, 9, 12, 10, 9, 12, 10, 9, 2, 0, 2, 8, 8, 1, 2, 7, 4, 0, 0, 0, 0, 0, 1, 2, 4, 4, 0, 11, 14, 12, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 8, 2, 5, 2, 1, 1, 0, 4, 4, 4, 4, 4, 5, 5, 5, 4, 3, 3, 3, 3, 3, 8, 8, 8, 9, 8, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 5, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 12, 0, 0, 9, 0, 0, 10, 13, 13, 12, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 9, 2, 6, 2, 1, 1, 0, 5, 5, 5, 5, 5, 6, 6, 6, 5, 3, 3, 3, 3, 3, 9, 9, 9, 10, 9, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 6, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 12, 0, 0, 10, 13, 13, 13, 9, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 8, 2, 5, 2, 1, 1, 0, 4, 4, 4, 4, 4, 5, 5, 5, 4, 3, 3, 3, 3, 3, 8, 8, 8, 9, 8, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 5, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 10, 8, 10, 7, 14, 8, 11, 8, 7, 7, 7, 10, 10, 10, 10, 10, 11, 11, 11, 10, 10, 10, 10, 10, 10, 14, 14, 14, 15, 14, 10, 10, 11, 10, 10, 10, 11, 10, 10, 10, 11, 10, 11, 13, 13, 11, 3, 5, 2, 0, 4, 9, 9, 7, 4, 0, 0, 0, 0, 0, 1, 29, 5, 5, 3, 4, 0, 0, 0, 0, 0, 1, 2, 4, 4, 1, 2, 3, 2, 2, 2, 3, 11, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 7, 2, 4, 2, 1, 1, 0, 3, 11, 9, 0, 0, 9, 8, 0, 0, 5, 5, 1, 2, 4, 11, 1, 2, 11, 8, 8, 1, 2, 7, 10, 10, 11, 9, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 9, 1, 29, 2, 6, 2, 1, 1, 0, 5, 9, 1, 2, 8, 10, 6, 1, 2, 5, 9, 1, 2, 8, 9, 4, 0, 0, 0, 0, 0, 1, 2, 5, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 29, 12, 12, 11, 12, 12, 10, 5, 5, 5, 5, 6, 6, 6, 5, 3, 3, 3, 3, 3, 9, 9, 9, 10, 9, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 6, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 10, 8, 10, 7, 14, 8, 12, 8, 7, 7, 7, 11, 11, 11, 11, 11, 12, 12, 12, 11, 10, 10, 10, 10, 10, 14, 14, 14, 15, 14, 10, 10, 11, 10, 10, 10, 11, 10, 10, 10, 11, 10, 9, 7, 8, 0, 0, 8, 0, 0, 5, 11, 9, 13, 12, 7, 7, 7, 13, 9, 11, 11, 9, 13, 12, 7, 7, 7, 11, 11, 11, 11, 11, 11, 11, 11, 9, 21, 12, 7, 7, 7, 14, 14, 14, 12, 16, 14, 12, 14, 12, 14, 14, 12, 14, 14, 12, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 7, 7, 7, 8, 7, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 4, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 11, 10, 11, 9, 12, 10, 10, 8, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 8, 19, 14, 0, 0, 14, 0, 0, 14, 14, 0, 0, 11, 14, 14, 0, 0, 12, 12, 0, 0, 13, 0, 0, 14, 0, 0, 13, 14, 0, 0, 13, 16, 14, 16, 16, 7, 7, 18, 14, 16, 16, 14, 16, 16, 7, 7, 16, 16, 16, 16, 16, 16, 16, 16, 14, 24, 16, 7, 7, 18, 18, 18, 16, 20, 18, 16, 18, 16, 18, 18, 16, 18, 18, 16, 12, 11, 12, 11, 12, 12, 12, 12, 13, 12, 11, 11, 12, 11, 11, 11, 12, 11, 11, 11, 12, 11, 1, 0, 11, 11, 12, 11, 9, 2, 2, 8, 2, 2, 6, 5, 4, 5, 2, 10, 4, 7, 4, 3, 3, 2, 6, 10, 1, 29, 10, 11, 7, 1, 29, 7, 10, 1, 29, 10, 10, 4, 0, 0, 0, 0, 0, 1, 29, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 4, 5, 3, 5, 3, 5, 3, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5, 4, 4, 4, 3, 3, 6, 5, 4, 4, 4, 2, 5, 5, 5, 6, 5, 5, 5, 4, 6, 5, 4, 4, 4, 5, 5, 5, 5, 6, 5, 5, 5, 4, 6, 5, 4, 4, 4, 5, 5, 5, 5, 6, 5, 5, 5, 4, 6, 5, 4, 4, 4, 5, 5, 5, 5, 6, 5, 5, 5, 4, 6, 5, 4, 4, 4, 5, 5, 5, 5, 6, 5, 5, 5, 4, 3, 6, 5, 4, 4, 4, 5, 5, 5, 5, 6, 5, 5, 5, 4, 13, 13, 12, 13, 13, 11, 6, 6, 6, 6, 7, 7, 7, 6, 5, 5, 5, 5, 5, 10, 10, 10, 11, 10, 5, 5, 6, 5, 5, 5, 6, 5, 5, 5, 6, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 4, 5, 3, 5, 3, 5, 3, 7, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5, 4, 4, 4, 3, 3, 6, 5, 4, 4, 4, 2, 5, 5, 5, 6, 5, 5, 5, 4, 6, 5, 4, 4, 4, 5, 5, 5, 5, 6, 5, 5, 5, 4, 6, 5, 4, 4, 4, 5, 5, 5, 5, 6, 5, 5, 5, 4, 6, 5, 4, 4, 4, 5, 5, 5, 5, 6, 5, 5, 5, 4, 6, 5, 4, 4, 4, 5, 5, 5, 5, 6, 5, 5, 5, 4, 3, 6, 5, 4, 4, 4, 5, 5, 5, 5, 6, 5, 5, 5, 4, 12, 10, 12, 9, 15, 10, 13, 10, 9, 9, 9, 12, 12, 12, 12, 12, 13, 13, 13, 12, 12, 12, 12, 12, 12, 15, 15, 15, 16, 15, 12, 12, 13, 12, 12, 12, 13, 12, 12, 12, 13, 12, 10, 9, 10, 2, 2, 10, 2, 2, 7, 13, 13, 15, 14, 9, 9, 9, 15, 13, 13, 13, 13, 15, 14, 9, 9, 9, 13, 13, 13, 13, 13, 13, 13, 13, 13, 23, 14, 9, 9, 9, 16, 16, 16, 14, 18, 16, 14, 16, 14, 16, 16, 14, 16, 16, 14, 5, 5, 5, 5, 6, 6, 6, 5, 5, 5, 5, 5, 5, 9, 9, 9, 10, 9, 5, 5, 6, 5, 5, 5, 6, 5, 5, 5, 6, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 6, 4, 5, 3, 5, 3, 5, 3, 6, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 5, 4, 4, 4, 3, 3, 6, 5, 4, 4, 4, 2, 5, 5, 5, 6, 5, 5, 5, 4, 6, 5, 4, 4, 4, 5, 5, 5, 5, 6, 5, 5, 5, 4, 6, 5, 4, 4, 4, 5, 5, 5, 5, 6, 5, 5, 5, 4, 6, 5, 4, 4, 4, 5, 5, 5, 5, 6, 5, 5, 5, 4, 6, 5, 4, 4, 4, 5, 5, 5, 5, 6, 5, 5, 5, 4, 3, 6, 5, 4, 4, 4, 5, 5, 5, 5, 6, 5, 5, 5, 4, 13, 12, 13, 11, 14, 12, 12, 10, 9, 9, 9, 10, 10, 10, 10, 10, 11, 11, 11, 10, 21, 18, 2, 2, 16, 2, 2, 16, 16, 2, 2, 13, 18, 18, 2, 2, 16, 16, 2, 2, 15, 2, 2, 16, 2, 2, 15, 16, 2, 2, 15, 18, 18, 18, 18, 9, 9, 20, 18, 18, 18, 18, 18, 18, 9, 9, 18, 18, 18, 18, 18, 18, 18, 18, 18, 26, 18, 9, 9, 20, 20, 20, 18, 22, 20, 18, 20, 18, 20, 20, 18, 20, 20, 18, 14, 13, 14, 13, 14, 14, 14, 14, 15, 14, 13, 13, 14, 13, 13, 13, 14, 13, 13, 13, 14, 13, 3, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 2, 2, 3, 22, 1, 2, 21, 5, 6, 6, 5, 6, 6, 5, 6, 6, 6, 6, 6, 5, 6, 7, 6, 5, 6, 6, 6, 5, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6, 6, 5, 7, 6, 6, 6, 5, 8, 6, 6, 6, 6, 5, 6, 5, 6, 5, 6, 7, 6, 6, 5, 6, 6, 6, 6, 6, 5, 7, 6, 6, 6, 5, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 29, 4, 1, 1, 2, 9, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 6, 2, 3, 2, 1, 1, 0, 2, 6, 0, 0, 2, 2, 2, 2, 3, 3, 3, 2, 3, 3, 3, 3, 3, 6, 6, 6, 7, 6, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 3, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 9, 0, 0, 7, 10, 10, 9, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 7, 2, 4, 2, 1, 1, 0, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 7, 7, 7, 8, 7, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 4, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 9, 0, 0, 7, 4, 4, 4, 11, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 7, 2, 4, 2, 1, 1, 0, 3, 11, 9, 0, 0, 9, 8, 0, 0, 7, 8, 0, 0, 8, 0, 0, 5, 11, 9, 13, 12, 7, 7, 7, 13, 9, 11, 11, 9, 13, 12, 7, 7, 7, 11, 11, 11, 11, 11, 11, 11, 11, 9, 21, 12, 7, 7, 7, 14, 14, 14, 12, 16, 14, 12, 14, 12, 14, 14, 12, 14, 14, 12, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 7, 7, 7, 8, 7, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 4, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 11, 10, 11, 9, 12, 10, 10, 8, 7, 7, 7, 9, 9, 9, 9, 9, 10, 10, 10, 9, 19, 14, 0, 0, 14, 0, 0, 14, 14, 0, 0, 11, 14, 14, 0, 0, 12, 12, 0, 0, 13, 0, 0, 14, 0, 0, 13, 14, 0, 0, 13, 16, 14, 16, 16, 7, 7, 18, 14, 16, 16, 14, 16, 16, 7, 7, 16, 16, 16, 16, 16, 16, 16, 16, 14, 24, 16, 7, 7, 18, 18, 18, 16, 20, 18, 16, 18, 16, 18, 18, 16, 18, 18, 16, 12, 11, 12, 11, 12, 12, 12, 12, 13, 12, 11, 11, 12, 11, 11, 11, 12, 11, 11, 11, 12, 11, 2, 4, 4, 2, 3, 3, 3, 4, 5, 7, 0, 0, 6, 6, 6, 6, 4, 6, 6, 6, 6, 6, 6, 6, 4, 8, 9, 9, 12, 10, 9, 12, 10, 9, 2, 0, 2, 6, 6, 5, 6, 6, 5, 6, 6, 6, 6, 6, 5, 7, 7, 7, 6, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 6, 7, 6, 5, 6, 6, 6, 5, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6, 6, 5, 7, 6, 6, 6, 5, 8, 6, 6, 6, 6, 5, 6, 5, 6, 5, 6, 7, 6, 6, 5, 6, 6, 6, 6, 6, 5, 9, 6, 6, 6, 5, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6, 5, 7, 0 }; static const char _sip_message_parser_range_lengths[] = { 0, 5, 0, 5, 0, 5, 2, 4, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 5, 0, 5, 0, 6, 7, 1, 1, 1, 1, 1, 0, 5, 5, 5, 5, 4, 5, 5, 5, 0, 7, 0, 0, 7, 6, 7, 7, 5, 5, 5, 5, 5, 5, 0, 11, 0, 5, 11, 0, 5, 6, 7, 7, 7, 7, 11, 9, 10, 10, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 8, 8, 8, 7, 11, 10, 10, 10, 10, 10, 10, 10, 6, 6, 0, 5, 6, 11, 0, 5, 11, 11, 11, 0, 5, 11, 5, 0, 6, 0, 0, 6, 0, 0, 0, 2, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 0, 0, 5, 0, 0, 5, 0, 5, 0, 0, 5, 5, 0, 0, 0, 0, 5, 0, 0, 5, 5, 0, 0, 0, 6, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 5, 5, 0, 5, 0, 5, 5, 4, 0, 0, 0, 0, 5, 0, 0, 5, 0, 5, 5, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 1, 0, 0, 1, 1, 1, 1, 0, 5, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 0, 5, 4, 0, 0, 0, 0, 5, 0, 0, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 0, 5, 4, 0, 0, 0, 0, 5, 0, 0, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 6, 0, 0, 6, 0, 0, 0, 2, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 0, 0, 5, 0, 0, 5, 0, 5, 0, 0, 5, 5, 0, 0, 0, 0, 5, 0, 0, 5, 5, 0, 0, 0, 6, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 5, 5, 0, 5, 0, 0, 5, 4, 0, 0, 0, 0, 5, 0, 0, 5, 4, 0, 0, 0, 0, 5, 0, 0, 5, 5, 3, 0, 0, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 5, 0, 0, 5, 2, 0, 0, 2, 1, 1, 1, 0, 0, 0, 0, 0, 5, 0, 0, 5, 4, 0, 0, 0, 0, 5, 0, 0, 5, 4, 0, 5, 6, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 5, 4, 4, 4, 4, 4, 0, 0, 0, 0, 5, 0, 0, 5, 4, 0, 5, 4, 4, 4, 4, 4, 5, 0, 0, 0, 0, 5, 0, 0, 5, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 0, 0, 0, 0, 3, 0, 0, 3, 3, 1, 0, 1, 0, 1, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 4, 4, 4, 4, 0, 0, 0, 0, 2, 0, 0, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 0, 5, 1, 1, 1, 1, 2, 2, 2, 1, 0, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 5, 5, 5, 5, 5, 0, 0, 0, 0, 5, 0, 0, 5, 5, 0, 5, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 3, 3, 4, 4, 4, 5, 5, 8, 5, 8, 4, 4, 4, 4, 4, 5, 5, 8, 5, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 8, 5, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 8, 8, 3, 3, 3, 3, 3, 4, 4, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 4, 4, 5, 5, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 7, 6, 4, 5, 5, 4, 5, 5, 5, 3, 3, 5, 5, 0, 0, 5, 6, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 5, 4, 4, 4, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 4, 3, 3, 4, 4, 4, 4, 4, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 4, 5, 5, 5, 5, 4, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 4, 5, 4, 5, 4, 5, 5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 5, 4, 5, 4, 5, 4, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 5, 5, 5, 5, 5, 0, 5, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 4, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 4, 4, 3, 3, 4, 4, 3, 3, 0, 0, 0, 0, 0, 5, 0, 0, 5, 5, 5, 0, 0, 5, 6, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 5, 0, 0, 5, 4, 0, 0, 0, 0, 5, 0, 0, 5, 4, 0, 5, 6, 1, 1, 1, 1, 1, 0, 0, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 5, 4, 4, 3, 3, 4, 3, 3, 4, 4, 4, 5, 5, 8, 5, 8, 4, 4, 4, 4, 4, 5, 5, 8, 5, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 8, 5, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 8, 8, 3, 3, 3, 3, 3, 4, 4, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 0, 5, 5, 5, 0, 0, 0, 0, 5, 0, 0, 5, 5, 0, 5, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 3, 3, 4, 4, 4, 5, 5, 8, 5, 8, 4, 4, 4, 4, 4, 5, 5, 8, 5, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 8, 5, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 8, 8, 3, 3, 3, 3, 3, 4, 4, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 4, 4, 5, 5, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 7, 6, 4, 5, 5, 4, 5, 5, 5, 3, 3, 5, 5, 0, 0, 5, 6, 1, 1, 1, 1, 1, 0, 0, 0, 0, 3, 5, 4, 4, 4, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 4, 3, 3, 4, 4, 4, 4, 4, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 4, 5, 5, 5, 5, 4, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 4, 5, 4, 5, 4, 5, 5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 5, 4, 5, 4, 5, 4, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 5, 5, 5, 8, 1, 1, 1, 1, 1, 0, 5, 6, 6, 9, 6, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 4, 4, 3, 3, 4, 4, 3, 3, 0, 0, 0, 0, 0, 5, 0, 0, 5, 5, 5, 0, 0, 5, 5, 5, 5, 5, 4, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 0, 5, 3, 3, 2, 1, 1, 1, 0, 5, 0, 0, 5, 4, 0, 0, 0, 0, 5, 0, 0, 5, 4, 6, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 5, 4, 4, 4, 4, 4, 4, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 4, 5, 4, 5, 4, 5, 4, 6, 5, 5, 5, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 4, 5, 4, 5, 4, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 5, 4, 4, 3, 3, 4, 3, 3, 4, 4, 4, 5, 5, 8, 5, 8, 4, 4, 4, 4, 4, 5, 5, 8, 5, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 8, 5, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 8, 8, 3, 3, 3, 3, 3, 4, 4, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 0, 3, 11, 11, 11, 12, 11, 10, 10, 12, 10, 10, 10, 10, 10, 10, 10, 9, 10, 9, 9, 8, 8, 8, 6, 11, 0, 5, 11, 10, 6, 0, 5, 6, 11, 0, 5, 11, 10, 8, 1, 1, 1, 1, 1, 0, 5, 6, 9, 10, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 8, 7, 8, 7, 8, 7, 8, 8, 9, 8, 8, 8, 9, 8, 8, 8, 9, 8, 10, 10, 7, 10, 10, 10, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 7, 7, 7, 7, 8, 8, 8, 7, 10, 10, 10, 10, 10, 9, 9, 9, 10, 10, 10, 10, 11, 11, 10, 10, 11, 11, 10, 10, 11, 11, 10, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 8, 7, 8, 7, 8, 7, 6, 8, 8, 9, 8, 8, 8, 9, 8, 8, 8, 9, 8, 10, 10, 7, 10, 10, 10, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 11, 12, 11, 12, 10, 12, 10, 13, 12, 12, 12, 10, 10, 10, 10, 10, 11, 11, 11, 11, 12, 11, 12, 11, 12, 10, 10, 10, 11, 11, 11, 11, 12, 12, 11, 11, 12, 12, 11, 11, 12, 12, 11, 11, 11, 10, 10, 11, 10, 10, 11, 11, 10, 12, 12, 15, 12, 15, 11, 10, 11, 11, 10, 12, 12, 15, 12, 15, 11, 11, 11, 11, 11, 11, 11, 11, 10, 12, 12, 15, 12, 15, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 8, 8, 8, 8, 9, 9, 9, 8, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 10, 10, 11, 11, 10, 10, 11, 11, 10, 10, 11, 11, 10, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 8, 7, 8, 7, 8, 7, 7, 8, 8, 9, 8, 8, 8, 9, 8, 8, 8, 9, 8, 10, 10, 7, 10, 10, 10, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 7, 10, 10, 10, 10, 7, 10, 10, 10, 10, 11, 11, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 12, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 10, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9, 11, 11, 15, 15, 10, 9, 10, 10, 9, 11, 11, 15, 15, 10, 10, 10, 10, 10, 10, 10, 10, 9, 11, 11, 15, 15, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 11, 11, 12, 12, 11, 11, 12, 12, 11, 11, 12, 12, 7, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 1, 0, 0, 1, 1, 10, 0, 0, 10, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 5, 6, 0, 0, 0, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 3, 3, 4, 4, 4, 5, 5, 8, 5, 8, 4, 4, 4, 4, 4, 5, 5, 8, 5, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 8, 5, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 8, 8, 3, 3, 3, 3, 3, 4, 4, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 4, 4, 5, 5, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 7, 6, 4, 5, 5, 4, 5, 5, 5, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0 }; static const int _sip_message_parser_index_offsets[] = { 0, 0, 25, 27, 52, 54, 65, 72, 79, 94, 99, 102, 105, 108, 110, 112, 115, 117, 120, 122, 155, 157, 170, 174, 185, 195, 197, 199, 201, 203, 205, 207, 242, 261, 276, 291, 305, 320, 335, 348, 352, 365, 367, 370, 382, 393, 403, 414, 429, 444, 461, 476, 491, 504, 508, 532, 534, 569, 593, 595, 630, 642, 654, 666, 678, 691, 716, 737, 750, 763, 783, 796, 809, 826, 842, 857, 873, 886, 906, 921, 938, 952, 964, 976, 987, 1000, 1025, 1049, 1062, 1075, 1099, 1122, 1135, 1148, 1161, 1174, 1176, 1211, 1224, 1248, 1250, 1285, 1309, 1330, 1351, 1353, 1388, 1409, 1424, 1428, 1448, 1450, 1453, 1473, 1475, 1478, 1482, 1489, 1496, 1510, 1522, 1533, 1537, 1541, 1552, 1556, 1560, 1568, 1575, 1581, 1588, 1592, 1602, 1608, 1615, 1620, 1623, 1626, 1628, 1631, 1636, 1638, 1673, 1678, 1680, 1715, 1719, 1734, 1736, 1739, 1753, 1768, 1774, 1776, 1779, 1784, 1799, 1801, 1804, 1818, 1832, 1837, 1839, 1842, 1853, 1855, 1857, 1859, 1861, 1863, 1865, 1868, 1873, 1877, 1882, 1887, 1892, 1897, 1899, 1904, 1909, 1914, 1919, 1921, 1926, 1931, 1936, 1941, 1943, 1948, 1953, 1958, 1963, 1965, 1970, 1975, 1980, 1985, 1987, 1992, 1997, 2002, 2007, 2009, 2017, 2023, 2028, 2030, 2035, 2037, 2042, 2044, 2047, 2050, 2055, 2058, 2061, 2064, 2069, 2072, 2075, 2078, 2083, 2086, 2091, 2096, 2098, 2103, 2108, 2113, 2118, 2124, 2130, 2136, 2144, 2151, 2157, 2163, 2168, 2173, 2181, 2188, 2194, 2200, 2203, 2207, 2214, 2221, 2228, 2237, 2245, 2252, 2259, 2265, 2273, 2280, 2286, 2292, 2295, 2302, 2309, 2316, 2323, 2332, 2340, 2347, 2354, 2360, 2368, 2375, 2381, 2387, 2390, 2397, 2404, 2411, 2418, 2427, 2435, 2442, 2449, 2455, 2463, 2470, 2476, 2482, 2485, 2492, 2499, 2506, 2513, 2522, 2530, 2537, 2544, 2550, 2558, 2565, 2571, 2577, 2580, 2587, 2594, 2601, 2608, 2617, 2625, 2632, 2639, 2645, 2647, 2655, 2662, 2668, 2674, 2677, 2684, 2691, 2698, 2705, 2714, 2722, 2729, 2736, 2742, 2744, 2779, 2792, 2796, 2809, 2811, 2846, 2859, 2872, 2877, 2879, 2882, 2886, 2899, 2901, 2904, 2916, 2918, 2953, 2966, 2970, 2975, 2977, 2980, 2984, 2987, 2990, 2993, 2996, 2999, 3002, 3005, 3008, 3010, 3025, 3040, 3054, 3069, 3084, 3099, 3114, 3129, 3144, 3159, 3174, 3187, 3191, 3196, 3198, 3201, 3205, 3208, 3211, 3214, 3216, 3231, 3246, 3261, 3276, 3290, 3305, 3320, 3335, 3350, 3365, 3380, 3395, 3408, 3412, 3425, 3427, 3430, 3442, 3455, 3460, 3462, 3465, 3469, 3482, 3484, 3487, 3499, 3501, 3536, 3553, 3568, 3583, 3598, 3613, 3628, 3641, 3645, 3658, 3660, 3663, 3675, 3688, 3693, 3695, 3698, 3702, 3715, 3717, 3720, 3732, 3734, 3769, 3784, 3799, 3814, 3829, 3844, 3859, 3874, 3889, 3904, 3908, 3928, 3930, 3933, 3953, 3955, 3958, 3962, 3969, 3976, 3990, 4002, 4013, 4017, 4021, 4032, 4036, 4040, 4048, 4055, 4061, 4068, 4072, 4082, 4088, 4095, 4100, 4103, 4106, 4108, 4111, 4116, 4118, 4153, 4158, 4160, 4195, 4199, 4214, 4216, 4219, 4233, 4248, 4254, 4256, 4259, 4264, 4279, 4281, 4284, 4298, 4312, 4317, 4319, 4322, 4333, 4335, 4337, 4339, 4341, 4343, 4345, 4348, 4353, 4357, 4362, 4367, 4372, 4377, 4379, 4384, 4389, 4394, 4399, 4401, 4406, 4411, 4416, 4421, 4423, 4428, 4433, 4438, 4443, 4445, 4450, 4455, 4460, 4465, 4467, 4472, 4477, 4482, 4487, 4489, 4497, 4503, 4508, 4510, 4515, 4517, 4522, 4524, 4527, 4530, 4535, 4538, 4541, 4544, 4549, 4552, 4555, 4558, 4563, 4566, 4571, 4576, 4578, 4583, 4588, 4593, 4598, 4604, 4610, 4616, 4624, 4631, 4637, 4643, 4648, 4653, 4661, 4668, 4674, 4680, 4683, 4687, 4694, 4701, 4708, 4717, 4725, 4732, 4739, 4745, 4753, 4760, 4766, 4772, 4775, 4782, 4789, 4796, 4803, 4812, 4820, 4827, 4834, 4840, 4848, 4855, 4861, 4867, 4870, 4877, 4884, 4891, 4898, 4907, 4915, 4922, 4929, 4935, 4943, 4950, 4956, 4962, 4965, 4972, 4979, 4986, 4993, 5002, 5010, 5017, 5024, 5030, 5038, 5045, 5051, 5057, 5060, 5067, 5074, 5081, 5088, 5097, 5105, 5112, 5119, 5125, 5127, 5135, 5142, 5148, 5154, 5157, 5164, 5171, 5178, 5185, 5194, 5202, 5209, 5216, 5222, 5224, 5259, 5274, 5278, 5291, 5293, 5296, 5308, 5321, 5326, 5328, 5331, 5335, 5348, 5350, 5353, 5365, 5378, 5383, 5385, 5388, 5392, 5405, 5407, 5410, 5422, 5435, 5446, 5448, 5451, 5461, 5468, 5474, 5481, 5485, 5498, 5505, 5507, 5510, 5516, 5529, 5531, 5534, 5546, 5554, 5556, 5559, 5566, 5569, 5572, 5574, 5580, 5586, 5588, 5591, 5596, 5615, 5617, 5620, 5638, 5653, 5660, 5662, 5665, 5671, 5686, 5688, 5691, 5705, 5719, 5721, 5756, 5767, 5769, 5771, 5773, 5775, 5777, 5779, 5782, 5788, 5792, 5797, 5802, 5807, 5812, 5814, 5819, 5824, 5829, 5834, 5836, 5841, 5846, 5851, 5856, 5858, 5863, 5868, 5873, 5878, 5880, 5885, 5890, 5895, 5900, 5902, 5907, 5912, 5917, 5922, 5924, 5932, 5938, 5943, 5945, 5950, 5952, 5957, 5959, 5962, 5965, 5970, 5973, 5976, 5979, 5984, 5987, 5990, 5993, 5998, 6001, 6006, 6011, 6013, 6018, 6023, 6028, 6033, 6039, 6045, 6051, 6059, 6066, 6072, 6078, 6083, 6088, 6096, 6103, 6109, 6115, 6118, 6122, 6129, 6136, 6143, 6152, 6160, 6167, 6174, 6180, 6188, 6195, 6201, 6207, 6210, 6217, 6224, 6231, 6238, 6247, 6255, 6262, 6269, 6275, 6283, 6290, 6296, 6302, 6305, 6312, 6319, 6326, 6333, 6342, 6350, 6357, 6364, 6370, 6378, 6385, 6391, 6397, 6400, 6407, 6414, 6421, 6428, 6437, 6445, 6452, 6459, 6465, 6473, 6480, 6486, 6492, 6495, 6502, 6509, 6516, 6523, 6532, 6540, 6547, 6554, 6560, 6562, 6570, 6577, 6583, 6589, 6592, 6599, 6606, 6613, 6620, 6629, 6637, 6644, 6651, 6657, 6659, 6694, 6711, 6728, 6745, 6762, 6777, 6784, 6786, 6789, 6795, 6808, 6810, 6813, 6825, 6839, 6841, 6876, 6893, 6910, 6927, 6944, 6961, 6975, 6980, 6982, 6985, 6989, 7003, 7005, 7008, 7021, 7035, 7050, 7065, 7080, 7095, 7110, 7125, 7139, 7158, 7175, 7192, 7209, 7226, 7243, 7260, 7274, 7279, 7281, 7284, 7288, 7299, 7301, 7304, 7314, 7320, 7325, 7327, 7332, 7334, 7339, 7345, 7352, 7359, 7368, 7375, 7378, 7381, 7386, 7389, 7392, 7395, 7400, 7403, 7408, 7413, 7415, 7420, 7425, 7430, 7435, 7437, 7442, 7447, 7452, 7457, 7459, 7464, 7469, 7474, 7479, 7481, 7486, 7491, 7496, 7501, 7503, 7508, 7513, 7518, 7523, 7525, 7533, 7539, 7544, 7549, 7551, 7556, 7565, 7574, 7583, 7589, 7595, 7601, 7609, 7616, 7622, 7628, 7637, 7642, 7654, 7665, 7675, 7685, 7692, 7696, 7707, 7718, 7729, 7742, 7754, 7765, 7776, 7786, 7798, 7809, 7819, 7829, 7836, 7843, 7854, 7865, 7876, 7889, 7901, 7912, 7923, 7933, 7945, 7956, 7966, 7976, 7983, 7990, 8001, 8012, 8023, 8036, 8048, 8059, 8070, 8080, 8092, 8103, 8113, 8123, 8130, 8137, 8148, 8159, 8170, 8183, 8195, 8206, 8217, 8227, 8239, 8250, 8260, 8270, 8277, 8284, 8295, 8306, 8317, 8330, 8342, 8353, 8364, 8374, 8380, 8386, 8392, 8400, 8407, 8413, 8419, 8421, 8433, 8444, 8454, 8464, 8471, 8478, 8489, 8500, 8511, 8524, 8536, 8547, 8558, 8568, 8573, 8590, 8607, 8624, 8639, 8646, 8648, 8651, 8657, 8665, 8667, 8670, 8677, 8680, 8683, 8685, 8691, 8698, 8705, 8712, 8719, 8728, 8737, 8746, 8753, 8755, 8790, 8797, 8804, 8811, 8818, 8827, 8836, 8845, 8852, 8854, 8889, 8895, 8905, 8912, 8919, 8926, 8933, 8940, 8953, 8966, 8979, 8994, 9008, 9015, 9022, 9031, 9039, 9046, 9053, 9062, 9070, 9077, 9084, 9093, 9101, 9106, 9111, 9116, 9121, 9123, 9128, 9133, 9138, 9143, 9145, 9150, 9155, 9160, 9165, 9167, 9172, 9177, 9182, 9187, 9189, 9194, 9199, 9204, 9209, 9211, 9216, 9221, 9226, 9231, 9233, 9241, 9247, 9252, 9254, 9259, 9261, 9266, 9268, 9275, 9278, 9281, 9286, 9289, 9292, 9295, 9300, 9303, 9306, 9309, 9314, 9317, 9322, 9327, 9329, 9334, 9339, 9344, 9349, 9355, 9361, 9367, 9375, 9382, 9388, 9394, 9399, 9404, 9412, 9419, 9425, 9431, 9434, 9438, 9445, 9452, 9459, 9468, 9476, 9483, 9490, 9496, 9504, 9511, 9517, 9523, 9526, 9533, 9540, 9547, 9554, 9563, 9571, 9578, 9585, 9591, 9599, 9606, 9612, 9618, 9621, 9628, 9635, 9642, 9649, 9658, 9666, 9673, 9680, 9686, 9694, 9701, 9707, 9713, 9716, 9723, 9730, 9737, 9744, 9753, 9761, 9768, 9775, 9781, 9789, 9796, 9802, 9808, 9811, 9818, 9825, 9832, 9839, 9848, 9856, 9863, 9870, 9876, 9878, 9886, 9893, 9899, 9905, 9908, 9915, 9922, 9929, 9936, 9945, 9953, 9960, 9967, 9973, 9988, 10001, 10018, 10035, 10050, 10056, 10058, 10061, 10066, 10081, 10083, 10086, 10100, 10114, 10116, 10151, 10160, 10164, 10168, 10172, 10176, 10180, 10184, 10190, 10196, 10202, 10206, 10213, 10220, 10227, 10234, 10241, 10251, 10261, 10271, 10283, 10294, 10301, 10308, 10317, 10325, 10332, 10339, 10348, 10356, 10363, 10370, 10379, 10387, 10392, 10397, 10402, 10407, 10409, 10414, 10419, 10424, 10429, 10431, 10436, 10441, 10446, 10451, 10453, 10458, 10463, 10468, 10473, 10475, 10480, 10485, 10490, 10495, 10497, 10502, 10507, 10512, 10517, 10519, 10527, 10533, 10538, 10540, 10545, 10547, 10552, 10554, 10558, 10561, 10564, 10569, 10572, 10575, 10578, 10583, 10586, 10589, 10592, 10597, 10600, 10605, 10610, 10612, 10617, 10622, 10627, 10632, 10638, 10644, 10650, 10658, 10665, 10671, 10677, 10682, 10687, 10695, 10702, 10708, 10714, 10717, 10721, 10728, 10735, 10742, 10751, 10759, 10766, 10773, 10779, 10787, 10794, 10800, 10806, 10809, 10816, 10823, 10830, 10837, 10846, 10854, 10861, 10868, 10874, 10882, 10889, 10895, 10901, 10904, 10911, 10918, 10925, 10932, 10941, 10949, 10956, 10963, 10969, 10977, 10984, 10990, 10996, 10999, 11006, 11013, 11020, 11027, 11036, 11044, 11051, 11058, 11064, 11072, 11079, 11085, 11091, 11094, 11101, 11108, 11115, 11122, 11131, 11139, 11146, 11153, 11159, 11161, 11169, 11176, 11182, 11188, 11191, 11198, 11205, 11212, 11219, 11228, 11236, 11243, 11250, 11256, 11260, 11264, 11277, 11281, 11285, 11295, 11308, 11321, 11333, 11344, 11348, 11352, 11363, 11367, 11371, 11379, 11386, 11392, 11399, 11403, 11414, 11420, 11428, 11433, 11436, 11439, 11441, 11445, 11450, 11455, 11460, 11465, 11472, 11479, 11486, 11491, 11498, 11505, 11512, 11519, 11526, 11537, 11548, 11559, 11572, 11584, 11591, 11598, 11607, 11615, 11622, 11629, 11638, 11646, 11653, 11660, 11669, 11677, 11682, 11687, 11692, 11697, 11699, 11704, 11709, 11714, 11719, 11721, 11726, 11731, 11736, 11741, 11743, 11748, 11753, 11758, 11763, 11765, 11770, 11775, 11780, 11785, 11787, 11792, 11797, 11802, 11807, 11809, 11817, 11823, 11828, 11830, 11835, 11837, 11842, 11844, 11849, 11852, 11855, 11860, 11863, 11866, 11869, 11874, 11877, 11880, 11883, 11888, 11891, 11896, 11901, 11903, 11908, 11913, 11918, 11923, 11929, 11935, 11941, 11949, 11956, 11962, 11968, 11973, 11978, 11986, 11993, 11999, 12005, 12008, 12012, 12019, 12026, 12033, 12042, 12050, 12057, 12064, 12070, 12078, 12085, 12091, 12097, 12100, 12107, 12114, 12121, 12128, 12137, 12145, 12152, 12159, 12165, 12173, 12180, 12186, 12192, 12195, 12202, 12209, 12216, 12223, 12232, 12240, 12247, 12254, 12260, 12268, 12275, 12281, 12287, 12290, 12297, 12304, 12311, 12318, 12327, 12335, 12342, 12349, 12355, 12363, 12370, 12376, 12382, 12385, 12392, 12399, 12406, 12413, 12422, 12430, 12437, 12444, 12450, 12452, 12460, 12467, 12473, 12479, 12482, 12489, 12496, 12503, 12510, 12519, 12527, 12534, 12541, 12547, 12551, 12555, 12568, 12572, 12576, 12586, 12595, 12604, 12613, 12629, 12640, 12644, 12648, 12659, 12663, 12667, 12675, 12682, 12688, 12695, 12699, 12710, 12716, 12724, 12729, 12732, 12735, 12737, 12741, 12757, 12771, 12775, 12779, 12793, 12806, 12810, 12814, 12826, 12839, 12843, 12847, 12860, 12864, 12868, 12878, 12894, 12908, 12927, 12945, 12961, 12974, 12990, 13008, 13022, 13038, 13054, 13068, 13087, 13105, 13121, 13134, 13150, 13166, 13182, 13198, 13214, 13230, 13246, 13262, 13278, 13292, 13319, 13337, 13353, 13366, 13382, 13402, 13422, 13442, 13460, 13482, 13502, 13520, 13540, 13558, 13578, 13598, 13616, 13636, 13656, 13674, 13679, 13684, 13689, 13694, 13701, 13708, 13715, 13720, 13727, 13734, 13741, 13748, 13755, 13766, 13777, 13788, 13801, 13813, 13820, 13827, 13836, 13844, 13851, 13858, 13867, 13875, 13882, 13889, 13898, 13906, 13911, 13916, 13921, 13926, 13928, 13933, 13938, 13943, 13948, 13950, 13955, 13960, 13965, 13970, 13972, 13977, 13982, 13987, 13992, 13994, 13999, 14004, 14009, 14014, 14016, 14021, 14026, 14031, 14036, 14038, 14046, 14052, 14057, 14059, 14064, 14066, 14071, 14073, 14078, 14081, 14084, 14089, 14092, 14095, 14098, 14103, 14106, 14109, 14112, 14117, 14120, 14125, 14130, 14132, 14137, 14142, 14147, 14152, 14158, 14164, 14170, 14178, 14185, 14191, 14197, 14202, 14207, 14215, 14222, 14228, 14234, 14237, 14241, 14248, 14255, 14262, 14271, 14279, 14286, 14293, 14299, 14307, 14314, 14320, 14326, 14329, 14336, 14343, 14350, 14357, 14366, 14374, 14381, 14388, 14394, 14402, 14409, 14415, 14421, 14424, 14431, 14438, 14445, 14452, 14461, 14469, 14476, 14483, 14489, 14497, 14504, 14510, 14516, 14519, 14526, 14533, 14540, 14547, 14556, 14564, 14571, 14578, 14584, 14592, 14599, 14605, 14611, 14614, 14621, 14628, 14635, 14642, 14651, 14659, 14666, 14673, 14679, 14681, 14689, 14696, 14702, 14708, 14711, 14718, 14725, 14732, 14739, 14748, 14756, 14763, 14770, 14776, 14792, 14807, 14823, 14837, 14854, 14869, 14884, 14898, 14910, 14922, 14934, 14947, 14960, 14973, 14986, 14999, 15014, 15029, 15044, 15058, 15081, 15099, 15103, 15107, 15125, 15129, 15133, 15151, 15169, 15173, 15177, 15192, 15210, 15228, 15232, 15236, 15253, 15270, 15274, 15278, 15295, 15299, 15303, 15321, 15325, 15329, 15346, 15364, 15368, 15372, 15389, 15409, 15427, 15448, 15469, 15485, 15501, 15523, 15541, 15561, 15581, 15599, 15620, 15641, 15657, 15673, 15693, 15713, 15733, 15753, 15773, 15793, 15813, 15833, 15851, 15880, 15901, 15917, 15933, 15956, 15979, 16002, 16023, 16048, 16071, 16092, 16115, 16136, 16159, 16182, 16203, 16226, 16249, 16270, 16287, 16303, 16320, 16336, 16353, 16370, 16387, 16404, 16423, 16441, 16457, 16473, 16491, 16508, 16524, 16540, 16558, 16575, 16591, 16607, 16625, 16642, 16649, 16658, 16667, 16674, 16683, 16692, 16699, 16707, 16717, 16729, 16733, 16737, 16747, 16757, 16767, 16777, 16785, 16795, 16805, 16815, 16825, 16835, 16845, 16855, 16863, 16877, 16894, 16910, 16927, 16943, 16958, 16975, 16991, 17006, 17014, 17018, 17024, 17038, 17052, 17054, 17057, 17070, 17081, 17083, 17085, 17087, 17089, 17091, 17093, 17096, 17101, 17106, 17110, 17127, 17146, 17163, 17175, 17179, 17183, 17195, 17199, 17203, 17211, 17218, 17224, 17231, 17235, 17247, 17253, 17262, 17267, 17270, 17273, 17275, 17280, 17286, 17292, 17298, 17304, 17312, 17320, 17328, 17334, 17341, 17348, 17355, 17362, 17369, 17381, 17393, 17405, 17419, 17432, 17439, 17446, 17455, 17463, 17470, 17477, 17486, 17494, 17501, 17508, 17517, 17525, 17530, 17535, 17540, 17545, 17547, 17552, 17557, 17562, 17567, 17569, 17574, 17579, 17584, 17589, 17591, 17596, 17601, 17606, 17611, 17613, 17618, 17623, 17628, 17633, 17635, 17640, 17645, 17650, 17655, 17657, 17665, 17671, 17676, 17678, 17683, 17685, 17690, 17692, 17698, 17701, 17704, 17709, 17712, 17715, 17718, 17723, 17726, 17729, 17732, 17737, 17740, 17745, 17750, 17752, 17757, 17762, 17767, 17772, 17778, 17784, 17790, 17798, 17805, 17811, 17817, 17822, 17827, 17835, 17842, 17848, 17854, 17857, 17861, 17868, 17875, 17882, 17891, 17899, 17906, 17913, 17919, 17927, 17934, 17940, 17946, 17949, 17956, 17963, 17970, 17977, 17986, 17994, 18001, 18008, 18014, 18022, 18029, 18035, 18041, 18044, 18051, 18058, 18065, 18072, 18081, 18089, 18096, 18103, 18109, 18117, 18124, 18130, 18136, 18139, 18146, 18153, 18160, 18167, 18176, 18184, 18191, 18198, 18204, 18212, 18219, 18225, 18231, 18234, 18241, 18248, 18255, 18262, 18271, 18279, 18286, 18293, 18299, 18301, 18309, 18316, 18322, 18328, 18331, 18338, 18345, 18352, 18359, 18368, 18376, 18383, 18390, 18396, 18400, 18404, 18421, 18425, 18429, 18443, 18447, 18451, 18466, 18484, 18502, 18519, 18531, 18535, 18539, 18551, 18555, 18559, 18567, 18574, 18580, 18587, 18591, 18604, 18610, 18620, 18625, 18628, 18631, 18633, 18639, 18646, 18653, 18660, 18667, 18676, 18685, 18694, 18701, 18708, 18715, 18722, 18729, 18736, 18749, 18762, 18775, 18790, 18804, 18811, 18818, 18827, 18835, 18842, 18849, 18858, 18866, 18873, 18880, 18889, 18897, 18902, 18907, 18912, 18917, 18919, 18924, 18929, 18934, 18939, 18941, 18946, 18951, 18956, 18961, 18963, 18968, 18973, 18978, 18983, 18985, 18990, 18995, 19000, 19005, 19007, 19012, 19017, 19022, 19027, 19029, 19037, 19043, 19048, 19050, 19055, 19057, 19062, 19064, 19071, 19074, 19077, 19082, 19085, 19088, 19091, 19096, 19099, 19102, 19105, 19110, 19113, 19118, 19123, 19125, 19130, 19135, 19140, 19145, 19151, 19157, 19163, 19171, 19178, 19184, 19190, 19195, 19200, 19208, 19215, 19221, 19227, 19230, 19234, 19241, 19248, 19255, 19264, 19272, 19279, 19286, 19292, 19300, 19307, 19313, 19319, 19322, 19329, 19336, 19343, 19350, 19359, 19367, 19374, 19381, 19387, 19395, 19402, 19408, 19414, 19417, 19424, 19431, 19438, 19445, 19454, 19462, 19469, 19476, 19482, 19490, 19497, 19503, 19509, 19512, 19519, 19526, 19533, 19540, 19549, 19557, 19564, 19571, 19577, 19585, 19592, 19598, 19604, 19607, 19614, 19621, 19628, 19635, 19644, 19652, 19659, 19666, 19672, 19674, 19682, 19689, 19695, 19701, 19704, 19711, 19718, 19725, 19732, 19741, 19749, 19756, 19763, 19769, 19773, 19777, 19794, 19798, 19802, 19817, 19836, 19855, 19874, 19889, 19901, 19905, 19909, 19921, 19925, 19929, 19937, 19944, 19950, 19957, 19961, 19973, 19979, 19988, 19993, 19996, 19999, 20001, 20006, 20012, 20018, 20024, 20030, 20038, 20046, 20054, 20060, 20067, 20074, 20081, 20088, 20095, 20107, 20119, 20131, 20145, 20158, 20165, 20172, 20181, 20189, 20196, 20203, 20212, 20220, 20227, 20234, 20243, 20251, 20256, 20261, 20266, 20271, 20273, 20278, 20283, 20288, 20293, 20295, 20300, 20305, 20310, 20315, 20317, 20322, 20327, 20332, 20337, 20339, 20344, 20349, 20354, 20359, 20361, 20366, 20371, 20376, 20381, 20383, 20391, 20397, 20402, 20404, 20409, 20411, 20416, 20418, 20424, 20427, 20430, 20435, 20438, 20441, 20444, 20449, 20452, 20455, 20458, 20463, 20466, 20471, 20476, 20478, 20483, 20488, 20493, 20498, 20504, 20510, 20516, 20524, 20531, 20537, 20543, 20548, 20553, 20561, 20568, 20574, 20580, 20583, 20587, 20594, 20601, 20608, 20617, 20625, 20632, 20639, 20645, 20653, 20660, 20666, 20672, 20675, 20682, 20689, 20696, 20703, 20712, 20720, 20727, 20734, 20740, 20748, 20755, 20761, 20767, 20770, 20777, 20784, 20791, 20798, 20807, 20815, 20822, 20829, 20835, 20843, 20850, 20856, 20862, 20865, 20872, 20879, 20886, 20893, 20902, 20910, 20917, 20924, 20930, 20938, 20945, 20951, 20957, 20960, 20967, 20974, 20981, 20988, 20997, 21005, 21012, 21019, 21025, 21027, 21035, 21042, 21048, 21054, 21057, 21064, 21071, 21078, 21085, 21094, 21102, 21109, 21116, 21122, 21137, 21151, 21166, 21179, 21198, 21212, 21229, 21244, 21257, 21270, 21283, 21299, 21315, 21331, 21347, 21363, 21381, 21399, 21417, 21434, 21450, 21465, 21481, 21496, 21512, 21531, 21550, 21569, 21590, 21610, 21625, 21640, 21657, 21673, 21688, 21703, 21720, 21736, 21751, 21766, 21783, 21799, 21816, 21835, 21854, 21871, 21880, 21891, 21899, 21903, 21911, 21924, 21939, 21954, 21969, 21982, 21986, 22001, 22003, 22006, 22021, 22023, 22026, 22030, 22033, 22036, 22039, 22043, 22059, 22070, 22074, 22078, 22089, 22093, 22097, 22105, 22112, 22118, 22125, 22129, 22140, 22146, 22154, 22159, 22162, 22165, 22167, 22171, 22187, 22201, 22205, 22209, 22223, 22236, 22240, 22244, 22250, 22256, 22258, 22261, 22266, 22281, 22283, 22286, 22301, 22315, 22329, 22331, 22334, 22347, 22358, 22360, 22362, 22364, 22366, 22368, 22370, 22373, 22378, 22383, 22387, 22400, 22402, 22405, 22417, 22432, 22439, 22441, 22444, 22450, 22465, 22467, 22470, 22484, 22498, 22500, 22535, 22546, 22548, 22550, 22552, 22554, 22556, 22558, 22561, 22565, 22570, 22575, 22580, 22585, 22587, 22592, 22597, 22602, 22607, 22609, 22614, 22619, 22624, 22629, 22631, 22636, 22641, 22646, 22651, 22653, 22658, 22663, 22668, 22673, 22675, 22680, 22685, 22690, 22695, 22697, 22705, 22711, 22716, 22718, 22723, 22725, 22730, 22732, 22735, 22738, 22743, 22746, 22749, 22752, 22757, 22760, 22763, 22766, 22771, 22774, 22779, 22784, 22786, 22791, 22796, 22801, 22806, 22812, 22818, 22824, 22832, 22839, 22845, 22851, 22856, 22861, 22869, 22876, 22882, 22888, 22891, 22895, 22902, 22909, 22916, 22925, 22933, 22940, 22947, 22953, 22961, 22968, 22974, 22980, 22983, 22990, 22997, 23004, 23011, 23020, 23028, 23035, 23042, 23048, 23056, 23063, 23069, 23075, 23078, 23085, 23092, 23099, 23106, 23115, 23123, 23130, 23137, 23143, 23151, 23158, 23164, 23170, 23173, 23180, 23187, 23194, 23201, 23210, 23218, 23225, 23232, 23238, 23246, 23253, 23259, 23265, 23268, 23275, 23282, 23289, 23296, 23305, 23313, 23320, 23327, 23333, 23335, 23343, 23350, 23356, 23362, 23365, 23372, 23379, 23386, 23393, 23402, 23410, 23417, 23424, 23430, 23432, 23467, 23479, 23492, 23496, 23500, 23513, 23517, 23521, 23531, 23547, 23561, 23580, 23598, 23614, 23627, 23643, 23661, 23675, 23691, 23707, 23721, 23740, 23758, 23774, 23787, 23803, 23819, 23835, 23851, 23867, 23883, 23899, 23915, 23931, 23945, 23972, 23990, 24006, 24019, 24035, 24055, 24075, 24095, 24113, 24135, 24155, 24173, 24193, 24211, 24231, 24251, 24269, 24289, 24309, 24327, 24332, 24337, 24342, 24347, 24354, 24361, 24368, 24373, 24380, 24387, 24394, 24401, 24408, 24419, 24430, 24441, 24454, 24466, 24473, 24480, 24489, 24497, 24504, 24511, 24520, 24528, 24535, 24542, 24551, 24559, 24564, 24569, 24574, 24579, 24581, 24586, 24591, 24596, 24601, 24603, 24608, 24613, 24618, 24623, 24625, 24630, 24635, 24640, 24645, 24647, 24652, 24657, 24662, 24667, 24669, 24674, 24679, 24684, 24689, 24691, 24699, 24705, 24710, 24712, 24717, 24719, 24724, 24726, 24731, 24734, 24737, 24742, 24745, 24748, 24751, 24756, 24759, 24762, 24765, 24770, 24773, 24778, 24783, 24785, 24790, 24795, 24800, 24805, 24811, 24817, 24823, 24831, 24838, 24844, 24850, 24855, 24860, 24868, 24875, 24881, 24887, 24890, 24894, 24901, 24908, 24915, 24924, 24932, 24939, 24946, 24952, 24960, 24967, 24973, 24979, 24982, 24989, 24996, 25003, 25010, 25019, 25027, 25034, 25041, 25047, 25055, 25062, 25068, 25074, 25077, 25084, 25091, 25098, 25105, 25114, 25122, 25129, 25136, 25142, 25150, 25157, 25163, 25169, 25172, 25179, 25186, 25193, 25200, 25209, 25217, 25224, 25231, 25237, 25245, 25252, 25258, 25264, 25267, 25274, 25281, 25288, 25295, 25304, 25312, 25319, 25326, 25332, 25334, 25342, 25349, 25355, 25361, 25364, 25371, 25378, 25385, 25392, 25401, 25409, 25416, 25423, 25429, 25445, 25460, 25476, 25490, 25507, 25522, 25537, 25551, 25563, 25575, 25587, 25600, 25613, 25626, 25639, 25652, 25667, 25682, 25697, 25711, 25734, 25752, 25756, 25760, 25778, 25782, 25786, 25804, 25822, 25826, 25830, 25845, 25863, 25881, 25885, 25889, 25906, 25923, 25927, 25931, 25948, 25952, 25956, 25974, 25978, 25982, 25999, 26017, 26021, 26025, 26042, 26062, 26080, 26101, 26122, 26138, 26154, 26176, 26194, 26214, 26234, 26252, 26273, 26294, 26310, 26326, 26346, 26366, 26386, 26406, 26426, 26446, 26466, 26486, 26504, 26533, 26554, 26570, 26586, 26609, 26632, 26655, 26676, 26701, 26724, 26745, 26768, 26789, 26812, 26835, 26856, 26879, 26902, 26923, 26940, 26956, 26973, 26989, 27006, 27023, 27040, 27057, 27076, 27094, 27110, 27126, 27144, 27161, 27177, 27193, 27211, 27228, 27244, 27260, 27278, 27295, 27297, 27314, 27331, 27346, 27352, 27354, 27357, 27362, 27377, 27379, 27382, 27396, 27410, 27412, 27447, 27456, 27460, 27464, 27468, 27472, 27476, 27480, 27486, 27492, 27498, 27502, 27509, 27516, 27523, 27530, 27537, 27547, 27557, 27567, 27579, 27590, 27597, 27604, 27613, 27621, 27628, 27635, 27644, 27652, 27659, 27666, 27675, 27683, 27688, 27693, 27698, 27703, 27705, 27710, 27715, 27720, 27725, 27727, 27732, 27737, 27742, 27747, 27749, 27754, 27759, 27764, 27769, 27771, 27776, 27781, 27786, 27791, 27793, 27798, 27803, 27808, 27813, 27815, 27823, 27829, 27834, 27836, 27841, 27843, 27848, 27850, 27854, 27857, 27860, 27865, 27868, 27871, 27874, 27879, 27882, 27885, 27888, 27893, 27896, 27901, 27906, 27908, 27913, 27918, 27923, 27928, 27934, 27940, 27946, 27954, 27961, 27967, 27973, 27978, 27983, 27991, 27998, 28004, 28010, 28013, 28017, 28024, 28031, 28038, 28047, 28055, 28062, 28069, 28075, 28083, 28090, 28096, 28102, 28105, 28112, 28119, 28126, 28133, 28142, 28150, 28157, 28164, 28170, 28178, 28185, 28191, 28197, 28200, 28207, 28214, 28221, 28228, 28237, 28245, 28252, 28259, 28265, 28273, 28280, 28286, 28292, 28295, 28302, 28309, 28316, 28323, 28332, 28340, 28347, 28354, 28360, 28368, 28375, 28381, 28387, 28390, 28397, 28404, 28411, 28418, 28427, 28435, 28442, 28449, 28455, 28457, 28465, 28472, 28478, 28484, 28487, 28494, 28501, 28508, 28515, 28524, 28532, 28539, 28546, 28552, 28556, 28560, 28573, 28577, 28581, 28591, 28604, 28617, 28629, 28640, 28644, 28648, 28659, 28663, 28667, 28675, 28682, 28688, 28695, 28699, 28710, 28716, 28724, 28729, 28732, 28735, 28737, 28741, 28746, 28751, 28756, 28761, 28768, 28775, 28782, 28787, 28794, 28801, 28808, 28815, 28822, 28833, 28844, 28855, 28868, 28880, 28887, 28894, 28903, 28911, 28918, 28925, 28934, 28942, 28949, 28956, 28965, 28973, 28978, 28983, 28988, 28993, 28995, 29000, 29005, 29010, 29015, 29017, 29022, 29027, 29032, 29037, 29039, 29044, 29049, 29054, 29059, 29061, 29066, 29071, 29076, 29081, 29083, 29088, 29093, 29098, 29103, 29105, 29113, 29119, 29124, 29126, 29131, 29133, 29138, 29140, 29145, 29148, 29151, 29156, 29159, 29162, 29165, 29170, 29173, 29176, 29179, 29184, 29187, 29192, 29197, 29199, 29204, 29209, 29214, 29219, 29225, 29231, 29237, 29245, 29252, 29258, 29264, 29269, 29274, 29282, 29289, 29295, 29301, 29304, 29308, 29315, 29322, 29329, 29338, 29346, 29353, 29360, 29366, 29374, 29381, 29387, 29393, 29396, 29403, 29410, 29417, 29424, 29433, 29441, 29448, 29455, 29461, 29469, 29476, 29482, 29488, 29491, 29498, 29505, 29512, 29519, 29528, 29536, 29543, 29550, 29556, 29564, 29571, 29577, 29583, 29586, 29593, 29600, 29607, 29614, 29623, 29631, 29638, 29645, 29651, 29659, 29666, 29672, 29678, 29681, 29688, 29695, 29702, 29709, 29718, 29726, 29733, 29740, 29746, 29748, 29756, 29763, 29769, 29775, 29778, 29785, 29792, 29799, 29806, 29815, 29823, 29830, 29837, 29843, 29847, 29851, 29864, 29868, 29872, 29882, 29891, 29900, 29909, 29925, 29936, 29940, 29944, 29955, 29959, 29963, 29971, 29978, 29984, 29991, 29995, 30006, 30012, 30020, 30025, 30028, 30031, 30033, 30037, 30053, 30067, 30071, 30075, 30089, 30102, 30106, 30110, 30122, 30135, 30139, 30143, 30156, 30160, 30164, 30174, 30190, 30204, 30223, 30241, 30257, 30270, 30286, 30304, 30318, 30334, 30350, 30364, 30383, 30401, 30417, 30430, 30446, 30462, 30478, 30494, 30510, 30526, 30542, 30558, 30574, 30588, 30615, 30633, 30649, 30662, 30678, 30698, 30718, 30738, 30756, 30778, 30798, 30816, 30836, 30854, 30874, 30894, 30912, 30932, 30952, 30970, 30975, 30980, 30985, 30990, 30997, 31004, 31011, 31016, 31023, 31030, 31037, 31044, 31051, 31062, 31073, 31084, 31097, 31109, 31116, 31123, 31132, 31140, 31147, 31154, 31163, 31171, 31178, 31185, 31194, 31202, 31207, 31212, 31217, 31222, 31224, 31229, 31234, 31239, 31244, 31246, 31251, 31256, 31261, 31266, 31268, 31273, 31278, 31283, 31288, 31290, 31295, 31300, 31305, 31310, 31312, 31317, 31322, 31327, 31332, 31334, 31342, 31348, 31353, 31355, 31360, 31362, 31367, 31369, 31374, 31377, 31380, 31385, 31388, 31391, 31394, 31399, 31402, 31405, 31408, 31413, 31416, 31421, 31426, 31428, 31433, 31438, 31443, 31448, 31454, 31460, 31466, 31474, 31481, 31487, 31493, 31498, 31503, 31511, 31518, 31524, 31530, 31533, 31537, 31544, 31551, 31558, 31567, 31575, 31582, 31589, 31595, 31603, 31610, 31616, 31622, 31625, 31632, 31639, 31646, 31653, 31662, 31670, 31677, 31684, 31690, 31698, 31705, 31711, 31717, 31720, 31727, 31734, 31741, 31748, 31757, 31765, 31772, 31779, 31785, 31793, 31800, 31806, 31812, 31815, 31822, 31829, 31836, 31843, 31852, 31860, 31867, 31874, 31880, 31888, 31895, 31901, 31907, 31910, 31917, 31924, 31931, 31938, 31947, 31955, 31962, 31969, 31975, 31977, 31985, 31992, 31998, 32004, 32007, 32014, 32021, 32028, 32035, 32044, 32052, 32059, 32066, 32072, 32088, 32103, 32119, 32133, 32150, 32165, 32180, 32194, 32206, 32218, 32230, 32243, 32256, 32269, 32282, 32295, 32310, 32325, 32340, 32354, 32377, 32395, 32399, 32403, 32421, 32425, 32429, 32447, 32465, 32469, 32473, 32488, 32506, 32524, 32528, 32532, 32549, 32566, 32570, 32574, 32591, 32595, 32599, 32617, 32621, 32625, 32642, 32660, 32664, 32668, 32685, 32705, 32723, 32744, 32765, 32781, 32797, 32819, 32837, 32857, 32877, 32895, 32916, 32937, 32953, 32969, 32989, 33009, 33029, 33049, 33069, 33089, 33109, 33129, 33147, 33176, 33197, 33213, 33229, 33252, 33275, 33298, 33319, 33344, 33367, 33388, 33411, 33432, 33455, 33478, 33499, 33522, 33545, 33566, 33583, 33599, 33616, 33632, 33649, 33666, 33683, 33700, 33719, 33737, 33753, 33769, 33787, 33804, 33820, 33836, 33854, 33871, 33887, 33903, 33921, 33938, 33945, 33954, 33963, 33970, 33979, 33988, 33995, 34003, 34013, 34025, 34029, 34033, 34043, 34053, 34063, 34073, 34081, 34091, 34101, 34111, 34121, 34131, 34141, 34151, 34159, 34173, 34190, 34206, 34223, 34239, 34254, 34271, 34287, 34302, 34310, 34314, 34320, 34334, 34348, 34350, 34353, 34366, 34377, 34379, 34381, 34383, 34385, 34387, 34389, 34392, 34397, 34402, 34406, 34423, 34442, 34459, 34471, 34475, 34479, 34491, 34495, 34499, 34507, 34514, 34520, 34527, 34531, 34543, 34549, 34558, 34563, 34566, 34569, 34571, 34576, 34582, 34588, 34594, 34600, 34608, 34616, 34624, 34630, 34637, 34644, 34651, 34658, 34665, 34677, 34689, 34701, 34715, 34728, 34735, 34742, 34751, 34759, 34766, 34773, 34782, 34790, 34797, 34804, 34813, 34821, 34826, 34831, 34836, 34841, 34843, 34848, 34853, 34858, 34863, 34865, 34870, 34875, 34880, 34885, 34887, 34892, 34897, 34902, 34907, 34909, 34914, 34919, 34924, 34929, 34931, 34936, 34941, 34946, 34951, 34953, 34961, 34967, 34972, 34974, 34979, 34981, 34986, 34988, 34994, 34997, 35000, 35005, 35008, 35011, 35014, 35019, 35022, 35025, 35028, 35033, 35036, 35041, 35046, 35048, 35053, 35058, 35063, 35068, 35074, 35080, 35086, 35094, 35101, 35107, 35113, 35118, 35123, 35131, 35138, 35144, 35150, 35153, 35157, 35164, 35171, 35178, 35187, 35195, 35202, 35209, 35215, 35223, 35230, 35236, 35242, 35245, 35252, 35259, 35266, 35273, 35282, 35290, 35297, 35304, 35310, 35318, 35325, 35331, 35337, 35340, 35347, 35354, 35361, 35368, 35377, 35385, 35392, 35399, 35405, 35413, 35420, 35426, 35432, 35435, 35442, 35449, 35456, 35463, 35472, 35480, 35487, 35494, 35500, 35508, 35515, 35521, 35527, 35530, 35537, 35544, 35551, 35558, 35567, 35575, 35582, 35589, 35595, 35597, 35605, 35612, 35618, 35624, 35627, 35634, 35641, 35648, 35655, 35664, 35672, 35679, 35686, 35692, 35696, 35700, 35717, 35721, 35725, 35739, 35743, 35747, 35762, 35780, 35798, 35815, 35827, 35831, 35835, 35847, 35851, 35855, 35863, 35870, 35876, 35883, 35887, 35900, 35906, 35916, 35921, 35924, 35927, 35929, 35935, 35942, 35949, 35956, 35963, 35972, 35981, 35990, 35997, 36004, 36011, 36018, 36025, 36032, 36045, 36058, 36071, 36086, 36100, 36107, 36114, 36123, 36131, 36138, 36145, 36154, 36162, 36169, 36176, 36185, 36193, 36198, 36203, 36208, 36213, 36215, 36220, 36225, 36230, 36235, 36237, 36242, 36247, 36252, 36257, 36259, 36264, 36269, 36274, 36279, 36281, 36286, 36291, 36296, 36301, 36303, 36308, 36313, 36318, 36323, 36325, 36333, 36339, 36344, 36346, 36351, 36353, 36358, 36360, 36367, 36370, 36373, 36378, 36381, 36384, 36387, 36392, 36395, 36398, 36401, 36406, 36409, 36414, 36419, 36421, 36426, 36431, 36436, 36441, 36447, 36453, 36459, 36467, 36474, 36480, 36486, 36491, 36496, 36504, 36511, 36517, 36523, 36526, 36530, 36537, 36544, 36551, 36560, 36568, 36575, 36582, 36588, 36596, 36603, 36609, 36615, 36618, 36625, 36632, 36639, 36646, 36655, 36663, 36670, 36677, 36683, 36691, 36698, 36704, 36710, 36713, 36720, 36727, 36734, 36741, 36750, 36758, 36765, 36772, 36778, 36786, 36793, 36799, 36805, 36808, 36815, 36822, 36829, 36836, 36845, 36853, 36860, 36867, 36873, 36881, 36888, 36894, 36900, 36903, 36910, 36917, 36924, 36931, 36940, 36948, 36955, 36962, 36968, 36970, 36978, 36985, 36991, 36997, 37000, 37007, 37014, 37021, 37028, 37037, 37045, 37052, 37059, 37065, 37069, 37073, 37090, 37094, 37098, 37113, 37132, 37151, 37170, 37185, 37197, 37201, 37205, 37217, 37221, 37225, 37233, 37240, 37246, 37253, 37257, 37269, 37275, 37284, 37289, 37292, 37295, 37297, 37302, 37308, 37314, 37320, 37326, 37334, 37342, 37350, 37356, 37363, 37370, 37377, 37384, 37391, 37403, 37415, 37427, 37441, 37454, 37461, 37468, 37477, 37485, 37492, 37499, 37508, 37516, 37523, 37530, 37539, 37547, 37552, 37557, 37562, 37567, 37569, 37574, 37579, 37584, 37589, 37591, 37596, 37601, 37606, 37611, 37613, 37618, 37623, 37628, 37633, 37635, 37640, 37645, 37650, 37655, 37657, 37662, 37667, 37672, 37677, 37679, 37687, 37693, 37698, 37700, 37705, 37707, 37712, 37714, 37720, 37723, 37726, 37731, 37734, 37737, 37740, 37745, 37748, 37751, 37754, 37759, 37762, 37767, 37772, 37774, 37779, 37784, 37789, 37794, 37800, 37806, 37812, 37820, 37827, 37833, 37839, 37844, 37849, 37857, 37864, 37870, 37876, 37879, 37883, 37890, 37897, 37904, 37913, 37921, 37928, 37935, 37941, 37949, 37956, 37962, 37968, 37971, 37978, 37985, 37992, 37999, 38008, 38016, 38023, 38030, 38036, 38044, 38051, 38057, 38063, 38066, 38073, 38080, 38087, 38094, 38103, 38111, 38118, 38125, 38131, 38139, 38146, 38152, 38158, 38161, 38168, 38175, 38182, 38189, 38198, 38206, 38213, 38220, 38226, 38234, 38241, 38247, 38253, 38256, 38263, 38270, 38277, 38284, 38293, 38301, 38308, 38315, 38321, 38323, 38331, 38338, 38344, 38350, 38353, 38360, 38367, 38374, 38381, 38390, 38398, 38405, 38412, 38418, 38433, 38447, 38462, 38475, 38494, 38508, 38525, 38540, 38553, 38566, 38579, 38595, 38611, 38627, 38643, 38659, 38677, 38695, 38713, 38730, 38746, 38761, 38777, 38792, 38808, 38827, 38846, 38865, 38886, 38906, 38921, 38936, 38953, 38969, 38984, 38999, 39016, 39032, 39047, 39062, 39079, 39095, 39112, 39131, 39150, 39167, 39176, 39187, 39195, 39199, 39207, 39222, 39237, 39250, 39263, 39265, 39267, 39269, 39271, 39273, 39275, 39310, 39322, 39334, 39347, 39358, 39360, 39362, 39364, 39366, 39368, 39370, 39373, 39378, 39383, 39385, 39388, 39392, 39395, 39398, 39401, 39405, 39421, 39432, 39436, 39440, 39451, 39455, 39459, 39467, 39474, 39480, 39487, 39491, 39502, 39508, 39516, 39521, 39524, 39527, 39529, 39533, 39549, 39563, 39567, 39571, 39585, 39598, 39602, 39606, 39612, 39618, 39620, 39623, 39628, 39645, 39647, 39650, 39667, 39681, 39695, 39697, 39700, 39713, 39729, 39745, 39762, 39777, 39789, 39793, 39797, 39809, 39813, 39817, 39825, 39832, 39838, 39845, 39849, 39862, 39864, 39899, 39905, 39915, 39920, 39923, 39926, 39928, 39934, 39949, 39951, 39954, 39968, 39983, 39990, 39992, 39995, 40001, 40016, 40018, 40021, 40035, 40049, 40060, 40062, 40064, 40066, 40068, 40070, 40072, 40075, 40081, 40085, 40090, 40095, 40100, 40105, 40107, 40112, 40117, 40122, 40127, 40129, 40134, 40139, 40144, 40149, 40151, 40156, 40161, 40166, 40171, 40173, 40178, 40183, 40188, 40193, 40195, 40200, 40205, 40210, 40215, 40217, 40225, 40231, 40236, 40238, 40243, 40245, 40250, 40252, 40255, 40258, 40263, 40266, 40269, 40272, 40277, 40280, 40283, 40286, 40291, 40294, 40299, 40304, 40306, 40311, 40316, 40321, 40326, 40332, 40338, 40344, 40352, 40359, 40365, 40371, 40376, 40381, 40389, 40396, 40402, 40408, 40411, 40415, 40422, 40429, 40436, 40445, 40453, 40460, 40467, 40473, 40481, 40488, 40494, 40500, 40503, 40510, 40517, 40524, 40531, 40540, 40548, 40555, 40562, 40568, 40576, 40583, 40589, 40595, 40598, 40605, 40612, 40619, 40626, 40635, 40643, 40650, 40657, 40663, 40671, 40678, 40684, 40690, 40693, 40700, 40707, 40714, 40721, 40730, 40738, 40745, 40752, 40758, 40766, 40773, 40779, 40785, 40788, 40795, 40802, 40809, 40816, 40825, 40833, 40840, 40847, 40853, 40855, 40863, 40870, 40876, 40882, 40885, 40892, 40899, 40906, 40913, 40922, 40930, 40937, 40944, 40950, 40952, 40987, 41004, 41021, 41037, 41054, 41071, 41086, 41093, 41100, 41107, 41114, 41123, 41132, 41141, 41148, 41155, 41162, 41169, 41176, 41183, 41196, 41209, 41222, 41237, 41251, 41258, 41265, 41274, 41282, 41289, 41296, 41305, 41313, 41320, 41327, 41336, 41344, 41349, 41354, 41359, 41364, 41366, 41371, 41376, 41381, 41386, 41388, 41393, 41398, 41403, 41408, 41410, 41415, 41420, 41425, 41430, 41432, 41437, 41442, 41447, 41452, 41454, 41459, 41464, 41469, 41474, 41476, 41484, 41490, 41495, 41497, 41502, 41504, 41509, 41511, 41518, 41521, 41524, 41529, 41532, 41535, 41538, 41543, 41546, 41549, 41552, 41557, 41560, 41565, 41570, 41572, 41577, 41582, 41587, 41592, 41598, 41604, 41610, 41618, 41625, 41631, 41637, 41642, 41647, 41655, 41662, 41668, 41674, 41677, 41681, 41688, 41695, 41702, 41711, 41719, 41726, 41733, 41739, 41747, 41754, 41760, 41766, 41769, 41776, 41783, 41790, 41797, 41806, 41814, 41821, 41828, 41834, 41842, 41849, 41855, 41861, 41864, 41871, 41878, 41885, 41892, 41901, 41909, 41916, 41923, 41929, 41937, 41944, 41950, 41956, 41959, 41966, 41973, 41980, 41987, 41996, 42004, 42011, 42018, 42024, 42032, 42039, 42045, 42051, 42054, 42061, 42068, 42075, 42082, 42091, 42099, 42106, 42113, 42119, 42121, 42129, 42136, 42142, 42148, 42151, 42158, 42165, 42172, 42179, 42188, 42196, 42203, 42210, 42216, 42231, 42245, 42260, 42273, 42292, 42306, 42323, 42338, 42351, 42364, 42377, 42393, 42409, 42425, 42441, 42457, 42475, 42493, 42511, 42528, 42544, 42559, 42575, 42590, 42606, 42625, 42644, 42663, 42684, 42704, 42719, 42734, 42751, 42767, 42782, 42797, 42814, 42830, 42845, 42860, 42877, 42893, 42908, 42920, 42933, 42937, 42941, 42954, 42958, 42962, 42972, 42988, 43002, 43021, 43039, 43055, 43068, 43084, 43102, 43116, 43132, 43148, 43162, 43181, 43199, 43215, 43228, 43244, 43260, 43276, 43292, 43308, 43324, 43340, 43356, 43372, 43386, 43413, 43431, 43447, 43460, 43476, 43496, 43516, 43536, 43554, 43576, 43596, 43614, 43634, 43652, 43672, 43692, 43710, 43730, 43750, 43768, 43773, 43778, 43783, 43788, 43795, 43802, 43809, 43814, 43821, 43828, 43835, 43842, 43849, 43860, 43871, 43882, 43895, 43907, 43914, 43921, 43930, 43938, 43945, 43952, 43961, 43969, 43976, 43983, 43992, 44000, 44005, 44010, 44015, 44020, 44022, 44027, 44032, 44037, 44042, 44044, 44049, 44054, 44059, 44064, 44066, 44071, 44076, 44081, 44086, 44088, 44093, 44098, 44103, 44108, 44110, 44115, 44120, 44125, 44130, 44132, 44140, 44146, 44151, 44153, 44158, 44160, 44165, 44167, 44172, 44175, 44178, 44183, 44186, 44189, 44192, 44197, 44200, 44203, 44206, 44211, 44214, 44219, 44224, 44226, 44231, 44236, 44241, 44246, 44252, 44258, 44264, 44272, 44279, 44285, 44291, 44296, 44301, 44309, 44316, 44322, 44328, 44331, 44335, 44342, 44349, 44356, 44365, 44373, 44380, 44387, 44393, 44401, 44408, 44414, 44420, 44423, 44430, 44437, 44444, 44451, 44460, 44468, 44475, 44482, 44488, 44496, 44503, 44509, 44515, 44518, 44525, 44532, 44539, 44546, 44555, 44563, 44570, 44577, 44583, 44591, 44598, 44604, 44610, 44613, 44620, 44627, 44634, 44641, 44650, 44658, 44665, 44672, 44678, 44686, 44693, 44699, 44705, 44708, 44715, 44722, 44729, 44736, 44745, 44753, 44760, 44767, 44773, 44775, 44783, 44790, 44796, 44802, 44805, 44812, 44819, 44826, 44833, 44842, 44850, 44857, 44864, 44870, 44886, 44901, 44917, 44931, 44948, 44963, 44978, 44992, 45004, 45016, 45028, 45041, 45054, 45067, 45080, 45093, 45108, 45123, 45138, 45152, 45175, 45193, 45197, 45201, 45219, 45223, 45227, 45245, 45263, 45267, 45271, 45286, 45304, 45322, 45326, 45330, 45347, 45364, 45368, 45372, 45389, 45393, 45397, 45415, 45419, 45423, 45440, 45458, 45462, 45466, 45483, 45503, 45521, 45542, 45563, 45579, 45595, 45617, 45635, 45655, 45675, 45693, 45714, 45735, 45751, 45767, 45787, 45807, 45827, 45847, 45867, 45887, 45907, 45927, 45945, 45974, 45995, 46011, 46027, 46050, 46073, 46096, 46117, 46142, 46165, 46186, 46209, 46230, 46253, 46276, 46297, 46320, 46343, 46364, 46381, 46397, 46414, 46430, 46447, 46464, 46481, 46498, 46517, 46535, 46551, 46567, 46585, 46602, 46618, 46634, 46652, 46669, 46685, 46701, 46719, 46736, 46738, 46742, 46765, 46788, 46812, 46836, 46857, 46870, 46883, 46904, 46917, 46930, 46947, 46963, 46978, 46994, 47007, 47027, 47042, 47059, 47073, 47085, 47097, 47108, 47121, 47143, 47145, 47180, 47202, 47224, 47238, 47240, 47275, 47289, 47311, 47313, 47348, 47370, 47391, 47404, 47406, 47408, 47410, 47412, 47414, 47416, 47451, 47464, 47477, 47491, 47505, 47519, 47533, 47544, 47558, 47572, 47586, 47600, 47611, 47625, 47639, 47653, 47667, 47678, 47692, 47706, 47720, 47734, 47745, 47759, 47773, 47787, 47801, 47812, 47826, 47840, 47854, 47868, 47879, 47896, 47911, 47925, 47936, 47950, 47961, 47975, 47986, 47998, 48010, 48024, 48036, 48048, 48060, 48074, 48086, 48098, 48110, 48124, 48136, 48150, 48164, 48175, 48189, 48203, 48217, 48231, 48246, 48261, 48276, 48293, 48309, 48324, 48339, 48353, 48367, 48384, 48400, 48415, 48430, 48442, 48455, 48471, 48487, 48503, 48521, 48538, 48554, 48570, 48585, 48602, 48618, 48633, 48648, 48660, 48676, 48692, 48708, 48724, 48742, 48759, 48775, 48791, 48806, 48823, 48839, 48854, 48869, 48881, 48897, 48913, 48929, 48945, 48963, 48980, 48996, 49012, 49027, 49044, 49060, 49075, 49090, 49102, 49118, 49134, 49150, 49166, 49184, 49201, 49217, 49233, 49248, 49265, 49281, 49296, 49311, 49323, 49339, 49355, 49371, 49387, 49405, 49422, 49438, 49454, 49469, 49480, 49497, 49513, 49528, 49543, 49555, 49571, 49587, 49603, 49619, 49637, 49654, 49670, 49686, 49701, 49725, 49749, 49772, 49796, 49820, 49842, 49856, 49870, 49884, 49898, 49914, 49930, 49946, 49960, 49976, 49992, 50008, 50024, 50040, 50060, 50080, 50100, 50122, 50143, 50159, 50175, 50193, 50210, 50226, 50242, 50260, 50277, 50293, 50309, 50327, 50344, 50358, 50372, 50386, 50400, 50411, 50425, 50439, 50453, 50467, 50478, 50492, 50506, 50520, 50534, 50545, 50559, 50573, 50587, 50601, 50612, 50626, 50640, 50654, 50668, 50679, 50693, 50707, 50721, 50735, 50746, 50763, 50778, 50792, 50803, 50817, 50828, 50842, 50853, 50867, 50879, 50891, 50905, 50917, 50929, 50941, 50955, 50967, 50979, 50991, 51005, 51017, 51031, 51045, 51056, 51070, 51084, 51098, 51112, 51127, 51142, 51157, 51174, 51190, 51205, 51220, 51234, 51248, 51265, 51281, 51296, 51311, 51323, 51336, 51352, 51368, 51384, 51402, 51419, 51435, 51451, 51466, 51483, 51499, 51514, 51529, 51541, 51557, 51573, 51589, 51605, 51623, 51640, 51656, 51672, 51687, 51704, 51720, 51735, 51750, 51762, 51778, 51794, 51810, 51826, 51844, 51861, 51877, 51893, 51908, 51925, 51941, 51956, 51971, 51983, 51999, 52015, 52031, 52047, 52065, 52082, 52098, 52114, 52129, 52146, 52162, 52177, 52192, 52204, 52220, 52236, 52252, 52268, 52286, 52303, 52319, 52335, 52350, 52361, 52378, 52394, 52409, 52424, 52436, 52452, 52468, 52484, 52500, 52518, 52535, 52551, 52567, 52582, 52606, 52629, 52653, 52675, 52701, 52724, 52748, 52772, 52794, 52816, 52838, 52861, 52884, 52907, 52930, 52953, 52978, 53003, 53028, 53052, 53077, 53101, 53126, 53150, 53175, 53201, 53227, 53253, 53281, 53308, 53332, 53356, 53382, 53407, 53431, 53455, 53481, 53506, 53530, 53554, 53580, 53605, 53627, 53648, 53670, 53683, 53696, 53718, 53731, 53744, 53763, 53788, 53812, 53840, 53867, 53892, 53914, 53939, 53966, 53990, 54015, 54040, 54064, 54092, 54119, 54144, 54166, 54191, 54216, 54241, 54266, 54291, 54316, 54341, 54366, 54391, 54415, 54451, 54478, 54503, 54525, 54550, 54579, 54608, 54637, 54664, 54695, 54724, 54751, 54780, 54807, 54836, 54865, 54892, 54921, 54950, 54977, 54991, 55005, 55019, 55033, 55049, 55065, 55081, 55095, 55111, 55127, 55143, 55159, 55175, 55195, 55215, 55235, 55257, 55278, 55294, 55310, 55328, 55345, 55361, 55377, 55395, 55412, 55428, 55444, 55462, 55479, 55493, 55507, 55521, 55535, 55546, 55560, 55574, 55588, 55602, 55613, 55627, 55641, 55655, 55669, 55680, 55694, 55708, 55722, 55736, 55747, 55761, 55775, 55789, 55803, 55814, 55828, 55842, 55856, 55870, 55881, 55898, 55913, 55927, 55938, 55952, 55963, 55977, 55988, 56002, 56014, 56026, 56040, 56052, 56064, 56076, 56090, 56102, 56114, 56126, 56140, 56152, 56166, 56180, 56191, 56205, 56219, 56233, 56247, 56262, 56277, 56292, 56309, 56325, 56340, 56355, 56369, 56383, 56400, 56416, 56431, 56446, 56458, 56471, 56487, 56503, 56519, 56537, 56554, 56570, 56586, 56601, 56618, 56634, 56649, 56664, 56676, 56692, 56708, 56724, 56740, 56758, 56775, 56791, 56807, 56822, 56839, 56855, 56870, 56885, 56897, 56913, 56929, 56945, 56961, 56979, 56996, 57012, 57028, 57043, 57060, 57076, 57091, 57106, 57118, 57134, 57150, 57166, 57182, 57200, 57217, 57233, 57249, 57264, 57281, 57297, 57312, 57327, 57339, 57355, 57371, 57387, 57403, 57421, 57438, 57454, 57470, 57485, 57496, 57513, 57529, 57544, 57559, 57571, 57587, 57603, 57619, 57635, 57653, 57670, 57686, 57702, 57717, 57742, 57766, 57791, 57814, 57840, 57864, 57888, 57911, 57932, 57953, 57974, 57996, 58018, 58040, 58062, 58084, 58108, 58132, 58156, 58179, 58211, 58239, 58252, 58265, 58292, 58305, 58318, 58345, 58372, 58385, 58398, 58422, 58450, 58478, 58491, 58504, 58531, 58558, 58571, 58584, 58610, 58623, 58636, 58663, 58676, 58689, 58715, 58742, 58755, 58768, 58794, 58823, 58851, 58881, 58911, 58936, 58961, 58992, 59020, 59049, 59078, 59106, 59136, 59166, 59191, 59216, 59245, 59274, 59303, 59332, 59361, 59390, 59419, 59448, 59476, 59514, 59544, 59569, 59594, 59626, 59658, 59690, 59720, 59754, 59786, 59816, 59848, 59878, 59910, 59942, 59972, 60004, 60036, 60066, 60092, 60117, 60143, 60168, 60194, 60220, 60246, 60272, 60300, 60327, 60352, 60377, 60404, 60430, 60455, 60480, 60507, 60533, 60558, 60583, 60610, 60636, 60647, 60662, 60677, 60691, 60706, 60721, 60736, 60751, 60766, 60781, 60796, 60811, 60824, 60828, 60833, 60835, 60838, 60842, 60847, 60880, 60882, 60885, 60917, 60928, 60940, 60952, 60963, 60975, 60987, 60998, 61010, 61022, 61034, 61046, 61058, 61069, 61081, 61094, 61106, 61117, 61129, 61141, 61153, 61164, 61176, 61188, 61200, 61212, 61224, 61236, 61247, 61259, 61271, 61283, 61295, 61307, 61318, 61330, 61342, 61354, 61366, 61378, 61390, 61401, 61414, 61426, 61438, 61450, 61461, 61475, 61487, 61499, 61511, 61523, 61534, 61546, 61557, 61569, 61580, 61592, 61605, 61617, 61629, 61640, 61652, 61664, 61676, 61688, 61700, 61711, 61724, 61736, 61748, 61760, 61771, 61783, 61795, 61807, 61819, 61831, 61843, 61855, 61866, 61878, 61890, 61902, 61914, 61926, 61937, 61948, 61953, 61958, 61963, 61968, 61973, 61978, 61983, 61988, 61992, 61994, 62029, 62040, 62042, 62044, 62047, 62060, 62071, 62075, 62079, 62090, 62094, 62098, 62106, 62113, 62119, 62126, 62130, 62140, 62146, 62153, 62158, 62161, 62164, 62166, 62169, 62179, 62183, 62187, 62191, 62195, 62199, 62203, 62209, 62215, 62221, 62225, 62232, 62239, 62246, 62253, 62260, 62270, 62280, 62290, 62302, 62313, 62320, 62327, 62336, 62344, 62351, 62358, 62367, 62375, 62382, 62389, 62398, 62406, 62411, 62416, 62421, 62426, 62428, 62433, 62438, 62443, 62448, 62450, 62455, 62460, 62465, 62470, 62472, 62477, 62482, 62487, 62492, 62494, 62499, 62504, 62509, 62514, 62516, 62521, 62526, 62531, 62536, 62538, 62546, 62552, 62557, 62559, 62564, 62566, 62571, 62573, 62577, 62580, 62583, 62588, 62591, 62594, 62597, 62602, 62605, 62608, 62611, 62616, 62619, 62624, 62629, 62631, 62636, 62641, 62646, 62651, 62657, 62663, 62669, 62677, 62684, 62690, 62696, 62701, 62706, 62714, 62721, 62727, 62733, 62736, 62740, 62747, 62754, 62761, 62770, 62778, 62785, 62792, 62798, 62806, 62813, 62819, 62825, 62828, 62835, 62842, 62849, 62856, 62865, 62873, 62880, 62887, 62893, 62901, 62908, 62914, 62920, 62923, 62930, 62937, 62944, 62951, 62960, 62968, 62975, 62982, 62988, 62996, 63003, 63009, 63015, 63018, 63025, 63032, 63039, 63046, 63055, 63063, 63070, 63077, 63083, 63091, 63098, 63104, 63110, 63113, 63120, 63127, 63134, 63141, 63150, 63158, 63165, 63172, 63178, 63180, 63188, 63195, 63201, 63207, 63210, 63217, 63224, 63231, 63238, 63247, 63255, 63262, 63269, 63275, 63279, 63283, 63297, 63301, 63305, 63316, 63330, 63344, 63357, 63368, 63372, 63376, 63387, 63391, 63395, 63403, 63410, 63416, 63423, 63427, 63438, 63444, 63452, 63457, 63460, 63463, 63465, 63469, 63474, 63479, 63484, 63489, 63496, 63503, 63510, 63515, 63522, 63529, 63536, 63543, 63550, 63561, 63572, 63583, 63596, 63608, 63615, 63622, 63631, 63639, 63646, 63653, 63662, 63670, 63677, 63684, 63693, 63701, 63706, 63711, 63716, 63721, 63723, 63728, 63733, 63738, 63743, 63745, 63750, 63755, 63760, 63765, 63767, 63772, 63777, 63782, 63787, 63789, 63794, 63799, 63804, 63809, 63811, 63816, 63821, 63826, 63831, 63833, 63841, 63847, 63852, 63854, 63859, 63861, 63866, 63868, 63873, 63876, 63879, 63884, 63887, 63890, 63893, 63898, 63901, 63904, 63907, 63912, 63915, 63920, 63925, 63927, 63932, 63937, 63942, 63947, 63953, 63959, 63965, 63973, 63980, 63986, 63992, 63997, 64002, 64010, 64017, 64023, 64029, 64032, 64036, 64043, 64050, 64057, 64066, 64074, 64081, 64088, 64094, 64102, 64109, 64115, 64121, 64124, 64131, 64138, 64145, 64152, 64161, 64169, 64176, 64183, 64189, 64197, 64204, 64210, 64216, 64219, 64226, 64233, 64240, 64247, 64256, 64264, 64271, 64278, 64284, 64292, 64299, 64305, 64311, 64314, 64321, 64328, 64335, 64342, 64351, 64359, 64366, 64373, 64379, 64387, 64394, 64400, 64406, 64409, 64416, 64423, 64430, 64437, 64446, 64454, 64461, 64468, 64474, 64476, 64484, 64491, 64497, 64503, 64506, 64513, 64520, 64527, 64534, 64543, 64551, 64558, 64565, 64571, 64575, 64579, 64593, 64597, 64601, 64612, 64621, 64630, 64639, 64655, 64666, 64670, 64674, 64685, 64689, 64693, 64701, 64708, 64714, 64721, 64725, 64736, 64742, 64750, 64755, 64758, 64761, 64763, 64767, 64783, 64797, 64801, 64805, 64819, 64832, 64836, 64840, 64852, 64865, 64869, 64873, 64886, 64890, 64894, 64904, 64920, 64934, 64953, 64971, 64987, 65000, 65016, 65034, 65048, 65064, 65080, 65094, 65113, 65131, 65147, 65160, 65176, 65192, 65208, 65224, 65240, 65256, 65272, 65288, 65304, 65318, 65345, 65363, 65379, 65392, 65408, 65428, 65448, 65468, 65486, 65508, 65528, 65546, 65566, 65584, 65604, 65624, 65642, 65662, 65682, 65700, 65705, 65710, 65715, 65720, 65727, 65734, 65741, 65746, 65753, 65760, 65767, 65774, 65781, 65792, 65803, 65814, 65827, 65839, 65846, 65853, 65862, 65870, 65877, 65884, 65893, 65901, 65908, 65915, 65924, 65932, 65937, 65942, 65947, 65952, 65954, 65959, 65964, 65969, 65974, 65976, 65981, 65986, 65991, 65996, 65998, 66003, 66008, 66013, 66018, 66020, 66025, 66030, 66035, 66040, 66042, 66047, 66052, 66057, 66062, 66064, 66072, 66078, 66083, 66085, 66090, 66092, 66097, 66099, 66104, 66107, 66110, 66115, 66118, 66121, 66124, 66129, 66132, 66135, 66138, 66143, 66146, 66151, 66156, 66158, 66163, 66168, 66173, 66178, 66184, 66190, 66196, 66204, 66211, 66217, 66223, 66228, 66233, 66241, 66248, 66254, 66260, 66263, 66267, 66274, 66281, 66288, 66297, 66305, 66312, 66319, 66325, 66333, 66340, 66346, 66352, 66355, 66362, 66369, 66376, 66383, 66392, 66400, 66407, 66414, 66420, 66428, 66435, 66441, 66447, 66450, 66457, 66464, 66471, 66478, 66487, 66495, 66502, 66509, 66515, 66523, 66530, 66536, 66542, 66545, 66552, 66559, 66566, 66573, 66582, 66590, 66597, 66604, 66610, 66618, 66625, 66631, 66637, 66640, 66647, 66654, 66661, 66668, 66677, 66685, 66692, 66699, 66705, 66707, 66715, 66722, 66728, 66734, 66737, 66744, 66751, 66758, 66765, 66774, 66782, 66789, 66796, 66802, 66818, 66833, 66849, 66863, 66880, 66895, 66910, 66924, 66936, 66948, 66960, 66974, 66988, 67002, 67016, 67030, 67046, 67062, 67078, 67093, 67116, 67134, 67138, 67142, 67160, 67164, 67168, 67186, 67204, 67208, 67212, 67227, 67245, 67263, 67267, 67271, 67288, 67305, 67309, 67313, 67330, 67334, 67338, 67356, 67360, 67364, 67381, 67399, 67403, 67407, 67424, 67444, 67462, 67483, 67504, 67520, 67536, 67558, 67576, 67596, 67616, 67634, 67655, 67676, 67692, 67708, 67728, 67748, 67768, 67788, 67808, 67828, 67848, 67868, 67886, 67915, 67936, 67952, 67968, 67991, 68014, 68037, 68058, 68083, 68106, 68127, 68150, 68171, 68194, 68217, 68238, 68261, 68284, 68305, 68322, 68338, 68355, 68371, 68388, 68405, 68422, 68439, 68458, 68476, 68492, 68508, 68526, 68543, 68559, 68575, 68593, 68610, 68626, 68642, 68660, 68677, 68684, 68693, 68702, 68709, 68718, 68727, 68734, 68742, 68752, 68764, 68768, 68772, 68782, 68792, 68802, 68812, 68820, 68830, 68840, 68850, 68860, 68870, 68880, 68890, 68898, 68912, 68929, 68945, 68962, 68978, 68993, 69010, 69026, 69041, 69049, 69053, 69059, 69071, 69083, 69094, 69106, 69118, 69129, 69141, 69153, 69165, 69177, 69189, 69200, 69213, 69226, 69239, 69250, 69252, 69255, 69257, 69260, 69262, 69264, 69266, 69268, 69270, 69272, 69274, 69276, 69288, 69301, 69313, 69324, 69336, 69348, 69360, 69371, 69383, 69395, 69407, 69419, 69431, 69443, 69454, 69466, 69478, 69490, 69502, 69514, 69525, 69537, 69549, 69561, 69573, 69585, 69597, 69608, 69621, 69633, 69645, 69657, 69668, 69682, 69694, 69706, 69718, 69730, 69741, 69753, 69764, 69776, 69787, 69799, 69812, 69824, 69836, 69847, 69859, 69871, 69883, 69895, 69907, 69918, 69933, 69945, 69957, 69969, 69980, 69992, 70004, 70016, 70028, 70040, 70052, 70064, 70075, 70087, 70099, 70111, 70123, 70135, 70146, 70159 }; static const short _sip_message_parser_indicies[] = { 0, 2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 6, 15, 2, 2, 2, 2, 2, 2, 1, 16, 1, 17, 2, 2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 6, 15, 2, 2, 2, 2, 2, 2, 1, 18, 1, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 22, 23, 22, 23, 21, 21, 1, 24, 25, 24, 24, 24, 24, 1, 26, 27, 28, 29, 30, 31, 27, 31, 32, 27, 27, 27, 27, 27, 1, 33, 34, 33, 34, 1, 35, 35, 1, 36, 36, 1, 37, 37, 1, 38, 1, 39, 1, 40, 41, 1, 42, 1, 43, 44, 1, 45, 1, 46, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 59, 1, 60, 60, 61, 61, 61, 62, 61, 61, 61, 61, 61, 61, 1, 63, 63, 64, 1, 71, 72, 71, 1, 66, 67, 68, 69, 70, 1, 65, 79, 1, 74, 75, 76, 77, 78, 1, 1, 73, 73, 1, 74, 1, 75, 1, 76, 1, 77, 1, 80, 1, 73, 46, 73, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 60, 60, 61, 61, 61, 62, 81, 82, 83, 81, 82, 83, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 84, 84, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 85, 85, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 86, 61, 62, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 87, 87, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 88, 88, 61, 61, 61, 61, 61, 61, 1, 89, 89, 61, 61, 61, 90, 61, 61, 61, 61, 61, 61, 1, 91, 91, 92, 1, 92, 93, 92, 94, 94, 94, 94, 94, 94, 94, 94, 94, 1, 95, 1, 96, 96, 1, 96, 96, 94, 94, 94, 94, 94, 94, 94, 94, 94, 1, 97, 98, 98, 99, 98, 98, 98, 98, 98, 98, 1, 100, 100, 100, 100, 100, 100, 100, 100, 100, 1, 97, 100, 100, 100, 100, 100, 100, 100, 100, 100, 1, 60, 60, 61, 61, 61, 62, 101, 101, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 102, 102, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 103, 104, 103, 104, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 105, 105, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 106, 106, 61, 61, 61, 61, 61, 61, 1, 107, 107, 61, 61, 61, 108, 61, 61, 61, 61, 61, 61, 1, 109, 109, 110, 1, 111, 112, 111, 113, 114, 113, 113, 115, 116, 116, 113, 1, 66, 67, 68, 69, 70, 1, 113, 113, 113, 113, 113, 65, 117, 1, 118, 46, 118, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 119, 120, 119, 113, 114, 113, 113, 115, 116, 116, 113, 1, 66, 67, 68, 69, 70, 1, 113, 113, 113, 113, 113, 65, 121, 1, 122, 46, 122, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 122, 79, 122, 123, 1, 74, 75, 76, 77, 78, 1, 73, 79, 124, 124, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 125, 125, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 126, 126, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 127, 128, 128, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 129, 130, 131, 132, 133, 129, 129, 129, 136, 129, 129, 1, 74, 75, 76, 77, 78, 1, 1, 129, 134, 135, 135, 73, 73, 79, 73, 73, 138, 139, 73, 73, 140, 73, 1, 73, 74, 75, 76, 77, 78, 1, 73, 73, 137, 79, 1, 74, 75, 76, 77, 78, 1, 1, 141, 141, 141, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 137, 137, 137, 73, 79, 139, 142, 139, 140, 139, 139, 1, 74, 75, 76, 77, 78, 1, 1, 139, 139, 139, 139, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 143, 143, 143, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 139, 139, 139, 73, 79, 144, 145, 146, 136, 1, 74, 75, 76, 77, 78, 1, 1, 147, 148, 148, 73, 79, 149, 150, 149, 1, 74, 75, 76, 77, 78, 1, 1, 151, 151, 151, 73, 79, 149, 149, 1, 74, 75, 76, 77, 78, 1, 1, 151, 151, 151, 73, 79, 149, 152, 149, 1, 74, 75, 76, 77, 78, 1, 1, 151, 151, 151, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 151, 153, 153, 73, 79, 154, 155, 156, 157, 158, 159, 154, 1, 74, 75, 76, 77, 78, 1, 1, 153, 153, 153, 73, 79, 154, 154, 1, 74, 75, 76, 77, 78, 1, 1, 153, 153, 153, 73, 79, 156, 157, 158, 159, 1, 74, 75, 76, 77, 78, 1, 1, 151, 153, 153, 73, 79, 160, 162, 1, 74, 75, 76, 77, 78, 1, 1, 161, 163, 73, 79, 164, 1, 74, 75, 76, 77, 78, 1, 1, 165, 73, 79, 166, 1, 74, 75, 76, 77, 78, 1, 1, 167, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 168, 73, 79, 169, 170, 171, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 172, 173, 174, 175, 176, 172, 172, 174, 175, 176, 172, 1, 74, 75, 76, 77, 78, 1, 1, 172, 172, 172, 172, 73, 73, 79, 73, 178, 73, 179, 180, 181, 182, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 73, 73, 73, 177, 79, 1, 74, 75, 76, 77, 78, 1, 1, 183, 183, 183, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 177, 177, 177, 73, 73, 79, 73, 185, 73, 179, 186, 181, 182, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 73, 73, 73, 184, 73, 79, 73, 188, 73, 189, 190, 191, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 73, 73, 73, 187, 79, 1, 74, 75, 76, 77, 78, 1, 1, 192, 192, 192, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 187, 187, 187, 73, 193, 194, 193, 195, 196, 1, 74, 75, 76, 77, 78, 1, 73, 197, 198, 197, 199, 200, 1, 74, 75, 76, 77, 78, 1, 73, 201, 1, 202, 46, 202, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 202, 79, 202, 199, 200, 1, 74, 75, 76, 77, 78, 1, 73, 199, 203, 199, 204, 205, 204, 204, 206, 207, 207, 204, 1, 74, 75, 76, 77, 78, 1, 204, 204, 204, 204, 204, 73, 208, 1, 209, 46, 209, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 209, 210, 209, 204, 205, 204, 204, 206, 207, 207, 204, 1, 74, 75, 76, 77, 78, 1, 204, 204, 204, 204, 204, 73, 211, 212, 211, 213, 213, 213, 214, 213, 1, 74, 75, 76, 77, 78, 1, 213, 213, 213, 213, 213, 73, 215, 216, 215, 213, 213, 213, 123, 213, 1, 74, 75, 76, 77, 78, 1, 213, 213, 213, 213, 213, 73, 217, 1, 218, 46, 218, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 218, 79, 218, 213, 213, 213, 123, 213, 1, 74, 75, 76, 77, 78, 1, 213, 213, 213, 213, 213, 73, 219, 219, 61, 61, 61, 220, 221, 221, 61, 61, 61, 61, 61, 61, 1, 222, 222, 223, 1, 224, 225, 224, 226, 227, 226, 226, 228, 230, 231, 230, 231, 226, 226, 226, 226, 229, 226, 229, 1, 232, 1, 233, 233, 1, 234, 235, 234, 226, 227, 226, 226, 228, 230, 231, 230, 231, 226, 226, 226, 226, 229, 226, 229, 1, 236, 1, 237, 237, 1, 237, 237, 238, 1, 240, 241, 240, 241, 239, 239, 1, 242, 243, 242, 242, 242, 242, 1, 244, 245, 246, 247, 248, 249, 248, 250, 244, 244, 244, 244, 244, 1, 244, 245, 246, 251, 249, 252, 244, 244, 244, 244, 244, 1, 245, 253, 254, 245, 255, 245, 245, 245, 245, 245, 1, 256, 256, 256, 1, 245, 245, 245, 1, 254, 257, 254, 255, 254, 254, 254, 254, 254, 254, 1, 258, 258, 258, 1, 254, 254, 254, 1, 259, 260, 261, 250, 262, 263, 263, 1, 264, 265, 264, 266, 266, 266, 1, 264, 264, 266, 266, 266, 1, 264, 267, 264, 266, 266, 266, 1, 266, 263, 263, 1, 268, 269, 270, 249, 248, 268, 263, 263, 263, 1, 268, 268, 263, 263, 263, 1, 270, 249, 248, 266, 263, 263, 1, 271, 273, 272, 274, 1, 275, 276, 1, 277, 278, 1, 279, 1, 249, 248, 1, 280, 281, 280, 282, 1, 283, 1, 284, 46, 284, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 284, 285, 284, 282, 1, 286, 1, 287, 46, 287, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 287, 287, 282, 1, 282, 288, 282, 289, 289, 289, 290, 290, 289, 289, 289, 289, 289, 289, 1, 291, 1, 292, 292, 1, 292, 292, 289, 289, 289, 290, 290, 289, 289, 289, 289, 289, 289, 1, 293, 294, 293, 289, 289, 289, 282, 295, 289, 289, 289, 289, 289, 289, 1, 293, 296, 293, 282, 295, 1, 297, 1, 298, 298, 1, 298, 298, 282, 295, 1, 295, 299, 295, 300, 301, 300, 300, 302, 300, 300, 300, 300, 300, 300, 1, 303, 1, 304, 304, 1, 304, 304, 300, 301, 300, 300, 302, 300, 300, 300, 300, 300, 300, 1, 305, 285, 305, 300, 300, 300, 282, 300, 300, 300, 300, 300, 300, 1, 305, 306, 305, 282, 1, 307, 1, 287, 287, 1, 301, 313, 314, 315, 308, 309, 310, 311, 312, 301, 1, 301, 1, 308, 1, 309, 1, 310, 1, 311, 1, 316, 1, 301, 301, 1, 305, 285, 305, 282, 1, 301, 301, 301, 1, 318, 317, 317, 317, 1, 320, 319, 319, 319, 1, 320, 321, 321, 321, 1, 320, 322, 322, 322, 1, 320, 1, 324, 323, 323, 323, 1, 326, 325, 325, 325, 1, 326, 327, 327, 327, 1, 326, 328, 328, 328, 1, 326, 1, 330, 329, 329, 329, 1, 332, 331, 331, 331, 1, 332, 333, 333, 333, 1, 332, 334, 334, 334, 1, 332, 1, 336, 335, 335, 335, 1, 338, 337, 337, 337, 1, 338, 339, 339, 339, 1, 338, 340, 340, 340, 1, 338, 1, 342, 341, 341, 341, 1, 344, 343, 343, 343, 1, 344, 345, 345, 345, 1, 344, 346, 346, 346, 1, 344, 1, 348, 347, 347, 347, 1, 350, 349, 349, 349, 1, 350, 351, 351, 351, 1, 350, 352, 352, 352, 1, 350, 1, 353, 354, 355, 357, 356, 358, 358, 1, 359, 361, 360, 360, 360, 1, 362, 363, 364, 365, 1, 366, 1, 367, 368, 369, 370, 1, 371, 1, 372, 373, 374, 375, 1, 314, 1, 314, 375, 1, 314, 372, 1, 376, 314, 375, 372, 1, 314, 372, 1, 371, 370, 1, 371, 367, 1, 371, 377, 370, 367, 1, 371, 367, 1, 366, 365, 1, 366, 362, 1, 366, 378, 365, 362, 1, 366, 362, 1, 361, 379, 379, 379, 1, 361, 380, 380, 380, 1, 361, 1, 372, 381, 381, 381, 1, 314, 382, 382, 382, 1, 314, 383, 383, 383, 1, 314, 372, 372, 372, 1, 359, 361, 384, 360, 360, 1, 359, 361, 385, 379, 379, 1, 359, 361, 380, 380, 380, 1, 359, 386, 361, 384, 387, 360, 360, 1, 359, 361, 385, 379, 379, 379, 1, 359, 361, 379, 379, 379, 1, 359, 361, 387, 360, 360, 1, 314, 381, 381, 381, 1, 361, 360, 360, 360, 1, 388, 389, 390, 314, 391, 392, 392, 1, 359, 394, 314, 393, 393, 393, 1, 394, 314, 395, 395, 395, 1, 394, 314, 396, 396, 396, 1, 394, 314, 1, 381, 381, 381, 1, 359, 394, 314, 397, 393, 393, 1, 359, 394, 314, 398, 395, 395, 1, 359, 394, 314, 396, 396, 396, 1, 359, 399, 394, 314, 397, 400, 393, 393, 1, 359, 394, 314, 398, 395, 395, 395, 1, 359, 394, 314, 395, 395, 395, 1, 359, 394, 314, 400, 393, 393, 1, 394, 314, 393, 393, 393, 1, 401, 402, 403, 314, 404, 405, 405, 1, 359, 407, 314, 406, 406, 406, 1, 407, 314, 408, 408, 408, 1, 407, 314, 409, 409, 409, 1, 407, 314, 1, 388, 389, 390, 391, 392, 392, 1, 359, 407, 314, 410, 406, 406, 1, 359, 407, 314, 411, 408, 408, 1, 359, 407, 314, 409, 409, 409, 1, 359, 412, 407, 314, 410, 413, 406, 406, 1, 359, 407, 314, 411, 408, 408, 408, 1, 359, 407, 314, 408, 408, 408, 1, 359, 407, 314, 413, 406, 406, 1, 407, 314, 406, 406, 406, 1, 414, 415, 416, 314, 417, 418, 418, 1, 359, 420, 314, 419, 419, 419, 1, 420, 314, 421, 421, 421, 1, 420, 314, 422, 422, 422, 1, 420, 314, 1, 401, 402, 403, 404, 405, 405, 1, 359, 420, 314, 423, 419, 419, 1, 359, 420, 314, 424, 421, 421, 1, 359, 420, 314, 422, 422, 422, 1, 359, 425, 420, 314, 423, 426, 419, 419, 1, 359, 420, 314, 424, 421, 421, 421, 1, 359, 420, 314, 421, 421, 421, 1, 359, 420, 314, 426, 419, 419, 1, 420, 314, 419, 419, 419, 1, 427, 428, 429, 314, 430, 431, 431, 1, 359, 433, 314, 432, 432, 432, 1, 433, 314, 434, 434, 434, 1, 433, 314, 435, 435, 435, 1, 433, 314, 1, 414, 415, 416, 417, 418, 418, 1, 359, 433, 314, 436, 432, 432, 1, 359, 433, 314, 437, 434, 434, 1, 359, 433, 314, 435, 435, 435, 1, 359, 438, 433, 314, 436, 439, 432, 432, 1, 359, 433, 314, 437, 434, 434, 434, 1, 359, 433, 314, 434, 434, 434, 1, 359, 433, 314, 439, 432, 432, 1, 433, 314, 432, 432, 432, 1, 440, 441, 442, 314, 443, 444, 444, 1, 359, 446, 314, 445, 445, 445, 1, 446, 314, 447, 447, 447, 1, 446, 314, 448, 448, 448, 1, 446, 314, 1, 427, 428, 429, 430, 431, 431, 1, 359, 446, 314, 449, 445, 445, 1, 359, 446, 314, 450, 447, 447, 1, 359, 446, 314, 448, 448, 448, 1, 359, 451, 446, 314, 449, 452, 445, 445, 1, 359, 446, 314, 450, 447, 447, 447, 1, 359, 446, 314, 447, 447, 447, 1, 359, 446, 314, 452, 445, 445, 1, 446, 314, 445, 445, 445, 1, 453, 1, 454, 455, 456, 314, 457, 458, 458, 1, 359, 460, 314, 459, 459, 459, 1, 460, 314, 461, 461, 461, 1, 460, 314, 462, 462, 462, 1, 460, 314, 1, 440, 441, 442, 443, 444, 444, 1, 359, 460, 314, 463, 459, 459, 1, 359, 460, 314, 464, 461, 461, 1, 359, 460, 314, 462, 462, 462, 1, 359, 465, 460, 314, 463, 466, 459, 459, 1, 359, 460, 314, 464, 461, 461, 461, 1, 359, 460, 314, 461, 461, 461, 1, 359, 460, 314, 466, 459, 459, 1, 460, 314, 459, 459, 459, 1, 467, 1, 298, 46, 298, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 468, 468, 61, 61, 61, 469, 61, 61, 61, 61, 61, 61, 1, 470, 470, 471, 1, 471, 472, 471, 473, 473, 473, 473, 473, 473, 473, 473, 473, 1, 474, 1, 475, 46, 475, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 475, 476, 475, 473, 473, 473, 473, 473, 473, 473, 473, 473, 1, 477, 478, 477, 479, 479, 479, 480, 479, 479, 479, 479, 479, 1, 481, 482, 481, 483, 1, 484, 1, 485, 485, 1, 485, 485, 483, 1, 483, 486, 483, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 488, 1, 489, 489, 1, 489, 489, 487, 487, 487, 487, 487, 487, 487, 487, 487, 1, 490, 1, 485, 46, 485, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 491, 491, 61, 61, 61, 492, 61, 61, 61, 61, 61, 61, 1, 493, 493, 494, 1, 494, 495, 494, 496, 1, 497, 1, 498, 498, 1, 498, 498, 496, 1, 499, 500, 1, 499, 501, 1, 499, 502, 1, 499, 503, 1, 499, 504, 1, 499, 505, 1, 499, 506, 1, 499, 507, 1, 499, 1, 107, 107, 61, 61, 61, 108, 508, 508, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 509, 509, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 510, 61, 62, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 511, 511, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 512, 512, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 513, 513, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 514, 514, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 515, 515, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 516, 516, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 517, 517, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 518, 518, 61, 61, 61, 61, 61, 61, 1, 519, 519, 61, 61, 61, 520, 61, 61, 61, 61, 61, 61, 1, 521, 521, 522, 1, 522, 523, 522, 524, 1, 525, 1, 526, 526, 1, 526, 526, 524, 1, 527, 528, 1, 527, 529, 1, 527, 530, 1, 527, 1, 60, 60, 61, 61, 61, 62, 531, 531, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 532, 532, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 533, 533, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 534, 534, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 535, 61, 62, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 536, 536, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 537, 537, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 538, 538, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 539, 539, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 540, 540, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 541, 541, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 542, 542, 61, 61, 61, 61, 61, 61, 1, 543, 543, 61, 61, 61, 544, 61, 61, 61, 61, 61, 61, 1, 545, 545, 546, 1, 546, 547, 546, 548, 548, 548, 548, 548, 548, 548, 548, 548, 1, 549, 1, 550, 550, 1, 550, 550, 548, 548, 548, 548, 548, 548, 548, 548, 548, 1, 551, 552, 551, 553, 553, 553, 554, 553, 553, 553, 553, 553, 1, 555, 556, 555, 557, 1, 558, 1, 559, 559, 1, 559, 559, 557, 1, 557, 560, 557, 561, 561, 561, 561, 561, 561, 561, 561, 561, 1, 562, 1, 563, 563, 1, 563, 563, 561, 561, 561, 561, 561, 561, 561, 561, 561, 1, 564, 1, 559, 46, 559, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 60, 60, 61, 61, 61, 62, 565, 566, 565, 566, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 567, 567, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 568, 568, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 569, 569, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 570, 570, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 571, 571, 61, 61, 61, 61, 61, 61, 1, 572, 572, 61, 61, 61, 573, 61, 61, 61, 61, 61, 61, 1, 574, 574, 575, 1, 575, 576, 575, 577, 577, 577, 577, 577, 577, 577, 577, 577, 1, 578, 1, 579, 579, 1, 579, 579, 577, 577, 577, 577, 577, 577, 577, 577, 577, 1, 580, 581, 580, 582, 582, 582, 583, 582, 582, 582, 582, 582, 1, 584, 585, 584, 586, 1, 587, 1, 588, 588, 1, 588, 588, 586, 1, 586, 589, 586, 590, 590, 590, 590, 590, 590, 590, 590, 590, 1, 591, 1, 592, 592, 1, 592, 592, 590, 590, 590, 590, 590, 590, 590, 590, 590, 1, 593, 1, 588, 46, 588, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 60, 60, 61, 61, 61, 62, 594, 594, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 595, 595, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 596, 596, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 597, 597, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 598, 598, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 599, 599, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 600, 600, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 601, 601, 61, 61, 61, 61, 61, 61, 1, 602, 602, 61, 61, 61, 603, 604, 604, 61, 61, 61, 61, 61, 61, 1, 605, 605, 606, 1, 607, 608, 607, 609, 610, 609, 609, 611, 613, 614, 613, 614, 609, 609, 609, 609, 612, 609, 612, 1, 615, 1, 616, 616, 1, 617, 618, 617, 609, 610, 609, 609, 611, 613, 614, 613, 614, 609, 609, 609, 609, 612, 609, 612, 1, 619, 1, 620, 620, 1, 620, 620, 621, 1, 623, 624, 623, 624, 622, 622, 1, 625, 626, 625, 625, 625, 625, 1, 627, 628, 629, 630, 631, 632, 631, 633, 627, 627, 627, 627, 627, 1, 627, 628, 629, 634, 632, 635, 627, 627, 627, 627, 627, 1, 628, 636, 637, 628, 638, 628, 628, 628, 628, 628, 1, 639, 639, 639, 1, 628, 628, 628, 1, 637, 640, 637, 638, 637, 637, 637, 637, 637, 637, 1, 641, 641, 641, 1, 637, 637, 637, 1, 642, 643, 644, 633, 645, 646, 646, 1, 647, 648, 647, 649, 649, 649, 1, 647, 647, 649, 649, 649, 1, 647, 650, 647, 649, 649, 649, 1, 649, 646, 646, 1, 651, 652, 653, 632, 631, 651, 646, 646, 646, 1, 651, 651, 646, 646, 646, 1, 653, 632, 631, 649, 646, 646, 1, 654, 656, 655, 657, 1, 658, 659, 1, 660, 661, 1, 662, 1, 632, 631, 1, 663, 664, 663, 665, 1, 666, 1, 667, 46, 667, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 667, 668, 667, 665, 1, 669, 1, 670, 46, 670, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 670, 670, 665, 1, 665, 671, 665, 672, 672, 672, 673, 673, 672, 672, 672, 672, 672, 672, 1, 674, 1, 675, 675, 1, 675, 675, 672, 672, 672, 673, 673, 672, 672, 672, 672, 672, 672, 1, 676, 677, 676, 672, 672, 672, 665, 678, 672, 672, 672, 672, 672, 672, 1, 676, 679, 676, 665, 678, 1, 680, 1, 681, 681, 1, 681, 681, 665, 678, 1, 678, 682, 678, 683, 684, 683, 683, 685, 683, 683, 683, 683, 683, 683, 1, 686, 1, 687, 687, 1, 687, 687, 683, 684, 683, 683, 685, 683, 683, 683, 683, 683, 683, 1, 688, 668, 688, 683, 683, 683, 665, 683, 683, 683, 683, 683, 683, 1, 688, 689, 688, 665, 1, 690, 1, 670, 670, 1, 684, 696, 697, 698, 691, 692, 693, 694, 695, 684, 1, 684, 1, 691, 1, 692, 1, 693, 1, 694, 1, 699, 1, 684, 684, 1, 688, 668, 688, 665, 1, 684, 684, 684, 1, 701, 700, 700, 700, 1, 703, 702, 702, 702, 1, 703, 704, 704, 704, 1, 703, 705, 705, 705, 1, 703, 1, 707, 706, 706, 706, 1, 709, 708, 708, 708, 1, 709, 710, 710, 710, 1, 709, 711, 711, 711, 1, 709, 1, 713, 712, 712, 712, 1, 715, 714, 714, 714, 1, 715, 716, 716, 716, 1, 715, 717, 717, 717, 1, 715, 1, 719, 718, 718, 718, 1, 721, 720, 720, 720, 1, 721, 722, 722, 722, 1, 721, 723, 723, 723, 1, 721, 1, 725, 724, 724, 724, 1, 727, 726, 726, 726, 1, 727, 728, 728, 728, 1, 727, 729, 729, 729, 1, 727, 1, 731, 730, 730, 730, 1, 733, 732, 732, 732, 1, 733, 734, 734, 734, 1, 733, 735, 735, 735, 1, 733, 1, 736, 737, 738, 740, 739, 741, 741, 1, 742, 744, 743, 743, 743, 1, 745, 746, 747, 748, 1, 749, 1, 750, 751, 752, 753, 1, 754, 1, 755, 756, 757, 758, 1, 697, 1, 697, 758, 1, 697, 755, 1, 759, 697, 758, 755, 1, 697, 755, 1, 754, 753, 1, 754, 750, 1, 754, 760, 753, 750, 1, 754, 750, 1, 749, 748, 1, 749, 745, 1, 749, 761, 748, 745, 1, 749, 745, 1, 744, 762, 762, 762, 1, 744, 763, 763, 763, 1, 744, 1, 755, 764, 764, 764, 1, 697, 765, 765, 765, 1, 697, 766, 766, 766, 1, 697, 755, 755, 755, 1, 742, 744, 767, 743, 743, 1, 742, 744, 768, 762, 762, 1, 742, 744, 763, 763, 763, 1, 742, 769, 744, 767, 770, 743, 743, 1, 742, 744, 768, 762, 762, 762, 1, 742, 744, 762, 762, 762, 1, 742, 744, 770, 743, 743, 1, 697, 764, 764, 764, 1, 744, 743, 743, 743, 1, 771, 772, 773, 697, 774, 775, 775, 1, 742, 777, 697, 776, 776, 776, 1, 777, 697, 778, 778, 778, 1, 777, 697, 779, 779, 779, 1, 777, 697, 1, 764, 764, 764, 1, 742, 777, 697, 780, 776, 776, 1, 742, 777, 697, 781, 778, 778, 1, 742, 777, 697, 779, 779, 779, 1, 742, 782, 777, 697, 780, 783, 776, 776, 1, 742, 777, 697, 781, 778, 778, 778, 1, 742, 777, 697, 778, 778, 778, 1, 742, 777, 697, 783, 776, 776, 1, 777, 697, 776, 776, 776, 1, 784, 785, 786, 697, 787, 788, 788, 1, 742, 790, 697, 789, 789, 789, 1, 790, 697, 791, 791, 791, 1, 790, 697, 792, 792, 792, 1, 790, 697, 1, 771, 772, 773, 774, 775, 775, 1, 742, 790, 697, 793, 789, 789, 1, 742, 790, 697, 794, 791, 791, 1, 742, 790, 697, 792, 792, 792, 1, 742, 795, 790, 697, 793, 796, 789, 789, 1, 742, 790, 697, 794, 791, 791, 791, 1, 742, 790, 697, 791, 791, 791, 1, 742, 790, 697, 796, 789, 789, 1, 790, 697, 789, 789, 789, 1, 797, 798, 799, 697, 800, 801, 801, 1, 742, 803, 697, 802, 802, 802, 1, 803, 697, 804, 804, 804, 1, 803, 697, 805, 805, 805, 1, 803, 697, 1, 784, 785, 786, 787, 788, 788, 1, 742, 803, 697, 806, 802, 802, 1, 742, 803, 697, 807, 804, 804, 1, 742, 803, 697, 805, 805, 805, 1, 742, 808, 803, 697, 806, 809, 802, 802, 1, 742, 803, 697, 807, 804, 804, 804, 1, 742, 803, 697, 804, 804, 804, 1, 742, 803, 697, 809, 802, 802, 1, 803, 697, 802, 802, 802, 1, 810, 811, 812, 697, 813, 814, 814, 1, 742, 816, 697, 815, 815, 815, 1, 816, 697, 817, 817, 817, 1, 816, 697, 818, 818, 818, 1, 816, 697, 1, 797, 798, 799, 800, 801, 801, 1, 742, 816, 697, 819, 815, 815, 1, 742, 816, 697, 820, 817, 817, 1, 742, 816, 697, 818, 818, 818, 1, 742, 821, 816, 697, 819, 822, 815, 815, 1, 742, 816, 697, 820, 817, 817, 817, 1, 742, 816, 697, 817, 817, 817, 1, 742, 816, 697, 822, 815, 815, 1, 816, 697, 815, 815, 815, 1, 823, 824, 825, 697, 826, 827, 827, 1, 742, 829, 697, 828, 828, 828, 1, 829, 697, 830, 830, 830, 1, 829, 697, 831, 831, 831, 1, 829, 697, 1, 810, 811, 812, 813, 814, 814, 1, 742, 829, 697, 832, 828, 828, 1, 742, 829, 697, 833, 830, 830, 1, 742, 829, 697, 831, 831, 831, 1, 742, 834, 829, 697, 832, 835, 828, 828, 1, 742, 829, 697, 833, 830, 830, 830, 1, 742, 829, 697, 830, 830, 830, 1, 742, 829, 697, 835, 828, 828, 1, 829, 697, 828, 828, 828, 1, 836, 1, 837, 838, 839, 697, 840, 841, 841, 1, 742, 843, 697, 842, 842, 842, 1, 843, 697, 844, 844, 844, 1, 843, 697, 845, 845, 845, 1, 843, 697, 1, 823, 824, 825, 826, 827, 827, 1, 742, 843, 697, 846, 842, 842, 1, 742, 843, 697, 847, 844, 844, 1, 742, 843, 697, 845, 845, 845, 1, 742, 848, 843, 697, 846, 849, 842, 842, 1, 742, 843, 697, 847, 844, 844, 844, 1, 742, 843, 697, 844, 844, 844, 1, 742, 843, 697, 849, 842, 842, 1, 843, 697, 842, 842, 842, 1, 850, 1, 681, 46, 681, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 851, 851, 61, 61, 61, 852, 853, 853, 61, 61, 61, 61, 61, 61, 1, 854, 854, 855, 1, 855, 856, 855, 857, 857, 857, 857, 857, 857, 857, 857, 857, 1, 858, 1, 859, 859, 1, 859, 859, 857, 857, 857, 857, 857, 857, 857, 857, 857, 1, 860, 861, 860, 862, 862, 862, 863, 862, 862, 862, 862, 862, 1, 860, 861, 860, 863, 1, 864, 1, 865, 865, 1, 865, 865, 863, 1, 863, 866, 863, 867, 867, 867, 867, 867, 867, 867, 867, 867, 1, 868, 1, 869, 869, 1, 869, 869, 867, 867, 867, 867, 867, 867, 867, 867, 867, 1, 870, 871, 870, 867, 867, 867, 872, 867, 867, 867, 867, 867, 1, 870, 871, 870, 872, 1, 873, 1, 874, 874, 1, 874, 874, 872, 1, 872, 875, 872, 876, 876, 876, 876, 876, 876, 876, 876, 876, 1, 877, 1, 878, 878, 1, 878, 878, 876, 876, 876, 876, 876, 876, 876, 876, 876, 1, 879, 880, 879, 876, 876, 876, 876, 876, 876, 876, 876, 876, 1, 879, 880, 879, 881, 882, 883, 886, 884, 885, 885, 1, 887, 1, 888, 888, 1, 888, 888, 881, 882, 883, 886, 884, 885, 885, 1, 889, 890, 889, 891, 891, 891, 1, 889, 889, 891, 891, 891, 1, 889, 892, 889, 891, 891, 891, 1, 891, 893, 893, 1, 894, 895, 894, 896, 897, 898, 899, 900, 897, 893, 893, 893, 1, 901, 902, 901, 903, 904, 905, 1, 906, 1, 907, 907, 1, 907, 907, 903, 904, 905, 1, 903, 908, 903, 909, 909, 909, 909, 909, 909, 909, 909, 909, 1, 910, 1, 911, 911, 1, 911, 911, 909, 909, 909, 909, 909, 909, 909, 909, 909, 1, 904, 912, 904, 913, 915, 914, 916, 1, 917, 1, 918, 918, 1, 918, 918, 913, 915, 914, 916, 1, 919, 920, 1, 921, 922, 1, 923, 1, 924, 925, 924, 926, 927, 1, 928, 929, 928, 903, 905, 1, 930, 1, 931, 931, 1, 931, 931, 903, 905, 1, 905, 932, 905, 933, 933, 933, 934, 935, 936, 934, 935, 936, 933, 933, 933, 933, 933, 933, 1, 937, 1, 938, 938, 1, 938, 938, 933, 933, 933, 934, 935, 936, 934, 935, 936, 933, 933, 933, 933, 933, 933, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 941, 941, 941, 941, 941, 1, 945, 946, 945, 903, 905, 947, 1, 948, 1, 949, 949, 1, 949, 949, 903, 905, 947, 1, 947, 950, 947, 951, 952, 951, 951, 953, 951, 951, 951, 951, 951, 951, 1, 954, 1, 955, 955, 1, 955, 955, 951, 952, 951, 951, 953, 951, 951, 951, 951, 951, 951, 1, 956, 957, 956, 958, 958, 958, 959, 960, 958, 958, 958, 958, 958, 1, 961, 1, 931, 46, 931, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 967, 968, 969, 970, 962, 963, 964, 965, 966, 967, 1, 967, 1, 962, 1, 963, 1, 964, 1, 965, 1, 971, 1, 967, 967, 1, 956, 957, 956, 959, 960, 1, 967, 967, 967, 1, 973, 972, 972, 972, 1, 975, 974, 974, 974, 1, 975, 976, 976, 976, 1, 975, 977, 977, 977, 1, 975, 1, 979, 978, 978, 978, 1, 981, 980, 980, 980, 1, 981, 982, 982, 982, 1, 981, 983, 983, 983, 1, 981, 1, 985, 984, 984, 984, 1, 987, 986, 986, 986, 1, 987, 988, 988, 988, 1, 987, 989, 989, 989, 1, 987, 1, 991, 990, 990, 990, 1, 993, 992, 992, 992, 1, 993, 994, 994, 994, 1, 993, 995, 995, 995, 1, 993, 1, 997, 996, 996, 996, 1, 999, 998, 998, 998, 1, 999, 1000, 1000, 1000, 1, 999, 1001, 1001, 1001, 1, 999, 1, 1003, 1002, 1002, 1002, 1, 1005, 1004, 1004, 1004, 1, 1005, 1006, 1006, 1006, 1, 1005, 1007, 1007, 1007, 1, 1005, 1, 1008, 1009, 1010, 1012, 1011, 1013, 1013, 1, 1014, 1016, 1015, 1015, 1015, 1, 1017, 1018, 1019, 1020, 1, 1021, 1, 1022, 1023, 1024, 1025, 1, 1026, 1, 1027, 1028, 1029, 1030, 1, 969, 1, 969, 1030, 1, 969, 1027, 1, 1031, 969, 1030, 1027, 1, 969, 1027, 1, 1026, 1025, 1, 1026, 1022, 1, 1026, 1032, 1025, 1022, 1, 1026, 1022, 1, 1021, 1020, 1, 1021, 1017, 1, 1021, 1033, 1020, 1017, 1, 1021, 1017, 1, 1016, 1034, 1034, 1034, 1, 1016, 1035, 1035, 1035, 1, 1016, 1, 1027, 1036, 1036, 1036, 1, 969, 1037, 1037, 1037, 1, 969, 1038, 1038, 1038, 1, 969, 1027, 1027, 1027, 1, 1014, 1016, 1039, 1015, 1015, 1, 1014, 1016, 1040, 1034, 1034, 1, 1014, 1016, 1035, 1035, 1035, 1, 1014, 1041, 1016, 1039, 1042, 1015, 1015, 1, 1014, 1016, 1040, 1034, 1034, 1034, 1, 1014, 1016, 1034, 1034, 1034, 1, 1014, 1016, 1042, 1015, 1015, 1, 969, 1036, 1036, 1036, 1, 1016, 1015, 1015, 1015, 1, 1043, 1044, 1045, 969, 1046, 1047, 1047, 1, 1014, 1049, 969, 1048, 1048, 1048, 1, 1049, 969, 1050, 1050, 1050, 1, 1049, 969, 1051, 1051, 1051, 1, 1049, 969, 1, 1036, 1036, 1036, 1, 1014, 1049, 969, 1052, 1048, 1048, 1, 1014, 1049, 969, 1053, 1050, 1050, 1, 1014, 1049, 969, 1051, 1051, 1051, 1, 1014, 1054, 1049, 969, 1052, 1055, 1048, 1048, 1, 1014, 1049, 969, 1053, 1050, 1050, 1050, 1, 1014, 1049, 969, 1050, 1050, 1050, 1, 1014, 1049, 969, 1055, 1048, 1048, 1, 1049, 969, 1048, 1048, 1048, 1, 1056, 1057, 1058, 969, 1059, 1060, 1060, 1, 1014, 1062, 969, 1061, 1061, 1061, 1, 1062, 969, 1063, 1063, 1063, 1, 1062, 969, 1064, 1064, 1064, 1, 1062, 969, 1, 1043, 1044, 1045, 1046, 1047, 1047, 1, 1014, 1062, 969, 1065, 1061, 1061, 1, 1014, 1062, 969, 1066, 1063, 1063, 1, 1014, 1062, 969, 1064, 1064, 1064, 1, 1014, 1067, 1062, 969, 1065, 1068, 1061, 1061, 1, 1014, 1062, 969, 1066, 1063, 1063, 1063, 1, 1014, 1062, 969, 1063, 1063, 1063, 1, 1014, 1062, 969, 1068, 1061, 1061, 1, 1062, 969, 1061, 1061, 1061, 1, 1069, 1070, 1071, 969, 1072, 1073, 1073, 1, 1014, 1075, 969, 1074, 1074, 1074, 1, 1075, 969, 1076, 1076, 1076, 1, 1075, 969, 1077, 1077, 1077, 1, 1075, 969, 1, 1056, 1057, 1058, 1059, 1060, 1060, 1, 1014, 1075, 969, 1078, 1074, 1074, 1, 1014, 1075, 969, 1079, 1076, 1076, 1, 1014, 1075, 969, 1077, 1077, 1077, 1, 1014, 1080, 1075, 969, 1078, 1081, 1074, 1074, 1, 1014, 1075, 969, 1079, 1076, 1076, 1076, 1, 1014, 1075, 969, 1076, 1076, 1076, 1, 1014, 1075, 969, 1081, 1074, 1074, 1, 1075, 969, 1074, 1074, 1074, 1, 1082, 1083, 1084, 969, 1085, 1086, 1086, 1, 1014, 1088, 969, 1087, 1087, 1087, 1, 1088, 969, 1089, 1089, 1089, 1, 1088, 969, 1090, 1090, 1090, 1, 1088, 969, 1, 1069, 1070, 1071, 1072, 1073, 1073, 1, 1014, 1088, 969, 1091, 1087, 1087, 1, 1014, 1088, 969, 1092, 1089, 1089, 1, 1014, 1088, 969, 1090, 1090, 1090, 1, 1014, 1093, 1088, 969, 1091, 1094, 1087, 1087, 1, 1014, 1088, 969, 1092, 1089, 1089, 1089, 1, 1014, 1088, 969, 1089, 1089, 1089, 1, 1014, 1088, 969, 1094, 1087, 1087, 1, 1088, 969, 1087, 1087, 1087, 1, 1095, 1096, 1097, 969, 1098, 1099, 1099, 1, 1014, 1101, 969, 1100, 1100, 1100, 1, 1101, 969, 1102, 1102, 1102, 1, 1101, 969, 1103, 1103, 1103, 1, 1101, 969, 1, 1082, 1083, 1084, 1085, 1086, 1086, 1, 1014, 1101, 969, 1104, 1100, 1100, 1, 1014, 1101, 969, 1105, 1102, 1102, 1, 1014, 1101, 969, 1103, 1103, 1103, 1, 1014, 1106, 1101, 969, 1104, 1107, 1100, 1100, 1, 1014, 1101, 969, 1105, 1102, 1102, 1102, 1, 1014, 1101, 969, 1102, 1102, 1102, 1, 1014, 1101, 969, 1107, 1100, 1100, 1, 1101, 969, 1100, 1100, 1100, 1, 1108, 1, 1109, 1110, 1111, 969, 1112, 1113, 1113, 1, 1014, 1115, 969, 1114, 1114, 1114, 1, 1115, 969, 1116, 1116, 1116, 1, 1115, 969, 1117, 1117, 1117, 1, 1115, 969, 1, 1095, 1096, 1097, 1098, 1099, 1099, 1, 1014, 1115, 969, 1118, 1114, 1114, 1, 1014, 1115, 969, 1119, 1116, 1116, 1, 1014, 1115, 969, 1117, 1117, 1117, 1, 1014, 1120, 1115, 969, 1118, 1121, 1114, 1114, 1, 1014, 1115, 969, 1119, 1116, 1116, 1116, 1, 1014, 1115, 969, 1116, 1116, 1116, 1, 1014, 1115, 969, 1121, 1114, 1114, 1, 1115, 969, 1114, 1114, 1114, 1, 1122, 1, 949, 46, 949, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1123, 1123, 941, 941, 941, 941, 941, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1124, 1124, 941, 941, 941, 941, 941, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1125, 1125, 941, 941, 941, 941, 941, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1126, 1126, 941, 941, 941, 941, 941, 1, 1127, 1128, 1127, 941, 941, 941, 1129, 1130, 1131, 941, 941, 941, 941, 941, 1, 1132, 1133, 1132, 903, 905, 1134, 1, 1135, 1, 1136, 1136, 1, 1136, 1136, 903, 905, 1134, 1, 1134, 1137, 1134, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1, 1139, 1, 1140, 1140, 1, 1140, 1140, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1138, 1, 1141, 1142, 1141, 1138, 1138, 1138, 1143, 905, 1138, 1138, 1138, 1138, 1138, 1, 1144, 1, 1136, 46, 1136, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1145, 1145, 941, 941, 941, 941, 941, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1146, 1146, 941, 941, 941, 941, 941, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1147, 1147, 941, 941, 941, 941, 941, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1148, 1148, 941, 941, 941, 941, 941, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1149, 1149, 941, 941, 941, 941, 941, 1, 1150, 1151, 1150, 941, 941, 941, 1152, 941, 941, 941, 941, 941, 941, 1, 1150, 1151, 1150, 1152, 1, 1153, 1, 1154, 1154, 1, 1154, 1154, 1152, 1, 1152, 1155, 1152, 1156, 1156, 1156, 1157, 1156, 1156, 1156, 1156, 1156, 1156, 1, 1158, 1, 1159, 1159, 1, 1159, 1159, 1156, 1156, 1156, 1157, 1156, 1156, 1156, 1156, 1156, 1156, 1, 1160, 1161, 1160, 1162, 1162, 1162, 1163, 1164, 1162, 1162, 1162, 1162, 1162, 1, 1160, 1161, 1160, 1162, 1162, 1162, 1163, 1165, 1164, 1162, 1162, 1162, 1162, 1162, 1, 1160, 1161, 1160, 1162, 1162, 1162, 1163, 1164, 1166, 1162, 1162, 1162, 1162, 1162, 1, 1160, 1161, 1160, 1162, 1162, 1162, 1163, 1164, 1167, 1162, 1162, 1162, 1162, 1162, 1, 1160, 1161, 1160, 1162, 1162, 1162, 1163, 1168, 1164, 1162, 1162, 1162, 1162, 1162, 1, 1160, 1161, 1160, 1162, 1162, 1162, 1163, 1164, 1169, 1162, 1162, 1162, 1162, 1162, 1, 1160, 1161, 1160, 1162, 1162, 1162, 1163, 1164, 1170, 1162, 1162, 1162, 1162, 1162, 1, 1160, 1161, 1160, 1171, 1171, 1171, 1163, 1164, 1171, 1171, 1171, 1171, 1171, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1172, 1173, 1172, 1173, 941, 941, 941, 941, 941, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1174, 1174, 941, 941, 941, 941, 941, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1175, 1175, 941, 941, 941, 941, 941, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1176, 1176, 941, 941, 941, 941, 941, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1177, 1177, 941, 941, 941, 941, 941, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1178, 1178, 941, 941, 941, 941, 941, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1179, 1179, 941, 941, 941, 941, 941, 1, 1180, 1181, 1180, 941, 941, 941, 1182, 941, 941, 941, 941, 941, 941, 1, 1180, 1181, 1180, 1182, 1, 1183, 1, 1184, 1184, 1, 1184, 1184, 1182, 1, 1182, 1185, 1182, 1186, 1187, 1188, 1190, 1189, 1191, 1191, 1, 1192, 1, 1193, 1193, 1, 1193, 1193, 1186, 1187, 1188, 1190, 1189, 1191, 1191, 1, 1194, 1196, 1195, 1195, 1195, 1, 1197, 1198, 1199, 1200, 1, 1201, 1, 1202, 1203, 1204, 1205, 1, 1206, 1, 1207, 1208, 1209, 1210, 1, 1211, 1212, 1211, 1213, 1214, 1, 1211, 1212, 1211, 1213, 1214, 1210, 1, 1211, 1212, 1211, 1213, 1214, 1207, 1, 1211, 1212, 1211, 1213, 1215, 1214, 1210, 1207, 1, 1211, 1212, 1211, 1213, 1214, 1207, 1, 1206, 1205, 1, 1206, 1202, 1, 1206, 1216, 1205, 1202, 1, 1206, 1202, 1, 1201, 1200, 1, 1201, 1197, 1, 1201, 1217, 1200, 1197, 1, 1201, 1197, 1, 1196, 1218, 1218, 1218, 1, 1196, 1219, 1219, 1219, 1, 1196, 1, 1221, 1220, 1220, 1220, 1, 1223, 1222, 1222, 1222, 1, 1223, 1224, 1224, 1224, 1, 1223, 1225, 1225, 1225, 1, 1223, 1, 1227, 1226, 1226, 1226, 1, 1229, 1228, 1228, 1228, 1, 1229, 1230, 1230, 1230, 1, 1229, 1231, 1231, 1231, 1, 1229, 1, 1233, 1232, 1232, 1232, 1, 1235, 1234, 1234, 1234, 1, 1235, 1236, 1236, 1236, 1, 1235, 1237, 1237, 1237, 1, 1235, 1, 1239, 1238, 1238, 1238, 1, 1241, 1240, 1240, 1240, 1, 1241, 1242, 1242, 1242, 1, 1241, 1243, 1243, 1243, 1, 1241, 1, 1245, 1244, 1244, 1244, 1, 1247, 1246, 1246, 1246, 1, 1247, 1248, 1248, 1248, 1, 1247, 1249, 1249, 1249, 1, 1247, 1, 1250, 1251, 1252, 1254, 1253, 1255, 1255, 1, 1194, 1257, 1256, 1256, 1256, 1, 1257, 1258, 1258, 1258, 1, 1257, 1259, 1259, 1259, 1, 1257, 1, 1207, 1260, 1260, 1260, 1, 1211, 1212, 1211, 1213, 1214, 1261, 1261, 1261, 1, 1211, 1212, 1211, 1213, 1214, 1262, 1262, 1262, 1, 1211, 1212, 1211, 1213, 1214, 1207, 1207, 1207, 1, 1194, 1257, 1263, 1256, 1256, 1, 1194, 1257, 1264, 1258, 1258, 1, 1194, 1257, 1259, 1259, 1259, 1, 1194, 1265, 1257, 1263, 1266, 1256, 1256, 1, 1194, 1257, 1264, 1258, 1258, 1258, 1, 1194, 1257, 1258, 1258, 1258, 1, 1194, 1257, 1266, 1256, 1256, 1, 1211, 1212, 1211, 1213, 1214, 1260, 1260, 1260, 1, 1257, 1256, 1256, 1256, 1, 1211, 1212, 1211, 1213, 1267, 1268, 1269, 1214, 1270, 1271, 1271, 1, 1211, 1212, 1211, 1213, 1194, 1273, 1214, 1272, 1272, 1272, 1, 1211, 1212, 1211, 1213, 1273, 1214, 1274, 1274, 1274, 1, 1211, 1212, 1211, 1213, 1273, 1214, 1275, 1275, 1275, 1, 1211, 1212, 1211, 1213, 1273, 1214, 1, 1260, 1260, 1260, 1, 1211, 1212, 1211, 1213, 1194, 1273, 1214, 1276, 1272, 1272, 1, 1211, 1212, 1211, 1213, 1194, 1273, 1214, 1277, 1274, 1274, 1, 1211, 1212, 1211, 1213, 1194, 1273, 1214, 1275, 1275, 1275, 1, 1211, 1212, 1211, 1213, 1194, 1278, 1273, 1214, 1276, 1279, 1272, 1272, 1, 1211, 1212, 1211, 1213, 1194, 1273, 1214, 1277, 1274, 1274, 1274, 1, 1211, 1212, 1211, 1213, 1194, 1273, 1214, 1274, 1274, 1274, 1, 1211, 1212, 1211, 1213, 1194, 1273, 1214, 1279, 1272, 1272, 1, 1211, 1212, 1211, 1213, 1273, 1214, 1272, 1272, 1272, 1, 1211, 1212, 1211, 1213, 1280, 1281, 1282, 1214, 1283, 1284, 1284, 1, 1211, 1212, 1211, 1213, 1194, 1286, 1214, 1285, 1285, 1285, 1, 1211, 1212, 1211, 1213, 1286, 1214, 1287, 1287, 1287, 1, 1211, 1212, 1211, 1213, 1286, 1214, 1288, 1288, 1288, 1, 1211, 1212, 1211, 1213, 1286, 1214, 1, 1267, 1268, 1269, 1270, 1271, 1271, 1, 1211, 1212, 1211, 1213, 1194, 1286, 1214, 1289, 1285, 1285, 1, 1211, 1212, 1211, 1213, 1194, 1286, 1214, 1290, 1287, 1287, 1, 1211, 1212, 1211, 1213, 1194, 1286, 1214, 1288, 1288, 1288, 1, 1211, 1212, 1211, 1213, 1194, 1291, 1286, 1214, 1289, 1292, 1285, 1285, 1, 1211, 1212, 1211, 1213, 1194, 1286, 1214, 1290, 1287, 1287, 1287, 1, 1211, 1212, 1211, 1213, 1194, 1286, 1214, 1287, 1287, 1287, 1, 1211, 1212, 1211, 1213, 1194, 1286, 1214, 1292, 1285, 1285, 1, 1211, 1212, 1211, 1213, 1286, 1214, 1285, 1285, 1285, 1, 1211, 1212, 1211, 1213, 1293, 1294, 1295, 1214, 1296, 1297, 1297, 1, 1211, 1212, 1211, 1213, 1194, 1299, 1214, 1298, 1298, 1298, 1, 1211, 1212, 1211, 1213, 1299, 1214, 1300, 1300, 1300, 1, 1211, 1212, 1211, 1213, 1299, 1214, 1301, 1301, 1301, 1, 1211, 1212, 1211, 1213, 1299, 1214, 1, 1280, 1281, 1282, 1283, 1284, 1284, 1, 1211, 1212, 1211, 1213, 1194, 1299, 1214, 1302, 1298, 1298, 1, 1211, 1212, 1211, 1213, 1194, 1299, 1214, 1303, 1300, 1300, 1, 1211, 1212, 1211, 1213, 1194, 1299, 1214, 1301, 1301, 1301, 1, 1211, 1212, 1211, 1213, 1194, 1304, 1299, 1214, 1302, 1305, 1298, 1298, 1, 1211, 1212, 1211, 1213, 1194, 1299, 1214, 1303, 1300, 1300, 1300, 1, 1211, 1212, 1211, 1213, 1194, 1299, 1214, 1300, 1300, 1300, 1, 1211, 1212, 1211, 1213, 1194, 1299, 1214, 1305, 1298, 1298, 1, 1211, 1212, 1211, 1213, 1299, 1214, 1298, 1298, 1298, 1, 1211, 1212, 1211, 1213, 1306, 1307, 1308, 1214, 1309, 1310, 1310, 1, 1211, 1212, 1211, 1213, 1194, 1312, 1214, 1311, 1311, 1311, 1, 1211, 1212, 1211, 1213, 1312, 1214, 1313, 1313, 1313, 1, 1211, 1212, 1211, 1213, 1312, 1214, 1314, 1314, 1314, 1, 1211, 1212, 1211, 1213, 1312, 1214, 1, 1293, 1294, 1295, 1296, 1297, 1297, 1, 1211, 1212, 1211, 1213, 1194, 1312, 1214, 1315, 1311, 1311, 1, 1211, 1212, 1211, 1213, 1194, 1312, 1214, 1316, 1313, 1313, 1, 1211, 1212, 1211, 1213, 1194, 1312, 1214, 1314, 1314, 1314, 1, 1211, 1212, 1211, 1213, 1194, 1317, 1312, 1214, 1315, 1318, 1311, 1311, 1, 1211, 1212, 1211, 1213, 1194, 1312, 1214, 1316, 1313, 1313, 1313, 1, 1211, 1212, 1211, 1213, 1194, 1312, 1214, 1313, 1313, 1313, 1, 1211, 1212, 1211, 1213, 1194, 1312, 1214, 1318, 1311, 1311, 1, 1211, 1212, 1211, 1213, 1312, 1214, 1311, 1311, 1311, 1, 1211, 1212, 1211, 1213, 1319, 1320, 1321, 1214, 1322, 1323, 1323, 1, 1211, 1212, 1211, 1213, 1194, 1325, 1214, 1324, 1324, 1324, 1, 1211, 1212, 1211, 1213, 1325, 1214, 1326, 1326, 1326, 1, 1211, 1212, 1211, 1213, 1325, 1214, 1327, 1327, 1327, 1, 1211, 1212, 1211, 1213, 1325, 1214, 1, 1306, 1307, 1308, 1309, 1310, 1310, 1, 1211, 1212, 1211, 1213, 1194, 1325, 1214, 1328, 1324, 1324, 1, 1211, 1212, 1211, 1213, 1194, 1325, 1214, 1329, 1326, 1326, 1, 1211, 1212, 1211, 1213, 1194, 1325, 1214, 1327, 1327, 1327, 1, 1211, 1212, 1211, 1213, 1194, 1330, 1325, 1214, 1328, 1331, 1324, 1324, 1, 1211, 1212, 1211, 1213, 1194, 1325, 1214, 1329, 1326, 1326, 1326, 1, 1211, 1212, 1211, 1213, 1194, 1325, 1214, 1326, 1326, 1326, 1, 1211, 1212, 1211, 1213, 1194, 1325, 1214, 1331, 1324, 1324, 1, 1211, 1212, 1211, 1213, 1325, 1214, 1324, 1324, 1324, 1, 1194, 1196, 1332, 1195, 1195, 1, 1194, 1196, 1333, 1218, 1218, 1, 1194, 1196, 1219, 1219, 1219, 1, 1194, 1334, 1196, 1332, 1335, 1195, 1195, 1, 1194, 1196, 1333, 1218, 1218, 1218, 1, 1194, 1196, 1218, 1218, 1218, 1, 1194, 1196, 1335, 1195, 1195, 1, 1336, 1, 1211, 1212, 1211, 1213, 1337, 1338, 1339, 1214, 1340, 1341, 1341, 1, 1211, 1212, 1211, 1213, 1194, 1343, 1214, 1342, 1342, 1342, 1, 1211, 1212, 1211, 1213, 1343, 1214, 1344, 1344, 1344, 1, 1211, 1212, 1211, 1213, 1343, 1214, 1345, 1345, 1345, 1, 1211, 1212, 1211, 1213, 1343, 1214, 1, 1319, 1320, 1321, 1322, 1323, 1323, 1, 1211, 1212, 1211, 1213, 1194, 1343, 1214, 1346, 1342, 1342, 1, 1211, 1212, 1211, 1213, 1194, 1343, 1214, 1347, 1344, 1344, 1, 1211, 1212, 1211, 1213, 1194, 1343, 1214, 1345, 1345, 1345, 1, 1211, 1212, 1211, 1213, 1194, 1348, 1343, 1214, 1346, 1349, 1342, 1342, 1, 1211, 1212, 1211, 1213, 1194, 1343, 1214, 1347, 1344, 1344, 1344, 1, 1211, 1212, 1211, 1213, 1194, 1343, 1214, 1344, 1344, 1344, 1, 1211, 1212, 1211, 1213, 1194, 1343, 1214, 1349, 1342, 1342, 1, 1211, 1212, 1211, 1213, 1343, 1214, 1342, 1342, 1342, 1, 1196, 1195, 1195, 1195, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1350, 1350, 941, 941, 941, 941, 941, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1351, 1351, 941, 941, 941, 941, 941, 1, 939, 940, 939, 941, 941, 941, 942, 943, 944, 1352, 1352, 941, 941, 941, 941, 941, 1, 1353, 1354, 1353, 941, 941, 941, 1355, 1356, 1357, 941, 941, 941, 941, 941, 1, 1358, 1359, 1358, 903, 905, 1360, 1, 1361, 1, 1362, 1362, 1, 1362, 1362, 903, 905, 1360, 1, 1360, 1363, 1360, 1364, 1366, 1365, 1367, 1, 1368, 1, 1369, 1369, 1, 1369, 1369, 1364, 1366, 1365, 1367, 1, 1370, 1371, 1, 1372, 1373, 1, 1374, 1, 1141, 1142, 1141, 1143, 905, 1, 1141, 1142, 1141, 1143, 905, 1374, 1, 1141, 1142, 1141, 1143, 905, 1373, 1, 1141, 1142, 1141, 1143, 905, 1367, 1, 1141, 1142, 1141, 1143, 905, 1371, 1, 1141, 1142, 1141, 1143, 1375, 905, 1367, 1371, 1, 1141, 1142, 1141, 1143, 1376, 905, 1371, 1373, 1, 1141, 1142, 1141, 1143, 1377, 905, 1373, 1374, 1, 1141, 1142, 1141, 1143, 905, 1374, 1, 1378, 1, 1362, 46, 1362, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 924, 925, 924, 926, 927, 923, 1, 924, 925, 924, 926, 927, 922, 1, 924, 925, 924, 926, 927, 1379, 1, 924, 925, 924, 926, 927, 920, 1, 924, 925, 924, 926, 1380, 927, 1379, 920, 1, 924, 925, 924, 926, 1381, 927, 920, 922, 1, 924, 925, 924, 926, 1382, 927, 922, 923, 1, 924, 925, 924, 926, 927, 923, 1, 1383, 1, 907, 46, 907, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 897, 897, 893, 893, 893, 1, 894, 895, 894, 896, 899, 900, 891, 893, 893, 1, 1384, 1385, 1386, 1387, 893, 893, 1, 889, 1388, 889, 891, 891, 891, 1, 1389, 1390, 1391, 1392, 893, 893, 1, 889, 1393, 889, 891, 891, 891, 1, 1394, 1395, 1396, 1397, 893, 893, 1, 894, 895, 894, 896, 889, 892, 899, 900, 889, 891, 891, 891, 1, 894, 895, 894, 896, 889, 892, 899, 900, 889, 1397, 891, 891, 1, 894, 895, 894, 896, 889, 892, 899, 900, 889, 1394, 891, 891, 1, 894, 895, 894, 896, 889, 892, 1398, 899, 900, 889, 1397, 1394, 891, 891, 1, 894, 895, 894, 896, 889, 892, 899, 900, 889, 1394, 891, 891, 891, 1, 889, 1393, 889, 1392, 891, 891, 1, 889, 1393, 889, 1389, 891, 891, 1, 889, 1393, 1399, 889, 1392, 1389, 891, 891, 1, 889, 1393, 889, 1389, 891, 891, 891, 1, 889, 1388, 889, 1387, 891, 891, 1, 889, 1388, 889, 1384, 891, 891, 1, 889, 1388, 1400, 889, 1387, 1384, 891, 891, 1, 889, 1388, 889, 1384, 891, 891, 891, 1, 889, 890, 889, 1401, 891, 891, 1, 889, 890, 889, 1402, 891, 891, 1, 889, 890, 1403, 889, 1401, 1402, 891, 891, 1, 889, 890, 889, 1402, 891, 891, 891, 1, 1405, 1404, 1404, 1404, 1, 1407, 1406, 1406, 1406, 1, 1407, 1408, 1408, 1408, 1, 1407, 1409, 1409, 1409, 1, 1407, 1, 1411, 1410, 1410, 1410, 1, 1413, 1412, 1412, 1412, 1, 1413, 1414, 1414, 1414, 1, 1413, 1415, 1415, 1415, 1, 1413, 1, 1417, 1416, 1416, 1416, 1, 1419, 1418, 1418, 1418, 1, 1419, 1420, 1420, 1420, 1, 1419, 1421, 1421, 1421, 1, 1419, 1, 1423, 1422, 1422, 1422, 1, 1425, 1424, 1424, 1424, 1, 1425, 1426, 1426, 1426, 1, 1425, 1427, 1427, 1427, 1, 1425, 1, 1429, 1428, 1428, 1428, 1, 1431, 1430, 1430, 1430, 1, 1431, 1432, 1432, 1432, 1, 1431, 1433, 1433, 1433, 1, 1431, 1, 1435, 1434, 1434, 1434, 1, 1437, 1436, 1436, 1436, 1, 1437, 1438, 1438, 1438, 1, 1437, 1439, 1439, 1439, 1, 1437, 1, 1440, 1441, 1442, 1444, 1443, 1445, 1445, 1, 1446, 1448, 1447, 1447, 1447, 1, 1449, 1450, 1451, 1452, 1, 1453, 1, 1454, 1455, 1456, 1457, 1, 1458, 1, 1459, 1460, 1461, 1462, 1, 1463, 1, 894, 895, 894, 896, 899, 900, 1, 1463, 1462, 1, 1463, 1459, 1, 1464, 1463, 1462, 1459, 1, 1463, 1459, 1, 1458, 1457, 1, 1458, 1454, 1, 1458, 1465, 1457, 1454, 1, 1458, 1454, 1, 1453, 1452, 1, 1453, 1449, 1, 1453, 1466, 1452, 1449, 1, 1453, 1449, 1, 1448, 1467, 1467, 1467, 1, 1448, 1468, 1468, 1468, 1, 1448, 1, 1459, 1469, 1469, 1469, 1, 1463, 1470, 1470, 1470, 1, 1463, 1471, 1471, 1471, 1, 1463, 1459, 1459, 1459, 1, 1446, 1448, 1472, 1447, 1447, 1, 1446, 1448, 1473, 1467, 1467, 1, 1446, 1448, 1468, 1468, 1468, 1, 1446, 1474, 1448, 1472, 1475, 1447, 1447, 1, 1446, 1448, 1473, 1467, 1467, 1467, 1, 1446, 1448, 1467, 1467, 1467, 1, 1446, 1448, 1475, 1447, 1447, 1, 1463, 1469, 1469, 1469, 1, 1448, 1447, 1447, 1447, 1, 1476, 1477, 1478, 1463, 1479, 1480, 1480, 1, 1446, 1482, 1463, 1481, 1481, 1481, 1, 1482, 1463, 1483, 1483, 1483, 1, 1482, 1463, 1484, 1484, 1484, 1, 1482, 1463, 1, 1469, 1469, 1469, 1, 1446, 1482, 1463, 1485, 1481, 1481, 1, 1446, 1482, 1463, 1486, 1483, 1483, 1, 1446, 1482, 1463, 1484, 1484, 1484, 1, 1446, 1487, 1482, 1463, 1485, 1488, 1481, 1481, 1, 1446, 1482, 1463, 1486, 1483, 1483, 1483, 1, 1446, 1482, 1463, 1483, 1483, 1483, 1, 1446, 1482, 1463, 1488, 1481, 1481, 1, 1482, 1463, 1481, 1481, 1481, 1, 1489, 1490, 1491, 1463, 1492, 1493, 1493, 1, 1446, 1495, 1463, 1494, 1494, 1494, 1, 1495, 1463, 1496, 1496, 1496, 1, 1495, 1463, 1497, 1497, 1497, 1, 1495, 1463, 1, 1476, 1477, 1478, 1479, 1480, 1480, 1, 1446, 1495, 1463, 1498, 1494, 1494, 1, 1446, 1495, 1463, 1499, 1496, 1496, 1, 1446, 1495, 1463, 1497, 1497, 1497, 1, 1446, 1500, 1495, 1463, 1498, 1501, 1494, 1494, 1, 1446, 1495, 1463, 1499, 1496, 1496, 1496, 1, 1446, 1495, 1463, 1496, 1496, 1496, 1, 1446, 1495, 1463, 1501, 1494, 1494, 1, 1495, 1463, 1494, 1494, 1494, 1, 1502, 1503, 1504, 1463, 1505, 1506, 1506, 1, 1446, 1508, 1463, 1507, 1507, 1507, 1, 1508, 1463, 1509, 1509, 1509, 1, 1508, 1463, 1510, 1510, 1510, 1, 1508, 1463, 1, 1489, 1490, 1491, 1492, 1493, 1493, 1, 1446, 1508, 1463, 1511, 1507, 1507, 1, 1446, 1508, 1463, 1512, 1509, 1509, 1, 1446, 1508, 1463, 1510, 1510, 1510, 1, 1446, 1513, 1508, 1463, 1511, 1514, 1507, 1507, 1, 1446, 1508, 1463, 1512, 1509, 1509, 1509, 1, 1446, 1508, 1463, 1509, 1509, 1509, 1, 1446, 1508, 1463, 1514, 1507, 1507, 1, 1508, 1463, 1507, 1507, 1507, 1, 1515, 1516, 1517, 1463, 1518, 1519, 1519, 1, 1446, 1521, 1463, 1520, 1520, 1520, 1, 1521, 1463, 1522, 1522, 1522, 1, 1521, 1463, 1523, 1523, 1523, 1, 1521, 1463, 1, 1502, 1503, 1504, 1505, 1506, 1506, 1, 1446, 1521, 1463, 1524, 1520, 1520, 1, 1446, 1521, 1463, 1525, 1522, 1522, 1, 1446, 1521, 1463, 1523, 1523, 1523, 1, 1446, 1526, 1521, 1463, 1524, 1527, 1520, 1520, 1, 1446, 1521, 1463, 1525, 1522, 1522, 1522, 1, 1446, 1521, 1463, 1522, 1522, 1522, 1, 1446, 1521, 1463, 1527, 1520, 1520, 1, 1521, 1463, 1520, 1520, 1520, 1, 1528, 1529, 1530, 1463, 1531, 1532, 1532, 1, 1446, 1534, 1463, 1533, 1533, 1533, 1, 1534, 1463, 1535, 1535, 1535, 1, 1534, 1463, 1536, 1536, 1536, 1, 1534, 1463, 1, 1515, 1516, 1517, 1518, 1519, 1519, 1, 1446, 1534, 1463, 1537, 1533, 1533, 1, 1446, 1534, 1463, 1538, 1535, 1535, 1, 1446, 1534, 1463, 1536, 1536, 1536, 1, 1446, 1539, 1534, 1463, 1537, 1540, 1533, 1533, 1, 1446, 1534, 1463, 1538, 1535, 1535, 1535, 1, 1446, 1534, 1463, 1535, 1535, 1535, 1, 1446, 1534, 1463, 1540, 1533, 1533, 1, 1534, 1463, 1533, 1533, 1533, 1, 1541, 1, 1542, 1543, 1544, 1463, 1545, 1546, 1546, 1, 1446, 1548, 1463, 1547, 1547, 1547, 1, 1548, 1463, 1549, 1549, 1549, 1, 1548, 1463, 1550, 1550, 1550, 1, 1548, 1463, 1, 1528, 1529, 1530, 1531, 1532, 1532, 1, 1446, 1548, 1463, 1551, 1547, 1547, 1, 1446, 1548, 1463, 1552, 1549, 1549, 1, 1446, 1548, 1463, 1550, 1550, 1550, 1, 1446, 1553, 1548, 1463, 1551, 1554, 1547, 1547, 1, 1446, 1548, 1463, 1552, 1549, 1549, 1549, 1, 1446, 1548, 1463, 1549, 1549, 1549, 1, 1446, 1548, 1463, 1554, 1547, 1547, 1, 1548, 1463, 1547, 1547, 1547, 1, 60, 60, 61, 61, 61, 62, 1555, 1555, 61, 61, 61, 61, 61, 61, 1, 851, 851, 61, 61, 61, 852, 61, 61, 61, 61, 61, 61, 1, 676, 677, 676, 672, 672, 672, 665, 678, 1556, 1556, 672, 672, 672, 672, 672, 672, 1, 676, 677, 676, 672, 672, 672, 665, 678, 1557, 1557, 672, 672, 672, 672, 672, 672, 1, 1558, 1559, 1558, 672, 672, 672, 665, 1560, 672, 672, 672, 672, 672, 672, 1, 1558, 1561, 1558, 665, 1560, 1, 1562, 1, 1563, 1563, 1, 1563, 1563, 665, 1560, 1, 1560, 1564, 1560, 1565, 684, 1565, 1565, 685, 1565, 1565, 1565, 1565, 1565, 1565, 1, 1566, 1, 1567, 1567, 1, 1567, 1567, 1565, 684, 1565, 1565, 685, 1565, 1565, 1565, 1565, 1565, 1565, 1, 1568, 1569, 1568, 1570, 1570, 1570, 1571, 1570, 1570, 1570, 1570, 1570, 1570, 1, 1572, 1, 1563, 46, 1563, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 631, 1573, 632, 631, 631, 631, 631, 631, 1, 1574, 1574, 1574, 1, 631, 631, 631, 1, 632, 631, 662, 1, 632, 631, 661, 1, 632, 631, 657, 1, 632, 631, 659, 1, 1575, 632, 631, 657, 659, 1, 1576, 632, 631, 659, 661, 1, 1577, 632, 631, 661, 662, 1, 632, 631, 662, 1, 1578, 1579, 1580, 1581, 646, 646, 1, 647, 1582, 647, 649, 649, 649, 1, 1583, 1584, 1585, 1586, 646, 646, 1, 647, 1587, 647, 649, 649, 649, 1, 1588, 1589, 1590, 1591, 646, 646, 1, 647, 650, 653, 632, 631, 647, 649, 649, 649, 1, 647, 650, 653, 632, 631, 647, 1591, 649, 649, 1, 647, 650, 653, 632, 631, 647, 1588, 649, 649, 1, 647, 650, 1592, 653, 632, 631, 647, 1591, 1588, 649, 649, 1, 647, 650, 653, 632, 631, 647, 1588, 649, 649, 649, 1, 647, 1587, 647, 1586, 649, 649, 1, 647, 1587, 647, 1583, 649, 649, 1, 647, 1587, 1593, 647, 1586, 1583, 649, 649, 1, 647, 1587, 647, 1583, 649, 649, 649, 1, 647, 1582, 647, 1581, 649, 649, 1, 647, 1582, 647, 1578, 649, 649, 1, 647, 1582, 1594, 647, 1581, 1578, 649, 649, 1, 647, 1582, 647, 1578, 649, 649, 649, 1, 647, 648, 647, 645, 649, 649, 1, 647, 648, 647, 642, 649, 649, 1, 647, 648, 1595, 647, 645, 642, 649, 649, 1, 647, 648, 647, 642, 649, 649, 649, 1, 1597, 1596, 1596, 1596, 1, 1599, 1598, 1598, 1598, 1, 1599, 1600, 1600, 1600, 1, 1599, 1601, 1601, 1601, 1, 1599, 1, 1603, 1602, 1602, 1602, 1, 1605, 1604, 1604, 1604, 1, 1605, 1606, 1606, 1606, 1, 1605, 1607, 1607, 1607, 1, 1605, 1, 1609, 1608, 1608, 1608, 1, 1611, 1610, 1610, 1610, 1, 1611, 1612, 1612, 1612, 1, 1611, 1613, 1613, 1613, 1, 1611, 1, 1615, 1614, 1614, 1614, 1, 1617, 1616, 1616, 1616, 1, 1617, 1618, 1618, 1618, 1, 1617, 1619, 1619, 1619, 1, 1617, 1, 1621, 1620, 1620, 1620, 1, 1623, 1622, 1622, 1622, 1, 1623, 1624, 1624, 1624, 1, 1623, 1625, 1625, 1625, 1, 1623, 1, 1627, 1626, 1626, 1626, 1, 1629, 1628, 1628, 1628, 1, 1629, 1630, 1630, 1630, 1, 1629, 1631, 1631, 1631, 1, 1629, 1, 1632, 1633, 1634, 1636, 1635, 1637, 1637, 1, 1638, 1640, 1639, 1639, 1639, 1, 1641, 1642, 1643, 1644, 1, 1645, 1, 1646, 1647, 1648, 1649, 1, 1650, 1, 1651, 1652, 1653, 1654, 1, 1655, 1, 653, 632, 631, 1, 1655, 1654, 1, 1655, 1651, 1, 1656, 1655, 1654, 1651, 1, 1655, 1651, 1, 1650, 1649, 1, 1650, 1646, 1, 1650, 1657, 1649, 1646, 1, 1650, 1646, 1, 1645, 1644, 1, 1645, 1641, 1, 1645, 1658, 1644, 1641, 1, 1645, 1641, 1, 1640, 1659, 1659, 1659, 1, 1640, 1660, 1660, 1660, 1, 1640, 1, 1651, 1661, 1661, 1661, 1, 1655, 1662, 1662, 1662, 1, 1655, 1663, 1663, 1663, 1, 1655, 1651, 1651, 1651, 1, 1638, 1640, 1664, 1639, 1639, 1, 1638, 1640, 1665, 1659, 1659, 1, 1638, 1640, 1660, 1660, 1660, 1, 1638, 1666, 1640, 1664, 1667, 1639, 1639, 1, 1638, 1640, 1665, 1659, 1659, 1659, 1, 1638, 1640, 1659, 1659, 1659, 1, 1638, 1640, 1667, 1639, 1639, 1, 1655, 1661, 1661, 1661, 1, 1640, 1639, 1639, 1639, 1, 1668, 1669, 1670, 1655, 1671, 1672, 1672, 1, 1638, 1674, 1655, 1673, 1673, 1673, 1, 1674, 1655, 1675, 1675, 1675, 1, 1674, 1655, 1676, 1676, 1676, 1, 1674, 1655, 1, 1661, 1661, 1661, 1, 1638, 1674, 1655, 1677, 1673, 1673, 1, 1638, 1674, 1655, 1678, 1675, 1675, 1, 1638, 1674, 1655, 1676, 1676, 1676, 1, 1638, 1679, 1674, 1655, 1677, 1680, 1673, 1673, 1, 1638, 1674, 1655, 1678, 1675, 1675, 1675, 1, 1638, 1674, 1655, 1675, 1675, 1675, 1, 1638, 1674, 1655, 1680, 1673, 1673, 1, 1674, 1655, 1673, 1673, 1673, 1, 1681, 1682, 1683, 1655, 1684, 1685, 1685, 1, 1638, 1687, 1655, 1686, 1686, 1686, 1, 1687, 1655, 1688, 1688, 1688, 1, 1687, 1655, 1689, 1689, 1689, 1, 1687, 1655, 1, 1668, 1669, 1670, 1671, 1672, 1672, 1, 1638, 1687, 1655, 1690, 1686, 1686, 1, 1638, 1687, 1655, 1691, 1688, 1688, 1, 1638, 1687, 1655, 1689, 1689, 1689, 1, 1638, 1692, 1687, 1655, 1690, 1693, 1686, 1686, 1, 1638, 1687, 1655, 1691, 1688, 1688, 1688, 1, 1638, 1687, 1655, 1688, 1688, 1688, 1, 1638, 1687, 1655, 1693, 1686, 1686, 1, 1687, 1655, 1686, 1686, 1686, 1, 1694, 1695, 1696, 1655, 1697, 1698, 1698, 1, 1638, 1700, 1655, 1699, 1699, 1699, 1, 1700, 1655, 1701, 1701, 1701, 1, 1700, 1655, 1702, 1702, 1702, 1, 1700, 1655, 1, 1681, 1682, 1683, 1684, 1685, 1685, 1, 1638, 1700, 1655, 1703, 1699, 1699, 1, 1638, 1700, 1655, 1704, 1701, 1701, 1, 1638, 1700, 1655, 1702, 1702, 1702, 1, 1638, 1705, 1700, 1655, 1703, 1706, 1699, 1699, 1, 1638, 1700, 1655, 1704, 1701, 1701, 1701, 1, 1638, 1700, 1655, 1701, 1701, 1701, 1, 1638, 1700, 1655, 1706, 1699, 1699, 1, 1700, 1655, 1699, 1699, 1699, 1, 1707, 1708, 1709, 1655, 1710, 1711, 1711, 1, 1638, 1713, 1655, 1712, 1712, 1712, 1, 1713, 1655, 1714, 1714, 1714, 1, 1713, 1655, 1715, 1715, 1715, 1, 1713, 1655, 1, 1694, 1695, 1696, 1697, 1698, 1698, 1, 1638, 1713, 1655, 1716, 1712, 1712, 1, 1638, 1713, 1655, 1717, 1714, 1714, 1, 1638, 1713, 1655, 1715, 1715, 1715, 1, 1638, 1718, 1713, 1655, 1716, 1719, 1712, 1712, 1, 1638, 1713, 1655, 1717, 1714, 1714, 1714, 1, 1638, 1713, 1655, 1714, 1714, 1714, 1, 1638, 1713, 1655, 1719, 1712, 1712, 1, 1713, 1655, 1712, 1712, 1712, 1, 1720, 1721, 1722, 1655, 1723, 1724, 1724, 1, 1638, 1726, 1655, 1725, 1725, 1725, 1, 1726, 1655, 1727, 1727, 1727, 1, 1726, 1655, 1728, 1728, 1728, 1, 1726, 1655, 1, 1707, 1708, 1709, 1710, 1711, 1711, 1, 1638, 1726, 1655, 1729, 1725, 1725, 1, 1638, 1726, 1655, 1730, 1727, 1727, 1, 1638, 1726, 1655, 1728, 1728, 1728, 1, 1638, 1731, 1726, 1655, 1729, 1732, 1725, 1725, 1, 1638, 1726, 1655, 1730, 1727, 1727, 1727, 1, 1638, 1726, 1655, 1727, 1727, 1727, 1, 1638, 1726, 1655, 1732, 1725, 1725, 1, 1726, 1655, 1725, 1725, 1725, 1, 1733, 1, 1734, 1735, 1736, 1655, 1737, 1738, 1738, 1, 1638, 1740, 1655, 1739, 1739, 1739, 1, 1740, 1655, 1741, 1741, 1741, 1, 1740, 1655, 1742, 1742, 1742, 1, 1740, 1655, 1, 1720, 1721, 1722, 1723, 1724, 1724, 1, 1638, 1740, 1655, 1743, 1739, 1739, 1, 1638, 1740, 1655, 1744, 1741, 1741, 1, 1638, 1740, 1655, 1742, 1742, 1742, 1, 1638, 1745, 1740, 1655, 1743, 1746, 1739, 1739, 1, 1638, 1740, 1655, 1744, 1741, 1741, 1741, 1, 1638, 1740, 1655, 1741, 1741, 1741, 1, 1638, 1740, 1655, 1746, 1739, 1739, 1, 1740, 1655, 1739, 1739, 1739, 1, 1747, 1747, 1747, 1, 627, 627, 627, 1, 634, 1748, 631, 632, 631, 635, 634, 634, 634, 631, 634, 634, 1, 1749, 1749, 1749, 1, 634, 634, 634, 1, 631, 1573, 632, 633, 631, 631, 631, 631, 631, 1, 627, 628, 629, 1750, 634, 632, 635, 627, 627, 627, 627, 627, 1, 1751, 1752, 1753, 634, 632, 635, 1754, 1751, 1751, 1751, 1751, 1751, 1, 1751, 1752, 1753, 1755, 632, 1756, 1751, 1751, 1751, 1751, 1751, 1, 1752, 1757, 1758, 1752, 1759, 1752, 1752, 1752, 1752, 1752, 1, 1760, 1760, 1760, 1, 1752, 1752, 1752, 1, 1758, 1761, 1758, 1759, 1758, 1758, 1758, 1758, 1758, 1758, 1, 1762, 1762, 1762, 1, 1758, 1758, 1758, 1, 1763, 1764, 1765, 1754, 1766, 1767, 1767, 1, 1768, 1769, 1768, 1770, 1770, 1770, 1, 1768, 1768, 1770, 1770, 1770, 1, 1768, 1771, 1768, 1770, 1770, 1770, 1, 1770, 1767, 1767, 1, 1772, 1773, 631, 1774, 632, 631, 1772, 1767, 1767, 1767, 1, 1772, 1772, 1767, 1767, 1767, 1, 631, 1774, 632, 631, 1770, 1767, 1767, 1, 1775, 1777, 1776, 1778, 1, 1779, 1780, 1, 1781, 1782, 1, 1783, 1, 631, 632, 631, 1, 631, 632, 631, 1783, 1, 631, 632, 631, 1782, 1, 631, 632, 631, 1778, 1, 631, 632, 631, 1780, 1, 631, 1784, 632, 631, 1778, 1780, 1, 631, 1785, 632, 631, 1780, 1782, 1, 631, 1786, 632, 631, 1782, 1783, 1, 631, 632, 631, 1783, 1, 1787, 1788, 1789, 1790, 1767, 1767, 1, 1768, 1791, 1768, 1770, 1770, 1770, 1, 1792, 1793, 1794, 1795, 1767, 1767, 1, 1768, 1796, 1768, 1770, 1770, 1770, 1, 1797, 1798, 1799, 1800, 1767, 1767, 1, 1768, 1771, 631, 1774, 632, 631, 1768, 1770, 1770, 1770, 1, 1768, 1771, 631, 1774, 632, 631, 1768, 1800, 1770, 1770, 1, 1768, 1771, 631, 1774, 632, 631, 1768, 1797, 1770, 1770, 1, 1768, 1771, 631, 1801, 1774, 632, 631, 1768, 1800, 1797, 1770, 1770, 1, 1768, 1771, 631, 1774, 632, 631, 1768, 1797, 1770, 1770, 1770, 1, 1768, 1796, 1768, 1795, 1770, 1770, 1, 1768, 1796, 1768, 1792, 1770, 1770, 1, 1768, 1796, 1802, 1768, 1795, 1792, 1770, 1770, 1, 1768, 1796, 1768, 1792, 1770, 1770, 1770, 1, 1768, 1791, 1768, 1790, 1770, 1770, 1, 1768, 1791, 1768, 1787, 1770, 1770, 1, 1768, 1791, 1803, 1768, 1790, 1787, 1770, 1770, 1, 1768, 1791, 1768, 1787, 1770, 1770, 1770, 1, 1768, 1769, 1768, 1766, 1770, 1770, 1, 1768, 1769, 1768, 1763, 1770, 1770, 1, 1768, 1769, 1804, 1768, 1766, 1763, 1770, 1770, 1, 1768, 1769, 1768, 1763, 1770, 1770, 1770, 1, 1806, 1805, 1805, 1805, 1, 1808, 1807, 1807, 1807, 1, 1808, 1809, 1809, 1809, 1, 1808, 1810, 1810, 1810, 1, 1808, 1, 1812, 1811, 1811, 1811, 1, 1814, 1813, 1813, 1813, 1, 1814, 1815, 1815, 1815, 1, 1814, 1816, 1816, 1816, 1, 1814, 1, 1818, 1817, 1817, 1817, 1, 1820, 1819, 1819, 1819, 1, 1820, 1821, 1821, 1821, 1, 1820, 1822, 1822, 1822, 1, 1820, 1, 1824, 1823, 1823, 1823, 1, 1826, 1825, 1825, 1825, 1, 1826, 1827, 1827, 1827, 1, 1826, 1828, 1828, 1828, 1, 1826, 1, 1830, 1829, 1829, 1829, 1, 1832, 1831, 1831, 1831, 1, 1832, 1833, 1833, 1833, 1, 1832, 1834, 1834, 1834, 1, 1832, 1, 1836, 1835, 1835, 1835, 1, 1838, 1837, 1837, 1837, 1, 1838, 1839, 1839, 1839, 1, 1838, 1840, 1840, 1840, 1, 1838, 1, 1841, 1842, 1843, 1845, 1844, 1846, 1846, 1, 1847, 1849, 1848, 1848, 1848, 1, 1850, 1851, 1852, 1853, 1, 1854, 1, 1855, 1856, 1857, 1858, 1, 1859, 1, 1860, 1861, 1862, 1863, 1, 1864, 1, 631, 1774, 632, 631, 1, 1864, 1863, 1, 1864, 1860, 1, 1865, 1864, 1863, 1860, 1, 1864, 1860, 1, 1859, 1858, 1, 1859, 1855, 1, 1859, 1866, 1858, 1855, 1, 1859, 1855, 1, 1854, 1853, 1, 1854, 1850, 1, 1854, 1867, 1853, 1850, 1, 1854, 1850, 1, 1849, 1868, 1868, 1868, 1, 1849, 1869, 1869, 1869, 1, 1849, 1, 1860, 1870, 1870, 1870, 1, 1864, 1871, 1871, 1871, 1, 1864, 1872, 1872, 1872, 1, 1864, 1860, 1860, 1860, 1, 1847, 1849, 1873, 1848, 1848, 1, 1847, 1849, 1874, 1868, 1868, 1, 1847, 1849, 1869, 1869, 1869, 1, 1847, 1875, 1849, 1873, 1876, 1848, 1848, 1, 1847, 1849, 1874, 1868, 1868, 1868, 1, 1847, 1849, 1868, 1868, 1868, 1, 1847, 1849, 1876, 1848, 1848, 1, 1864, 1870, 1870, 1870, 1, 1849, 1848, 1848, 1848, 1, 1877, 1878, 1879, 1864, 1880, 1881, 1881, 1, 1847, 1883, 1864, 1882, 1882, 1882, 1, 1883, 1864, 1884, 1884, 1884, 1, 1883, 1864, 1885, 1885, 1885, 1, 1883, 1864, 1, 1870, 1870, 1870, 1, 1847, 1883, 1864, 1886, 1882, 1882, 1, 1847, 1883, 1864, 1887, 1884, 1884, 1, 1847, 1883, 1864, 1885, 1885, 1885, 1, 1847, 1888, 1883, 1864, 1886, 1889, 1882, 1882, 1, 1847, 1883, 1864, 1887, 1884, 1884, 1884, 1, 1847, 1883, 1864, 1884, 1884, 1884, 1, 1847, 1883, 1864, 1889, 1882, 1882, 1, 1883, 1864, 1882, 1882, 1882, 1, 1890, 1891, 1892, 1864, 1893, 1894, 1894, 1, 1847, 1896, 1864, 1895, 1895, 1895, 1, 1896, 1864, 1897, 1897, 1897, 1, 1896, 1864, 1898, 1898, 1898, 1, 1896, 1864, 1, 1877, 1878, 1879, 1880, 1881, 1881, 1, 1847, 1896, 1864, 1899, 1895, 1895, 1, 1847, 1896, 1864, 1900, 1897, 1897, 1, 1847, 1896, 1864, 1898, 1898, 1898, 1, 1847, 1901, 1896, 1864, 1899, 1902, 1895, 1895, 1, 1847, 1896, 1864, 1900, 1897, 1897, 1897, 1, 1847, 1896, 1864, 1897, 1897, 1897, 1, 1847, 1896, 1864, 1902, 1895, 1895, 1, 1896, 1864, 1895, 1895, 1895, 1, 1903, 1904, 1905, 1864, 1906, 1907, 1907, 1, 1847, 1909, 1864, 1908, 1908, 1908, 1, 1909, 1864, 1910, 1910, 1910, 1, 1909, 1864, 1911, 1911, 1911, 1, 1909, 1864, 1, 1890, 1891, 1892, 1893, 1894, 1894, 1, 1847, 1909, 1864, 1912, 1908, 1908, 1, 1847, 1909, 1864, 1913, 1910, 1910, 1, 1847, 1909, 1864, 1911, 1911, 1911, 1, 1847, 1914, 1909, 1864, 1912, 1915, 1908, 1908, 1, 1847, 1909, 1864, 1913, 1910, 1910, 1910, 1, 1847, 1909, 1864, 1910, 1910, 1910, 1, 1847, 1909, 1864, 1915, 1908, 1908, 1, 1909, 1864, 1908, 1908, 1908, 1, 1916, 1917, 1918, 1864, 1919, 1920, 1920, 1, 1847, 1922, 1864, 1921, 1921, 1921, 1, 1922, 1864, 1923, 1923, 1923, 1, 1922, 1864, 1924, 1924, 1924, 1, 1922, 1864, 1, 1903, 1904, 1905, 1906, 1907, 1907, 1, 1847, 1922, 1864, 1925, 1921, 1921, 1, 1847, 1922, 1864, 1926, 1923, 1923, 1, 1847, 1922, 1864, 1924, 1924, 1924, 1, 1847, 1927, 1922, 1864, 1925, 1928, 1921, 1921, 1, 1847, 1922, 1864, 1926, 1923, 1923, 1923, 1, 1847, 1922, 1864, 1923, 1923, 1923, 1, 1847, 1922, 1864, 1928, 1921, 1921, 1, 1922, 1864, 1921, 1921, 1921, 1, 1929, 1930, 1931, 1864, 1932, 1933, 1933, 1, 1847, 1935, 1864, 1934, 1934, 1934, 1, 1935, 1864, 1936, 1936, 1936, 1, 1935, 1864, 1937, 1937, 1937, 1, 1935, 1864, 1, 1916, 1917, 1918, 1919, 1920, 1920, 1, 1847, 1935, 1864, 1938, 1934, 1934, 1, 1847, 1935, 1864, 1939, 1936, 1936, 1, 1847, 1935, 1864, 1937, 1937, 1937, 1, 1847, 1940, 1935, 1864, 1938, 1941, 1934, 1934, 1, 1847, 1935, 1864, 1939, 1936, 1936, 1936, 1, 1847, 1935, 1864, 1936, 1936, 1936, 1, 1847, 1935, 1864, 1941, 1934, 1934, 1, 1935, 1864, 1934, 1934, 1934, 1, 1942, 1, 1943, 1944, 1945, 1864, 1946, 1947, 1947, 1, 1847, 1949, 1864, 1948, 1948, 1948, 1, 1949, 1864, 1950, 1950, 1950, 1, 1949, 1864, 1951, 1951, 1951, 1, 1949, 1864, 1, 1929, 1930, 1931, 1932, 1933, 1933, 1, 1847, 1949, 1864, 1952, 1948, 1948, 1, 1847, 1949, 1864, 1953, 1950, 1950, 1, 1847, 1949, 1864, 1951, 1951, 1951, 1, 1847, 1954, 1949, 1864, 1952, 1955, 1948, 1948, 1, 1847, 1949, 1864, 1953, 1950, 1950, 1950, 1, 1847, 1949, 1864, 1950, 1950, 1950, 1, 1847, 1949, 1864, 1955, 1948, 1948, 1, 1949, 1864, 1948, 1948, 1948, 1, 1956, 1956, 1956, 1, 1751, 1751, 1751, 1, 1755, 1957, 631, 632, 631, 1756, 1755, 1755, 1755, 631, 1755, 1755, 1, 1958, 1958, 1958, 1, 1755, 1755, 1755, 1, 631, 1573, 632, 1754, 631, 631, 631, 631, 631, 1, 625, 626, 1959, 1959, 625, 625, 625, 625, 1, 625, 626, 1960, 1960, 625, 625, 625, 625, 1, 625, 1961, 1962, 1962, 625, 625, 625, 625, 1, 1963, 1964, 1965, 1966, 1967, 1963, 1963, 1963, 1970, 1963, 1963, 1963, 1968, 1969, 1969, 1, 1971, 1972, 1973, 1971, 1974, 1971, 1971, 1971, 1971, 1971, 1, 1975, 1975, 1975, 1, 1971, 1971, 1971, 1, 1973, 1976, 1973, 1974, 1973, 1973, 1973, 1973, 1973, 1973, 1, 1977, 1977, 1977, 1, 1973, 1973, 1973, 1, 1978, 1979, 1980, 1970, 1981, 1982, 1982, 1, 1983, 1984, 1983, 1985, 1985, 1985, 1, 1983, 1983, 1985, 1985, 1985, 1, 1983, 1986, 1983, 1985, 1985, 1985, 1, 1985, 1987, 1987, 1, 1988, 1989, 1990, 1991, 1992, 1993, 1988, 1987, 1987, 1987, 1, 1988, 1988, 1987, 1987, 1987, 1, 1990, 1991, 1992, 1993, 1985, 1987, 1987, 1, 1994, 1996, 1995, 1997, 1, 1998, 1999, 1, 2000, 2001, 1, 2002, 1, 2003, 2004, 2005, 1, 2006, 2007, 2008, 2009, 2010, 2006, 2006, 2008, 2009, 2010, 2006, 2006, 2006, 2006, 2006, 1, 2011, 2012, 2013, 2014, 2015, 2016, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 1, 2017, 2017, 2017, 1, 2011, 2011, 2011, 1, 2018, 2019, 2013, 2020, 2015, 2016, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 1, 2021, 2022, 2023, 2024, 2025, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 1, 2026, 2026, 2026, 1, 2021, 2021, 2021, 1, 2027, 2027, 2028, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 1, 2027, 2027, 2028, 2029, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 2027, 1, 2030, 2030, 2030, 1, 2027, 2027, 2027, 1, 2029, 2031, 2032, 2033, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 2029, 1, 2034, 2034, 2034, 1, 2029, 2029, 2029, 1, 2018, 2019, 2018, 2018, 2018, 2018, 2018, 2018, 2018, 1, 2011, 2012, 2013, 2014, 2015, 2016, 2035, 2011, 2011, 2035, 2011, 2011, 2011, 2011, 2011, 1, 2011, 2012, 2036, 2037, 2038, 2039, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 1, 2040, 2041, 2040, 2018, 2018, 2013, 2020, 2015, 2016, 2018, 2018, 2042, 2040, 2018, 2040, 2040, 2040, 2040, 1, 2043, 2044, 2043, 2021, 2021, 2023, 2024, 2025, 2021, 2021, 2042, 2043, 2021, 2043, 2043, 2043, 2043, 1, 2042, 2042, 2042, 2046, 632, 2047, 2042, 2042, 2042, 2045, 2045, 2042, 2042, 2045, 2042, 1, 2042, 2042, 2042, 2046, 632, 2047, 2042, 2042, 2042, 2042, 2042, 2042, 1, 2042, 2042, 2042, 2046, 632, 2047, 2042, 2042, 2042, 2043, 2043, 2042, 2042, 2043, 2042, 1, 2011, 2012, 2013, 2014, 2015, 2016, 2048, 2049, 2011, 2011, 2048, 2049, 2011, 2011, 2011, 2011, 2011, 1, 2011, 2012, 2050, 2051, 2052, 2053, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 1, 2011, 2012, 2013, 2014, 2015, 2016, 2054, 2011, 2011, 2054, 2011, 2011, 2011, 2011, 2011, 1, 2011, 2012, 2013, 2014, 2015, 2016, 2055, 2011, 2011, 2055, 2011, 2011, 2011, 2011, 2011, 1, 2011, 2012, 2013, 2056, 2015, 2016, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 1, 2057, 2058, 2057, 2018, 2018, 2013, 2020, 2015, 2016, 2018, 2018, 2059, 2057, 2018, 2057, 2057, 2057, 2057, 1, 2060, 2061, 2060, 2021, 2021, 2062, 2063, 2064, 2021, 2021, 2065, 2060, 2021, 2060, 2060, 2060, 2060, 1, 2065, 2065, 2065, 2067, 2068, 2069, 2065, 2065, 2065, 2066, 2066, 2065, 2065, 2066, 2065, 1, 2065, 2065, 2065, 2067, 2068, 2069, 2065, 2065, 2065, 2065, 2065, 2065, 1, 2065, 2065, 2065, 2067, 2068, 2069, 2065, 2065, 2065, 2060, 2060, 2065, 2065, 2060, 2065, 1, 2011, 2012, 2013, 2014, 2015, 2016, 2070, 2011, 2011, 2070, 2011, 2011, 2011, 2011, 2011, 1, 2011, 2012, 2013, 2014, 2015, 2016, 2071, 2011, 2011, 2071, 2011, 2011, 2011, 2011, 2011, 1, 2011, 2012, 2013, 2014, 2015, 2016, 2072, 2011, 2011, 2072, 2011, 2011, 2011, 2011, 2011, 1, 2011, 2012, 2013, 2014, 2015, 2016, 2073, 2011, 2011, 2073, 2011, 2011, 2011, 2011, 2011, 1, 2011, 2012, 2013, 2014, 2015, 2016, 2074, 2011, 2011, 2074, 2011, 2011, 2011, 2011, 2011, 1, 2011, 2012, 2013, 2014, 2015, 2016, 2075, 2011, 2011, 2075, 2011, 2011, 2011, 2011, 2011, 1, 2011, 2012, 2013, 2014, 2015, 2016, 2076, 2011, 2011, 2076, 2011, 2011, 2011, 2011, 2011, 1, 2011, 2012, 2013, 2014, 2015, 2016, 2077, 2011, 2011, 2077, 2011, 2011, 2011, 2011, 2011, 1, 2011, 2012, 2013, 2078, 2015, 2016, 2011, 2011, 2011, 2011, 2011, 2011, 2011, 1, 2079, 2080, 2079, 2018, 2018, 2013, 2020, 2015, 2016, 2081, 2082, 2083, 2084, 2018, 2018, 2085, 2081, 2082, 2083, 2084, 2079, 2018, 2079, 2079, 2079, 2079, 1, 2086, 2087, 2086, 2021, 2021, 2088, 2089, 2090, 2021, 2021, 2091, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2091, 2091, 2091, 2093, 2094, 2095, 2091, 2091, 2091, 2092, 2092, 2091, 2091, 2092, 2091, 1, 2091, 2091, 2091, 2093, 2094, 2095, 2091, 2091, 2091, 2091, 2091, 2091, 1, 2091, 2091, 2091, 2093, 2094, 2095, 2091, 2091, 2091, 2086, 2086, 2091, 2091, 2086, 2091, 1, 2086, 2087, 2086, 2021, 2021, 2088, 2089, 2090, 2096, 2021, 2021, 2091, 2096, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2086, 2087, 2086, 2021, 2021, 2088, 2089, 2090, 2097, 2021, 2021, 2091, 2097, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2086, 2087, 2086, 2021, 2021, 2088, 2089, 2090, 2098, 2021, 2021, 2091, 2098, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2086, 2087, 2086, 2021, 2021, 2099, 2100, 2101, 2021, 2021, 2091, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2086, 2087, 2086, 2021, 2021, 2088, 2089, 2090, 2102, 2103, 2021, 2021, 2091, 2102, 2103, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2086, 2087, 2086, 2021, 2021, 2088, 2089, 2090, 2104, 2021, 2021, 2091, 2104, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2086, 2087, 2086, 2021, 2021, 2105, 2106, 2107, 2021, 2021, 2091, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2086, 2087, 2086, 2021, 2021, 2088, 2089, 2090, 2108, 2021, 2021, 2091, 2108, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2086, 2087, 2086, 2021, 2021, 2109, 2110, 2111, 2021, 2021, 2091, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2086, 2087, 2086, 2021, 2021, 2088, 2089, 2090, 2112, 2021, 2021, 2091, 2112, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2086, 2087, 2086, 2021, 2021, 2088, 2089, 2090, 2113, 2021, 2021, 2091, 2113, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2086, 2087, 2086, 2021, 2021, 2114, 2115, 2116, 2021, 2021, 2091, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2086, 2087, 2086, 2021, 2021, 2088, 2089, 2090, 2117, 2021, 2021, 2091, 2117, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2086, 2087, 2086, 2021, 2021, 2118, 2119, 2120, 2121, 2021, 2021, 2091, 2121, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2086, 2087, 2086, 2021, 2021, 2122, 2123, 2124, 2021, 2021, 2091, 2086, 2021, 2086, 2086, 2086, 2086, 1, 2003, 2004, 2005, 2002, 1, 2003, 2004, 2005, 2001, 1, 2003, 2004, 2005, 2125, 1, 2003, 2004, 2005, 1999, 1, 2126, 2003, 2004, 2005, 2125, 1999, 1, 2127, 2003, 2004, 2005, 1999, 2001, 1, 2128, 2003, 2004, 2005, 2001, 2002, 1, 2003, 2004, 2005, 2002, 1, 2129, 2130, 2131, 2132, 1987, 1987, 1, 1983, 2133, 1983, 1985, 1985, 1985, 1, 2134, 2135, 2136, 2137, 1987, 1987, 1, 1983, 2138, 1983, 1985, 1985, 1985, 1, 2139, 2140, 2141, 2142, 1987, 1987, 1, 1983, 1986, 2143, 2144, 2145, 2146, 1983, 1985, 1985, 1985, 1, 1983, 1986, 2143, 2144, 2145, 2146, 1983, 2142, 1985, 1985, 1, 1983, 1986, 2143, 2144, 2145, 2146, 1983, 2139, 1985, 1985, 1, 1983, 1986, 2147, 2143, 2144, 2145, 2146, 1983, 2142, 2139, 1985, 1985, 1, 1983, 1986, 2143, 2144, 2145, 2146, 1983, 2139, 1985, 1985, 1985, 1, 1983, 2138, 1983, 2137, 1985, 1985, 1, 1983, 2138, 1983, 2134, 1985, 1985, 1, 1983, 2138, 2148, 1983, 2137, 2134, 1985, 1985, 1, 1983, 2138, 1983, 2134, 1985, 1985, 1985, 1, 1983, 2133, 1983, 2132, 1985, 1985, 1, 1983, 2133, 1983, 2129, 1985, 1985, 1, 1983, 2133, 2149, 1983, 2132, 2129, 1985, 1985, 1, 1983, 2133, 1983, 2129, 1985, 1985, 1985, 1, 1983, 1984, 1983, 2150, 1985, 1985, 1, 1983, 1984, 1983, 2151, 1985, 1985, 1, 1983, 1984, 2152, 1983, 2150, 2151, 1985, 1985, 1, 1983, 1984, 1983, 2151, 1985, 1985, 1985, 1, 2154, 2153, 2153, 2153, 1, 2156, 2155, 2155, 2155, 1, 2156, 2157, 2157, 2157, 1, 2156, 2158, 2158, 2158, 1, 2156, 1, 2160, 2159, 2159, 2159, 1, 2162, 2161, 2161, 2161, 1, 2162, 2163, 2163, 2163, 1, 2162, 2164, 2164, 2164, 1, 2162, 1, 2166, 2165, 2165, 2165, 1, 2168, 2167, 2167, 2167, 1, 2168, 2169, 2169, 2169, 1, 2168, 2170, 2170, 2170, 1, 2168, 1, 2172, 2171, 2171, 2171, 1, 2174, 2173, 2173, 2173, 1, 2174, 2175, 2175, 2175, 1, 2174, 2176, 2176, 2176, 1, 2174, 1, 2178, 2177, 2177, 2177, 1, 2180, 2179, 2179, 2179, 1, 2180, 2181, 2181, 2181, 1, 2180, 2182, 2182, 2182, 1, 2180, 1, 2184, 2183, 2183, 2183, 1, 2186, 2185, 2185, 2185, 1, 2186, 2187, 2187, 2187, 1, 2186, 2188, 2188, 2188, 1, 2186, 1, 2189, 2190, 2191, 2193, 2192, 2194, 2194, 1, 2195, 2197, 2196, 2196, 2196, 1, 2198, 2199, 2200, 2201, 1, 2202, 1, 2203, 2204, 2205, 2206, 1, 2207, 1, 2208, 2209, 2210, 2211, 1, 2212, 1, 2213, 2214, 2215, 2216, 1, 2212, 2211, 1, 2212, 2208, 1, 2217, 2212, 2211, 2208, 1, 2212, 2208, 1, 2207, 2206, 1, 2207, 2203, 1, 2207, 2218, 2206, 2203, 1, 2207, 2203, 1, 2202, 2201, 1, 2202, 2198, 1, 2202, 2219, 2201, 2198, 1, 2202, 2198, 1, 2197, 2220, 2220, 2220, 1, 2197, 2221, 2221, 2221, 1, 2197, 1, 2208, 2222, 2222, 2222, 1, 2212, 2223, 2223, 2223, 1, 2212, 2224, 2224, 2224, 1, 2212, 2208, 2208, 2208, 1, 2195, 2197, 2225, 2196, 2196, 1, 2195, 2197, 2226, 2220, 2220, 1, 2195, 2197, 2221, 2221, 2221, 1, 2195, 2227, 2197, 2225, 2228, 2196, 2196, 1, 2195, 2197, 2226, 2220, 2220, 2220, 1, 2195, 2197, 2220, 2220, 2220, 1, 2195, 2197, 2228, 2196, 2196, 1, 2212, 2222, 2222, 2222, 1, 2197, 2196, 2196, 2196, 1, 2229, 2230, 2231, 2212, 2232, 2233, 2233, 1, 2195, 2235, 2212, 2234, 2234, 2234, 1, 2235, 2212, 2236, 2236, 2236, 1, 2235, 2212, 2237, 2237, 2237, 1, 2235, 2212, 1, 2222, 2222, 2222, 1, 2195, 2235, 2212, 2238, 2234, 2234, 1, 2195, 2235, 2212, 2239, 2236, 2236, 1, 2195, 2235, 2212, 2237, 2237, 2237, 1, 2195, 2240, 2235, 2212, 2238, 2241, 2234, 2234, 1, 2195, 2235, 2212, 2239, 2236, 2236, 2236, 1, 2195, 2235, 2212, 2236, 2236, 2236, 1, 2195, 2235, 2212, 2241, 2234, 2234, 1, 2235, 2212, 2234, 2234, 2234, 1, 2242, 2243, 2244, 2212, 2245, 2246, 2246, 1, 2195, 2248, 2212, 2247, 2247, 2247, 1, 2248, 2212, 2249, 2249, 2249, 1, 2248, 2212, 2250, 2250, 2250, 1, 2248, 2212, 1, 2229, 2230, 2231, 2232, 2233, 2233, 1, 2195, 2248, 2212, 2251, 2247, 2247, 1, 2195, 2248, 2212, 2252, 2249, 2249, 1, 2195, 2248, 2212, 2250, 2250, 2250, 1, 2195, 2253, 2248, 2212, 2251, 2254, 2247, 2247, 1, 2195, 2248, 2212, 2252, 2249, 2249, 2249, 1, 2195, 2248, 2212, 2249, 2249, 2249, 1, 2195, 2248, 2212, 2254, 2247, 2247, 1, 2248, 2212, 2247, 2247, 2247, 1, 2255, 2256, 2257, 2212, 2258, 2259, 2259, 1, 2195, 2261, 2212, 2260, 2260, 2260, 1, 2261, 2212, 2262, 2262, 2262, 1, 2261, 2212, 2263, 2263, 2263, 1, 2261, 2212, 1, 2242, 2243, 2244, 2245, 2246, 2246, 1, 2195, 2261, 2212, 2264, 2260, 2260, 1, 2195, 2261, 2212, 2265, 2262, 2262, 1, 2195, 2261, 2212, 2263, 2263, 2263, 1, 2195, 2266, 2261, 2212, 2264, 2267, 2260, 2260, 1, 2195, 2261, 2212, 2265, 2262, 2262, 2262, 1, 2195, 2261, 2212, 2262, 2262, 2262, 1, 2195, 2261, 2212, 2267, 2260, 2260, 1, 2261, 2212, 2260, 2260, 2260, 1, 2268, 2269, 2270, 2212, 2271, 2272, 2272, 1, 2195, 2274, 2212, 2273, 2273, 2273, 1, 2274, 2212, 2275, 2275, 2275, 1, 2274, 2212, 2276, 2276, 2276, 1, 2274, 2212, 1, 2255, 2256, 2257, 2258, 2259, 2259, 1, 2195, 2274, 2212, 2277, 2273, 2273, 1, 2195, 2274, 2212, 2278, 2275, 2275, 1, 2195, 2274, 2212, 2276, 2276, 2276, 1, 2195, 2279, 2274, 2212, 2277, 2280, 2273, 2273, 1, 2195, 2274, 2212, 2278, 2275, 2275, 2275, 1, 2195, 2274, 2212, 2275, 2275, 2275, 1, 2195, 2274, 2212, 2280, 2273, 2273, 1, 2274, 2212, 2273, 2273, 2273, 1, 2281, 2282, 2283, 2212, 2284, 2285, 2285, 1, 2195, 2287, 2212, 2286, 2286, 2286, 1, 2287, 2212, 2288, 2288, 2288, 1, 2287, 2212, 2289, 2289, 2289, 1, 2287, 2212, 1, 2268, 2269, 2270, 2271, 2272, 2272, 1, 2195, 2287, 2212, 2290, 2286, 2286, 1, 2195, 2287, 2212, 2291, 2288, 2288, 1, 2195, 2287, 2212, 2289, 2289, 2289, 1, 2195, 2292, 2287, 2212, 2290, 2293, 2286, 2286, 1, 2195, 2287, 2212, 2291, 2288, 2288, 2288, 1, 2195, 2287, 2212, 2288, 2288, 2288, 1, 2195, 2287, 2212, 2293, 2286, 2286, 1, 2287, 2212, 2286, 2286, 2286, 1, 2294, 1, 2295, 2296, 2297, 2212, 2298, 2299, 2299, 1, 2195, 2301, 2212, 2300, 2300, 2300, 1, 2301, 2212, 2302, 2302, 2302, 1, 2301, 2212, 2303, 2303, 2303, 1, 2301, 2212, 1, 2281, 2282, 2283, 2284, 2285, 2285, 1, 2195, 2301, 2212, 2304, 2300, 2300, 1, 2195, 2301, 2212, 2305, 2302, 2302, 1, 2195, 2301, 2212, 2303, 2303, 2303, 1, 2195, 2306, 2301, 2212, 2304, 2307, 2300, 2300, 1, 2195, 2301, 2212, 2305, 2302, 2302, 2302, 1, 2195, 2301, 2212, 2302, 2302, 2302, 1, 2195, 2301, 2212, 2307, 2300, 2300, 1, 2301, 2212, 2300, 2300, 2300, 1, 1971, 1972, 2308, 2309, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2310, 2310, 2310, 1, 1971, 1972, 2308, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2310, 2310, 2310, 1, 1971, 1972, 2308, 2311, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2310, 2310, 2310, 1, 1971, 1972, 1973, 1971, 1971, 1971, 1974, 1971, 1971, 1971, 2310, 2312, 2312, 1, 1971, 1972, 2313, 2314, 2315, 2316, 1971, 1992, 2317, 1974, 2313, 1971, 1971, 2312, 2312, 2312, 1, 1971, 1972, 2313, 1973, 1971, 1971, 1971, 1974, 2313, 1971, 1971, 2312, 2312, 2312, 1, 1971, 1972, 2315, 2316, 1971, 1992, 2317, 1974, 1971, 1971, 1971, 2310, 2312, 2312, 1, 1973, 1976, 2318, 2320, 1973, 1974, 1973, 1973, 1973, 2319, 2321, 1973, 1973, 1, 1973, 1976, 2322, 1973, 1974, 1973, 1973, 1973, 2323, 1973, 1973, 1, 1973, 1976, 2324, 1973, 1974, 1973, 1973, 1973, 2325, 1973, 1973, 1, 1973, 1976, 1973, 1973, 1974, 1973, 1973, 1973, 2326, 1973, 1973, 1, 1973, 1976, 2003, 2004, 2005, 1974, 1973, 1973, 1973, 1973, 1973, 1973, 1, 1973, 1976, 2003, 2004, 2005, 1974, 1973, 1973, 1973, 2326, 1973, 1973, 1, 1973, 1976, 2003, 2004, 2005, 1974, 1973, 1973, 1973, 2325, 1973, 1973, 1, 1973, 1976, 2003, 2004, 2005, 1974, 1973, 1973, 1973, 2327, 1973, 1973, 1, 1973, 1976, 2003, 2004, 2005, 1974, 1973, 1973, 1973, 2323, 1973, 1973, 1, 1973, 1976, 2328, 2003, 2004, 2005, 1974, 1973, 1973, 1973, 2327, 2323, 1973, 1973, 1, 1973, 1976, 2329, 2003, 2004, 2005, 1974, 1973, 1973, 1973, 2323, 2325, 1973, 1973, 1, 1973, 1976, 2330, 2003, 2004, 2005, 1974, 1973, 1973, 1973, 2325, 2326, 1973, 1973, 1, 1973, 1976, 2003, 2004, 2005, 1974, 1973, 1973, 1973, 2326, 1973, 1973, 1973, 1, 2331, 1971, 2332, 1971, 2333, 1971, 1971, 1971, 1974, 2334, 2335, 2336, 2006, 2006, 2331, 2334, 2335, 2336, 2331, 2331, 2331, 2331, 1, 2337, 1971, 2338, 1971, 2339, 2340, 2341, 2015, 2342, 1974, 2011, 2011, 2337, 2337, 2337, 2337, 2337, 1, 2343, 2343, 2343, 1, 2337, 2337, 2337, 1, 2339, 2344, 1973, 2011, 2011, 2013, 2345, 2015, 2016, 1974, 2011, 2011, 2339, 2339, 2339, 2339, 2339, 1, 2346, 2346, 2346, 1, 2339, 2339, 2339, 1, 2347, 2348, 1973, 2018, 2018, 2013, 2349, 2015, 2016, 1974, 2018, 2018, 2347, 2347, 2347, 2347, 2347, 1, 2350, 2351, 1973, 2021, 2021, 2023, 1973, 2024, 2025, 1974, 2021, 2021, 2350, 2350, 2350, 2350, 2350, 1, 2352, 2352, 2352, 1, 2350, 2350, 2350, 1, 2347, 2348, 1973, 2018, 2018, 1973, 1974, 2018, 2018, 2347, 2347, 2347, 2347, 2347, 1, 2353, 1971, 2354, 1971, 2347, 2340, 2355, 2015, 2342, 1974, 2018, 2018, 2353, 2353, 2353, 2353, 2353, 1, 2356, 1971, 2357, 1971, 2350, 2358, 1971, 2024, 2359, 1974, 2021, 2021, 2356, 2356, 2356, 2356, 2356, 1, 2360, 2360, 2360, 1, 2356, 2356, 2356, 1, 2361, 2361, 2362, 1971, 2363, 1971, 1971, 1974, 2027, 2027, 2361, 2361, 1971, 2361, 2361, 2361, 1, 2361, 2361, 2362, 1971, 2363, 1971, 2364, 1974, 2027, 2027, 2361, 2361, 1971, 2361, 2361, 2361, 1, 2365, 2365, 2365, 1, 2361, 2361, 2361, 1, 2363, 2366, 1973, 1973, 2027, 2027, 2367, 2027, 1974, 2027, 2027, 2363, 2363, 2363, 2363, 2363, 1, 2368, 2368, 2368, 1, 2363, 2363, 2363, 1, 2367, 2369, 2370, 1973, 2029, 2029, 1973, 2033, 2029, 1974, 2029, 2029, 2367, 2367, 2367, 2367, 2367, 1, 2371, 2371, 2371, 1, 2367, 2367, 2367, 1, 2363, 2366, 1973, 1973, 2027, 2027, 1973, 2027, 1974, 2027, 2027, 2363, 2363, 2363, 2363, 2363, 1, 2364, 1971, 2372, 2373, 1971, 2367, 1971, 1971, 2033, 1974, 2029, 2029, 2364, 2364, 2364, 2364, 2364, 1, 2374, 2374, 2374, 1, 2364, 2364, 2364, 1, 2353, 1971, 2354, 1971, 2347, 1971, 1971, 1971, 1974, 2018, 2018, 2353, 2353, 2353, 2353, 2353, 1, 2337, 1971, 2338, 1971, 2339, 2340, 2341, 2015, 2342, 1974, 2375, 2011, 2011, 2337, 2375, 2337, 2337, 2337, 2337, 1, 2337, 1971, 2338, 1971, 2339, 2376, 2377, 2038, 2378, 1974, 2011, 2011, 2337, 2337, 2337, 2337, 2337, 1, 2379, 1971, 2380, 2379, 1971, 2353, 2347, 2340, 2355, 2015, 2342, 1974, 2018, 2018, 2042, 2379, 2353, 2379, 2379, 2379, 1, 2381, 1971, 2382, 2381, 1971, 2356, 2350, 2358, 1971, 2024, 2359, 1974, 2021, 2021, 2042, 2381, 2356, 2381, 2381, 2381, 1, 2042, 2042, 2042, 2046, 632, 2047, 2042, 2042, 2042, 2383, 2383, 2042, 2042, 2383, 2042, 1, 2042, 2042, 2042, 2046, 632, 2047, 2042, 2042, 2042, 2381, 2381, 2042, 2042, 2381, 2042, 1, 2337, 1971, 2338, 1971, 2339, 2340, 2341, 2015, 2342, 1974, 2384, 2385, 2011, 2011, 2337, 2384, 2385, 2337, 2337, 2337, 2337, 1, 2337, 1971, 2338, 1971, 2339, 2386, 2387, 2052, 2388, 1974, 2011, 2011, 2337, 2337, 2337, 2337, 2337, 1, 2337, 1971, 2338, 1971, 2339, 2340, 2341, 2015, 2342, 1974, 2389, 2011, 2011, 2337, 2389, 2337, 2337, 2337, 2337, 1, 2337, 1971, 2338, 1971, 2339, 2340, 2341, 2015, 2342, 1974, 2390, 2011, 2011, 2337, 2390, 2337, 2337, 2337, 2337, 1, 2337, 1971, 2338, 1971, 2339, 2340, 2391, 2015, 2342, 1974, 2011, 2011, 2337, 2337, 2337, 2337, 2337, 1, 2392, 1971, 2393, 2392, 1971, 2353, 2347, 2340, 2355, 2015, 2342, 1974, 2018, 2018, 2059, 2392, 2353, 2392, 2392, 2392, 1, 2394, 1971, 2395, 2394, 1971, 2356, 2350, 2396, 1971, 2063, 2397, 1974, 2021, 2021, 2065, 2394, 2356, 2394, 2394, 2394, 1, 2065, 2065, 2065, 2067, 2068, 2069, 2065, 2065, 2065, 2398, 2398, 2065, 2065, 2398, 2065, 1, 2065, 2065, 2065, 2067, 2068, 2069, 2065, 2065, 2065, 2394, 2394, 2065, 2065, 2394, 2065, 1, 2337, 1971, 2338, 1971, 2339, 2340, 2341, 2015, 2342, 1974, 2399, 2011, 2011, 2337, 2399, 2337, 2337, 2337, 2337, 1, 2337, 1971, 2338, 1971, 2339, 2340, 2341, 2015, 2342, 1974, 2400, 2011, 2011, 2337, 2400, 2337, 2337, 2337, 2337, 1, 2337, 1971, 2338, 1971, 2339, 2340, 2341, 2015, 2342, 1974, 2401, 2011, 2011, 2337, 2401, 2337, 2337, 2337, 2337, 1, 2337, 1971, 2338, 1971, 2339, 2340, 2341, 2015, 2342, 1974, 2402, 2011, 2011, 2337, 2402, 2337, 2337, 2337, 2337, 1, 2337, 1971, 2338, 1971, 2339, 2340, 2341, 2015, 2342, 1974, 2403, 2011, 2011, 2337, 2403, 2337, 2337, 2337, 2337, 1, 2337, 1971, 2338, 1971, 2339, 2340, 2341, 2015, 2342, 1974, 2404, 2011, 2011, 2337, 2404, 2337, 2337, 2337, 2337, 1, 2337, 1971, 2338, 1971, 2339, 2340, 2341, 2015, 2342, 1974, 2405, 2011, 2011, 2337, 2405, 2337, 2337, 2337, 2337, 1, 2337, 1971, 2338, 1971, 2339, 2340, 2341, 2015, 2342, 1974, 2406, 2011, 2011, 2337, 2406, 2337, 2337, 2337, 2337, 1, 2337, 1971, 2338, 1971, 2339, 2340, 2407, 2015, 2342, 1974, 2011, 2011, 2337, 2337, 2337, 2337, 2337, 1, 2408, 1971, 2409, 2408, 1971, 2353, 2347, 2340, 2355, 2015, 2342, 1974, 2410, 2411, 2412, 2413, 2018, 2018, 2085, 2410, 2411, 2412, 2413, 2408, 2353, 2408, 2408, 2408, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2416, 1971, 2089, 2417, 1974, 2021, 2021, 2091, 2414, 2356, 2414, 2414, 2414, 1, 2091, 2091, 2091, 2093, 2094, 2095, 2091, 2091, 2091, 2418, 2418, 2091, 2091, 2418, 2091, 1, 2091, 2091, 2091, 2093, 2094, 2095, 2091, 2091, 2091, 2414, 2414, 2091, 2091, 2414, 2091, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2416, 1971, 2089, 2417, 1974, 2419, 2021, 2021, 2091, 2419, 2414, 2356, 2414, 2414, 2414, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2416, 1971, 2089, 2417, 1974, 2420, 2021, 2021, 2091, 2420, 2414, 2356, 2414, 2414, 2414, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2416, 1971, 2089, 2417, 1974, 2421, 2021, 2021, 2091, 2421, 2414, 2356, 2414, 2414, 2414, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2422, 1971, 2100, 2423, 1974, 2021, 2021, 2091, 2414, 2356, 2414, 2414, 2414, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2416, 1971, 2089, 2417, 1974, 2424, 2425, 2021, 2021, 2091, 2424, 2425, 2414, 2356, 2414, 2414, 2414, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2416, 1971, 2089, 2417, 1974, 2426, 2021, 2021, 2091, 2426, 2414, 2356, 2414, 2414, 2414, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2427, 1971, 2106, 2428, 1974, 2021, 2021, 2091, 2414, 2356, 2414, 2414, 2414, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2416, 1971, 2089, 2417, 1974, 2429, 2021, 2021, 2091, 2429, 2414, 2356, 2414, 2414, 2414, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2430, 1971, 2110, 2431, 1974, 2021, 2021, 2091, 2414, 2356, 2414, 2414, 2414, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2416, 1971, 2089, 2417, 1974, 2432, 2021, 2021, 2091, 2432, 2414, 2356, 2414, 2414, 2414, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2416, 1971, 2089, 2417, 1974, 2433, 2021, 2021, 2091, 2433, 2414, 2356, 2414, 2414, 2414, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2434, 1971, 2115, 2435, 1974, 2021, 2021, 2091, 2414, 2356, 2414, 2414, 2414, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2416, 1971, 2089, 2417, 1974, 2436, 2021, 2021, 2091, 2436, 2414, 2356, 2414, 2414, 2414, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2437, 1971, 2119, 2438, 1974, 2439, 2021, 2021, 2091, 2439, 2414, 2356, 2414, 2414, 2414, 1, 2414, 1971, 2415, 2414, 1971, 2356, 2350, 2440, 1971, 2123, 2441, 1974, 2021, 2021, 2091, 2414, 2356, 2414, 2414, 2414, 1, 1971, 1972, 2442, 2443, 2444, 1973, 1971, 1971, 1971, 1974, 1971, 1971, 1971, 2445, 2312, 2312, 1, 1971, 1972, 2308, 2446, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2310, 2310, 2310, 1, 1971, 1972, 2447, 2448, 2449, 1973, 1971, 1971, 1971, 1974, 1971, 1971, 1971, 2450, 2312, 2312, 1, 1971, 1972, 2308, 2451, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2310, 2310, 2310, 1, 1971, 1972, 2452, 2453, 2454, 1973, 1971, 1971, 1971, 1974, 1971, 1971, 1971, 2455, 2312, 2312, 1, 1971, 1972, 2308, 2311, 2456, 2457, 1971, 2145, 2458, 1974, 2308, 1971, 1971, 2310, 2310, 2310, 1, 1971, 1972, 2308, 2311, 2456, 2457, 1971, 2145, 2458, 1974, 2308, 1971, 1971, 2455, 2310, 2310, 1, 1971, 1972, 2308, 2311, 2456, 2457, 1971, 2145, 2458, 1974, 2308, 1971, 1971, 2452, 2310, 2310, 1, 1971, 1972, 2308, 2311, 2459, 2456, 2457, 1971, 2145, 2458, 1974, 2308, 1971, 1971, 2455, 2452, 2310, 2310, 1, 1971, 1972, 2308, 2311, 2456, 2457, 1971, 2145, 2458, 1974, 2308, 1971, 1971, 2452, 2310, 2310, 2310, 1, 1971, 1972, 2308, 2451, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2450, 2310, 2310, 1, 1971, 1972, 2308, 2451, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2447, 2310, 2310, 1, 1971, 1972, 2308, 2451, 2460, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2450, 2447, 2310, 2310, 1, 1971, 1972, 2308, 2451, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2447, 2310, 2310, 2310, 1, 1971, 1972, 2308, 2446, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2445, 2310, 2310, 1, 1971, 1972, 2308, 2446, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2442, 2310, 2310, 1, 1971, 1972, 2308, 2446, 2461, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2445, 2442, 2310, 2310, 1, 1971, 1972, 2308, 2446, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2442, 2310, 2310, 2310, 1, 1971, 1972, 2308, 2309, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2462, 2310, 2310, 1, 1971, 1972, 2308, 2309, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2463, 2310, 2310, 1, 1971, 1972, 2308, 2309, 2464, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2462, 2463, 2310, 2310, 1, 1971, 1972, 2308, 2309, 1973, 1971, 1971, 1971, 1974, 2308, 1971, 1971, 2463, 2310, 2310, 2310, 1, 625, 2465, 625, 625, 625, 625, 1, 625, 626, 2466, 2466, 625, 625, 625, 625, 1, 625, 626, 2467, 2467, 625, 625, 625, 625, 1, 625, 2468, 625, 625, 625, 625, 1, 2469, 2469, 2471, 2470, 2470, 2469, 2469, 2469, 1, 2472, 2473, 2474, 2472, 2472, 2472, 2472, 2472, 1, 2475, 2476, 2476, 2475, 2475, 2475, 1, 2477, 2478, 2479, 2015, 2477, 2477, 2477, 1, 2480, 2481, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 1, 2482, 2483, 2484, 2024, 2482, 2482, 2482, 2482, 2482, 2482, 2482, 1, 2485, 2485, 2485, 1, 2482, 2482, 2482, 1, 2477, 2478, 2479, 2015, 2486, 2486, 2477, 2477, 2477, 1, 2477, 2478, 2479, 2015, 2487, 2487, 2477, 2477, 2477, 1, 2477, 2478, 2479, 2015, 2488, 2488, 2477, 2477, 2477, 1, 2477, 2478, 2479, 2015, 2489, 2489, 2477, 2477, 2477, 1, 2490, 2478, 2479, 2015, 2477, 2477, 2477, 1, 2477, 2478, 2479, 2015, 2491, 2491, 2477, 2477, 2477, 1, 2477, 2478, 2479, 2015, 2492, 2492, 2477, 2477, 2477, 1, 2477, 2478, 2479, 2015, 2493, 2493, 2477, 2477, 2477, 1, 2477, 2478, 2479, 2015, 2494, 2494, 2477, 2477, 2477, 1, 2477, 2478, 2479, 2015, 2495, 2495, 2477, 2477, 2477, 1, 2477, 2478, 2479, 2015, 2496, 2496, 2477, 2477, 2477, 1, 2477, 2478, 2479, 2015, 2497, 2497, 2477, 2477, 2477, 1, 2477, 2478, 2498, 2015, 2477, 2477, 2477, 1, 2480, 2481, 2499, 2480, 2480, 2480, 2480, 2480, 2480, 2480, 2500, 2501, 2501, 1, 2482, 2483, 2482, 2482, 2484, 2024, 2482, 2482, 2482, 2482, 2502, 2482, 2502, 2503, 2482, 2482, 1, 2482, 2483, 2482, 2482, 2504, 2505, 2482, 2482, 2482, 2482, 2503, 2482, 2503, 2482, 2482, 1, 2482, 2483, 2506, 2507, 2482, 2482, 2484, 2024, 2482, 2482, 2506, 2482, 2482, 2508, 2508, 2508, 1, 2482, 2483, 2506, 2482, 2484, 2024, 2482, 2482, 2506, 2482, 2482, 2482, 2508, 2508, 2508, 1, 2482, 2483, 2482, 2484, 2024, 2482, 2482, 2482, 2482, 2482, 2482, 2508, 2509, 2509, 1, 2482, 2483, 2510, 2511, 2482, 2482, 2504, 2505, 2482, 2482, 2510, 2482, 2482, 2509, 2509, 2509, 1, 2482, 2483, 2510, 2482, 2484, 2024, 2482, 2482, 2510, 2482, 2482, 2482, 2509, 2509, 2509, 1, 2482, 2483, 2482, 2504, 2505, 2482, 2482, 2482, 2482, 2482, 2482, 2508, 2509, 2509, 1, 2472, 2472, 2512, 2512, 2472, 2472, 2472, 1, 2513, 2513, 2514, 1, 2473, 2474, 2514, 2514, 2514, 1, 2515, 2516, 2515, 2517, 2517, 2517, 2518, 2517, 2517, 2517, 2517, 2517, 2517, 1, 2519, 2520, 2519, 2517, 2517, 2517, 621, 2517, 2517, 2517, 2517, 2517, 2517, 1, 2521, 1, 2522, 2522, 1, 2522, 2522, 2517, 2517, 2517, 621, 2517, 2517, 2517, 2517, 2517, 2517, 1, 2528, 2529, 2530, 2531, 2523, 2524, 2525, 2526, 2527, 2528, 1, 2528, 1, 2523, 1, 2524, 1, 2525, 1, 2526, 1, 2532, 1, 2528, 2528, 1, 2533, 2534, 2533, 2518, 1, 2535, 2536, 2535, 621, 1, 2528, 2528, 2528, 1, 2515, 2516, 2515, 2517, 2517, 2517, 2517, 2537, 2538, 2518, 2517, 2537, 2537, 2537, 2517, 2537, 1, 2539, 2540, 2539, 2541, 2542, 2543, 2544, 2545, 2546, 2541, 2545, 2547, 2541, 2541, 2541, 2541, 2541, 2541, 1, 2539, 2540, 2539, 2541, 2542, 2543, 2548, 2546, 2541, 2549, 2541, 2541, 2541, 2541, 2541, 2541, 1, 2542, 2550, 2551, 2542, 2552, 2542, 2542, 2542, 2542, 2542, 2542, 1, 2553, 2553, 2553, 1, 2542, 2542, 2542, 1, 2551, 2554, 2551, 2552, 2551, 2551, 2551, 2551, 2551, 2551, 2551, 1, 2555, 2555, 2555, 1, 2551, 2551, 2551, 1, 2556, 2557, 2558, 2547, 2559, 2560, 2560, 1, 2561, 2562, 2561, 2563, 2563, 2563, 1, 2561, 2561, 2563, 2563, 2563, 1, 2561, 2564, 2561, 2563, 2563, 2563, 1, 2563, 2560, 2560, 1, 2539, 2540, 2539, 2565, 2566, 2567, 2546, 2565, 2560, 2560, 2560, 1, 2565, 2565, 2560, 2560, 2560, 1, 2539, 2540, 2539, 2567, 2546, 2563, 2560, 2560, 1, 2568, 2570, 2569, 2571, 1, 2572, 2573, 1, 2574, 2575, 1, 2576, 1, 2539, 2540, 2539, 2546, 1, 2539, 2540, 2539, 2546, 2576, 1, 2539, 2540, 2539, 2546, 2575, 1, 2539, 2540, 2539, 2546, 2571, 1, 2539, 2540, 2539, 2546, 2573, 1, 2539, 2540, 2539, 2577, 2546, 2571, 2573, 1, 2539, 2540, 2539, 2578, 2546, 2573, 2575, 1, 2539, 2540, 2539, 2579, 2546, 2575, 2576, 1, 2539, 2540, 2539, 2546, 2576, 1, 2580, 2581, 2582, 2583, 2560, 2560, 1, 2561, 2584, 2561, 2563, 2563, 2563, 1, 2585, 2586, 2587, 2588, 2560, 2560, 1, 2561, 2589, 2561, 2563, 2563, 2563, 1, 2590, 2591, 2592, 2593, 2560, 2560, 1, 2539, 2540, 2539, 2561, 2564, 2567, 2546, 2561, 2563, 2563, 2563, 1, 2539, 2540, 2539, 2561, 2564, 2567, 2546, 2561, 2593, 2563, 2563, 1, 2539, 2540, 2539, 2561, 2564, 2567, 2546, 2561, 2590, 2563, 2563, 1, 2539, 2540, 2539, 2561, 2564, 2594, 2567, 2546, 2561, 2593, 2590, 2563, 2563, 1, 2539, 2540, 2539, 2561, 2564, 2567, 2546, 2561, 2590, 2563, 2563, 2563, 1, 2561, 2589, 2561, 2588, 2563, 2563, 1, 2561, 2589, 2561, 2585, 2563, 2563, 1, 2561, 2589, 2595, 2561, 2588, 2585, 2563, 2563, 1, 2561, 2589, 2561, 2585, 2563, 2563, 2563, 1, 2561, 2584, 2561, 2583, 2563, 2563, 1, 2561, 2584, 2561, 2580, 2563, 2563, 1, 2561, 2584, 2596, 2561, 2583, 2580, 2563, 2563, 1, 2561, 2584, 2561, 2580, 2563, 2563, 2563, 1, 2561, 2562, 2561, 2559, 2563, 2563, 1, 2561, 2562, 2561, 2556, 2563, 2563, 1, 2561, 2562, 2597, 2561, 2559, 2556, 2563, 2563, 1, 2561, 2562, 2561, 2556, 2563, 2563, 2563, 1, 2599, 2598, 2598, 2598, 1, 2601, 2600, 2600, 2600, 1, 2601, 2602, 2602, 2602, 1, 2601, 2603, 2603, 2603, 1, 2601, 1, 2605, 2604, 2604, 2604, 1, 2607, 2606, 2606, 2606, 1, 2607, 2608, 2608, 2608, 1, 2607, 2609, 2609, 2609, 1, 2607, 1, 2611, 2610, 2610, 2610, 1, 2613, 2612, 2612, 2612, 1, 2613, 2614, 2614, 2614, 1, 2613, 2615, 2615, 2615, 1, 2613, 1, 2617, 2616, 2616, 2616, 1, 2619, 2618, 2618, 2618, 1, 2619, 2620, 2620, 2620, 1, 2619, 2621, 2621, 2621, 1, 2619, 1, 2623, 2622, 2622, 2622, 1, 2625, 2624, 2624, 2624, 1, 2625, 2626, 2626, 2626, 1, 2625, 2627, 2627, 2627, 1, 2625, 1, 2629, 2628, 2628, 2628, 1, 2631, 2630, 2630, 2630, 1, 2631, 2632, 2632, 2632, 1, 2631, 2633, 2633, 2633, 1, 2631, 1, 2634, 2635, 2636, 2638, 2637, 2639, 2639, 1, 2640, 2642, 2641, 2641, 2641, 1, 2643, 2644, 2645, 2646, 1, 2647, 1, 2648, 2649, 2650, 2651, 1, 2652, 1, 2653, 2654, 2655, 2656, 1, 2657, 1, 2539, 2540, 2539, 2567, 2546, 1, 2657, 2656, 1, 2657, 2653, 1, 2658, 2657, 2656, 2653, 1, 2657, 2653, 1, 2652, 2651, 1, 2652, 2648, 1, 2652, 2659, 2651, 2648, 1, 2652, 2648, 1, 2647, 2646, 1, 2647, 2643, 1, 2647, 2660, 2646, 2643, 1, 2647, 2643, 1, 2642, 2661, 2661, 2661, 1, 2642, 2662, 2662, 2662, 1, 2642, 1, 2653, 2663, 2663, 2663, 1, 2657, 2664, 2664, 2664, 1, 2657, 2665, 2665, 2665, 1, 2657, 2653, 2653, 2653, 1, 2640, 2642, 2666, 2641, 2641, 1, 2640, 2642, 2667, 2661, 2661, 1, 2640, 2642, 2662, 2662, 2662, 1, 2640, 2668, 2642, 2666, 2669, 2641, 2641, 1, 2640, 2642, 2667, 2661, 2661, 2661, 1, 2640, 2642, 2661, 2661, 2661, 1, 2640, 2642, 2669, 2641, 2641, 1, 2657, 2663, 2663, 2663, 1, 2642, 2641, 2641, 2641, 1, 2670, 2671, 2672, 2657, 2673, 2674, 2674, 1, 2640, 2676, 2657, 2675, 2675, 2675, 1, 2676, 2657, 2677, 2677, 2677, 1, 2676, 2657, 2678, 2678, 2678, 1, 2676, 2657, 1, 2663, 2663, 2663, 1, 2640, 2676, 2657, 2679, 2675, 2675, 1, 2640, 2676, 2657, 2680, 2677, 2677, 1, 2640, 2676, 2657, 2678, 2678, 2678, 1, 2640, 2681, 2676, 2657, 2679, 2682, 2675, 2675, 1, 2640, 2676, 2657, 2680, 2677, 2677, 2677, 1, 2640, 2676, 2657, 2677, 2677, 2677, 1, 2640, 2676, 2657, 2682, 2675, 2675, 1, 2676, 2657, 2675, 2675, 2675, 1, 2683, 2684, 2685, 2657, 2686, 2687, 2687, 1, 2640, 2689, 2657, 2688, 2688, 2688, 1, 2689, 2657, 2690, 2690, 2690, 1, 2689, 2657, 2691, 2691, 2691, 1, 2689, 2657, 1, 2670, 2671, 2672, 2673, 2674, 2674, 1, 2640, 2689, 2657, 2692, 2688, 2688, 1, 2640, 2689, 2657, 2693, 2690, 2690, 1, 2640, 2689, 2657, 2691, 2691, 2691, 1, 2640, 2694, 2689, 2657, 2692, 2695, 2688, 2688, 1, 2640, 2689, 2657, 2693, 2690, 2690, 2690, 1, 2640, 2689, 2657, 2690, 2690, 2690, 1, 2640, 2689, 2657, 2695, 2688, 2688, 1, 2689, 2657, 2688, 2688, 2688, 1, 2696, 2697, 2698, 2657, 2699, 2700, 2700, 1, 2640, 2702, 2657, 2701, 2701, 2701, 1, 2702, 2657, 2703, 2703, 2703, 1, 2702, 2657, 2704, 2704, 2704, 1, 2702, 2657, 1, 2683, 2684, 2685, 2686, 2687, 2687, 1, 2640, 2702, 2657, 2705, 2701, 2701, 1, 2640, 2702, 2657, 2706, 2703, 2703, 1, 2640, 2702, 2657, 2704, 2704, 2704, 1, 2640, 2707, 2702, 2657, 2705, 2708, 2701, 2701, 1, 2640, 2702, 2657, 2706, 2703, 2703, 2703, 1, 2640, 2702, 2657, 2703, 2703, 2703, 1, 2640, 2702, 2657, 2708, 2701, 2701, 1, 2702, 2657, 2701, 2701, 2701, 1, 2709, 2710, 2711, 2657, 2712, 2713, 2713, 1, 2640, 2715, 2657, 2714, 2714, 2714, 1, 2715, 2657, 2716, 2716, 2716, 1, 2715, 2657, 2717, 2717, 2717, 1, 2715, 2657, 1, 2696, 2697, 2698, 2699, 2700, 2700, 1, 2640, 2715, 2657, 2718, 2714, 2714, 1, 2640, 2715, 2657, 2719, 2716, 2716, 1, 2640, 2715, 2657, 2717, 2717, 2717, 1, 2640, 2720, 2715, 2657, 2718, 2721, 2714, 2714, 1, 2640, 2715, 2657, 2719, 2716, 2716, 2716, 1, 2640, 2715, 2657, 2716, 2716, 2716, 1, 2640, 2715, 2657, 2721, 2714, 2714, 1, 2715, 2657, 2714, 2714, 2714, 1, 2722, 2723, 2724, 2657, 2725, 2726, 2726, 1, 2640, 2728, 2657, 2727, 2727, 2727, 1, 2728, 2657, 2729, 2729, 2729, 1, 2728, 2657, 2730, 2730, 2730, 1, 2728, 2657, 1, 2709, 2710, 2711, 2712, 2713, 2713, 1, 2640, 2728, 2657, 2731, 2727, 2727, 1, 2640, 2728, 2657, 2732, 2729, 2729, 1, 2640, 2728, 2657, 2730, 2730, 2730, 1, 2640, 2733, 2728, 2657, 2731, 2734, 2727, 2727, 1, 2640, 2728, 2657, 2732, 2729, 2729, 2729, 1, 2640, 2728, 2657, 2729, 2729, 2729, 1, 2640, 2728, 2657, 2734, 2727, 2727, 1, 2728, 2657, 2727, 2727, 2727, 1, 2735, 1, 2736, 2737, 2738, 2657, 2739, 2740, 2740, 1, 2640, 2742, 2657, 2741, 2741, 2741, 1, 2742, 2657, 2743, 2743, 2743, 1, 2742, 2657, 2744, 2744, 2744, 1, 2742, 2657, 1, 2722, 2723, 2724, 2725, 2726, 2726, 1, 2640, 2742, 2657, 2745, 2741, 2741, 1, 2640, 2742, 2657, 2746, 2743, 2743, 1, 2640, 2742, 2657, 2744, 2744, 2744, 1, 2640, 2747, 2742, 2657, 2745, 2748, 2741, 2741, 1, 2640, 2742, 2657, 2746, 2743, 2743, 2743, 1, 2640, 2742, 2657, 2743, 2743, 2743, 1, 2640, 2742, 2657, 2748, 2741, 2741, 1, 2742, 2657, 2741, 2741, 2741, 1, 2749, 2749, 2749, 1, 2541, 2541, 2541, 1, 2539, 2540, 2539, 2548, 2750, 2545, 2545, 2546, 2548, 2549, 2548, 2548, 2548, 2548, 2548, 2548, 1, 2751, 2751, 2751, 1, 2548, 2548, 2548, 1, 2539, 2540, 2539, 2545, 2752, 2546, 2545, 2545, 2545, 2545, 2545, 2545, 2545, 1, 2753, 2753, 2753, 1, 2545, 2545, 2545, 1, 2539, 2540, 2539, 2545, 2752, 2546, 2545, 2547, 2545, 2545, 2545, 2545, 2545, 2545, 1, 2539, 2540, 2539, 2541, 2542, 2543, 2754, 2548, 2546, 2541, 2549, 2541, 2541, 2541, 2541, 2541, 2541, 1, 2539, 2540, 2539, 2755, 2756, 2757, 2548, 2546, 2755, 2549, 2758, 2755, 2755, 2755, 2755, 2755, 2755, 1, 2539, 2540, 2539, 2755, 2756, 2757, 2759, 2546, 2755, 2760, 2755, 2755, 2755, 2755, 2755, 2755, 1, 2756, 2761, 2762, 2756, 2763, 2756, 2756, 2756, 2756, 2756, 2756, 1, 2764, 2764, 2764, 1, 2756, 2756, 2756, 1, 2762, 2765, 2762, 2763, 2762, 2762, 2762, 2762, 2762, 2762, 2762, 1, 2766, 2766, 2766, 1, 2762, 2762, 2762, 1, 2767, 2768, 2769, 2758, 2770, 2771, 2771, 1, 2772, 2773, 2772, 2774, 2774, 2774, 1, 2772, 2772, 2774, 2774, 2774, 1, 2772, 2775, 2772, 2774, 2774, 2774, 1, 2774, 2771, 2771, 1, 2539, 2540, 2539, 2776, 2777, 2545, 2778, 2546, 2776, 2771, 2771, 2771, 1, 2776, 2776, 2771, 2771, 2771, 1, 2539, 2540, 2539, 2545, 2778, 2546, 2774, 2771, 2771, 1, 2779, 2781, 2780, 2782, 1, 2783, 2784, 1, 2785, 2786, 1, 2787, 1, 2539, 2540, 2539, 2545, 2546, 1, 2539, 2540, 2539, 2545, 2546, 2787, 1, 2539, 2540, 2539, 2545, 2546, 2786, 1, 2539, 2540, 2539, 2545, 2546, 2782, 1, 2539, 2540, 2539, 2545, 2546, 2784, 1, 2539, 2540, 2539, 2545, 2788, 2546, 2782, 2784, 1, 2539, 2540, 2539, 2545, 2789, 2546, 2784, 2786, 1, 2539, 2540, 2539, 2545, 2790, 2546, 2786, 2787, 1, 2539, 2540, 2539, 2545, 2546, 2787, 1, 2791, 2792, 2793, 2794, 2771, 2771, 1, 2772, 2795, 2772, 2774, 2774, 2774, 1, 2796, 2797, 2798, 2799, 2771, 2771, 1, 2772, 2800, 2772, 2774, 2774, 2774, 1, 2801, 2802, 2803, 2804, 2771, 2771, 1, 2539, 2540, 2539, 2772, 2775, 2545, 2778, 2546, 2772, 2774, 2774, 2774, 1, 2539, 2540, 2539, 2772, 2775, 2545, 2778, 2546, 2772, 2804, 2774, 2774, 1, 2539, 2540, 2539, 2772, 2775, 2545, 2778, 2546, 2772, 2801, 2774, 2774, 1, 2539, 2540, 2539, 2772, 2775, 2545, 2805, 2778, 2546, 2772, 2804, 2801, 2774, 2774, 1, 2539, 2540, 2539, 2772, 2775, 2545, 2778, 2546, 2772, 2801, 2774, 2774, 2774, 1, 2772, 2800, 2772, 2799, 2774, 2774, 1, 2772, 2800, 2772, 2796, 2774, 2774, 1, 2772, 2800, 2806, 2772, 2799, 2796, 2774, 2774, 1, 2772, 2800, 2772, 2796, 2774, 2774, 2774, 1, 2772, 2795, 2772, 2794, 2774, 2774, 1, 2772, 2795, 2772, 2791, 2774, 2774, 1, 2772, 2795, 2807, 2772, 2794, 2791, 2774, 2774, 1, 2772, 2795, 2772, 2791, 2774, 2774, 2774, 1, 2772, 2773, 2772, 2770, 2774, 2774, 1, 2772, 2773, 2772, 2767, 2774, 2774, 1, 2772, 2773, 2808, 2772, 2770, 2767, 2774, 2774, 1, 2772, 2773, 2772, 2767, 2774, 2774, 2774, 1, 2810, 2809, 2809, 2809, 1, 2812, 2811, 2811, 2811, 1, 2812, 2813, 2813, 2813, 1, 2812, 2814, 2814, 2814, 1, 2812, 1, 2816, 2815, 2815, 2815, 1, 2818, 2817, 2817, 2817, 1, 2818, 2819, 2819, 2819, 1, 2818, 2820, 2820, 2820, 1, 2818, 1, 2822, 2821, 2821, 2821, 1, 2824, 2823, 2823, 2823, 1, 2824, 2825, 2825, 2825, 1, 2824, 2826, 2826, 2826, 1, 2824, 1, 2828, 2827, 2827, 2827, 1, 2830, 2829, 2829, 2829, 1, 2830, 2831, 2831, 2831, 1, 2830, 2832, 2832, 2832, 1, 2830, 1, 2834, 2833, 2833, 2833, 1, 2836, 2835, 2835, 2835, 1, 2836, 2837, 2837, 2837, 1, 2836, 2838, 2838, 2838, 1, 2836, 1, 2840, 2839, 2839, 2839, 1, 2842, 2841, 2841, 2841, 1, 2842, 2843, 2843, 2843, 1, 2842, 2844, 2844, 2844, 1, 2842, 1, 2845, 2846, 2847, 2849, 2848, 2850, 2850, 1, 2851, 2853, 2852, 2852, 2852, 1, 2854, 2855, 2856, 2857, 1, 2858, 1, 2859, 2860, 2861, 2862, 1, 2863, 1, 2864, 2865, 2866, 2867, 1, 2868, 1, 2539, 2540, 2539, 2545, 2778, 2546, 1, 2868, 2867, 1, 2868, 2864, 1, 2869, 2868, 2867, 2864, 1, 2868, 2864, 1, 2863, 2862, 1, 2863, 2859, 1, 2863, 2870, 2862, 2859, 1, 2863, 2859, 1, 2858, 2857, 1, 2858, 2854, 1, 2858, 2871, 2857, 2854, 1, 2858, 2854, 1, 2853, 2872, 2872, 2872, 1, 2853, 2873, 2873, 2873, 1, 2853, 1, 2864, 2874, 2874, 2874, 1, 2868, 2875, 2875, 2875, 1, 2868, 2876, 2876, 2876, 1, 2868, 2864, 2864, 2864, 1, 2851, 2853, 2877, 2852, 2852, 1, 2851, 2853, 2878, 2872, 2872, 1, 2851, 2853, 2873, 2873, 2873, 1, 2851, 2879, 2853, 2877, 2880, 2852, 2852, 1, 2851, 2853, 2878, 2872, 2872, 2872, 1, 2851, 2853, 2872, 2872, 2872, 1, 2851, 2853, 2880, 2852, 2852, 1, 2868, 2874, 2874, 2874, 1, 2853, 2852, 2852, 2852, 1, 2881, 2882, 2883, 2868, 2884, 2885, 2885, 1, 2851, 2887, 2868, 2886, 2886, 2886, 1, 2887, 2868, 2888, 2888, 2888, 1, 2887, 2868, 2889, 2889, 2889, 1, 2887, 2868, 1, 2874, 2874, 2874, 1, 2851, 2887, 2868, 2890, 2886, 2886, 1, 2851, 2887, 2868, 2891, 2888, 2888, 1, 2851, 2887, 2868, 2889, 2889, 2889, 1, 2851, 2892, 2887, 2868, 2890, 2893, 2886, 2886, 1, 2851, 2887, 2868, 2891, 2888, 2888, 2888, 1, 2851, 2887, 2868, 2888, 2888, 2888, 1, 2851, 2887, 2868, 2893, 2886, 2886, 1, 2887, 2868, 2886, 2886, 2886, 1, 2894, 2895, 2896, 2868, 2897, 2898, 2898, 1, 2851, 2900, 2868, 2899, 2899, 2899, 1, 2900, 2868, 2901, 2901, 2901, 1, 2900, 2868, 2902, 2902, 2902, 1, 2900, 2868, 1, 2881, 2882, 2883, 2884, 2885, 2885, 1, 2851, 2900, 2868, 2903, 2899, 2899, 1, 2851, 2900, 2868, 2904, 2901, 2901, 1, 2851, 2900, 2868, 2902, 2902, 2902, 1, 2851, 2905, 2900, 2868, 2903, 2906, 2899, 2899, 1, 2851, 2900, 2868, 2904, 2901, 2901, 2901, 1, 2851, 2900, 2868, 2901, 2901, 2901, 1, 2851, 2900, 2868, 2906, 2899, 2899, 1, 2900, 2868, 2899, 2899, 2899, 1, 2907, 2908, 2909, 2868, 2910, 2911, 2911, 1, 2851, 2913, 2868, 2912, 2912, 2912, 1, 2913, 2868, 2914, 2914, 2914, 1, 2913, 2868, 2915, 2915, 2915, 1, 2913, 2868, 1, 2894, 2895, 2896, 2897, 2898, 2898, 1, 2851, 2913, 2868, 2916, 2912, 2912, 1, 2851, 2913, 2868, 2917, 2914, 2914, 1, 2851, 2913, 2868, 2915, 2915, 2915, 1, 2851, 2918, 2913, 2868, 2916, 2919, 2912, 2912, 1, 2851, 2913, 2868, 2917, 2914, 2914, 2914, 1, 2851, 2913, 2868, 2914, 2914, 2914, 1, 2851, 2913, 2868, 2919, 2912, 2912, 1, 2913, 2868, 2912, 2912, 2912, 1, 2920, 2921, 2922, 2868, 2923, 2924, 2924, 1, 2851, 2926, 2868, 2925, 2925, 2925, 1, 2926, 2868, 2927, 2927, 2927, 1, 2926, 2868, 2928, 2928, 2928, 1, 2926, 2868, 1, 2907, 2908, 2909, 2910, 2911, 2911, 1, 2851, 2926, 2868, 2929, 2925, 2925, 1, 2851, 2926, 2868, 2930, 2927, 2927, 1, 2851, 2926, 2868, 2928, 2928, 2928, 1, 2851, 2931, 2926, 2868, 2929, 2932, 2925, 2925, 1, 2851, 2926, 2868, 2930, 2927, 2927, 2927, 1, 2851, 2926, 2868, 2927, 2927, 2927, 1, 2851, 2926, 2868, 2932, 2925, 2925, 1, 2926, 2868, 2925, 2925, 2925, 1, 2933, 2934, 2935, 2868, 2936, 2937, 2937, 1, 2851, 2939, 2868, 2938, 2938, 2938, 1, 2939, 2868, 2940, 2940, 2940, 1, 2939, 2868, 2941, 2941, 2941, 1, 2939, 2868, 1, 2920, 2921, 2922, 2923, 2924, 2924, 1, 2851, 2939, 2868, 2942, 2938, 2938, 1, 2851, 2939, 2868, 2943, 2940, 2940, 1, 2851, 2939, 2868, 2941, 2941, 2941, 1, 2851, 2944, 2939, 2868, 2942, 2945, 2938, 2938, 1, 2851, 2939, 2868, 2943, 2940, 2940, 2940, 1, 2851, 2939, 2868, 2940, 2940, 2940, 1, 2851, 2939, 2868, 2945, 2938, 2938, 1, 2939, 2868, 2938, 2938, 2938, 1, 2946, 1, 2947, 2948, 2949, 2868, 2950, 2951, 2951, 1, 2851, 2953, 2868, 2952, 2952, 2952, 1, 2953, 2868, 2954, 2954, 2954, 1, 2953, 2868, 2955, 2955, 2955, 1, 2953, 2868, 1, 2933, 2934, 2935, 2936, 2937, 2937, 1, 2851, 2953, 2868, 2956, 2952, 2952, 1, 2851, 2953, 2868, 2957, 2954, 2954, 1, 2851, 2953, 2868, 2955, 2955, 2955, 1, 2851, 2958, 2953, 2868, 2956, 2959, 2952, 2952, 1, 2851, 2953, 2868, 2957, 2954, 2954, 2954, 1, 2851, 2953, 2868, 2954, 2954, 2954, 1, 2851, 2953, 2868, 2959, 2952, 2952, 1, 2953, 2868, 2952, 2952, 2952, 1, 2960, 2960, 2960, 1, 2755, 2755, 2755, 1, 2539, 2540, 2539, 2759, 2961, 2545, 2545, 2546, 2759, 2760, 2759, 2759, 2759, 2759, 2759, 2759, 1, 2962, 2962, 2962, 1, 2759, 2759, 2759, 1, 2539, 2540, 2539, 2545, 2752, 2546, 2545, 2758, 2545, 2545, 2545, 2545, 2545, 2545, 1, 2515, 2516, 2515, 2517, 2517, 2517, 2517, 2537, 2538, 2518, 2963, 2963, 2517, 2537, 2537, 2537, 2517, 2537, 1, 2515, 2516, 2515, 2517, 2517, 2517, 2517, 2537, 2538, 2518, 2964, 2964, 2517, 2537, 2537, 2537, 2517, 2537, 1, 2515, 2516, 2515, 2517, 2517, 2517, 2517, 2537, 2965, 2518, 2966, 2966, 2517, 2537, 2537, 2537, 2517, 2537, 1, 2967, 2968, 2969, 2970, 2971, 2967, 2974, 2967, 2967, 2967, 2967, 2972, 2973, 2973, 1, 2975, 2976, 2977, 2975, 2978, 2975, 2975, 2975, 2975, 2975, 2975, 1, 2979, 2979, 2979, 1, 2975, 2975, 2975, 1, 2977, 2980, 2977, 2978, 2977, 2977, 2977, 2977, 2977, 2977, 2977, 1, 2981, 2981, 2981, 1, 2977, 2977, 2977, 1, 2982, 2983, 2984, 2974, 2985, 2986, 2986, 1, 2987, 2988, 2987, 2989, 2989, 2989, 1, 2987, 2987, 2989, 2989, 2989, 1, 2987, 2990, 2987, 2989, 2989, 2989, 1, 2989, 2991, 2991, 1, 2992, 2993, 2992, 2994, 2995, 2996, 2997, 2994, 2991, 2991, 2991, 1, 2994, 2994, 2991, 2991, 2991, 1, 2992, 2993, 2992, 2996, 2997, 2989, 2991, 2991, 1, 2998, 3000, 2999, 3001, 1, 3002, 3003, 1, 3004, 3005, 1, 3006, 1, 3007, 3008, 3007, 3009, 1, 3007, 3008, 3007, 3009, 3006, 1, 3007, 3008, 3007, 3009, 3005, 1, 3007, 3008, 3007, 3009, 3010, 1, 3007, 3008, 3007, 3009, 3003, 1, 3007, 3008, 3007, 3011, 3009, 3010, 3003, 1, 3007, 3008, 3007, 3012, 3009, 3003, 3005, 1, 3007, 3008, 3007, 3013, 3009, 3005, 3006, 1, 3007, 3008, 3007, 3009, 3006, 1, 3014, 3015, 3016, 3017, 2991, 2991, 1, 2987, 3018, 2987, 2989, 2989, 2989, 1, 3019, 3020, 3021, 3022, 2991, 2991, 1, 2987, 3023, 2987, 2989, 2989, 2989, 1, 3024, 3025, 3026, 3027, 2991, 2991, 1, 3028, 3029, 3028, 2987, 2990, 3030, 3031, 2987, 2989, 2989, 2989, 1, 3028, 3029, 3028, 2987, 2990, 3030, 3031, 2987, 3027, 2989, 2989, 1, 3028, 3029, 3028, 2987, 2990, 3030, 3031, 2987, 3024, 2989, 2989, 1, 3028, 3029, 3028, 2987, 2990, 3032, 3030, 3031, 2987, 3027, 3024, 2989, 2989, 1, 3028, 3029, 3028, 2987, 2990, 3030, 3031, 2987, 3024, 2989, 2989, 2989, 1, 2987, 3023, 2987, 3022, 2989, 2989, 1, 2987, 3023, 2987, 3019, 2989, 2989, 1, 2987, 3023, 3033, 2987, 3022, 3019, 2989, 2989, 1, 2987, 3023, 2987, 3019, 2989, 2989, 2989, 1, 2987, 3018, 2987, 3017, 2989, 2989, 1, 2987, 3018, 2987, 3014, 2989, 2989, 1, 2987, 3018, 3034, 2987, 3017, 3014, 2989, 2989, 1, 2987, 3018, 2987, 3014, 2989, 2989, 2989, 1, 2987, 2988, 2987, 3035, 2989, 2989, 1, 2987, 2988, 2987, 3036, 2989, 2989, 1, 2987, 2988, 3037, 2987, 3035, 3036, 2989, 2989, 1, 2987, 2988, 2987, 3036, 2989, 2989, 2989, 1, 3039, 3038, 3038, 3038, 1, 3041, 3040, 3040, 3040, 1, 3041, 3042, 3042, 3042, 1, 3041, 3043, 3043, 3043, 1, 3041, 1, 3045, 3044, 3044, 3044, 1, 3047, 3046, 3046, 3046, 1, 3047, 3048, 3048, 3048, 1, 3047, 3049, 3049, 3049, 1, 3047, 1, 3051, 3050, 3050, 3050, 1, 3053, 3052, 3052, 3052, 1, 3053, 3054, 3054, 3054, 1, 3053, 3055, 3055, 3055, 1, 3053, 1, 3057, 3056, 3056, 3056, 1, 3059, 3058, 3058, 3058, 1, 3059, 3060, 3060, 3060, 1, 3059, 3061, 3061, 3061, 1, 3059, 1, 3063, 3062, 3062, 3062, 1, 3065, 3064, 3064, 3064, 1, 3065, 3066, 3066, 3066, 1, 3065, 3067, 3067, 3067, 1, 3065, 1, 3069, 3068, 3068, 3068, 1, 3071, 3070, 3070, 3070, 1, 3071, 3072, 3072, 3072, 1, 3071, 3073, 3073, 3073, 1, 3071, 1, 3074, 3075, 3076, 3078, 3077, 3079, 3079, 1, 3080, 3082, 3081, 3081, 3081, 1, 3083, 3084, 3085, 3086, 1, 3087, 1, 3088, 3089, 3090, 3091, 1, 3092, 1, 3093, 3094, 3095, 3096, 1, 3097, 1, 3098, 3099, 3098, 3100, 3101, 1, 3097, 3096, 1, 3097, 3093, 1, 3102, 3097, 3096, 3093, 1, 3097, 3093, 1, 3092, 3091, 1, 3092, 3088, 1, 3092, 3103, 3091, 3088, 1, 3092, 3088, 1, 3087, 3086, 1, 3087, 3083, 1, 3087, 3104, 3086, 3083, 1, 3087, 3083, 1, 3082, 3105, 3105, 3105, 1, 3082, 3106, 3106, 3106, 1, 3082, 1, 3093, 3107, 3107, 3107, 1, 3097, 3108, 3108, 3108, 1, 3097, 3109, 3109, 3109, 1, 3097, 3093, 3093, 3093, 1, 3080, 3082, 3110, 3081, 3081, 1, 3080, 3082, 3111, 3105, 3105, 1, 3080, 3082, 3106, 3106, 3106, 1, 3080, 3112, 3082, 3110, 3113, 3081, 3081, 1, 3080, 3082, 3111, 3105, 3105, 3105, 1, 3080, 3082, 3105, 3105, 3105, 1, 3080, 3082, 3113, 3081, 3081, 1, 3097, 3107, 3107, 3107, 1, 3082, 3081, 3081, 3081, 1, 3114, 3115, 3116, 3097, 3117, 3118, 3118, 1, 3080, 3120, 3097, 3119, 3119, 3119, 1, 3120, 3097, 3121, 3121, 3121, 1, 3120, 3097, 3122, 3122, 3122, 1, 3120, 3097, 1, 3107, 3107, 3107, 1, 3080, 3120, 3097, 3123, 3119, 3119, 1, 3080, 3120, 3097, 3124, 3121, 3121, 1, 3080, 3120, 3097, 3122, 3122, 3122, 1, 3080, 3125, 3120, 3097, 3123, 3126, 3119, 3119, 1, 3080, 3120, 3097, 3124, 3121, 3121, 3121, 1, 3080, 3120, 3097, 3121, 3121, 3121, 1, 3080, 3120, 3097, 3126, 3119, 3119, 1, 3120, 3097, 3119, 3119, 3119, 1, 3127, 3128, 3129, 3097, 3130, 3131, 3131, 1, 3080, 3133, 3097, 3132, 3132, 3132, 1, 3133, 3097, 3134, 3134, 3134, 1, 3133, 3097, 3135, 3135, 3135, 1, 3133, 3097, 1, 3114, 3115, 3116, 3117, 3118, 3118, 1, 3080, 3133, 3097, 3136, 3132, 3132, 1, 3080, 3133, 3097, 3137, 3134, 3134, 1, 3080, 3133, 3097, 3135, 3135, 3135, 1, 3080, 3138, 3133, 3097, 3136, 3139, 3132, 3132, 1, 3080, 3133, 3097, 3137, 3134, 3134, 3134, 1, 3080, 3133, 3097, 3134, 3134, 3134, 1, 3080, 3133, 3097, 3139, 3132, 3132, 1, 3133, 3097, 3132, 3132, 3132, 1, 3140, 3141, 3142, 3097, 3143, 3144, 3144, 1, 3080, 3146, 3097, 3145, 3145, 3145, 1, 3146, 3097, 3147, 3147, 3147, 1, 3146, 3097, 3148, 3148, 3148, 1, 3146, 3097, 1, 3127, 3128, 3129, 3130, 3131, 3131, 1, 3080, 3146, 3097, 3149, 3145, 3145, 1, 3080, 3146, 3097, 3150, 3147, 3147, 1, 3080, 3146, 3097, 3148, 3148, 3148, 1, 3080, 3151, 3146, 3097, 3149, 3152, 3145, 3145, 1, 3080, 3146, 3097, 3150, 3147, 3147, 3147, 1, 3080, 3146, 3097, 3147, 3147, 3147, 1, 3080, 3146, 3097, 3152, 3145, 3145, 1, 3146, 3097, 3145, 3145, 3145, 1, 3153, 3154, 3155, 3097, 3156, 3157, 3157, 1, 3080, 3159, 3097, 3158, 3158, 3158, 1, 3159, 3097, 3160, 3160, 3160, 1, 3159, 3097, 3161, 3161, 3161, 1, 3159, 3097, 1, 3140, 3141, 3142, 3143, 3144, 3144, 1, 3080, 3159, 3097, 3162, 3158, 3158, 1, 3080, 3159, 3097, 3163, 3160, 3160, 1, 3080, 3159, 3097, 3161, 3161, 3161, 1, 3080, 3164, 3159, 3097, 3162, 3165, 3158, 3158, 1, 3080, 3159, 3097, 3163, 3160, 3160, 3160, 1, 3080, 3159, 3097, 3160, 3160, 3160, 1, 3080, 3159, 3097, 3165, 3158, 3158, 1, 3159, 3097, 3158, 3158, 3158, 1, 3166, 3167, 3168, 3097, 3169, 3170, 3170, 1, 3080, 3172, 3097, 3171, 3171, 3171, 1, 3172, 3097, 3173, 3173, 3173, 1, 3172, 3097, 3174, 3174, 3174, 1, 3172, 3097, 1, 3153, 3154, 3155, 3156, 3157, 3157, 1, 3080, 3172, 3097, 3175, 3171, 3171, 1, 3080, 3172, 3097, 3176, 3173, 3173, 1, 3080, 3172, 3097, 3174, 3174, 3174, 1, 3080, 3177, 3172, 3097, 3175, 3178, 3171, 3171, 1, 3080, 3172, 3097, 3176, 3173, 3173, 3173, 1, 3080, 3172, 3097, 3173, 3173, 3173, 1, 3080, 3172, 3097, 3178, 3171, 3171, 1, 3172, 3097, 3171, 3171, 3171, 1, 3179, 1, 3180, 3181, 3182, 3097, 3183, 3184, 3184, 1, 3080, 3186, 3097, 3185, 3185, 3185, 1, 3186, 3097, 3187, 3187, 3187, 1, 3186, 3097, 3188, 3188, 3188, 1, 3186, 3097, 1, 3166, 3167, 3168, 3169, 3170, 3170, 1, 3080, 3186, 3097, 3189, 3185, 3185, 1, 3080, 3186, 3097, 3190, 3187, 3187, 1, 3080, 3186, 3097, 3188, 3188, 3188, 1, 3080, 3191, 3186, 3097, 3189, 3192, 3185, 3185, 1, 3080, 3186, 3097, 3190, 3187, 3187, 3187, 1, 3080, 3186, 3097, 3187, 3187, 3187, 1, 3080, 3186, 3097, 3192, 3185, 3185, 1, 3186, 3097, 3185, 3185, 3185, 1, 2975, 2976, 3193, 3194, 2975, 2977, 2975, 2978, 3193, 2975, 2975, 3195, 3195, 3195, 1, 2975, 2976, 3193, 2977, 2975, 2978, 3193, 2975, 2975, 2975, 3195, 3195, 3195, 1, 2975, 2976, 3193, 3196, 2975, 2977, 2975, 2978, 3193, 2975, 2975, 3195, 3195, 3195, 1, 2975, 2976, 2977, 2975, 2978, 2975, 2975, 2975, 2975, 3195, 3197, 3197, 1, 2992, 2993, 2992, 2975, 2976, 3198, 3199, 2975, 3200, 2997, 2975, 2978, 3198, 2975, 2975, 3197, 3197, 3197, 1, 2975, 2976, 3198, 2977, 2975, 2978, 3198, 2975, 2975, 2975, 3197, 3197, 3197, 1, 2992, 2993, 2992, 2975, 2976, 3200, 2997, 2975, 2978, 2975, 2975, 2975, 2975, 3195, 3197, 3197, 1, 2977, 2980, 3201, 3203, 2977, 2978, 2977, 2977, 2977, 2977, 3202, 3204, 2977, 2977, 1, 2977, 2980, 3205, 2977, 2978, 2977, 2977, 2977, 2977, 3206, 2977, 2977, 1, 2977, 2980, 3207, 2977, 2978, 2977, 2977, 2977, 2977, 3208, 2977, 2977, 1, 2977, 2980, 2977, 2977, 2978, 2977, 2977, 2977, 2977, 3209, 2977, 2977, 1, 3007, 3008, 3007, 2977, 2980, 3009, 2977, 2978, 2977, 2977, 2977, 2977, 2977, 2977, 2977, 1, 3007, 3008, 3007, 2977, 2980, 3009, 2977, 2978, 2977, 2977, 2977, 2977, 3209, 2977, 2977, 1, 3007, 3008, 3007, 2977, 2980, 3009, 2977, 2978, 2977, 2977, 2977, 2977, 3208, 2977, 2977, 1, 3007, 3008, 3007, 2977, 2980, 3009, 2977, 2978, 2977, 2977, 2977, 2977, 3210, 2977, 2977, 1, 3007, 3008, 3007, 2977, 2980, 3009, 2977, 2978, 2977, 2977, 2977, 2977, 3206, 2977, 2977, 1, 3007, 3008, 3007, 2977, 2980, 3211, 3009, 2977, 2978, 2977, 2977, 2977, 2977, 3210, 3206, 2977, 2977, 1, 3007, 3008, 3007, 2977, 2980, 3212, 3009, 2977, 2978, 2977, 2977, 2977, 2977, 3206, 3208, 2977, 2977, 1, 3007, 3008, 3007, 2977, 2980, 3213, 3009, 2977, 2978, 2977, 2977, 2977, 2977, 3208, 3209, 2977, 2977, 1, 3007, 3008, 3007, 2977, 2980, 3009, 2977, 2978, 2977, 2977, 2977, 2977, 3209, 2977, 2977, 2977, 1, 2975, 2976, 3214, 3215, 3216, 2977, 2975, 2978, 2975, 2975, 2975, 2975, 3217, 3197, 3197, 1, 2975, 2976, 3193, 3218, 2975, 2977, 2975, 2978, 3193, 2975, 2975, 3195, 3195, 3195, 1, 2975, 2976, 3219, 3220, 3221, 2977, 2975, 2978, 2975, 2975, 2975, 2975, 3222, 3197, 3197, 1, 2975, 2976, 3193, 3223, 2975, 2977, 2975, 2978, 3193, 2975, 2975, 3195, 3195, 3195, 1, 2975, 2976, 3224, 3225, 3226, 2977, 2975, 2978, 2975, 2975, 2975, 2975, 3227, 3197, 3197, 1, 3028, 3029, 3028, 2975, 2976, 3193, 3196, 2975, 3228, 3031, 2975, 2978, 3193, 2975, 2975, 3195, 3195, 3195, 1, 3028, 3029, 3028, 2975, 2976, 3193, 3196, 2975, 3228, 3031, 2975, 2978, 3193, 2975, 2975, 3227, 3195, 3195, 1, 3028, 3029, 3028, 2975, 2976, 3193, 3196, 2975, 3228, 3031, 2975, 2978, 3193, 2975, 2975, 3224, 3195, 3195, 1, 3028, 3029, 3028, 2975, 2976, 3193, 3196, 2975, 3229, 3228, 3031, 2975, 2978, 3193, 2975, 2975, 3227, 3224, 3195, 3195, 1, 3028, 3029, 3028, 2975, 2976, 3193, 3196, 2975, 3228, 3031, 2975, 2978, 3193, 2975, 2975, 3224, 3195, 3195, 3195, 1, 2975, 2976, 3193, 3223, 2975, 2977, 2975, 2978, 3193, 2975, 2975, 3222, 3195, 3195, 1, 2975, 2976, 3193, 3223, 2975, 2977, 2975, 2978, 3193, 2975, 2975, 3219, 3195, 3195, 1, 2975, 2976, 3193, 3223, 2975, 3230, 2977, 2975, 2978, 3193, 2975, 2975, 3222, 3219, 3195, 3195, 1, 2975, 2976, 3193, 3223, 2975, 2977, 2975, 2978, 3193, 2975, 2975, 3219, 3195, 3195, 3195, 1, 2975, 2976, 3193, 3218, 2975, 2977, 2975, 2978, 3193, 2975, 2975, 3217, 3195, 3195, 1, 2975, 2976, 3193, 3218, 2975, 2977, 2975, 2978, 3193, 2975, 2975, 3214, 3195, 3195, 1, 2975, 2976, 3193, 3218, 2975, 3231, 2977, 2975, 2978, 3193, 2975, 2975, 3217, 3214, 3195, 3195, 1, 2975, 2976, 3193, 3218, 2975, 2977, 2975, 2978, 3193, 2975, 2975, 3214, 3195, 3195, 3195, 1, 2975, 2976, 3193, 3194, 2975, 2977, 2975, 2978, 3193, 2975, 2975, 3232, 3195, 3195, 1, 2975, 2976, 3193, 3194, 2975, 2977, 2975, 2978, 3193, 2975, 2975, 3233, 3195, 3195, 1, 2975, 2976, 3193, 3194, 2975, 3234, 2977, 2975, 2978, 3193, 2975, 2975, 3232, 3233, 3195, 3195, 1, 2975, 2976, 3193, 3194, 2975, 2977, 2975, 2978, 3193, 2975, 2975, 3233, 3195, 3195, 3195, 1, 2515, 2516, 2515, 2517, 2517, 2517, 2517, 2537, 3235, 2518, 2517, 2537, 2537, 2537, 2517, 2537, 1, 2515, 2516, 2515, 2517, 2517, 2517, 2517, 2537, 2538, 2518, 3236, 3236, 2517, 2537, 2537, 2537, 2517, 2537, 1, 2515, 2516, 2515, 2517, 2517, 2517, 2517, 2537, 2538, 2518, 3237, 3237, 2517, 2537, 2537, 2537, 2517, 2537, 1, 2515, 2516, 2515, 2517, 2517, 2517, 2517, 2537, 3238, 2518, 2517, 2537, 2537, 2537, 2517, 2537, 1, 3239, 3239, 3241, 3240, 3240, 3239, 3239, 3239, 1, 3242, 3243, 3242, 3244, 3245, 3244, 3244, 3244, 3244, 3244, 1, 3244, 3244, 3246, 3246, 3244, 3244, 3244, 1, 3247, 3247, 3248, 1, 3242, 3243, 3242, 3245, 3248, 3248, 3248, 1, 602, 602, 61, 61, 61, 603, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 3249, 3249, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 3250, 3250, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 3251, 3251, 61, 61, 61, 61, 61, 61, 1, 3252, 3252, 61, 61, 61, 3253, 61, 61, 61, 61, 61, 61, 1, 3254, 3254, 3255, 1, 3256, 3257, 3256, 3258, 3259, 3258, 3258, 3260, 3258, 3258, 3258, 3258, 3258, 3258, 1, 3261, 1, 3262, 3262, 1, 3263, 3264, 3263, 3258, 3259, 3258, 3258, 3260, 3258, 3258, 3258, 3258, 3258, 3258, 1, 3265, 1, 3266, 3266, 1, 3266, 3266, 3267, 1, 3268, 3268, 1, 3269, 3269, 1, 3270, 3270, 1, 3271, 3272, 3272, 1, 3273, 3274, 3275, 3276, 3277, 3273, 3273, 3273, 3280, 3273, 3273, 3273, 3278, 3279, 3279, 1, 3281, 3282, 3283, 3281, 3284, 3281, 3281, 3281, 3281, 3281, 1, 3285, 3285, 3285, 1, 3281, 3281, 3281, 1, 3283, 3286, 3283, 3284, 3283, 3283, 3283, 3283, 3283, 3283, 1, 3287, 3287, 3287, 1, 3283, 3283, 3283, 1, 3288, 3289, 3290, 3280, 3291, 3292, 3292, 1, 3293, 3294, 3293, 3295, 3295, 3295, 1, 3293, 3293, 3295, 3295, 3295, 1, 3293, 3296, 3293, 3295, 3295, 3295, 1, 3295, 3297, 3297, 1, 3298, 3299, 3300, 3301, 3302, 3303, 3298, 3297, 3297, 3297, 1, 3298, 3298, 3297, 3297, 3297, 1, 3300, 3301, 3302, 3303, 3295, 3297, 3297, 1, 3304, 3306, 3305, 3307, 1, 3308, 3309, 1, 3310, 3311, 1, 3312, 1, 3313, 3314, 3315, 1, 3316, 3317, 3318, 3319, 3320, 3316, 3316, 3318, 3319, 3320, 3316, 3316, 3316, 3316, 3316, 1, 3321, 3322, 3323, 3324, 3325, 3326, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 1, 3327, 3327, 3327, 1, 3321, 3321, 3321, 1, 3328, 3329, 3323, 3330, 3325, 3326, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 1, 3331, 3332, 3333, 3334, 3335, 3331, 3331, 3331, 3331, 3331, 3331, 3331, 1, 3336, 3336, 3336, 1, 3331, 3331, 3331, 1, 3337, 3338, 3337, 3339, 3340, 1, 3341, 3342, 3341, 3343, 3340, 1, 3344, 1, 3345, 3345, 1, 3345, 3345, 3343, 3340, 1, 3343, 3346, 3343, 3347, 3348, 3347, 3347, 3349, 3347, 3347, 3347, 3347, 3347, 3347, 1, 3350, 1, 3351, 3351, 1, 3351, 3352, 3351, 3347, 3348, 3347, 3347, 3349, 3347, 3347, 3347, 3347, 3347, 3347, 1, 3353, 3354, 3353, 3355, 3355, 3355, 3356, 3355, 3355, 3355, 3355, 3355, 3355, 1, 3357, 3358, 3357, 3355, 3355, 3355, 3267, 3355, 3355, 3355, 3355, 3355, 3355, 1, 3359, 1, 3360, 3360, 1, 3360, 3360, 3355, 3355, 3355, 3267, 3355, 3355, 3355, 3355, 3355, 3355, 1, 3366, 3367, 3368, 3369, 3361, 3362, 3363, 3364, 3365, 3366, 1, 3366, 1, 3361, 1, 3362, 1, 3363, 1, 3364, 1, 3370, 1, 3366, 3366, 1, 3371, 3372, 3371, 3356, 1, 3373, 3374, 3373, 3267, 1, 3366, 3366, 3366, 1, 3340, 3375, 3340, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 1, 3377, 1, 3378, 3378, 1, 3378, 3378, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 3376, 1, 3379, 3380, 3379, 3376, 3376, 3376, 3339, 3340, 3381, 3376, 3376, 3376, 3376, 3376, 1, 3382, 3383, 3382, 3343, 3340, 3381, 1, 3384, 1, 3385, 3385, 1, 3385, 3385, 3343, 3340, 3381, 1, 3381, 3386, 3381, 3387, 3388, 3387, 3387, 3389, 3387, 3387, 3387, 3387, 3387, 3387, 1, 3390, 1, 3391, 3391, 1, 3391, 3391, 3387, 3388, 3387, 3387, 3389, 3387, 3387, 3387, 3387, 3387, 3387, 1, 3337, 3338, 3337, 3387, 3387, 3387, 3339, 3340, 3387, 3387, 3387, 3387, 3387, 1, 3392, 1, 3345, 46, 3345, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 3388, 3398, 3399, 3400, 3393, 3394, 3395, 3396, 3397, 3388, 1, 3388, 1, 3393, 1, 3394, 1, 3395, 1, 3396, 1, 3401, 1, 3388, 3388, 1, 3388, 3388, 3388, 1, 3403, 3402, 3402, 3402, 1, 3405, 3404, 3404, 3404, 1, 3405, 3406, 3406, 3406, 1, 3405, 3407, 3407, 3407, 1, 3405, 1, 3409, 3408, 3408, 3408, 1, 3411, 3410, 3410, 3410, 1, 3411, 3412, 3412, 3412, 1, 3411, 3413, 3413, 3413, 1, 3411, 1, 3415, 3414, 3414, 3414, 1, 3417, 3416, 3416, 3416, 1, 3417, 3418, 3418, 3418, 1, 3417, 3419, 3419, 3419, 1, 3417, 1, 3421, 3420, 3420, 3420, 1, 3423, 3422, 3422, 3422, 1, 3423, 3424, 3424, 3424, 1, 3423, 3425, 3425, 3425, 1, 3423, 1, 3427, 3426, 3426, 3426, 1, 3429, 3428, 3428, 3428, 1, 3429, 3430, 3430, 3430, 1, 3429, 3431, 3431, 3431, 1, 3429, 1, 3433, 3432, 3432, 3432, 1, 3435, 3434, 3434, 3434, 1, 3435, 3436, 3436, 3436, 1, 3435, 3437, 3437, 3437, 1, 3435, 1, 3438, 3439, 3440, 3442, 3441, 3443, 3443, 1, 3444, 3446, 3445, 3445, 3445, 1, 3447, 3448, 3449, 3450, 1, 3451, 1, 3452, 3453, 3454, 3455, 1, 3456, 1, 3457, 3458, 3459, 3460, 1, 3399, 1, 3399, 3460, 1, 3399, 3457, 1, 3461, 3399, 3460, 3457, 1, 3399, 3457, 1, 3456, 3455, 1, 3456, 3452, 1, 3456, 3462, 3455, 3452, 1, 3456, 3452, 1, 3451, 3450, 1, 3451, 3447, 1, 3451, 3463, 3450, 3447, 1, 3451, 3447, 1, 3446, 3464, 3464, 3464, 1, 3446, 3465, 3465, 3465, 1, 3446, 1, 3457, 3466, 3466, 3466, 1, 3399, 3467, 3467, 3467, 1, 3399, 3468, 3468, 3468, 1, 3399, 3457, 3457, 3457, 1, 3444, 3446, 3469, 3445, 3445, 1, 3444, 3446, 3470, 3464, 3464, 1, 3444, 3446, 3465, 3465, 3465, 1, 3444, 3471, 3446, 3469, 3472, 3445, 3445, 1, 3444, 3446, 3470, 3464, 3464, 3464, 1, 3444, 3446, 3464, 3464, 3464, 1, 3444, 3446, 3472, 3445, 3445, 1, 3399, 3466, 3466, 3466, 1, 3446, 3445, 3445, 3445, 1, 3473, 3474, 3475, 3399, 3476, 3477, 3477, 1, 3444, 3479, 3399, 3478, 3478, 3478, 1, 3479, 3399, 3480, 3480, 3480, 1, 3479, 3399, 3481, 3481, 3481, 1, 3479, 3399, 1, 3466, 3466, 3466, 1, 3444, 3479, 3399, 3482, 3478, 3478, 1, 3444, 3479, 3399, 3483, 3480, 3480, 1, 3444, 3479, 3399, 3481, 3481, 3481, 1, 3444, 3484, 3479, 3399, 3482, 3485, 3478, 3478, 1, 3444, 3479, 3399, 3483, 3480, 3480, 3480, 1, 3444, 3479, 3399, 3480, 3480, 3480, 1, 3444, 3479, 3399, 3485, 3478, 3478, 1, 3479, 3399, 3478, 3478, 3478, 1, 3486, 3487, 3488, 3399, 3489, 3490, 3490, 1, 3444, 3492, 3399, 3491, 3491, 3491, 1, 3492, 3399, 3493, 3493, 3493, 1, 3492, 3399, 3494, 3494, 3494, 1, 3492, 3399, 1, 3473, 3474, 3475, 3476, 3477, 3477, 1, 3444, 3492, 3399, 3495, 3491, 3491, 1, 3444, 3492, 3399, 3496, 3493, 3493, 1, 3444, 3492, 3399, 3494, 3494, 3494, 1, 3444, 3497, 3492, 3399, 3495, 3498, 3491, 3491, 1, 3444, 3492, 3399, 3496, 3493, 3493, 3493, 1, 3444, 3492, 3399, 3493, 3493, 3493, 1, 3444, 3492, 3399, 3498, 3491, 3491, 1, 3492, 3399, 3491, 3491, 3491, 1, 3499, 3500, 3501, 3399, 3502, 3503, 3503, 1, 3444, 3505, 3399, 3504, 3504, 3504, 1, 3505, 3399, 3506, 3506, 3506, 1, 3505, 3399, 3507, 3507, 3507, 1, 3505, 3399, 1, 3486, 3487, 3488, 3489, 3490, 3490, 1, 3444, 3505, 3399, 3508, 3504, 3504, 1, 3444, 3505, 3399, 3509, 3506, 3506, 1, 3444, 3505, 3399, 3507, 3507, 3507, 1, 3444, 3510, 3505, 3399, 3508, 3511, 3504, 3504, 1, 3444, 3505, 3399, 3509, 3506, 3506, 3506, 1, 3444, 3505, 3399, 3506, 3506, 3506, 1, 3444, 3505, 3399, 3511, 3504, 3504, 1, 3505, 3399, 3504, 3504, 3504, 1, 3512, 3513, 3514, 3399, 3515, 3516, 3516, 1, 3444, 3518, 3399, 3517, 3517, 3517, 1, 3518, 3399, 3519, 3519, 3519, 1, 3518, 3399, 3520, 3520, 3520, 1, 3518, 3399, 1, 3499, 3500, 3501, 3502, 3503, 3503, 1, 3444, 3518, 3399, 3521, 3517, 3517, 1, 3444, 3518, 3399, 3522, 3519, 3519, 1, 3444, 3518, 3399, 3520, 3520, 3520, 1, 3444, 3523, 3518, 3399, 3521, 3524, 3517, 3517, 1, 3444, 3518, 3399, 3522, 3519, 3519, 3519, 1, 3444, 3518, 3399, 3519, 3519, 3519, 1, 3444, 3518, 3399, 3524, 3517, 3517, 1, 3518, 3399, 3517, 3517, 3517, 1, 3525, 3526, 3527, 3399, 3528, 3529, 3529, 1, 3444, 3531, 3399, 3530, 3530, 3530, 1, 3531, 3399, 3532, 3532, 3532, 1, 3531, 3399, 3533, 3533, 3533, 1, 3531, 3399, 1, 3512, 3513, 3514, 3515, 3516, 3516, 1, 3444, 3531, 3399, 3534, 3530, 3530, 1, 3444, 3531, 3399, 3535, 3532, 3532, 1, 3444, 3531, 3399, 3533, 3533, 3533, 1, 3444, 3536, 3531, 3399, 3534, 3537, 3530, 3530, 1, 3444, 3531, 3399, 3535, 3532, 3532, 3532, 1, 3444, 3531, 3399, 3532, 3532, 3532, 1, 3444, 3531, 3399, 3537, 3530, 3530, 1, 3531, 3399, 3530, 3530, 3530, 1, 3538, 1, 3539, 3540, 3541, 3399, 3542, 3543, 3543, 1, 3444, 3545, 3399, 3544, 3544, 3544, 1, 3545, 3399, 3546, 3546, 3546, 1, 3545, 3399, 3547, 3547, 3547, 1, 3545, 3399, 1, 3525, 3526, 3527, 3528, 3529, 3529, 1, 3444, 3545, 3399, 3548, 3544, 3544, 1, 3444, 3545, 3399, 3549, 3546, 3546, 1, 3444, 3545, 3399, 3547, 3547, 3547, 1, 3444, 3550, 3545, 3399, 3548, 3551, 3544, 3544, 1, 3444, 3545, 3399, 3549, 3546, 3546, 3546, 1, 3444, 3545, 3399, 3546, 3546, 3546, 1, 3444, 3545, 3399, 3551, 3544, 3544, 1, 3545, 3399, 3544, 3544, 3544, 1, 3552, 1, 3385, 46, 3385, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 3553, 3553, 3554, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 1, 3553, 3553, 3554, 3555, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 3553, 1, 3556, 3556, 3556, 1, 3553, 3553, 3553, 1, 3555, 3557, 3558, 3559, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 3555, 1, 3560, 3560, 3560, 1, 3555, 3555, 3555, 1, 3328, 3329, 3328, 3328, 3328, 3328, 3328, 3328, 3328, 1, 3321, 3322, 3323, 3324, 3325, 3326, 3561, 3321, 3321, 3561, 3321, 3321, 3321, 3321, 3321, 1, 3321, 3322, 3562, 3563, 3564, 3565, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 1, 3566, 3567, 3566, 3328, 3328, 3323, 3330, 3325, 3326, 3328, 3328, 3568, 3566, 3328, 3566, 3566, 3566, 3566, 1, 3569, 3570, 3569, 3331, 3331, 3333, 3334, 3335, 3331, 3331, 3568, 3569, 3331, 3569, 3569, 3569, 3569, 1, 3568, 3568, 3568, 3572, 3573, 3574, 3568, 3568, 3568, 3571, 3571, 3568, 3568, 3571, 3568, 1, 3568, 3568, 3568, 3572, 3573, 3574, 3568, 3568, 3568, 3568, 3568, 3568, 1, 3568, 3568, 3568, 3572, 3573, 3574, 3568, 3568, 3568, 3569, 3569, 3568, 3568, 3569, 3568, 1, 3321, 3322, 3323, 3324, 3325, 3326, 3575, 3576, 3321, 3321, 3575, 3576, 3321, 3321, 3321, 3321, 3321, 1, 3321, 3322, 3577, 3578, 3579, 3580, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 1, 3321, 3322, 3323, 3324, 3325, 3326, 3581, 3321, 3321, 3581, 3321, 3321, 3321, 3321, 3321, 1, 3321, 3322, 3323, 3324, 3325, 3326, 3582, 3321, 3321, 3582, 3321, 3321, 3321, 3321, 3321, 1, 3321, 3322, 3323, 3583, 3325, 3326, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 1, 3584, 3585, 3584, 3328, 3328, 3323, 3330, 3325, 3326, 3328, 3328, 3586, 3584, 3328, 3584, 3584, 3584, 3584, 1, 3587, 3588, 3587, 3331, 3331, 3589, 3590, 3591, 3331, 3331, 3592, 3587, 3331, 3587, 3587, 3587, 3587, 1, 3592, 3592, 3592, 3594, 3595, 3596, 3592, 3592, 3592, 3593, 3593, 3592, 3592, 3593, 3592, 1, 3592, 3592, 3592, 3594, 3595, 3596, 3592, 3592, 3592, 3592, 3592, 3592, 1, 3592, 3592, 3592, 3594, 3595, 3596, 3592, 3592, 3592, 3587, 3587, 3592, 3592, 3587, 3592, 1, 3321, 3322, 3323, 3324, 3325, 3326, 3597, 3321, 3321, 3597, 3321, 3321, 3321, 3321, 3321, 1, 3321, 3322, 3323, 3324, 3325, 3326, 3598, 3321, 3321, 3598, 3321, 3321, 3321, 3321, 3321, 1, 3321, 3322, 3323, 3324, 3325, 3326, 3599, 3321, 3321, 3599, 3321, 3321, 3321, 3321, 3321, 1, 3321, 3322, 3323, 3324, 3325, 3326, 3600, 3321, 3321, 3600, 3321, 3321, 3321, 3321, 3321, 1, 3321, 3322, 3323, 3324, 3325, 3326, 3601, 3321, 3321, 3601, 3321, 3321, 3321, 3321, 3321, 1, 3321, 3322, 3323, 3324, 3325, 3326, 3602, 3321, 3321, 3602, 3321, 3321, 3321, 3321, 3321, 1, 3321, 3322, 3323, 3324, 3325, 3326, 3603, 3321, 3321, 3603, 3321, 3321, 3321, 3321, 3321, 1, 3321, 3322, 3323, 3324, 3325, 3326, 3604, 3321, 3321, 3604, 3321, 3321, 3321, 3321, 3321, 1, 3321, 3322, 3323, 3605, 3325, 3326, 3321, 3321, 3321, 3321, 3321, 3321, 3321, 1, 3606, 3607, 3606, 3328, 3328, 3323, 3330, 3325, 3326, 3608, 3609, 3610, 3611, 3328, 3328, 3612, 3608, 3609, 3610, 3611, 3606, 3328, 3606, 3606, 3606, 3606, 1, 3613, 3614, 3613, 3331, 3331, 3615, 3616, 3617, 3331, 3331, 3618, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3618, 3618, 3618, 3620, 3621, 3622, 3618, 3618, 3618, 3619, 3619, 3618, 3618, 3619, 3618, 1, 3618, 3618, 3618, 3620, 3621, 3622, 3618, 3618, 3618, 3618, 3618, 3618, 1, 3618, 3618, 3618, 3620, 3621, 3622, 3618, 3618, 3618, 3613, 3613, 3618, 3618, 3613, 3618, 1, 3613, 3614, 3613, 3331, 3331, 3615, 3616, 3617, 3623, 3331, 3331, 3618, 3623, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3613, 3614, 3613, 3331, 3331, 3615, 3616, 3617, 3624, 3331, 3331, 3618, 3624, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3613, 3614, 3613, 3331, 3331, 3615, 3616, 3617, 3625, 3331, 3331, 3618, 3625, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3613, 3614, 3613, 3331, 3331, 3626, 3627, 3628, 3331, 3331, 3618, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3613, 3614, 3613, 3331, 3331, 3615, 3616, 3617, 3629, 3630, 3331, 3331, 3618, 3629, 3630, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3613, 3614, 3613, 3331, 3331, 3615, 3616, 3617, 3631, 3331, 3331, 3618, 3631, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3613, 3614, 3613, 3331, 3331, 3632, 3633, 3634, 3331, 3331, 3618, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3613, 3614, 3613, 3331, 3331, 3615, 3616, 3617, 3635, 3331, 3331, 3618, 3635, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3613, 3614, 3613, 3331, 3331, 3636, 3637, 3638, 3331, 3331, 3618, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3613, 3614, 3613, 3331, 3331, 3615, 3616, 3617, 3639, 3331, 3331, 3618, 3639, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3613, 3614, 3613, 3331, 3331, 3615, 3616, 3617, 3640, 3331, 3331, 3618, 3640, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3613, 3614, 3613, 3331, 3331, 3641, 3642, 3643, 3331, 3331, 3618, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3613, 3614, 3613, 3331, 3331, 3615, 3616, 3617, 3644, 3331, 3331, 3618, 3644, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3613, 3614, 3613, 3331, 3331, 3645, 3646, 3647, 3648, 3331, 3331, 3618, 3648, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3613, 3614, 3613, 3331, 3331, 3649, 3650, 3651, 3331, 3331, 3618, 3613, 3331, 3613, 3613, 3613, 3613, 1, 3313, 3314, 3315, 3312, 1, 3313, 3314, 3315, 3311, 1, 3313, 3314, 3315, 3652, 1, 3313, 3314, 3315, 3309, 1, 3653, 3313, 3314, 3315, 3652, 3309, 1, 3654, 3313, 3314, 3315, 3309, 3311, 1, 3655, 3313, 3314, 3315, 3311, 3312, 1, 3313, 3314, 3315, 3312, 1, 3656, 3657, 3658, 3659, 3297, 3297, 1, 3293, 3660, 3293, 3295, 3295, 3295, 1, 3661, 3662, 3663, 3664, 3297, 3297, 1, 3293, 3665, 3293, 3295, 3295, 3295, 1, 3666, 3667, 3668, 3669, 3297, 3297, 1, 3293, 3296, 3670, 3671, 3672, 3673, 3293, 3295, 3295, 3295, 1, 3293, 3296, 3670, 3671, 3672, 3673, 3293, 3669, 3295, 3295, 1, 3293, 3296, 3670, 3671, 3672, 3673, 3293, 3666, 3295, 3295, 1, 3293, 3296, 3674, 3670, 3671, 3672, 3673, 3293, 3669, 3666, 3295, 3295, 1, 3293, 3296, 3670, 3671, 3672, 3673, 3293, 3666, 3295, 3295, 3295, 1, 3293, 3665, 3293, 3664, 3295, 3295, 1, 3293, 3665, 3293, 3661, 3295, 3295, 1, 3293, 3665, 3675, 3293, 3664, 3661, 3295, 3295, 1, 3293, 3665, 3293, 3661, 3295, 3295, 3295, 1, 3293, 3660, 3293, 3659, 3295, 3295, 1, 3293, 3660, 3293, 3656, 3295, 3295, 1, 3293, 3660, 3676, 3293, 3659, 3656, 3295, 3295, 1, 3293, 3660, 3293, 3656, 3295, 3295, 3295, 1, 3293, 3294, 3293, 3677, 3295, 3295, 1, 3293, 3294, 3293, 3678, 3295, 3295, 1, 3293, 3294, 3679, 3293, 3677, 3678, 3295, 3295, 1, 3293, 3294, 3293, 3678, 3295, 3295, 3295, 1, 3681, 3680, 3680, 3680, 1, 3683, 3682, 3682, 3682, 1, 3683, 3684, 3684, 3684, 1, 3683, 3685, 3685, 3685, 1, 3683, 1, 3687, 3686, 3686, 3686, 1, 3689, 3688, 3688, 3688, 1, 3689, 3690, 3690, 3690, 1, 3689, 3691, 3691, 3691, 1, 3689, 1, 3693, 3692, 3692, 3692, 1, 3695, 3694, 3694, 3694, 1, 3695, 3696, 3696, 3696, 1, 3695, 3697, 3697, 3697, 1, 3695, 1, 3699, 3698, 3698, 3698, 1, 3701, 3700, 3700, 3700, 1, 3701, 3702, 3702, 3702, 1, 3701, 3703, 3703, 3703, 1, 3701, 1, 3705, 3704, 3704, 3704, 1, 3707, 3706, 3706, 3706, 1, 3707, 3708, 3708, 3708, 1, 3707, 3709, 3709, 3709, 1, 3707, 1, 3711, 3710, 3710, 3710, 1, 3713, 3712, 3712, 3712, 1, 3713, 3714, 3714, 3714, 1, 3713, 3715, 3715, 3715, 1, 3713, 1, 3716, 3717, 3718, 3720, 3719, 3721, 3721, 1, 3722, 3724, 3723, 3723, 3723, 1, 3725, 3726, 3727, 3728, 1, 3729, 1, 3730, 3731, 3732, 3733, 1, 3734, 1, 3735, 3736, 3737, 3738, 1, 3739, 1, 3740, 3741, 3742, 3743, 1, 3739, 3738, 1, 3739, 3735, 1, 3744, 3739, 3738, 3735, 1, 3739, 3735, 1, 3734, 3733, 1, 3734, 3730, 1, 3734, 3745, 3733, 3730, 1, 3734, 3730, 1, 3729, 3728, 1, 3729, 3725, 1, 3729, 3746, 3728, 3725, 1, 3729, 3725, 1, 3724, 3747, 3747, 3747, 1, 3724, 3748, 3748, 3748, 1, 3724, 1, 3735, 3749, 3749, 3749, 1, 3739, 3750, 3750, 3750, 1, 3739, 3751, 3751, 3751, 1, 3739, 3735, 3735, 3735, 1, 3722, 3724, 3752, 3723, 3723, 1, 3722, 3724, 3753, 3747, 3747, 1, 3722, 3724, 3748, 3748, 3748, 1, 3722, 3754, 3724, 3752, 3755, 3723, 3723, 1, 3722, 3724, 3753, 3747, 3747, 3747, 1, 3722, 3724, 3747, 3747, 3747, 1, 3722, 3724, 3755, 3723, 3723, 1, 3739, 3749, 3749, 3749, 1, 3724, 3723, 3723, 3723, 1, 3756, 3757, 3758, 3739, 3759, 3760, 3760, 1, 3722, 3762, 3739, 3761, 3761, 3761, 1, 3762, 3739, 3763, 3763, 3763, 1, 3762, 3739, 3764, 3764, 3764, 1, 3762, 3739, 1, 3749, 3749, 3749, 1, 3722, 3762, 3739, 3765, 3761, 3761, 1, 3722, 3762, 3739, 3766, 3763, 3763, 1, 3722, 3762, 3739, 3764, 3764, 3764, 1, 3722, 3767, 3762, 3739, 3765, 3768, 3761, 3761, 1, 3722, 3762, 3739, 3766, 3763, 3763, 3763, 1, 3722, 3762, 3739, 3763, 3763, 3763, 1, 3722, 3762, 3739, 3768, 3761, 3761, 1, 3762, 3739, 3761, 3761, 3761, 1, 3769, 3770, 3771, 3739, 3772, 3773, 3773, 1, 3722, 3775, 3739, 3774, 3774, 3774, 1, 3775, 3739, 3776, 3776, 3776, 1, 3775, 3739, 3777, 3777, 3777, 1, 3775, 3739, 1, 3756, 3757, 3758, 3759, 3760, 3760, 1, 3722, 3775, 3739, 3778, 3774, 3774, 1, 3722, 3775, 3739, 3779, 3776, 3776, 1, 3722, 3775, 3739, 3777, 3777, 3777, 1, 3722, 3780, 3775, 3739, 3778, 3781, 3774, 3774, 1, 3722, 3775, 3739, 3779, 3776, 3776, 3776, 1, 3722, 3775, 3739, 3776, 3776, 3776, 1, 3722, 3775, 3739, 3781, 3774, 3774, 1, 3775, 3739, 3774, 3774, 3774, 1, 3782, 3783, 3784, 3739, 3785, 3786, 3786, 1, 3722, 3788, 3739, 3787, 3787, 3787, 1, 3788, 3739, 3789, 3789, 3789, 1, 3788, 3739, 3790, 3790, 3790, 1, 3788, 3739, 1, 3769, 3770, 3771, 3772, 3773, 3773, 1, 3722, 3788, 3739, 3791, 3787, 3787, 1, 3722, 3788, 3739, 3792, 3789, 3789, 1, 3722, 3788, 3739, 3790, 3790, 3790, 1, 3722, 3793, 3788, 3739, 3791, 3794, 3787, 3787, 1, 3722, 3788, 3739, 3792, 3789, 3789, 3789, 1, 3722, 3788, 3739, 3789, 3789, 3789, 1, 3722, 3788, 3739, 3794, 3787, 3787, 1, 3788, 3739, 3787, 3787, 3787, 1, 3795, 3796, 3797, 3739, 3798, 3799, 3799, 1, 3722, 3801, 3739, 3800, 3800, 3800, 1, 3801, 3739, 3802, 3802, 3802, 1, 3801, 3739, 3803, 3803, 3803, 1, 3801, 3739, 1, 3782, 3783, 3784, 3785, 3786, 3786, 1, 3722, 3801, 3739, 3804, 3800, 3800, 1, 3722, 3801, 3739, 3805, 3802, 3802, 1, 3722, 3801, 3739, 3803, 3803, 3803, 1, 3722, 3806, 3801, 3739, 3804, 3807, 3800, 3800, 1, 3722, 3801, 3739, 3805, 3802, 3802, 3802, 1, 3722, 3801, 3739, 3802, 3802, 3802, 1, 3722, 3801, 3739, 3807, 3800, 3800, 1, 3801, 3739, 3800, 3800, 3800, 1, 3808, 3809, 3810, 3739, 3811, 3812, 3812, 1, 3722, 3814, 3739, 3813, 3813, 3813, 1, 3814, 3739, 3815, 3815, 3815, 1, 3814, 3739, 3816, 3816, 3816, 1, 3814, 3739, 1, 3795, 3796, 3797, 3798, 3799, 3799, 1, 3722, 3814, 3739, 3817, 3813, 3813, 1, 3722, 3814, 3739, 3818, 3815, 3815, 1, 3722, 3814, 3739, 3816, 3816, 3816, 1, 3722, 3819, 3814, 3739, 3817, 3820, 3813, 3813, 1, 3722, 3814, 3739, 3818, 3815, 3815, 3815, 1, 3722, 3814, 3739, 3815, 3815, 3815, 1, 3722, 3814, 3739, 3820, 3813, 3813, 1, 3814, 3739, 3813, 3813, 3813, 1, 3821, 1, 3822, 3823, 3824, 3739, 3825, 3826, 3826, 1, 3722, 3828, 3739, 3827, 3827, 3827, 1, 3828, 3739, 3829, 3829, 3829, 1, 3828, 3739, 3830, 3830, 3830, 1, 3828, 3739, 1, 3808, 3809, 3810, 3811, 3812, 3812, 1, 3722, 3828, 3739, 3831, 3827, 3827, 1, 3722, 3828, 3739, 3832, 3829, 3829, 1, 3722, 3828, 3739, 3830, 3830, 3830, 1, 3722, 3833, 3828, 3739, 3831, 3834, 3827, 3827, 1, 3722, 3828, 3739, 3832, 3829, 3829, 3829, 1, 3722, 3828, 3739, 3829, 3829, 3829, 1, 3722, 3828, 3739, 3834, 3827, 3827, 1, 3828, 3739, 3827, 3827, 3827, 1, 3281, 3282, 3835, 3836, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3837, 3837, 3837, 1, 3281, 3282, 3835, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3837, 3837, 3837, 1, 3281, 3282, 3835, 3838, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3837, 3837, 3837, 1, 3281, 3282, 3283, 3281, 3281, 3281, 3284, 3281, 3281, 3281, 3837, 3839, 3839, 1, 3281, 3282, 3840, 3841, 3842, 3843, 3281, 3302, 3844, 3284, 3840, 3281, 3281, 3839, 3839, 3839, 1, 3281, 3282, 3840, 3283, 3281, 3281, 3281, 3284, 3840, 3281, 3281, 3839, 3839, 3839, 1, 3281, 3282, 3842, 3843, 3281, 3302, 3844, 3284, 3281, 3281, 3281, 3837, 3839, 3839, 1, 3283, 3286, 3845, 3847, 3283, 3284, 3283, 3283, 3283, 3846, 3848, 3283, 3283, 1, 3283, 3286, 3849, 3283, 3284, 3283, 3283, 3283, 3850, 3283, 3283, 1, 3283, 3286, 3851, 3283, 3284, 3283, 3283, 3283, 3852, 3283, 3283, 1, 3283, 3286, 3283, 3283, 3284, 3283, 3283, 3283, 3853, 3283, 3283, 1, 3283, 3286, 3313, 3314, 3315, 3284, 3283, 3283, 3283, 3283, 3283, 3283, 1, 3283, 3286, 3313, 3314, 3315, 3284, 3283, 3283, 3283, 3853, 3283, 3283, 1, 3283, 3286, 3313, 3314, 3315, 3284, 3283, 3283, 3283, 3852, 3283, 3283, 1, 3283, 3286, 3313, 3314, 3315, 3284, 3283, 3283, 3283, 3854, 3283, 3283, 1, 3283, 3286, 3313, 3314, 3315, 3284, 3283, 3283, 3283, 3850, 3283, 3283, 1, 3283, 3286, 3855, 3313, 3314, 3315, 3284, 3283, 3283, 3283, 3854, 3850, 3283, 3283, 1, 3283, 3286, 3856, 3313, 3314, 3315, 3284, 3283, 3283, 3283, 3850, 3852, 3283, 3283, 1, 3283, 3286, 3857, 3313, 3314, 3315, 3284, 3283, 3283, 3283, 3852, 3853, 3283, 3283, 1, 3283, 3286, 3313, 3314, 3315, 3284, 3283, 3283, 3283, 3853, 3283, 3283, 3283, 1, 3858, 3281, 3859, 3281, 3860, 3281, 3281, 3281, 3284, 3861, 3862, 3863, 3316, 3316, 3858, 3861, 3862, 3863, 3858, 3858, 3858, 3858, 1, 3864, 3281, 3865, 3281, 3866, 3867, 3868, 3325, 3869, 3284, 3321, 3321, 3864, 3864, 3864, 3864, 3864, 1, 3870, 3870, 3870, 1, 3864, 3864, 3864, 1, 3866, 3871, 3283, 3321, 3321, 3323, 3872, 3325, 3326, 3284, 3321, 3321, 3866, 3866, 3866, 3866, 3866, 1, 3873, 3873, 3873, 1, 3866, 3866, 3866, 1, 3874, 3875, 3283, 3328, 3328, 3323, 3876, 3325, 3326, 3284, 3328, 3328, 3874, 3874, 3874, 3874, 3874, 1, 3877, 3878, 3283, 3331, 3331, 3333, 3283, 3334, 3335, 3284, 3331, 3331, 3877, 3877, 3877, 3877, 3877, 1, 3879, 3879, 3879, 1, 3877, 3877, 3877, 1, 3874, 3875, 3283, 3328, 3328, 3283, 3284, 3328, 3328, 3874, 3874, 3874, 3874, 3874, 1, 3880, 3281, 3881, 3281, 3874, 3867, 3882, 3325, 3869, 3284, 3328, 3328, 3880, 3880, 3880, 3880, 3880, 1, 3883, 3281, 3884, 3281, 3877, 3885, 3281, 3334, 3886, 3284, 3331, 3331, 3883, 3883, 3883, 3883, 3883, 1, 3887, 3887, 3887, 1, 3883, 3883, 3883, 1, 3888, 3888, 3889, 3281, 3890, 3281, 3281, 3284, 3553, 3553, 3888, 3888, 3281, 3888, 3888, 3888, 1, 3888, 3888, 3889, 3281, 3890, 3281, 3891, 3284, 3553, 3553, 3888, 3888, 3281, 3888, 3888, 3888, 1, 3892, 3892, 3892, 1, 3888, 3888, 3888, 1, 3890, 3893, 3283, 3283, 3553, 3553, 3894, 3553, 3284, 3553, 3553, 3890, 3890, 3890, 3890, 3890, 1, 3895, 3895, 3895, 1, 3890, 3890, 3890, 1, 3894, 3896, 3897, 3283, 3555, 3555, 3283, 3559, 3555, 3284, 3555, 3555, 3894, 3894, 3894, 3894, 3894, 1, 3898, 3898, 3898, 1, 3894, 3894, 3894, 1, 3890, 3893, 3283, 3283, 3553, 3553, 3283, 3553, 3284, 3553, 3553, 3890, 3890, 3890, 3890, 3890, 1, 3891, 3281, 3899, 3900, 3281, 3894, 3281, 3281, 3559, 3284, 3555, 3555, 3891, 3891, 3891, 3891, 3891, 1, 3901, 3901, 3901, 1, 3891, 3891, 3891, 1, 3880, 3281, 3881, 3281, 3874, 3281, 3281, 3281, 3284, 3328, 3328, 3880, 3880, 3880, 3880, 3880, 1, 3864, 3281, 3865, 3281, 3866, 3867, 3868, 3325, 3869, 3284, 3902, 3321, 3321, 3864, 3902, 3864, 3864, 3864, 3864, 1, 3864, 3281, 3865, 3281, 3866, 3903, 3904, 3564, 3905, 3284, 3321, 3321, 3864, 3864, 3864, 3864, 3864, 1, 3906, 3281, 3907, 3906, 3281, 3880, 3874, 3867, 3882, 3325, 3869, 3284, 3328, 3328, 3568, 3906, 3880, 3906, 3906, 3906, 1, 3908, 3281, 3909, 3908, 3281, 3883, 3877, 3885, 3281, 3334, 3886, 3284, 3331, 3331, 3568, 3908, 3883, 3908, 3908, 3908, 1, 3568, 3568, 3568, 3572, 3573, 3574, 3568, 3568, 3568, 3910, 3910, 3568, 3568, 3910, 3568, 1, 3568, 3568, 3568, 3572, 3573, 3574, 3568, 3568, 3568, 3908, 3908, 3568, 3568, 3908, 3568, 1, 3864, 3281, 3865, 3281, 3866, 3867, 3868, 3325, 3869, 3284, 3911, 3912, 3321, 3321, 3864, 3911, 3912, 3864, 3864, 3864, 3864, 1, 3864, 3281, 3865, 3281, 3866, 3913, 3914, 3579, 3915, 3284, 3321, 3321, 3864, 3864, 3864, 3864, 3864, 1, 3864, 3281, 3865, 3281, 3866, 3867, 3868, 3325, 3869, 3284, 3916, 3321, 3321, 3864, 3916, 3864, 3864, 3864, 3864, 1, 3864, 3281, 3865, 3281, 3866, 3867, 3868, 3325, 3869, 3284, 3917, 3321, 3321, 3864, 3917, 3864, 3864, 3864, 3864, 1, 3864, 3281, 3865, 3281, 3866, 3867, 3918, 3325, 3869, 3284, 3321, 3321, 3864, 3864, 3864, 3864, 3864, 1, 3919, 3281, 3920, 3919, 3281, 3880, 3874, 3867, 3882, 3325, 3869, 3284, 3328, 3328, 3586, 3919, 3880, 3919, 3919, 3919, 1, 3921, 3281, 3922, 3921, 3281, 3883, 3877, 3923, 3281, 3590, 3924, 3284, 3331, 3331, 3592, 3921, 3883, 3921, 3921, 3921, 1, 3592, 3592, 3592, 3594, 3595, 3596, 3592, 3592, 3592, 3925, 3925, 3592, 3592, 3925, 3592, 1, 3592, 3592, 3592, 3594, 3595, 3596, 3592, 3592, 3592, 3921, 3921, 3592, 3592, 3921, 3592, 1, 3864, 3281, 3865, 3281, 3866, 3867, 3868, 3325, 3869, 3284, 3926, 3321, 3321, 3864, 3926, 3864, 3864, 3864, 3864, 1, 3864, 3281, 3865, 3281, 3866, 3867, 3868, 3325, 3869, 3284, 3927, 3321, 3321, 3864, 3927, 3864, 3864, 3864, 3864, 1, 3864, 3281, 3865, 3281, 3866, 3867, 3868, 3325, 3869, 3284, 3928, 3321, 3321, 3864, 3928, 3864, 3864, 3864, 3864, 1, 3864, 3281, 3865, 3281, 3866, 3867, 3868, 3325, 3869, 3284, 3929, 3321, 3321, 3864, 3929, 3864, 3864, 3864, 3864, 1, 3864, 3281, 3865, 3281, 3866, 3867, 3868, 3325, 3869, 3284, 3930, 3321, 3321, 3864, 3930, 3864, 3864, 3864, 3864, 1, 3864, 3281, 3865, 3281, 3866, 3867, 3868, 3325, 3869, 3284, 3931, 3321, 3321, 3864, 3931, 3864, 3864, 3864, 3864, 1, 3864, 3281, 3865, 3281, 3866, 3867, 3868, 3325, 3869, 3284, 3932, 3321, 3321, 3864, 3932, 3864, 3864, 3864, 3864, 1, 3864, 3281, 3865, 3281, 3866, 3867, 3868, 3325, 3869, 3284, 3933, 3321, 3321, 3864, 3933, 3864, 3864, 3864, 3864, 1, 3864, 3281, 3865, 3281, 3866, 3867, 3934, 3325, 3869, 3284, 3321, 3321, 3864, 3864, 3864, 3864, 3864, 1, 3935, 3281, 3936, 3935, 3281, 3880, 3874, 3867, 3882, 3325, 3869, 3284, 3937, 3938, 3939, 3940, 3328, 3328, 3612, 3937, 3938, 3939, 3940, 3935, 3880, 3935, 3935, 3935, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3943, 3281, 3616, 3944, 3284, 3331, 3331, 3618, 3941, 3883, 3941, 3941, 3941, 1, 3618, 3618, 3618, 3620, 3621, 3622, 3618, 3618, 3618, 3945, 3945, 3618, 3618, 3945, 3618, 1, 3618, 3618, 3618, 3620, 3621, 3622, 3618, 3618, 3618, 3941, 3941, 3618, 3618, 3941, 3618, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3943, 3281, 3616, 3944, 3284, 3946, 3331, 3331, 3618, 3946, 3941, 3883, 3941, 3941, 3941, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3943, 3281, 3616, 3944, 3284, 3947, 3331, 3331, 3618, 3947, 3941, 3883, 3941, 3941, 3941, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3943, 3281, 3616, 3944, 3284, 3948, 3331, 3331, 3618, 3948, 3941, 3883, 3941, 3941, 3941, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3949, 3281, 3627, 3950, 3284, 3331, 3331, 3618, 3941, 3883, 3941, 3941, 3941, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3943, 3281, 3616, 3944, 3284, 3951, 3952, 3331, 3331, 3618, 3951, 3952, 3941, 3883, 3941, 3941, 3941, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3943, 3281, 3616, 3944, 3284, 3953, 3331, 3331, 3618, 3953, 3941, 3883, 3941, 3941, 3941, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3954, 3281, 3633, 3955, 3284, 3331, 3331, 3618, 3941, 3883, 3941, 3941, 3941, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3943, 3281, 3616, 3944, 3284, 3956, 3331, 3331, 3618, 3956, 3941, 3883, 3941, 3941, 3941, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3957, 3281, 3637, 3958, 3284, 3331, 3331, 3618, 3941, 3883, 3941, 3941, 3941, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3943, 3281, 3616, 3944, 3284, 3959, 3331, 3331, 3618, 3959, 3941, 3883, 3941, 3941, 3941, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3943, 3281, 3616, 3944, 3284, 3960, 3331, 3331, 3618, 3960, 3941, 3883, 3941, 3941, 3941, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3961, 3281, 3642, 3962, 3284, 3331, 3331, 3618, 3941, 3883, 3941, 3941, 3941, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3943, 3281, 3616, 3944, 3284, 3963, 3331, 3331, 3618, 3963, 3941, 3883, 3941, 3941, 3941, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3964, 3281, 3646, 3965, 3284, 3966, 3331, 3331, 3618, 3966, 3941, 3883, 3941, 3941, 3941, 1, 3941, 3281, 3942, 3941, 3281, 3883, 3877, 3967, 3281, 3650, 3968, 3284, 3331, 3331, 3618, 3941, 3883, 3941, 3941, 3941, 1, 3281, 3282, 3969, 3970, 3971, 3283, 3281, 3281, 3281, 3284, 3281, 3281, 3281, 3972, 3839, 3839, 1, 3281, 3282, 3835, 3973, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3837, 3837, 3837, 1, 3281, 3282, 3974, 3975, 3976, 3283, 3281, 3281, 3281, 3284, 3281, 3281, 3281, 3977, 3839, 3839, 1, 3281, 3282, 3835, 3978, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3837, 3837, 3837, 1, 3281, 3282, 3979, 3980, 3981, 3283, 3281, 3281, 3281, 3284, 3281, 3281, 3281, 3982, 3839, 3839, 1, 3281, 3282, 3835, 3838, 3983, 3984, 3281, 3672, 3985, 3284, 3835, 3281, 3281, 3837, 3837, 3837, 1, 3281, 3282, 3835, 3838, 3983, 3984, 3281, 3672, 3985, 3284, 3835, 3281, 3281, 3982, 3837, 3837, 1, 3281, 3282, 3835, 3838, 3983, 3984, 3281, 3672, 3985, 3284, 3835, 3281, 3281, 3979, 3837, 3837, 1, 3281, 3282, 3835, 3838, 3986, 3983, 3984, 3281, 3672, 3985, 3284, 3835, 3281, 3281, 3982, 3979, 3837, 3837, 1, 3281, 3282, 3835, 3838, 3983, 3984, 3281, 3672, 3985, 3284, 3835, 3281, 3281, 3979, 3837, 3837, 3837, 1, 3281, 3282, 3835, 3978, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3977, 3837, 3837, 1, 3281, 3282, 3835, 3978, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3974, 3837, 3837, 1, 3281, 3282, 3835, 3978, 3987, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3977, 3974, 3837, 3837, 1, 3281, 3282, 3835, 3978, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3974, 3837, 3837, 3837, 1, 3281, 3282, 3835, 3973, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3972, 3837, 3837, 1, 3281, 3282, 3835, 3973, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3969, 3837, 3837, 1, 3281, 3282, 3835, 3973, 3988, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3972, 3969, 3837, 3837, 1, 3281, 3282, 3835, 3973, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3969, 3837, 3837, 3837, 1, 3281, 3282, 3835, 3836, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3989, 3837, 3837, 1, 3281, 3282, 3835, 3836, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3990, 3837, 3837, 1, 3281, 3282, 3835, 3836, 3991, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3989, 3990, 3837, 3837, 1, 3281, 3282, 3835, 3836, 3283, 3281, 3281, 3281, 3284, 3835, 3281, 3281, 3990, 3837, 3837, 3837, 1, 3992, 1, 293, 294, 293, 289, 289, 289, 282, 295, 3993, 3993, 289, 289, 289, 289, 289, 289, 1, 293, 294, 293, 289, 289, 289, 282, 295, 3994, 3994, 289, 289, 289, 289, 289, 289, 1, 3995, 3996, 3995, 289, 289, 289, 282, 3997, 289, 289, 289, 289, 289, 289, 1, 3995, 3998, 3995, 282, 3997, 1, 3999, 1, 4000, 4000, 1, 4000, 4000, 282, 3997, 1, 3997, 4001, 3997, 4002, 301, 4002, 4002, 302, 4002, 4002, 4002, 4002, 4002, 4002, 1, 4003, 1, 4004, 4004, 1, 4004, 4004, 4002, 301, 4002, 4002, 302, 4002, 4002, 4002, 4002, 4002, 4002, 1, 4005, 4006, 4005, 4007, 4007, 4007, 4008, 4007, 4007, 4007, 4007, 4007, 4007, 1, 4009, 1, 4000, 46, 4000, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 248, 4010, 249, 248, 248, 248, 248, 248, 1, 4011, 4011, 4011, 1, 248, 248, 248, 1, 249, 248, 279, 1, 249, 248, 278, 1, 249, 248, 274, 1, 249, 248, 276, 1, 4012, 249, 248, 274, 276, 1, 4013, 249, 248, 276, 278, 1, 4014, 249, 248, 278, 279, 1, 249, 248, 279, 1, 4015, 4016, 4017, 4018, 263, 263, 1, 264, 4019, 264, 266, 266, 266, 1, 4020, 4021, 4022, 4023, 263, 263, 1, 264, 4024, 264, 266, 266, 266, 1, 4025, 4026, 4027, 4028, 263, 263, 1, 264, 267, 270, 249, 248, 264, 266, 266, 266, 1, 264, 267, 270, 249, 248, 264, 4028, 266, 266, 1, 264, 267, 270, 249, 248, 264, 4025, 266, 266, 1, 264, 267, 4029, 270, 249, 248, 264, 4028, 4025, 266, 266, 1, 264, 267, 270, 249, 248, 264, 4025, 266, 266, 266, 1, 264, 4024, 264, 4023, 266, 266, 1, 264, 4024, 264, 4020, 266, 266, 1, 264, 4024, 4030, 264, 4023, 4020, 266, 266, 1, 264, 4024, 264, 4020, 266, 266, 266, 1, 264, 4019, 264, 4018, 266, 266, 1, 264, 4019, 264, 4015, 266, 266, 1, 264, 4019, 4031, 264, 4018, 4015, 266, 266, 1, 264, 4019, 264, 4015, 266, 266, 266, 1, 264, 265, 264, 262, 266, 266, 1, 264, 265, 264, 259, 266, 266, 1, 264, 265, 4032, 264, 262, 259, 266, 266, 1, 264, 265, 264, 259, 266, 266, 266, 1, 4034, 4033, 4033, 4033, 1, 4036, 4035, 4035, 4035, 1, 4036, 4037, 4037, 4037, 1, 4036, 4038, 4038, 4038, 1, 4036, 1, 4040, 4039, 4039, 4039, 1, 4042, 4041, 4041, 4041, 1, 4042, 4043, 4043, 4043, 1, 4042, 4044, 4044, 4044, 1, 4042, 1, 4046, 4045, 4045, 4045, 1, 4048, 4047, 4047, 4047, 1, 4048, 4049, 4049, 4049, 1, 4048, 4050, 4050, 4050, 1, 4048, 1, 4052, 4051, 4051, 4051, 1, 4054, 4053, 4053, 4053, 1, 4054, 4055, 4055, 4055, 1, 4054, 4056, 4056, 4056, 1, 4054, 1, 4058, 4057, 4057, 4057, 1, 4060, 4059, 4059, 4059, 1, 4060, 4061, 4061, 4061, 1, 4060, 4062, 4062, 4062, 1, 4060, 1, 4064, 4063, 4063, 4063, 1, 4066, 4065, 4065, 4065, 1, 4066, 4067, 4067, 4067, 1, 4066, 4068, 4068, 4068, 1, 4066, 1, 4069, 4070, 4071, 4073, 4072, 4074, 4074, 1, 4075, 4077, 4076, 4076, 4076, 1, 4078, 4079, 4080, 4081, 1, 4082, 1, 4083, 4084, 4085, 4086, 1, 4087, 1, 4088, 4089, 4090, 4091, 1, 4092, 1, 270, 249, 248, 1, 4092, 4091, 1, 4092, 4088, 1, 4093, 4092, 4091, 4088, 1, 4092, 4088, 1, 4087, 4086, 1, 4087, 4083, 1, 4087, 4094, 4086, 4083, 1, 4087, 4083, 1, 4082, 4081, 1, 4082, 4078, 1, 4082, 4095, 4081, 4078, 1, 4082, 4078, 1, 4077, 4096, 4096, 4096, 1, 4077, 4097, 4097, 4097, 1, 4077, 1, 4088, 4098, 4098, 4098, 1, 4092, 4099, 4099, 4099, 1, 4092, 4100, 4100, 4100, 1, 4092, 4088, 4088, 4088, 1, 4075, 4077, 4101, 4076, 4076, 1, 4075, 4077, 4102, 4096, 4096, 1, 4075, 4077, 4097, 4097, 4097, 1, 4075, 4103, 4077, 4101, 4104, 4076, 4076, 1, 4075, 4077, 4102, 4096, 4096, 4096, 1, 4075, 4077, 4096, 4096, 4096, 1, 4075, 4077, 4104, 4076, 4076, 1, 4092, 4098, 4098, 4098, 1, 4077, 4076, 4076, 4076, 1, 4105, 4106, 4107, 4092, 4108, 4109, 4109, 1, 4075, 4111, 4092, 4110, 4110, 4110, 1, 4111, 4092, 4112, 4112, 4112, 1, 4111, 4092, 4113, 4113, 4113, 1, 4111, 4092, 1, 4098, 4098, 4098, 1, 4075, 4111, 4092, 4114, 4110, 4110, 1, 4075, 4111, 4092, 4115, 4112, 4112, 1, 4075, 4111, 4092, 4113, 4113, 4113, 1, 4075, 4116, 4111, 4092, 4114, 4117, 4110, 4110, 1, 4075, 4111, 4092, 4115, 4112, 4112, 4112, 1, 4075, 4111, 4092, 4112, 4112, 4112, 1, 4075, 4111, 4092, 4117, 4110, 4110, 1, 4111, 4092, 4110, 4110, 4110, 1, 4118, 4119, 4120, 4092, 4121, 4122, 4122, 1, 4075, 4124, 4092, 4123, 4123, 4123, 1, 4124, 4092, 4125, 4125, 4125, 1, 4124, 4092, 4126, 4126, 4126, 1, 4124, 4092, 1, 4105, 4106, 4107, 4108, 4109, 4109, 1, 4075, 4124, 4092, 4127, 4123, 4123, 1, 4075, 4124, 4092, 4128, 4125, 4125, 1, 4075, 4124, 4092, 4126, 4126, 4126, 1, 4075, 4129, 4124, 4092, 4127, 4130, 4123, 4123, 1, 4075, 4124, 4092, 4128, 4125, 4125, 4125, 1, 4075, 4124, 4092, 4125, 4125, 4125, 1, 4075, 4124, 4092, 4130, 4123, 4123, 1, 4124, 4092, 4123, 4123, 4123, 1, 4131, 4132, 4133, 4092, 4134, 4135, 4135, 1, 4075, 4137, 4092, 4136, 4136, 4136, 1, 4137, 4092, 4138, 4138, 4138, 1, 4137, 4092, 4139, 4139, 4139, 1, 4137, 4092, 1, 4118, 4119, 4120, 4121, 4122, 4122, 1, 4075, 4137, 4092, 4140, 4136, 4136, 1, 4075, 4137, 4092, 4141, 4138, 4138, 1, 4075, 4137, 4092, 4139, 4139, 4139, 1, 4075, 4142, 4137, 4092, 4140, 4143, 4136, 4136, 1, 4075, 4137, 4092, 4141, 4138, 4138, 4138, 1, 4075, 4137, 4092, 4138, 4138, 4138, 1, 4075, 4137, 4092, 4143, 4136, 4136, 1, 4137, 4092, 4136, 4136, 4136, 1, 4144, 4145, 4146, 4092, 4147, 4148, 4148, 1, 4075, 4150, 4092, 4149, 4149, 4149, 1, 4150, 4092, 4151, 4151, 4151, 1, 4150, 4092, 4152, 4152, 4152, 1, 4150, 4092, 1, 4131, 4132, 4133, 4134, 4135, 4135, 1, 4075, 4150, 4092, 4153, 4149, 4149, 1, 4075, 4150, 4092, 4154, 4151, 4151, 1, 4075, 4150, 4092, 4152, 4152, 4152, 1, 4075, 4155, 4150, 4092, 4153, 4156, 4149, 4149, 1, 4075, 4150, 4092, 4154, 4151, 4151, 4151, 1, 4075, 4150, 4092, 4151, 4151, 4151, 1, 4075, 4150, 4092, 4156, 4149, 4149, 1, 4150, 4092, 4149, 4149, 4149, 1, 4157, 4158, 4159, 4092, 4160, 4161, 4161, 1, 4075, 4163, 4092, 4162, 4162, 4162, 1, 4163, 4092, 4164, 4164, 4164, 1, 4163, 4092, 4165, 4165, 4165, 1, 4163, 4092, 1, 4144, 4145, 4146, 4147, 4148, 4148, 1, 4075, 4163, 4092, 4166, 4162, 4162, 1, 4075, 4163, 4092, 4167, 4164, 4164, 1, 4075, 4163, 4092, 4165, 4165, 4165, 1, 4075, 4168, 4163, 4092, 4166, 4169, 4162, 4162, 1, 4075, 4163, 4092, 4167, 4164, 4164, 4164, 1, 4075, 4163, 4092, 4164, 4164, 4164, 1, 4075, 4163, 4092, 4169, 4162, 4162, 1, 4163, 4092, 4162, 4162, 4162, 1, 4170, 1, 4171, 4172, 4173, 4092, 4174, 4175, 4175, 1, 4075, 4177, 4092, 4176, 4176, 4176, 1, 4177, 4092, 4178, 4178, 4178, 1, 4177, 4092, 4179, 4179, 4179, 1, 4177, 4092, 1, 4157, 4158, 4159, 4160, 4161, 4161, 1, 4075, 4177, 4092, 4180, 4176, 4176, 1, 4075, 4177, 4092, 4181, 4178, 4178, 1, 4075, 4177, 4092, 4179, 4179, 4179, 1, 4075, 4182, 4177, 4092, 4180, 4183, 4176, 4176, 1, 4075, 4177, 4092, 4181, 4178, 4178, 4178, 1, 4075, 4177, 4092, 4178, 4178, 4178, 1, 4075, 4177, 4092, 4183, 4176, 4176, 1, 4177, 4092, 4176, 4176, 4176, 1, 4184, 4184, 4184, 1, 244, 244, 244, 1, 251, 4185, 248, 249, 248, 252, 251, 251, 251, 248, 251, 251, 1, 4186, 4186, 4186, 1, 251, 251, 251, 1, 248, 4010, 249, 250, 248, 248, 248, 248, 248, 1, 244, 245, 246, 4187, 251, 249, 252, 244, 244, 244, 244, 244, 1, 4188, 4189, 4190, 251, 249, 252, 4191, 4188, 4188, 4188, 4188, 4188, 1, 4188, 4189, 4190, 4192, 249, 4193, 4188, 4188, 4188, 4188, 4188, 1, 4189, 4194, 4195, 4189, 4196, 4189, 4189, 4189, 4189, 4189, 1, 4197, 4197, 4197, 1, 4189, 4189, 4189, 1, 4195, 4198, 4195, 4196, 4195, 4195, 4195, 4195, 4195, 4195, 1, 4199, 4199, 4199, 1, 4195, 4195, 4195, 1, 4200, 4201, 4202, 4191, 4203, 4204, 4204, 1, 4205, 4206, 4205, 4207, 4207, 4207, 1, 4205, 4205, 4207, 4207, 4207, 1, 4205, 4208, 4205, 4207, 4207, 4207, 1, 4207, 4204, 4204, 1, 4209, 4210, 248, 4211, 249, 248, 4209, 4204, 4204, 4204, 1, 4209, 4209, 4204, 4204, 4204, 1, 248, 4211, 249, 248, 4207, 4204, 4204, 1, 4212, 4214, 4213, 4215, 1, 4216, 4217, 1, 4218, 4219, 1, 4220, 1, 248, 249, 248, 1, 248, 249, 248, 4220, 1, 248, 249, 248, 4219, 1, 248, 249, 248, 4215, 1, 248, 249, 248, 4217, 1, 248, 4221, 249, 248, 4215, 4217, 1, 248, 4222, 249, 248, 4217, 4219, 1, 248, 4223, 249, 248, 4219, 4220, 1, 248, 249, 248, 4220, 1, 4224, 4225, 4226, 4227, 4204, 4204, 1, 4205, 4228, 4205, 4207, 4207, 4207, 1, 4229, 4230, 4231, 4232, 4204, 4204, 1, 4205, 4233, 4205, 4207, 4207, 4207, 1, 4234, 4235, 4236, 4237, 4204, 4204, 1, 4205, 4208, 248, 4211, 249, 248, 4205, 4207, 4207, 4207, 1, 4205, 4208, 248, 4211, 249, 248, 4205, 4237, 4207, 4207, 1, 4205, 4208, 248, 4211, 249, 248, 4205, 4234, 4207, 4207, 1, 4205, 4208, 248, 4238, 4211, 249, 248, 4205, 4237, 4234, 4207, 4207, 1, 4205, 4208, 248, 4211, 249, 248, 4205, 4234, 4207, 4207, 4207, 1, 4205, 4233, 4205, 4232, 4207, 4207, 1, 4205, 4233, 4205, 4229, 4207, 4207, 1, 4205, 4233, 4239, 4205, 4232, 4229, 4207, 4207, 1, 4205, 4233, 4205, 4229, 4207, 4207, 4207, 1, 4205, 4228, 4205, 4227, 4207, 4207, 1, 4205, 4228, 4205, 4224, 4207, 4207, 1, 4205, 4228, 4240, 4205, 4227, 4224, 4207, 4207, 1, 4205, 4228, 4205, 4224, 4207, 4207, 4207, 1, 4205, 4206, 4205, 4203, 4207, 4207, 1, 4205, 4206, 4205, 4200, 4207, 4207, 1, 4205, 4206, 4241, 4205, 4203, 4200, 4207, 4207, 1, 4205, 4206, 4205, 4200, 4207, 4207, 4207, 1, 4243, 4242, 4242, 4242, 1, 4245, 4244, 4244, 4244, 1, 4245, 4246, 4246, 4246, 1, 4245, 4247, 4247, 4247, 1, 4245, 1, 4249, 4248, 4248, 4248, 1, 4251, 4250, 4250, 4250, 1, 4251, 4252, 4252, 4252, 1, 4251, 4253, 4253, 4253, 1, 4251, 1, 4255, 4254, 4254, 4254, 1, 4257, 4256, 4256, 4256, 1, 4257, 4258, 4258, 4258, 1, 4257, 4259, 4259, 4259, 1, 4257, 1, 4261, 4260, 4260, 4260, 1, 4263, 4262, 4262, 4262, 1, 4263, 4264, 4264, 4264, 1, 4263, 4265, 4265, 4265, 1, 4263, 1, 4267, 4266, 4266, 4266, 1, 4269, 4268, 4268, 4268, 1, 4269, 4270, 4270, 4270, 1, 4269, 4271, 4271, 4271, 1, 4269, 1, 4273, 4272, 4272, 4272, 1, 4275, 4274, 4274, 4274, 1, 4275, 4276, 4276, 4276, 1, 4275, 4277, 4277, 4277, 1, 4275, 1, 4278, 4279, 4280, 4282, 4281, 4283, 4283, 1, 4284, 4286, 4285, 4285, 4285, 1, 4287, 4288, 4289, 4290, 1, 4291, 1, 4292, 4293, 4294, 4295, 1, 4296, 1, 4297, 4298, 4299, 4300, 1, 4301, 1, 248, 4211, 249, 248, 1, 4301, 4300, 1, 4301, 4297, 1, 4302, 4301, 4300, 4297, 1, 4301, 4297, 1, 4296, 4295, 1, 4296, 4292, 1, 4296, 4303, 4295, 4292, 1, 4296, 4292, 1, 4291, 4290, 1, 4291, 4287, 1, 4291, 4304, 4290, 4287, 1, 4291, 4287, 1, 4286, 4305, 4305, 4305, 1, 4286, 4306, 4306, 4306, 1, 4286, 1, 4297, 4307, 4307, 4307, 1, 4301, 4308, 4308, 4308, 1, 4301, 4309, 4309, 4309, 1, 4301, 4297, 4297, 4297, 1, 4284, 4286, 4310, 4285, 4285, 1, 4284, 4286, 4311, 4305, 4305, 1, 4284, 4286, 4306, 4306, 4306, 1, 4284, 4312, 4286, 4310, 4313, 4285, 4285, 1, 4284, 4286, 4311, 4305, 4305, 4305, 1, 4284, 4286, 4305, 4305, 4305, 1, 4284, 4286, 4313, 4285, 4285, 1, 4301, 4307, 4307, 4307, 1, 4286, 4285, 4285, 4285, 1, 4314, 4315, 4316, 4301, 4317, 4318, 4318, 1, 4284, 4320, 4301, 4319, 4319, 4319, 1, 4320, 4301, 4321, 4321, 4321, 1, 4320, 4301, 4322, 4322, 4322, 1, 4320, 4301, 1, 4307, 4307, 4307, 1, 4284, 4320, 4301, 4323, 4319, 4319, 1, 4284, 4320, 4301, 4324, 4321, 4321, 1, 4284, 4320, 4301, 4322, 4322, 4322, 1, 4284, 4325, 4320, 4301, 4323, 4326, 4319, 4319, 1, 4284, 4320, 4301, 4324, 4321, 4321, 4321, 1, 4284, 4320, 4301, 4321, 4321, 4321, 1, 4284, 4320, 4301, 4326, 4319, 4319, 1, 4320, 4301, 4319, 4319, 4319, 1, 4327, 4328, 4329, 4301, 4330, 4331, 4331, 1, 4284, 4333, 4301, 4332, 4332, 4332, 1, 4333, 4301, 4334, 4334, 4334, 1, 4333, 4301, 4335, 4335, 4335, 1, 4333, 4301, 1, 4314, 4315, 4316, 4317, 4318, 4318, 1, 4284, 4333, 4301, 4336, 4332, 4332, 1, 4284, 4333, 4301, 4337, 4334, 4334, 1, 4284, 4333, 4301, 4335, 4335, 4335, 1, 4284, 4338, 4333, 4301, 4336, 4339, 4332, 4332, 1, 4284, 4333, 4301, 4337, 4334, 4334, 4334, 1, 4284, 4333, 4301, 4334, 4334, 4334, 1, 4284, 4333, 4301, 4339, 4332, 4332, 1, 4333, 4301, 4332, 4332, 4332, 1, 4340, 4341, 4342, 4301, 4343, 4344, 4344, 1, 4284, 4346, 4301, 4345, 4345, 4345, 1, 4346, 4301, 4347, 4347, 4347, 1, 4346, 4301, 4348, 4348, 4348, 1, 4346, 4301, 1, 4327, 4328, 4329, 4330, 4331, 4331, 1, 4284, 4346, 4301, 4349, 4345, 4345, 1, 4284, 4346, 4301, 4350, 4347, 4347, 1, 4284, 4346, 4301, 4348, 4348, 4348, 1, 4284, 4351, 4346, 4301, 4349, 4352, 4345, 4345, 1, 4284, 4346, 4301, 4350, 4347, 4347, 4347, 1, 4284, 4346, 4301, 4347, 4347, 4347, 1, 4284, 4346, 4301, 4352, 4345, 4345, 1, 4346, 4301, 4345, 4345, 4345, 1, 4353, 4354, 4355, 4301, 4356, 4357, 4357, 1, 4284, 4359, 4301, 4358, 4358, 4358, 1, 4359, 4301, 4360, 4360, 4360, 1, 4359, 4301, 4361, 4361, 4361, 1, 4359, 4301, 1, 4340, 4341, 4342, 4343, 4344, 4344, 1, 4284, 4359, 4301, 4362, 4358, 4358, 1, 4284, 4359, 4301, 4363, 4360, 4360, 1, 4284, 4359, 4301, 4361, 4361, 4361, 1, 4284, 4364, 4359, 4301, 4362, 4365, 4358, 4358, 1, 4284, 4359, 4301, 4363, 4360, 4360, 4360, 1, 4284, 4359, 4301, 4360, 4360, 4360, 1, 4284, 4359, 4301, 4365, 4358, 4358, 1, 4359, 4301, 4358, 4358, 4358, 1, 4366, 4367, 4368, 4301, 4369, 4370, 4370, 1, 4284, 4372, 4301, 4371, 4371, 4371, 1, 4372, 4301, 4373, 4373, 4373, 1, 4372, 4301, 4374, 4374, 4374, 1, 4372, 4301, 1, 4353, 4354, 4355, 4356, 4357, 4357, 1, 4284, 4372, 4301, 4375, 4371, 4371, 1, 4284, 4372, 4301, 4376, 4373, 4373, 1, 4284, 4372, 4301, 4374, 4374, 4374, 1, 4284, 4377, 4372, 4301, 4375, 4378, 4371, 4371, 1, 4284, 4372, 4301, 4376, 4373, 4373, 4373, 1, 4284, 4372, 4301, 4373, 4373, 4373, 1, 4284, 4372, 4301, 4378, 4371, 4371, 1, 4372, 4301, 4371, 4371, 4371, 1, 4379, 1, 4380, 4381, 4382, 4301, 4383, 4384, 4384, 1, 4284, 4386, 4301, 4385, 4385, 4385, 1, 4386, 4301, 4387, 4387, 4387, 1, 4386, 4301, 4388, 4388, 4388, 1, 4386, 4301, 1, 4366, 4367, 4368, 4369, 4370, 4370, 1, 4284, 4386, 4301, 4389, 4385, 4385, 1, 4284, 4386, 4301, 4390, 4387, 4387, 1, 4284, 4386, 4301, 4388, 4388, 4388, 1, 4284, 4391, 4386, 4301, 4389, 4392, 4385, 4385, 1, 4284, 4386, 4301, 4390, 4387, 4387, 4387, 1, 4284, 4386, 4301, 4387, 4387, 4387, 1, 4284, 4386, 4301, 4392, 4385, 4385, 1, 4386, 4301, 4385, 4385, 4385, 1, 4393, 4393, 4393, 1, 4188, 4188, 4188, 1, 4192, 4394, 248, 249, 248, 4193, 4192, 4192, 4192, 248, 4192, 4192, 1, 4395, 4395, 4395, 1, 4192, 4192, 4192, 1, 248, 4010, 249, 4191, 248, 248, 248, 248, 248, 1, 242, 243, 4396, 4396, 242, 242, 242, 242, 1, 242, 243, 4397, 4397, 242, 242, 242, 242, 1, 242, 4398, 4399, 4399, 242, 242, 242, 242, 1, 4400, 4401, 4402, 4403, 4404, 4400, 4400, 4400, 4407, 4400, 4400, 4400, 4405, 4406, 4406, 1, 4408, 4409, 4410, 4408, 4411, 4408, 4408, 4408, 4408, 4408, 1, 4412, 4412, 4412, 1, 4408, 4408, 4408, 1, 4410, 4413, 4410, 4411, 4410, 4410, 4410, 4410, 4410, 4410, 1, 4414, 4414, 4414, 1, 4410, 4410, 4410, 1, 4415, 4416, 4417, 4407, 4418, 4419, 4419, 1, 4420, 4421, 4420, 4422, 4422, 4422, 1, 4420, 4420, 4422, 4422, 4422, 1, 4420, 4423, 4420, 4422, 4422, 4422, 1, 4422, 4424, 4424, 1, 4425, 4426, 4427, 4428, 4429, 4430, 4425, 4424, 4424, 4424, 1, 4425, 4425, 4424, 4424, 4424, 1, 4427, 4428, 4429, 4430, 4422, 4424, 4424, 1, 4431, 4433, 4432, 4434, 1, 4435, 4436, 1, 4437, 4438, 1, 4439, 1, 4440, 4441, 4442, 1, 4443, 4444, 4445, 4446, 4447, 4443, 4443, 4445, 4446, 4447, 4443, 4443, 4443, 4443, 4443, 1, 4448, 4449, 4450, 4451, 4452, 4453, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 1, 4454, 4454, 4454, 1, 4448, 4448, 4448, 1, 4455, 4456, 4450, 4457, 4452, 4453, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 1, 4458, 4459, 4460, 4461, 4462, 4458, 4458, 4458, 4458, 4458, 4458, 4458, 1, 4463, 4463, 4463, 1, 4458, 4458, 4458, 1, 4464, 4464, 4465, 4464, 4464, 4464, 4464, 4464, 4464, 4464, 4464, 1, 4464, 4464, 4465, 4466, 4464, 4464, 4464, 4464, 4464, 4464, 4464, 4464, 1, 4467, 4467, 4467, 1, 4464, 4464, 4464, 1, 4466, 4468, 4469, 4470, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 4466, 1, 4471, 4471, 4471, 1, 4466, 4466, 4466, 1, 4455, 4456, 4455, 4455, 4455, 4455, 4455, 4455, 4455, 1, 4448, 4449, 4450, 4451, 4452, 4453, 4472, 4448, 4448, 4472, 4448, 4448, 4448, 4448, 4448, 1, 4448, 4449, 4473, 4474, 4475, 4476, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 1, 4477, 4478, 4477, 4455, 4455, 4450, 4457, 4452, 4453, 4455, 4455, 4479, 4477, 4455, 4477, 4477, 4477, 4477, 1, 4480, 4481, 4480, 4458, 4458, 4460, 4461, 4462, 4458, 4458, 4479, 4480, 4458, 4480, 4480, 4480, 4480, 1, 4479, 4479, 4479, 4483, 249, 4484, 4479, 4479, 4479, 4482, 4482, 4479, 4479, 4482, 4479, 1, 4479, 4479, 4479, 4483, 249, 4484, 4479, 4479, 4479, 4479, 4479, 4479, 1, 4479, 4479, 4479, 4483, 249, 4484, 4479, 4479, 4479, 4480, 4480, 4479, 4479, 4480, 4479, 1, 4448, 4449, 4450, 4451, 4452, 4453, 4485, 4486, 4448, 4448, 4485, 4486, 4448, 4448, 4448, 4448, 4448, 1, 4448, 4449, 4487, 4488, 4489, 4490, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 1, 4448, 4449, 4450, 4451, 4452, 4453, 4491, 4448, 4448, 4491, 4448, 4448, 4448, 4448, 4448, 1, 4448, 4449, 4450, 4451, 4452, 4453, 4492, 4448, 4448, 4492, 4448, 4448, 4448, 4448, 4448, 1, 4448, 4449, 4450, 4493, 4452, 4453, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 1, 4494, 4495, 4494, 4455, 4455, 4450, 4457, 4452, 4453, 4455, 4455, 4496, 4494, 4455, 4494, 4494, 4494, 4494, 1, 4497, 4498, 4497, 4458, 4458, 4499, 4500, 4501, 4458, 4458, 4502, 4497, 4458, 4497, 4497, 4497, 4497, 1, 4502, 4502, 4502, 4504, 4505, 4506, 4502, 4502, 4502, 4503, 4503, 4502, 4502, 4503, 4502, 1, 4502, 4502, 4502, 4504, 4505, 4506, 4502, 4502, 4502, 4502, 4502, 4502, 1, 4502, 4502, 4502, 4504, 4505, 4506, 4502, 4502, 4502, 4497, 4497, 4502, 4502, 4497, 4502, 1, 4448, 4449, 4450, 4451, 4452, 4453, 4507, 4448, 4448, 4507, 4448, 4448, 4448, 4448, 4448, 1, 4448, 4449, 4450, 4451, 4452, 4453, 4508, 4448, 4448, 4508, 4448, 4448, 4448, 4448, 4448, 1, 4448, 4449, 4450, 4451, 4452, 4453, 4509, 4448, 4448, 4509, 4448, 4448, 4448, 4448, 4448, 1, 4448, 4449, 4450, 4451, 4452, 4453, 4510, 4448, 4448, 4510, 4448, 4448, 4448, 4448, 4448, 1, 4448, 4449, 4450, 4451, 4452, 4453, 4511, 4448, 4448, 4511, 4448, 4448, 4448, 4448, 4448, 1, 4448, 4449, 4450, 4451, 4452, 4453, 4512, 4448, 4448, 4512, 4448, 4448, 4448, 4448, 4448, 1, 4448, 4449, 4450, 4451, 4452, 4453, 4513, 4448, 4448, 4513, 4448, 4448, 4448, 4448, 4448, 1, 4448, 4449, 4450, 4451, 4452, 4453, 4514, 4448, 4448, 4514, 4448, 4448, 4448, 4448, 4448, 1, 4448, 4449, 4450, 4515, 4452, 4453, 4448, 4448, 4448, 4448, 4448, 4448, 4448, 1, 4516, 4517, 4516, 4455, 4455, 4450, 4457, 4452, 4453, 4518, 4519, 4520, 4521, 4455, 4455, 4522, 4518, 4519, 4520, 4521, 4516, 4455, 4516, 4516, 4516, 4516, 1, 4523, 4524, 4523, 4458, 4458, 4525, 4526, 4527, 4458, 4458, 4528, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4528, 4528, 4528, 4530, 4531, 4532, 4528, 4528, 4528, 4529, 4529, 4528, 4528, 4529, 4528, 1, 4528, 4528, 4528, 4530, 4531, 4532, 4528, 4528, 4528, 4528, 4528, 4528, 1, 4528, 4528, 4528, 4530, 4531, 4532, 4528, 4528, 4528, 4523, 4523, 4528, 4528, 4523, 4528, 1, 4523, 4524, 4523, 4458, 4458, 4525, 4526, 4527, 4533, 4458, 4458, 4528, 4533, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4523, 4524, 4523, 4458, 4458, 4525, 4526, 4527, 4534, 4458, 4458, 4528, 4534, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4523, 4524, 4523, 4458, 4458, 4525, 4526, 4527, 4535, 4458, 4458, 4528, 4535, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4523, 4524, 4523, 4458, 4458, 4536, 4537, 4538, 4458, 4458, 4528, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4523, 4524, 4523, 4458, 4458, 4525, 4526, 4527, 4539, 4540, 4458, 4458, 4528, 4539, 4540, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4523, 4524, 4523, 4458, 4458, 4525, 4526, 4527, 4541, 4458, 4458, 4528, 4541, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4523, 4524, 4523, 4458, 4458, 4542, 4543, 4544, 4458, 4458, 4528, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4523, 4524, 4523, 4458, 4458, 4525, 4526, 4527, 4545, 4458, 4458, 4528, 4545, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4523, 4524, 4523, 4458, 4458, 4546, 4547, 4548, 4458, 4458, 4528, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4523, 4524, 4523, 4458, 4458, 4525, 4526, 4527, 4549, 4458, 4458, 4528, 4549, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4523, 4524, 4523, 4458, 4458, 4525, 4526, 4527, 4550, 4458, 4458, 4528, 4550, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4523, 4524, 4523, 4458, 4458, 4551, 4552, 4553, 4458, 4458, 4528, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4523, 4524, 4523, 4458, 4458, 4525, 4526, 4527, 4554, 4458, 4458, 4528, 4554, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4523, 4524, 4523, 4458, 4458, 4555, 4556, 4557, 4558, 4458, 4458, 4528, 4558, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4523, 4524, 4523, 4458, 4458, 4559, 4560, 4561, 4458, 4458, 4528, 4523, 4458, 4523, 4523, 4523, 4523, 1, 4440, 4441, 4442, 4439, 1, 4440, 4441, 4442, 4438, 1, 4440, 4441, 4442, 4562, 1, 4440, 4441, 4442, 4436, 1, 4563, 4440, 4441, 4442, 4562, 4436, 1, 4564, 4440, 4441, 4442, 4436, 4438, 1, 4565, 4440, 4441, 4442, 4438, 4439, 1, 4440, 4441, 4442, 4439, 1, 4566, 4567, 4568, 4569, 4424, 4424, 1, 4420, 4570, 4420, 4422, 4422, 4422, 1, 4571, 4572, 4573, 4574, 4424, 4424, 1, 4420, 4575, 4420, 4422, 4422, 4422, 1, 4576, 4577, 4578, 4579, 4424, 4424, 1, 4420, 4423, 4580, 4581, 4582, 4583, 4420, 4422, 4422, 4422, 1, 4420, 4423, 4580, 4581, 4582, 4583, 4420, 4579, 4422, 4422, 1, 4420, 4423, 4580, 4581, 4582, 4583, 4420, 4576, 4422, 4422, 1, 4420, 4423, 4584, 4580, 4581, 4582, 4583, 4420, 4579, 4576, 4422, 4422, 1, 4420, 4423, 4580, 4581, 4582, 4583, 4420, 4576, 4422, 4422, 4422, 1, 4420, 4575, 4420, 4574, 4422, 4422, 1, 4420, 4575, 4420, 4571, 4422, 4422, 1, 4420, 4575, 4585, 4420, 4574, 4571, 4422, 4422, 1, 4420, 4575, 4420, 4571, 4422, 4422, 4422, 1, 4420, 4570, 4420, 4569, 4422, 4422, 1, 4420, 4570, 4420, 4566, 4422, 4422, 1, 4420, 4570, 4586, 4420, 4569, 4566, 4422, 4422, 1, 4420, 4570, 4420, 4566, 4422, 4422, 4422, 1, 4420, 4421, 4420, 4587, 4422, 4422, 1, 4420, 4421, 4420, 4588, 4422, 4422, 1, 4420, 4421, 4589, 4420, 4587, 4588, 4422, 4422, 1, 4420, 4421, 4420, 4588, 4422, 4422, 4422, 1, 4591, 4590, 4590, 4590, 1, 4593, 4592, 4592, 4592, 1, 4593, 4594, 4594, 4594, 1, 4593, 4595, 4595, 4595, 1, 4593, 1, 4597, 4596, 4596, 4596, 1, 4599, 4598, 4598, 4598, 1, 4599, 4600, 4600, 4600, 1, 4599, 4601, 4601, 4601, 1, 4599, 1, 4603, 4602, 4602, 4602, 1, 4605, 4604, 4604, 4604, 1, 4605, 4606, 4606, 4606, 1, 4605, 4607, 4607, 4607, 1, 4605, 1, 4609, 4608, 4608, 4608, 1, 4611, 4610, 4610, 4610, 1, 4611, 4612, 4612, 4612, 1, 4611, 4613, 4613, 4613, 1, 4611, 1, 4615, 4614, 4614, 4614, 1, 4617, 4616, 4616, 4616, 1, 4617, 4618, 4618, 4618, 1, 4617, 4619, 4619, 4619, 1, 4617, 1, 4621, 4620, 4620, 4620, 1, 4623, 4622, 4622, 4622, 1, 4623, 4624, 4624, 4624, 1, 4623, 4625, 4625, 4625, 1, 4623, 1, 4626, 4627, 4628, 4630, 4629, 4631, 4631, 1, 4632, 4634, 4633, 4633, 4633, 1, 4635, 4636, 4637, 4638, 1, 4639, 1, 4640, 4641, 4642, 4643, 1, 4644, 1, 4645, 4646, 4647, 4648, 1, 4649, 1, 4650, 4651, 4652, 4653, 1, 4649, 4648, 1, 4649, 4645, 1, 4654, 4649, 4648, 4645, 1, 4649, 4645, 1, 4644, 4643, 1, 4644, 4640, 1, 4644, 4655, 4643, 4640, 1, 4644, 4640, 1, 4639, 4638, 1, 4639, 4635, 1, 4639, 4656, 4638, 4635, 1, 4639, 4635, 1, 4634, 4657, 4657, 4657, 1, 4634, 4658, 4658, 4658, 1, 4634, 1, 4645, 4659, 4659, 4659, 1, 4649, 4660, 4660, 4660, 1, 4649, 4661, 4661, 4661, 1, 4649, 4645, 4645, 4645, 1, 4632, 4634, 4662, 4633, 4633, 1, 4632, 4634, 4663, 4657, 4657, 1, 4632, 4634, 4658, 4658, 4658, 1, 4632, 4664, 4634, 4662, 4665, 4633, 4633, 1, 4632, 4634, 4663, 4657, 4657, 4657, 1, 4632, 4634, 4657, 4657, 4657, 1, 4632, 4634, 4665, 4633, 4633, 1, 4649, 4659, 4659, 4659, 1, 4634, 4633, 4633, 4633, 1, 4666, 4667, 4668, 4649, 4669, 4670, 4670, 1, 4632, 4672, 4649, 4671, 4671, 4671, 1, 4672, 4649, 4673, 4673, 4673, 1, 4672, 4649, 4674, 4674, 4674, 1, 4672, 4649, 1, 4659, 4659, 4659, 1, 4632, 4672, 4649, 4675, 4671, 4671, 1, 4632, 4672, 4649, 4676, 4673, 4673, 1, 4632, 4672, 4649, 4674, 4674, 4674, 1, 4632, 4677, 4672, 4649, 4675, 4678, 4671, 4671, 1, 4632, 4672, 4649, 4676, 4673, 4673, 4673, 1, 4632, 4672, 4649, 4673, 4673, 4673, 1, 4632, 4672, 4649, 4678, 4671, 4671, 1, 4672, 4649, 4671, 4671, 4671, 1, 4679, 4680, 4681, 4649, 4682, 4683, 4683, 1, 4632, 4685, 4649, 4684, 4684, 4684, 1, 4685, 4649, 4686, 4686, 4686, 1, 4685, 4649, 4687, 4687, 4687, 1, 4685, 4649, 1, 4666, 4667, 4668, 4669, 4670, 4670, 1, 4632, 4685, 4649, 4688, 4684, 4684, 1, 4632, 4685, 4649, 4689, 4686, 4686, 1, 4632, 4685, 4649, 4687, 4687, 4687, 1, 4632, 4690, 4685, 4649, 4688, 4691, 4684, 4684, 1, 4632, 4685, 4649, 4689, 4686, 4686, 4686, 1, 4632, 4685, 4649, 4686, 4686, 4686, 1, 4632, 4685, 4649, 4691, 4684, 4684, 1, 4685, 4649, 4684, 4684, 4684, 1, 4692, 4693, 4694, 4649, 4695, 4696, 4696, 1, 4632, 4698, 4649, 4697, 4697, 4697, 1, 4698, 4649, 4699, 4699, 4699, 1, 4698, 4649, 4700, 4700, 4700, 1, 4698, 4649, 1, 4679, 4680, 4681, 4682, 4683, 4683, 1, 4632, 4698, 4649, 4701, 4697, 4697, 1, 4632, 4698, 4649, 4702, 4699, 4699, 1, 4632, 4698, 4649, 4700, 4700, 4700, 1, 4632, 4703, 4698, 4649, 4701, 4704, 4697, 4697, 1, 4632, 4698, 4649, 4702, 4699, 4699, 4699, 1, 4632, 4698, 4649, 4699, 4699, 4699, 1, 4632, 4698, 4649, 4704, 4697, 4697, 1, 4698, 4649, 4697, 4697, 4697, 1, 4705, 4706, 4707, 4649, 4708, 4709, 4709, 1, 4632, 4711, 4649, 4710, 4710, 4710, 1, 4711, 4649, 4712, 4712, 4712, 1, 4711, 4649, 4713, 4713, 4713, 1, 4711, 4649, 1, 4692, 4693, 4694, 4695, 4696, 4696, 1, 4632, 4711, 4649, 4714, 4710, 4710, 1, 4632, 4711, 4649, 4715, 4712, 4712, 1, 4632, 4711, 4649, 4713, 4713, 4713, 1, 4632, 4716, 4711, 4649, 4714, 4717, 4710, 4710, 1, 4632, 4711, 4649, 4715, 4712, 4712, 4712, 1, 4632, 4711, 4649, 4712, 4712, 4712, 1, 4632, 4711, 4649, 4717, 4710, 4710, 1, 4711, 4649, 4710, 4710, 4710, 1, 4718, 4719, 4720, 4649, 4721, 4722, 4722, 1, 4632, 4724, 4649, 4723, 4723, 4723, 1, 4724, 4649, 4725, 4725, 4725, 1, 4724, 4649, 4726, 4726, 4726, 1, 4724, 4649, 1, 4705, 4706, 4707, 4708, 4709, 4709, 1, 4632, 4724, 4649, 4727, 4723, 4723, 1, 4632, 4724, 4649, 4728, 4725, 4725, 1, 4632, 4724, 4649, 4726, 4726, 4726, 1, 4632, 4729, 4724, 4649, 4727, 4730, 4723, 4723, 1, 4632, 4724, 4649, 4728, 4725, 4725, 4725, 1, 4632, 4724, 4649, 4725, 4725, 4725, 1, 4632, 4724, 4649, 4730, 4723, 4723, 1, 4724, 4649, 4723, 4723, 4723, 1, 4731, 1, 4732, 4733, 4734, 4649, 4735, 4736, 4736, 1, 4632, 4738, 4649, 4737, 4737, 4737, 1, 4738, 4649, 4739, 4739, 4739, 1, 4738, 4649, 4740, 4740, 4740, 1, 4738, 4649, 1, 4718, 4719, 4720, 4721, 4722, 4722, 1, 4632, 4738, 4649, 4741, 4737, 4737, 1, 4632, 4738, 4649, 4742, 4739, 4739, 1, 4632, 4738, 4649, 4740, 4740, 4740, 1, 4632, 4743, 4738, 4649, 4741, 4744, 4737, 4737, 1, 4632, 4738, 4649, 4742, 4739, 4739, 4739, 1, 4632, 4738, 4649, 4739, 4739, 4739, 1, 4632, 4738, 4649, 4744, 4737, 4737, 1, 4738, 4649, 4737, 4737, 4737, 1, 4408, 4409, 4745, 4746, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4747, 4747, 4747, 1, 4408, 4409, 4745, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4747, 4747, 4747, 1, 4408, 4409, 4745, 4748, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4747, 4747, 4747, 1, 4408, 4409, 4410, 4408, 4408, 4408, 4411, 4408, 4408, 4408, 4747, 4749, 4749, 1, 4408, 4409, 4750, 4751, 4752, 4753, 4408, 4429, 4754, 4411, 4750, 4408, 4408, 4749, 4749, 4749, 1, 4408, 4409, 4750, 4410, 4408, 4408, 4408, 4411, 4750, 4408, 4408, 4749, 4749, 4749, 1, 4408, 4409, 4752, 4753, 4408, 4429, 4754, 4411, 4408, 4408, 4408, 4747, 4749, 4749, 1, 4410, 4413, 4755, 4757, 4410, 4411, 4410, 4410, 4410, 4756, 4758, 4410, 4410, 1, 4410, 4413, 4759, 4410, 4411, 4410, 4410, 4410, 4760, 4410, 4410, 1, 4410, 4413, 4761, 4410, 4411, 4410, 4410, 4410, 4762, 4410, 4410, 1, 4410, 4413, 4410, 4410, 4411, 4410, 4410, 4410, 4763, 4410, 4410, 1, 4410, 4413, 4440, 4441, 4442, 4411, 4410, 4410, 4410, 4410, 4410, 4410, 1, 4410, 4413, 4440, 4441, 4442, 4411, 4410, 4410, 4410, 4763, 4410, 4410, 1, 4410, 4413, 4440, 4441, 4442, 4411, 4410, 4410, 4410, 4762, 4410, 4410, 1, 4410, 4413, 4440, 4441, 4442, 4411, 4410, 4410, 4410, 4764, 4410, 4410, 1, 4410, 4413, 4440, 4441, 4442, 4411, 4410, 4410, 4410, 4760, 4410, 4410, 1, 4410, 4413, 4765, 4440, 4441, 4442, 4411, 4410, 4410, 4410, 4764, 4760, 4410, 4410, 1, 4410, 4413, 4766, 4440, 4441, 4442, 4411, 4410, 4410, 4410, 4760, 4762, 4410, 4410, 1, 4410, 4413, 4767, 4440, 4441, 4442, 4411, 4410, 4410, 4410, 4762, 4763, 4410, 4410, 1, 4410, 4413, 4440, 4441, 4442, 4411, 4410, 4410, 4410, 4763, 4410, 4410, 4410, 1, 4768, 4408, 4769, 4408, 4770, 4408, 4408, 4408, 4411, 4771, 4772, 4773, 4443, 4443, 4768, 4771, 4772, 4773, 4768, 4768, 4768, 4768, 1, 4774, 4408, 4775, 4408, 4776, 4777, 4778, 4452, 4779, 4411, 4448, 4448, 4774, 4774, 4774, 4774, 4774, 1, 4780, 4780, 4780, 1, 4774, 4774, 4774, 1, 4776, 4781, 4410, 4448, 4448, 4450, 4782, 4452, 4453, 4411, 4448, 4448, 4776, 4776, 4776, 4776, 4776, 1, 4783, 4783, 4783, 1, 4776, 4776, 4776, 1, 4784, 4785, 4410, 4455, 4455, 4450, 4786, 4452, 4453, 4411, 4455, 4455, 4784, 4784, 4784, 4784, 4784, 1, 4787, 4788, 4410, 4458, 4458, 4460, 4410, 4461, 4462, 4411, 4458, 4458, 4787, 4787, 4787, 4787, 4787, 1, 4789, 4789, 4789, 1, 4787, 4787, 4787, 1, 4784, 4785, 4410, 4455, 4455, 4410, 4411, 4455, 4455, 4784, 4784, 4784, 4784, 4784, 1, 4790, 4408, 4791, 4408, 4784, 4777, 4792, 4452, 4779, 4411, 4455, 4455, 4790, 4790, 4790, 4790, 4790, 1, 4793, 4408, 4794, 4408, 4787, 4795, 4408, 4461, 4796, 4411, 4458, 4458, 4793, 4793, 4793, 4793, 4793, 1, 4797, 4797, 4797, 1, 4793, 4793, 4793, 1, 4798, 4798, 4799, 4408, 4800, 4408, 4408, 4411, 4464, 4464, 4798, 4798, 4408, 4798, 4798, 4798, 1, 4798, 4798, 4799, 4408, 4800, 4408, 4801, 4411, 4464, 4464, 4798, 4798, 4408, 4798, 4798, 4798, 1, 4802, 4802, 4802, 1, 4798, 4798, 4798, 1, 4800, 4803, 4410, 4410, 4464, 4464, 4804, 4464, 4411, 4464, 4464, 4800, 4800, 4800, 4800, 4800, 1, 4805, 4805, 4805, 1, 4800, 4800, 4800, 1, 4804, 4806, 4807, 4410, 4466, 4466, 4410, 4470, 4466, 4411, 4466, 4466, 4804, 4804, 4804, 4804, 4804, 1, 4808, 4808, 4808, 1, 4804, 4804, 4804, 1, 4800, 4803, 4410, 4410, 4464, 4464, 4410, 4464, 4411, 4464, 4464, 4800, 4800, 4800, 4800, 4800, 1, 4801, 4408, 4809, 4810, 4408, 4804, 4408, 4408, 4470, 4411, 4466, 4466, 4801, 4801, 4801, 4801, 4801, 1, 4811, 4811, 4811, 1, 4801, 4801, 4801, 1, 4790, 4408, 4791, 4408, 4784, 4408, 4408, 4408, 4411, 4455, 4455, 4790, 4790, 4790, 4790, 4790, 1, 4774, 4408, 4775, 4408, 4776, 4777, 4778, 4452, 4779, 4411, 4812, 4448, 4448, 4774, 4812, 4774, 4774, 4774, 4774, 1, 4774, 4408, 4775, 4408, 4776, 4813, 4814, 4475, 4815, 4411, 4448, 4448, 4774, 4774, 4774, 4774, 4774, 1, 4816, 4408, 4817, 4816, 4408, 4790, 4784, 4777, 4792, 4452, 4779, 4411, 4455, 4455, 4479, 4816, 4790, 4816, 4816, 4816, 1, 4818, 4408, 4819, 4818, 4408, 4793, 4787, 4795, 4408, 4461, 4796, 4411, 4458, 4458, 4479, 4818, 4793, 4818, 4818, 4818, 1, 4479, 4479, 4479, 4483, 249, 4484, 4479, 4479, 4479, 4820, 4820, 4479, 4479, 4820, 4479, 1, 4479, 4479, 4479, 4483, 249, 4484, 4479, 4479, 4479, 4818, 4818, 4479, 4479, 4818, 4479, 1, 4774, 4408, 4775, 4408, 4776, 4777, 4778, 4452, 4779, 4411, 4821, 4822, 4448, 4448, 4774, 4821, 4822, 4774, 4774, 4774, 4774, 1, 4774, 4408, 4775, 4408, 4776, 4823, 4824, 4489, 4825, 4411, 4448, 4448, 4774, 4774, 4774, 4774, 4774, 1, 4774, 4408, 4775, 4408, 4776, 4777, 4778, 4452, 4779, 4411, 4826, 4448, 4448, 4774, 4826, 4774, 4774, 4774, 4774, 1, 4774, 4408, 4775, 4408, 4776, 4777, 4778, 4452, 4779, 4411, 4827, 4448, 4448, 4774, 4827, 4774, 4774, 4774, 4774, 1, 4774, 4408, 4775, 4408, 4776, 4777, 4828, 4452, 4779, 4411, 4448, 4448, 4774, 4774, 4774, 4774, 4774, 1, 4829, 4408, 4830, 4829, 4408, 4790, 4784, 4777, 4792, 4452, 4779, 4411, 4455, 4455, 4496, 4829, 4790, 4829, 4829, 4829, 1, 4831, 4408, 4832, 4831, 4408, 4793, 4787, 4833, 4408, 4500, 4834, 4411, 4458, 4458, 4502, 4831, 4793, 4831, 4831, 4831, 1, 4502, 4502, 4502, 4504, 4505, 4506, 4502, 4502, 4502, 4835, 4835, 4502, 4502, 4835, 4502, 1, 4502, 4502, 4502, 4504, 4505, 4506, 4502, 4502, 4502, 4831, 4831, 4502, 4502, 4831, 4502, 1, 4774, 4408, 4775, 4408, 4776, 4777, 4778, 4452, 4779, 4411, 4836, 4448, 4448, 4774, 4836, 4774, 4774, 4774, 4774, 1, 4774, 4408, 4775, 4408, 4776, 4777, 4778, 4452, 4779, 4411, 4837, 4448, 4448, 4774, 4837, 4774, 4774, 4774, 4774, 1, 4774, 4408, 4775, 4408, 4776, 4777, 4778, 4452, 4779, 4411, 4838, 4448, 4448, 4774, 4838, 4774, 4774, 4774, 4774, 1, 4774, 4408, 4775, 4408, 4776, 4777, 4778, 4452, 4779, 4411, 4839, 4448, 4448, 4774, 4839, 4774, 4774, 4774, 4774, 1, 4774, 4408, 4775, 4408, 4776, 4777, 4778, 4452, 4779, 4411, 4840, 4448, 4448, 4774, 4840, 4774, 4774, 4774, 4774, 1, 4774, 4408, 4775, 4408, 4776, 4777, 4778, 4452, 4779, 4411, 4841, 4448, 4448, 4774, 4841, 4774, 4774, 4774, 4774, 1, 4774, 4408, 4775, 4408, 4776, 4777, 4778, 4452, 4779, 4411, 4842, 4448, 4448, 4774, 4842, 4774, 4774, 4774, 4774, 1, 4774, 4408, 4775, 4408, 4776, 4777, 4778, 4452, 4779, 4411, 4843, 4448, 4448, 4774, 4843, 4774, 4774, 4774, 4774, 1, 4774, 4408, 4775, 4408, 4776, 4777, 4844, 4452, 4779, 4411, 4448, 4448, 4774, 4774, 4774, 4774, 4774, 1, 4845, 4408, 4846, 4845, 4408, 4790, 4784, 4777, 4792, 4452, 4779, 4411, 4847, 4848, 4849, 4850, 4455, 4455, 4522, 4847, 4848, 4849, 4850, 4845, 4790, 4845, 4845, 4845, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4853, 4408, 4526, 4854, 4411, 4458, 4458, 4528, 4851, 4793, 4851, 4851, 4851, 1, 4528, 4528, 4528, 4530, 4531, 4532, 4528, 4528, 4528, 4855, 4855, 4528, 4528, 4855, 4528, 1, 4528, 4528, 4528, 4530, 4531, 4532, 4528, 4528, 4528, 4851, 4851, 4528, 4528, 4851, 4528, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4853, 4408, 4526, 4854, 4411, 4856, 4458, 4458, 4528, 4856, 4851, 4793, 4851, 4851, 4851, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4853, 4408, 4526, 4854, 4411, 4857, 4458, 4458, 4528, 4857, 4851, 4793, 4851, 4851, 4851, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4853, 4408, 4526, 4854, 4411, 4858, 4458, 4458, 4528, 4858, 4851, 4793, 4851, 4851, 4851, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4859, 4408, 4537, 4860, 4411, 4458, 4458, 4528, 4851, 4793, 4851, 4851, 4851, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4853, 4408, 4526, 4854, 4411, 4861, 4862, 4458, 4458, 4528, 4861, 4862, 4851, 4793, 4851, 4851, 4851, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4853, 4408, 4526, 4854, 4411, 4863, 4458, 4458, 4528, 4863, 4851, 4793, 4851, 4851, 4851, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4864, 4408, 4543, 4865, 4411, 4458, 4458, 4528, 4851, 4793, 4851, 4851, 4851, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4853, 4408, 4526, 4854, 4411, 4866, 4458, 4458, 4528, 4866, 4851, 4793, 4851, 4851, 4851, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4867, 4408, 4547, 4868, 4411, 4458, 4458, 4528, 4851, 4793, 4851, 4851, 4851, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4853, 4408, 4526, 4854, 4411, 4869, 4458, 4458, 4528, 4869, 4851, 4793, 4851, 4851, 4851, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4853, 4408, 4526, 4854, 4411, 4870, 4458, 4458, 4528, 4870, 4851, 4793, 4851, 4851, 4851, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4871, 4408, 4552, 4872, 4411, 4458, 4458, 4528, 4851, 4793, 4851, 4851, 4851, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4853, 4408, 4526, 4854, 4411, 4873, 4458, 4458, 4528, 4873, 4851, 4793, 4851, 4851, 4851, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4874, 4408, 4556, 4875, 4411, 4876, 4458, 4458, 4528, 4876, 4851, 4793, 4851, 4851, 4851, 1, 4851, 4408, 4852, 4851, 4408, 4793, 4787, 4877, 4408, 4560, 4878, 4411, 4458, 4458, 4528, 4851, 4793, 4851, 4851, 4851, 1, 4408, 4409, 4879, 4880, 4881, 4410, 4408, 4408, 4408, 4411, 4408, 4408, 4408, 4882, 4749, 4749, 1, 4408, 4409, 4745, 4883, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4747, 4747, 4747, 1, 4408, 4409, 4884, 4885, 4886, 4410, 4408, 4408, 4408, 4411, 4408, 4408, 4408, 4887, 4749, 4749, 1, 4408, 4409, 4745, 4888, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4747, 4747, 4747, 1, 4408, 4409, 4889, 4890, 4891, 4410, 4408, 4408, 4408, 4411, 4408, 4408, 4408, 4892, 4749, 4749, 1, 4408, 4409, 4745, 4748, 4893, 4894, 4408, 4582, 4895, 4411, 4745, 4408, 4408, 4747, 4747, 4747, 1, 4408, 4409, 4745, 4748, 4893, 4894, 4408, 4582, 4895, 4411, 4745, 4408, 4408, 4892, 4747, 4747, 1, 4408, 4409, 4745, 4748, 4893, 4894, 4408, 4582, 4895, 4411, 4745, 4408, 4408, 4889, 4747, 4747, 1, 4408, 4409, 4745, 4748, 4896, 4893, 4894, 4408, 4582, 4895, 4411, 4745, 4408, 4408, 4892, 4889, 4747, 4747, 1, 4408, 4409, 4745, 4748, 4893, 4894, 4408, 4582, 4895, 4411, 4745, 4408, 4408, 4889, 4747, 4747, 4747, 1, 4408, 4409, 4745, 4888, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4887, 4747, 4747, 1, 4408, 4409, 4745, 4888, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4884, 4747, 4747, 1, 4408, 4409, 4745, 4888, 4897, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4887, 4884, 4747, 4747, 1, 4408, 4409, 4745, 4888, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4884, 4747, 4747, 4747, 1, 4408, 4409, 4745, 4883, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4882, 4747, 4747, 1, 4408, 4409, 4745, 4883, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4879, 4747, 4747, 1, 4408, 4409, 4745, 4883, 4898, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4882, 4879, 4747, 4747, 1, 4408, 4409, 4745, 4883, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4879, 4747, 4747, 4747, 1, 4408, 4409, 4745, 4746, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4899, 4747, 4747, 1, 4408, 4409, 4745, 4746, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4900, 4747, 4747, 1, 4408, 4409, 4745, 4746, 4901, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4899, 4900, 4747, 4747, 1, 4408, 4409, 4745, 4746, 4410, 4408, 4408, 4408, 4411, 4745, 4408, 4408, 4900, 4747, 4747, 4747, 1, 242, 4902, 242, 242, 242, 242, 1, 242, 243, 4903, 4903, 242, 242, 242, 242, 1, 242, 243, 4904, 4904, 242, 242, 242, 242, 1, 242, 4905, 242, 242, 242, 242, 1, 4906, 4906, 4908, 4907, 4907, 4906, 4906, 4906, 1, 4909, 4910, 4911, 4909, 4909, 4909, 4909, 4909, 1, 4912, 4913, 4913, 4912, 4912, 4912, 1, 4914, 4915, 4916, 4452, 4914, 4914, 4914, 1, 4917, 4918, 4917, 4917, 4917, 4917, 4917, 4917, 4917, 1, 4919, 4920, 4921, 4461, 4919, 4919, 4919, 4919, 4919, 4919, 4919, 1, 4922, 4922, 4922, 1, 4919, 4919, 4919, 1, 4914, 4915, 4916, 4452, 4923, 4923, 4914, 4914, 4914, 1, 4914, 4915, 4916, 4452, 4924, 4924, 4914, 4914, 4914, 1, 4914, 4915, 4916, 4452, 4925, 4925, 4914, 4914, 4914, 1, 4914, 4915, 4916, 4452, 4926, 4926, 4914, 4914, 4914, 1, 4927, 4915, 4916, 4452, 4914, 4914, 4914, 1, 4914, 4915, 4916, 4452, 4928, 4928, 4914, 4914, 4914, 1, 4914, 4915, 4916, 4452, 4929, 4929, 4914, 4914, 4914, 1, 4914, 4915, 4916, 4452, 4930, 4930, 4914, 4914, 4914, 1, 4914, 4915, 4916, 4452, 4931, 4931, 4914, 4914, 4914, 1, 4914, 4915, 4916, 4452, 4932, 4932, 4914, 4914, 4914, 1, 4914, 4915, 4916, 4452, 4933, 4933, 4914, 4914, 4914, 1, 4914, 4915, 4916, 4452, 4934, 4934, 4914, 4914, 4914, 1, 4914, 4915, 4935, 4452, 4914, 4914, 4914, 1, 4917, 4918, 4936, 4917, 4917, 4917, 4917, 4917, 4917, 4917, 4937, 4938, 4938, 1, 4919, 4920, 4919, 4919, 4921, 4461, 4919, 4919, 4919, 4919, 4939, 4919, 4939, 4940, 4919, 4919, 1, 4919, 4920, 4919, 4919, 4941, 4942, 4919, 4919, 4919, 4919, 4940, 4919, 4940, 4919, 4919, 1, 4919, 4920, 4943, 4944, 4919, 4919, 4921, 4461, 4919, 4919, 4943, 4919, 4919, 4945, 4945, 4945, 1, 4919, 4920, 4943, 4919, 4921, 4461, 4919, 4919, 4943, 4919, 4919, 4919, 4945, 4945, 4945, 1, 4919, 4920, 4919, 4921, 4461, 4919, 4919, 4919, 4919, 4919, 4919, 4945, 4946, 4946, 1, 4919, 4920, 4947, 4948, 4919, 4919, 4941, 4942, 4919, 4919, 4947, 4919, 4919, 4946, 4946, 4946, 1, 4919, 4920, 4947, 4919, 4921, 4461, 4919, 4919, 4947, 4919, 4919, 4919, 4946, 4946, 4946, 1, 4919, 4920, 4919, 4941, 4942, 4919, 4919, 4919, 4919, 4919, 4919, 4945, 4946, 4946, 1, 4909, 4909, 4949, 4949, 4909, 4909, 4909, 1, 4950, 4950, 4951, 1, 4910, 4911, 4951, 4951, 4951, 1, 4952, 4953, 4952, 4954, 4954, 4954, 4955, 4954, 4954, 4954, 4954, 4954, 4954, 1, 4956, 4957, 4956, 4954, 4954, 4954, 238, 4954, 4954, 4954, 4954, 4954, 4954, 1, 4958, 1, 4959, 4959, 1, 4959, 4959, 4954, 4954, 4954, 238, 4954, 4954, 4954, 4954, 4954, 4954, 1, 4965, 4966, 4967, 4968, 4960, 4961, 4962, 4963, 4964, 4965, 1, 4965, 1, 4960, 1, 4961, 1, 4962, 1, 4963, 1, 4969, 1, 4965, 4965, 1, 4970, 4971, 4970, 4955, 1, 4972, 4973, 4972, 238, 1, 4965, 4965, 4965, 1, 4952, 4953, 4952, 4954, 4954, 4954, 4954, 4974, 4975, 4955, 4954, 4974, 4974, 4974, 4954, 4974, 1, 4976, 4977, 4976, 4978, 4979, 4980, 4981, 4982, 4983, 4978, 4982, 4984, 4978, 4978, 4978, 4978, 4978, 4978, 1, 4976, 4977, 4976, 4978, 4979, 4980, 4985, 4983, 4978, 4986, 4978, 4978, 4978, 4978, 4978, 4978, 1, 4979, 4987, 4988, 4979, 4989, 4979, 4979, 4979, 4979, 4979, 4979, 1, 4990, 4990, 4990, 1, 4979, 4979, 4979, 1, 4988, 4991, 4988, 4989, 4988, 4988, 4988, 4988, 4988, 4988, 4988, 1, 4992, 4992, 4992, 1, 4988, 4988, 4988, 1, 4993, 4994, 4995, 4984, 4996, 4997, 4997, 1, 4998, 4999, 4998, 5000, 5000, 5000, 1, 4998, 4998, 5000, 5000, 5000, 1, 4998, 5001, 4998, 5000, 5000, 5000, 1, 5000, 4997, 4997, 1, 4976, 4977, 4976, 5002, 5003, 5004, 4983, 5002, 4997, 4997, 4997, 1, 5002, 5002, 4997, 4997, 4997, 1, 4976, 4977, 4976, 5004, 4983, 5000, 4997, 4997, 1, 5005, 5007, 5006, 5008, 1, 5009, 5010, 1, 5011, 5012, 1, 5013, 1, 4976, 4977, 4976, 4983, 1, 4976, 4977, 4976, 4983, 5013, 1, 4976, 4977, 4976, 4983, 5012, 1, 4976, 4977, 4976, 4983, 5008, 1, 4976, 4977, 4976, 4983, 5010, 1, 4976, 4977, 4976, 5014, 4983, 5008, 5010, 1, 4976, 4977, 4976, 5015, 4983, 5010, 5012, 1, 4976, 4977, 4976, 5016, 4983, 5012, 5013, 1, 4976, 4977, 4976, 4983, 5013, 1, 5017, 5018, 5019, 5020, 4997, 4997, 1, 4998, 5021, 4998, 5000, 5000, 5000, 1, 5022, 5023, 5024, 5025, 4997, 4997, 1, 4998, 5026, 4998, 5000, 5000, 5000, 1, 5027, 5028, 5029, 5030, 4997, 4997, 1, 4976, 4977, 4976, 4998, 5001, 5004, 4983, 4998, 5000, 5000, 5000, 1, 4976, 4977, 4976, 4998, 5001, 5004, 4983, 4998, 5030, 5000, 5000, 1, 4976, 4977, 4976, 4998, 5001, 5004, 4983, 4998, 5027, 5000, 5000, 1, 4976, 4977, 4976, 4998, 5001, 5031, 5004, 4983, 4998, 5030, 5027, 5000, 5000, 1, 4976, 4977, 4976, 4998, 5001, 5004, 4983, 4998, 5027, 5000, 5000, 5000, 1, 4998, 5026, 4998, 5025, 5000, 5000, 1, 4998, 5026, 4998, 5022, 5000, 5000, 1, 4998, 5026, 5032, 4998, 5025, 5022, 5000, 5000, 1, 4998, 5026, 4998, 5022, 5000, 5000, 5000, 1, 4998, 5021, 4998, 5020, 5000, 5000, 1, 4998, 5021, 4998, 5017, 5000, 5000, 1, 4998, 5021, 5033, 4998, 5020, 5017, 5000, 5000, 1, 4998, 5021, 4998, 5017, 5000, 5000, 5000, 1, 4998, 4999, 4998, 4996, 5000, 5000, 1, 4998, 4999, 4998, 4993, 5000, 5000, 1, 4998, 4999, 5034, 4998, 4996, 4993, 5000, 5000, 1, 4998, 4999, 4998, 4993, 5000, 5000, 5000, 1, 5036, 5035, 5035, 5035, 1, 5038, 5037, 5037, 5037, 1, 5038, 5039, 5039, 5039, 1, 5038, 5040, 5040, 5040, 1, 5038, 1, 5042, 5041, 5041, 5041, 1, 5044, 5043, 5043, 5043, 1, 5044, 5045, 5045, 5045, 1, 5044, 5046, 5046, 5046, 1, 5044, 1, 5048, 5047, 5047, 5047, 1, 5050, 5049, 5049, 5049, 1, 5050, 5051, 5051, 5051, 1, 5050, 5052, 5052, 5052, 1, 5050, 1, 5054, 5053, 5053, 5053, 1, 5056, 5055, 5055, 5055, 1, 5056, 5057, 5057, 5057, 1, 5056, 5058, 5058, 5058, 1, 5056, 1, 5060, 5059, 5059, 5059, 1, 5062, 5061, 5061, 5061, 1, 5062, 5063, 5063, 5063, 1, 5062, 5064, 5064, 5064, 1, 5062, 1, 5066, 5065, 5065, 5065, 1, 5068, 5067, 5067, 5067, 1, 5068, 5069, 5069, 5069, 1, 5068, 5070, 5070, 5070, 1, 5068, 1, 5071, 5072, 5073, 5075, 5074, 5076, 5076, 1, 5077, 5079, 5078, 5078, 5078, 1, 5080, 5081, 5082, 5083, 1, 5084, 1, 5085, 5086, 5087, 5088, 1, 5089, 1, 5090, 5091, 5092, 5093, 1, 5094, 1, 4976, 4977, 4976, 5004, 4983, 1, 5094, 5093, 1, 5094, 5090, 1, 5095, 5094, 5093, 5090, 1, 5094, 5090, 1, 5089, 5088, 1, 5089, 5085, 1, 5089, 5096, 5088, 5085, 1, 5089, 5085, 1, 5084, 5083, 1, 5084, 5080, 1, 5084, 5097, 5083, 5080, 1, 5084, 5080, 1, 5079, 5098, 5098, 5098, 1, 5079, 5099, 5099, 5099, 1, 5079, 1, 5090, 5100, 5100, 5100, 1, 5094, 5101, 5101, 5101, 1, 5094, 5102, 5102, 5102, 1, 5094, 5090, 5090, 5090, 1, 5077, 5079, 5103, 5078, 5078, 1, 5077, 5079, 5104, 5098, 5098, 1, 5077, 5079, 5099, 5099, 5099, 1, 5077, 5105, 5079, 5103, 5106, 5078, 5078, 1, 5077, 5079, 5104, 5098, 5098, 5098, 1, 5077, 5079, 5098, 5098, 5098, 1, 5077, 5079, 5106, 5078, 5078, 1, 5094, 5100, 5100, 5100, 1, 5079, 5078, 5078, 5078, 1, 5107, 5108, 5109, 5094, 5110, 5111, 5111, 1, 5077, 5113, 5094, 5112, 5112, 5112, 1, 5113, 5094, 5114, 5114, 5114, 1, 5113, 5094, 5115, 5115, 5115, 1, 5113, 5094, 1, 5100, 5100, 5100, 1, 5077, 5113, 5094, 5116, 5112, 5112, 1, 5077, 5113, 5094, 5117, 5114, 5114, 1, 5077, 5113, 5094, 5115, 5115, 5115, 1, 5077, 5118, 5113, 5094, 5116, 5119, 5112, 5112, 1, 5077, 5113, 5094, 5117, 5114, 5114, 5114, 1, 5077, 5113, 5094, 5114, 5114, 5114, 1, 5077, 5113, 5094, 5119, 5112, 5112, 1, 5113, 5094, 5112, 5112, 5112, 1, 5120, 5121, 5122, 5094, 5123, 5124, 5124, 1, 5077, 5126, 5094, 5125, 5125, 5125, 1, 5126, 5094, 5127, 5127, 5127, 1, 5126, 5094, 5128, 5128, 5128, 1, 5126, 5094, 1, 5107, 5108, 5109, 5110, 5111, 5111, 1, 5077, 5126, 5094, 5129, 5125, 5125, 1, 5077, 5126, 5094, 5130, 5127, 5127, 1, 5077, 5126, 5094, 5128, 5128, 5128, 1, 5077, 5131, 5126, 5094, 5129, 5132, 5125, 5125, 1, 5077, 5126, 5094, 5130, 5127, 5127, 5127, 1, 5077, 5126, 5094, 5127, 5127, 5127, 1, 5077, 5126, 5094, 5132, 5125, 5125, 1, 5126, 5094, 5125, 5125, 5125, 1, 5133, 5134, 5135, 5094, 5136, 5137, 5137, 1, 5077, 5139, 5094, 5138, 5138, 5138, 1, 5139, 5094, 5140, 5140, 5140, 1, 5139, 5094, 5141, 5141, 5141, 1, 5139, 5094, 1, 5120, 5121, 5122, 5123, 5124, 5124, 1, 5077, 5139, 5094, 5142, 5138, 5138, 1, 5077, 5139, 5094, 5143, 5140, 5140, 1, 5077, 5139, 5094, 5141, 5141, 5141, 1, 5077, 5144, 5139, 5094, 5142, 5145, 5138, 5138, 1, 5077, 5139, 5094, 5143, 5140, 5140, 5140, 1, 5077, 5139, 5094, 5140, 5140, 5140, 1, 5077, 5139, 5094, 5145, 5138, 5138, 1, 5139, 5094, 5138, 5138, 5138, 1, 5146, 5147, 5148, 5094, 5149, 5150, 5150, 1, 5077, 5152, 5094, 5151, 5151, 5151, 1, 5152, 5094, 5153, 5153, 5153, 1, 5152, 5094, 5154, 5154, 5154, 1, 5152, 5094, 1, 5133, 5134, 5135, 5136, 5137, 5137, 1, 5077, 5152, 5094, 5155, 5151, 5151, 1, 5077, 5152, 5094, 5156, 5153, 5153, 1, 5077, 5152, 5094, 5154, 5154, 5154, 1, 5077, 5157, 5152, 5094, 5155, 5158, 5151, 5151, 1, 5077, 5152, 5094, 5156, 5153, 5153, 5153, 1, 5077, 5152, 5094, 5153, 5153, 5153, 1, 5077, 5152, 5094, 5158, 5151, 5151, 1, 5152, 5094, 5151, 5151, 5151, 1, 5159, 5160, 5161, 5094, 5162, 5163, 5163, 1, 5077, 5165, 5094, 5164, 5164, 5164, 1, 5165, 5094, 5166, 5166, 5166, 1, 5165, 5094, 5167, 5167, 5167, 1, 5165, 5094, 1, 5146, 5147, 5148, 5149, 5150, 5150, 1, 5077, 5165, 5094, 5168, 5164, 5164, 1, 5077, 5165, 5094, 5169, 5166, 5166, 1, 5077, 5165, 5094, 5167, 5167, 5167, 1, 5077, 5170, 5165, 5094, 5168, 5171, 5164, 5164, 1, 5077, 5165, 5094, 5169, 5166, 5166, 5166, 1, 5077, 5165, 5094, 5166, 5166, 5166, 1, 5077, 5165, 5094, 5171, 5164, 5164, 1, 5165, 5094, 5164, 5164, 5164, 1, 5172, 1, 5173, 5174, 5175, 5094, 5176, 5177, 5177, 1, 5077, 5179, 5094, 5178, 5178, 5178, 1, 5179, 5094, 5180, 5180, 5180, 1, 5179, 5094, 5181, 5181, 5181, 1, 5179, 5094, 1, 5159, 5160, 5161, 5162, 5163, 5163, 1, 5077, 5179, 5094, 5182, 5178, 5178, 1, 5077, 5179, 5094, 5183, 5180, 5180, 1, 5077, 5179, 5094, 5181, 5181, 5181, 1, 5077, 5184, 5179, 5094, 5182, 5185, 5178, 5178, 1, 5077, 5179, 5094, 5183, 5180, 5180, 5180, 1, 5077, 5179, 5094, 5180, 5180, 5180, 1, 5077, 5179, 5094, 5185, 5178, 5178, 1, 5179, 5094, 5178, 5178, 5178, 1, 5186, 5186, 5186, 1, 4978, 4978, 4978, 1, 4976, 4977, 4976, 4985, 5187, 4982, 4982, 4983, 4985, 4986, 4985, 4985, 4985, 4985, 4985, 4985, 1, 5188, 5188, 5188, 1, 4985, 4985, 4985, 1, 4976, 4977, 4976, 4982, 5189, 4983, 4982, 4982, 4982, 4982, 4982, 4982, 4982, 1, 5190, 5190, 5190, 1, 4982, 4982, 4982, 1, 4976, 4977, 4976, 4982, 5189, 4983, 4982, 4984, 4982, 4982, 4982, 4982, 4982, 4982, 1, 4976, 4977, 4976, 4978, 4979, 4980, 5191, 4985, 4983, 4978, 4986, 4978, 4978, 4978, 4978, 4978, 4978, 1, 4976, 4977, 4976, 5192, 5193, 5194, 4985, 4983, 5192, 4986, 5195, 5192, 5192, 5192, 5192, 5192, 5192, 1, 4976, 4977, 4976, 5192, 5193, 5194, 5196, 4983, 5192, 5197, 5192, 5192, 5192, 5192, 5192, 5192, 1, 5193, 5198, 5199, 5193, 5200, 5193, 5193, 5193, 5193, 5193, 5193, 1, 5201, 5201, 5201, 1, 5193, 5193, 5193, 1, 5199, 5202, 5199, 5200, 5199, 5199, 5199, 5199, 5199, 5199, 5199, 1, 5203, 5203, 5203, 1, 5199, 5199, 5199, 1, 5204, 5205, 5206, 5195, 5207, 5208, 5208, 1, 5209, 5210, 5209, 5211, 5211, 5211, 1, 5209, 5209, 5211, 5211, 5211, 1, 5209, 5212, 5209, 5211, 5211, 5211, 1, 5211, 5208, 5208, 1, 4976, 4977, 4976, 5213, 5214, 4982, 5215, 4983, 5213, 5208, 5208, 5208, 1, 5213, 5213, 5208, 5208, 5208, 1, 4976, 4977, 4976, 4982, 5215, 4983, 5211, 5208, 5208, 1, 5216, 5218, 5217, 5219, 1, 5220, 5221, 1, 5222, 5223, 1, 5224, 1, 4976, 4977, 4976, 4982, 4983, 1, 4976, 4977, 4976, 4982, 4983, 5224, 1, 4976, 4977, 4976, 4982, 4983, 5223, 1, 4976, 4977, 4976, 4982, 4983, 5219, 1, 4976, 4977, 4976, 4982, 4983, 5221, 1, 4976, 4977, 4976, 4982, 5225, 4983, 5219, 5221, 1, 4976, 4977, 4976, 4982, 5226, 4983, 5221, 5223, 1, 4976, 4977, 4976, 4982, 5227, 4983, 5223, 5224, 1, 4976, 4977, 4976, 4982, 4983, 5224, 1, 5228, 5229, 5230, 5231, 5208, 5208, 1, 5209, 5232, 5209, 5211, 5211, 5211, 1, 5233, 5234, 5235, 5236, 5208, 5208, 1, 5209, 5237, 5209, 5211, 5211, 5211, 1, 5238, 5239, 5240, 5241, 5208, 5208, 1, 4976, 4977, 4976, 5209, 5212, 4982, 5215, 4983, 5209, 5211, 5211, 5211, 1, 4976, 4977, 4976, 5209, 5212, 4982, 5215, 4983, 5209, 5241, 5211, 5211, 1, 4976, 4977, 4976, 5209, 5212, 4982, 5215, 4983, 5209, 5238, 5211, 5211, 1, 4976, 4977, 4976, 5209, 5212, 4982, 5242, 5215, 4983, 5209, 5241, 5238, 5211, 5211, 1, 4976, 4977, 4976, 5209, 5212, 4982, 5215, 4983, 5209, 5238, 5211, 5211, 5211, 1, 5209, 5237, 5209, 5236, 5211, 5211, 1, 5209, 5237, 5209, 5233, 5211, 5211, 1, 5209, 5237, 5243, 5209, 5236, 5233, 5211, 5211, 1, 5209, 5237, 5209, 5233, 5211, 5211, 5211, 1, 5209, 5232, 5209, 5231, 5211, 5211, 1, 5209, 5232, 5209, 5228, 5211, 5211, 1, 5209, 5232, 5244, 5209, 5231, 5228, 5211, 5211, 1, 5209, 5232, 5209, 5228, 5211, 5211, 5211, 1, 5209, 5210, 5209, 5207, 5211, 5211, 1, 5209, 5210, 5209, 5204, 5211, 5211, 1, 5209, 5210, 5245, 5209, 5207, 5204, 5211, 5211, 1, 5209, 5210, 5209, 5204, 5211, 5211, 5211, 1, 5247, 5246, 5246, 5246, 1, 5249, 5248, 5248, 5248, 1, 5249, 5250, 5250, 5250, 1, 5249, 5251, 5251, 5251, 1, 5249, 1, 5253, 5252, 5252, 5252, 1, 5255, 5254, 5254, 5254, 1, 5255, 5256, 5256, 5256, 1, 5255, 5257, 5257, 5257, 1, 5255, 1, 5259, 5258, 5258, 5258, 1, 5261, 5260, 5260, 5260, 1, 5261, 5262, 5262, 5262, 1, 5261, 5263, 5263, 5263, 1, 5261, 1, 5265, 5264, 5264, 5264, 1, 5267, 5266, 5266, 5266, 1, 5267, 5268, 5268, 5268, 1, 5267, 5269, 5269, 5269, 1, 5267, 1, 5271, 5270, 5270, 5270, 1, 5273, 5272, 5272, 5272, 1, 5273, 5274, 5274, 5274, 1, 5273, 5275, 5275, 5275, 1, 5273, 1, 5277, 5276, 5276, 5276, 1, 5279, 5278, 5278, 5278, 1, 5279, 5280, 5280, 5280, 1, 5279, 5281, 5281, 5281, 1, 5279, 1, 5282, 5283, 5284, 5286, 5285, 5287, 5287, 1, 5288, 5290, 5289, 5289, 5289, 1, 5291, 5292, 5293, 5294, 1, 5295, 1, 5296, 5297, 5298, 5299, 1, 5300, 1, 5301, 5302, 5303, 5304, 1, 5305, 1, 4976, 4977, 4976, 4982, 5215, 4983, 1, 5305, 5304, 1, 5305, 5301, 1, 5306, 5305, 5304, 5301, 1, 5305, 5301, 1, 5300, 5299, 1, 5300, 5296, 1, 5300, 5307, 5299, 5296, 1, 5300, 5296, 1, 5295, 5294, 1, 5295, 5291, 1, 5295, 5308, 5294, 5291, 1, 5295, 5291, 1, 5290, 5309, 5309, 5309, 1, 5290, 5310, 5310, 5310, 1, 5290, 1, 5301, 5311, 5311, 5311, 1, 5305, 5312, 5312, 5312, 1, 5305, 5313, 5313, 5313, 1, 5305, 5301, 5301, 5301, 1, 5288, 5290, 5314, 5289, 5289, 1, 5288, 5290, 5315, 5309, 5309, 1, 5288, 5290, 5310, 5310, 5310, 1, 5288, 5316, 5290, 5314, 5317, 5289, 5289, 1, 5288, 5290, 5315, 5309, 5309, 5309, 1, 5288, 5290, 5309, 5309, 5309, 1, 5288, 5290, 5317, 5289, 5289, 1, 5305, 5311, 5311, 5311, 1, 5290, 5289, 5289, 5289, 1, 5318, 5319, 5320, 5305, 5321, 5322, 5322, 1, 5288, 5324, 5305, 5323, 5323, 5323, 1, 5324, 5305, 5325, 5325, 5325, 1, 5324, 5305, 5326, 5326, 5326, 1, 5324, 5305, 1, 5311, 5311, 5311, 1, 5288, 5324, 5305, 5327, 5323, 5323, 1, 5288, 5324, 5305, 5328, 5325, 5325, 1, 5288, 5324, 5305, 5326, 5326, 5326, 1, 5288, 5329, 5324, 5305, 5327, 5330, 5323, 5323, 1, 5288, 5324, 5305, 5328, 5325, 5325, 5325, 1, 5288, 5324, 5305, 5325, 5325, 5325, 1, 5288, 5324, 5305, 5330, 5323, 5323, 1, 5324, 5305, 5323, 5323, 5323, 1, 5331, 5332, 5333, 5305, 5334, 5335, 5335, 1, 5288, 5337, 5305, 5336, 5336, 5336, 1, 5337, 5305, 5338, 5338, 5338, 1, 5337, 5305, 5339, 5339, 5339, 1, 5337, 5305, 1, 5318, 5319, 5320, 5321, 5322, 5322, 1, 5288, 5337, 5305, 5340, 5336, 5336, 1, 5288, 5337, 5305, 5341, 5338, 5338, 1, 5288, 5337, 5305, 5339, 5339, 5339, 1, 5288, 5342, 5337, 5305, 5340, 5343, 5336, 5336, 1, 5288, 5337, 5305, 5341, 5338, 5338, 5338, 1, 5288, 5337, 5305, 5338, 5338, 5338, 1, 5288, 5337, 5305, 5343, 5336, 5336, 1, 5337, 5305, 5336, 5336, 5336, 1, 5344, 5345, 5346, 5305, 5347, 5348, 5348, 1, 5288, 5350, 5305, 5349, 5349, 5349, 1, 5350, 5305, 5351, 5351, 5351, 1, 5350, 5305, 5352, 5352, 5352, 1, 5350, 5305, 1, 5331, 5332, 5333, 5334, 5335, 5335, 1, 5288, 5350, 5305, 5353, 5349, 5349, 1, 5288, 5350, 5305, 5354, 5351, 5351, 1, 5288, 5350, 5305, 5352, 5352, 5352, 1, 5288, 5355, 5350, 5305, 5353, 5356, 5349, 5349, 1, 5288, 5350, 5305, 5354, 5351, 5351, 5351, 1, 5288, 5350, 5305, 5351, 5351, 5351, 1, 5288, 5350, 5305, 5356, 5349, 5349, 1, 5350, 5305, 5349, 5349, 5349, 1, 5357, 5358, 5359, 5305, 5360, 5361, 5361, 1, 5288, 5363, 5305, 5362, 5362, 5362, 1, 5363, 5305, 5364, 5364, 5364, 1, 5363, 5305, 5365, 5365, 5365, 1, 5363, 5305, 1, 5344, 5345, 5346, 5347, 5348, 5348, 1, 5288, 5363, 5305, 5366, 5362, 5362, 1, 5288, 5363, 5305, 5367, 5364, 5364, 1, 5288, 5363, 5305, 5365, 5365, 5365, 1, 5288, 5368, 5363, 5305, 5366, 5369, 5362, 5362, 1, 5288, 5363, 5305, 5367, 5364, 5364, 5364, 1, 5288, 5363, 5305, 5364, 5364, 5364, 1, 5288, 5363, 5305, 5369, 5362, 5362, 1, 5363, 5305, 5362, 5362, 5362, 1, 5370, 5371, 5372, 5305, 5373, 5374, 5374, 1, 5288, 5376, 5305, 5375, 5375, 5375, 1, 5376, 5305, 5377, 5377, 5377, 1, 5376, 5305, 5378, 5378, 5378, 1, 5376, 5305, 1, 5357, 5358, 5359, 5360, 5361, 5361, 1, 5288, 5376, 5305, 5379, 5375, 5375, 1, 5288, 5376, 5305, 5380, 5377, 5377, 1, 5288, 5376, 5305, 5378, 5378, 5378, 1, 5288, 5381, 5376, 5305, 5379, 5382, 5375, 5375, 1, 5288, 5376, 5305, 5380, 5377, 5377, 5377, 1, 5288, 5376, 5305, 5377, 5377, 5377, 1, 5288, 5376, 5305, 5382, 5375, 5375, 1, 5376, 5305, 5375, 5375, 5375, 1, 5383, 1, 5384, 5385, 5386, 5305, 5387, 5388, 5388, 1, 5288, 5390, 5305, 5389, 5389, 5389, 1, 5390, 5305, 5391, 5391, 5391, 1, 5390, 5305, 5392, 5392, 5392, 1, 5390, 5305, 1, 5370, 5371, 5372, 5373, 5374, 5374, 1, 5288, 5390, 5305, 5393, 5389, 5389, 1, 5288, 5390, 5305, 5394, 5391, 5391, 1, 5288, 5390, 5305, 5392, 5392, 5392, 1, 5288, 5395, 5390, 5305, 5393, 5396, 5389, 5389, 1, 5288, 5390, 5305, 5394, 5391, 5391, 5391, 1, 5288, 5390, 5305, 5391, 5391, 5391, 1, 5288, 5390, 5305, 5396, 5389, 5389, 1, 5390, 5305, 5389, 5389, 5389, 1, 5397, 5397, 5397, 1, 5192, 5192, 5192, 1, 4976, 4977, 4976, 5196, 5398, 4982, 4982, 4983, 5196, 5197, 5196, 5196, 5196, 5196, 5196, 5196, 1, 5399, 5399, 5399, 1, 5196, 5196, 5196, 1, 4976, 4977, 4976, 4982, 5189, 4983, 4982, 5195, 4982, 4982, 4982, 4982, 4982, 4982, 1, 4952, 4953, 4952, 4954, 4954, 4954, 4954, 4974, 4975, 4955, 5400, 5400, 4954, 4974, 4974, 4974, 4954, 4974, 1, 4952, 4953, 4952, 4954, 4954, 4954, 4954, 4974, 4975, 4955, 5401, 5401, 4954, 4974, 4974, 4974, 4954, 4974, 1, 4952, 4953, 4952, 4954, 4954, 4954, 4954, 4974, 5402, 4955, 5403, 5403, 4954, 4974, 4974, 4974, 4954, 4974, 1, 5404, 5405, 5406, 5407, 5408, 5404, 5411, 5404, 5404, 5404, 5404, 5409, 5410, 5410, 1, 5412, 5413, 5414, 5412, 5415, 5412, 5412, 5412, 5412, 5412, 5412, 1, 5416, 5416, 5416, 1, 5412, 5412, 5412, 1, 5414, 5417, 5414, 5415, 5414, 5414, 5414, 5414, 5414, 5414, 5414, 1, 5418, 5418, 5418, 1, 5414, 5414, 5414, 1, 5419, 5420, 5421, 5411, 5422, 5423, 5423, 1, 5424, 5425, 5424, 5426, 5426, 5426, 1, 5424, 5424, 5426, 5426, 5426, 1, 5424, 5427, 5424, 5426, 5426, 5426, 1, 5426, 5428, 5428, 1, 5429, 5430, 5429, 5431, 5432, 5433, 5434, 5431, 5428, 5428, 5428, 1, 5431, 5431, 5428, 5428, 5428, 1, 5429, 5430, 5429, 5433, 5434, 5426, 5428, 5428, 1, 5435, 5437, 5436, 5438, 1, 5439, 5440, 1, 5441, 5442, 1, 5443, 1, 5444, 5445, 5444, 5446, 1, 5444, 5445, 5444, 5446, 5443, 1, 5444, 5445, 5444, 5446, 5442, 1, 5444, 5445, 5444, 5446, 5447, 1, 5444, 5445, 5444, 5446, 5440, 1, 5444, 5445, 5444, 5448, 5446, 5447, 5440, 1, 5444, 5445, 5444, 5449, 5446, 5440, 5442, 1, 5444, 5445, 5444, 5450, 5446, 5442, 5443, 1, 5444, 5445, 5444, 5446, 5443, 1, 5451, 5452, 5453, 5454, 5428, 5428, 1, 5424, 5455, 5424, 5426, 5426, 5426, 1, 5456, 5457, 5458, 5459, 5428, 5428, 1, 5424, 5460, 5424, 5426, 5426, 5426, 1, 5461, 5462, 5463, 5464, 5428, 5428, 1, 5465, 5466, 5465, 5424, 5427, 5467, 5468, 5424, 5426, 5426, 5426, 1, 5465, 5466, 5465, 5424, 5427, 5467, 5468, 5424, 5464, 5426, 5426, 1, 5465, 5466, 5465, 5424, 5427, 5467, 5468, 5424, 5461, 5426, 5426, 1, 5465, 5466, 5465, 5424, 5427, 5469, 5467, 5468, 5424, 5464, 5461, 5426, 5426, 1, 5465, 5466, 5465, 5424, 5427, 5467, 5468, 5424, 5461, 5426, 5426, 5426, 1, 5424, 5460, 5424, 5459, 5426, 5426, 1, 5424, 5460, 5424, 5456, 5426, 5426, 1, 5424, 5460, 5470, 5424, 5459, 5456, 5426, 5426, 1, 5424, 5460, 5424, 5456, 5426, 5426, 5426, 1, 5424, 5455, 5424, 5454, 5426, 5426, 1, 5424, 5455, 5424, 5451, 5426, 5426, 1, 5424, 5455, 5471, 5424, 5454, 5451, 5426, 5426, 1, 5424, 5455, 5424, 5451, 5426, 5426, 5426, 1, 5424, 5425, 5424, 5472, 5426, 5426, 1, 5424, 5425, 5424, 5473, 5426, 5426, 1, 5424, 5425, 5474, 5424, 5472, 5473, 5426, 5426, 1, 5424, 5425, 5424, 5473, 5426, 5426, 5426, 1, 5476, 5475, 5475, 5475, 1, 5478, 5477, 5477, 5477, 1, 5478, 5479, 5479, 5479, 1, 5478, 5480, 5480, 5480, 1, 5478, 1, 5482, 5481, 5481, 5481, 1, 5484, 5483, 5483, 5483, 1, 5484, 5485, 5485, 5485, 1, 5484, 5486, 5486, 5486, 1, 5484, 1, 5488, 5487, 5487, 5487, 1, 5490, 5489, 5489, 5489, 1, 5490, 5491, 5491, 5491, 1, 5490, 5492, 5492, 5492, 1, 5490, 1, 5494, 5493, 5493, 5493, 1, 5496, 5495, 5495, 5495, 1, 5496, 5497, 5497, 5497, 1, 5496, 5498, 5498, 5498, 1, 5496, 1, 5500, 5499, 5499, 5499, 1, 5502, 5501, 5501, 5501, 1, 5502, 5503, 5503, 5503, 1, 5502, 5504, 5504, 5504, 1, 5502, 1, 5506, 5505, 5505, 5505, 1, 5508, 5507, 5507, 5507, 1, 5508, 5509, 5509, 5509, 1, 5508, 5510, 5510, 5510, 1, 5508, 1, 5511, 5512, 5513, 5515, 5514, 5516, 5516, 1, 5517, 5519, 5518, 5518, 5518, 1, 5520, 5521, 5522, 5523, 1, 5524, 1, 5525, 5526, 5527, 5528, 1, 5529, 1, 5530, 5531, 5532, 5533, 1, 5534, 1, 5535, 5536, 5535, 5537, 5538, 1, 5534, 5533, 1, 5534, 5530, 1, 5539, 5534, 5533, 5530, 1, 5534, 5530, 1, 5529, 5528, 1, 5529, 5525, 1, 5529, 5540, 5528, 5525, 1, 5529, 5525, 1, 5524, 5523, 1, 5524, 5520, 1, 5524, 5541, 5523, 5520, 1, 5524, 5520, 1, 5519, 5542, 5542, 5542, 1, 5519, 5543, 5543, 5543, 1, 5519, 1, 5530, 5544, 5544, 5544, 1, 5534, 5545, 5545, 5545, 1, 5534, 5546, 5546, 5546, 1, 5534, 5530, 5530, 5530, 1, 5517, 5519, 5547, 5518, 5518, 1, 5517, 5519, 5548, 5542, 5542, 1, 5517, 5519, 5543, 5543, 5543, 1, 5517, 5549, 5519, 5547, 5550, 5518, 5518, 1, 5517, 5519, 5548, 5542, 5542, 5542, 1, 5517, 5519, 5542, 5542, 5542, 1, 5517, 5519, 5550, 5518, 5518, 1, 5534, 5544, 5544, 5544, 1, 5519, 5518, 5518, 5518, 1, 5551, 5552, 5553, 5534, 5554, 5555, 5555, 1, 5517, 5557, 5534, 5556, 5556, 5556, 1, 5557, 5534, 5558, 5558, 5558, 1, 5557, 5534, 5559, 5559, 5559, 1, 5557, 5534, 1, 5544, 5544, 5544, 1, 5517, 5557, 5534, 5560, 5556, 5556, 1, 5517, 5557, 5534, 5561, 5558, 5558, 1, 5517, 5557, 5534, 5559, 5559, 5559, 1, 5517, 5562, 5557, 5534, 5560, 5563, 5556, 5556, 1, 5517, 5557, 5534, 5561, 5558, 5558, 5558, 1, 5517, 5557, 5534, 5558, 5558, 5558, 1, 5517, 5557, 5534, 5563, 5556, 5556, 1, 5557, 5534, 5556, 5556, 5556, 1, 5564, 5565, 5566, 5534, 5567, 5568, 5568, 1, 5517, 5570, 5534, 5569, 5569, 5569, 1, 5570, 5534, 5571, 5571, 5571, 1, 5570, 5534, 5572, 5572, 5572, 1, 5570, 5534, 1, 5551, 5552, 5553, 5554, 5555, 5555, 1, 5517, 5570, 5534, 5573, 5569, 5569, 1, 5517, 5570, 5534, 5574, 5571, 5571, 1, 5517, 5570, 5534, 5572, 5572, 5572, 1, 5517, 5575, 5570, 5534, 5573, 5576, 5569, 5569, 1, 5517, 5570, 5534, 5574, 5571, 5571, 5571, 1, 5517, 5570, 5534, 5571, 5571, 5571, 1, 5517, 5570, 5534, 5576, 5569, 5569, 1, 5570, 5534, 5569, 5569, 5569, 1, 5577, 5578, 5579, 5534, 5580, 5581, 5581, 1, 5517, 5583, 5534, 5582, 5582, 5582, 1, 5583, 5534, 5584, 5584, 5584, 1, 5583, 5534, 5585, 5585, 5585, 1, 5583, 5534, 1, 5564, 5565, 5566, 5567, 5568, 5568, 1, 5517, 5583, 5534, 5586, 5582, 5582, 1, 5517, 5583, 5534, 5587, 5584, 5584, 1, 5517, 5583, 5534, 5585, 5585, 5585, 1, 5517, 5588, 5583, 5534, 5586, 5589, 5582, 5582, 1, 5517, 5583, 5534, 5587, 5584, 5584, 5584, 1, 5517, 5583, 5534, 5584, 5584, 5584, 1, 5517, 5583, 5534, 5589, 5582, 5582, 1, 5583, 5534, 5582, 5582, 5582, 1, 5590, 5591, 5592, 5534, 5593, 5594, 5594, 1, 5517, 5596, 5534, 5595, 5595, 5595, 1, 5596, 5534, 5597, 5597, 5597, 1, 5596, 5534, 5598, 5598, 5598, 1, 5596, 5534, 1, 5577, 5578, 5579, 5580, 5581, 5581, 1, 5517, 5596, 5534, 5599, 5595, 5595, 1, 5517, 5596, 5534, 5600, 5597, 5597, 1, 5517, 5596, 5534, 5598, 5598, 5598, 1, 5517, 5601, 5596, 5534, 5599, 5602, 5595, 5595, 1, 5517, 5596, 5534, 5600, 5597, 5597, 5597, 1, 5517, 5596, 5534, 5597, 5597, 5597, 1, 5517, 5596, 5534, 5602, 5595, 5595, 1, 5596, 5534, 5595, 5595, 5595, 1, 5603, 5604, 5605, 5534, 5606, 5607, 5607, 1, 5517, 5609, 5534, 5608, 5608, 5608, 1, 5609, 5534, 5610, 5610, 5610, 1, 5609, 5534, 5611, 5611, 5611, 1, 5609, 5534, 1, 5590, 5591, 5592, 5593, 5594, 5594, 1, 5517, 5609, 5534, 5612, 5608, 5608, 1, 5517, 5609, 5534, 5613, 5610, 5610, 1, 5517, 5609, 5534, 5611, 5611, 5611, 1, 5517, 5614, 5609, 5534, 5612, 5615, 5608, 5608, 1, 5517, 5609, 5534, 5613, 5610, 5610, 5610, 1, 5517, 5609, 5534, 5610, 5610, 5610, 1, 5517, 5609, 5534, 5615, 5608, 5608, 1, 5609, 5534, 5608, 5608, 5608, 1, 5616, 1, 5617, 5618, 5619, 5534, 5620, 5621, 5621, 1, 5517, 5623, 5534, 5622, 5622, 5622, 1, 5623, 5534, 5624, 5624, 5624, 1, 5623, 5534, 5625, 5625, 5625, 1, 5623, 5534, 1, 5603, 5604, 5605, 5606, 5607, 5607, 1, 5517, 5623, 5534, 5626, 5622, 5622, 1, 5517, 5623, 5534, 5627, 5624, 5624, 1, 5517, 5623, 5534, 5625, 5625, 5625, 1, 5517, 5628, 5623, 5534, 5626, 5629, 5622, 5622, 1, 5517, 5623, 5534, 5627, 5624, 5624, 5624, 1, 5517, 5623, 5534, 5624, 5624, 5624, 1, 5517, 5623, 5534, 5629, 5622, 5622, 1, 5623, 5534, 5622, 5622, 5622, 1, 5412, 5413, 5630, 5631, 5412, 5414, 5412, 5415, 5630, 5412, 5412, 5632, 5632, 5632, 1, 5412, 5413, 5630, 5414, 5412, 5415, 5630, 5412, 5412, 5412, 5632, 5632, 5632, 1, 5412, 5413, 5630, 5633, 5412, 5414, 5412, 5415, 5630, 5412, 5412, 5632, 5632, 5632, 1, 5412, 5413, 5414, 5412, 5415, 5412, 5412, 5412, 5412, 5632, 5634, 5634, 1, 5429, 5430, 5429, 5412, 5413, 5635, 5636, 5412, 5637, 5434, 5412, 5415, 5635, 5412, 5412, 5634, 5634, 5634, 1, 5412, 5413, 5635, 5414, 5412, 5415, 5635, 5412, 5412, 5412, 5634, 5634, 5634, 1, 5429, 5430, 5429, 5412, 5413, 5637, 5434, 5412, 5415, 5412, 5412, 5412, 5412, 5632, 5634, 5634, 1, 5414, 5417, 5638, 5640, 5414, 5415, 5414, 5414, 5414, 5414, 5639, 5641, 5414, 5414, 1, 5414, 5417, 5642, 5414, 5415, 5414, 5414, 5414, 5414, 5643, 5414, 5414, 1, 5414, 5417, 5644, 5414, 5415, 5414, 5414, 5414, 5414, 5645, 5414, 5414, 1, 5414, 5417, 5414, 5414, 5415, 5414, 5414, 5414, 5414, 5646, 5414, 5414, 1, 5444, 5445, 5444, 5414, 5417, 5446, 5414, 5415, 5414, 5414, 5414, 5414, 5414, 5414, 5414, 1, 5444, 5445, 5444, 5414, 5417, 5446, 5414, 5415, 5414, 5414, 5414, 5414, 5646, 5414, 5414, 1, 5444, 5445, 5444, 5414, 5417, 5446, 5414, 5415, 5414, 5414, 5414, 5414, 5645, 5414, 5414, 1, 5444, 5445, 5444, 5414, 5417, 5446, 5414, 5415, 5414, 5414, 5414, 5414, 5647, 5414, 5414, 1, 5444, 5445, 5444, 5414, 5417, 5446, 5414, 5415, 5414, 5414, 5414, 5414, 5643, 5414, 5414, 1, 5444, 5445, 5444, 5414, 5417, 5648, 5446, 5414, 5415, 5414, 5414, 5414, 5414, 5647, 5643, 5414, 5414, 1, 5444, 5445, 5444, 5414, 5417, 5649, 5446, 5414, 5415, 5414, 5414, 5414, 5414, 5643, 5645, 5414, 5414, 1, 5444, 5445, 5444, 5414, 5417, 5650, 5446, 5414, 5415, 5414, 5414, 5414, 5414, 5645, 5646, 5414, 5414, 1, 5444, 5445, 5444, 5414, 5417, 5446, 5414, 5415, 5414, 5414, 5414, 5414, 5646, 5414, 5414, 5414, 1, 5412, 5413, 5651, 5652, 5653, 5414, 5412, 5415, 5412, 5412, 5412, 5412, 5654, 5634, 5634, 1, 5412, 5413, 5630, 5655, 5412, 5414, 5412, 5415, 5630, 5412, 5412, 5632, 5632, 5632, 1, 5412, 5413, 5656, 5657, 5658, 5414, 5412, 5415, 5412, 5412, 5412, 5412, 5659, 5634, 5634, 1, 5412, 5413, 5630, 5660, 5412, 5414, 5412, 5415, 5630, 5412, 5412, 5632, 5632, 5632, 1, 5412, 5413, 5661, 5662, 5663, 5414, 5412, 5415, 5412, 5412, 5412, 5412, 5664, 5634, 5634, 1, 5465, 5466, 5465, 5412, 5413, 5630, 5633, 5412, 5665, 5468, 5412, 5415, 5630, 5412, 5412, 5632, 5632, 5632, 1, 5465, 5466, 5465, 5412, 5413, 5630, 5633, 5412, 5665, 5468, 5412, 5415, 5630, 5412, 5412, 5664, 5632, 5632, 1, 5465, 5466, 5465, 5412, 5413, 5630, 5633, 5412, 5665, 5468, 5412, 5415, 5630, 5412, 5412, 5661, 5632, 5632, 1, 5465, 5466, 5465, 5412, 5413, 5630, 5633, 5412, 5666, 5665, 5468, 5412, 5415, 5630, 5412, 5412, 5664, 5661, 5632, 5632, 1, 5465, 5466, 5465, 5412, 5413, 5630, 5633, 5412, 5665, 5468, 5412, 5415, 5630, 5412, 5412, 5661, 5632, 5632, 5632, 1, 5412, 5413, 5630, 5660, 5412, 5414, 5412, 5415, 5630, 5412, 5412, 5659, 5632, 5632, 1, 5412, 5413, 5630, 5660, 5412, 5414, 5412, 5415, 5630, 5412, 5412, 5656, 5632, 5632, 1, 5412, 5413, 5630, 5660, 5412, 5667, 5414, 5412, 5415, 5630, 5412, 5412, 5659, 5656, 5632, 5632, 1, 5412, 5413, 5630, 5660, 5412, 5414, 5412, 5415, 5630, 5412, 5412, 5656, 5632, 5632, 5632, 1, 5412, 5413, 5630, 5655, 5412, 5414, 5412, 5415, 5630, 5412, 5412, 5654, 5632, 5632, 1, 5412, 5413, 5630, 5655, 5412, 5414, 5412, 5415, 5630, 5412, 5412, 5651, 5632, 5632, 1, 5412, 5413, 5630, 5655, 5412, 5668, 5414, 5412, 5415, 5630, 5412, 5412, 5654, 5651, 5632, 5632, 1, 5412, 5413, 5630, 5655, 5412, 5414, 5412, 5415, 5630, 5412, 5412, 5651, 5632, 5632, 5632, 1, 5412, 5413, 5630, 5631, 5412, 5414, 5412, 5415, 5630, 5412, 5412, 5669, 5632, 5632, 1, 5412, 5413, 5630, 5631, 5412, 5414, 5412, 5415, 5630, 5412, 5412, 5670, 5632, 5632, 1, 5412, 5413, 5630, 5631, 5412, 5671, 5414, 5412, 5415, 5630, 5412, 5412, 5669, 5670, 5632, 5632, 1, 5412, 5413, 5630, 5631, 5412, 5414, 5412, 5415, 5630, 5412, 5412, 5670, 5632, 5632, 5632, 1, 4952, 4953, 4952, 4954, 4954, 4954, 4954, 4974, 5672, 4955, 4954, 4974, 4974, 4974, 4954, 4974, 1, 4952, 4953, 4952, 4954, 4954, 4954, 4954, 4974, 4975, 4955, 5673, 5673, 4954, 4974, 4974, 4974, 4954, 4974, 1, 4952, 4953, 4952, 4954, 4954, 4954, 4954, 4974, 4975, 4955, 5674, 5674, 4954, 4974, 4974, 4974, 4954, 4974, 1, 4952, 4953, 4952, 4954, 4954, 4954, 4954, 4974, 5675, 4955, 4954, 4974, 4974, 4974, 4954, 4974, 1, 5676, 5676, 5678, 5677, 5677, 5676, 5676, 5676, 1, 5679, 5680, 5679, 5681, 5682, 5681, 5681, 5681, 5681, 5681, 1, 5681, 5681, 5683, 5683, 5681, 5681, 5681, 1, 5684, 5684, 5685, 1, 5679, 5680, 5679, 5682, 5685, 5685, 5685, 1, 60, 60, 61, 61, 61, 62, 5686, 5686, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 5687, 5687, 61, 61, 61, 61, 61, 61, 1, 219, 219, 61, 61, 61, 220, 61, 61, 61, 61, 61, 61, 1, 5694, 5695, 5696, 1, 73, 5688, 5689, 5690, 5691, 5692, 1, 1, 5693, 5693, 1, 5688, 1, 5689, 1, 5690, 1, 5691, 1, 5697, 1, 5693, 46, 5693, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 5698, 5699, 5698, 214, 1, 74, 75, 76, 77, 78, 1, 73, 5700, 5701, 5700, 123, 1, 74, 75, 76, 77, 78, 1, 73, 1, 79, 5702, 73, 74, 75, 76, 77, 78, 1, 5702, 5702, 5693, 5702, 5708, 5709, 5710, 5703, 5704, 5705, 5706, 5707, 5702, 1, 5702, 1, 5703, 1, 5704, 1, 5705, 1, 5706, 1, 5711, 1, 5702, 5702, 1, 5712, 5713, 5712, 5714, 1, 5715, 5716, 5715, 5717, 1, 5718, 1, 5719, 5719, 1, 5719, 5719, 5717, 1, 5720, 5720, 1, 5721, 5721, 1, 5722, 5722, 1, 5723, 5724, 5724, 1, 5725, 5726, 5727, 5728, 5729, 5725, 5725, 5725, 5732, 5725, 5725, 5725, 5730, 5731, 5731, 1, 5733, 5734, 5735, 5733, 5736, 5733, 5733, 5733, 5733, 5733, 1, 5737, 5737, 5737, 1, 5733, 5733, 5733, 1, 5735, 5738, 5735, 5736, 5735, 5735, 5735, 5735, 5735, 5735, 1, 5739, 5739, 5739, 1, 5735, 5735, 5735, 1, 5740, 5741, 5742, 5732, 5743, 5744, 5744, 1, 5745, 5746, 5745, 5747, 5747, 5747, 1, 5745, 5745, 5747, 5747, 5747, 1, 5745, 5748, 5745, 5747, 5747, 5747, 1, 5747, 5749, 5749, 1, 5750, 5751, 5752, 5753, 5754, 5755, 5750, 5749, 5749, 5749, 1, 5750, 5750, 5749, 5749, 5749, 1, 5752, 5753, 5754, 5755, 5747, 5749, 5749, 1, 5756, 5758, 5757, 5759, 1, 5760, 5761, 1, 5762, 5763, 1, 5764, 1, 5765, 5766, 5767, 1, 5768, 5769, 5770, 5771, 5772, 5768, 5768, 5770, 5771, 5772, 5768, 5768, 5768, 5768, 5768, 1, 5773, 5774, 5775, 5776, 5777, 5778, 5773, 5773, 5773, 5773, 5773, 5773, 5773, 1, 5779, 5779, 5779, 1, 5773, 5773, 5773, 1, 5780, 5781, 5775, 5782, 5777, 5778, 5780, 5780, 5780, 5780, 5780, 5780, 5780, 1, 5783, 5784, 5785, 5786, 5787, 5783, 5783, 5783, 5783, 5783, 5783, 5783, 1, 5788, 5788, 5788, 1, 5783, 5783, 5783, 1, 5789, 5790, 5789, 5791, 5792, 1, 5793, 5794, 5793, 5795, 5796, 1, 5797, 1, 5798, 5798, 1, 5798, 5798, 5795, 5796, 1, 5795, 5799, 5795, 5800, 5801, 5800, 5800, 5802, 5803, 5803, 5800, 5800, 5800, 5800, 5800, 5800, 1, 5804, 1, 5805, 5805, 1, 5805, 5806, 5805, 5800, 5801, 5800, 5800, 5802, 5803, 5803, 5800, 5800, 5800, 5800, 5800, 5800, 1, 5807, 5808, 5807, 5809, 5809, 5809, 5714, 5809, 5809, 5809, 5809, 5809, 5809, 1, 5810, 5811, 5810, 5809, 5809, 5809, 5717, 5809, 5809, 5809, 5809, 5809, 5809, 1, 5812, 1, 5813, 5813, 1, 5813, 5813, 5809, 5809, 5809, 5717, 5809, 5809, 5809, 5809, 5809, 5809, 1, 5807, 5808, 5807, 5809, 5809, 5809, 5714, 5814, 5814, 5809, 5809, 5809, 5809, 5809, 5809, 1, 5807, 5808, 5807, 5809, 5809, 5809, 5714, 5815, 5815, 5809, 5809, 5809, 5809, 5809, 5809, 1, 5807, 5808, 5807, 5809, 5809, 5809, 5816, 5714, 5817, 5817, 5809, 5809, 5809, 5809, 5809, 5809, 1, 5818, 5819, 5820, 5821, 5822, 5818, 5825, 5818, 5818, 5818, 5818, 5823, 5824, 5824, 1, 5826, 5827, 5828, 5826, 5829, 5826, 5826, 5826, 5826, 5826, 5826, 1, 5830, 5830, 5830, 1, 5826, 5826, 5826, 1, 5828, 5831, 5828, 5829, 5828, 5828, 5828, 5828, 5828, 5828, 5828, 1, 5832, 5832, 5832, 1, 5828, 5828, 5828, 1, 5833, 5834, 5835, 5825, 5836, 5837, 5837, 1, 5838, 5839, 5838, 5840, 5840, 5840, 1, 5838, 5838, 5840, 5840, 5840, 1, 5838, 5841, 5838, 5840, 5840, 5840, 1, 5840, 5842, 5842, 1, 5843, 5844, 5843, 5845, 5846, 5847, 5848, 5849, 5846, 5842, 5842, 5842, 1, 5850, 1, 5798, 46, 5798, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 5846, 5846, 5842, 5842, 5842, 1, 5843, 5844, 5843, 5845, 5848, 5849, 5840, 5842, 5842, 1, 5851, 5853, 5852, 5854, 1, 5855, 5856, 1, 5857, 5858, 1, 5859, 1, 5860, 5861, 5860, 5862, 5863, 1, 5796, 5864, 5796, 5865, 5865, 5865, 5866, 5866, 5865, 5865, 5865, 5865, 5865, 5865, 1, 5867, 1, 5868, 5868, 1, 5868, 5868, 5865, 5865, 5865, 5866, 5866, 5865, 5865, 5865, 5865, 5865, 5865, 1, 5869, 5870, 5869, 5865, 5865, 5865, 5871, 5796, 5872, 5865, 5865, 5865, 5865, 5865, 1, 5873, 5874, 5873, 5795, 5796, 5872, 1, 5875, 1, 5876, 5876, 1, 5876, 5876, 5795, 5796, 5872, 1, 5872, 5877, 5872, 5878, 5879, 5878, 5878, 5880, 5878, 5878, 5878, 5878, 5878, 5878, 1, 5881, 1, 5882, 5882, 1, 5882, 5882, 5878, 5879, 5878, 5878, 5880, 5878, 5878, 5878, 5878, 5878, 5878, 1, 5883, 5884, 5883, 5878, 5878, 5878, 5871, 5796, 5878, 5878, 5878, 5878, 5878, 1, 5879, 5890, 5891, 5892, 5885, 5886, 5887, 5888, 5889, 5879, 1, 5879, 1, 5885, 1, 5886, 1, 5887, 1, 5888, 1, 5893, 1, 5879, 5879, 1, 5883, 5884, 5883, 5871, 5796, 1, 5879, 5879, 5879, 1, 5895, 5894, 5894, 5894, 1, 5897, 5896, 5896, 5896, 1, 5897, 5898, 5898, 5898, 1, 5897, 5899, 5899, 5899, 1, 5897, 1, 5901, 5900, 5900, 5900, 1, 5903, 5902, 5902, 5902, 1, 5903, 5904, 5904, 5904, 1, 5903, 5905, 5905, 5905, 1, 5903, 1, 5907, 5906, 5906, 5906, 1, 5909, 5908, 5908, 5908, 1, 5909, 5910, 5910, 5910, 1, 5909, 5911, 5911, 5911, 1, 5909, 1, 5913, 5912, 5912, 5912, 1, 5915, 5914, 5914, 5914, 1, 5915, 5916, 5916, 5916, 1, 5915, 5917, 5917, 5917, 1, 5915, 1, 5919, 5918, 5918, 5918, 1, 5921, 5920, 5920, 5920, 1, 5921, 5922, 5922, 5922, 1, 5921, 5923, 5923, 5923, 1, 5921, 1, 5925, 5924, 5924, 5924, 1, 5927, 5926, 5926, 5926, 1, 5927, 5928, 5928, 5928, 1, 5927, 5929, 5929, 5929, 1, 5927, 1, 5930, 5931, 5932, 5934, 5933, 5935, 5935, 1, 5936, 5938, 5937, 5937, 5937, 1, 5939, 5940, 5941, 5942, 1, 5943, 1, 5944, 5945, 5946, 5947, 1, 5948, 1, 5949, 5950, 5951, 5952, 1, 5891, 1, 5891, 5952, 1, 5891, 5949, 1, 5953, 5891, 5952, 5949, 1, 5891, 5949, 1, 5948, 5947, 1, 5948, 5944, 1, 5948, 5954, 5947, 5944, 1, 5948, 5944, 1, 5943, 5942, 1, 5943, 5939, 1, 5943, 5955, 5942, 5939, 1, 5943, 5939, 1, 5938, 5956, 5956, 5956, 1, 5938, 5957, 5957, 5957, 1, 5938, 1, 5949, 5958, 5958, 5958, 1, 5891, 5959, 5959, 5959, 1, 5891, 5960, 5960, 5960, 1, 5891, 5949, 5949, 5949, 1, 5936, 5938, 5961, 5937, 5937, 1, 5936, 5938, 5962, 5956, 5956, 1, 5936, 5938, 5957, 5957, 5957, 1, 5936, 5963, 5938, 5961, 5964, 5937, 5937, 1, 5936, 5938, 5962, 5956, 5956, 5956, 1, 5936, 5938, 5956, 5956, 5956, 1, 5936, 5938, 5964, 5937, 5937, 1, 5891, 5958, 5958, 5958, 1, 5938, 5937, 5937, 5937, 1, 5965, 5966, 5967, 5891, 5968, 5969, 5969, 1, 5936, 5971, 5891, 5970, 5970, 5970, 1, 5971, 5891, 5972, 5972, 5972, 1, 5971, 5891, 5973, 5973, 5973, 1, 5971, 5891, 1, 5958, 5958, 5958, 1, 5936, 5971, 5891, 5974, 5970, 5970, 1, 5936, 5971, 5891, 5975, 5972, 5972, 1, 5936, 5971, 5891, 5973, 5973, 5973, 1, 5936, 5976, 5971, 5891, 5974, 5977, 5970, 5970, 1, 5936, 5971, 5891, 5975, 5972, 5972, 5972, 1, 5936, 5971, 5891, 5972, 5972, 5972, 1, 5936, 5971, 5891, 5977, 5970, 5970, 1, 5971, 5891, 5970, 5970, 5970, 1, 5978, 5979, 5980, 5891, 5981, 5982, 5982, 1, 5936, 5984, 5891, 5983, 5983, 5983, 1, 5984, 5891, 5985, 5985, 5985, 1, 5984, 5891, 5986, 5986, 5986, 1, 5984, 5891, 1, 5965, 5966, 5967, 5968, 5969, 5969, 1, 5936, 5984, 5891, 5987, 5983, 5983, 1, 5936, 5984, 5891, 5988, 5985, 5985, 1, 5936, 5984, 5891, 5986, 5986, 5986, 1, 5936, 5989, 5984, 5891, 5987, 5990, 5983, 5983, 1, 5936, 5984, 5891, 5988, 5985, 5985, 5985, 1, 5936, 5984, 5891, 5985, 5985, 5985, 1, 5936, 5984, 5891, 5990, 5983, 5983, 1, 5984, 5891, 5983, 5983, 5983, 1, 5991, 5992, 5993, 5891, 5994, 5995, 5995, 1, 5936, 5997, 5891, 5996, 5996, 5996, 1, 5997, 5891, 5998, 5998, 5998, 1, 5997, 5891, 5999, 5999, 5999, 1, 5997, 5891, 1, 5978, 5979, 5980, 5981, 5982, 5982, 1, 5936, 5997, 5891, 6000, 5996, 5996, 1, 5936, 5997, 5891, 6001, 5998, 5998, 1, 5936, 5997, 5891, 5999, 5999, 5999, 1, 5936, 6002, 5997, 5891, 6000, 6003, 5996, 5996, 1, 5936, 5997, 5891, 6001, 5998, 5998, 5998, 1, 5936, 5997, 5891, 5998, 5998, 5998, 1, 5936, 5997, 5891, 6003, 5996, 5996, 1, 5997, 5891, 5996, 5996, 5996, 1, 6004, 6005, 6006, 5891, 6007, 6008, 6008, 1, 5936, 6010, 5891, 6009, 6009, 6009, 1, 6010, 5891, 6011, 6011, 6011, 1, 6010, 5891, 6012, 6012, 6012, 1, 6010, 5891, 1, 5991, 5992, 5993, 5994, 5995, 5995, 1, 5936, 6010, 5891, 6013, 6009, 6009, 1, 5936, 6010, 5891, 6014, 6011, 6011, 1, 5936, 6010, 5891, 6012, 6012, 6012, 1, 5936, 6015, 6010, 5891, 6013, 6016, 6009, 6009, 1, 5936, 6010, 5891, 6014, 6011, 6011, 6011, 1, 5936, 6010, 5891, 6011, 6011, 6011, 1, 5936, 6010, 5891, 6016, 6009, 6009, 1, 6010, 5891, 6009, 6009, 6009, 1, 6017, 6018, 6019, 5891, 6020, 6021, 6021, 1, 5936, 6023, 5891, 6022, 6022, 6022, 1, 6023, 5891, 6024, 6024, 6024, 1, 6023, 5891, 6025, 6025, 6025, 1, 6023, 5891, 1, 6004, 6005, 6006, 6007, 6008, 6008, 1, 5936, 6023, 5891, 6026, 6022, 6022, 1, 5936, 6023, 5891, 6027, 6024, 6024, 1, 5936, 6023, 5891, 6025, 6025, 6025, 1, 5936, 6028, 6023, 5891, 6026, 6029, 6022, 6022, 1, 5936, 6023, 5891, 6027, 6024, 6024, 6024, 1, 5936, 6023, 5891, 6024, 6024, 6024, 1, 5936, 6023, 5891, 6029, 6022, 6022, 1, 6023, 5891, 6022, 6022, 6022, 1, 6030, 1, 6031, 6032, 6033, 5891, 6034, 6035, 6035, 1, 5936, 6037, 5891, 6036, 6036, 6036, 1, 6037, 5891, 6038, 6038, 6038, 1, 6037, 5891, 6039, 6039, 6039, 1, 6037, 5891, 1, 6017, 6018, 6019, 6020, 6021, 6021, 1, 5936, 6037, 5891, 6040, 6036, 6036, 1, 5936, 6037, 5891, 6041, 6038, 6038, 1, 5936, 6037, 5891, 6039, 6039, 6039, 1, 5936, 6042, 6037, 5891, 6040, 6043, 6036, 6036, 1, 5936, 6037, 5891, 6041, 6038, 6038, 6038, 1, 5936, 6037, 5891, 6038, 6038, 6038, 1, 5936, 6037, 5891, 6043, 6036, 6036, 1, 6037, 5891, 6036, 6036, 6036, 1, 6044, 1, 5876, 46, 5876, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 5869, 5870, 5869, 5865, 5865, 5865, 5871, 5796, 5872, 6045, 6045, 5865, 5865, 5865, 5865, 5865, 1, 5869, 5870, 5869, 5865, 5865, 5865, 5871, 5796, 5872, 6046, 6046, 5865, 5865, 5865, 5865, 5865, 1, 5869, 5870, 5869, 5865, 5865, 5865, 5871, 6047, 5796, 5872, 5865, 5865, 5865, 5865, 5865, 1, 5869, 5870, 5869, 5865, 5865, 5865, 5871, 5796, 5872, 6048, 6048, 5865, 5865, 5865, 5865, 5865, 1, 5869, 5870, 5869, 5865, 5865, 5865, 5871, 5796, 5872, 6049, 6049, 5865, 5865, 5865, 5865, 5865, 1, 6050, 6051, 6050, 5865, 5865, 5865, 6052, 6053, 6054, 5865, 5865, 5865, 5865, 5865, 1, 5860, 5861, 5860, 5862, 5863, 5859, 1, 5860, 5861, 5860, 5862, 5863, 5858, 1, 5860, 5861, 5860, 5862, 5863, 6055, 1, 5860, 5861, 5860, 5862, 5863, 5856, 1, 5860, 5861, 5860, 5862, 6056, 5863, 6055, 5856, 1, 5860, 5861, 5860, 5862, 6057, 5863, 5856, 5858, 1, 5860, 5861, 5860, 5862, 6058, 5863, 5858, 5859, 1, 5860, 5861, 5860, 5862, 5863, 5859, 1, 6059, 6060, 6061, 6062, 5842, 5842, 1, 5838, 6063, 5838, 5840, 5840, 5840, 1, 6064, 6065, 6066, 6067, 5842, 5842, 1, 5838, 6068, 5838, 5840, 5840, 5840, 1, 6069, 6070, 6071, 6072, 5842, 5842, 1, 6073, 6074, 6073, 6075, 5838, 5841, 6076, 6077, 5838, 5840, 5840, 5840, 1, 6073, 6074, 6073, 6075, 5838, 5841, 6076, 6077, 5838, 6072, 5840, 5840, 1, 6073, 6074, 6073, 6075, 5838, 5841, 6076, 6077, 5838, 6069, 5840, 5840, 1, 6073, 6074, 6073, 6075, 5838, 5841, 6078, 6076, 6077, 5838, 6072, 6069, 5840, 5840, 1, 6073, 6074, 6073, 6075, 5838, 5841, 6076, 6077, 5838, 6069, 5840, 5840, 5840, 1, 5838, 6068, 5838, 6067, 5840, 5840, 1, 5838, 6068, 5838, 6064, 5840, 5840, 1, 5838, 6068, 6079, 5838, 6067, 6064, 5840, 5840, 1, 5838, 6068, 5838, 6064, 5840, 5840, 5840, 1, 5838, 6063, 5838, 6062, 5840, 5840, 1, 5838, 6063, 5838, 6059, 5840, 5840, 1, 5838, 6063, 6080, 5838, 6062, 6059, 5840, 5840, 1, 5838, 6063, 5838, 6059, 5840, 5840, 5840, 1, 5838, 5839, 5838, 6081, 5840, 5840, 1, 5838, 5839, 5838, 6082, 5840, 5840, 1, 5838, 5839, 6083, 5838, 6081, 6082, 5840, 5840, 1, 5838, 5839, 5838, 6082, 5840, 5840, 5840, 1, 6085, 6084, 6084, 6084, 1, 6087, 6086, 6086, 6086, 1, 6087, 6088, 6088, 6088, 1, 6087, 6089, 6089, 6089, 1, 6087, 1, 6091, 6090, 6090, 6090, 1, 6093, 6092, 6092, 6092, 1, 6093, 6094, 6094, 6094, 1, 6093, 6095, 6095, 6095, 1, 6093, 1, 6097, 6096, 6096, 6096, 1, 6099, 6098, 6098, 6098, 1, 6099, 6100, 6100, 6100, 1, 6099, 6101, 6101, 6101, 1, 6099, 1, 6103, 6102, 6102, 6102, 1, 6105, 6104, 6104, 6104, 1, 6105, 6106, 6106, 6106, 1, 6105, 6107, 6107, 6107, 1, 6105, 1, 6109, 6108, 6108, 6108, 1, 6111, 6110, 6110, 6110, 1, 6111, 6112, 6112, 6112, 1, 6111, 6113, 6113, 6113, 1, 6111, 1, 6115, 6114, 6114, 6114, 1, 6117, 6116, 6116, 6116, 1, 6117, 6118, 6118, 6118, 1, 6117, 6119, 6119, 6119, 1, 6117, 1, 6120, 6121, 6122, 6124, 6123, 6125, 6125, 1, 6126, 6128, 6127, 6127, 6127, 1, 6129, 6130, 6131, 6132, 1, 6133, 1, 6134, 6135, 6136, 6137, 1, 6138, 1, 6139, 6140, 6141, 6142, 1, 6143, 1, 6144, 6145, 6144, 6146, 6147, 6148, 1, 6143, 6142, 1, 6143, 6139, 1, 6149, 6143, 6142, 6139, 1, 6143, 6139, 1, 6138, 6137, 1, 6138, 6134, 1, 6138, 6150, 6137, 6134, 1, 6138, 6134, 1, 6133, 6132, 1, 6133, 6129, 1, 6133, 6151, 6132, 6129, 1, 6133, 6129, 1, 6128, 6152, 6152, 6152, 1, 6128, 6153, 6153, 6153, 1, 6128, 1, 6139, 6154, 6154, 6154, 1, 6143, 6155, 6155, 6155, 1, 6143, 6156, 6156, 6156, 1, 6143, 6139, 6139, 6139, 1, 6126, 6128, 6157, 6127, 6127, 1, 6126, 6128, 6158, 6152, 6152, 1, 6126, 6128, 6153, 6153, 6153, 1, 6126, 6159, 6128, 6157, 6160, 6127, 6127, 1, 6126, 6128, 6158, 6152, 6152, 6152, 1, 6126, 6128, 6152, 6152, 6152, 1, 6126, 6128, 6160, 6127, 6127, 1, 6143, 6154, 6154, 6154, 1, 6128, 6127, 6127, 6127, 1, 6161, 6162, 6163, 6143, 6164, 6165, 6165, 1, 6126, 6167, 6143, 6166, 6166, 6166, 1, 6167, 6143, 6168, 6168, 6168, 1, 6167, 6143, 6169, 6169, 6169, 1, 6167, 6143, 1, 6154, 6154, 6154, 1, 6126, 6167, 6143, 6170, 6166, 6166, 1, 6126, 6167, 6143, 6171, 6168, 6168, 1, 6126, 6167, 6143, 6169, 6169, 6169, 1, 6126, 6172, 6167, 6143, 6170, 6173, 6166, 6166, 1, 6126, 6167, 6143, 6171, 6168, 6168, 6168, 1, 6126, 6167, 6143, 6168, 6168, 6168, 1, 6126, 6167, 6143, 6173, 6166, 6166, 1, 6167, 6143, 6166, 6166, 6166, 1, 6174, 6175, 6176, 6143, 6177, 6178, 6178, 1, 6126, 6180, 6143, 6179, 6179, 6179, 1, 6180, 6143, 6181, 6181, 6181, 1, 6180, 6143, 6182, 6182, 6182, 1, 6180, 6143, 1, 6161, 6162, 6163, 6164, 6165, 6165, 1, 6126, 6180, 6143, 6183, 6179, 6179, 1, 6126, 6180, 6143, 6184, 6181, 6181, 1, 6126, 6180, 6143, 6182, 6182, 6182, 1, 6126, 6185, 6180, 6143, 6183, 6186, 6179, 6179, 1, 6126, 6180, 6143, 6184, 6181, 6181, 6181, 1, 6126, 6180, 6143, 6181, 6181, 6181, 1, 6126, 6180, 6143, 6186, 6179, 6179, 1, 6180, 6143, 6179, 6179, 6179, 1, 6187, 6188, 6189, 6143, 6190, 6191, 6191, 1, 6126, 6193, 6143, 6192, 6192, 6192, 1, 6193, 6143, 6194, 6194, 6194, 1, 6193, 6143, 6195, 6195, 6195, 1, 6193, 6143, 1, 6174, 6175, 6176, 6177, 6178, 6178, 1, 6126, 6193, 6143, 6196, 6192, 6192, 1, 6126, 6193, 6143, 6197, 6194, 6194, 1, 6126, 6193, 6143, 6195, 6195, 6195, 1, 6126, 6198, 6193, 6143, 6196, 6199, 6192, 6192, 1, 6126, 6193, 6143, 6197, 6194, 6194, 6194, 1, 6126, 6193, 6143, 6194, 6194, 6194, 1, 6126, 6193, 6143, 6199, 6192, 6192, 1, 6193, 6143, 6192, 6192, 6192, 1, 6200, 6201, 6202, 6143, 6203, 6204, 6204, 1, 6126, 6206, 6143, 6205, 6205, 6205, 1, 6206, 6143, 6207, 6207, 6207, 1, 6206, 6143, 6208, 6208, 6208, 1, 6206, 6143, 1, 6187, 6188, 6189, 6190, 6191, 6191, 1, 6126, 6206, 6143, 6209, 6205, 6205, 1, 6126, 6206, 6143, 6210, 6207, 6207, 1, 6126, 6206, 6143, 6208, 6208, 6208, 1, 6126, 6211, 6206, 6143, 6209, 6212, 6205, 6205, 1, 6126, 6206, 6143, 6210, 6207, 6207, 6207, 1, 6126, 6206, 6143, 6207, 6207, 6207, 1, 6126, 6206, 6143, 6212, 6205, 6205, 1, 6206, 6143, 6205, 6205, 6205, 1, 6213, 6214, 6215, 6143, 6216, 6217, 6217, 1, 6126, 6219, 6143, 6218, 6218, 6218, 1, 6219, 6143, 6220, 6220, 6220, 1, 6219, 6143, 6221, 6221, 6221, 1, 6219, 6143, 1, 6200, 6201, 6202, 6203, 6204, 6204, 1, 6126, 6219, 6143, 6222, 6218, 6218, 1, 6126, 6219, 6143, 6223, 6220, 6220, 1, 6126, 6219, 6143, 6221, 6221, 6221, 1, 6126, 6224, 6219, 6143, 6222, 6225, 6218, 6218, 1, 6126, 6219, 6143, 6223, 6220, 6220, 6220, 1, 6126, 6219, 6143, 6220, 6220, 6220, 1, 6126, 6219, 6143, 6225, 6218, 6218, 1, 6219, 6143, 6218, 6218, 6218, 1, 6226, 1, 6227, 6228, 6229, 6143, 6230, 6231, 6231, 1, 6126, 6233, 6143, 6232, 6232, 6232, 1, 6233, 6143, 6234, 6234, 6234, 1, 6233, 6143, 6235, 6235, 6235, 1, 6233, 6143, 1, 6213, 6214, 6215, 6216, 6217, 6217, 1, 6126, 6233, 6143, 6236, 6232, 6232, 1, 6126, 6233, 6143, 6237, 6234, 6234, 1, 6126, 6233, 6143, 6235, 6235, 6235, 1, 6126, 6238, 6233, 6143, 6236, 6239, 6232, 6232, 1, 6126, 6233, 6143, 6237, 6234, 6234, 6234, 1, 6126, 6233, 6143, 6234, 6234, 6234, 1, 6126, 6233, 6143, 6239, 6232, 6232, 1, 6233, 6143, 6232, 6232, 6232, 1, 5826, 5827, 6240, 6241, 5826, 5828, 5826, 5829, 6240, 5826, 5826, 6242, 6242, 6242, 1, 5826, 5827, 6240, 5828, 5826, 5829, 6240, 5826, 5826, 5826, 6242, 6242, 6242, 1, 5826, 5827, 6240, 6243, 5826, 5828, 5826, 5829, 6240, 5826, 5826, 6242, 6242, 6242, 1, 5826, 5827, 5828, 5826, 5829, 5826, 5826, 5826, 5826, 6242, 6244, 6244, 1, 5843, 5844, 5843, 5826, 5827, 5845, 6245, 6246, 6247, 5849, 5826, 5829, 6245, 5826, 5826, 6244, 6244, 6244, 1, 5826, 5827, 6245, 5828, 5826, 5829, 6245, 5826, 5826, 5826, 6244, 6244, 6244, 1, 5843, 5844, 5843, 5826, 5827, 5845, 6247, 5849, 5826, 5829, 5826, 5826, 5826, 6242, 6244, 6244, 1, 5828, 5831, 6248, 6250, 5828, 5829, 5828, 5828, 5828, 5828, 6249, 6251, 5828, 5828, 1, 5828, 5831, 6252, 5828, 5829, 5828, 5828, 5828, 5828, 6253, 5828, 5828, 1, 5828, 5831, 6254, 5828, 5829, 5828, 5828, 5828, 5828, 6255, 5828, 5828, 1, 5828, 5831, 5828, 5828, 5829, 5828, 5828, 5828, 5828, 6256, 5828, 5828, 1, 5860, 5861, 5860, 5828, 5831, 5862, 5863, 5828, 5829, 5828, 5828, 5828, 5828, 5828, 5828, 1, 5860, 5861, 5860, 5828, 5831, 5862, 5863, 5828, 5829, 5828, 5828, 5828, 6256, 5828, 5828, 1, 5860, 5861, 5860, 5828, 5831, 5862, 5863, 5828, 5829, 5828, 5828, 5828, 6255, 5828, 5828, 1, 5860, 5861, 5860, 5828, 5831, 5862, 5863, 5828, 5829, 5828, 5828, 5828, 6257, 5828, 5828, 1, 5860, 5861, 5860, 5828, 5831, 5862, 5863, 5828, 5829, 5828, 5828, 5828, 6253, 5828, 5828, 1, 5860, 5861, 5860, 5828, 5831, 5862, 6258, 5863, 5828, 5829, 5828, 5828, 5828, 6257, 6253, 5828, 5828, 1, 5860, 5861, 5860, 5828, 5831, 5862, 6259, 5863, 5828, 5829, 5828, 5828, 5828, 6253, 6255, 5828, 5828, 1, 5860, 5861, 5860, 5828, 5831, 5862, 6260, 5863, 5828, 5829, 5828, 5828, 5828, 6255, 6256, 5828, 5828, 1, 5860, 5861, 5860, 5828, 5831, 5862, 5863, 5828, 5829, 5828, 5828, 5828, 6256, 5828, 5828, 5828, 1, 5826, 5827, 6261, 6262, 6263, 5828, 5826, 5829, 5826, 5826, 5826, 5826, 6264, 6244, 6244, 1, 5826, 5827, 6240, 6265, 5826, 5828, 5826, 5829, 6240, 5826, 5826, 6242, 6242, 6242, 1, 5826, 5827, 6266, 6267, 6268, 5828, 5826, 5829, 5826, 5826, 5826, 5826, 6269, 6244, 6244, 1, 5826, 5827, 6240, 6270, 5826, 5828, 5826, 5829, 6240, 5826, 5826, 6242, 6242, 6242, 1, 5826, 5827, 6271, 6272, 6273, 5828, 5826, 5829, 5826, 5826, 5826, 5826, 6274, 6244, 6244, 1, 6073, 6074, 6073, 5826, 5827, 6075, 6240, 6243, 6275, 6077, 5826, 5829, 6240, 5826, 5826, 6242, 6242, 6242, 1, 6073, 6074, 6073, 5826, 5827, 6075, 6240, 6243, 6275, 6077, 5826, 5829, 6240, 5826, 5826, 6274, 6242, 6242, 1, 6073, 6074, 6073, 5826, 5827, 6075, 6240, 6243, 6275, 6077, 5826, 5829, 6240, 5826, 5826, 6271, 6242, 6242, 1, 6073, 6074, 6073, 5826, 5827, 6075, 6240, 6243, 6276, 6275, 6077, 5826, 5829, 6240, 5826, 5826, 6274, 6271, 6242, 6242, 1, 6073, 6074, 6073, 5826, 5827, 6075, 6240, 6243, 6275, 6077, 5826, 5829, 6240, 5826, 5826, 6271, 6242, 6242, 6242, 1, 5826, 5827, 6240, 6270, 5826, 5828, 5826, 5829, 6240, 5826, 5826, 6269, 6242, 6242, 1, 5826, 5827, 6240, 6270, 5826, 5828, 5826, 5829, 6240, 5826, 5826, 6266, 6242, 6242, 1, 5826, 5827, 6240, 6270, 5826, 6277, 5828, 5826, 5829, 6240, 5826, 5826, 6269, 6266, 6242, 6242, 1, 5826, 5827, 6240, 6270, 5826, 5828, 5826, 5829, 6240, 5826, 5826, 6266, 6242, 6242, 6242, 1, 5826, 5827, 6240, 6265, 5826, 5828, 5826, 5829, 6240, 5826, 5826, 6264, 6242, 6242, 1, 5826, 5827, 6240, 6265, 5826, 5828, 5826, 5829, 6240, 5826, 5826, 6261, 6242, 6242, 1, 5826, 5827, 6240, 6265, 5826, 6278, 5828, 5826, 5829, 6240, 5826, 5826, 6264, 6261, 6242, 6242, 1, 5826, 5827, 6240, 6265, 5826, 5828, 5826, 5829, 6240, 5826, 5826, 6261, 6242, 6242, 6242, 1, 5826, 5827, 6240, 6241, 5826, 5828, 5826, 5829, 6240, 5826, 5826, 6279, 6242, 6242, 1, 5826, 5827, 6240, 6241, 5826, 5828, 5826, 5829, 6240, 5826, 5826, 6280, 6242, 6242, 1, 5826, 5827, 6240, 6241, 5826, 6281, 5828, 5826, 5829, 6240, 5826, 5826, 6279, 6280, 6242, 6242, 1, 5826, 5827, 6240, 6241, 5826, 5828, 5826, 5829, 6240, 5826, 5826, 6280, 6242, 6242, 6242, 1, 5807, 5808, 5807, 5809, 5809, 5809, 6282, 5714, 5809, 5809, 5809, 5809, 5809, 5809, 1, 6283, 6283, 6284, 6283, 6283, 6283, 6283, 6283, 6283, 6283, 6283, 1, 6283, 6283, 6284, 6285, 6283, 6283, 6283, 6283, 6283, 6283, 6283, 6283, 1, 6286, 6286, 6286, 1, 6283, 6283, 6283, 1, 6285, 6287, 6288, 6289, 6285, 6285, 6285, 6285, 6285, 6285, 6285, 6285, 1, 6290, 6290, 6290, 1, 6285, 6285, 6285, 1, 5780, 5781, 5780, 5780, 5780, 5780, 5780, 5780, 5780, 1, 5773, 5774, 5775, 5776, 5777, 5778, 6291, 5773, 5773, 6291, 5773, 5773, 5773, 5773, 5773, 1, 5773, 5774, 6292, 6293, 6294, 6295, 5773, 5773, 5773, 5773, 5773, 5773, 5773, 1, 6296, 6297, 6296, 5780, 5780, 5775, 5782, 5777, 5778, 5780, 5780, 6298, 6296, 5780, 6296, 6296, 6296, 6296, 1, 6299, 6300, 6299, 5783, 5783, 5785, 5786, 5787, 5783, 5783, 6298, 6299, 5783, 6299, 6299, 6299, 6299, 1, 6298, 6298, 6298, 6302, 6303, 6304, 6298, 6298, 6298, 6301, 6301, 6298, 6298, 6301, 6298, 1, 6298, 6298, 6298, 6302, 6303, 6304, 6298, 6298, 6298, 6298, 6298, 6298, 1, 6298, 6298, 6298, 6302, 6303, 6304, 6298, 6298, 6298, 6299, 6299, 6298, 6298, 6299, 6298, 1, 5773, 5774, 5775, 5776, 5777, 5778, 6305, 6306, 5773, 5773, 6305, 6306, 5773, 5773, 5773, 5773, 5773, 1, 5773, 5774, 6307, 6308, 6309, 6310, 5773, 5773, 5773, 5773, 5773, 5773, 5773, 1, 5773, 5774, 5775, 5776, 5777, 5778, 6311, 5773, 5773, 6311, 5773, 5773, 5773, 5773, 5773, 1, 5773, 5774, 5775, 5776, 5777, 5778, 6312, 5773, 5773, 6312, 5773, 5773, 5773, 5773, 5773, 1, 5773, 5774, 5775, 6313, 5777, 5778, 5773, 5773, 5773, 5773, 5773, 5773, 5773, 1, 6314, 6315, 6314, 5780, 5780, 5775, 5782, 5777, 5778, 5780, 5780, 6316, 6314, 5780, 6314, 6314, 6314, 6314, 1, 6317, 6318, 6317, 5783, 5783, 6319, 6320, 6321, 5783, 5783, 6322, 6317, 5783, 6317, 6317, 6317, 6317, 1, 6322, 6322, 6322, 6324, 6325, 6326, 6322, 6322, 6322, 6323, 6323, 6322, 6322, 6323, 6322, 1, 6322, 6322, 6322, 6324, 6325, 6326, 6322, 6322, 6322, 6322, 6322, 6322, 1, 6322, 6322, 6322, 6324, 6325, 6326, 6322, 6322, 6322, 6317, 6317, 6322, 6322, 6317, 6322, 1, 5773, 5774, 5775, 5776, 5777, 5778, 6327, 5773, 5773, 6327, 5773, 5773, 5773, 5773, 5773, 1, 5773, 5774, 5775, 5776, 5777, 5778, 6328, 5773, 5773, 6328, 5773, 5773, 5773, 5773, 5773, 1, 5773, 5774, 5775, 5776, 5777, 5778, 6329, 5773, 5773, 6329, 5773, 5773, 5773, 5773, 5773, 1, 5773, 5774, 5775, 5776, 5777, 5778, 6330, 5773, 5773, 6330, 5773, 5773, 5773, 5773, 5773, 1, 5773, 5774, 5775, 5776, 5777, 5778, 6331, 5773, 5773, 6331, 5773, 5773, 5773, 5773, 5773, 1, 5773, 5774, 5775, 5776, 5777, 5778, 6332, 5773, 5773, 6332, 5773, 5773, 5773, 5773, 5773, 1, 5773, 5774, 5775, 5776, 5777, 5778, 6333, 5773, 5773, 6333, 5773, 5773, 5773, 5773, 5773, 1, 5773, 5774, 5775, 5776, 5777, 5778, 6334, 5773, 5773, 6334, 5773, 5773, 5773, 5773, 5773, 1, 5773, 5774, 5775, 6335, 5777, 5778, 5773, 5773, 5773, 5773, 5773, 5773, 5773, 1, 6336, 6337, 6336, 5780, 5780, 5775, 5782, 5777, 5778, 6338, 6339, 6340, 6341, 5780, 5780, 6342, 6338, 6339, 6340, 6341, 6336, 5780, 6336, 6336, 6336, 6336, 1, 6343, 6344, 6343, 5783, 5783, 6345, 6346, 6347, 5783, 5783, 6348, 6343, 5783, 6343, 6343, 6343, 6343, 1, 6348, 6348, 6348, 6350, 6351, 6352, 6348, 6348, 6348, 6349, 6349, 6348, 6348, 6349, 6348, 1, 6348, 6348, 6348, 6350, 6351, 6352, 6348, 6348, 6348, 6348, 6348, 6348, 1, 6348, 6348, 6348, 6350, 6351, 6352, 6348, 6348, 6348, 6343, 6343, 6348, 6348, 6343, 6348, 1, 6343, 6344, 6343, 5783, 5783, 6345, 6346, 6347, 6353, 5783, 5783, 6348, 6353, 6343, 5783, 6343, 6343, 6343, 6343, 1, 6343, 6344, 6343, 5783, 5783, 6345, 6346, 6347, 6354, 5783, 5783, 6348, 6354, 6343, 5783, 6343, 6343, 6343, 6343, 1, 6343, 6344, 6343, 5783, 5783, 6345, 6346, 6347, 6355, 5783, 5783, 6348, 6355, 6343, 5783, 6343, 6343, 6343, 6343, 1, 6343, 6344, 6343, 5783, 5783, 6356, 6357, 6358, 5783, 5783, 6348, 6343, 5783, 6343, 6343, 6343, 6343, 1, 6343, 6344, 6343, 5783, 5783, 6345, 6346, 6347, 6359, 6360, 5783, 5783, 6348, 6359, 6360, 6343, 5783, 6343, 6343, 6343, 6343, 1, 6343, 6344, 6343, 5783, 5783, 6345, 6346, 6347, 6361, 5783, 5783, 6348, 6361, 6343, 5783, 6343, 6343, 6343, 6343, 1, 6343, 6344, 6343, 5783, 5783, 6362, 6363, 6364, 5783, 5783, 6348, 6343, 5783, 6343, 6343, 6343, 6343, 1, 6343, 6344, 6343, 5783, 5783, 6345, 6346, 6347, 6365, 5783, 5783, 6348, 6365, 6343, 5783, 6343, 6343, 6343, 6343, 1, 6343, 6344, 6343, 5783, 5783, 6366, 6367, 6368, 5783, 5783, 6348, 6343, 5783, 6343, 6343, 6343, 6343, 1, 6343, 6344, 6343, 5783, 5783, 6345, 6346, 6347, 6369, 5783, 5783, 6348, 6369, 6343, 5783, 6343, 6343, 6343, 6343, 1, 6343, 6344, 6343, 5783, 5783, 6345, 6346, 6347, 6370, 5783, 5783, 6348, 6370, 6343, 5783, 6343, 6343, 6343, 6343, 1, 6343, 6344, 6343, 5783, 5783, 6371, 6372, 6373, 5783, 5783, 6348, 6343, 5783, 6343, 6343, 6343, 6343, 1, 6343, 6344, 6343, 5783, 5783, 6345, 6346, 6347, 6374, 5783, 5783, 6348, 6374, 6343, 5783, 6343, 6343, 6343, 6343, 1, 6343, 6344, 6343, 5783, 5783, 6375, 6376, 6377, 6378, 5783, 5783, 6348, 6378, 6343, 5783, 6343, 6343, 6343, 6343, 1, 6343, 6344, 6343, 5783, 5783, 6379, 6380, 6381, 5783, 5783, 6348, 6343, 5783, 6343, 6343, 6343, 6343, 1, 5765, 5766, 5767, 5764, 1, 5765, 5766, 5767, 5763, 1, 5765, 5766, 5767, 6382, 1, 5765, 5766, 5767, 5761, 1, 6383, 5765, 5766, 5767, 6382, 5761, 1, 6384, 5765, 5766, 5767, 5761, 5763, 1, 6385, 5765, 5766, 5767, 5763, 5764, 1, 5765, 5766, 5767, 5764, 1, 6386, 6387, 6388, 6389, 5749, 5749, 1, 5745, 6390, 5745, 5747, 5747, 5747, 1, 6391, 6392, 6393, 6394, 5749, 5749, 1, 5745, 6395, 5745, 5747, 5747, 5747, 1, 6396, 6397, 6398, 6399, 5749, 5749, 1, 5745, 5748, 6400, 6401, 6402, 6403, 5745, 5747, 5747, 5747, 1, 5745, 5748, 6400, 6401, 6402, 6403, 5745, 6399, 5747, 5747, 1, 5745, 5748, 6400, 6401, 6402, 6403, 5745, 6396, 5747, 5747, 1, 5745, 5748, 6404, 6400, 6401, 6402, 6403, 5745, 6399, 6396, 5747, 5747, 1, 5745, 5748, 6400, 6401, 6402, 6403, 5745, 6396, 5747, 5747, 5747, 1, 5745, 6395, 5745, 6394, 5747, 5747, 1, 5745, 6395, 5745, 6391, 5747, 5747, 1, 5745, 6395, 6405, 5745, 6394, 6391, 5747, 5747, 1, 5745, 6395, 5745, 6391, 5747, 5747, 5747, 1, 5745, 6390, 5745, 6389, 5747, 5747, 1, 5745, 6390, 5745, 6386, 5747, 5747, 1, 5745, 6390, 6406, 5745, 6389, 6386, 5747, 5747, 1, 5745, 6390, 5745, 6386, 5747, 5747, 5747, 1, 5745, 5746, 5745, 6407, 5747, 5747, 1, 5745, 5746, 5745, 6408, 5747, 5747, 1, 5745, 5746, 6409, 5745, 6407, 6408, 5747, 5747, 1, 5745, 5746, 5745, 6408, 5747, 5747, 5747, 1, 6411, 6410, 6410, 6410, 1, 6413, 6412, 6412, 6412, 1, 6413, 6414, 6414, 6414, 1, 6413, 6415, 6415, 6415, 1, 6413, 1, 6417, 6416, 6416, 6416, 1, 6419, 6418, 6418, 6418, 1, 6419, 6420, 6420, 6420, 1, 6419, 6421, 6421, 6421, 1, 6419, 1, 6423, 6422, 6422, 6422, 1, 6425, 6424, 6424, 6424, 1, 6425, 6426, 6426, 6426, 1, 6425, 6427, 6427, 6427, 1, 6425, 1, 6429, 6428, 6428, 6428, 1, 6431, 6430, 6430, 6430, 1, 6431, 6432, 6432, 6432, 1, 6431, 6433, 6433, 6433, 1, 6431, 1, 6435, 6434, 6434, 6434, 1, 6437, 6436, 6436, 6436, 1, 6437, 6438, 6438, 6438, 1, 6437, 6439, 6439, 6439, 1, 6437, 1, 6441, 6440, 6440, 6440, 1, 6443, 6442, 6442, 6442, 1, 6443, 6444, 6444, 6444, 1, 6443, 6445, 6445, 6445, 1, 6443, 1, 6446, 6447, 6448, 6450, 6449, 6451, 6451, 1, 6452, 6454, 6453, 6453, 6453, 1, 6455, 6456, 6457, 6458, 1, 6459, 1, 6460, 6461, 6462, 6463, 1, 6464, 1, 6465, 6466, 6467, 6468, 1, 6469, 1, 6470, 6471, 6472, 6473, 1, 6469, 6468, 1, 6469, 6465, 1, 6474, 6469, 6468, 6465, 1, 6469, 6465, 1, 6464, 6463, 1, 6464, 6460, 1, 6464, 6475, 6463, 6460, 1, 6464, 6460, 1, 6459, 6458, 1, 6459, 6455, 1, 6459, 6476, 6458, 6455, 1, 6459, 6455, 1, 6454, 6477, 6477, 6477, 1, 6454, 6478, 6478, 6478, 1, 6454, 1, 6465, 6479, 6479, 6479, 1, 6469, 6480, 6480, 6480, 1, 6469, 6481, 6481, 6481, 1, 6469, 6465, 6465, 6465, 1, 6452, 6454, 6482, 6453, 6453, 1, 6452, 6454, 6483, 6477, 6477, 1, 6452, 6454, 6478, 6478, 6478, 1, 6452, 6484, 6454, 6482, 6485, 6453, 6453, 1, 6452, 6454, 6483, 6477, 6477, 6477, 1, 6452, 6454, 6477, 6477, 6477, 1, 6452, 6454, 6485, 6453, 6453, 1, 6469, 6479, 6479, 6479, 1, 6454, 6453, 6453, 6453, 1, 6486, 6487, 6488, 6469, 6489, 6490, 6490, 1, 6452, 6492, 6469, 6491, 6491, 6491, 1, 6492, 6469, 6493, 6493, 6493, 1, 6492, 6469, 6494, 6494, 6494, 1, 6492, 6469, 1, 6479, 6479, 6479, 1, 6452, 6492, 6469, 6495, 6491, 6491, 1, 6452, 6492, 6469, 6496, 6493, 6493, 1, 6452, 6492, 6469, 6494, 6494, 6494, 1, 6452, 6497, 6492, 6469, 6495, 6498, 6491, 6491, 1, 6452, 6492, 6469, 6496, 6493, 6493, 6493, 1, 6452, 6492, 6469, 6493, 6493, 6493, 1, 6452, 6492, 6469, 6498, 6491, 6491, 1, 6492, 6469, 6491, 6491, 6491, 1, 6499, 6500, 6501, 6469, 6502, 6503, 6503, 1, 6452, 6505, 6469, 6504, 6504, 6504, 1, 6505, 6469, 6506, 6506, 6506, 1, 6505, 6469, 6507, 6507, 6507, 1, 6505, 6469, 1, 6486, 6487, 6488, 6489, 6490, 6490, 1, 6452, 6505, 6469, 6508, 6504, 6504, 1, 6452, 6505, 6469, 6509, 6506, 6506, 1, 6452, 6505, 6469, 6507, 6507, 6507, 1, 6452, 6510, 6505, 6469, 6508, 6511, 6504, 6504, 1, 6452, 6505, 6469, 6509, 6506, 6506, 6506, 1, 6452, 6505, 6469, 6506, 6506, 6506, 1, 6452, 6505, 6469, 6511, 6504, 6504, 1, 6505, 6469, 6504, 6504, 6504, 1, 6512, 6513, 6514, 6469, 6515, 6516, 6516, 1, 6452, 6518, 6469, 6517, 6517, 6517, 1, 6518, 6469, 6519, 6519, 6519, 1, 6518, 6469, 6520, 6520, 6520, 1, 6518, 6469, 1, 6499, 6500, 6501, 6502, 6503, 6503, 1, 6452, 6518, 6469, 6521, 6517, 6517, 1, 6452, 6518, 6469, 6522, 6519, 6519, 1, 6452, 6518, 6469, 6520, 6520, 6520, 1, 6452, 6523, 6518, 6469, 6521, 6524, 6517, 6517, 1, 6452, 6518, 6469, 6522, 6519, 6519, 6519, 1, 6452, 6518, 6469, 6519, 6519, 6519, 1, 6452, 6518, 6469, 6524, 6517, 6517, 1, 6518, 6469, 6517, 6517, 6517, 1, 6525, 6526, 6527, 6469, 6528, 6529, 6529, 1, 6452, 6531, 6469, 6530, 6530, 6530, 1, 6531, 6469, 6532, 6532, 6532, 1, 6531, 6469, 6533, 6533, 6533, 1, 6531, 6469, 1, 6512, 6513, 6514, 6515, 6516, 6516, 1, 6452, 6531, 6469, 6534, 6530, 6530, 1, 6452, 6531, 6469, 6535, 6532, 6532, 1, 6452, 6531, 6469, 6533, 6533, 6533, 1, 6452, 6536, 6531, 6469, 6534, 6537, 6530, 6530, 1, 6452, 6531, 6469, 6535, 6532, 6532, 6532, 1, 6452, 6531, 6469, 6532, 6532, 6532, 1, 6452, 6531, 6469, 6537, 6530, 6530, 1, 6531, 6469, 6530, 6530, 6530, 1, 6538, 6539, 6540, 6469, 6541, 6542, 6542, 1, 6452, 6544, 6469, 6543, 6543, 6543, 1, 6544, 6469, 6545, 6545, 6545, 1, 6544, 6469, 6546, 6546, 6546, 1, 6544, 6469, 1, 6525, 6526, 6527, 6528, 6529, 6529, 1, 6452, 6544, 6469, 6547, 6543, 6543, 1, 6452, 6544, 6469, 6548, 6545, 6545, 1, 6452, 6544, 6469, 6546, 6546, 6546, 1, 6452, 6549, 6544, 6469, 6547, 6550, 6543, 6543, 1, 6452, 6544, 6469, 6548, 6545, 6545, 6545, 1, 6452, 6544, 6469, 6545, 6545, 6545, 1, 6452, 6544, 6469, 6550, 6543, 6543, 1, 6544, 6469, 6543, 6543, 6543, 1, 6551, 1, 6552, 6553, 6554, 6469, 6555, 6556, 6556, 1, 6452, 6558, 6469, 6557, 6557, 6557, 1, 6558, 6469, 6559, 6559, 6559, 1, 6558, 6469, 6560, 6560, 6560, 1, 6558, 6469, 1, 6538, 6539, 6540, 6541, 6542, 6542, 1, 6452, 6558, 6469, 6561, 6557, 6557, 1, 6452, 6558, 6469, 6562, 6559, 6559, 1, 6452, 6558, 6469, 6560, 6560, 6560, 1, 6452, 6563, 6558, 6469, 6561, 6564, 6557, 6557, 1, 6452, 6558, 6469, 6562, 6559, 6559, 6559, 1, 6452, 6558, 6469, 6559, 6559, 6559, 1, 6452, 6558, 6469, 6564, 6557, 6557, 1, 6558, 6469, 6557, 6557, 6557, 1, 5733, 5734, 6565, 6566, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6567, 6567, 6567, 1, 5733, 5734, 6565, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6567, 6567, 6567, 1, 5733, 5734, 6565, 6568, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6567, 6567, 6567, 1, 5733, 5734, 5735, 5733, 5733, 5733, 5736, 5733, 5733, 5733, 6567, 6569, 6569, 1, 5733, 5734, 6570, 6571, 6572, 6573, 5733, 5754, 6574, 5736, 6570, 5733, 5733, 6569, 6569, 6569, 1, 5733, 5734, 6570, 5735, 5733, 5733, 5733, 5736, 6570, 5733, 5733, 6569, 6569, 6569, 1, 5733, 5734, 6572, 6573, 5733, 5754, 6574, 5736, 5733, 5733, 5733, 6567, 6569, 6569, 1, 5735, 5738, 6575, 6577, 5735, 5736, 5735, 5735, 5735, 6576, 6578, 5735, 5735, 1, 5735, 5738, 6579, 5735, 5736, 5735, 5735, 5735, 6580, 5735, 5735, 1, 5735, 5738, 6581, 5735, 5736, 5735, 5735, 5735, 6582, 5735, 5735, 1, 5735, 5738, 5735, 5735, 5736, 5735, 5735, 5735, 6583, 5735, 5735, 1, 5735, 5738, 5765, 5766, 5767, 5736, 5735, 5735, 5735, 5735, 5735, 5735, 1, 5735, 5738, 5765, 5766, 5767, 5736, 5735, 5735, 5735, 6583, 5735, 5735, 1, 5735, 5738, 5765, 5766, 5767, 5736, 5735, 5735, 5735, 6582, 5735, 5735, 1, 5735, 5738, 5765, 5766, 5767, 5736, 5735, 5735, 5735, 6584, 5735, 5735, 1, 5735, 5738, 5765, 5766, 5767, 5736, 5735, 5735, 5735, 6580, 5735, 5735, 1, 5735, 5738, 6585, 5765, 5766, 5767, 5736, 5735, 5735, 5735, 6584, 6580, 5735, 5735, 1, 5735, 5738, 6586, 5765, 5766, 5767, 5736, 5735, 5735, 5735, 6580, 6582, 5735, 5735, 1, 5735, 5738, 6587, 5765, 5766, 5767, 5736, 5735, 5735, 5735, 6582, 6583, 5735, 5735, 1, 5735, 5738, 5765, 5766, 5767, 5736, 5735, 5735, 5735, 6583, 5735, 5735, 5735, 1, 6588, 5733, 6589, 5733, 6590, 5733, 5733, 5733, 5736, 6591, 6592, 6593, 5768, 5768, 6588, 6591, 6592, 6593, 6588, 6588, 6588, 6588, 1, 6594, 5733, 6595, 5733, 6596, 6597, 6598, 5777, 6599, 5736, 5773, 5773, 6594, 6594, 6594, 6594, 6594, 1, 6600, 6600, 6600, 1, 6594, 6594, 6594, 1, 6596, 6601, 5735, 5773, 5773, 5775, 6602, 5777, 5778, 5736, 5773, 5773, 6596, 6596, 6596, 6596, 6596, 1, 6603, 6603, 6603, 1, 6596, 6596, 6596, 1, 6604, 6605, 5735, 5780, 5780, 5775, 6606, 5777, 5778, 5736, 5780, 5780, 6604, 6604, 6604, 6604, 6604, 1, 6607, 6608, 5735, 5783, 5783, 5785, 5735, 5786, 5787, 5736, 5783, 5783, 6607, 6607, 6607, 6607, 6607, 1, 6609, 6609, 6609, 1, 6607, 6607, 6607, 1, 6604, 6605, 5735, 5780, 5780, 5735, 5736, 5780, 5780, 6604, 6604, 6604, 6604, 6604, 1, 6610, 5733, 6611, 5733, 6604, 6597, 6612, 5777, 6599, 5736, 5780, 5780, 6610, 6610, 6610, 6610, 6610, 1, 6613, 5733, 6614, 5733, 6607, 6615, 5733, 5786, 6616, 5736, 5783, 5783, 6613, 6613, 6613, 6613, 6613, 1, 6617, 6617, 6617, 1, 6613, 6613, 6613, 1, 6618, 6618, 6619, 5733, 6620, 5733, 5733, 5736, 6283, 6283, 6618, 6618, 5733, 6618, 6618, 6618, 1, 6618, 6618, 6619, 5733, 6620, 5733, 6621, 5736, 6283, 6283, 6618, 6618, 5733, 6618, 6618, 6618, 1, 6622, 6622, 6622, 1, 6618, 6618, 6618, 1, 6620, 6623, 5735, 5735, 6283, 6283, 6624, 6283, 5736, 6283, 6283, 6620, 6620, 6620, 6620, 6620, 1, 6625, 6625, 6625, 1, 6620, 6620, 6620, 1, 6624, 6626, 6627, 5735, 6285, 6285, 5735, 6289, 6285, 5736, 6285, 6285, 6624, 6624, 6624, 6624, 6624, 1, 6628, 6628, 6628, 1, 6624, 6624, 6624, 1, 6620, 6623, 5735, 5735, 6283, 6283, 5735, 6283, 5736, 6283, 6283, 6620, 6620, 6620, 6620, 6620, 1, 6621, 5733, 6629, 6630, 5733, 6624, 5733, 5733, 6289, 5736, 6285, 6285, 6621, 6621, 6621, 6621, 6621, 1, 6631, 6631, 6631, 1, 6621, 6621, 6621, 1, 6610, 5733, 6611, 5733, 6604, 5733, 5733, 5733, 5736, 5780, 5780, 6610, 6610, 6610, 6610, 6610, 1, 6594, 5733, 6595, 5733, 6596, 6597, 6598, 5777, 6599, 5736, 6632, 5773, 5773, 6594, 6632, 6594, 6594, 6594, 6594, 1, 6594, 5733, 6595, 5733, 6596, 6633, 6634, 6294, 6635, 5736, 5773, 5773, 6594, 6594, 6594, 6594, 6594, 1, 6636, 5733, 6637, 6636, 5733, 6610, 6604, 6597, 6612, 5777, 6599, 5736, 5780, 5780, 6298, 6636, 6610, 6636, 6636, 6636, 1, 6638, 5733, 6639, 6638, 5733, 6613, 6607, 6615, 5733, 5786, 6616, 5736, 5783, 5783, 6298, 6638, 6613, 6638, 6638, 6638, 1, 6298, 6298, 6298, 6302, 6303, 6304, 6298, 6298, 6298, 6640, 6640, 6298, 6298, 6640, 6298, 1, 6298, 6298, 6298, 6302, 6303, 6304, 6298, 6298, 6298, 6638, 6638, 6298, 6298, 6638, 6298, 1, 6594, 5733, 6595, 5733, 6596, 6597, 6598, 5777, 6599, 5736, 6641, 6642, 5773, 5773, 6594, 6641, 6642, 6594, 6594, 6594, 6594, 1, 6594, 5733, 6595, 5733, 6596, 6643, 6644, 6309, 6645, 5736, 5773, 5773, 6594, 6594, 6594, 6594, 6594, 1, 6594, 5733, 6595, 5733, 6596, 6597, 6598, 5777, 6599, 5736, 6646, 5773, 5773, 6594, 6646, 6594, 6594, 6594, 6594, 1, 6594, 5733, 6595, 5733, 6596, 6597, 6598, 5777, 6599, 5736, 6647, 5773, 5773, 6594, 6647, 6594, 6594, 6594, 6594, 1, 6594, 5733, 6595, 5733, 6596, 6597, 6648, 5777, 6599, 5736, 5773, 5773, 6594, 6594, 6594, 6594, 6594, 1, 6649, 5733, 6650, 6649, 5733, 6610, 6604, 6597, 6612, 5777, 6599, 5736, 5780, 5780, 6316, 6649, 6610, 6649, 6649, 6649, 1, 6651, 5733, 6652, 6651, 5733, 6613, 6607, 6653, 5733, 6320, 6654, 5736, 5783, 5783, 6322, 6651, 6613, 6651, 6651, 6651, 1, 6322, 6322, 6322, 6324, 6325, 6326, 6322, 6322, 6322, 6655, 6655, 6322, 6322, 6655, 6322, 1, 6322, 6322, 6322, 6324, 6325, 6326, 6322, 6322, 6322, 6651, 6651, 6322, 6322, 6651, 6322, 1, 6594, 5733, 6595, 5733, 6596, 6597, 6598, 5777, 6599, 5736, 6656, 5773, 5773, 6594, 6656, 6594, 6594, 6594, 6594, 1, 6594, 5733, 6595, 5733, 6596, 6597, 6598, 5777, 6599, 5736, 6657, 5773, 5773, 6594, 6657, 6594, 6594, 6594, 6594, 1, 6594, 5733, 6595, 5733, 6596, 6597, 6598, 5777, 6599, 5736, 6658, 5773, 5773, 6594, 6658, 6594, 6594, 6594, 6594, 1, 6594, 5733, 6595, 5733, 6596, 6597, 6598, 5777, 6599, 5736, 6659, 5773, 5773, 6594, 6659, 6594, 6594, 6594, 6594, 1, 6594, 5733, 6595, 5733, 6596, 6597, 6598, 5777, 6599, 5736, 6660, 5773, 5773, 6594, 6660, 6594, 6594, 6594, 6594, 1, 6594, 5733, 6595, 5733, 6596, 6597, 6598, 5777, 6599, 5736, 6661, 5773, 5773, 6594, 6661, 6594, 6594, 6594, 6594, 1, 6594, 5733, 6595, 5733, 6596, 6597, 6598, 5777, 6599, 5736, 6662, 5773, 5773, 6594, 6662, 6594, 6594, 6594, 6594, 1, 6594, 5733, 6595, 5733, 6596, 6597, 6598, 5777, 6599, 5736, 6663, 5773, 5773, 6594, 6663, 6594, 6594, 6594, 6594, 1, 6594, 5733, 6595, 5733, 6596, 6597, 6664, 5777, 6599, 5736, 5773, 5773, 6594, 6594, 6594, 6594, 6594, 1, 6665, 5733, 6666, 6665, 5733, 6610, 6604, 6597, 6612, 5777, 6599, 5736, 6667, 6668, 6669, 6670, 5780, 5780, 6342, 6667, 6668, 6669, 6670, 6665, 6610, 6665, 6665, 6665, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6673, 5733, 6346, 6674, 5736, 5783, 5783, 6348, 6671, 6613, 6671, 6671, 6671, 1, 6348, 6348, 6348, 6350, 6351, 6352, 6348, 6348, 6348, 6675, 6675, 6348, 6348, 6675, 6348, 1, 6348, 6348, 6348, 6350, 6351, 6352, 6348, 6348, 6348, 6671, 6671, 6348, 6348, 6671, 6348, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6673, 5733, 6346, 6674, 5736, 6676, 5783, 5783, 6348, 6676, 6671, 6613, 6671, 6671, 6671, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6673, 5733, 6346, 6674, 5736, 6677, 5783, 5783, 6348, 6677, 6671, 6613, 6671, 6671, 6671, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6673, 5733, 6346, 6674, 5736, 6678, 5783, 5783, 6348, 6678, 6671, 6613, 6671, 6671, 6671, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6679, 5733, 6357, 6680, 5736, 5783, 5783, 6348, 6671, 6613, 6671, 6671, 6671, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6673, 5733, 6346, 6674, 5736, 6681, 6682, 5783, 5783, 6348, 6681, 6682, 6671, 6613, 6671, 6671, 6671, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6673, 5733, 6346, 6674, 5736, 6683, 5783, 5783, 6348, 6683, 6671, 6613, 6671, 6671, 6671, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6684, 5733, 6363, 6685, 5736, 5783, 5783, 6348, 6671, 6613, 6671, 6671, 6671, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6673, 5733, 6346, 6674, 5736, 6686, 5783, 5783, 6348, 6686, 6671, 6613, 6671, 6671, 6671, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6687, 5733, 6367, 6688, 5736, 5783, 5783, 6348, 6671, 6613, 6671, 6671, 6671, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6673, 5733, 6346, 6674, 5736, 6689, 5783, 5783, 6348, 6689, 6671, 6613, 6671, 6671, 6671, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6673, 5733, 6346, 6674, 5736, 6690, 5783, 5783, 6348, 6690, 6671, 6613, 6671, 6671, 6671, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6691, 5733, 6372, 6692, 5736, 5783, 5783, 6348, 6671, 6613, 6671, 6671, 6671, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6673, 5733, 6346, 6674, 5736, 6693, 5783, 5783, 6348, 6693, 6671, 6613, 6671, 6671, 6671, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6694, 5733, 6376, 6695, 5736, 6696, 5783, 5783, 6348, 6696, 6671, 6613, 6671, 6671, 6671, 1, 6671, 5733, 6672, 6671, 5733, 6613, 6607, 6697, 5733, 6380, 6698, 5736, 5783, 5783, 6348, 6671, 6613, 6671, 6671, 6671, 1, 5733, 5734, 6699, 6700, 6701, 5735, 5733, 5733, 5733, 5736, 5733, 5733, 5733, 6702, 6569, 6569, 1, 5733, 5734, 6565, 6703, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6567, 6567, 6567, 1, 5733, 5734, 6704, 6705, 6706, 5735, 5733, 5733, 5733, 5736, 5733, 5733, 5733, 6707, 6569, 6569, 1, 5733, 5734, 6565, 6708, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6567, 6567, 6567, 1, 5733, 5734, 6709, 6710, 6711, 5735, 5733, 5733, 5733, 5736, 5733, 5733, 5733, 6712, 6569, 6569, 1, 5733, 5734, 6565, 6568, 6713, 6714, 5733, 6402, 6715, 5736, 6565, 5733, 5733, 6567, 6567, 6567, 1, 5733, 5734, 6565, 6568, 6713, 6714, 5733, 6402, 6715, 5736, 6565, 5733, 5733, 6712, 6567, 6567, 1, 5733, 5734, 6565, 6568, 6713, 6714, 5733, 6402, 6715, 5736, 6565, 5733, 5733, 6709, 6567, 6567, 1, 5733, 5734, 6565, 6568, 6716, 6713, 6714, 5733, 6402, 6715, 5736, 6565, 5733, 5733, 6712, 6709, 6567, 6567, 1, 5733, 5734, 6565, 6568, 6713, 6714, 5733, 6402, 6715, 5736, 6565, 5733, 5733, 6709, 6567, 6567, 6567, 1, 5733, 5734, 6565, 6708, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6707, 6567, 6567, 1, 5733, 5734, 6565, 6708, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6704, 6567, 6567, 1, 5733, 5734, 6565, 6708, 6717, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6707, 6704, 6567, 6567, 1, 5733, 5734, 6565, 6708, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6704, 6567, 6567, 6567, 1, 5733, 5734, 6565, 6703, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6702, 6567, 6567, 1, 5733, 5734, 6565, 6703, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6699, 6567, 6567, 1, 5733, 5734, 6565, 6703, 6718, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6702, 6699, 6567, 6567, 1, 5733, 5734, 6565, 6703, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6699, 6567, 6567, 6567, 1, 5733, 5734, 6565, 6566, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6719, 6567, 6567, 1, 5733, 5734, 6565, 6566, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6720, 6567, 6567, 1, 5733, 5734, 6565, 6566, 6721, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6719, 6720, 6567, 6567, 1, 5733, 5734, 6565, 6566, 5735, 5733, 5733, 5733, 5736, 6565, 5733, 5733, 6720, 6567, 6567, 6567, 1, 6722, 1, 5702, 5702, 5702, 1, 211, 212, 211, 213, 213, 213, 214, 6723, 6723, 213, 1, 74, 75, 76, 77, 78, 1, 213, 213, 213, 213, 213, 73, 211, 212, 211, 213, 213, 213, 214, 6724, 6724, 213, 1, 74, 75, 76, 77, 78, 1, 213, 213, 213, 213, 213, 73, 211, 212, 211, 213, 213, 213, 6725, 214, 6726, 6726, 213, 1, 74, 75, 76, 77, 78, 1, 213, 213, 213, 213, 213, 73, 79, 6727, 6728, 6729, 6730, 6731, 6727, 6734, 6727, 6727, 1, 74, 75, 76, 77, 78, 1, 1, 6727, 6727, 6732, 6733, 6733, 73, 79, 6735, 6736, 6737, 6735, 6738, 6735, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 6735, 6735, 6735, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 6739, 6739, 6739, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 6735, 6735, 73, 79, 6737, 6740, 6737, 6738, 6737, 6737, 1, 74, 75, 76, 77, 78, 1, 1, 6737, 6737, 6737, 6737, 6737, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 6741, 6741, 6741, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 6737, 6737, 6737, 73, 79, 6742, 6743, 6744, 6734, 1, 74, 75, 76, 77, 78, 1, 1, 6745, 6746, 6746, 73, 79, 6747, 6748, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6749, 6749, 6749, 73, 79, 6747, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6749, 6749, 6749, 73, 79, 6747, 6750, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6749, 6749, 6749, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 6749, 6751, 6751, 73, 6752, 6753, 6752, 6754, 6755, 6756, 6757, 6758, 6755, 1, 74, 75, 76, 77, 78, 1, 6751, 6751, 6751, 73, 79, 6755, 6755, 1, 74, 75, 76, 77, 78, 1, 1, 6751, 6751, 6751, 73, 6752, 6753, 6752, 6754, 6757, 6758, 1, 74, 75, 76, 77, 78, 1, 6749, 6751, 6751, 73, 79, 6759, 6761, 1, 74, 75, 76, 77, 78, 1, 1, 6760, 6762, 73, 79, 6763, 1, 74, 75, 76, 77, 78, 1, 1, 6764, 73, 79, 6765, 1, 74, 75, 76, 77, 78, 1, 1, 6766, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 6767, 73, 6768, 6769, 6768, 6770, 6771, 1, 74, 75, 76, 77, 78, 1, 73, 200, 6772, 200, 6773, 6773, 6773, 6774, 6774, 6773, 1, 74, 75, 76, 77, 78, 1, 6773, 6773, 6773, 6773, 6773, 73, 6775, 1, 6776, 46, 6776, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 6776, 79, 6776, 6773, 6773, 6773, 6774, 6774, 6773, 1, 74, 75, 76, 77, 78, 1, 6773, 6773, 6773, 6773, 6773, 73, 6777, 6778, 6777, 6773, 6773, 6773, 6779, 200, 6780, 6773, 1, 74, 75, 76, 77, 78, 1, 6773, 6773, 6773, 6773, 73, 6781, 6782, 6781, 199, 200, 6780, 1, 74, 75, 76, 77, 78, 1, 73, 6783, 1, 6784, 46, 6784, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 6784, 79, 6784, 199, 200, 6780, 1, 74, 75, 76, 77, 78, 1, 73, 6780, 6785, 6780, 6786, 6787, 6786, 6786, 6788, 6786, 1, 74, 75, 76, 77, 78, 1, 6786, 6786, 6786, 6786, 6786, 73, 6789, 1, 6790, 46, 6790, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 6790, 79, 6790, 6786, 6787, 6786, 6786, 6788, 6786, 1, 74, 75, 76, 77, 78, 1, 6786, 6786, 6786, 6786, 6786, 73, 6791, 6792, 6791, 6786, 6786, 6786, 6779, 200, 6786, 1, 74, 75, 76, 77, 78, 1, 6786, 6786, 6786, 6786, 73, 6798, 6799, 6800, 1, 73, 6793, 6794, 6795, 6796, 6797, 1, 1, 6787, 6787, 1, 6793, 1, 6794, 1, 6795, 1, 6796, 1, 6801, 1, 6787, 46, 6787, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 6791, 6792, 6791, 6779, 200, 1, 74, 75, 76, 77, 78, 1, 73, 1, 79, 5879, 73, 74, 75, 76, 77, 78, 1, 5879, 5879, 6787, 79, 6803, 1, 74, 75, 76, 77, 78, 1, 1, 6802, 6802, 6802, 73, 79, 6805, 1, 74, 75, 76, 77, 78, 1, 1, 6804, 6804, 6804, 73, 79, 6805, 1, 74, 75, 76, 77, 78, 1, 1, 6806, 6806, 6806, 73, 79, 6805, 1, 74, 75, 76, 77, 78, 1, 1, 6807, 6807, 6807, 73, 79, 6805, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6809, 1, 74, 75, 76, 77, 78, 1, 1, 6808, 6808, 6808, 73, 79, 6811, 1, 74, 75, 76, 77, 78, 1, 1, 6810, 6810, 6810, 73, 79, 6811, 1, 74, 75, 76, 77, 78, 1, 1, 6812, 6812, 6812, 73, 79, 6811, 1, 74, 75, 76, 77, 78, 1, 1, 6813, 6813, 6813, 73, 79, 6811, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6815, 1, 74, 75, 76, 77, 78, 1, 1, 6814, 6814, 6814, 73, 79, 6817, 1, 74, 75, 76, 77, 78, 1, 1, 6816, 6816, 6816, 73, 79, 6817, 1, 74, 75, 76, 77, 78, 1, 1, 6818, 6818, 6818, 73, 79, 6817, 1, 74, 75, 76, 77, 78, 1, 1, 6819, 6819, 6819, 73, 79, 6817, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6821, 1, 74, 75, 76, 77, 78, 1, 1, 6820, 6820, 6820, 73, 79, 6823, 1, 74, 75, 76, 77, 78, 1, 1, 6822, 6822, 6822, 73, 79, 6823, 1, 74, 75, 76, 77, 78, 1, 1, 6824, 6824, 6824, 73, 79, 6823, 1, 74, 75, 76, 77, 78, 1, 1, 6825, 6825, 6825, 73, 79, 6823, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6827, 1, 74, 75, 76, 77, 78, 1, 1, 6826, 6826, 6826, 73, 79, 6829, 1, 74, 75, 76, 77, 78, 1, 1, 6828, 6828, 6828, 73, 79, 6829, 1, 74, 75, 76, 77, 78, 1, 1, 6830, 6830, 6830, 73, 79, 6829, 1, 74, 75, 76, 77, 78, 1, 1, 6831, 6831, 6831, 73, 79, 6829, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6833, 1, 74, 75, 76, 77, 78, 1, 1, 6832, 6832, 6832, 73, 79, 6835, 1, 74, 75, 76, 77, 78, 1, 1, 6834, 6834, 6834, 73, 79, 6835, 1, 74, 75, 76, 77, 78, 1, 1, 6836, 6836, 6836, 73, 79, 6835, 1, 74, 75, 76, 77, 78, 1, 1, 6837, 6837, 6837, 73, 79, 6835, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6838, 6839, 6840, 6842, 1, 74, 75, 76, 77, 78, 1, 1, 6841, 6843, 6843, 73, 79, 6844, 6846, 1, 74, 75, 76, 77, 78, 1, 1, 6845, 6845, 6845, 73, 79, 6847, 6848, 6849, 1, 74, 75, 76, 77, 78, 1, 1, 6850, 73, 79, 6851, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6852, 6853, 6854, 1, 74, 75, 76, 77, 78, 1, 1, 6855, 73, 79, 6856, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6857, 6858, 6859, 1, 74, 75, 76, 77, 78, 1, 1, 6860, 73, 79, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6860, 73, 79, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6857, 73, 79, 6861, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6860, 6857, 73, 79, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6857, 73, 79, 6856, 1, 74, 75, 76, 77, 78, 1, 1, 6855, 73, 79, 6856, 1, 74, 75, 76, 77, 78, 1, 1, 6852, 73, 79, 6856, 6862, 1, 74, 75, 76, 77, 78, 1, 1, 6855, 6852, 73, 79, 6856, 1, 74, 75, 76, 77, 78, 1, 1, 6852, 73, 79, 6851, 1, 74, 75, 76, 77, 78, 1, 1, 6850, 73, 79, 6851, 1, 74, 75, 76, 77, 78, 1, 1, 6847, 73, 79, 6851, 6863, 1, 74, 75, 76, 77, 78, 1, 1, 6850, 6847, 73, 79, 6851, 1, 74, 75, 76, 77, 78, 1, 1, 6847, 73, 79, 6846, 1, 74, 75, 76, 77, 78, 1, 1, 6864, 6864, 6864, 73, 79, 6846, 1, 74, 75, 76, 77, 78, 1, 1, 6865, 6865, 6865, 73, 79, 6846, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6857, 1, 74, 75, 76, 77, 78, 1, 1, 6866, 6866, 6866, 73, 79, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6867, 6867, 6867, 73, 79, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6868, 6868, 6868, 73, 79, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6857, 6857, 6857, 73, 79, 6844, 6846, 1, 74, 75, 76, 77, 78, 1, 1, 6869, 6845, 6845, 73, 79, 6844, 6846, 1, 74, 75, 76, 77, 78, 1, 1, 6870, 6864, 6864, 73, 79, 6844, 6846, 1, 74, 75, 76, 77, 78, 1, 1, 6865, 6865, 6865, 73, 79, 6844, 6871, 6846, 1, 74, 75, 76, 77, 78, 1, 1, 6869, 6872, 6845, 6845, 73, 79, 6844, 6846, 1, 74, 75, 76, 77, 78, 1, 1, 6870, 6864, 6864, 6864, 73, 79, 6844, 6846, 1, 74, 75, 76, 77, 78, 1, 1, 6864, 6864, 6864, 73, 79, 6844, 6846, 1, 74, 75, 76, 77, 78, 1, 1, 6872, 6845, 6845, 73, 79, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6866, 6866, 6866, 73, 79, 6846, 1, 74, 75, 76, 77, 78, 1, 1, 6845, 6845, 6845, 73, 79, 6873, 6874, 6875, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6876, 6877, 6877, 73, 79, 6844, 6879, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6878, 6878, 6878, 73, 79, 6879, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6880, 6880, 6880, 73, 79, 6879, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6881, 6881, 6881, 73, 79, 6879, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 6866, 6866, 6866, 73, 79, 6844, 6879, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6882, 6878, 6878, 73, 79, 6844, 6879, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6883, 6880, 6880, 73, 79, 6844, 6879, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6881, 6881, 6881, 73, 79, 6844, 6884, 6879, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6882, 6885, 6878, 6878, 73, 79, 6844, 6879, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6883, 6880, 6880, 6880, 73, 79, 6844, 6879, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6880, 6880, 6880, 73, 79, 6844, 6879, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6885, 6878, 6878, 73, 79, 6879, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6878, 6878, 6878, 73, 79, 6886, 6887, 6888, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6889, 6890, 6890, 73, 79, 6844, 6892, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6891, 6891, 6891, 73, 79, 6892, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6893, 6893, 6893, 73, 79, 6892, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6894, 6894, 6894, 73, 79, 6892, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6873, 6874, 6875, 1, 74, 75, 76, 77, 78, 1, 1, 6876, 6877, 6877, 73, 79, 6844, 6892, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6895, 6891, 6891, 73, 79, 6844, 6892, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6896, 6893, 6893, 73, 79, 6844, 6892, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6894, 6894, 6894, 73, 79, 6844, 6897, 6892, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6895, 6898, 6891, 6891, 73, 79, 6844, 6892, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6896, 6893, 6893, 6893, 73, 79, 6844, 6892, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6893, 6893, 6893, 73, 79, 6844, 6892, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6898, 6891, 6891, 73, 79, 6892, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6891, 6891, 6891, 73, 79, 6899, 6900, 6901, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6902, 6903, 6903, 73, 79, 6844, 6905, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6904, 6904, 6904, 73, 79, 6905, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6906, 6906, 6906, 73, 79, 6905, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6907, 6907, 6907, 73, 79, 6905, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6886, 6887, 6888, 1, 74, 75, 76, 77, 78, 1, 1, 6889, 6890, 6890, 73, 79, 6844, 6905, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6908, 6904, 6904, 73, 79, 6844, 6905, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6909, 6906, 6906, 73, 79, 6844, 6905, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6907, 6907, 6907, 73, 79, 6844, 6910, 6905, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6908, 6911, 6904, 6904, 73, 79, 6844, 6905, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6909, 6906, 6906, 6906, 73, 79, 6844, 6905, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6906, 6906, 6906, 73, 79, 6844, 6905, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6911, 6904, 6904, 73, 79, 6905, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6904, 6904, 6904, 73, 79, 6912, 6913, 6914, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6915, 6916, 6916, 73, 79, 6844, 6918, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6917, 6917, 6917, 73, 79, 6918, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6919, 6919, 6919, 73, 79, 6918, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6920, 6920, 6920, 73, 79, 6918, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6899, 6900, 6901, 1, 74, 75, 76, 77, 78, 1, 1, 6902, 6903, 6903, 73, 79, 6844, 6918, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6921, 6917, 6917, 73, 79, 6844, 6918, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6922, 6919, 6919, 73, 79, 6844, 6918, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6920, 6920, 6920, 73, 79, 6844, 6923, 6918, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6921, 6924, 6917, 6917, 73, 79, 6844, 6918, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6922, 6919, 6919, 6919, 73, 79, 6844, 6918, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6919, 6919, 6919, 73, 79, 6844, 6918, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6924, 6917, 6917, 73, 79, 6918, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6917, 6917, 6917, 73, 79, 6925, 6926, 6927, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6928, 6929, 6929, 73, 79, 6844, 6931, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6930, 6930, 6930, 73, 79, 6931, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6932, 6932, 6932, 73, 79, 6931, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6933, 6933, 6933, 73, 79, 6931, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6912, 6913, 6914, 1, 74, 75, 76, 77, 78, 1, 1, 6915, 6916, 6916, 73, 79, 6844, 6931, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6934, 6930, 6930, 73, 79, 6844, 6931, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6935, 6932, 6932, 73, 79, 6844, 6931, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6933, 6933, 6933, 73, 79, 6844, 6936, 6931, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6934, 6937, 6930, 6930, 73, 79, 6844, 6931, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6935, 6932, 6932, 6932, 73, 79, 6844, 6931, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6932, 6932, 6932, 73, 79, 6844, 6931, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6937, 6930, 6930, 73, 79, 6931, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6930, 6930, 6930, 73, 79, 6938, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6939, 6940, 6941, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6942, 6943, 6943, 73, 79, 6844, 6945, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6944, 6944, 6944, 73, 79, 6945, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6946, 6946, 6946, 73, 79, 6945, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6947, 6947, 6947, 73, 79, 6945, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6925, 6926, 6927, 1, 74, 75, 76, 77, 78, 1, 1, 6928, 6929, 6929, 73, 79, 6844, 6945, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6948, 6944, 6944, 73, 79, 6844, 6945, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6949, 6946, 6946, 73, 79, 6844, 6945, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6947, 6947, 6947, 73, 79, 6844, 6950, 6945, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6948, 6951, 6944, 6944, 73, 79, 6844, 6945, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6949, 6946, 6946, 6946, 73, 79, 6844, 6945, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6946, 6946, 6946, 73, 79, 6844, 6945, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6951, 6944, 6944, 73, 79, 6945, 6799, 1, 74, 75, 76, 77, 78, 1, 1, 6944, 6944, 6944, 73, 6777, 6778, 6777, 6773, 6773, 6773, 6779, 200, 6780, 6952, 6952, 6773, 1, 74, 75, 76, 77, 78, 1, 6773, 6773, 6773, 6773, 73, 6777, 6778, 6777, 6773, 6773, 6773, 6779, 200, 6780, 6953, 6953, 6773, 1, 74, 75, 76, 77, 78, 1, 6773, 6773, 6773, 6773, 73, 6777, 6778, 6777, 6773, 6773, 6773, 6779, 6954, 200, 6780, 6773, 1, 74, 75, 76, 77, 78, 1, 6773, 6773, 6773, 6773, 73, 6777, 6778, 6777, 6773, 6773, 6773, 6779, 200, 6780, 6955, 6955, 6773, 1, 74, 75, 76, 77, 78, 1, 6773, 6773, 6773, 6773, 73, 6777, 6778, 6777, 6773, 6773, 6773, 6779, 200, 6780, 6956, 6956, 6773, 1, 74, 75, 76, 77, 78, 1, 6773, 6773, 6773, 6773, 73, 6957, 6958, 6957, 6773, 6773, 6773, 6959, 6960, 6961, 6773, 1, 74, 75, 76, 77, 78, 1, 6773, 6773, 6773, 6773, 73, 6768, 6769, 6768, 6770, 6771, 1, 74, 75, 76, 77, 78, 1, 6767, 73, 6768, 6769, 6768, 6770, 6771, 1, 74, 75, 76, 77, 78, 1, 6766, 73, 6768, 6769, 6768, 6770, 6771, 1, 74, 75, 76, 77, 78, 1, 6962, 73, 6768, 6769, 6768, 6770, 6771, 1, 74, 75, 76, 77, 78, 1, 6764, 73, 6768, 6769, 6768, 6770, 6963, 6771, 1, 74, 75, 76, 77, 78, 1, 6962, 6764, 73, 6768, 6769, 6768, 6770, 6964, 6771, 1, 74, 75, 76, 77, 78, 1, 6764, 6766, 73, 6768, 6769, 6768, 6770, 6965, 6771, 1, 74, 75, 76, 77, 78, 1, 6766, 6767, 73, 6768, 6769, 6768, 6770, 6771, 1, 74, 75, 76, 77, 78, 1, 6767, 73, 79, 6966, 6967, 6968, 1, 74, 75, 76, 77, 78, 1, 1, 6969, 6751, 6751, 73, 79, 6747, 6970, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6749, 6749, 6749, 73, 79, 6971, 6972, 6973, 1, 74, 75, 76, 77, 78, 1, 1, 6974, 6751, 6751, 73, 79, 6747, 6975, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6749, 6749, 6749, 73, 79, 6976, 6977, 6978, 1, 74, 75, 76, 77, 78, 1, 1, 6979, 6751, 6751, 73, 6980, 6981, 6980, 6982, 6747, 6750, 6983, 6984, 6747, 1, 74, 75, 76, 77, 78, 1, 6749, 6749, 6749, 73, 6980, 6981, 6980, 6982, 6747, 6750, 6983, 6984, 6747, 1, 74, 75, 76, 77, 78, 1, 6979, 6749, 6749, 73, 6980, 6981, 6980, 6982, 6747, 6750, 6983, 6984, 6747, 1, 74, 75, 76, 77, 78, 1, 6976, 6749, 6749, 73, 6980, 6981, 6980, 6982, 6747, 6750, 6985, 6983, 6984, 6747, 1, 74, 75, 76, 77, 78, 1, 6979, 6976, 6749, 6749, 73, 6980, 6981, 6980, 6982, 6747, 6750, 6983, 6984, 6747, 1, 74, 75, 76, 77, 78, 1, 6976, 6749, 6749, 6749, 73, 79, 6747, 6975, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6974, 6749, 6749, 73, 79, 6747, 6975, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6971, 6749, 6749, 73, 79, 6747, 6975, 6986, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6974, 6971, 6749, 6749, 73, 79, 6747, 6975, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6971, 6749, 6749, 6749, 73, 79, 6747, 6970, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6969, 6749, 6749, 73, 79, 6747, 6970, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6966, 6749, 6749, 73, 79, 6747, 6970, 6987, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6969, 6966, 6749, 6749, 73, 79, 6747, 6970, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6966, 6749, 6749, 6749, 73, 79, 6747, 6748, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6988, 6749, 6749, 73, 79, 6747, 6748, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6989, 6749, 6749, 73, 79, 6747, 6748, 6990, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6988, 6989, 6749, 6749, 73, 79, 6747, 6748, 6747, 1, 74, 75, 76, 77, 78, 1, 1, 6989, 6749, 6749, 6749, 73, 79, 6992, 1, 74, 75, 76, 77, 78, 1, 1, 6991, 6991, 6991, 73, 79, 6994, 1, 74, 75, 76, 77, 78, 1, 1, 6993, 6993, 6993, 73, 79, 6994, 1, 74, 75, 76, 77, 78, 1, 1, 6995, 6995, 6995, 73, 79, 6994, 1, 74, 75, 76, 77, 78, 1, 1, 6996, 6996, 6996, 73, 79, 6994, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 6998, 1, 74, 75, 76, 77, 78, 1, 1, 6997, 6997, 6997, 73, 79, 7000, 1, 74, 75, 76, 77, 78, 1, 1, 6999, 6999, 6999, 73, 79, 7000, 1, 74, 75, 76, 77, 78, 1, 1, 7001, 7001, 7001, 73, 79, 7000, 1, 74, 75, 76, 77, 78, 1, 1, 7002, 7002, 7002, 73, 79, 7000, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7004, 1, 74, 75, 76, 77, 78, 1, 1, 7003, 7003, 7003, 73, 79, 7006, 1, 74, 75, 76, 77, 78, 1, 1, 7005, 7005, 7005, 73, 79, 7006, 1, 74, 75, 76, 77, 78, 1, 1, 7007, 7007, 7007, 73, 79, 7006, 1, 74, 75, 76, 77, 78, 1, 1, 7008, 7008, 7008, 73, 79, 7006, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7010, 1, 74, 75, 76, 77, 78, 1, 1, 7009, 7009, 7009, 73, 79, 7012, 1, 74, 75, 76, 77, 78, 1, 1, 7011, 7011, 7011, 73, 79, 7012, 1, 74, 75, 76, 77, 78, 1, 1, 7013, 7013, 7013, 73, 79, 7012, 1, 74, 75, 76, 77, 78, 1, 1, 7014, 7014, 7014, 73, 79, 7012, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7016, 1, 74, 75, 76, 77, 78, 1, 1, 7015, 7015, 7015, 73, 79, 7018, 1, 74, 75, 76, 77, 78, 1, 1, 7017, 7017, 7017, 73, 79, 7018, 1, 74, 75, 76, 77, 78, 1, 1, 7019, 7019, 7019, 73, 79, 7018, 1, 74, 75, 76, 77, 78, 1, 1, 7020, 7020, 7020, 73, 79, 7018, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7022, 1, 74, 75, 76, 77, 78, 1, 1, 7021, 7021, 7021, 73, 79, 7024, 1, 74, 75, 76, 77, 78, 1, 1, 7023, 7023, 7023, 73, 79, 7024, 1, 74, 75, 76, 77, 78, 1, 1, 7025, 7025, 7025, 73, 79, 7024, 1, 74, 75, 76, 77, 78, 1, 1, 7026, 7026, 7026, 73, 79, 7024, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7027, 7028, 7029, 7031, 1, 74, 75, 76, 77, 78, 1, 1, 7030, 7032, 7032, 73, 79, 7033, 7035, 1, 74, 75, 76, 77, 78, 1, 1, 7034, 7034, 7034, 73, 79, 7036, 7037, 7038, 1, 74, 75, 76, 77, 78, 1, 1, 7039, 73, 79, 7040, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7041, 7042, 7043, 1, 74, 75, 76, 77, 78, 1, 1, 7044, 73, 79, 7045, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7046, 7047, 7048, 1, 74, 75, 76, 77, 78, 1, 1, 7049, 73, 79, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 73, 7051, 7052, 7051, 7053, 7054, 7055, 1, 74, 75, 76, 77, 78, 1, 73, 79, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7049, 73, 79, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7046, 73, 79, 7056, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7049, 7046, 73, 79, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7046, 73, 79, 7045, 1, 74, 75, 76, 77, 78, 1, 1, 7044, 73, 79, 7045, 1, 74, 75, 76, 77, 78, 1, 1, 7041, 73, 79, 7045, 7057, 1, 74, 75, 76, 77, 78, 1, 1, 7044, 7041, 73, 79, 7045, 1, 74, 75, 76, 77, 78, 1, 1, 7041, 73, 79, 7040, 1, 74, 75, 76, 77, 78, 1, 1, 7039, 73, 79, 7040, 1, 74, 75, 76, 77, 78, 1, 1, 7036, 73, 79, 7040, 7058, 1, 74, 75, 76, 77, 78, 1, 1, 7039, 7036, 73, 79, 7040, 1, 74, 75, 76, 77, 78, 1, 1, 7036, 73, 79, 7035, 1, 74, 75, 76, 77, 78, 1, 1, 7059, 7059, 7059, 73, 79, 7035, 1, 74, 75, 76, 77, 78, 1, 1, 7060, 7060, 7060, 73, 79, 7035, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7046, 1, 74, 75, 76, 77, 78, 1, 1, 7061, 7061, 7061, 73, 79, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7062, 7062, 7062, 73, 79, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7063, 7063, 7063, 73, 79, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7046, 7046, 7046, 73, 79, 7033, 7035, 1, 74, 75, 76, 77, 78, 1, 1, 7064, 7034, 7034, 73, 79, 7033, 7035, 1, 74, 75, 76, 77, 78, 1, 1, 7065, 7059, 7059, 73, 79, 7033, 7035, 1, 74, 75, 76, 77, 78, 1, 1, 7060, 7060, 7060, 73, 79, 7033, 7066, 7035, 1, 74, 75, 76, 77, 78, 1, 1, 7064, 7067, 7034, 7034, 73, 79, 7033, 7035, 1, 74, 75, 76, 77, 78, 1, 1, 7065, 7059, 7059, 7059, 73, 79, 7033, 7035, 1, 74, 75, 76, 77, 78, 1, 1, 7059, 7059, 7059, 73, 79, 7033, 7035, 1, 74, 75, 76, 77, 78, 1, 1, 7067, 7034, 7034, 73, 79, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7061, 7061, 7061, 73, 79, 7035, 1, 74, 75, 76, 77, 78, 1, 1, 7034, 7034, 7034, 73, 79, 7068, 7069, 7070, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7071, 7072, 7072, 73, 79, 7033, 7074, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7073, 7073, 7073, 73, 79, 7074, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7075, 7075, 7075, 73, 79, 7074, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7076, 7076, 7076, 73, 79, 7074, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7061, 7061, 7061, 73, 79, 7033, 7074, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7077, 7073, 7073, 73, 79, 7033, 7074, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7078, 7075, 7075, 73, 79, 7033, 7074, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7076, 7076, 7076, 73, 79, 7033, 7079, 7074, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7077, 7080, 7073, 7073, 73, 79, 7033, 7074, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7078, 7075, 7075, 7075, 73, 79, 7033, 7074, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7075, 7075, 7075, 73, 79, 7033, 7074, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7080, 7073, 7073, 73, 79, 7074, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7073, 7073, 7073, 73, 79, 7081, 7082, 7083, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7084, 7085, 7085, 73, 79, 7033, 7087, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7086, 7086, 7086, 73, 79, 7087, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7088, 7088, 7088, 73, 79, 7087, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7089, 7089, 7089, 73, 79, 7087, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7068, 7069, 7070, 1, 74, 75, 76, 77, 78, 1, 1, 7071, 7072, 7072, 73, 79, 7033, 7087, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7090, 7086, 7086, 73, 79, 7033, 7087, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7091, 7088, 7088, 73, 79, 7033, 7087, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7089, 7089, 7089, 73, 79, 7033, 7092, 7087, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7090, 7093, 7086, 7086, 73, 79, 7033, 7087, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7091, 7088, 7088, 7088, 73, 79, 7033, 7087, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7088, 7088, 7088, 73, 79, 7033, 7087, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7093, 7086, 7086, 73, 79, 7087, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7086, 7086, 7086, 73, 79, 7094, 7095, 7096, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7097, 7098, 7098, 73, 79, 7033, 7100, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7099, 7099, 7099, 73, 79, 7100, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7101, 7101, 7101, 73, 79, 7100, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7102, 7102, 7102, 73, 79, 7100, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7081, 7082, 7083, 1, 74, 75, 76, 77, 78, 1, 1, 7084, 7085, 7085, 73, 79, 7033, 7100, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7103, 7099, 7099, 73, 79, 7033, 7100, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7104, 7101, 7101, 73, 79, 7033, 7100, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7102, 7102, 7102, 73, 79, 7033, 7105, 7100, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7103, 7106, 7099, 7099, 73, 79, 7033, 7100, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7104, 7101, 7101, 7101, 73, 79, 7033, 7100, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7101, 7101, 7101, 73, 79, 7033, 7100, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7106, 7099, 7099, 73, 79, 7100, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7099, 7099, 7099, 73, 79, 7107, 7108, 7109, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7110, 7111, 7111, 73, 79, 7033, 7113, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7112, 7112, 7112, 73, 79, 7113, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7114, 7114, 7114, 73, 79, 7113, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7115, 7115, 7115, 73, 79, 7113, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7094, 7095, 7096, 1, 74, 75, 76, 77, 78, 1, 1, 7097, 7098, 7098, 73, 79, 7033, 7113, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7116, 7112, 7112, 73, 79, 7033, 7113, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7117, 7114, 7114, 73, 79, 7033, 7113, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7115, 7115, 7115, 73, 79, 7033, 7118, 7113, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7116, 7119, 7112, 7112, 73, 79, 7033, 7113, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7117, 7114, 7114, 7114, 73, 79, 7033, 7113, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7114, 7114, 7114, 73, 79, 7033, 7113, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7119, 7112, 7112, 73, 79, 7113, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7112, 7112, 7112, 73, 79, 7120, 7121, 7122, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7123, 7124, 7124, 73, 79, 7033, 7126, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7125, 7125, 7125, 73, 79, 7126, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7127, 7127, 7127, 73, 79, 7126, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7128, 7128, 7128, 73, 79, 7126, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7107, 7108, 7109, 1, 74, 75, 76, 77, 78, 1, 1, 7110, 7111, 7111, 73, 79, 7033, 7126, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7129, 7125, 7125, 73, 79, 7033, 7126, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7130, 7127, 7127, 73, 79, 7033, 7126, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7128, 7128, 7128, 73, 79, 7033, 7131, 7126, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7129, 7132, 7125, 7125, 73, 79, 7033, 7126, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7130, 7127, 7127, 7127, 73, 79, 7033, 7126, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7127, 7127, 7127, 73, 79, 7033, 7126, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7132, 7125, 7125, 73, 79, 7126, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7125, 7125, 7125, 73, 79, 7133, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7134, 7135, 7136, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7137, 7138, 7138, 73, 79, 7033, 7140, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7139, 7139, 7139, 73, 79, 7140, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7141, 7141, 7141, 73, 79, 7140, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7142, 7142, 7142, 73, 79, 7140, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7120, 7121, 7122, 1, 74, 75, 76, 77, 78, 1, 1, 7123, 7124, 7124, 73, 79, 7033, 7140, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7143, 7139, 7139, 73, 79, 7033, 7140, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7144, 7141, 7141, 73, 79, 7033, 7140, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7142, 7142, 7142, 73, 79, 7033, 7145, 7140, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7143, 7146, 7139, 7139, 73, 79, 7033, 7140, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7144, 7141, 7141, 7141, 73, 79, 7033, 7140, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7141, 7141, 7141, 73, 79, 7033, 7140, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7146, 7139, 7139, 73, 79, 7140, 7050, 1, 74, 75, 76, 77, 78, 1, 1, 7139, 7139, 7139, 73, 79, 6735, 6736, 7147, 7148, 6735, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7149, 7149, 7149, 73, 79, 6735, 6736, 7147, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 6735, 7149, 7149, 7149, 73, 79, 6735, 6736, 7147, 7150, 6735, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7149, 7149, 7149, 73, 79, 6735, 6736, 6737, 6735, 6738, 6735, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 6735, 7149, 7151, 7151, 73, 6752, 6753, 6752, 6735, 6736, 6754, 7152, 7153, 7154, 6758, 6735, 6738, 7152, 6735, 1, 74, 75, 76, 77, 78, 1, 6735, 7151, 7151, 7151, 73, 79, 6735, 6736, 7152, 6737, 6735, 6738, 7152, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 6735, 7151, 7151, 7151, 73, 6752, 6753, 6752, 6735, 6736, 6754, 7154, 6758, 6735, 6738, 6735, 6735, 1, 74, 75, 76, 77, 78, 1, 6735, 7149, 7151, 7151, 73, 79, 6737, 6740, 7155, 7157, 6737, 6738, 6737, 6737, 1, 74, 75, 76, 77, 78, 1, 1, 6737, 6737, 7156, 7158, 6737, 6737, 73, 79, 6737, 6740, 7159, 6737, 6738, 6737, 6737, 1, 74, 75, 76, 77, 78, 1, 1, 6737, 6737, 7160, 6737, 6737, 73, 79, 6737, 6740, 7161, 6737, 6738, 6737, 6737, 1, 74, 75, 76, 77, 78, 1, 1, 6737, 6737, 7162, 6737, 6737, 73, 79, 6737, 6740, 6737, 6737, 6738, 6737, 6737, 1, 74, 75, 76, 77, 78, 1, 1, 6737, 6737, 7163, 6737, 6737, 73, 6768, 6769, 6768, 6737, 6740, 6770, 6771, 6737, 6738, 6737, 6737, 1, 74, 75, 76, 77, 78, 1, 6737, 6737, 6737, 6737, 73, 6768, 6769, 6768, 6737, 6740, 6770, 6771, 6737, 6738, 6737, 6737, 1, 74, 75, 76, 77, 78, 1, 6737, 7163, 6737, 6737, 73, 6768, 6769, 6768, 6737, 6740, 6770, 6771, 6737, 6738, 6737, 6737, 1, 74, 75, 76, 77, 78, 1, 6737, 7162, 6737, 6737, 73, 6768, 6769, 6768, 6737, 6740, 6770, 6771, 6737, 6738, 6737, 6737, 1, 74, 75, 76, 77, 78, 1, 6737, 7164, 6737, 6737, 73, 6768, 6769, 6768, 6737, 6740, 6770, 6771, 6737, 6738, 6737, 6737, 1, 74, 75, 76, 77, 78, 1, 6737, 7160, 6737, 6737, 73, 6768, 6769, 6768, 6737, 6740, 6770, 7165, 6771, 6737, 6738, 6737, 6737, 1, 74, 75, 76, 77, 78, 1, 6737, 7164, 7160, 6737, 6737, 73, 6768, 6769, 6768, 6737, 6740, 6770, 7166, 6771, 6737, 6738, 6737, 6737, 1, 74, 75, 76, 77, 78, 1, 6737, 7160, 7162, 6737, 6737, 73, 6768, 6769, 6768, 6737, 6740, 6770, 7167, 6771, 6737, 6738, 6737, 6737, 1, 74, 75, 76, 77, 78, 1, 6737, 7162, 7163, 6737, 6737, 73, 6768, 6769, 6768, 6737, 6740, 6770, 6771, 6737, 6738, 6737, 6737, 1, 74, 75, 76, 77, 78, 1, 6737, 7163, 6737, 6737, 6737, 73, 79, 6735, 6736, 7168, 7169, 7170, 6737, 6735, 6738, 6735, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 6735, 7171, 7151, 7151, 73, 79, 6735, 6736, 7147, 7172, 6735, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7149, 7149, 7149, 73, 79, 6735, 6736, 7173, 7174, 7175, 6737, 6735, 6738, 6735, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 6735, 7176, 7151, 7151, 73, 79, 6735, 6736, 7147, 7177, 6735, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7149, 7149, 7149, 73, 79, 6735, 6736, 7178, 7179, 7180, 6737, 6735, 6738, 6735, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 6735, 7181, 7151, 7151, 73, 6980, 6981, 6980, 6735, 6736, 6982, 7147, 7150, 7182, 6984, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 6735, 7149, 7149, 7149, 73, 6980, 6981, 6980, 6735, 6736, 6982, 7147, 7150, 7182, 6984, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 6735, 7181, 7149, 7149, 73, 6980, 6981, 6980, 6735, 6736, 6982, 7147, 7150, 7182, 6984, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 6735, 7178, 7149, 7149, 73, 6980, 6981, 6980, 6735, 6736, 6982, 7147, 7150, 7183, 7182, 6984, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 6735, 7181, 7178, 7149, 7149, 73, 6980, 6981, 6980, 6735, 6736, 6982, 7147, 7150, 7182, 6984, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 6735, 7178, 7149, 7149, 7149, 73, 79, 6735, 6736, 7147, 7177, 6735, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7176, 7149, 7149, 73, 79, 6735, 6736, 7147, 7177, 6735, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7173, 7149, 7149, 73, 79, 6735, 6736, 7147, 7177, 6735, 7184, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7176, 7173, 7149, 7149, 73, 79, 6735, 6736, 7147, 7177, 6735, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7173, 7149, 7149, 7149, 73, 79, 6735, 6736, 7147, 7172, 6735, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7171, 7149, 7149, 73, 79, 6735, 6736, 7147, 7172, 6735, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7168, 7149, 7149, 73, 79, 6735, 6736, 7147, 7172, 6735, 7185, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7171, 7168, 7149, 7149, 73, 79, 6735, 6736, 7147, 7172, 6735, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7168, 7149, 7149, 7149, 73, 79, 6735, 6736, 7147, 7148, 6735, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7186, 7149, 7149, 73, 79, 6735, 6736, 7147, 7148, 6735, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7187, 7149, 7149, 73, 79, 6735, 6736, 7147, 7148, 6735, 7188, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7186, 7187, 7149, 7149, 73, 79, 6735, 6736, 7147, 7148, 6735, 6737, 6735, 6738, 7147, 6735, 1, 74, 75, 76, 77, 78, 1, 1, 6735, 7187, 7149, 7149, 7149, 73, 211, 212, 211, 213, 213, 213, 7189, 214, 213, 1, 74, 75, 76, 77, 78, 1, 213, 213, 213, 213, 213, 73, 79, 7190, 7190, 7191, 7190, 7190, 7190, 7190, 1, 74, 75, 76, 77, 78, 1, 1, 7190, 7190, 7190, 7190, 73, 79, 7190, 7190, 7191, 7192, 7190, 7190, 7190, 7190, 1, 74, 75, 76, 77, 78, 1, 1, 7190, 7190, 7190, 7190, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7193, 7193, 7193, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7190, 7190, 7190, 73, 79, 7192, 7194, 7195, 7196, 7192, 7192, 7192, 7192, 1, 74, 75, 76, 77, 78, 1, 1, 7192, 7192, 7192, 7192, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7197, 7197, 7197, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7192, 7192, 7192, 73, 79, 184, 185, 184, 184, 184, 1, 74, 75, 76, 77, 78, 1, 1, 184, 184, 184, 184, 73, 79, 177, 178, 179, 180, 181, 182, 7198, 177, 177, 7198, 177, 1, 74, 75, 76, 77, 78, 1, 1, 177, 177, 177, 177, 73, 73, 79, 73, 178, 73, 7199, 7200, 7201, 7202, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 73, 73, 73, 177, 79, 7203, 7204, 7203, 184, 184, 179, 186, 181, 182, 184, 184, 7205, 7203, 1, 74, 75, 76, 77, 78, 1, 1, 184, 7203, 7203, 7203, 7203, 73, 79, 7206, 7207, 7206, 187, 187, 189, 190, 191, 187, 187, 7205, 7206, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7206, 7206, 7206, 7206, 73, 79, 7205, 7205, 7205, 7209, 7210, 7211, 7205, 1, 74, 75, 76, 77, 78, 1, 1, 7205, 7205, 7208, 7208, 7205, 7205, 7208, 7205, 73, 79, 7205, 7205, 7205, 7209, 7210, 7211, 7205, 1, 74, 75, 76, 77, 78, 1, 1, 7205, 7205, 7205, 7205, 7205, 73, 79, 7205, 7205, 7205, 7209, 7210, 7211, 7205, 1, 74, 75, 76, 77, 78, 1, 1, 7205, 7205, 7206, 7206, 7205, 7205, 7206, 7205, 73, 79, 177, 178, 179, 180, 181, 182, 7212, 7213, 177, 177, 7212, 7213, 177, 1, 74, 75, 76, 77, 78, 1, 1, 177, 177, 177, 177, 73, 73, 79, 73, 178, 73, 7214, 7215, 7216, 7217, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 73, 73, 73, 177, 79, 177, 178, 179, 180, 181, 182, 7218, 177, 177, 7218, 177, 1, 74, 75, 76, 77, 78, 1, 1, 177, 177, 177, 177, 73, 79, 177, 178, 179, 180, 181, 182, 7219, 177, 177, 7219, 177, 1, 74, 75, 76, 77, 78, 1, 1, 177, 177, 177, 177, 73, 73, 79, 73, 178, 73, 179, 7220, 181, 182, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 73, 73, 73, 177, 79, 7221, 7222, 7221, 184, 184, 179, 186, 181, 182, 184, 184, 7223, 7221, 1, 74, 75, 76, 77, 78, 1, 1, 184, 7221, 7221, 7221, 7221, 73, 79, 7224, 7225, 7224, 187, 187, 7226, 7227, 7228, 187, 187, 7229, 7224, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7224, 7224, 7224, 7224, 73, 79, 7229, 7229, 7229, 7231, 7232, 7233, 7229, 1, 74, 75, 76, 77, 78, 1, 1, 7229, 7229, 7230, 7230, 7229, 7229, 7230, 7229, 73, 79, 7229, 7229, 7229, 7231, 7232, 7233, 7229, 1, 74, 75, 76, 77, 78, 1, 1, 7229, 7229, 7229, 7229, 7229, 73, 79, 7229, 7229, 7229, 7231, 7232, 7233, 7229, 1, 74, 75, 76, 77, 78, 1, 1, 7229, 7229, 7224, 7224, 7229, 7229, 7224, 7229, 73, 79, 177, 178, 179, 180, 181, 182, 7234, 177, 177, 7234, 177, 1, 74, 75, 76, 77, 78, 1, 1, 177, 177, 177, 177, 73, 79, 177, 178, 179, 180, 181, 182, 7235, 177, 177, 7235, 177, 1, 74, 75, 76, 77, 78, 1, 1, 177, 177, 177, 177, 73, 79, 177, 178, 179, 180, 181, 182, 7236, 177, 177, 7236, 177, 1, 74, 75, 76, 77, 78, 1, 1, 177, 177, 177, 177, 73, 79, 177, 178, 179, 180, 181, 182, 7237, 177, 177, 7237, 177, 1, 74, 75, 76, 77, 78, 1, 1, 177, 177, 177, 177, 73, 79, 177, 178, 179, 180, 181, 182, 7238, 177, 177, 7238, 177, 1, 74, 75, 76, 77, 78, 1, 1, 177, 177, 177, 177, 73, 79, 177, 178, 179, 180, 181, 182, 7239, 177, 177, 7239, 177, 1, 74, 75, 76, 77, 78, 1, 1, 177, 177, 177, 177, 73, 79, 177, 178, 179, 180, 181, 182, 7240, 177, 177, 7240, 177, 1, 74, 75, 76, 77, 78, 1, 1, 177, 177, 177, 177, 73, 79, 177, 178, 179, 180, 181, 182, 7241, 177, 177, 7241, 177, 1, 74, 75, 76, 77, 78, 1, 1, 177, 177, 177, 177, 73, 73, 79, 73, 178, 73, 179, 7242, 181, 182, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 73, 73, 73, 177, 79, 7243, 7244, 7243, 184, 184, 179, 186, 181, 182, 7245, 7246, 7247, 7248, 184, 184, 7249, 7245, 7246, 7247, 7248, 7243, 1, 74, 75, 76, 77, 78, 1, 1, 184, 7243, 7243, 7243, 7243, 73, 79, 7250, 7251, 7250, 187, 187, 7252, 7253, 7254, 187, 187, 7255, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 7255, 7255, 7255, 7257, 7258, 7259, 7255, 1, 74, 75, 76, 77, 78, 1, 1, 7255, 7255, 7256, 7256, 7255, 7255, 7256, 7255, 73, 79, 7255, 7255, 7255, 7257, 7258, 7259, 7255, 1, 74, 75, 76, 77, 78, 1, 1, 7255, 7255, 7255, 7255, 7255, 73, 79, 7255, 7255, 7255, 7257, 7258, 7259, 7255, 1, 74, 75, 76, 77, 78, 1, 1, 7255, 7255, 7250, 7250, 7255, 7255, 7250, 7255, 73, 79, 7250, 7251, 7250, 187, 187, 7252, 7253, 7254, 7260, 187, 187, 7255, 7260, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 7250, 7251, 7250, 187, 187, 7252, 7253, 7254, 7261, 187, 187, 7255, 7261, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 7250, 7251, 7250, 187, 187, 7252, 7253, 7254, 7262, 187, 187, 7255, 7262, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 7250, 7251, 7250, 187, 187, 7263, 7264, 7265, 187, 187, 7255, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 7250, 7251, 7250, 187, 187, 7252, 7253, 7254, 7266, 7267, 187, 187, 7255, 7266, 7267, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 7250, 7251, 7250, 187, 187, 7252, 7253, 7254, 7268, 187, 187, 7255, 7268, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 7250, 7251, 7250, 187, 187, 7269, 7270, 7271, 187, 187, 7255, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 7250, 7251, 7250, 187, 187, 7252, 7253, 7254, 7272, 187, 187, 7255, 7272, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 7250, 7251, 7250, 187, 187, 7273, 7274, 7275, 187, 187, 7255, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 7250, 7251, 7250, 187, 187, 7252, 7253, 7254, 7276, 187, 187, 7255, 7276, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 7250, 7251, 7250, 187, 187, 7252, 7253, 7254, 7277, 187, 187, 7255, 7277, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 7250, 7251, 7250, 187, 187, 7278, 7279, 7280, 187, 187, 7255, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 7250, 7251, 7250, 187, 187, 7252, 7253, 7254, 7281, 187, 187, 7255, 7281, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 7250, 7251, 7250, 187, 187, 7282, 7283, 7284, 7285, 187, 187, 7255, 7285, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 7250, 7251, 7250, 187, 187, 7286, 7287, 7288, 187, 187, 7255, 7250, 1, 74, 75, 76, 77, 78, 1, 1, 187, 7250, 7250, 7250, 7250, 73, 79, 169, 170, 171, 1, 74, 75, 76, 77, 78, 1, 1, 168, 73, 79, 169, 170, 171, 1, 74, 75, 76, 77, 78, 1, 1, 167, 73, 79, 169, 170, 171, 1, 74, 75, 76, 77, 78, 1, 1, 7289, 73, 79, 169, 170, 171, 1, 74, 75, 76, 77, 78, 1, 1, 165, 73, 79, 7290, 169, 170, 171, 1, 74, 75, 76, 77, 78, 1, 1, 7289, 165, 73, 79, 7291, 169, 170, 171, 1, 74, 75, 76, 77, 78, 1, 1, 165, 167, 73, 79, 7292, 169, 170, 171, 1, 74, 75, 76, 77, 78, 1, 1, 167, 168, 73, 79, 169, 170, 171, 1, 74, 75, 76, 77, 78, 1, 1, 168, 73, 79, 7293, 7294, 7295, 1, 74, 75, 76, 77, 78, 1, 1, 7296, 153, 153, 73, 79, 149, 7297, 149, 1, 74, 75, 76, 77, 78, 1, 1, 151, 151, 151, 73, 79, 7298, 7299, 7300, 1, 74, 75, 76, 77, 78, 1, 1, 7301, 153, 153, 73, 79, 149, 7302, 149, 1, 74, 75, 76, 77, 78, 1, 1, 151, 151, 151, 73, 79, 7303, 7304, 7305, 1, 74, 75, 76, 77, 78, 1, 1, 7306, 153, 153, 73, 79, 149, 152, 7307, 7308, 7309, 7310, 149, 1, 74, 75, 76, 77, 78, 1, 1, 151, 151, 151, 73, 79, 149, 152, 7307, 7308, 7309, 7310, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7306, 151, 151, 73, 79, 149, 152, 7307, 7308, 7309, 7310, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7303, 151, 151, 73, 79, 149, 152, 7311, 7307, 7308, 7309, 7310, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7306, 7303, 151, 151, 73, 79, 149, 152, 7307, 7308, 7309, 7310, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7303, 151, 151, 151, 73, 79, 149, 7302, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7301, 151, 151, 73, 79, 149, 7302, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7298, 151, 151, 73, 79, 149, 7302, 7312, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7301, 7298, 151, 151, 73, 79, 149, 7302, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7298, 151, 151, 151, 73, 79, 149, 7297, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7296, 151, 151, 73, 79, 149, 7297, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7293, 151, 151, 73, 79, 149, 7297, 7313, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7296, 7293, 151, 151, 73, 79, 149, 7297, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7293, 151, 151, 151, 73, 79, 149, 150, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7314, 151, 151, 73, 79, 149, 150, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7315, 151, 151, 73, 79, 149, 150, 7316, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7314, 7315, 151, 151, 73, 79, 149, 150, 149, 1, 74, 75, 76, 77, 78, 1, 1, 7315, 151, 151, 151, 73, 79, 7318, 1, 74, 75, 76, 77, 78, 1, 1, 7317, 7317, 7317, 73, 79, 7320, 1, 74, 75, 76, 77, 78, 1, 1, 7319, 7319, 7319, 73, 79, 7320, 1, 74, 75, 76, 77, 78, 1, 1, 7321, 7321, 7321, 73, 79, 7320, 1, 74, 75, 76, 77, 78, 1, 1, 7322, 7322, 7322, 73, 79, 7320, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7324, 1, 74, 75, 76, 77, 78, 1, 1, 7323, 7323, 7323, 73, 79, 7326, 1, 74, 75, 76, 77, 78, 1, 1, 7325, 7325, 7325, 73, 79, 7326, 1, 74, 75, 76, 77, 78, 1, 1, 7327, 7327, 7327, 73, 79, 7326, 1, 74, 75, 76, 77, 78, 1, 1, 7328, 7328, 7328, 73, 79, 7326, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7330, 1, 74, 75, 76, 77, 78, 1, 1, 7329, 7329, 7329, 73, 79, 7332, 1, 74, 75, 76, 77, 78, 1, 1, 7331, 7331, 7331, 73, 79, 7332, 1, 74, 75, 76, 77, 78, 1, 1, 7333, 7333, 7333, 73, 79, 7332, 1, 74, 75, 76, 77, 78, 1, 1, 7334, 7334, 7334, 73, 79, 7332, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7336, 1, 74, 75, 76, 77, 78, 1, 1, 7335, 7335, 7335, 73, 79, 7338, 1, 74, 75, 76, 77, 78, 1, 1, 7337, 7337, 7337, 73, 79, 7338, 1, 74, 75, 76, 77, 78, 1, 1, 7339, 7339, 7339, 73, 79, 7338, 1, 74, 75, 76, 77, 78, 1, 1, 7340, 7340, 7340, 73, 79, 7338, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7342, 1, 74, 75, 76, 77, 78, 1, 1, 7341, 7341, 7341, 73, 79, 7344, 1, 74, 75, 76, 77, 78, 1, 1, 7343, 7343, 7343, 73, 79, 7344, 1, 74, 75, 76, 77, 78, 1, 1, 7345, 7345, 7345, 73, 79, 7344, 1, 74, 75, 76, 77, 78, 1, 1, 7346, 7346, 7346, 73, 79, 7344, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7348, 1, 74, 75, 76, 77, 78, 1, 1, 7347, 7347, 7347, 73, 79, 7350, 1, 74, 75, 76, 77, 78, 1, 1, 7349, 7349, 7349, 73, 79, 7350, 1, 74, 75, 76, 77, 78, 1, 1, 7351, 7351, 7351, 73, 79, 7350, 1, 74, 75, 76, 77, 78, 1, 1, 7352, 7352, 7352, 73, 79, 7350, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7353, 7354, 7355, 7357, 1, 74, 75, 76, 77, 78, 1, 1, 7356, 7358, 7358, 73, 79, 7359, 7361, 1, 74, 75, 76, 77, 78, 1, 1, 7360, 7360, 7360, 73, 79, 7362, 7363, 7364, 1, 74, 75, 76, 77, 78, 1, 1, 7365, 73, 79, 7366, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7367, 7368, 7369, 1, 74, 75, 76, 77, 78, 1, 1, 7370, 73, 79, 7371, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7372, 7373, 7374, 1, 74, 75, 76, 77, 78, 1, 1, 7375, 73, 79, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7377, 7378, 7379, 7380, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7375, 73, 79, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7372, 73, 79, 7381, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7375, 7372, 73, 79, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7372, 73, 79, 7371, 1, 74, 75, 76, 77, 78, 1, 1, 7370, 73, 79, 7371, 1, 74, 75, 76, 77, 78, 1, 1, 7367, 73, 79, 7371, 7382, 1, 74, 75, 76, 77, 78, 1, 1, 7370, 7367, 73, 79, 7371, 1, 74, 75, 76, 77, 78, 1, 1, 7367, 73, 79, 7366, 1, 74, 75, 76, 77, 78, 1, 1, 7365, 73, 79, 7366, 1, 74, 75, 76, 77, 78, 1, 1, 7362, 73, 79, 7366, 7383, 1, 74, 75, 76, 77, 78, 1, 1, 7365, 7362, 73, 79, 7366, 1, 74, 75, 76, 77, 78, 1, 1, 7362, 73, 79, 7361, 1, 74, 75, 76, 77, 78, 1, 1, 7384, 7384, 7384, 73, 79, 7361, 1, 74, 75, 76, 77, 78, 1, 1, 7385, 7385, 7385, 73, 79, 7361, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7372, 1, 74, 75, 76, 77, 78, 1, 1, 7386, 7386, 7386, 73, 79, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7387, 7387, 7387, 73, 79, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7388, 7388, 7388, 73, 79, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7372, 7372, 7372, 73, 79, 7359, 7361, 1, 74, 75, 76, 77, 78, 1, 1, 7389, 7360, 7360, 73, 79, 7359, 7361, 1, 74, 75, 76, 77, 78, 1, 1, 7390, 7384, 7384, 73, 79, 7359, 7361, 1, 74, 75, 76, 77, 78, 1, 1, 7385, 7385, 7385, 73, 79, 7359, 7391, 7361, 1, 74, 75, 76, 77, 78, 1, 1, 7389, 7392, 7360, 7360, 73, 79, 7359, 7361, 1, 74, 75, 76, 77, 78, 1, 1, 7390, 7384, 7384, 7384, 73, 79, 7359, 7361, 1, 74, 75, 76, 77, 78, 1, 1, 7384, 7384, 7384, 73, 79, 7359, 7361, 1, 74, 75, 76, 77, 78, 1, 1, 7392, 7360, 7360, 73, 79, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7386, 7386, 7386, 73, 79, 7361, 1, 74, 75, 76, 77, 78, 1, 1, 7360, 7360, 7360, 73, 79, 7393, 7394, 7395, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7396, 7397, 7397, 73, 79, 7359, 7399, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7398, 7398, 7398, 73, 79, 7399, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7400, 7400, 7400, 73, 79, 7399, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7401, 7401, 7401, 73, 79, 7399, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7386, 7386, 7386, 73, 79, 7359, 7399, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7402, 7398, 7398, 73, 79, 7359, 7399, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7403, 7400, 7400, 73, 79, 7359, 7399, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7401, 7401, 7401, 73, 79, 7359, 7404, 7399, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7402, 7405, 7398, 7398, 73, 79, 7359, 7399, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7403, 7400, 7400, 7400, 73, 79, 7359, 7399, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7400, 7400, 7400, 73, 79, 7359, 7399, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7405, 7398, 7398, 73, 79, 7399, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7398, 7398, 7398, 73, 79, 7406, 7407, 7408, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7409, 7410, 7410, 73, 79, 7359, 7412, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7411, 7411, 7411, 73, 79, 7412, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7413, 7413, 7413, 73, 79, 7412, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7414, 7414, 7414, 73, 79, 7412, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7393, 7394, 7395, 1, 74, 75, 76, 77, 78, 1, 1, 7396, 7397, 7397, 73, 79, 7359, 7412, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7415, 7411, 7411, 73, 79, 7359, 7412, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7416, 7413, 7413, 73, 79, 7359, 7412, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7414, 7414, 7414, 73, 79, 7359, 7417, 7412, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7415, 7418, 7411, 7411, 73, 79, 7359, 7412, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7416, 7413, 7413, 7413, 73, 79, 7359, 7412, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7413, 7413, 7413, 73, 79, 7359, 7412, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7418, 7411, 7411, 73, 79, 7412, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7411, 7411, 7411, 73, 79, 7419, 7420, 7421, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7422, 7423, 7423, 73, 79, 7359, 7425, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7424, 7424, 7424, 73, 79, 7425, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7426, 7426, 7426, 73, 79, 7425, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7427, 7427, 7427, 73, 79, 7425, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7406, 7407, 7408, 1, 74, 75, 76, 77, 78, 1, 1, 7409, 7410, 7410, 73, 79, 7359, 7425, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7428, 7424, 7424, 73, 79, 7359, 7425, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7429, 7426, 7426, 73, 79, 7359, 7425, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7427, 7427, 7427, 73, 79, 7359, 7430, 7425, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7428, 7431, 7424, 7424, 73, 79, 7359, 7425, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7429, 7426, 7426, 7426, 73, 79, 7359, 7425, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7426, 7426, 7426, 73, 79, 7359, 7425, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7431, 7424, 7424, 73, 79, 7425, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7424, 7424, 7424, 73, 79, 7432, 7433, 7434, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7435, 7436, 7436, 73, 79, 7359, 7438, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7437, 7437, 7437, 73, 79, 7438, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7439, 7439, 7439, 73, 79, 7438, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7440, 7440, 7440, 73, 79, 7438, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7419, 7420, 7421, 1, 74, 75, 76, 77, 78, 1, 1, 7422, 7423, 7423, 73, 79, 7359, 7438, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7441, 7437, 7437, 73, 79, 7359, 7438, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7442, 7439, 7439, 73, 79, 7359, 7438, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7440, 7440, 7440, 73, 79, 7359, 7443, 7438, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7441, 7444, 7437, 7437, 73, 79, 7359, 7438, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7442, 7439, 7439, 7439, 73, 79, 7359, 7438, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7439, 7439, 7439, 73, 79, 7359, 7438, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7444, 7437, 7437, 73, 79, 7438, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7437, 7437, 7437, 73, 79, 7445, 7446, 7447, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7448, 7449, 7449, 73, 79, 7359, 7451, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7450, 7450, 7450, 73, 79, 7451, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7452, 7452, 7452, 73, 79, 7451, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7453, 7453, 7453, 73, 79, 7451, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7432, 7433, 7434, 1, 74, 75, 76, 77, 78, 1, 1, 7435, 7436, 7436, 73, 79, 7359, 7451, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7454, 7450, 7450, 73, 79, 7359, 7451, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7455, 7452, 7452, 73, 79, 7359, 7451, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7453, 7453, 7453, 73, 79, 7359, 7456, 7451, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7454, 7457, 7450, 7450, 73, 79, 7359, 7451, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7455, 7452, 7452, 7452, 73, 79, 7359, 7451, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7452, 7452, 7452, 73, 79, 7359, 7451, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7457, 7450, 7450, 73, 79, 7451, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7450, 7450, 7450, 73, 79, 7458, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7459, 7460, 7461, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7462, 7463, 7463, 73, 79, 7359, 7465, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7464, 7464, 7464, 73, 79, 7465, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7466, 7466, 7466, 73, 79, 7465, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7467, 7467, 7467, 73, 79, 7465, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 73, 79, 7445, 7446, 7447, 1, 74, 75, 76, 77, 78, 1, 1, 7448, 7449, 7449, 73, 79, 7359, 7465, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7468, 7464, 7464, 73, 79, 7359, 7465, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7469, 7466, 7466, 73, 79, 7359, 7465, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7467, 7467, 7467, 73, 79, 7359, 7470, 7465, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7468, 7471, 7464, 7464, 73, 79, 7359, 7465, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7469, 7466, 7466, 7466, 73, 79, 7359, 7465, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7466, 7466, 7466, 73, 79, 7359, 7465, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7471, 7464, 7464, 73, 79, 7465, 7376, 1, 74, 75, 76, 77, 78, 1, 1, 7464, 7464, 7464, 73, 79, 137, 138, 7472, 7473, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7474, 7474, 7474, 73, 79, 137, 138, 7472, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7474, 7474, 7474, 73, 79, 137, 138, 7472, 7475, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7474, 7474, 7474, 73, 79, 137, 138, 139, 137, 137, 137, 140, 137, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7474, 7476, 7476, 73, 79, 137, 138, 7477, 7478, 7479, 7480, 137, 158, 7481, 140, 7477, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7476, 7476, 7476, 73, 79, 137, 138, 7477, 139, 137, 137, 137, 140, 7477, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7476, 7476, 7476, 73, 79, 137, 138, 7479, 7480, 137, 158, 7481, 140, 137, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7474, 7476, 7476, 73, 79, 139, 142, 7482, 7484, 139, 140, 139, 139, 1, 74, 75, 76, 77, 78, 1, 1, 139, 7483, 7485, 139, 139, 73, 79, 139, 142, 7486, 139, 140, 139, 139, 1, 74, 75, 76, 77, 78, 1, 1, 139, 7487, 139, 139, 73, 79, 139, 142, 7488, 139, 140, 139, 139, 1, 74, 75, 76, 77, 78, 1, 1, 139, 7489, 139, 139, 73, 79, 139, 142, 139, 139, 140, 139, 139, 1, 74, 75, 76, 77, 78, 1, 1, 139, 7490, 139, 139, 73, 79, 139, 142, 169, 170, 171, 140, 139, 139, 1, 74, 75, 76, 77, 78, 1, 1, 139, 139, 139, 139, 73, 79, 139, 142, 169, 170, 171, 140, 139, 139, 1, 74, 75, 76, 77, 78, 1, 1, 139, 7490, 139, 139, 73, 79, 139, 142, 169, 170, 171, 140, 139, 139, 1, 74, 75, 76, 77, 78, 1, 1, 139, 7489, 139, 139, 73, 79, 139, 142, 169, 170, 171, 140, 139, 139, 1, 74, 75, 76, 77, 78, 1, 1, 139, 7491, 139, 139, 73, 79, 139, 142, 169, 170, 171, 140, 139, 139, 1, 74, 75, 76, 77, 78, 1, 1, 139, 7487, 139, 139, 73, 79, 139, 142, 7492, 169, 170, 171, 140, 139, 139, 1, 74, 75, 76, 77, 78, 1, 1, 139, 7491, 7487, 139, 139, 73, 79, 139, 142, 7493, 169, 170, 171, 140, 139, 139, 1, 74, 75, 76, 77, 78, 1, 1, 139, 7487, 7489, 139, 139, 73, 79, 139, 142, 7494, 169, 170, 171, 140, 139, 139, 1, 74, 75, 76, 77, 78, 1, 1, 139, 7489, 7490, 139, 139, 73, 79, 139, 142, 169, 170, 171, 140, 139, 139, 1, 74, 75, 76, 77, 78, 1, 1, 139, 7490, 139, 139, 139, 73, 79, 7495, 137, 7496, 137, 7497, 137, 137, 137, 140, 7498, 7499, 7500, 172, 172, 7495, 7498, 7499, 7500, 7495, 1, 74, 75, 76, 77, 78, 1, 1, 7495, 7495, 7495, 73, 73, 79, 73, 73, 137, 7502, 137, 7503, 7504, 73, 7505, 181, 7506, 140, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 177, 73, 7501, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7507, 7507, 7507, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7501, 7501, 7501, 73, 79, 7503, 7508, 139, 177, 177, 179, 7509, 181, 182, 140, 177, 177, 7503, 7503, 1, 74, 75, 76, 77, 78, 1, 1, 7503, 7503, 7503, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7510, 7510, 7510, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7503, 7503, 7503, 73, 79, 7511, 7512, 139, 184, 184, 179, 7513, 181, 182, 140, 184, 184, 7511, 7511, 1, 74, 75, 76, 77, 78, 1, 1, 7511, 7511, 7511, 73, 79, 7514, 7515, 139, 187, 187, 189, 139, 190, 191, 140, 187, 187, 7514, 7514, 1, 74, 75, 76, 77, 78, 1, 1, 7514, 7514, 7514, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7516, 7516, 7516, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7514, 7514, 7514, 73, 79, 7511, 7512, 139, 184, 184, 139, 140, 184, 184, 7511, 7511, 1, 74, 75, 76, 77, 78, 1, 1, 7511, 7511, 7511, 73, 73, 79, 73, 73, 137, 7518, 137, 7511, 7504, 73, 7519, 181, 7506, 140, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 184, 73, 7517, 73, 79, 73, 73, 137, 7521, 137, 7514, 7522, 73, 137, 190, 7523, 140, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 187, 73, 7520, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7524, 7524, 7524, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7520, 7520, 73, 73, 79, 73, 73, 137, 7526, 137, 137, 7527, 73, 73, 140, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 137, 7190, 73, 7525, 73, 79, 73, 73, 137, 7526, 137, 137, 7527, 137, 7528, 140, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 73, 7190, 73, 7525, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7529, 7529, 7529, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7525, 7525, 7525, 73, 79, 7527, 7530, 139, 139, 7190, 7190, 7531, 7190, 140, 7190, 7190, 7527, 7527, 1, 74, 75, 76, 77, 78, 1, 1, 7527, 7527, 7527, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7532, 7532, 7532, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7527, 7527, 7527, 73, 79, 7531, 7533, 7534, 139, 7192, 7192, 139, 7196, 7192, 140, 7192, 7192, 7531, 7531, 1, 74, 75, 76, 77, 78, 1, 1, 7531, 7531, 7531, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7535, 7535, 7535, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7531, 7531, 7531, 73, 79, 7527, 7530, 139, 139, 7190, 7190, 139, 7190, 140, 7190, 7190, 7527, 7527, 1, 74, 75, 76, 77, 78, 1, 1, 7527, 7527, 7527, 73, 73, 79, 73, 73, 137, 7536, 7537, 137, 7531, 73, 7196, 140, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 137, 7192, 73, 7528, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7538, 7538, 7538, 73, 79, 1, 74, 75, 76, 77, 78, 1, 1, 7528, 7528, 7528, 73, 73, 79, 73, 73, 137, 7518, 137, 7511, 73, 73, 140, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 137, 184, 73, 7517, 79, 7501, 137, 7502, 137, 7503, 7504, 7505, 181, 7506, 140, 7539, 177, 177, 7501, 7539, 7501, 1, 74, 75, 76, 77, 78, 1, 1, 7501, 7501, 7501, 73, 73, 79, 73, 73, 137, 7502, 137, 7503, 7540, 73, 7541, 7201, 7542, 140, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 177, 73, 7501, 79, 7543, 137, 7544, 7543, 137, 7517, 7511, 7504, 7519, 181, 7506, 140, 184, 184, 7205, 7543, 1, 74, 75, 76, 77, 78, 1, 1, 7517, 7543, 7543, 7543, 73, 79, 7545, 137, 7546, 7545, 137, 7520, 7514, 7522, 137, 190, 7523, 140, 187, 187, 7205, 7545, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7545, 7545, 7545, 73, 79, 7205, 7205, 7205, 7209, 7210, 7211, 7205, 1, 74, 75, 76, 77, 78, 1, 1, 7205, 7205, 7547, 7547, 7205, 7205, 7547, 7205, 73, 79, 7205, 7205, 7205, 7209, 7210, 7211, 7205, 1, 74, 75, 76, 77, 78, 1, 1, 7205, 7205, 7545, 7545, 7205, 7205, 7545, 7205, 73, 79, 7501, 137, 7502, 137, 7503, 7504, 7505, 181, 7506, 140, 7548, 7549, 177, 177, 7501, 7548, 7549, 7501, 1, 74, 75, 76, 77, 78, 1, 1, 7501, 7501, 7501, 73, 73, 79, 73, 73, 137, 7502, 137, 7503, 7550, 73, 7551, 7216, 7552, 140, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 177, 73, 7501, 79, 7501, 137, 7502, 137, 7503, 7504, 7505, 181, 7506, 140, 7553, 177, 177, 7501, 7553, 7501, 1, 74, 75, 76, 77, 78, 1, 1, 7501, 7501, 7501, 73, 79, 7501, 137, 7502, 137, 7503, 7504, 7505, 181, 7506, 140, 7554, 177, 177, 7501, 7554, 7501, 1, 74, 75, 76, 77, 78, 1, 1, 7501, 7501, 7501, 73, 73, 79, 73, 73, 137, 7502, 137, 7503, 7504, 73, 7555, 181, 7506, 140, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 177, 73, 7501, 79, 7556, 137, 7557, 7556, 137, 7517, 7511, 7504, 7519, 181, 7506, 140, 184, 184, 7223, 7556, 1, 74, 75, 76, 77, 78, 1, 1, 7517, 7556, 7556, 7556, 73, 79, 7558, 137, 7559, 7558, 137, 7520, 7514, 7560, 137, 7227, 7561, 140, 187, 187, 7229, 7558, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7558, 7558, 7558, 73, 79, 7229, 7229, 7229, 7231, 7232, 7233, 7229, 1, 74, 75, 76, 77, 78, 1, 1, 7229, 7229, 7562, 7562, 7229, 7229, 7562, 7229, 73, 79, 7229, 7229, 7229, 7231, 7232, 7233, 7229, 1, 74, 75, 76, 77, 78, 1, 1, 7229, 7229, 7558, 7558, 7229, 7229, 7558, 7229, 73, 79, 7501, 137, 7502, 137, 7503, 7504, 7505, 181, 7506, 140, 7563, 177, 177, 7501, 7563, 7501, 1, 74, 75, 76, 77, 78, 1, 1, 7501, 7501, 7501, 73, 79, 7501, 137, 7502, 137, 7503, 7504, 7505, 181, 7506, 140, 7564, 177, 177, 7501, 7564, 7501, 1, 74, 75, 76, 77, 78, 1, 1, 7501, 7501, 7501, 73, 79, 7501, 137, 7502, 137, 7503, 7504, 7505, 181, 7506, 140, 7565, 177, 177, 7501, 7565, 7501, 1, 74, 75, 76, 77, 78, 1, 1, 7501, 7501, 7501, 73, 79, 7501, 137, 7502, 137, 7503, 7504, 7505, 181, 7506, 140, 7566, 177, 177, 7501, 7566, 7501, 1, 74, 75, 76, 77, 78, 1, 1, 7501, 7501, 7501, 73, 79, 7501, 137, 7502, 137, 7503, 7504, 7505, 181, 7506, 140, 7567, 177, 177, 7501, 7567, 7501, 1, 74, 75, 76, 77, 78, 1, 1, 7501, 7501, 7501, 73, 79, 7501, 137, 7502, 137, 7503, 7504, 7505, 181, 7506, 140, 7568, 177, 177, 7501, 7568, 7501, 1, 74, 75, 76, 77, 78, 1, 1, 7501, 7501, 7501, 73, 79, 7501, 137, 7502, 137, 7503, 7504, 7505, 181, 7506, 140, 7569, 177, 177, 7501, 7569, 7501, 1, 74, 75, 76, 77, 78, 1, 1, 7501, 7501, 7501, 73, 79, 7501, 137, 7502, 137, 7503, 7504, 7505, 181, 7506, 140, 7570, 177, 177, 7501, 7570, 7501, 1, 74, 75, 76, 77, 78, 1, 1, 7501, 7501, 7501, 73, 73, 79, 73, 73, 137, 7502, 137, 7503, 7504, 73, 7571, 181, 7506, 140, 73, 73, 73, 1, 73, 74, 75, 76, 77, 78, 1, 177, 73, 7501, 79, 7572, 137, 7573, 7572, 137, 7517, 7511, 7504, 7519, 181, 7506, 140, 7574, 7575, 7576, 7577, 184, 184, 7249, 7574, 7575, 7576, 7577, 7572, 1, 74, 75, 76, 77, 78, 1, 1, 7517, 7572, 7572, 7572, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7580, 137, 7253, 7581, 140, 187, 187, 7255, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 7255, 7255, 7255, 7257, 7258, 7259, 7255, 1, 74, 75, 76, 77, 78, 1, 1, 7255, 7255, 7582, 7582, 7255, 7255, 7582, 7255, 73, 79, 7255, 7255, 7255, 7257, 7258, 7259, 7255, 1, 74, 75, 76, 77, 78, 1, 1, 7255, 7255, 7578, 7578, 7255, 7255, 7578, 7255, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7580, 137, 7253, 7581, 140, 7583, 187, 187, 7255, 7583, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7580, 137, 7253, 7581, 140, 7584, 187, 187, 7255, 7584, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7580, 137, 7253, 7581, 140, 7585, 187, 187, 7255, 7585, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7586, 137, 7264, 7587, 140, 187, 187, 7255, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7580, 137, 7253, 7581, 140, 7588, 7589, 187, 187, 7255, 7588, 7589, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7580, 137, 7253, 7581, 140, 7590, 187, 187, 7255, 7590, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7591, 137, 7270, 7592, 140, 187, 187, 7255, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7580, 137, 7253, 7581, 140, 7593, 187, 187, 7255, 7593, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7594, 137, 7274, 7595, 140, 187, 187, 7255, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7580, 137, 7253, 7581, 140, 7596, 187, 187, 7255, 7596, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7580, 137, 7253, 7581, 140, 7597, 187, 187, 7255, 7597, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7598, 137, 7279, 7599, 140, 187, 187, 7255, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7580, 137, 7253, 7581, 140, 7600, 187, 187, 7255, 7600, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7601, 137, 7283, 7602, 140, 7603, 187, 187, 7255, 7603, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 7578, 137, 7579, 7578, 137, 7520, 7514, 7604, 137, 7287, 7605, 140, 187, 187, 7255, 7578, 1, 74, 75, 76, 77, 78, 1, 1, 7520, 7578, 7578, 7578, 73, 79, 137, 138, 7606, 7607, 7608, 139, 137, 137, 137, 140, 137, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7609, 7476, 7476, 73, 79, 137, 138, 7472, 7610, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7474, 7474, 7474, 73, 79, 137, 138, 7611, 7612, 7613, 139, 137, 137, 137, 140, 137, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7614, 7476, 7476, 73, 79, 137, 138, 7472, 7615, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7474, 7474, 7474, 73, 79, 137, 138, 7616, 7617, 7618, 139, 137, 137, 137, 140, 137, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7619, 7476, 7476, 73, 79, 137, 138, 7472, 7475, 7620, 7621, 137, 7309, 7622, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7474, 7474, 7474, 73, 79, 137, 138, 7472, 7475, 7620, 7621, 137, 7309, 7622, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7619, 7474, 7474, 73, 79, 137, 138, 7472, 7475, 7620, 7621, 137, 7309, 7622, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7616, 7474, 7474, 73, 79, 137, 138, 7472, 7475, 7623, 7620, 7621, 137, 7309, 7622, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7619, 7616, 7474, 7474, 73, 79, 137, 138, 7472, 7475, 7620, 7621, 137, 7309, 7622, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7616, 7474, 7474, 7474, 73, 79, 137, 138, 7472, 7615, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7614, 7474, 7474, 73, 79, 137, 138, 7472, 7615, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7611, 7474, 7474, 73, 79, 137, 138, 7472, 7615, 7624, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7614, 7611, 7474, 7474, 73, 79, 137, 138, 7472, 7615, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7611, 7474, 7474, 7474, 73, 79, 137, 138, 7472, 7610, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7609, 7474, 7474, 73, 79, 137, 138, 7472, 7610, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7606, 7474, 7474, 73, 79, 137, 138, 7472, 7610, 7625, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7609, 7606, 7474, 7474, 73, 79, 137, 138, 7472, 7610, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7606, 7474, 7474, 7474, 73, 79, 137, 138, 7472, 7473, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7626, 7474, 7474, 73, 79, 137, 138, 7472, 7473, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7627, 7474, 7474, 73, 79, 137, 138, 7472, 7473, 7628, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7626, 7627, 7474, 7474, 73, 79, 137, 138, 7472, 7473, 139, 137, 137, 137, 140, 7472, 137, 1, 74, 75, 76, 77, 78, 1, 1, 137, 7627, 7474, 7474, 7474, 73, 79, 7629, 1, 74, 75, 76, 77, 78, 1, 1, 73, 60, 60, 61, 61, 61, 62, 7630, 7630, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 7631, 7631, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 7632, 61, 62, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 7633, 7633, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 7634, 7634, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 7635, 7635, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 7636, 7636, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 7637, 7637, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 7638, 7638, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 7639, 7639, 61, 61, 61, 61, 61, 61, 1, 60, 60, 61, 61, 61, 62, 7640, 7640, 61, 61, 61, 61, 61, 61, 1, 7641, 7641, 61, 61, 61, 7642, 61, 61, 61, 61, 61, 61, 1, 7643, 7643, 7644, 1, 7644, 7645, 7644, 7646, 1, 7647, 1, 7648, 7648, 1, 7648, 7648, 7646, 1, 7649, 7650, 7649, 7651, 1, 7652, 7653, 7652, 7654, 7654, 7654, 7655, 7656, 7657, 7658, 7659, 7660, 7661, 7662, 7663, 7664, 7665, 7654, 7666, 7666, 7666, 7666, 7654, 7654, 7654, 7654, 7654, 7666, 7666, 7666, 7666, 7666, 1, 7667, 1, 7668, 7668, 1, 7668, 7668, 7654, 7654, 7654, 7655, 7656, 7657, 7658, 7659, 7660, 7661, 7662, 7663, 7664, 7665, 7654, 7666, 7666, 7666, 7666, 7654, 7654, 7654, 7654, 7654, 7666, 7666, 7666, 7666, 7666, 1, 7669, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7671, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7672, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7673, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7674, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7675, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7676, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7677, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7678, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7679, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7680, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7681, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7682, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7683, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7684, 7685, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7686, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7687, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7688, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7689, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7690, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7691, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7692, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7693, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7694, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7695, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7696, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7697, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7698, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7699, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7700, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7701, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7702, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7703, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7704, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7705, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7706, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7707, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7708, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7709, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7710, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7711, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7712, 7713, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7714, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7715, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7716, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7717, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7718, 7719, 7720, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7721, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7722, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7723, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7724, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7725, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7726, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7727, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7728, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7729, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7730, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7731, 7732, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7733, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7734, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7735, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7736, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7737, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7738, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7739, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7740, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7741, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7742, 7743, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7744, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7745, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7746, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7747, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7748, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7749, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7750, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7751, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7752, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7753, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7754, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7755, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7756, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7757, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7758, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7759, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7669, 7670, 7670, 7670, 7760, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7761, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 7670, 1, 7762, 7666, 7666, 7666, 7666, 7666, 7666, 7666, 7666, 7666, 1, 7649, 7650, 7649, 7763, 1, 7649, 7650, 7649, 7764, 1, 7649, 7650, 7649, 7765, 1, 7649, 7650, 7649, 7766, 1, 7649, 7650, 7649, 7767, 1, 7649, 7650, 7649, 7768, 1, 7649, 7650, 7649, 7769, 1, 7649, 7650, 7649, 7770, 1, 7649, 7650, 7649, 1, 7771, 1, 7772, 46, 7772, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 47, 47, 47, 47, 47, 47, 1, 7773, 7774, 7773, 1, 66, 67, 68, 69, 70, 1, 65, 43, 1, 40, 1, 36, 36, 1, 26, 27, 28, 29, 7775, 27, 7776, 27, 27, 27, 27, 27, 1, 28, 7777, 7778, 28, 7779, 28, 28, 28, 28, 28, 1, 7780, 7780, 7780, 1, 28, 28, 28, 1, 7778, 7781, 7778, 7779, 7778, 7778, 7778, 7778, 7778, 7778, 1, 7782, 7782, 7782, 1, 7778, 7778, 7778, 1, 7783, 7784, 7785, 32, 7786, 7787, 7787, 1, 7788, 7789, 7788, 7790, 7790, 7790, 1, 7788, 7788, 7790, 7790, 7790, 1, 7788, 7791, 7788, 7790, 7790, 7790, 1, 7790, 7787, 7787, 1, 26, 7792, 7793, 7794, 31, 7792, 7787, 7787, 7787, 1, 7792, 7792, 7787, 7787, 7787, 1, 26, 7794, 31, 7790, 7787, 7787, 1, 7795, 7797, 7796, 7798, 1, 7799, 7800, 1, 7801, 7802, 1, 7803, 1, 26, 31, 1, 26, 31, 7804, 31, 31, 31, 31, 31, 31, 1, 7805, 7805, 7805, 1, 31, 31, 31, 1, 26, 31, 7803, 1, 26, 31, 7802, 1, 26, 31, 7798, 1, 26, 31, 7800, 1, 26, 7806, 31, 7798, 7800, 1, 26, 7807, 31, 7800, 7802, 1, 26, 7808, 31, 7802, 7803, 1, 26, 31, 7803, 1, 7809, 7810, 7811, 7812, 7787, 7787, 1, 7788, 7813, 7788, 7790, 7790, 7790, 1, 7814, 7815, 7816, 7817, 7787, 7787, 1, 7788, 7818, 7788, 7790, 7790, 7790, 1, 7819, 7820, 7821, 7822, 7787, 7787, 1, 26, 7788, 7791, 7794, 31, 7788, 7790, 7790, 7790, 1, 26, 7788, 7791, 7794, 31, 7788, 7822, 7790, 7790, 1, 26, 7788, 7791, 7794, 31, 7788, 7819, 7790, 7790, 1, 26, 7788, 7791, 7823, 7794, 31, 7788, 7822, 7819, 7790, 7790, 1, 26, 7788, 7791, 7794, 31, 7788, 7819, 7790, 7790, 7790, 1, 7788, 7818, 7788, 7817, 7790, 7790, 1, 7788, 7818, 7788, 7814, 7790, 7790, 1, 7788, 7818, 7824, 7788, 7817, 7814, 7790, 7790, 1, 7788, 7818, 7788, 7814, 7790, 7790, 7790, 1, 7788, 7813, 7788, 7812, 7790, 7790, 1, 7788, 7813, 7788, 7809, 7790, 7790, 1, 7788, 7813, 7825, 7788, 7812, 7809, 7790, 7790, 1, 7788, 7813, 7788, 7809, 7790, 7790, 7790, 1, 7788, 7789, 7788, 7786, 7790, 7790, 1, 7788, 7789, 7788, 7783, 7790, 7790, 1, 7788, 7789, 7826, 7788, 7786, 7783, 7790, 7790, 1, 7788, 7789, 7788, 7783, 7790, 7790, 7790, 1, 7828, 7827, 7827, 7827, 1, 7830, 7829, 7829, 7829, 1, 7830, 7831, 7831, 7831, 1, 7830, 7832, 7832, 7832, 1, 7830, 1, 7834, 7833, 7833, 7833, 1, 7836, 7835, 7835, 7835, 1, 7836, 7837, 7837, 7837, 1, 7836, 7838, 7838, 7838, 1, 7836, 1, 7840, 7839, 7839, 7839, 1, 7842, 7841, 7841, 7841, 1, 7842, 7843, 7843, 7843, 1, 7842, 7844, 7844, 7844, 1, 7842, 1, 7846, 7845, 7845, 7845, 1, 7848, 7847, 7847, 7847, 1, 7848, 7849, 7849, 7849, 1, 7848, 7850, 7850, 7850, 1, 7848, 1, 7852, 7851, 7851, 7851, 1, 7854, 7853, 7853, 7853, 1, 7854, 7855, 7855, 7855, 1, 7854, 7856, 7856, 7856, 1, 7854, 1, 7858, 7857, 7857, 7857, 1, 7860, 7859, 7859, 7859, 1, 7860, 7861, 7861, 7861, 1, 7860, 7862, 7862, 7862, 1, 7860, 1, 7863, 7864, 7865, 7867, 7866, 7868, 7868, 1, 7869, 7871, 7870, 7870, 7870, 1, 7872, 7873, 7874, 7875, 1, 7876, 1, 7877, 7878, 7879, 7880, 1, 7881, 1, 7882, 7883, 7884, 7885, 1, 7886, 1, 26, 7794, 31, 1, 7886, 7885, 1, 7886, 7882, 1, 7887, 7886, 7885, 7882, 1, 7886, 7882, 1, 7881, 7880, 1, 7881, 7877, 1, 7881, 7888, 7880, 7877, 1, 7881, 7877, 1, 7876, 7875, 1, 7876, 7872, 1, 7876, 7889, 7875, 7872, 1, 7876, 7872, 1, 7871, 7890, 7890, 7890, 1, 7871, 7891, 7891, 7891, 1, 7871, 1, 7882, 7892, 7892, 7892, 1, 7886, 7893, 7893, 7893, 1, 7886, 7894, 7894, 7894, 1, 7886, 7882, 7882, 7882, 1, 7869, 7871, 7895, 7870, 7870, 1, 7869, 7871, 7896, 7890, 7890, 1, 7869, 7871, 7891, 7891, 7891, 1, 7869, 7897, 7871, 7895, 7898, 7870, 7870, 1, 7869, 7871, 7896, 7890, 7890, 7890, 1, 7869, 7871, 7890, 7890, 7890, 1, 7869, 7871, 7898, 7870, 7870, 1, 7886, 7892, 7892, 7892, 1, 7871, 7870, 7870, 7870, 1, 7899, 7900, 7901, 7886, 7902, 7903, 7903, 1, 7869, 7905, 7886, 7904, 7904, 7904, 1, 7905, 7886, 7906, 7906, 7906, 1, 7905, 7886, 7907, 7907, 7907, 1, 7905, 7886, 1, 7892, 7892, 7892, 1, 7869, 7905, 7886, 7908, 7904, 7904, 1, 7869, 7905, 7886, 7909, 7906, 7906, 1, 7869, 7905, 7886, 7907, 7907, 7907, 1, 7869, 7910, 7905, 7886, 7908, 7911, 7904, 7904, 1, 7869, 7905, 7886, 7909, 7906, 7906, 7906, 1, 7869, 7905, 7886, 7906, 7906, 7906, 1, 7869, 7905, 7886, 7911, 7904, 7904, 1, 7905, 7886, 7904, 7904, 7904, 1, 7912, 7913, 7914, 7886, 7915, 7916, 7916, 1, 7869, 7918, 7886, 7917, 7917, 7917, 1, 7918, 7886, 7919, 7919, 7919, 1, 7918, 7886, 7920, 7920, 7920, 1, 7918, 7886, 1, 7899, 7900, 7901, 7902, 7903, 7903, 1, 7869, 7918, 7886, 7921, 7917, 7917, 1, 7869, 7918, 7886, 7922, 7919, 7919, 1, 7869, 7918, 7886, 7920, 7920, 7920, 1, 7869, 7923, 7918, 7886, 7921, 7924, 7917, 7917, 1, 7869, 7918, 7886, 7922, 7919, 7919, 7919, 1, 7869, 7918, 7886, 7919, 7919, 7919, 1, 7869, 7918, 7886, 7924, 7917, 7917, 1, 7918, 7886, 7917, 7917, 7917, 1, 7925, 7926, 7927, 7886, 7928, 7929, 7929, 1, 7869, 7931, 7886, 7930, 7930, 7930, 1, 7931, 7886, 7932, 7932, 7932, 1, 7931, 7886, 7933, 7933, 7933, 1, 7931, 7886, 1, 7912, 7913, 7914, 7915, 7916, 7916, 1, 7869, 7931, 7886, 7934, 7930, 7930, 1, 7869, 7931, 7886, 7935, 7932, 7932, 1, 7869, 7931, 7886, 7933, 7933, 7933, 1, 7869, 7936, 7931, 7886, 7934, 7937, 7930, 7930, 1, 7869, 7931, 7886, 7935, 7932, 7932, 7932, 1, 7869, 7931, 7886, 7932, 7932, 7932, 1, 7869, 7931, 7886, 7937, 7930, 7930, 1, 7931, 7886, 7930, 7930, 7930, 1, 7938, 7939, 7940, 7886, 7941, 7942, 7942, 1, 7869, 7944, 7886, 7943, 7943, 7943, 1, 7944, 7886, 7945, 7945, 7945, 1, 7944, 7886, 7946, 7946, 7946, 1, 7944, 7886, 1, 7925, 7926, 7927, 7928, 7929, 7929, 1, 7869, 7944, 7886, 7947, 7943, 7943, 1, 7869, 7944, 7886, 7948, 7945, 7945, 1, 7869, 7944, 7886, 7946, 7946, 7946, 1, 7869, 7949, 7944, 7886, 7947, 7950, 7943, 7943, 1, 7869, 7944, 7886, 7948, 7945, 7945, 7945, 1, 7869, 7944, 7886, 7945, 7945, 7945, 1, 7869, 7944, 7886, 7950, 7943, 7943, 1, 7944, 7886, 7943, 7943, 7943, 1, 7951, 7952, 7953, 7886, 7954, 7955, 7955, 1, 7869, 7957, 7886, 7956, 7956, 7956, 1, 7957, 7886, 7958, 7958, 7958, 1, 7957, 7886, 7959, 7959, 7959, 1, 7957, 7886, 1, 7938, 7939, 7940, 7941, 7942, 7942, 1, 7869, 7957, 7886, 7960, 7956, 7956, 1, 7869, 7957, 7886, 7961, 7958, 7958, 1, 7869, 7957, 7886, 7959, 7959, 7959, 1, 7869, 7962, 7957, 7886, 7960, 7963, 7956, 7956, 1, 7869, 7957, 7886, 7961, 7958, 7958, 7958, 1, 7869, 7957, 7886, 7958, 7958, 7958, 1, 7869, 7957, 7886, 7963, 7956, 7956, 1, 7957, 7886, 7956, 7956, 7956, 1, 7964, 1, 7965, 7966, 7967, 7886, 7968, 7969, 7969, 1, 7869, 7971, 7886, 7970, 7970, 7970, 1, 7971, 7886, 7972, 7972, 7972, 1, 7971, 7886, 7973, 7973, 7973, 1, 7971, 7886, 1, 7951, 7952, 7953, 7954, 7955, 7955, 1, 7869, 7971, 7886, 7974, 7970, 7970, 1, 7869, 7971, 7886, 7975, 7972, 7972, 1, 7869, 7971, 7886, 7973, 7973, 7973, 1, 7869, 7976, 7971, 7886, 7974, 7977, 7970, 7970, 1, 7869, 7971, 7886, 7975, 7972, 7972, 7972, 1, 7869, 7971, 7886, 7972, 7972, 7972, 1, 7869, 7971, 7886, 7977, 7970, 7970, 1, 7971, 7886, 7970, 7970, 7970, 1, 7978, 7978, 7978, 1, 27, 27, 27, 1, 26, 7775, 7979, 31, 7775, 31, 7776, 7775, 7775, 7775, 31, 7775, 7775, 1, 7980, 7980, 7980, 1, 7775, 7775, 7775, 1, 26, 31, 7804, 31, 32, 31, 31, 31, 31, 31, 1, 26, 27, 28, 29, 7981, 7775, 27, 7776, 27, 27, 27, 27, 27, 1, 26, 7982, 7983, 7984, 7775, 7982, 7776, 7985, 7982, 7982, 7982, 7982, 7982, 1, 26, 7982, 7983, 7984, 7986, 7982, 7987, 7982, 7982, 7982, 7982, 7982, 1, 7983, 7988, 7989, 7983, 7990, 7983, 7983, 7983, 7983, 7983, 1, 7991, 7991, 7991, 1, 7983, 7983, 7983, 1, 7989, 7992, 7989, 7990, 7989, 7989, 7989, 7989, 7989, 7989, 1, 7993, 7993, 7993, 1, 7989, 7989, 7989, 1, 7994, 7995, 7996, 7985, 7997, 7998, 7998, 1, 7999, 8000, 7999, 8001, 8001, 8001, 1, 7999, 7999, 8001, 8001, 8001, 1, 7999, 8002, 7999, 8001, 8001, 8001, 1, 8001, 7998, 7998, 1, 26, 8003, 8004, 31, 8005, 31, 8003, 7998, 7998, 7998, 1, 8003, 8003, 7998, 7998, 7998, 1, 26, 31, 8005, 31, 8001, 7998, 7998, 1, 8006, 8008, 8007, 8009, 1, 8010, 8011, 1, 8012, 8013, 1, 8014, 1, 26, 31, 31, 1, 26, 31, 31, 8014, 1, 26, 31, 31, 8013, 1, 26, 31, 31, 8009, 1, 26, 31, 31, 8011, 1, 26, 31, 8015, 31, 8009, 8011, 1, 26, 31, 8016, 31, 8011, 8013, 1, 26, 31, 8017, 31, 8013, 8014, 1, 26, 31, 31, 8014, 1, 8018, 8019, 8020, 8021, 7998, 7998, 1, 7999, 8022, 7999, 8001, 8001, 8001, 1, 8023, 8024, 8025, 8026, 7998, 7998, 1, 7999, 8027, 7999, 8001, 8001, 8001, 1, 8028, 8029, 8030, 8031, 7998, 7998, 1, 26, 7999, 8002, 31, 8005, 31, 7999, 8001, 8001, 8001, 1, 26, 7999, 8002, 31, 8005, 31, 7999, 8031, 8001, 8001, 1, 26, 7999, 8002, 31, 8005, 31, 7999, 8028, 8001, 8001, 1, 26, 7999, 8002, 31, 8032, 8005, 31, 7999, 8031, 8028, 8001, 8001, 1, 26, 7999, 8002, 31, 8005, 31, 7999, 8028, 8001, 8001, 8001, 1, 7999, 8027, 7999, 8026, 8001, 8001, 1, 7999, 8027, 7999, 8023, 8001, 8001, 1, 7999, 8027, 8033, 7999, 8026, 8023, 8001, 8001, 1, 7999, 8027, 7999, 8023, 8001, 8001, 8001, 1, 7999, 8022, 7999, 8021, 8001, 8001, 1, 7999, 8022, 7999, 8018, 8001, 8001, 1, 7999, 8022, 8034, 7999, 8021, 8018, 8001, 8001, 1, 7999, 8022, 7999, 8018, 8001, 8001, 8001, 1, 7999, 8000, 7999, 7997, 8001, 8001, 1, 7999, 8000, 7999, 7994, 8001, 8001, 1, 7999, 8000, 8035, 7999, 7997, 7994, 8001, 8001, 1, 7999, 8000, 7999, 7994, 8001, 8001, 8001, 1, 8037, 8036, 8036, 8036, 1, 8039, 8038, 8038, 8038, 1, 8039, 8040, 8040, 8040, 1, 8039, 8041, 8041, 8041, 1, 8039, 1, 8043, 8042, 8042, 8042, 1, 8045, 8044, 8044, 8044, 1, 8045, 8046, 8046, 8046, 1, 8045, 8047, 8047, 8047, 1, 8045, 1, 8049, 8048, 8048, 8048, 1, 8051, 8050, 8050, 8050, 1, 8051, 8052, 8052, 8052, 1, 8051, 8053, 8053, 8053, 1, 8051, 1, 8055, 8054, 8054, 8054, 1, 8057, 8056, 8056, 8056, 1, 8057, 8058, 8058, 8058, 1, 8057, 8059, 8059, 8059, 1, 8057, 1, 8061, 8060, 8060, 8060, 1, 8063, 8062, 8062, 8062, 1, 8063, 8064, 8064, 8064, 1, 8063, 8065, 8065, 8065, 1, 8063, 1, 8067, 8066, 8066, 8066, 1, 8069, 8068, 8068, 8068, 1, 8069, 8070, 8070, 8070, 1, 8069, 8071, 8071, 8071, 1, 8069, 1, 8072, 8073, 8074, 8076, 8075, 8077, 8077, 1, 8078, 8080, 8079, 8079, 8079, 1, 8081, 8082, 8083, 8084, 1, 8085, 1, 8086, 8087, 8088, 8089, 1, 8090, 1, 8091, 8092, 8093, 8094, 1, 8095, 1, 26, 31, 8005, 31, 1, 8095, 8094, 1, 8095, 8091, 1, 8096, 8095, 8094, 8091, 1, 8095, 8091, 1, 8090, 8089, 1, 8090, 8086, 1, 8090, 8097, 8089, 8086, 1, 8090, 8086, 1, 8085, 8084, 1, 8085, 8081, 1, 8085, 8098, 8084, 8081, 1, 8085, 8081, 1, 8080, 8099, 8099, 8099, 1, 8080, 8100, 8100, 8100, 1, 8080, 1, 8091, 8101, 8101, 8101, 1, 8095, 8102, 8102, 8102, 1, 8095, 8103, 8103, 8103, 1, 8095, 8091, 8091, 8091, 1, 8078, 8080, 8104, 8079, 8079, 1, 8078, 8080, 8105, 8099, 8099, 1, 8078, 8080, 8100, 8100, 8100, 1, 8078, 8106, 8080, 8104, 8107, 8079, 8079, 1, 8078, 8080, 8105, 8099, 8099, 8099, 1, 8078, 8080, 8099, 8099, 8099, 1, 8078, 8080, 8107, 8079, 8079, 1, 8095, 8101, 8101, 8101, 1, 8080, 8079, 8079, 8079, 1, 8108, 8109, 8110, 8095, 8111, 8112, 8112, 1, 8078, 8114, 8095, 8113, 8113, 8113, 1, 8114, 8095, 8115, 8115, 8115, 1, 8114, 8095, 8116, 8116, 8116, 1, 8114, 8095, 1, 8101, 8101, 8101, 1, 8078, 8114, 8095, 8117, 8113, 8113, 1, 8078, 8114, 8095, 8118, 8115, 8115, 1, 8078, 8114, 8095, 8116, 8116, 8116, 1, 8078, 8119, 8114, 8095, 8117, 8120, 8113, 8113, 1, 8078, 8114, 8095, 8118, 8115, 8115, 8115, 1, 8078, 8114, 8095, 8115, 8115, 8115, 1, 8078, 8114, 8095, 8120, 8113, 8113, 1, 8114, 8095, 8113, 8113, 8113, 1, 8121, 8122, 8123, 8095, 8124, 8125, 8125, 1, 8078, 8127, 8095, 8126, 8126, 8126, 1, 8127, 8095, 8128, 8128, 8128, 1, 8127, 8095, 8129, 8129, 8129, 1, 8127, 8095, 1, 8108, 8109, 8110, 8111, 8112, 8112, 1, 8078, 8127, 8095, 8130, 8126, 8126, 1, 8078, 8127, 8095, 8131, 8128, 8128, 1, 8078, 8127, 8095, 8129, 8129, 8129, 1, 8078, 8132, 8127, 8095, 8130, 8133, 8126, 8126, 1, 8078, 8127, 8095, 8131, 8128, 8128, 8128, 1, 8078, 8127, 8095, 8128, 8128, 8128, 1, 8078, 8127, 8095, 8133, 8126, 8126, 1, 8127, 8095, 8126, 8126, 8126, 1, 8134, 8135, 8136, 8095, 8137, 8138, 8138, 1, 8078, 8140, 8095, 8139, 8139, 8139, 1, 8140, 8095, 8141, 8141, 8141, 1, 8140, 8095, 8142, 8142, 8142, 1, 8140, 8095, 1, 8121, 8122, 8123, 8124, 8125, 8125, 1, 8078, 8140, 8095, 8143, 8139, 8139, 1, 8078, 8140, 8095, 8144, 8141, 8141, 1, 8078, 8140, 8095, 8142, 8142, 8142, 1, 8078, 8145, 8140, 8095, 8143, 8146, 8139, 8139, 1, 8078, 8140, 8095, 8144, 8141, 8141, 8141, 1, 8078, 8140, 8095, 8141, 8141, 8141, 1, 8078, 8140, 8095, 8146, 8139, 8139, 1, 8140, 8095, 8139, 8139, 8139, 1, 8147, 8148, 8149, 8095, 8150, 8151, 8151, 1, 8078, 8153, 8095, 8152, 8152, 8152, 1, 8153, 8095, 8154, 8154, 8154, 1, 8153, 8095, 8155, 8155, 8155, 1, 8153, 8095, 1, 8134, 8135, 8136, 8137, 8138, 8138, 1, 8078, 8153, 8095, 8156, 8152, 8152, 1, 8078, 8153, 8095, 8157, 8154, 8154, 1, 8078, 8153, 8095, 8155, 8155, 8155, 1, 8078, 8158, 8153, 8095, 8156, 8159, 8152, 8152, 1, 8078, 8153, 8095, 8157, 8154, 8154, 8154, 1, 8078, 8153, 8095, 8154, 8154, 8154, 1, 8078, 8153, 8095, 8159, 8152, 8152, 1, 8153, 8095, 8152, 8152, 8152, 1, 8160, 8161, 8162, 8095, 8163, 8164, 8164, 1, 8078, 8166, 8095, 8165, 8165, 8165, 1, 8166, 8095, 8167, 8167, 8167, 1, 8166, 8095, 8168, 8168, 8168, 1, 8166, 8095, 1, 8147, 8148, 8149, 8150, 8151, 8151, 1, 8078, 8166, 8095, 8169, 8165, 8165, 1, 8078, 8166, 8095, 8170, 8167, 8167, 1, 8078, 8166, 8095, 8168, 8168, 8168, 1, 8078, 8171, 8166, 8095, 8169, 8172, 8165, 8165, 1, 8078, 8166, 8095, 8170, 8167, 8167, 8167, 1, 8078, 8166, 8095, 8167, 8167, 8167, 1, 8078, 8166, 8095, 8172, 8165, 8165, 1, 8166, 8095, 8165, 8165, 8165, 1, 8173, 1, 8174, 8175, 8176, 8095, 8177, 8178, 8178, 1, 8078, 8180, 8095, 8179, 8179, 8179, 1, 8180, 8095, 8181, 8181, 8181, 1, 8180, 8095, 8182, 8182, 8182, 1, 8180, 8095, 1, 8160, 8161, 8162, 8163, 8164, 8164, 1, 8078, 8180, 8095, 8183, 8179, 8179, 1, 8078, 8180, 8095, 8184, 8181, 8181, 1, 8078, 8180, 8095, 8182, 8182, 8182, 1, 8078, 8185, 8180, 8095, 8183, 8186, 8179, 8179, 1, 8078, 8180, 8095, 8184, 8181, 8181, 8181, 1, 8078, 8180, 8095, 8181, 8181, 8181, 1, 8078, 8180, 8095, 8186, 8179, 8179, 1, 8180, 8095, 8179, 8179, 8179, 1, 8187, 8187, 8187, 1, 7982, 7982, 7982, 1, 26, 7986, 8188, 31, 7986, 31, 7987, 7986, 7986, 7986, 31, 7986, 7986, 1, 8189, 8189, 8189, 1, 7986, 7986, 7986, 1, 26, 31, 7804, 31, 7985, 31, 31, 31, 31, 31, 1, 24, 25, 8190, 8190, 24, 24, 24, 24, 1, 24, 25, 8191, 8191, 24, 24, 24, 24, 1, 24, 8192, 8193, 8193, 24, 24, 24, 24, 1, 8194, 8195, 8196, 8197, 8198, 8194, 8194, 8194, 8201, 8194, 8194, 8194, 8199, 8200, 8200, 1, 8202, 8203, 8204, 8202, 8205, 8202, 8202, 8202, 8202, 8202, 1, 8206, 8206, 8206, 1, 8202, 8202, 8202, 1, 8204, 8207, 8204, 8205, 8204, 8204, 8204, 8204, 8204, 8204, 1, 8208, 8208, 8208, 1, 8204, 8204, 8204, 1, 8209, 8210, 8211, 8201, 8212, 8213, 8213, 1, 8214, 8215, 8214, 8216, 8216, 8216, 1, 8214, 8214, 8216, 8216, 8216, 1, 8214, 8217, 8214, 8216, 8216, 8216, 1, 8216, 8218, 8218, 1, 8219, 8220, 8221, 8222, 8223, 8224, 8220, 8218, 8218, 8218, 1, 8220, 8220, 8218, 8218, 8218, 1, 8219, 8222, 8223, 8224, 8216, 8218, 8218, 1, 8225, 8227, 8226, 8228, 1, 8229, 8230, 1, 8231, 8232, 1, 8233, 1, 8234, 8235, 8236, 1, 8237, 8238, 8239, 8240, 8241, 8237, 8237, 8239, 8240, 8241, 8237, 8237, 8237, 8237, 8237, 1, 8242, 8243, 8244, 8245, 8246, 8247, 8243, 8243, 8243, 8243, 8243, 8243, 8243, 1, 8248, 8248, 8248, 1, 8243, 8243, 8243, 1, 8242, 8249, 8250, 8245, 8251, 8247, 8249, 8249, 8249, 8249, 8249, 8249, 8249, 1, 8252, 8253, 8254, 8255, 8256, 8253, 8253, 8253, 8253, 8253, 8253, 8253, 1, 8257, 8257, 8257, 1, 8253, 8253, 8253, 1, 8258, 8258, 8259, 8258, 8258, 8258, 8258, 8258, 8258, 8258, 8258, 1, 8258, 8258, 8259, 8260, 8258, 8258, 8258, 8258, 8258, 8258, 8258, 8258, 1, 8261, 8261, 8261, 1, 8258, 8258, 8258, 1, 8262, 8260, 8263, 8264, 8260, 8260, 8260, 8260, 8260, 8260, 8260, 8260, 1, 8265, 8265, 8265, 1, 8260, 8260, 8260, 1, 8249, 8250, 8249, 8249, 8249, 8249, 8249, 8249, 8249, 1, 8242, 8243, 8244, 8245, 8246, 8247, 8266, 8243, 8243, 8266, 8243, 8243, 8243, 8243, 8243, 1, 8267, 8243, 8244, 8268, 8269, 8270, 8243, 8243, 8243, 8243, 8243, 8243, 8243, 1, 8242, 8271, 8272, 8271, 8249, 8249, 8245, 8251, 8247, 8249, 8249, 8273, 8271, 8249, 8271, 8271, 8271, 8271, 1, 8252, 8274, 8275, 8274, 8253, 8253, 8255, 8256, 8253, 8253, 8273, 8274, 8253, 8274, 8274, 8274, 8274, 1, 26, 8273, 8273, 8273, 8277, 8278, 8273, 8273, 8273, 8276, 8276, 8273, 8273, 8276, 8273, 1, 26, 8273, 8273, 8273, 8277, 8278, 8273, 8273, 8273, 8273, 8273, 8273, 1, 26, 8273, 8273, 8273, 8277, 8278, 8273, 8273, 8273, 8274, 8274, 8273, 8273, 8274, 8273, 1, 8242, 8243, 8244, 8245, 8246, 8247, 8279, 8280, 8243, 8243, 8279, 8280, 8243, 8243, 8243, 8243, 8243, 1, 8281, 8243, 8244, 8282, 8283, 8284, 8243, 8243, 8243, 8243, 8243, 8243, 8243, 1, 8242, 8243, 8244, 8245, 8246, 8247, 8285, 8243, 8243, 8285, 8243, 8243, 8243, 8243, 8243, 1, 8242, 8243, 8244, 8245, 8246, 8247, 8286, 8243, 8243, 8286, 8243, 8243, 8243, 8243, 8243, 1, 8242, 8243, 8244, 8245, 8287, 8247, 8243, 8243, 8243, 8243, 8243, 8243, 8243, 1, 8242, 8288, 8289, 8288, 8249, 8249, 8245, 8251, 8247, 8249, 8249, 8290, 8288, 8249, 8288, 8288, 8288, 8288, 1, 8291, 8292, 8293, 8292, 8253, 8253, 8294, 8295, 8253, 8253, 8296, 8292, 8253, 8292, 8292, 8292, 8292, 1, 8297, 8296, 8296, 8296, 8299, 8300, 8296, 8296, 8296, 8298, 8298, 8296, 8296, 8298, 8296, 1, 8297, 8296, 8296, 8296, 8299, 8300, 8296, 8296, 8296, 8296, 8296, 8296, 1, 8297, 8296, 8296, 8296, 8299, 8300, 8296, 8296, 8296, 8292, 8292, 8296, 8296, 8292, 8296, 1, 8242, 8243, 8244, 8245, 8246, 8247, 8301, 8243, 8243, 8301, 8243, 8243, 8243, 8243, 8243, 1, 8242, 8243, 8244, 8245, 8246, 8247, 8302, 8243, 8243, 8302, 8243, 8243, 8243, 8243, 8243, 1, 8242, 8243, 8244, 8245, 8246, 8247, 8303, 8243, 8243, 8303, 8243, 8243, 8243, 8243, 8243, 1, 8242, 8243, 8244, 8245, 8246, 8247, 8304, 8243, 8243, 8304, 8243, 8243, 8243, 8243, 8243, 1, 8242, 8243, 8244, 8245, 8246, 8247, 8305, 8243, 8243, 8305, 8243, 8243, 8243, 8243, 8243, 1, 8242, 8243, 8244, 8245, 8246, 8247, 8306, 8243, 8243, 8306, 8243, 8243, 8243, 8243, 8243, 1, 8242, 8243, 8244, 8245, 8246, 8247, 8307, 8243, 8243, 8307, 8243, 8243, 8243, 8243, 8243, 1, 8242, 8243, 8244, 8245, 8246, 8247, 8308, 8243, 8243, 8308, 8243, 8243, 8243, 8243, 8243, 1, 8242, 8243, 8244, 8245, 8309, 8247, 8243, 8243, 8243, 8243, 8243, 8243, 8243, 1, 8242, 8310, 8311, 8310, 8249, 8249, 8245, 8251, 8247, 8312, 8313, 8314, 8315, 8249, 8249, 8316, 8312, 8313, 8314, 8315, 8310, 8249, 8310, 8310, 8310, 8310, 1, 8317, 8318, 8319, 8318, 8253, 8253, 8320, 8321, 8253, 8253, 8322, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8323, 8322, 8322, 8322, 8325, 8326, 8322, 8322, 8322, 8324, 8324, 8322, 8322, 8324, 8322, 1, 8323, 8322, 8322, 8322, 8325, 8326, 8322, 8322, 8322, 8322, 8322, 8322, 1, 8323, 8322, 8322, 8322, 8325, 8326, 8322, 8322, 8322, 8318, 8318, 8322, 8322, 8318, 8322, 1, 8317, 8318, 8319, 8318, 8253, 8253, 8320, 8321, 8327, 8253, 8253, 8322, 8327, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8317, 8318, 8319, 8318, 8253, 8253, 8320, 8321, 8328, 8253, 8253, 8322, 8328, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8317, 8318, 8319, 8318, 8253, 8253, 8320, 8321, 8329, 8253, 8253, 8322, 8329, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8330, 8318, 8319, 8318, 8253, 8253, 8331, 8332, 8253, 8253, 8322, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8317, 8318, 8319, 8318, 8253, 8253, 8320, 8321, 8333, 8334, 8253, 8253, 8322, 8333, 8334, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8317, 8318, 8319, 8318, 8253, 8253, 8320, 8321, 8335, 8253, 8253, 8322, 8335, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8336, 8318, 8319, 8318, 8253, 8253, 8337, 8338, 8253, 8253, 8322, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8317, 8318, 8319, 8318, 8253, 8253, 8320, 8321, 8339, 8253, 8253, 8322, 8339, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8340, 8318, 8319, 8318, 8253, 8253, 8341, 8342, 8253, 8253, 8322, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8317, 8318, 8319, 8318, 8253, 8253, 8320, 8321, 8343, 8253, 8253, 8322, 8343, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8317, 8318, 8319, 8318, 8253, 8253, 8320, 8321, 8344, 8253, 8253, 8322, 8344, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8345, 8318, 8319, 8318, 8253, 8253, 8346, 8347, 8253, 8253, 8322, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8317, 8318, 8319, 8318, 8253, 8253, 8320, 8321, 8348, 8253, 8253, 8322, 8348, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8349, 8318, 8319, 8318, 8253, 8253, 8350, 8351, 8352, 8253, 8253, 8322, 8352, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8353, 8318, 8319, 8318, 8253, 8253, 8354, 8355, 8253, 8253, 8322, 8318, 8253, 8318, 8318, 8318, 8318, 1, 8234, 8235, 8236, 8233, 1, 8234, 8235, 8236, 8232, 1, 8234, 8235, 8236, 8356, 1, 8234, 8235, 8236, 8230, 1, 8234, 8357, 8235, 8236, 8356, 8230, 1, 8234, 8358, 8235, 8236, 8230, 8232, 1, 8234, 8359, 8235, 8236, 8232, 8233, 1, 8234, 8235, 8236, 8233, 1, 8360, 8361, 8362, 8363, 8218, 8218, 1, 8214, 8364, 8214, 8216, 8216, 8216, 1, 8365, 8366, 8367, 8368, 8218, 8218, 1, 8214, 8369, 8214, 8216, 8216, 8216, 1, 8370, 8371, 8372, 8373, 8218, 8218, 1, 8374, 8214, 8217, 8375, 8376, 8377, 8214, 8216, 8216, 8216, 1, 8374, 8214, 8217, 8375, 8376, 8377, 8214, 8373, 8216, 8216, 1, 8374, 8214, 8217, 8375, 8376, 8377, 8214, 8370, 8216, 8216, 1, 8374, 8214, 8217, 8378, 8375, 8376, 8377, 8214, 8373, 8370, 8216, 8216, 1, 8374, 8214, 8217, 8375, 8376, 8377, 8214, 8370, 8216, 8216, 8216, 1, 8214, 8369, 8214, 8368, 8216, 8216, 1, 8214, 8369, 8214, 8365, 8216, 8216, 1, 8214, 8369, 8379, 8214, 8368, 8365, 8216, 8216, 1, 8214, 8369, 8214, 8365, 8216, 8216, 8216, 1, 8214, 8364, 8214, 8363, 8216, 8216, 1, 8214, 8364, 8214, 8360, 8216, 8216, 1, 8214, 8364, 8380, 8214, 8363, 8360, 8216, 8216, 1, 8214, 8364, 8214, 8360, 8216, 8216, 8216, 1, 8214, 8215, 8214, 8381, 8216, 8216, 1, 8214, 8215, 8214, 8382, 8216, 8216, 1, 8214, 8215, 8383, 8214, 8381, 8382, 8216, 8216, 1, 8214, 8215, 8214, 8382, 8216, 8216, 8216, 1, 8385, 8384, 8384, 8384, 1, 8387, 8386, 8386, 8386, 1, 8387, 8388, 8388, 8388, 1, 8387, 8389, 8389, 8389, 1, 8387, 1, 8391, 8390, 8390, 8390, 1, 8393, 8392, 8392, 8392, 1, 8393, 8394, 8394, 8394, 1, 8393, 8395, 8395, 8395, 1, 8393, 1, 8397, 8396, 8396, 8396, 1, 8399, 8398, 8398, 8398, 1, 8399, 8400, 8400, 8400, 1, 8399, 8401, 8401, 8401, 1, 8399, 1, 8403, 8402, 8402, 8402, 1, 8405, 8404, 8404, 8404, 1, 8405, 8406, 8406, 8406, 1, 8405, 8407, 8407, 8407, 1, 8405, 1, 8409, 8408, 8408, 8408, 1, 8411, 8410, 8410, 8410, 1, 8411, 8412, 8412, 8412, 1, 8411, 8413, 8413, 8413, 1, 8411, 1, 8415, 8414, 8414, 8414, 1, 8417, 8416, 8416, 8416, 1, 8417, 8418, 8418, 8418, 1, 8417, 8419, 8419, 8419, 1, 8417, 1, 8420, 8421, 8422, 8424, 8423, 8425, 8425, 1, 8426, 8428, 8427, 8427, 8427, 1, 8429, 8430, 8431, 8432, 1, 8433, 1, 8434, 8435, 8436, 8437, 1, 8438, 1, 8439, 8440, 8441, 8442, 1, 8443, 1, 8444, 8445, 8446, 8447, 1, 8443, 8442, 1, 8443, 8439, 1, 8448, 8443, 8442, 8439, 1, 8443, 8439, 1, 8438, 8437, 1, 8438, 8434, 1, 8438, 8449, 8437, 8434, 1, 8438, 8434, 1, 8433, 8432, 1, 8433, 8429, 1, 8433, 8450, 8432, 8429, 1, 8433, 8429, 1, 8428, 8451, 8451, 8451, 1, 8428, 8452, 8452, 8452, 1, 8428, 1, 8439, 8453, 8453, 8453, 1, 8443, 8454, 8454, 8454, 1, 8443, 8455, 8455, 8455, 1, 8443, 8439, 8439, 8439, 1, 8426, 8428, 8456, 8427, 8427, 1, 8426, 8428, 8457, 8451, 8451, 1, 8426, 8428, 8452, 8452, 8452, 1, 8426, 8458, 8428, 8456, 8459, 8427, 8427, 1, 8426, 8428, 8457, 8451, 8451, 8451, 1, 8426, 8428, 8451, 8451, 8451, 1, 8426, 8428, 8459, 8427, 8427, 1, 8443, 8453, 8453, 8453, 1, 8428, 8427, 8427, 8427, 1, 8460, 8461, 8462, 8443, 8463, 8464, 8464, 1, 8426, 8466, 8443, 8465, 8465, 8465, 1, 8466, 8443, 8467, 8467, 8467, 1, 8466, 8443, 8468, 8468, 8468, 1, 8466, 8443, 1, 8453, 8453, 8453, 1, 8426, 8466, 8443, 8469, 8465, 8465, 1, 8426, 8466, 8443, 8470, 8467, 8467, 1, 8426, 8466, 8443, 8468, 8468, 8468, 1, 8426, 8471, 8466, 8443, 8469, 8472, 8465, 8465, 1, 8426, 8466, 8443, 8470, 8467, 8467, 8467, 1, 8426, 8466, 8443, 8467, 8467, 8467, 1, 8426, 8466, 8443, 8472, 8465, 8465, 1, 8466, 8443, 8465, 8465, 8465, 1, 8473, 8474, 8475, 8443, 8476, 8477, 8477, 1, 8426, 8479, 8443, 8478, 8478, 8478, 1, 8479, 8443, 8480, 8480, 8480, 1, 8479, 8443, 8481, 8481, 8481, 1, 8479, 8443, 1, 8460, 8461, 8462, 8463, 8464, 8464, 1, 8426, 8479, 8443, 8482, 8478, 8478, 1, 8426, 8479, 8443, 8483, 8480, 8480, 1, 8426, 8479, 8443, 8481, 8481, 8481, 1, 8426, 8484, 8479, 8443, 8482, 8485, 8478, 8478, 1, 8426, 8479, 8443, 8483, 8480, 8480, 8480, 1, 8426, 8479, 8443, 8480, 8480, 8480, 1, 8426, 8479, 8443, 8485, 8478, 8478, 1, 8479, 8443, 8478, 8478, 8478, 1, 8486, 8487, 8488, 8443, 8489, 8490, 8490, 1, 8426, 8492, 8443, 8491, 8491, 8491, 1, 8492, 8443, 8493, 8493, 8493, 1, 8492, 8443, 8494, 8494, 8494, 1, 8492, 8443, 1, 8473, 8474, 8475, 8476, 8477, 8477, 1, 8426, 8492, 8443, 8495, 8491, 8491, 1, 8426, 8492, 8443, 8496, 8493, 8493, 1, 8426, 8492, 8443, 8494, 8494, 8494, 1, 8426, 8497, 8492, 8443, 8495, 8498, 8491, 8491, 1, 8426, 8492, 8443, 8496, 8493, 8493, 8493, 1, 8426, 8492, 8443, 8493, 8493, 8493, 1, 8426, 8492, 8443, 8498, 8491, 8491, 1, 8492, 8443, 8491, 8491, 8491, 1, 8499, 8500, 8501, 8443, 8502, 8503, 8503, 1, 8426, 8505, 8443, 8504, 8504, 8504, 1, 8505, 8443, 8506, 8506, 8506, 1, 8505, 8443, 8507, 8507, 8507, 1, 8505, 8443, 1, 8486, 8487, 8488, 8489, 8490, 8490, 1, 8426, 8505, 8443, 8508, 8504, 8504, 1, 8426, 8505, 8443, 8509, 8506, 8506, 1, 8426, 8505, 8443, 8507, 8507, 8507, 1, 8426, 8510, 8505, 8443, 8508, 8511, 8504, 8504, 1, 8426, 8505, 8443, 8509, 8506, 8506, 8506, 1, 8426, 8505, 8443, 8506, 8506, 8506, 1, 8426, 8505, 8443, 8511, 8504, 8504, 1, 8505, 8443, 8504, 8504, 8504, 1, 8512, 8513, 8514, 8443, 8515, 8516, 8516, 1, 8426, 8518, 8443, 8517, 8517, 8517, 1, 8518, 8443, 8519, 8519, 8519, 1, 8518, 8443, 8520, 8520, 8520, 1, 8518, 8443, 1, 8499, 8500, 8501, 8502, 8503, 8503, 1, 8426, 8518, 8443, 8521, 8517, 8517, 1, 8426, 8518, 8443, 8522, 8519, 8519, 1, 8426, 8518, 8443, 8520, 8520, 8520, 1, 8426, 8523, 8518, 8443, 8521, 8524, 8517, 8517, 1, 8426, 8518, 8443, 8522, 8519, 8519, 8519, 1, 8426, 8518, 8443, 8519, 8519, 8519, 1, 8426, 8518, 8443, 8524, 8517, 8517, 1, 8518, 8443, 8517, 8517, 8517, 1, 8525, 1, 8526, 8527, 8528, 8443, 8529, 8530, 8530, 1, 8426, 8532, 8443, 8531, 8531, 8531, 1, 8532, 8443, 8533, 8533, 8533, 1, 8532, 8443, 8534, 8534, 8534, 1, 8532, 8443, 1, 8512, 8513, 8514, 8515, 8516, 8516, 1, 8426, 8532, 8443, 8535, 8531, 8531, 1, 8426, 8532, 8443, 8536, 8533, 8533, 1, 8426, 8532, 8443, 8534, 8534, 8534, 1, 8426, 8537, 8532, 8443, 8535, 8538, 8531, 8531, 1, 8426, 8532, 8443, 8536, 8533, 8533, 8533, 1, 8426, 8532, 8443, 8533, 8533, 8533, 1, 8426, 8532, 8443, 8538, 8531, 8531, 1, 8532, 8443, 8531, 8531, 8531, 1, 8202, 8203, 8539, 8540, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8541, 8541, 8541, 1, 8202, 8203, 8539, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8541, 8541, 8541, 1, 8202, 8203, 8539, 8542, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8541, 8541, 8541, 1, 8202, 8203, 8204, 8202, 8202, 8202, 8205, 8202, 8202, 8202, 8541, 8543, 8543, 1, 8219, 8202, 8203, 8544, 8545, 8546, 8547, 8202, 8548, 8205, 8544, 8202, 8202, 8543, 8543, 8543, 1, 8202, 8203, 8544, 8204, 8202, 8202, 8202, 8205, 8544, 8202, 8202, 8543, 8543, 8543, 1, 8219, 8202, 8203, 8546, 8547, 8202, 8548, 8205, 8202, 8202, 8202, 8541, 8543, 8543, 1, 8204, 8207, 8549, 8551, 8204, 8205, 8204, 8204, 8204, 8550, 8552, 8204, 8204, 1, 8204, 8207, 8553, 8204, 8205, 8204, 8204, 8204, 8554, 8204, 8204, 1, 8204, 8207, 8555, 8204, 8205, 8204, 8204, 8204, 8556, 8204, 8204, 1, 8204, 8207, 8204, 8204, 8205, 8204, 8204, 8204, 8557, 8204, 8204, 1, 8234, 8204, 8207, 8235, 8204, 8236, 8205, 8204, 8204, 8204, 8204, 8204, 8204, 1, 8234, 8204, 8207, 8235, 8204, 8236, 8205, 8204, 8204, 8204, 8557, 8204, 8204, 1, 8234, 8204, 8207, 8235, 8204, 8236, 8205, 8204, 8204, 8204, 8556, 8204, 8204, 1, 8234, 8204, 8207, 8235, 8204, 8236, 8205, 8204, 8204, 8204, 8558, 8204, 8204, 1, 8234, 8204, 8207, 8235, 8204, 8236, 8205, 8204, 8204, 8204, 8554, 8204, 8204, 1, 8234, 8204, 8207, 8559, 8235, 8204, 8236, 8205, 8204, 8204, 8204, 8558, 8554, 8204, 8204, 1, 8234, 8204, 8207, 8560, 8235, 8204, 8236, 8205, 8204, 8204, 8204, 8554, 8556, 8204, 8204, 1, 8234, 8204, 8207, 8561, 8235, 8204, 8236, 8205, 8204, 8204, 8204, 8556, 8557, 8204, 8204, 1, 8234, 8204, 8207, 8235, 8204, 8236, 8205, 8204, 8204, 8204, 8557, 8204, 8204, 8204, 1, 8562, 8202, 8563, 8202, 8564, 8202, 8202, 8202, 8205, 8565, 8566, 8567, 8237, 8237, 8562, 8565, 8566, 8567, 8562, 8562, 8562, 8562, 1, 8242, 8568, 8202, 8569, 8202, 8570, 8571, 8572, 8573, 8205, 8243, 8243, 8568, 8568, 8568, 8568, 8568, 1, 8574, 8574, 8574, 1, 8568, 8568, 8568, 1, 8242, 8570, 8575, 8204, 8243, 8243, 8245, 8576, 8247, 8205, 8243, 8243, 8570, 8570, 8570, 8570, 8570, 1, 8577, 8577, 8577, 1, 8570, 8570, 8570, 1, 8242, 8578, 8579, 8204, 8249, 8249, 8245, 8580, 8247, 8205, 8249, 8249, 8578, 8578, 8578, 8578, 8578, 1, 8252, 8581, 8582, 8204, 8253, 8253, 8255, 8204, 8256, 8205, 8253, 8253, 8581, 8581, 8581, 8581, 8581, 1, 8583, 8583, 8583, 1, 8581, 8581, 8581, 1, 8578, 8579, 8204, 8249, 8249, 8204, 8205, 8249, 8249, 8578, 8578, 8578, 8578, 8578, 1, 8242, 8584, 8202, 8585, 8202, 8578, 8571, 8586, 8573, 8205, 8249, 8249, 8584, 8584, 8584, 8584, 8584, 1, 8252, 8587, 8202, 8588, 8202, 8581, 8589, 8202, 8590, 8205, 8253, 8253, 8587, 8587, 8587, 8587, 8587, 1, 8591, 8591, 8591, 1, 8587, 8587, 8587, 1, 8592, 8592, 8593, 8202, 8594, 8202, 8202, 8205, 8258, 8258, 8592, 8592, 8202, 8592, 8592, 8592, 1, 8592, 8592, 8593, 8202, 8594, 8202, 8595, 8205, 8258, 8258, 8592, 8592, 8202, 8592, 8592, 8592, 1, 8596, 8596, 8596, 1, 8592, 8592, 8592, 1, 8594, 8597, 8204, 8204, 8258, 8258, 8598, 8258, 8205, 8258, 8258, 8594, 8594, 8594, 8594, 8594, 1, 8599, 8599, 8599, 1, 8594, 8594, 8594, 1, 8262, 8598, 8600, 8601, 8204, 8260, 8260, 8204, 8260, 8205, 8260, 8260, 8598, 8598, 8598, 8598, 8598, 1, 8602, 8602, 8602, 1, 8598, 8598, 8598, 1, 8594, 8597, 8204, 8204, 8258, 8258, 8204, 8258, 8205, 8258, 8258, 8594, 8594, 8594, 8594, 8594, 1, 8262, 8595, 8202, 8603, 8604, 8202, 8598, 8202, 8202, 8205, 8260, 8260, 8595, 8595, 8595, 8595, 8595, 1, 8605, 8605, 8605, 1, 8595, 8595, 8595, 1, 8584, 8202, 8585, 8202, 8578, 8202, 8202, 8202, 8205, 8249, 8249, 8584, 8584, 8584, 8584, 8584, 1, 8242, 8568, 8202, 8569, 8202, 8570, 8571, 8572, 8573, 8205, 8606, 8243, 8243, 8568, 8606, 8568, 8568, 8568, 8568, 1, 8267, 8568, 8202, 8569, 8202, 8570, 8607, 8608, 8609, 8205, 8243, 8243, 8568, 8568, 8568, 8568, 8568, 1, 8242, 8610, 8202, 8611, 8610, 8202, 8584, 8578, 8571, 8586, 8573, 8205, 8249, 8249, 8273, 8610, 8584, 8610, 8610, 8610, 1, 8252, 8612, 8202, 8613, 8612, 8202, 8587, 8581, 8589, 8202, 8590, 8205, 8253, 8253, 8273, 8612, 8587, 8612, 8612, 8612, 1, 26, 8273, 8273, 8273, 8277, 8278, 8273, 8273, 8273, 8614, 8614, 8273, 8273, 8614, 8273, 1, 26, 8273, 8273, 8273, 8277, 8278, 8273, 8273, 8273, 8612, 8612, 8273, 8273, 8612, 8273, 1, 8242, 8568, 8202, 8569, 8202, 8570, 8571, 8572, 8573, 8205, 8615, 8616, 8243, 8243, 8568, 8615, 8616, 8568, 8568, 8568, 8568, 1, 8281, 8568, 8202, 8569, 8202, 8570, 8617, 8618, 8619, 8205, 8243, 8243, 8568, 8568, 8568, 8568, 8568, 1, 8242, 8568, 8202, 8569, 8202, 8570, 8571, 8572, 8573, 8205, 8620, 8243, 8243, 8568, 8620, 8568, 8568, 8568, 8568, 1, 8242, 8568, 8202, 8569, 8202, 8570, 8571, 8572, 8573, 8205, 8621, 8243, 8243, 8568, 8621, 8568, 8568, 8568, 8568, 1, 8242, 8568, 8202, 8569, 8202, 8570, 8571, 8622, 8573, 8205, 8243, 8243, 8568, 8568, 8568, 8568, 8568, 1, 8242, 8623, 8202, 8624, 8623, 8202, 8584, 8578, 8571, 8586, 8573, 8205, 8249, 8249, 8290, 8623, 8584, 8623, 8623, 8623, 1, 8291, 8625, 8202, 8626, 8625, 8202, 8587, 8581, 8627, 8202, 8628, 8205, 8253, 8253, 8296, 8625, 8587, 8625, 8625, 8625, 1, 8297, 8296, 8296, 8296, 8299, 8300, 8296, 8296, 8296, 8629, 8629, 8296, 8296, 8629, 8296, 1, 8297, 8296, 8296, 8296, 8299, 8300, 8296, 8296, 8296, 8625, 8625, 8296, 8296, 8625, 8296, 1, 8242, 8568, 8202, 8569, 8202, 8570, 8571, 8572, 8573, 8205, 8630, 8243, 8243, 8568, 8630, 8568, 8568, 8568, 8568, 1, 8242, 8568, 8202, 8569, 8202, 8570, 8571, 8572, 8573, 8205, 8631, 8243, 8243, 8568, 8631, 8568, 8568, 8568, 8568, 1, 8242, 8568, 8202, 8569, 8202, 8570, 8571, 8572, 8573, 8205, 8632, 8243, 8243, 8568, 8632, 8568, 8568, 8568, 8568, 1, 8242, 8568, 8202, 8569, 8202, 8570, 8571, 8572, 8573, 8205, 8633, 8243, 8243, 8568, 8633, 8568, 8568, 8568, 8568, 1, 8242, 8568, 8202, 8569, 8202, 8570, 8571, 8572, 8573, 8205, 8634, 8243, 8243, 8568, 8634, 8568, 8568, 8568, 8568, 1, 8242, 8568, 8202, 8569, 8202, 8570, 8571, 8572, 8573, 8205, 8635, 8243, 8243, 8568, 8635, 8568, 8568, 8568, 8568, 1, 8242, 8568, 8202, 8569, 8202, 8570, 8571, 8572, 8573, 8205, 8636, 8243, 8243, 8568, 8636, 8568, 8568, 8568, 8568, 1, 8242, 8568, 8202, 8569, 8202, 8570, 8571, 8572, 8573, 8205, 8637, 8243, 8243, 8568, 8637, 8568, 8568, 8568, 8568, 1, 8242, 8568, 8202, 8569, 8202, 8570, 8571, 8638, 8573, 8205, 8243, 8243, 8568, 8568, 8568, 8568, 8568, 1, 8242, 8639, 8202, 8640, 8639, 8202, 8584, 8578, 8571, 8586, 8573, 8205, 8641, 8642, 8643, 8644, 8249, 8249, 8316, 8641, 8642, 8643, 8644, 8639, 8584, 8639, 8639, 8639, 1, 8317, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8647, 8202, 8648, 8205, 8253, 8253, 8322, 8645, 8587, 8645, 8645, 8645, 1, 8323, 8322, 8322, 8322, 8325, 8326, 8322, 8322, 8322, 8649, 8649, 8322, 8322, 8649, 8322, 1, 8323, 8322, 8322, 8322, 8325, 8326, 8322, 8322, 8322, 8645, 8645, 8322, 8322, 8645, 8322, 1, 8317, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8647, 8202, 8648, 8205, 8650, 8253, 8253, 8322, 8650, 8645, 8587, 8645, 8645, 8645, 1, 8317, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8647, 8202, 8648, 8205, 8651, 8253, 8253, 8322, 8651, 8645, 8587, 8645, 8645, 8645, 1, 8317, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8647, 8202, 8648, 8205, 8652, 8253, 8253, 8322, 8652, 8645, 8587, 8645, 8645, 8645, 1, 8330, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8653, 8202, 8654, 8205, 8253, 8253, 8322, 8645, 8587, 8645, 8645, 8645, 1, 8317, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8647, 8202, 8648, 8205, 8655, 8656, 8253, 8253, 8322, 8655, 8656, 8645, 8587, 8645, 8645, 8645, 1, 8317, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8647, 8202, 8648, 8205, 8657, 8253, 8253, 8322, 8657, 8645, 8587, 8645, 8645, 8645, 1, 8336, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8658, 8202, 8659, 8205, 8253, 8253, 8322, 8645, 8587, 8645, 8645, 8645, 1, 8317, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8647, 8202, 8648, 8205, 8660, 8253, 8253, 8322, 8660, 8645, 8587, 8645, 8645, 8645, 1, 8340, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8661, 8202, 8662, 8205, 8253, 8253, 8322, 8645, 8587, 8645, 8645, 8645, 1, 8317, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8647, 8202, 8648, 8205, 8663, 8253, 8253, 8322, 8663, 8645, 8587, 8645, 8645, 8645, 1, 8317, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8647, 8202, 8648, 8205, 8664, 8253, 8253, 8322, 8664, 8645, 8587, 8645, 8645, 8645, 1, 8345, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8665, 8202, 8666, 8205, 8253, 8253, 8322, 8645, 8587, 8645, 8645, 8645, 1, 8317, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8647, 8202, 8648, 8205, 8667, 8253, 8253, 8322, 8667, 8645, 8587, 8645, 8645, 8645, 1, 8349, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8668, 8202, 8669, 8205, 8670, 8253, 8253, 8322, 8670, 8645, 8587, 8645, 8645, 8645, 1, 8353, 8645, 8202, 8646, 8645, 8202, 8587, 8581, 8671, 8202, 8672, 8205, 8253, 8253, 8322, 8645, 8587, 8645, 8645, 8645, 1, 8202, 8203, 8673, 8674, 8675, 8204, 8202, 8202, 8202, 8205, 8202, 8202, 8202, 8676, 8543, 8543, 1, 8202, 8203, 8539, 8677, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8541, 8541, 8541, 1, 8202, 8203, 8678, 8679, 8680, 8204, 8202, 8202, 8202, 8205, 8202, 8202, 8202, 8681, 8543, 8543, 1, 8202, 8203, 8539, 8682, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8541, 8541, 8541, 1, 8202, 8203, 8683, 8684, 8685, 8204, 8202, 8202, 8202, 8205, 8202, 8202, 8202, 8686, 8543, 8543, 1, 8374, 8202, 8203, 8539, 8542, 8687, 8688, 8202, 8689, 8205, 8539, 8202, 8202, 8541, 8541, 8541, 1, 8374, 8202, 8203, 8539, 8542, 8687, 8688, 8202, 8689, 8205, 8539, 8202, 8202, 8686, 8541, 8541, 1, 8374, 8202, 8203, 8539, 8542, 8687, 8688, 8202, 8689, 8205, 8539, 8202, 8202, 8683, 8541, 8541, 1, 8374, 8202, 8203, 8539, 8542, 8690, 8687, 8688, 8202, 8689, 8205, 8539, 8202, 8202, 8686, 8683, 8541, 8541, 1, 8374, 8202, 8203, 8539, 8542, 8687, 8688, 8202, 8689, 8205, 8539, 8202, 8202, 8683, 8541, 8541, 8541, 1, 8202, 8203, 8539, 8682, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8681, 8541, 8541, 1, 8202, 8203, 8539, 8682, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8678, 8541, 8541, 1, 8202, 8203, 8539, 8682, 8691, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8681, 8678, 8541, 8541, 1, 8202, 8203, 8539, 8682, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8678, 8541, 8541, 8541, 1, 8202, 8203, 8539, 8677, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8676, 8541, 8541, 1, 8202, 8203, 8539, 8677, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8673, 8541, 8541, 1, 8202, 8203, 8539, 8677, 8692, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8676, 8673, 8541, 8541, 1, 8202, 8203, 8539, 8677, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8673, 8541, 8541, 8541, 1, 8202, 8203, 8539, 8540, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8693, 8541, 8541, 1, 8202, 8203, 8539, 8540, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8694, 8541, 8541, 1, 8202, 8203, 8539, 8540, 8695, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8693, 8694, 8541, 8541, 1, 8202, 8203, 8539, 8540, 8204, 8202, 8202, 8202, 8205, 8539, 8202, 8202, 8694, 8541, 8541, 8541, 1, 24, 8696, 24, 24, 24, 24, 1, 24, 25, 8697, 8697, 24, 24, 24, 24, 1, 24, 25, 8698, 8698, 24, 24, 24, 24, 1, 24, 8699, 24, 24, 24, 24, 1, 8700, 8700, 8702, 8701, 8701, 8700, 8700, 8700, 1, 8703, 8704, 8705, 8704, 8704, 8704, 8704, 8704, 1, 8706, 8707, 8707, 8706, 8706, 8706, 1, 8242, 8708, 8709, 8710, 8708, 8708, 8708, 1, 8711, 8712, 8711, 8711, 8711, 8711, 8711, 8711, 8711, 1, 8252, 8713, 8714, 8715, 8713, 8713, 8713, 8713, 8713, 8713, 8713, 1, 8716, 8716, 8716, 1, 8713, 8713, 8713, 1, 8242, 8708, 8709, 8710, 8717, 8717, 8708, 8708, 8708, 1, 8242, 8708, 8709, 8710, 8718, 8718, 8708, 8708, 8708, 1, 8242, 8708, 8709, 8710, 8719, 8719, 8708, 8708, 8708, 1, 8242, 8708, 8709, 8710, 8720, 8720, 8708, 8708, 8708, 1, 8242, 8721, 8709, 8710, 8708, 8708, 8708, 1, 8242, 8708, 8709, 8710, 8722, 8722, 8708, 8708, 8708, 1, 8242, 8708, 8709, 8710, 8723, 8723, 8708, 8708, 8708, 1, 8242, 8708, 8709, 8710, 8724, 8724, 8708, 8708, 8708, 1, 8242, 8708, 8709, 8710, 8725, 8725, 8708, 8708, 8708, 1, 8242, 8708, 8709, 8710, 8726, 8726, 8708, 8708, 8708, 1, 8242, 8708, 8709, 8710, 8727, 8727, 8708, 8708, 8708, 1, 8242, 8708, 8709, 8710, 8728, 8728, 8708, 8708, 8708, 1, 8242, 8708, 8709, 8729, 8708, 8708, 8708, 1, 8711, 8712, 8730, 8711, 8711, 8711, 8711, 8711, 8711, 8711, 8731, 8732, 8732, 1, 8252, 8713, 8714, 8713, 8713, 8715, 8713, 8713, 8713, 8713, 8733, 8713, 8733, 8734, 8713, 8713, 1, 8735, 8713, 8714, 8713, 8713, 8736, 8713, 8713, 8713, 8713, 8734, 8713, 8734, 8713, 8713, 1, 8252, 8713, 8714, 8737, 8738, 8713, 8713, 8715, 8713, 8713, 8737, 8713, 8713, 8739, 8739, 8739, 1, 8252, 8713, 8714, 8737, 8713, 8715, 8713, 8713, 8737, 8713, 8713, 8713, 8739, 8739, 8739, 1, 8252, 8713, 8714, 8713, 8715, 8713, 8713, 8713, 8713, 8713, 8713, 8739, 8740, 8740, 1, 8735, 8713, 8714, 8741, 8742, 8713, 8713, 8736, 8713, 8713, 8741, 8713, 8713, 8740, 8740, 8740, 1, 8252, 8713, 8714, 8741, 8713, 8715, 8713, 8713, 8741, 8713, 8713, 8713, 8740, 8740, 8740, 1, 8735, 8713, 8714, 8713, 8736, 8713, 8713, 8713, 8713, 8713, 8713, 8739, 8740, 8740, 1, 8704, 8704, 8743, 8743, 8704, 8704, 8704, 1, 8744, 8744, 8745, 1, 8703, 8705, 8745, 8745, 8745, 1, 19, 20, 20, 20, 8746, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8747, 20, 20, 20, 20, 20, 20, 1, 8748, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8749, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8750, 20, 20, 20, 20, 20, 20, 1, 8751, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8752, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8753, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8754, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8755, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8756, 20, 20, 20, 20, 20, 20, 1, 8757, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8758, 8758, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8759, 8759, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8760, 8760, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8761, 20, 20, 20, 20, 20, 1, 8762, 1, 8763, 8764, 1, 8765, 1, 8766, 8767, 1, 8768, 1, 8769, 1, 8770, 1, 8771, 1, 8773, 8772, 8775, 8774, 8766, 1, 8763, 1, 19, 20, 20, 20, 8776, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8777, 8778, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8779, 20, 20, 20, 20, 20, 20, 1, 8780, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8781, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8782, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8783, 20, 20, 20, 20, 20, 20, 1, 8784, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8785, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8786, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8787, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8788, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8789, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8790, 20, 20, 20, 20, 20, 20, 1, 8791, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8792, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8793, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8794, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8795, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8796, 20, 20, 20, 20, 20, 20, 1, 8797, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8798, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8799, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8800, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8801, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8802, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8803, 20, 20, 20, 20, 20, 20, 1, 8804, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8805, 8806, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8807, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8808, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8809, 20, 20, 20, 20, 20, 20, 1, 8810, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8811, 8812, 8813, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8814, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8815, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8816, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8817, 20, 20, 20, 20, 20, 20, 1, 8818, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8819, 20, 20, 20, 20, 20, 20, 1, 8820, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8821, 20, 20, 20, 20, 20, 20, 1, 8822, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8823, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8824, 8825, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8826, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8827, 20, 20, 20, 20, 20, 20, 1, 8828, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8829, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8830, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8831, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8832, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8833, 20, 20, 20, 20, 20, 20, 1, 8834, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8759, 8835, 8836, 8759, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8837, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8838, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8839, 20, 20, 20, 20, 20, 20, 1, 8840, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8841, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8842, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8843, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8844, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8845, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8846, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8847, 20, 20, 20, 20, 20, 20, 1, 8848, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8849, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8850, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8851, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8852, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8853, 20, 20, 20, 20, 20, 20, 1, 8854, 20, 20, 20, 20, 20, 20, 20, 20, 20, 1, 19, 20, 20, 20, 8759, 8759, 20, 20, 20, 20, 20, 20, 1, 1, 0 }; static const short _sip_message_parser_trans_targs[] = { 2, 0, 5, 7585, 7588, 7591, 7597, 7613, 7621, 7628, 7634, 7641, 7656, 7667, 7680, 7686, 3, 4, 7687, 6, 5, 7, 7165, 7549, 7, 8, 9, 6744, 6745, 6949, 6955, 6764, 6797, 10, 6743, 11, 12, 13, 14, 15, 16, 6742, 17, 18, 6741, 19, 20, 21, 32, 107, 38, 326, 343, 358, 379, 408, 431, 439, 658, 7687, 22, 21, 23, 22, 23, 24, 25, 26, 27, 28, 29, 23, 6738, 24, 25, 26, 27, 28, 29, 30, 31, 33, 47, 6629, 34, 35, 36, 37, 38, 39, 40, 39, 40, 41, 44, 42, 43, 18, 44, 45, 46, 48, 49, 50, 6620, 51, 52, 53, 54, 53, 54, 54, 55, 102, 4981, 61, 5838, 56, 57, 57, 58, 59, 60, 61, 62, 63, 64, 65, 6619, 66, 67, 6503, 6615, 6617, 6616, 6507, 6351, 66, 67, 69, 72, 68, 70, 71, 73, 6347, 6349, 6348, 77, 74, 6329, 75, 76, 77, 78, 79, 80, 85, 93, 6267, 81, 6323, 6325, 6324, 82, 6322, 83, 6321, 84, 85, 93, 6267, 86, 87, 6275, 6282, 6292, 86, 87, 85, 89, 93, 6267, 88, 90, 91, 6274, 90, 91, 85, 93, 6267, 92, 94, 95, 98, 5861, 94, 95, 98, 5861, 96, 97, 99, 102, 4981, 61, 5838, 100, 101, 58, 103, 104, 102, 61, 103, 104, 105, 106, 108, 109, 4978, 108, 109, 109, 110, 4283, 4288, 116, 4299, 4722, 4970, 111, 112, 112, 113, 114, 115, 116, 117, 3863, 4247, 117, 118, 119, 120, 3647, 3653, 3462, 139, 3495, 3649, 3652, 121, 123, 126, 122, 124, 125, 127, 3491, 3493, 3492, 131, 128, 3473, 129, 130, 132, 133, 134, 135, 3467, 3469, 3468, 136, 3466, 137, 3465, 138, 139, 140, 146, 141, 142, 143, 144, 145, 147, 150, 3448, 148, 149, 151, 324, 155, 152, 153, 154, 156, 159, 163, 173, 157, 158, 160, 161, 162, 164, 165, 166, 167, 168, 169, 171, 172, 170, 174, 309, 175, 178, 176, 177, 179, 295, 180, 183, 181, 182, 184, 281, 185, 188, 186, 187, 189, 267, 190, 193, 191, 192, 194, 253, 195, 198, 196, 197, 199, 239, 200, 203, 201, 202, 204, 230, 233, 236, 237, 238, 205, 223, 226, 206, 219, 221, 220, 207, 208, 215, 217, 216, 209, 210, 211, 213, 212, 214, 218, 222, 224, 225, 227, 228, 229, 231, 232, 234, 235, 240, 245, 248, 251, 252, 241, 244, 242, 243, 246, 247, 249, 250, 254, 259, 262, 265, 266, 255, 258, 256, 257, 260, 261, 263, 264, 268, 273, 276, 279, 280, 269, 272, 270, 271, 274, 275, 277, 278, 282, 287, 290, 293, 294, 283, 286, 284, 285, 288, 289, 291, 292, 296, 301, 304, 307, 308, 297, 300, 298, 299, 302, 303, 305, 306, 310, 311, 316, 319, 322, 323, 312, 315, 313, 314, 317, 318, 320, 321, 325, 327, 328, 327, 328, 329, 332, 330, 331, 18, 333, 341, 332, 337, 333, 334, 337, 335, 336, 338, 332, 339, 340, 342, 344, 345, 344, 345, 346, 349, 347, 348, 18, 350, 351, 352, 353, 354, 355, 356, 357, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 370, 371, 372, 375, 373, 374, 18, 376, 377, 378, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 392, 393, 394, 397, 395, 396, 398, 406, 397, 402, 398, 399, 402, 400, 401, 403, 397, 404, 405, 407, 409, 2848, 410, 411, 412, 413, 414, 415, 416, 415, 416, 417, 420, 418, 419, 421, 429, 420, 425, 421, 422, 425, 423, 424, 426, 420, 427, 428, 430, 432, 433, 434, 435, 436, 437, 438, 326, 440, 441, 2847, 440, 441, 441, 442, 2152, 2157, 448, 2168, 2591, 2839, 443, 444, 444, 445, 446, 447, 448, 449, 1732, 2116, 449, 450, 451, 452, 1516, 1522, 1331, 471, 1364, 1518, 1521, 453, 455, 458, 454, 456, 457, 459, 1360, 1362, 1361, 463, 460, 1342, 461, 462, 464, 465, 466, 467, 1336, 1338, 1337, 468, 1335, 469, 1334, 470, 471, 472, 478, 473, 474, 475, 476, 477, 479, 482, 1317, 480, 481, 483, 656, 487, 484, 485, 486, 488, 491, 495, 505, 489, 490, 492, 493, 494, 496, 497, 498, 499, 500, 501, 503, 504, 502, 506, 641, 507, 510, 508, 509, 511, 627, 512, 515, 513, 514, 516, 613, 517, 520, 518, 519, 521, 599, 522, 525, 523, 524, 526, 585, 527, 530, 528, 529, 531, 571, 532, 535, 533, 534, 536, 562, 565, 568, 569, 570, 537, 555, 558, 538, 551, 553, 552, 539, 540, 547, 549, 548, 541, 542, 543, 545, 544, 546, 550, 554, 556, 557, 559, 560, 561, 563, 564, 566, 567, 572, 577, 580, 583, 584, 573, 576, 574, 575, 578, 579, 581, 582, 586, 591, 594, 597, 598, 587, 590, 588, 589, 592, 593, 595, 596, 600, 605, 608, 611, 612, 601, 604, 602, 603, 606, 607, 609, 610, 614, 619, 622, 625, 626, 615, 618, 616, 617, 620, 621, 623, 624, 628, 633, 636, 639, 640, 629, 632, 630, 631, 634, 635, 637, 638, 642, 643, 648, 651, 654, 655, 644, 647, 645, 646, 649, 650, 652, 653, 657, 659, 660, 1315, 659, 660, 661, 664, 662, 663, 665, 666, 664, 669, 667, 668, 670, 673, 671, 672, 674, 675, 678, 676, 677, 679, 682, 680, 681, 683, 684, 687, 1159, 1161, 1160, 691, 1163, 685, 686, 688, 1141, 689, 690, 691, 692, 1137, 696, 1139, 1140, 700, 712, 692, 693, 696, 700, 712, 694, 695, 697, 664, 698, 699, 701, 704, 1131, 1133, 1132, 702, 703, 705, 1130, 706, 1129, 707, 708, 726, 696, 712, 708, 709, 710, 711, 713, 716, 891, 907, 929, 714, 715, 717, 889, 716, 696, 712, 721, 717, 718, 721, 719, 720, 722, 725, 728, 738, 723, 724, 708, 726, 725, 696, 712, 727, 729, 730, 731, 732, 733, 728, 734, 736, 737, 735, 739, 874, 740, 743, 741, 742, 744, 860, 745, 748, 746, 747, 749, 846, 750, 753, 751, 752, 754, 832, 755, 758, 756, 757, 759, 818, 760, 763, 761, 762, 764, 804, 765, 768, 766, 767, 769, 795, 798, 801, 802, 803, 770, 788, 791, 771, 784, 786, 785, 772, 773, 780, 782, 781, 774, 775, 776, 778, 777, 779, 783, 787, 789, 790, 792, 793, 794, 796, 797, 799, 800, 805, 810, 813, 816, 817, 806, 809, 807, 808, 811, 812, 814, 815, 819, 824, 827, 830, 831, 820, 823, 821, 822, 825, 826, 828, 829, 833, 838, 841, 844, 845, 834, 837, 835, 836, 839, 840, 842, 843, 847, 852, 855, 858, 859, 848, 851, 849, 850, 853, 854, 856, 857, 861, 866, 869, 872, 873, 862, 865, 863, 864, 867, 868, 870, 871, 875, 876, 881, 884, 887, 888, 877, 880, 878, 879, 882, 883, 885, 886, 890, 892, 893, 894, 895, 896, 905, 696, 712, 900, 896, 897, 900, 898, 899, 901, 904, 902, 903, 708, 726, 696, 906, 908, 909, 910, 911, 912, 913, 914, 917, 915, 916, 918, 921, 922, 919, 920, 708, 726, 921, 696, 712, 923, 924, 925, 926, 927, 928, 921, 930, 1103, 931, 932, 933, 934, 935, 936, 937, 938, 941, 939, 940, 942, 945, 1080, 1083, 1086, 1087, 1102, 943, 944, 946, 964, 967, 947, 960, 962, 961, 948, 949, 956, 958, 957, 950, 951, 952, 954, 953, 708, 726, 696, 712, 955, 959, 963, 965, 966, 968, 1066, 969, 972, 970, 971, 973, 1052, 974, 977, 975, 976, 978, 1038, 979, 982, 980, 981, 983, 1024, 984, 987, 985, 986, 988, 1010, 989, 992, 990, 991, 993, 1001, 1004, 1007, 1008, 1009, 994, 997, 995, 996, 998, 999, 1000, 1002, 1003, 1005, 1006, 1011, 1016, 1019, 1022, 1023, 1012, 1015, 1013, 1014, 1017, 1018, 1020, 1021, 1025, 1030, 1033, 1036, 1037, 1026, 1029, 1027, 1028, 1031, 1032, 1034, 1035, 1039, 1044, 1047, 1050, 1051, 1040, 1043, 1041, 1042, 1045, 1046, 1048, 1049, 1053, 1058, 1061, 1064, 1065, 1054, 1057, 1055, 1056, 1059, 1060, 1062, 1063, 1067, 1072, 1075, 1078, 1079, 1068, 1071, 1069, 1070, 1073, 1074, 1076, 1077, 1081, 1082, 1084, 1085, 1088, 1089, 1094, 1097, 1100, 1101, 1090, 1093, 1091, 1092, 1095, 1096, 1098, 1099, 1104, 1105, 1106, 1107, 1127, 696, 712, 1111, 1107, 1108, 1111, 1109, 1110, 1112, 1115, 1121, 1123, 1122, 1113, 1114, 1116, 1120, 1117, 1119, 1118, 1124, 1125, 1126, 1128, 1132, 1134, 1135, 1136, 1138, 1142, 1155, 1157, 1156, 1143, 1144, 1151, 1153, 1152, 1145, 1146, 1147, 1149, 1148, 1150, 1154, 1158, 1160, 687, 1162, 1164, 1300, 1165, 1168, 1166, 1167, 1169, 1286, 1170, 1173, 1171, 1172, 1174, 1272, 1175, 1178, 1176, 1177, 1179, 1258, 1180, 1183, 1181, 1182, 1184, 1244, 1185, 1188, 1186, 1187, 1189, 1230, 1190, 1193, 1191, 1192, 1194, 1221, 1224, 1227, 1228, 1229, 1195, 1214, 1217, 1196, 1210, 1212, 1211, 1197, 1198, 1206, 1208, 1207, 1199, 1200, 1202, 1204, 1203, 1201, 1205, 1209, 1213, 1215, 1216, 1218, 1219, 1220, 1222, 1223, 1225, 1226, 1231, 1236, 1239, 1242, 1243, 1232, 1235, 1233, 1234, 1237, 1238, 1240, 1241, 1245, 1250, 1253, 1256, 1257, 1246, 1249, 1247, 1248, 1251, 1252, 1254, 1255, 1259, 1264, 1267, 1270, 1271, 1260, 1263, 1261, 1262, 1265, 1266, 1268, 1269, 1273, 1278, 1281, 1284, 1285, 1274, 1277, 1275, 1276, 1279, 1280, 1282, 1283, 1287, 1292, 1295, 1298, 1299, 1288, 1291, 1289, 1290, 1293, 1294, 1296, 1297, 1301, 1302, 1307, 1310, 1313, 1314, 1303, 1306, 1304, 1305, 1308, 1309, 1311, 1312, 1316, 1318, 1319, 1320, 1329, 1324, 1321, 1322, 1323, 1325, 1328, 1326, 1327, 492, 475, 1328, 478, 1330, 1332, 1333, 1339, 1340, 1341, 1343, 1356, 1358, 1357, 1344, 1345, 1352, 1354, 1353, 1346, 1347, 1348, 1350, 1349, 1351, 1355, 1359, 1363, 1365, 1501, 1366, 1369, 1367, 1368, 1370, 1487, 1371, 1374, 1372, 1373, 1375, 1473, 1376, 1379, 1377, 1378, 1380, 1459, 1381, 1384, 1382, 1383, 1385, 1445, 1386, 1389, 1387, 1388, 1390, 1431, 1391, 1394, 1392, 1393, 1395, 1422, 1425, 1428, 1429, 1430, 1396, 1415, 1418, 1397, 1411, 1413, 1412, 1398, 1399, 1407, 1409, 1408, 1400, 1401, 1403, 1405, 1404, 1402, 1406, 1410, 1414, 1416, 1417, 1419, 1420, 1421, 1423, 1424, 1426, 1427, 1432, 1437, 1440, 1443, 1444, 1433, 1436, 1434, 1435, 1438, 1439, 1441, 1442, 1446, 1451, 1454, 1457, 1458, 1447, 1450, 1448, 1449, 1452, 1453, 1455, 1456, 1460, 1465, 1468, 1471, 1472, 1461, 1464, 1462, 1463, 1466, 1467, 1469, 1470, 1474, 1479, 1482, 1485, 1486, 1475, 1478, 1476, 1477, 1480, 1481, 1483, 1484, 1488, 1493, 1496, 1499, 1500, 1489, 1492, 1490, 1491, 1494, 1495, 1497, 1498, 1502, 1503, 1508, 1511, 1514, 1515, 1504, 1507, 1505, 1506, 1509, 1510, 1512, 1513, 1517, 1519, 1520, 1523, 1524, 1525, 1726, 1574, 1728, 1731, 1526, 1528, 1531, 1527, 1529, 1530, 1532, 1570, 1572, 1571, 1536, 1533, 1552, 1534, 1535, 1537, 1538, 1539, 1540, 1546, 1548, 1547, 1541, 1545, 1542, 1544, 1543, 1549, 1550, 1551, 1553, 1566, 1568, 1567, 1554, 1555, 1562, 1564, 1563, 1556, 1557, 1558, 1560, 1559, 1561, 1565, 1569, 1573, 1575, 1711, 1576, 1579, 1577, 1578, 1580, 1697, 1581, 1584, 1582, 1583, 1585, 1683, 1586, 1589, 1587, 1588, 1590, 1669, 1591, 1594, 1592, 1593, 1595, 1655, 1596, 1599, 1597, 1598, 1600, 1641, 1601, 1604, 1602, 1603, 1605, 1632, 1635, 1638, 1639, 1640, 1606, 1625, 1628, 1607, 1621, 1623, 1622, 1608, 1609, 1617, 1619, 1618, 1610, 1611, 1613, 1615, 1614, 1612, 1616, 1620, 1624, 1626, 1627, 1629, 1630, 1631, 1633, 1634, 1636, 1637, 1642, 1647, 1650, 1653, 1654, 1643, 1646, 1644, 1645, 1648, 1649, 1651, 1652, 1656, 1661, 1664, 1667, 1668, 1657, 1660, 1658, 1659, 1662, 1663, 1665, 1666, 1670, 1675, 1678, 1681, 1682, 1671, 1674, 1672, 1673, 1676, 1677, 1679, 1680, 1684, 1689, 1692, 1695, 1696, 1685, 1688, 1686, 1687, 1690, 1691, 1693, 1694, 1698, 1703, 1706, 1709, 1710, 1699, 1702, 1700, 1701, 1704, 1705, 1707, 1708, 1712, 1713, 1718, 1721, 1724, 1725, 1714, 1717, 1715, 1716, 1719, 1720, 1722, 1723, 1727, 1729, 1730, 1733, 1734, 1735, 2115, 1736, 1737, 1999, 2111, 2113, 2112, 2003, 1847, 1736, 1737, 1739, 1742, 1738, 1740, 1741, 1743, 1843, 1845, 1844, 1747, 1744, 1825, 1745, 1746, 1747, 1748, 1749, 1750, 1755, 471, 1763, 1751, 1819, 1821, 1820, 1752, 1818, 1753, 1817, 1754, 1755, 471, 1763, 1756, 1757, 1771, 1778, 1788, 1756, 1757, 1755, 1759, 471, 1763, 1758, 1760, 1761, 1770, 1760, 1761, 1755, 471, 1763, 1762, 1764, 1765, 1767, 1766, 1768, 1763, 471, 1769, 1772, 1755, 1773, 471, 1763, 1774, 1775, 1776, 1774, 1775, 1777, 1755, 1763, 1779, 1780, 1755, 1773, 471, 1763, 1781, 1782, 1783, 1784, 1785, 1786, 1784, 1785, 1755, 471, 1763, 1786, 1787, 1755, 471, 1763, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, 1798, 1799, 1802, 1806, 1811, 1814, 1800, 1798, 1799, 1755, 471, 1763, 1800, 1801, 1755, 471, 1763, 1803, 1804, 1805, 1755, 471, 1763, 1807, 1809, 1808, 1755, 471, 1763, 1810, 1755, 471, 1763, 1812, 1813, 1755, 471, 1763, 1815, 1755, 471, 1763, 1816, 1755, 471, 1763, 1820, 1822, 1823, 1824, 1826, 1839, 1841, 1840, 1827, 1828, 1835, 1837, 1836, 1829, 1830, 1831, 1833, 1832, 1750, 1755, 471, 1763, 1834, 1838, 1842, 1844, 1743, 1846, 1848, 1984, 1849, 1852, 1850, 1851, 1853, 1970, 1854, 1857, 1855, 1856, 1858, 1956, 1859, 1862, 1860, 1861, 1863, 1942, 1864, 1867, 1865, 1866, 1868, 1928, 1869, 1872, 1870, 1871, 1873, 1914, 1874, 1877, 1875, 1876, 1878, 1905, 1908, 1911, 1912, 1913, 1879, 1898, 1901, 1880, 1894, 1896, 1895, 1881, 1882, 1890, 1892, 1891, 1883, 1884, 1886, 1888, 1887, 1885, 1750, 1755, 471, 1763, 1889, 1893, 1897, 1899, 1900, 1902, 1903, 1904, 1906, 1907, 1909, 1910, 1915, 1920, 1923, 1926, 1927, 1916, 1919, 1917, 1918, 1921, 1922, 1924, 1925, 1929, 1934, 1937, 1940, 1941, 1930, 1933, 1931, 1932, 1935, 1936, 1938, 1939, 1943, 1948, 1951, 1954, 1955, 1944, 1947, 1945, 1946, 1949, 1950, 1952, 1953, 1957, 1962, 1965, 1968, 1969, 1958, 1961, 1959, 1960, 1963, 1964, 1966, 1967, 1971, 1976, 1979, 1982, 1983, 1972, 1975, 1973, 1974, 1977, 1978, 1980, 1981, 1985, 1986, 1991, 1994, 1997, 1998, 1987, 1990, 1988, 1989, 1992, 1993, 1995, 1996, 2000, 2093, 2001, 2002, 2003, 2004, 2005, 2006, 2019, 2035, 2007, 2013, 2015, 2014, 2008, 2012, 2009, 2011, 2010, 2014, 2016, 2017, 2018, 2020, 2021, 2023, 2050, 2056, 2065, 2020, 2021, 2023, 2019, 2031, 2035, 2022, 2024, 2026, 2025, 2027, 2028, 2030, 2027, 2028, 2029, 2032, 2033, 2049, 2032, 2033, 2019, 2035, 2034, 2036, 2037, 2039, 2046, 2038, 2040, 2042, 2041, 2043, 2045, 2044, 2047, 2035, 2048, 2051, 2019, 2052, 2035, 2053, 2054, 2053, 2054, 2055, 2057, 2058, 2019, 2052, 2035, 2059, 2060, 2061, 2062, 2063, 2062, 2063, 2019, 2035, 2064, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2078, 2082, 2087, 2090, 2075, 2076, 2019, 2035, 2077, 2079, 2080, 2081, 2019, 2035, 2083, 2085, 2084, 2019, 2035, 2086, 2019, 2035, 2088, 2089, 2019, 2035, 2091, 2019, 2035, 2092, 2019, 2035, 2094, 2107, 2109, 2108, 2095, 2096, 2103, 2105, 2104, 2097, 2098, 2099, 2101, 2100, 2006, 2019, 2035, 2102, 2106, 2110, 2112, 1999, 2114, 1735, 2117, 2118, 2119, 2120, 2149, 2150, 2120, 2121, 471, 2122, 2127, 2122, 2121, 2123, 2124, 2125, 2124, 2125, 2121, 2126, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, 2138, 2139, 2140, 2141, 2143, 2146, 2141, 2142, 2121, 471, 2144, 2145, 2143, 2146, 2147, 2148, 2149, 2150, 2151, 2153, 2154, 2152, 448, 2153, 2154, 2155, 2156, 2158, 2159, 2160, 2161, 2162, 2157, 2163, 2165, 2167, 2164, 2166, 445, 2166, 445, 2168, 2169, 492, 475, 2170, 2171, 2372, 2381, 2377, 478, 2220, 2374, 2380, 2172, 2174, 2177, 2173, 2175, 2176, 2178, 2216, 2218, 2217, 2182, 2179, 2198, 2180, 2181, 2183, 2184, 2185, 2186, 2192, 2194, 2193, 2187, 2191, 2188, 2190, 2189, 2195, 2196, 2197, 2199, 2212, 2214, 2213, 2200, 2201, 2208, 2210, 2209, 2202, 2203, 2204, 2206, 2205, 2207, 2211, 2215, 2219, 2221, 2357, 2222, 2225, 2223, 2224, 2226, 2343, 2227, 2230, 2228, 2229, 2231, 2329, 2232, 2235, 2233, 2234, 2236, 2315, 2237, 2240, 2238, 2239, 2241, 2301, 2242, 2245, 2243, 2244, 2246, 2287, 2247, 2250, 2248, 2249, 2251, 2278, 2281, 2284, 2285, 2286, 2252, 2271, 2274, 2253, 2267, 2269, 2268, 2254, 2255, 2263, 2265, 2264, 2256, 2257, 2259, 2261, 2260, 2258, 2262, 2266, 2270, 2272, 2273, 2275, 2276, 2277, 2279, 2280, 2282, 2283, 2288, 2293, 2296, 2299, 2300, 2289, 2292, 2290, 2291, 2294, 2295, 2297, 2298, 2302, 2307, 2310, 2313, 2314, 2303, 2306, 2304, 2305, 2308, 2309, 2311, 2312, 2316, 2321, 2324, 2327, 2328, 2317, 2320, 2318, 2319, 2322, 2323, 2325, 2326, 2330, 2335, 2338, 2341, 2342, 2331, 2334, 2332, 2333, 2336, 2337, 2339, 2340, 2344, 2349, 2352, 2355, 2356, 2345, 2348, 2346, 2347, 2350, 2351, 2353, 2354, 2358, 2359, 2364, 2367, 2370, 2371, 2360, 2363, 2361, 2362, 2365, 2366, 2368, 2369, 2373, 2375, 2376, 2378, 2379, 2382, 2383, 2384, 2585, 2433, 2587, 2590, 2385, 2387, 2390, 2386, 2388, 2389, 2391, 2429, 2431, 2430, 2395, 2392, 2411, 2393, 2394, 2396, 2397, 2398, 2399, 2405, 2407, 2406, 2400, 2404, 2401, 2403, 2402, 2408, 2409, 2410, 2412, 2425, 2427, 2426, 2413, 2414, 2421, 2423, 2422, 2415, 2416, 2417, 2419, 2418, 2420, 2424, 2428, 2432, 2434, 2570, 2435, 2438, 2436, 2437, 2439, 2556, 2440, 2443, 2441, 2442, 2444, 2542, 2445, 2448, 2446, 2447, 2449, 2528, 2450, 2453, 2451, 2452, 2454, 2514, 2455, 2458, 2456, 2457, 2459, 2500, 2460, 2463, 2461, 2462, 2464, 2491, 2494, 2497, 2498, 2499, 2465, 2484, 2487, 2466, 2480, 2482, 2481, 2467, 2468, 2476, 2478, 2477, 2469, 2470, 2472, 2474, 2473, 2471, 2475, 2479, 2483, 2485, 2486, 2488, 2489, 2490, 2492, 2493, 2495, 2496, 2501, 2506, 2509, 2512, 2513, 2502, 2505, 2503, 2504, 2507, 2508, 2510, 2511, 2515, 2520, 2523, 2526, 2527, 2516, 2519, 2517, 2518, 2521, 2522, 2524, 2525, 2529, 2534, 2537, 2540, 2541, 2530, 2533, 2531, 2532, 2535, 2536, 2538, 2539, 2543, 2548, 2551, 2554, 2555, 2544, 2547, 2545, 2546, 2549, 2550, 2552, 2553, 2557, 2562, 2565, 2568, 2569, 2558, 2561, 2559, 2560, 2563, 2564, 2566, 2567, 2571, 2572, 2577, 2580, 2583, 2584, 2573, 2576, 2574, 2575, 2578, 2579, 2581, 2582, 2586, 2588, 2589, 2592, 2593, 2594, 2838, 2595, 2596, 2796, 2834, 2836, 2835, 2800, 2644, 2595, 2596, 2598, 2601, 2597, 2599, 2600, 2602, 2640, 2642, 2641, 2606, 2603, 2622, 2604, 2605, 2606, 492, 475, 2607, 2608, 2609, 478, 2610, 2616, 2618, 2617, 2611, 2615, 2612, 2614, 2613, 492, 475, 478, 2617, 2619, 2620, 2621, 2623, 2636, 2638, 2637, 2624, 2625, 2632, 2634, 2633, 2626, 2627, 2628, 2630, 2629, 492, 475, 2609, 478, 2631, 2635, 2639, 2641, 2602, 2643, 2645, 2781, 2646, 2649, 2647, 2648, 2650, 2767, 2651, 2654, 2652, 2653, 2655, 2753, 2656, 2659, 2657, 2658, 2660, 2739, 2661, 2664, 2662, 2663, 2665, 2725, 2666, 2669, 2667, 2668, 2670, 2711, 2671, 2674, 2672, 2673, 2675, 2702, 2705, 2708, 2709, 2710, 2676, 2695, 2698, 2677, 2691, 2693, 2692, 2678, 2679, 2687, 2689, 2688, 2680, 2681, 2683, 2685, 2684, 2682, 492, 475, 2609, 478, 2686, 2690, 2694, 2696, 2697, 2699, 2700, 2701, 2703, 2704, 2706, 2707, 2712, 2717, 2720, 2723, 2724, 2713, 2716, 2714, 2715, 2718, 2719, 2721, 2722, 2726, 2731, 2734, 2737, 2738, 2727, 2730, 2728, 2729, 2732, 2733, 2735, 2736, 2740, 2745, 2748, 2751, 2752, 2741, 2744, 2742, 2743, 2746, 2747, 2749, 2750, 2754, 2759, 2762, 2765, 2766, 2755, 2758, 2756, 2757, 2760, 2761, 2763, 2764, 2768, 2773, 2776, 2779, 2780, 2769, 2772, 2770, 2771, 2774, 2775, 2777, 2778, 2782, 2783, 2788, 2791, 2794, 2795, 2784, 2787, 2785, 2786, 2789, 2790, 2792, 2793, 2797, 2816, 2798, 2799, 2800, 2801, 2802, 2803, 2804, 2810, 2812, 2811, 2805, 2809, 2806, 2808, 2807, 2811, 2813, 2814, 2815, 2817, 2830, 2832, 2831, 2818, 2819, 2826, 2828, 2827, 2820, 2821, 2822, 2824, 2823, 2803, 2825, 2829, 2833, 2835, 2796, 2837, 2594, 2840, 2841, 2842, 2843, 2844, 2845, 492, 475, 2843, 478, 2844, 2845, 2846, 2849, 2850, 2851, 2852, 2853, 2852, 2853, 2853, 2854, 2901, 2906, 2860, 2855, 2856, 2856, 2857, 2858, 2859, 2860, 2861, 2862, 2863, 2864, 3447, 2865, 2866, 3331, 3443, 3445, 3444, 3335, 3179, 2865, 2866, 2868, 2871, 2867, 2869, 2870, 2872, 3175, 3177, 3176, 2876, 2873, 3157, 2874, 2875, 2876, 2877, 2878, 2879, 2884, 2892, 3095, 2880, 3151, 3153, 3152, 2881, 3150, 2882, 3149, 2883, 2884, 2892, 3095, 2885, 2886, 3103, 3110, 3120, 2885, 2886, 2884, 2888, 2892, 3095, 2887, 2889, 2890, 3102, 2889, 2890, 2884, 2892, 3095, 2891, 2893, 2931, 2897, 2917, 2893, 2894, 2897, 2895, 2896, 2898, 2901, 2906, 2860, 2899, 2900, 2857, 2902, 2903, 2901, 2860, 2902, 2903, 2904, 2905, 2907, 2908, 2909, 2910, 2911, 2906, 2912, 2914, 2916, 2913, 2915, 2857, 2915, 2857, 2918, 2921, 2919, 2920, 2922, 3093, 2926, 2922, 2923, 2924, 2925, 2927, 2930, 2933, 2942, 2928, 2929, 2932, 2934, 2935, 2936, 2937, 2938, 2939, 2892, 2941, 2940, 2943, 3078, 2944, 2947, 2945, 2946, 2948, 3064, 2949, 2952, 2950, 2951, 2953, 3050, 2954, 2957, 2955, 2956, 2958, 3036, 2959, 2962, 2960, 2961, 2963, 3022, 2964, 2967, 2965, 2966, 2968, 3008, 2969, 2972, 2970, 2971, 2973, 2999, 3002, 3005, 3006, 3007, 2974, 2992, 2995, 2975, 2988, 2990, 2989, 2976, 2977, 2984, 2986, 2985, 2978, 2979, 2980, 2982, 2981, 2983, 2987, 2991, 2993, 2994, 2996, 2997, 2998, 3000, 3001, 3003, 3004, 3009, 3014, 3017, 3020, 3021, 3010, 3013, 3011, 3012, 3015, 3016, 3018, 3019, 3023, 3028, 3031, 3034, 3035, 3024, 3027, 3025, 3026, 3029, 3030, 3032, 3033, 3037, 3042, 3045, 3048, 3049, 3038, 3041, 3039, 3040, 3043, 3044, 3046, 3047, 3051, 3056, 3059, 3062, 3063, 3052, 3055, 3053, 3054, 3057, 3058, 3060, 3061, 3065, 3070, 3073, 3076, 3077, 3066, 3069, 3067, 3068, 3071, 3072, 3074, 3075, 3079, 3080, 3085, 3088, 3091, 3092, 3081, 3084, 3082, 3083, 3086, 3087, 3089, 3090, 3094, 3096, 3097, 3099, 3098, 3100, 3095, 2892, 3101, 3104, 2884, 3105, 2892, 3095, 3106, 3107, 3108, 3106, 3107, 3109, 2884, 2892, 3095, 3111, 3112, 2884, 3105, 2892, 3095, 3113, 3114, 3115, 3116, 3117, 3118, 3116, 3117, 2884, 2892, 3095, 3118, 3119, 2884, 2892, 3095, 3121, 3122, 3123, 3124, 3125, 3126, 3127, 3128, 3129, 3130, 3131, 3134, 3138, 3143, 3146, 3132, 3130, 3131, 2884, 2892, 3095, 3132, 3133, 2884, 2892, 3095, 3135, 3136, 3137, 2884, 2892, 3095, 3139, 3141, 3140, 2884, 2892, 3095, 3142, 2884, 2892, 3095, 3144, 3145, 2884, 2892, 3095, 3147, 2884, 2892, 3095, 3148, 2884, 2892, 3095, 3152, 3154, 3155, 3156, 3158, 3171, 3173, 3172, 3159, 3160, 3167, 3169, 3168, 3161, 3162, 3163, 3165, 3164, 2879, 2884, 2892, 3095, 3166, 3170, 3174, 3176, 2872, 3178, 3180, 3316, 3181, 3184, 3182, 3183, 3185, 3302, 3186, 3189, 3187, 3188, 3190, 3288, 3191, 3194, 3192, 3193, 3195, 3274, 3196, 3199, 3197, 3198, 3200, 3260, 3201, 3204, 3202, 3203, 3205, 3246, 3206, 3209, 3207, 3208, 3210, 3237, 3240, 3243, 3244, 3245, 3211, 3230, 3233, 3212, 3226, 3228, 3227, 3213, 3214, 3222, 3224, 3223, 3215, 3216, 3218, 3220, 3219, 3217, 2879, 2884, 2892, 3095, 3221, 3225, 3229, 3231, 3232, 3234, 3235, 3236, 3238, 3239, 3241, 3242, 3247, 3252, 3255, 3258, 3259, 3248, 3251, 3249, 3250, 3253, 3254, 3256, 3257, 3261, 3266, 3269, 3272, 3273, 3262, 3265, 3263, 3264, 3267, 3268, 3270, 3271, 3275, 3280, 3283, 3286, 3287, 3276, 3279, 3277, 3278, 3281, 3282, 3284, 3285, 3289, 3294, 3297, 3300, 3301, 3290, 3293, 3291, 3292, 3295, 3296, 3298, 3299, 3303, 3308, 3311, 3314, 3315, 3304, 3307, 3305, 3306, 3309, 3310, 3312, 3313, 3317, 3318, 3323, 3326, 3329, 3330, 3319, 3322, 3320, 3321, 3324, 3325, 3327, 3328, 3332, 3425, 3333, 3334, 3335, 3336, 3337, 3338, 3351, 3367, 3339, 3345, 3347, 3346, 3340, 3344, 3341, 3343, 3342, 3346, 3348, 3349, 3350, 3352, 3353, 3355, 3382, 3388, 3397, 3352, 3353, 3355, 3351, 3363, 3367, 3354, 3356, 3358, 3357, 3359, 3360, 3362, 3359, 3360, 3361, 3364, 3365, 3381, 3364, 3365, 3351, 3367, 3366, 3368, 3369, 3371, 3378, 3370, 3372, 3374, 3373, 3375, 3377, 3376, 3379, 3367, 3380, 3383, 3351, 3384, 3367, 3385, 3386, 3385, 3386, 3387, 3389, 3390, 3351, 3384, 3367, 3391, 3392, 3393, 3394, 3395, 3394, 3395, 3351, 3367, 3396, 3398, 3399, 3400, 3401, 3402, 3403, 3404, 3405, 3406, 3407, 3408, 3410, 3414, 3419, 3422, 3407, 3408, 3351, 3367, 3409, 3411, 3412, 3413, 3351, 3367, 3415, 3417, 3416, 3351, 3367, 3418, 3351, 3367, 3420, 3421, 3351, 3367, 3423, 3351, 3367, 3424, 3351, 3367, 3426, 3439, 3441, 3440, 3427, 3428, 3435, 3437, 3436, 3429, 3430, 3431, 3433, 3432, 3338, 3351, 3367, 3434, 3438, 3442, 3444, 3331, 3446, 2864, 3449, 3450, 3451, 3460, 3455, 3452, 3453, 3454, 3456, 3459, 3457, 3458, 160, 143, 3459, 146, 3461, 3463, 3464, 3470, 3471, 3472, 3474, 3487, 3489, 3488, 3475, 3476, 3483, 3485, 3484, 3477, 3478, 3479, 3481, 3480, 3482, 3486, 3490, 3494, 3496, 3632, 3497, 3500, 3498, 3499, 3501, 3618, 3502, 3505, 3503, 3504, 3506, 3604, 3507, 3510, 3508, 3509, 3511, 3590, 3512, 3515, 3513, 3514, 3516, 3576, 3517, 3520, 3518, 3519, 3521, 3562, 3522, 3525, 3523, 3524, 3526, 3553, 3556, 3559, 3560, 3561, 3527, 3546, 3549, 3528, 3542, 3544, 3543, 3529, 3530, 3538, 3540, 3539, 3531, 3532, 3534, 3536, 3535, 3533, 3537, 3541, 3545, 3547, 3548, 3550, 3551, 3552, 3554, 3555, 3557, 3558, 3563, 3568, 3571, 3574, 3575, 3564, 3567, 3565, 3566, 3569, 3570, 3572, 3573, 3577, 3582, 3585, 3588, 3589, 3578, 3581, 3579, 3580, 3583, 3584, 3586, 3587, 3591, 3596, 3599, 3602, 3603, 3592, 3595, 3593, 3594, 3597, 3598, 3600, 3601, 3605, 3610, 3613, 3616, 3617, 3606, 3609, 3607, 3608, 3611, 3612, 3614, 3615, 3619, 3624, 3627, 3630, 3631, 3620, 3623, 3621, 3622, 3625, 3626, 3628, 3629, 3633, 3634, 3639, 3642, 3645, 3646, 3635, 3638, 3636, 3637, 3640, 3641, 3643, 3644, 3648, 3650, 3651, 3654, 3655, 3656, 3857, 3705, 3859, 3862, 3657, 3659, 3662, 3658, 3660, 3661, 3663, 3701, 3703, 3702, 3667, 3664, 3683, 3665, 3666, 3668, 3669, 3670, 3671, 3677, 3679, 3678, 3672, 3676, 3673, 3675, 3674, 3680, 3681, 3682, 3684, 3697, 3699, 3698, 3685, 3686, 3693, 3695, 3694, 3687, 3688, 3689, 3691, 3690, 3692, 3696, 3700, 3704, 3706, 3842, 3707, 3710, 3708, 3709, 3711, 3828, 3712, 3715, 3713, 3714, 3716, 3814, 3717, 3720, 3718, 3719, 3721, 3800, 3722, 3725, 3723, 3724, 3726, 3786, 3727, 3730, 3728, 3729, 3731, 3772, 3732, 3735, 3733, 3734, 3736, 3763, 3766, 3769, 3770, 3771, 3737, 3756, 3759, 3738, 3752, 3754, 3753, 3739, 3740, 3748, 3750, 3749, 3741, 3742, 3744, 3746, 3745, 3743, 3747, 3751, 3755, 3757, 3758, 3760, 3761, 3762, 3764, 3765, 3767, 3768, 3773, 3778, 3781, 3784, 3785, 3774, 3777, 3775, 3776, 3779, 3780, 3782, 3783, 3787, 3792, 3795, 3798, 3799, 3788, 3791, 3789, 3790, 3793, 3794, 3796, 3797, 3801, 3806, 3809, 3812, 3813, 3802, 3805, 3803, 3804, 3807, 3808, 3810, 3811, 3815, 3820, 3823, 3826, 3827, 3816, 3819, 3817, 3818, 3821, 3822, 3824, 3825, 3829, 3834, 3837, 3840, 3841, 3830, 3833, 3831, 3832, 3835, 3836, 3838, 3839, 3843, 3844, 3849, 3852, 3855, 3856, 3845, 3848, 3846, 3847, 3850, 3851, 3853, 3854, 3858, 3860, 3861, 3864, 3865, 3866, 4246, 3867, 3868, 4130, 4242, 4244, 4243, 4134, 3978, 3867, 3868, 3870, 3873, 3869, 3871, 3872, 3874, 3974, 3976, 3975, 3878, 3875, 3956, 3876, 3877, 3878, 3879, 3880, 3881, 3886, 139, 3894, 3882, 3950, 3952, 3951, 3883, 3949, 3884, 3948, 3885, 3886, 139, 3894, 3887, 3888, 3902, 3909, 3919, 3887, 3888, 3886, 3890, 139, 3894, 3889, 3891, 3892, 3901, 3891, 3892, 3886, 139, 3894, 3893, 3895, 3896, 3898, 3897, 3899, 3894, 139, 3900, 3903, 3886, 3904, 139, 3894, 3905, 3906, 3907, 3905, 3906, 3908, 3886, 3894, 3910, 3911, 3886, 3904, 139, 3894, 3912, 3913, 3914, 3915, 3916, 3917, 3915, 3916, 3886, 139, 3894, 3917, 3918, 3886, 139, 3894, 3920, 3921, 3922, 3923, 3924, 3925, 3926, 3927, 3928, 3929, 3930, 3933, 3937, 3942, 3945, 3931, 3929, 3930, 3886, 139, 3894, 3931, 3932, 3886, 139, 3894, 3934, 3935, 3936, 3886, 139, 3894, 3938, 3940, 3939, 3886, 139, 3894, 3941, 3886, 139, 3894, 3943, 3944, 3886, 139, 3894, 3946, 3886, 139, 3894, 3947, 3886, 139, 3894, 3951, 3953, 3954, 3955, 3957, 3970, 3972, 3971, 3958, 3959, 3966, 3968, 3967, 3960, 3961, 3962, 3964, 3963, 3881, 3886, 139, 3894, 3965, 3969, 3973, 3975, 3874, 3977, 3979, 4115, 3980, 3983, 3981, 3982, 3984, 4101, 3985, 3988, 3986, 3987, 3989, 4087, 3990, 3993, 3991, 3992, 3994, 4073, 3995, 3998, 3996, 3997, 3999, 4059, 4000, 4003, 4001, 4002, 4004, 4045, 4005, 4008, 4006, 4007, 4009, 4036, 4039, 4042, 4043, 4044, 4010, 4029, 4032, 4011, 4025, 4027, 4026, 4012, 4013, 4021, 4023, 4022, 4014, 4015, 4017, 4019, 4018, 4016, 3881, 3886, 139, 3894, 4020, 4024, 4028, 4030, 4031, 4033, 4034, 4035, 4037, 4038, 4040, 4041, 4046, 4051, 4054, 4057, 4058, 4047, 4050, 4048, 4049, 4052, 4053, 4055, 4056, 4060, 4065, 4068, 4071, 4072, 4061, 4064, 4062, 4063, 4066, 4067, 4069, 4070, 4074, 4079, 4082, 4085, 4086, 4075, 4078, 4076, 4077, 4080, 4081, 4083, 4084, 4088, 4093, 4096, 4099, 4100, 4089, 4092, 4090, 4091, 4094, 4095, 4097, 4098, 4102, 4107, 4110, 4113, 4114, 4103, 4106, 4104, 4105, 4108, 4109, 4111, 4112, 4116, 4117, 4122, 4125, 4128, 4129, 4118, 4121, 4119, 4120, 4123, 4124, 4126, 4127, 4131, 4224, 4132, 4133, 4134, 4135, 4136, 4137, 4150, 4166, 4138, 4144, 4146, 4145, 4139, 4143, 4140, 4142, 4141, 4145, 4147, 4148, 4149, 4151, 4152, 4154, 4181, 4187, 4196, 4151, 4152, 4154, 4150, 4162, 4166, 4153, 4155, 4157, 4156, 4158, 4159, 4161, 4158, 4159, 4160, 4163, 4164, 4180, 4163, 4164, 4150, 4166, 4165, 4167, 4168, 4170, 4177, 4169, 4171, 4173, 4172, 4174, 4176, 4175, 4178, 4166, 4179, 4182, 4150, 4183, 4166, 4184, 4185, 4184, 4185, 4186, 4188, 4189, 4150, 4183, 4166, 4190, 4191, 4192, 4193, 4194, 4193, 4194, 4150, 4166, 4195, 4197, 4198, 4199, 4200, 4201, 4202, 4203, 4204, 4205, 4206, 4207, 4209, 4213, 4218, 4221, 4206, 4207, 4150, 4166, 4208, 4210, 4211, 4212, 4150, 4166, 4214, 4216, 4215, 4150, 4166, 4217, 4150, 4166, 4219, 4220, 4150, 4166, 4222, 4150, 4166, 4223, 4150, 4166, 4225, 4238, 4240, 4239, 4226, 4227, 4234, 4236, 4235, 4228, 4229, 4230, 4232, 4231, 4137, 4150, 4166, 4233, 4237, 4241, 4243, 4130, 4245, 3866, 4248, 4249, 4250, 4251, 4280, 4281, 4251, 4252, 139, 4253, 4258, 4253, 4252, 4254, 4255, 4256, 4255, 4256, 4252, 4257, 4259, 4260, 4261, 4262, 4263, 4264, 4265, 4266, 4267, 4268, 4269, 4270, 4271, 4272, 4274, 4277, 4272, 4273, 4252, 139, 4275, 4276, 4274, 4277, 4278, 4279, 4280, 4281, 4282, 4284, 4285, 4283, 116, 4284, 4285, 4286, 4287, 4289, 4290, 4291, 4292, 4293, 4288, 4294, 4296, 4298, 4295, 4297, 113, 4297, 113, 4299, 4300, 160, 143, 4301, 4302, 4503, 4512, 4508, 146, 4351, 4505, 4511, 4303, 4305, 4308, 4304, 4306, 4307, 4309, 4347, 4349, 4348, 4313, 4310, 4329, 4311, 4312, 4314, 4315, 4316, 4317, 4323, 4325, 4324, 4318, 4322, 4319, 4321, 4320, 4326, 4327, 4328, 4330, 4343, 4345, 4344, 4331, 4332, 4339, 4341, 4340, 4333, 4334, 4335, 4337, 4336, 4338, 4342, 4346, 4350, 4352, 4488, 4353, 4356, 4354, 4355, 4357, 4474, 4358, 4361, 4359, 4360, 4362, 4460, 4363, 4366, 4364, 4365, 4367, 4446, 4368, 4371, 4369, 4370, 4372, 4432, 4373, 4376, 4374, 4375, 4377, 4418, 4378, 4381, 4379, 4380, 4382, 4409, 4412, 4415, 4416, 4417, 4383, 4402, 4405, 4384, 4398, 4400, 4399, 4385, 4386, 4394, 4396, 4395, 4387, 4388, 4390, 4392, 4391, 4389, 4393, 4397, 4401, 4403, 4404, 4406, 4407, 4408, 4410, 4411, 4413, 4414, 4419, 4424, 4427, 4430, 4431, 4420, 4423, 4421, 4422, 4425, 4426, 4428, 4429, 4433, 4438, 4441, 4444, 4445, 4434, 4437, 4435, 4436, 4439, 4440, 4442, 4443, 4447, 4452, 4455, 4458, 4459, 4448, 4451, 4449, 4450, 4453, 4454, 4456, 4457, 4461, 4466, 4469, 4472, 4473, 4462, 4465, 4463, 4464, 4467, 4468, 4470, 4471, 4475, 4480, 4483, 4486, 4487, 4476, 4479, 4477, 4478, 4481, 4482, 4484, 4485, 4489, 4490, 4495, 4498, 4501, 4502, 4491, 4494, 4492, 4493, 4496, 4497, 4499, 4500, 4504, 4506, 4507, 4509, 4510, 4513, 4514, 4515, 4716, 4564, 4718, 4721, 4516, 4518, 4521, 4517, 4519, 4520, 4522, 4560, 4562, 4561, 4526, 4523, 4542, 4524, 4525, 4527, 4528, 4529, 4530, 4536, 4538, 4537, 4531, 4535, 4532, 4534, 4533, 4539, 4540, 4541, 4543, 4556, 4558, 4557, 4544, 4545, 4552, 4554, 4553, 4546, 4547, 4548, 4550, 4549, 4551, 4555, 4559, 4563, 4565, 4701, 4566, 4569, 4567, 4568, 4570, 4687, 4571, 4574, 4572, 4573, 4575, 4673, 4576, 4579, 4577, 4578, 4580, 4659, 4581, 4584, 4582, 4583, 4585, 4645, 4586, 4589, 4587, 4588, 4590, 4631, 4591, 4594, 4592, 4593, 4595, 4622, 4625, 4628, 4629, 4630, 4596, 4615, 4618, 4597, 4611, 4613, 4612, 4598, 4599, 4607, 4609, 4608, 4600, 4601, 4603, 4605, 4604, 4602, 4606, 4610, 4614, 4616, 4617, 4619, 4620, 4621, 4623, 4624, 4626, 4627, 4632, 4637, 4640, 4643, 4644, 4633, 4636, 4634, 4635, 4638, 4639, 4641, 4642, 4646, 4651, 4654, 4657, 4658, 4647, 4650, 4648, 4649, 4652, 4653, 4655, 4656, 4660, 4665, 4668, 4671, 4672, 4661, 4664, 4662, 4663, 4666, 4667, 4669, 4670, 4674, 4679, 4682, 4685, 4686, 4675, 4678, 4676, 4677, 4680, 4681, 4683, 4684, 4688, 4693, 4696, 4699, 4700, 4689, 4692, 4690, 4691, 4694, 4695, 4697, 4698, 4702, 4703, 4708, 4711, 4714, 4715, 4704, 4707, 4705, 4706, 4709, 4710, 4712, 4713, 4717, 4719, 4720, 4723, 4724, 4725, 4969, 4726, 4727, 4927, 4965, 4967, 4966, 4931, 4775, 4726, 4727, 4729, 4732, 4728, 4730, 4731, 4733, 4771, 4773, 4772, 4737, 4734, 4753, 4735, 4736, 4737, 160, 143, 4738, 4739, 4740, 146, 4741, 4747, 4749, 4748, 4742, 4746, 4743, 4745, 4744, 160, 143, 146, 4748, 4750, 4751, 4752, 4754, 4767, 4769, 4768, 4755, 4756, 4763, 4765, 4764, 4757, 4758, 4759, 4761, 4760, 160, 143, 4740, 146, 4762, 4766, 4770, 4772, 4733, 4774, 4776, 4912, 4777, 4780, 4778, 4779, 4781, 4898, 4782, 4785, 4783, 4784, 4786, 4884, 4787, 4790, 4788, 4789, 4791, 4870, 4792, 4795, 4793, 4794, 4796, 4856, 4797, 4800, 4798, 4799, 4801, 4842, 4802, 4805, 4803, 4804, 4806, 4833, 4836, 4839, 4840, 4841, 4807, 4826, 4829, 4808, 4822, 4824, 4823, 4809, 4810, 4818, 4820, 4819, 4811, 4812, 4814, 4816, 4815, 4813, 160, 143, 4740, 146, 4817, 4821, 4825, 4827, 4828, 4830, 4831, 4832, 4834, 4835, 4837, 4838, 4843, 4848, 4851, 4854, 4855, 4844, 4847, 4845, 4846, 4849, 4850, 4852, 4853, 4857, 4862, 4865, 4868, 4869, 4858, 4861, 4859, 4860, 4863, 4864, 4866, 4867, 4871, 4876, 4879, 4882, 4883, 4872, 4875, 4873, 4874, 4877, 4878, 4880, 4881, 4885, 4890, 4893, 4896, 4897, 4886, 4889, 4887, 4888, 4891, 4892, 4894, 4895, 4899, 4904, 4907, 4910, 4911, 4900, 4903, 4901, 4902, 4905, 4906, 4908, 4909, 4913, 4914, 4919, 4922, 4925, 4926, 4915, 4918, 4916, 4917, 4920, 4921, 4923, 4924, 4928, 4947, 4929, 4930, 4931, 4932, 4933, 4934, 4935, 4941, 4943, 4942, 4936, 4940, 4937, 4939, 4938, 4942, 4944, 4945, 4946, 4948, 4961, 4963, 4962, 4949, 4950, 4957, 4959, 4958, 4951, 4952, 4953, 4955, 4954, 4934, 4956, 4960, 4964, 4966, 4927, 4968, 4725, 4971, 4972, 4973, 4974, 4975, 4976, 160, 143, 4974, 146, 4975, 4976, 4977, 4979, 4980, 4982, 4983, 4984, 4985, 4986, 4981, 4987, 4989, 4991, 4988, 4990, 58, 4990, 58, 4992, 4993, 4994, 4995, 4996, 4997, 4998, 5000, 5837, 4999, 5001, 5002, 5005, 5001, 5002, 5005, 5003, 5004, 5006, 5007, 5008, 5009, 5836, 5010, 5011, 5720, 5832, 5834, 5833, 5724, 5568, 5010, 5011, 5013, 5016, 5012, 5014, 5015, 5017, 5564, 5566, 5565, 5021, 5018, 5546, 5019, 5020, 5021, 5022, 5023, 5024, 5029, 5037, 5484, 5025, 5540, 5542, 5541, 5026, 5539, 5027, 5538, 5028, 5029, 5037, 5484, 5030, 5031, 5492, 5499, 5509, 5030, 5031, 5029, 5033, 5037, 5484, 5032, 5034, 5035, 5491, 5034, 5035, 5029, 5037, 5484, 5036, 5038, 5067, 5042, 5076, 5038, 5039, 5042, 5076, 5040, 5041, 5043, 5046, 4992, 5005, 5051, 5044, 5045, 5002, 5047, 5048, 5046, 5047, 5048, 5049, 5050, 5052, 5053, 5054, 5483, 5055, 5056, 5441, 5479, 5481, 5480, 5445, 5289, 5055, 5056, 5058, 5061, 5057, 5059, 5060, 5062, 5285, 5287, 5286, 5066, 5063, 5267, 5064, 5065, 5066, 5038, 5067, 5042, 5069, 5070, 5071, 5076, 5068, 5072, 5261, 5263, 5262, 5073, 5260, 5074, 5259, 5075, 5038, 5067, 5042, 5076, 5077, 5080, 5253, 5078, 5079, 5081, 5251, 5042, 5085, 5081, 5082, 5083, 5084, 5086, 5089, 5090, 5100, 5087, 5088, 5038, 5067, 5091, 5092, 5093, 5094, 5095, 5096, 5098, 5099, 5097, 5101, 5236, 5102, 5105, 5103, 5104, 5106, 5222, 5107, 5110, 5108, 5109, 5111, 5208, 5112, 5115, 5113, 5114, 5116, 5194, 5117, 5120, 5118, 5119, 5121, 5180, 5122, 5125, 5123, 5124, 5126, 5166, 5127, 5130, 5128, 5129, 5131, 5157, 5160, 5163, 5164, 5165, 5132, 5150, 5153, 5133, 5146, 5148, 5147, 5134, 5135, 5142, 5144, 5143, 5136, 5137, 5138, 5140, 5139, 5141, 5145, 5149, 5151, 5152, 5154, 5155, 5156, 5158, 5159, 5161, 5162, 5167, 5172, 5175, 5178, 5179, 5168, 5171, 5169, 5170, 5173, 5174, 5176, 5177, 5181, 5186, 5189, 5192, 5193, 5182, 5185, 5183, 5184, 5187, 5188, 5190, 5191, 5195, 5200, 5203, 5206, 5207, 5196, 5199, 5197, 5198, 5201, 5202, 5204, 5205, 5209, 5214, 5217, 5220, 5221, 5210, 5213, 5211, 5212, 5215, 5216, 5218, 5219, 5223, 5228, 5231, 5234, 5235, 5224, 5227, 5225, 5226, 5229, 5230, 5232, 5233, 5237, 5238, 5243, 5246, 5249, 5250, 5239, 5242, 5240, 5241, 5244, 5245, 5247, 5248, 5252, 5254, 5255, 5256, 5257, 5258, 5081, 5251, 5042, 5076, 5085, 5262, 5264, 5265, 5266, 5268, 5281, 5283, 5282, 5269, 5270, 5277, 5279, 5278, 5271, 5272, 5273, 5275, 5274, 5038, 5067, 5042, 5071, 5076, 5276, 5280, 5284, 5286, 5062, 5288, 5290, 5426, 5291, 5294, 5292, 5293, 5295, 5412, 5296, 5299, 5297, 5298, 5300, 5398, 5301, 5304, 5302, 5303, 5305, 5384, 5306, 5309, 5307, 5308, 5310, 5370, 5311, 5314, 5312, 5313, 5315, 5356, 5316, 5319, 5317, 5318, 5320, 5347, 5350, 5353, 5354, 5355, 5321, 5340, 5343, 5322, 5336, 5338, 5337, 5323, 5324, 5332, 5334, 5333, 5325, 5326, 5328, 5330, 5329, 5327, 5038, 5067, 5042, 5071, 5076, 5331, 5335, 5339, 5341, 5342, 5344, 5345, 5346, 5348, 5349, 5351, 5352, 5357, 5362, 5365, 5368, 5369, 5358, 5361, 5359, 5360, 5363, 5364, 5366, 5367, 5371, 5376, 5379, 5382, 5383, 5372, 5375, 5373, 5374, 5377, 5378, 5380, 5381, 5385, 5390, 5393, 5396, 5397, 5386, 5389, 5387, 5388, 5391, 5392, 5394, 5395, 5399, 5404, 5407, 5410, 5411, 5400, 5403, 5401, 5402, 5405, 5406, 5408, 5409, 5413, 5418, 5421, 5424, 5425, 5414, 5417, 5415, 5416, 5419, 5420, 5422, 5423, 5427, 5428, 5433, 5436, 5439, 5440, 5429, 5432, 5430, 5431, 5434, 5435, 5437, 5438, 5442, 5461, 5443, 5444, 5445, 5446, 5447, 5448, 5449, 5455, 5457, 5456, 5450, 5454, 5451, 5453, 5452, 5456, 5458, 5459, 5460, 5462, 5475, 5477, 5476, 5463, 5464, 5471, 5473, 5472, 5465, 5466, 5467, 5469, 5468, 5448, 5470, 5474, 5478, 5480, 5441, 5482, 5054, 5485, 5486, 5488, 5487, 5489, 5484, 5037, 5490, 5493, 5029, 5494, 5037, 5484, 5495, 5496, 5497, 5495, 5496, 5498, 5029, 5037, 5484, 5500, 5501, 5029, 5494, 5037, 5484, 5502, 5503, 5504, 5505, 5506, 5507, 5505, 5506, 5029, 5037, 5484, 5507, 5508, 5029, 5037, 5484, 5510, 5511, 5512, 5513, 5514, 5515, 5516, 5517, 5518, 5519, 5520, 5523, 5527, 5532, 5535, 5521, 5519, 5520, 5029, 5037, 5484, 5521, 5522, 5029, 5037, 5484, 5524, 5525, 5526, 5029, 5037, 5484, 5528, 5530, 5529, 5029, 5037, 5484, 5531, 5029, 5037, 5484, 5533, 5534, 5029, 5037, 5484, 5536, 5029, 5037, 5484, 5537, 5029, 5037, 5484, 5541, 5543, 5544, 5545, 5547, 5560, 5562, 5561, 5548, 5549, 5556, 5558, 5557, 5550, 5551, 5552, 5554, 5553, 5024, 5029, 5037, 5484, 5555, 5559, 5563, 5565, 5017, 5567, 5569, 5705, 5570, 5573, 5571, 5572, 5574, 5691, 5575, 5578, 5576, 5577, 5579, 5677, 5580, 5583, 5581, 5582, 5584, 5663, 5585, 5588, 5586, 5587, 5589, 5649, 5590, 5593, 5591, 5592, 5594, 5635, 5595, 5598, 5596, 5597, 5599, 5626, 5629, 5632, 5633, 5634, 5600, 5619, 5622, 5601, 5615, 5617, 5616, 5602, 5603, 5611, 5613, 5612, 5604, 5605, 5607, 5609, 5608, 5606, 5024, 5029, 5037, 5484, 5610, 5614, 5618, 5620, 5621, 5623, 5624, 5625, 5627, 5628, 5630, 5631, 5636, 5641, 5644, 5647, 5648, 5637, 5640, 5638, 5639, 5642, 5643, 5645, 5646, 5650, 5655, 5658, 5661, 5662, 5651, 5654, 5652, 5653, 5656, 5657, 5659, 5660, 5664, 5669, 5672, 5675, 5676, 5665, 5668, 5666, 5667, 5670, 5671, 5673, 5674, 5678, 5683, 5686, 5689, 5690, 5679, 5682, 5680, 5681, 5684, 5685, 5687, 5688, 5692, 5697, 5700, 5703, 5704, 5693, 5696, 5694, 5695, 5698, 5699, 5701, 5702, 5706, 5707, 5712, 5715, 5718, 5719, 5708, 5711, 5709, 5710, 5713, 5714, 5716, 5717, 5721, 5814, 5722, 5723, 5724, 5725, 5726, 5727, 5740, 5756, 5728, 5734, 5736, 5735, 5729, 5733, 5730, 5732, 5731, 5735, 5737, 5738, 5739, 5741, 5742, 5744, 5771, 5777, 5786, 5741, 5742, 5744, 5740, 5752, 5756, 5743, 5745, 5747, 5746, 5748, 5749, 5751, 5748, 5749, 5750, 5753, 5754, 5770, 5753, 5754, 5740, 5756, 5755, 5757, 5758, 5760, 5767, 5759, 5761, 5763, 5762, 5764, 5766, 5765, 5768, 5756, 5769, 5772, 5740, 5773, 5756, 5774, 5775, 5774, 5775, 5776, 5778, 5779, 5740, 5773, 5756, 5780, 5781, 5782, 5783, 5784, 5783, 5784, 5740, 5756, 5785, 5787, 5788, 5789, 5790, 5791, 5792, 5793, 5794, 5795, 5796, 5797, 5799, 5803, 5808, 5811, 5796, 5797, 5740, 5756, 5798, 5800, 5801, 5802, 5740, 5756, 5804, 5806, 5805, 5740, 5756, 5807, 5740, 5756, 5809, 5810, 5740, 5756, 5812, 5740, 5756, 5813, 5740, 5756, 5815, 5828, 5830, 5829, 5816, 5817, 5824, 5826, 5825, 5818, 5819, 5820, 5822, 5821, 5727, 5740, 5756, 5823, 5827, 5831, 5833, 5720, 5835, 5009, 5839, 5840, 5841, 6266, 5842, 5843, 6224, 6262, 6264, 6263, 6228, 6072, 5842, 5843, 5845, 5848, 5844, 5846, 5847, 5849, 6068, 6070, 6069, 5853, 5850, 6050, 5851, 5852, 5853, 94, 95, 98, 5854, 5855, 5856, 5861, 5857, 6044, 6046, 6045, 5858, 6043, 5859, 6042, 5860, 94, 95, 98, 5861, 5862, 5865, 6036, 5863, 5864, 5866, 5867, 98, 5870, 5866, 5867, 5868, 5869, 5871, 5874, 5875, 5885, 5872, 5873, 94, 95, 5876, 5877, 5878, 5879, 5880, 5881, 5883, 5884, 5882, 5886, 6021, 5887, 5890, 5888, 5889, 5891, 6007, 5892, 5895, 5893, 5894, 5896, 5993, 5897, 5900, 5898, 5899, 5901, 5979, 5902, 5905, 5903, 5904, 5906, 5965, 5907, 5910, 5908, 5909, 5911, 5951, 5912, 5915, 5913, 5914, 5916, 5942, 5945, 5948, 5949, 5950, 5917, 5935, 5938, 5918, 5931, 5933, 5932, 5919, 5920, 5927, 5929, 5928, 5921, 5922, 5923, 5925, 5924, 5926, 5930, 5934, 5936, 5937, 5939, 5940, 5941, 5943, 5944, 5946, 5947, 5952, 5957, 5960, 5963, 5964, 5953, 5956, 5954, 5955, 5958, 5959, 5961, 5962, 5966, 5971, 5974, 5977, 5978, 5967, 5970, 5968, 5969, 5972, 5973, 5975, 5976, 5980, 5985, 5988, 5991, 5992, 5981, 5984, 5982, 5983, 5986, 5987, 5989, 5990, 5994, 5999, 6002, 6005, 6006, 5995, 5998, 5996, 5997, 6000, 6001, 6003, 6004, 6008, 6013, 6016, 6019, 6020, 6009, 6012, 6010, 6011, 6014, 6015, 6017, 6018, 6022, 6023, 6028, 6031, 6034, 6035, 6024, 6027, 6025, 6026, 6029, 6030, 6032, 6033, 6037, 6038, 6039, 6040, 6041, 5866, 5867, 98, 5861, 5870, 6045, 6047, 6048, 6049, 6051, 6064, 6066, 6065, 6052, 6053, 6060, 6062, 6061, 6054, 6055, 6056, 6058, 6057, 94, 95, 98, 5856, 5861, 6059, 6063, 6067, 6069, 5849, 6071, 6073, 6209, 6074, 6077, 6075, 6076, 6078, 6195, 6079, 6082, 6080, 6081, 6083, 6181, 6084, 6087, 6085, 6086, 6088, 6167, 6089, 6092, 6090, 6091, 6093, 6153, 6094, 6097, 6095, 6096, 6098, 6139, 6099, 6102, 6100, 6101, 6103, 6130, 6133, 6136, 6137, 6138, 6104, 6123, 6126, 6105, 6119, 6121, 6120, 6106, 6107, 6115, 6117, 6116, 6108, 6109, 6111, 6113, 6112, 6110, 94, 95, 98, 5856, 5861, 6114, 6118, 6122, 6124, 6125, 6127, 6128, 6129, 6131, 6132, 6134, 6135, 6140, 6145, 6148, 6151, 6152, 6141, 6144, 6142, 6143, 6146, 6147, 6149, 6150, 6154, 6159, 6162, 6165, 6166, 6155, 6158, 6156, 6157, 6160, 6161, 6163, 6164, 6168, 6173, 6176, 6179, 6180, 6169, 6172, 6170, 6171, 6174, 6175, 6177, 6178, 6182, 6187, 6190, 6193, 6194, 6183, 6186, 6184, 6185, 6188, 6189, 6191, 6192, 6196, 6201, 6204, 6207, 6208, 6197, 6200, 6198, 6199, 6202, 6203, 6205, 6206, 6210, 6211, 6216, 6219, 6222, 6223, 6212, 6215, 6213, 6214, 6217, 6218, 6220, 6221, 6225, 6244, 6226, 6227, 6228, 6229, 6230, 6231, 6232, 6238, 6240, 6239, 6233, 6237, 6234, 6236, 6235, 6239, 6241, 6242, 6243, 6245, 6258, 6260, 6259, 6246, 6247, 6254, 6256, 6255, 6248, 6249, 6250, 6252, 6251, 6231, 6253, 6257, 6261, 6263, 6224, 6265, 5841, 6268, 6269, 6271, 6270, 6272, 6267, 93, 6273, 6276, 85, 6277, 93, 6267, 6278, 6279, 6280, 6278, 6279, 6281, 85, 93, 6267, 6283, 6284, 85, 6277, 93, 6267, 6285, 6286, 6287, 6288, 6289, 6290, 6288, 6289, 85, 93, 6267, 6290, 6291, 85, 93, 6267, 6293, 6294, 6295, 6296, 6297, 6298, 6299, 6300, 6301, 6302, 6303, 6306, 6310, 6315, 6318, 6304, 6302, 6303, 85, 93, 6267, 6304, 6305, 85, 93, 6267, 6307, 6308, 6309, 85, 93, 6267, 6311, 6313, 6312, 85, 93, 6267, 6314, 85, 93, 6267, 6316, 6317, 85, 93, 6267, 6319, 85, 93, 6267, 6320, 85, 93, 6267, 6324, 6326, 6327, 6328, 6330, 6343, 6345, 6344, 6331, 6332, 6339, 6341, 6340, 6333, 6334, 6335, 6337, 6336, 80, 85, 93, 6267, 6338, 6342, 6346, 6348, 73, 6350, 6352, 6488, 6353, 6356, 6354, 6355, 6357, 6474, 6358, 6361, 6359, 6360, 6362, 6460, 6363, 6366, 6364, 6365, 6367, 6446, 6368, 6371, 6369, 6370, 6372, 6432, 6373, 6376, 6374, 6375, 6377, 6418, 6378, 6381, 6379, 6380, 6382, 6409, 6412, 6415, 6416, 6417, 6383, 6402, 6405, 6384, 6398, 6400, 6399, 6385, 6386, 6394, 6396, 6395, 6387, 6388, 6390, 6392, 6391, 6389, 80, 85, 93, 6267, 6393, 6397, 6401, 6403, 6404, 6406, 6407, 6408, 6410, 6411, 6413, 6414, 6419, 6424, 6427, 6430, 6431, 6420, 6423, 6421, 6422, 6425, 6426, 6428, 6429, 6433, 6438, 6441, 6444, 6445, 6434, 6437, 6435, 6436, 6439, 6440, 6442, 6443, 6447, 6452, 6455, 6458, 6459, 6448, 6451, 6449, 6450, 6453, 6454, 6456, 6457, 6461, 6466, 6469, 6472, 6473, 6462, 6465, 6463, 6464, 6467, 6468, 6470, 6471, 6475, 6480, 6483, 6486, 6487, 6476, 6479, 6477, 6478, 6481, 6482, 6484, 6485, 6489, 6490, 6495, 6498, 6501, 6502, 6491, 6494, 6492, 6493, 6496, 6497, 6499, 6500, 6504, 6597, 6505, 6506, 6507, 6508, 6509, 6510, 6523, 6539, 6511, 6517, 6519, 6518, 6512, 6516, 6513, 6515, 6514, 6518, 6520, 6521, 6522, 6524, 6525, 6527, 6554, 6560, 6569, 6524, 6525, 6527, 6523, 6535, 6539, 6526, 6528, 6530, 6529, 6531, 6532, 6534, 6531, 6532, 6533, 6536, 6537, 6553, 6536, 6537, 6523, 6539, 6538, 6540, 6541, 6543, 6550, 6542, 6544, 6546, 6545, 6547, 6549, 6548, 6551, 6539, 6552, 6555, 6523, 6556, 6539, 6557, 6558, 6557, 6558, 6559, 6561, 6562, 6523, 6556, 6539, 6563, 6564, 6565, 6566, 6567, 6566, 6567, 6523, 6539, 6568, 6570, 6571, 6572, 6573, 6574, 6575, 6576, 6577, 6578, 6579, 6580, 6582, 6586, 6591, 6594, 6579, 6580, 6523, 6539, 6581, 6583, 6584, 6585, 6523, 6539, 6587, 6589, 6588, 6523, 6539, 6590, 6523, 6539, 6592, 6593, 6523, 6539, 6595, 6523, 6539, 6596, 6523, 6539, 6598, 6611, 6613, 6612, 6599, 6600, 6607, 6609, 6608, 6601, 6602, 6603, 6605, 6604, 6510, 6523, 6539, 6606, 6610, 6614, 6616, 6503, 6618, 65, 6621, 6622, 6623, 6624, 6625, 6626, 6627, 6628, 343, 6630, 6631, 6632, 6633, 6632, 6633, 6634, 6637, 6635, 6636, 6638, 6639, 6729, 6638, 6639, 6642, 6643, 6646, 6649, 6655, 6663, 6670, 6676, 6683, 6698, 6709, 6722, 6728, 6640, 6641, 18, 6642, 6644, 6645, 18, 6647, 6648, 18, 6650, 6651, 6652, 6653, 6654, 18, 6656, 6657, 6659, 6658, 18, 6660, 6661, 6662, 18, 6664, 6665, 6666, 6667, 6668, 6669, 18, 6671, 6672, 6673, 6674, 6675, 18, 6677, 6678, 6679, 6680, 6681, 6682, 18, 6684, 6688, 6685, 6686, 6687, 18, 6689, 6694, 6696, 6690, 6691, 6692, 6693, 18, 6695, 18, 6697, 18, 6699, 6700, 6703, 6701, 6702, 18, 6704, 6705, 6706, 6707, 6708, 18, 6710, 6714, 6711, 6712, 6713, 18, 6715, 6716, 6717, 6718, 6719, 6720, 6721, 18, 6723, 6724, 6725, 6726, 6727, 18, 18, 6730, 6731, 6732, 6733, 6734, 6735, 6736, 6737, 6739, 6740, 6740, 30, 6951, 6954, 6746, 6748, 6751, 6747, 6749, 6750, 6752, 6793, 6795, 6794, 6756, 6753, 6775, 6754, 6755, 6757, 6758, 6759, 6760, 6769, 6771, 6770, 6761, 6768, 6762, 6767, 6763, 6765, 6766, 6772, 6773, 6774, 6776, 6789, 6791, 6790, 6777, 6778, 6785, 6787, 6786, 6779, 6780, 6781, 6783, 6782, 6784, 6788, 6792, 6796, 6798, 6934, 6799, 6802, 6800, 6801, 6803, 6920, 6804, 6807, 6805, 6806, 6808, 6906, 6809, 6812, 6810, 6811, 6813, 6892, 6814, 6817, 6815, 6816, 6818, 6878, 6819, 6822, 6820, 6821, 6823, 6864, 6824, 6827, 6825, 6826, 6828, 6855, 6858, 6861, 6862, 6863, 6829, 6848, 6851, 6830, 6844, 6846, 6845, 6831, 6832, 6840, 6842, 6841, 6833, 6834, 6836, 6838, 6837, 6835, 6839, 6843, 6847, 6849, 6850, 6852, 6853, 6854, 6856, 6857, 6859, 6860, 6865, 6870, 6873, 6876, 6877, 6866, 6869, 6867, 6868, 6871, 6872, 6874, 6875, 6879, 6884, 6887, 6890, 6891, 6880, 6883, 6881, 6882, 6885, 6886, 6888, 6889, 6893, 6898, 6901, 6904, 6905, 6894, 6897, 6895, 6896, 6899, 6900, 6902, 6903, 6907, 6912, 6915, 6918, 6919, 6908, 6911, 6909, 6910, 6913, 6914, 6916, 6917, 6921, 6926, 6929, 6932, 6933, 6922, 6925, 6923, 6924, 6927, 6928, 6930, 6931, 6935, 6936, 6941, 6944, 6947, 6948, 6937, 6940, 6938, 6939, 6942, 6943, 6945, 6946, 6950, 6952, 6953, 6956, 6957, 6958, 7159, 7007, 7161, 7164, 6959, 6961, 6964, 6960, 6962, 6963, 6965, 7003, 7005, 7004, 6969, 6966, 6985, 6967, 6968, 6970, 6971, 6972, 6973, 6979, 6981, 6980, 6974, 6978, 6975, 6977, 6976, 6982, 6983, 6984, 6986, 6999, 7001, 7000, 6987, 6988, 6995, 6997, 6996, 6989, 6990, 6991, 6993, 6992, 6994, 6998, 7002, 7006, 7008, 7144, 7009, 7012, 7010, 7011, 7013, 7130, 7014, 7017, 7015, 7016, 7018, 7116, 7019, 7022, 7020, 7021, 7023, 7102, 7024, 7027, 7025, 7026, 7028, 7088, 7029, 7032, 7030, 7031, 7033, 7074, 7034, 7037, 7035, 7036, 7038, 7065, 7068, 7071, 7072, 7073, 7039, 7058, 7061, 7040, 7054, 7056, 7055, 7041, 7042, 7050, 7052, 7051, 7043, 7044, 7046, 7048, 7047, 7045, 7049, 7053, 7057, 7059, 7060, 7062, 7063, 7064, 7066, 7067, 7069, 7070, 7075, 7080, 7083, 7086, 7087, 7076, 7079, 7077, 7078, 7081, 7082, 7084, 7085, 7089, 7094, 7097, 7100, 7101, 7090, 7093, 7091, 7092, 7095, 7096, 7098, 7099, 7103, 7108, 7111, 7114, 7115, 7104, 7107, 7105, 7106, 7109, 7110, 7112, 7113, 7117, 7122, 7125, 7128, 7129, 7118, 7121, 7119, 7120, 7123, 7124, 7126, 7127, 7131, 7136, 7139, 7142, 7143, 7132, 7135, 7133, 7134, 7137, 7138, 7140, 7141, 7145, 7146, 7151, 7154, 7157, 7158, 7147, 7150, 7148, 7149, 7152, 7153, 7155, 7156, 7160, 7162, 7163, 7166, 7167, 7168, 7548, 7169, 7170, 7432, 7544, 7546, 7545, 7436, 7280, 7169, 7170, 7172, 7175, 7171, 7173, 7174, 7176, 7276, 7278, 7277, 7180, 7177, 7258, 7178, 7179, 7180, 9, 7181, 7182, 7183, 7188, 7196, 7184, 7252, 7254, 7253, 7185, 7251, 7186, 7250, 7187, 9, 7188, 7196, 7189, 7190, 7204, 7211, 7221, 9, 7189, 7190, 7188, 7192, 7196, 7191, 7193, 7194, 7203, 9, 7193, 7194, 7188, 7196, 7195, 7197, 7198, 7200, 7199, 9, 7201, 7196, 7202, 7205, 9, 7188, 7206, 7196, 7207, 7208, 7209, 7207, 7208, 7210, 7188, 7196, 7212, 7213, 9, 7188, 7206, 7196, 7214, 7215, 7216, 7217, 7218, 7219, 9, 7217, 7218, 7188, 7196, 7219, 9, 7220, 7188, 7196, 7222, 7223, 7224, 7225, 7226, 7227, 7228, 7229, 7230, 7231, 7232, 7235, 7239, 7244, 7247, 7233, 9, 7231, 7232, 7188, 7196, 7233, 9, 7234, 7188, 7196, 7236, 7237, 7238, 9, 7188, 7196, 7240, 7242, 7241, 9, 7188, 7196, 7243, 9, 7188, 7196, 7245, 7246, 9, 7188, 7196, 7248, 9, 7188, 7196, 7249, 9, 7188, 7196, 7253, 7255, 7256, 7257, 7259, 7272, 7274, 7273, 7260, 7261, 7268, 7270, 7269, 7262, 7263, 7264, 7266, 7265, 9, 7183, 7188, 7196, 7267, 7271, 7275, 7277, 7176, 7279, 7281, 7417, 7282, 7285, 7283, 7284, 7286, 7403, 7287, 7290, 7288, 7289, 7291, 7389, 7292, 7295, 7293, 7294, 7296, 7375, 7297, 7300, 7298, 7299, 7301, 7361, 7302, 7305, 7303, 7304, 7306, 7347, 7307, 7310, 7308, 7309, 7311, 7338, 7341, 7344, 7345, 7346, 7312, 7331, 7334, 7313, 7327, 7329, 7328, 7314, 7315, 7323, 7325, 7324, 7316, 7317, 7319, 7321, 7320, 7318, 9, 7183, 7188, 7196, 7322, 7326, 7330, 7332, 7333, 7335, 7336, 7337, 7339, 7340, 7342, 7343, 7348, 7353, 7356, 7359, 7360, 7349, 7352, 7350, 7351, 7354, 7355, 7357, 7358, 7362, 7367, 7370, 7373, 7374, 7363, 7366, 7364, 7365, 7368, 7369, 7371, 7372, 7376, 7381, 7384, 7387, 7388, 7377, 7380, 7378, 7379, 7382, 7383, 7385, 7386, 7390, 7395, 7398, 7401, 7402, 7391, 7394, 7392, 7393, 7396, 7397, 7399, 7400, 7404, 7409, 7412, 7415, 7416, 7405, 7408, 7406, 7407, 7410, 7411, 7413, 7414, 7418, 7419, 7424, 7427, 7430, 7431, 7420, 7423, 7421, 7422, 7425, 7426, 7428, 7429, 7433, 7526, 7434, 7435, 7436, 7437, 7438, 7439, 7452, 7468, 7440, 7446, 7448, 7447, 7441, 7445, 7442, 7444, 7443, 7447, 7449, 7450, 7451, 7453, 7454, 7456, 7483, 7489, 7498, 7453, 7454, 7456, 7452, 7464, 7468, 7455, 7457, 7459, 7458, 7460, 7461, 7463, 7460, 7461, 7462, 7465, 7466, 7482, 7465, 7466, 7452, 7468, 7467, 7469, 7470, 7472, 7479, 7471, 7473, 7475, 7474, 7476, 7478, 7477, 7480, 7468, 7481, 7484, 7452, 7485, 7468, 7486, 7487, 7486, 7487, 7488, 7490, 7491, 7452, 7485, 7468, 7492, 7493, 7494, 7495, 7496, 7495, 7496, 7452, 7468, 7497, 7499, 7500, 7501, 7502, 7503, 7504, 7505, 7506, 7507, 7508, 7509, 7511, 7515, 7520, 7523, 7508, 7509, 7452, 7468, 7510, 7512, 7513, 7514, 7452, 7468, 7516, 7518, 7517, 7452, 7468, 7519, 7452, 7468, 7521, 7522, 7452, 7468, 7524, 7452, 7468, 7525, 7452, 7468, 7527, 7540, 7542, 7541, 7528, 7529, 7536, 7538, 7537, 7530, 7531, 7532, 7534, 7533, 7439, 7452, 7468, 7535, 7539, 7543, 7545, 7432, 7547, 7168, 7550, 7551, 7552, 7553, 7582, 7583, 9, 7553, 7554, 7555, 7560, 7555, 7554, 7556, 7557, 7558, 7557, 7558, 7554, 7559, 7561, 7562, 7563, 7564, 7565, 7566, 7567, 7568, 7569, 7570, 7571, 7572, 7573, 7574, 7576, 7579, 7574, 7575, 9, 7554, 7577, 7578, 7576, 7579, 7580, 7581, 7582, 7583, 7584, 7586, 7587, 6, 7589, 7590, 6, 7592, 7593, 7594, 7595, 7596, 6, 7598, 7599, 7600, 7601, 7602, 7603, 7612, 7604, 7605, 7611, 7606, 7607, 7608, 7609, 7610, 18, 7610, 18, 7614, 7615, 7617, 7616, 6, 7618, 7619, 7620, 6, 7622, 7623, 7624, 7625, 7626, 7627, 6, 7629, 7630, 7631, 7632, 7633, 6, 7635, 7636, 7637, 7638, 7639, 7640, 6, 7642, 7646, 7643, 7644, 7645, 6, 7647, 7652, 7654, 7648, 7649, 7650, 7651, 6, 7653, 6, 7655, 6, 7657, 7658, 7661, 7659, 7660, 6, 7662, 7663, 7664, 7665, 7666, 6, 7668, 7672, 7669, 7670, 7671, 6, 7673, 7674, 7675, 7676, 7677, 7678, 7679, 6, 7681, 7682, 7683, 7684, 7685, 6 }; static const short _sip_message_parser_trans_actions[] = { 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 80, 546, 0, 408, 408, 408, 0, 164, 59, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 9, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 119, 75, 3, 0, 3, 0, 0, 5, 5, 5, 5, 5, 5, 5, 104, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 89, 0, 0, 0, 101, 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 260, 260, 0, 0, 116, 280, 276, 446, 116, 451, 0, 0, 116, 280, 0, 0, 0, 227, 0, 0, 158, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 37, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 39, 39, 173, 170, 1, 1, 1, 1, 0, 0, 0, 0, 0, 45, 191, 188, 47, 47, 47, 47, 47, 0, 0, 194, 49, 360, 348, 0, 51, 51, 49, 0, 0, 206, 404, 364, 0, 416, 416, 671, 1, 0, 7, 67, 0, 0, 0, 7, 677, 803, 456, 810, 0, 67, 683, 57, 224, 0, 57, 0, 7, 0, 0, 248, 248, 0, 0, 0, 107, 107, 264, 421, 107, 426, 426, 426, 0, 0, 107, 107, 0, 0, 0, 227, 227, 227, 0, 164, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 104, 101, 0, 0, 104, 73, 245, 0, 73, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 98, 98, 0, 0, 0, 101, 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 95, 0, 0, 0, 101, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 101, 0, 0, 71, 242, 0, 71, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 101, 0, 0, 69, 239, 0, 69, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 252, 0, 0, 0, 110, 110, 268, 431, 110, 436, 436, 436, 0, 0, 110, 110, 0, 0, 0, 227, 227, 227, 0, 164, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 86, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 300, 300, 300, 0, 0, 23, 131, 0, 0, 0, 0, 0, 0, 0, 0, 284, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 304, 304, 304, 134, 0, 0, 0, 0, 0, 17, 17, 17, 17, 0, 0, 292, 292, 0, 292, 122, 19, 0, 0, 0, 0, 0, 0, 21, 21, 21, 0, 0, 296, 296, 0, 296, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 146, 146, 33, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 137, 137, 0, 137, 25, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 140, 140, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 143, 143, 31, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 1, 0, 0, 63, 236, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 37, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 39, 39, 173, 170, 1, 1, 1, 1, 0, 0, 0, 0, 0, 45, 191, 188, 47, 47, 47, 47, 47, 0, 0, 194, 49, 360, 348, 0, 51, 51, 49, 0, 0, 206, 404, 364, 0, 0, 0, 0, 0, 0, 0, 209, 0, 0, 352, 197, 556, 551, 51, 51, 0, 0, 0, 0, 0, 1, 0, 0, 356, 200, 566, 561, 0, 0, 49, 203, 203, 1, 0, 0, 400, 651, 646, 0, 0, 55, 221, 218, 0, 0, 0, 0, 0, 0, 0, 0, 49, 203, 203, 203, 203, 203, 203, 1, 0, 0, 396, 641, 636, 0, 0, 53, 215, 212, 0, 0, 0, 384, 611, 606, 0, 0, 0, 376, 591, 586, 0, 380, 601, 596, 0, 0, 372, 581, 576, 0, 388, 621, 616, 0, 392, 631, 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 179, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 185, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 39, 170, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 0, 0, 0, 194, 49, 348, 0, 0, 49, 0, 51, 51, 49, 0, 0, 0, 51, 51, 49, 0, 0, 206, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, 197, 551, 51, 51, 0, 0, 0, 0, 0, 356, 200, 561, 0, 0, 49, 203, 203, 0, 0, 400, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 203, 203, 203, 203, 203, 203, 0, 0, 396, 636, 0, 0, 0, 0, 384, 606, 0, 0, 0, 376, 586, 0, 380, 596, 0, 0, 372, 576, 0, 388, 616, 0, 392, 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 176, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 308, 308, 308, 0, 37, 167, 47, 47, 0, 194, 49, 51, 51, 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 203, 203, 203, 0, 0, 368, 571, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 0, 0, 0, 164, 59, 230, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 37, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 173, 320, 0, 0, 39, 173, 1, 1, 1, 1, 0, 0, 0, 0, 0, 191, 344, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 328, 41, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 336, 43, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 308, 308, 308, 167, 312, 0, 167, 0, 0, 0, 0, 0, 0, 256, 256, 0, 0, 113, 113, 272, 441, 113, 0, 0, 113, 113, 0, 0, 0, 227, 0, 0, 158, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 37, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 39, 39, 173, 170, 1, 1, 1, 1, 0, 0, 0, 0, 0, 45, 191, 188, 47, 47, 47, 47, 47, 0, 0, 194, 49, 360, 348, 0, 51, 51, 49, 0, 0, 206, 404, 364, 0, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 791, 845, 656, 0, 0, 656, 57, 57, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 0, 0, 0, 0, 0, 0, 7, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 209, 0, 0, 352, 197, 556, 551, 51, 51, 0, 0, 0, 0, 0, 59, 1, 0, 0, 356, 200, 566, 561, 0, 0, 49, 203, 203, 1, 0, 0, 400, 651, 646, 0, 0, 55, 221, 218, 0, 0, 0, 0, 0, 0, 0, 0, 49, 203, 203, 203, 203, 203, 203, 1, 0, 0, 396, 641, 636, 0, 0, 53, 215, 212, 0, 0, 0, 384, 611, 606, 0, 0, 0, 376, 591, 586, 0, 380, 601, 596, 0, 0, 372, 581, 576, 0, 388, 621, 616, 0, 392, 631, 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 179, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 185, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 39, 170, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 0, 0, 0, 194, 49, 348, 0, 0, 49, 0, 51, 51, 49, 0, 0, 0, 51, 51, 49, 0, 0, 206, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, 197, 551, 51, 51, 0, 0, 0, 0, 0, 356, 200, 561, 0, 0, 49, 203, 203, 0, 0, 400, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 203, 203, 203, 203, 203, 203, 0, 0, 396, 636, 0, 0, 0, 0, 384, 606, 0, 0, 0, 376, 586, 0, 380, 596, 0, 0, 372, 576, 0, 388, 616, 0, 392, 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 176, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 7, 0, 0, 0, 0, 0, 1, 0, 0, 61, 233, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 37, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 39, 39, 173, 170, 1, 1, 1, 1, 0, 0, 0, 0, 0, 45, 191, 188, 47, 47, 47, 47, 47, 0, 0, 194, 49, 360, 348, 0, 51, 51, 49, 0, 0, 206, 404, 364, 0, 0, 0, 0, 0, 0, 0, 209, 0, 0, 352, 197, 556, 551, 51, 51, 0, 0, 0, 0, 0, 1, 0, 0, 356, 200, 566, 561, 0, 0, 49, 203, 203, 1, 0, 0, 400, 651, 646, 0, 0, 55, 221, 218, 0, 0, 0, 0, 0, 0, 0, 0, 49, 203, 203, 203, 203, 203, 203, 1, 0, 0, 396, 641, 636, 0, 0, 53, 215, 212, 0, 0, 0, 384, 611, 606, 0, 0, 0, 376, 591, 586, 0, 380, 601, 596, 0, 0, 372, 581, 576, 0, 388, 621, 616, 0, 392, 631, 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 179, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 185, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 39, 170, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 0, 0, 0, 194, 49, 348, 0, 0, 49, 0, 51, 51, 49, 0, 0, 0, 51, 51, 49, 0, 0, 206, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, 197, 551, 51, 51, 0, 0, 0, 0, 0, 356, 200, 561, 0, 0, 49, 203, 203, 0, 0, 400, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 203, 203, 203, 203, 203, 203, 0, 0, 396, 636, 0, 0, 0, 0, 384, 606, 0, 0, 0, 376, 586, 0, 380, 596, 0, 0, 372, 576, 0, 388, 616, 0, 392, 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 176, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 308, 308, 308, 0, 37, 167, 47, 47, 0, 194, 49, 51, 51, 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 203, 203, 203, 0, 0, 368, 571, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 0, 57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 0, 0, 0, 164, 59, 230, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 37, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 173, 320, 0, 0, 39, 173, 1, 1, 1, 1, 0, 0, 0, 0, 0, 191, 344, 191, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 328, 41, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 336, 43, 185, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 308, 308, 308, 167, 312, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 57, 224, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57, 0, 0, 0, 0, 0, 227, 0, 0, 158, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 37, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 39, 39, 173, 170, 1, 1, 1, 1, 0, 0, 0, 0, 0, 45, 191, 188, 47, 47, 47, 47, 47, 0, 0, 194, 49, 360, 348, 0, 51, 51, 49, 0, 0, 206, 404, 364, 0, 416, 416, 671, 1, 0, 0, 67, 0, 0, 0, 0, 677, 803, 456, 810, 0, 67, 456, 57, 57, 0, 0, 0, 0, 0, 0, 0, 158, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 37, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 817, 817, 852, 0, 0, 39, 316, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 838, 838, 876, 340, 0, 0, 0, 0, 0, 412, 412, 661, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 412, 412, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 666, 666, 797, 65, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 824, 824, 860, 41, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 831, 831, 868, 43, 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 209, 0, 0, 352, 197, 556, 551, 51, 51, 0, 0, 0, 0, 0, 59, 1, 0, 0, 356, 200, 566, 561, 0, 0, 49, 203, 203, 1, 0, 0, 400, 651, 646, 0, 0, 55, 221, 218, 0, 0, 0, 0, 0, 0, 0, 0, 49, 203, 203, 203, 203, 203, 203, 1, 0, 0, 396, 641, 636, 0, 0, 53, 215, 212, 0, 0, 0, 384, 611, 606, 0, 0, 0, 376, 591, 586, 0, 380, 601, 596, 0, 0, 372, 581, 576, 0, 388, 621, 616, 0, 392, 631, 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 179, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 185, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 39, 170, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 0, 0, 0, 194, 49, 348, 0, 0, 49, 0, 51, 51, 49, 0, 0, 0, 51, 51, 49, 0, 0, 206, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, 197, 551, 51, 51, 0, 0, 0, 0, 0, 356, 200, 561, 0, 0, 49, 203, 203, 0, 0, 400, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 203, 203, 203, 203, 203, 203, 0, 0, 396, 636, 0, 0, 0, 0, 384, 606, 0, 0, 0, 376, 586, 0, 380, 596, 0, 0, 372, 576, 0, 388, 616, 0, 392, 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 176, 0, 0, 0, 0, 0, 0, 161, 0, 0, 158, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 37, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 817, 817, 852, 0, 0, 39, 316, 1, 1, 1, 1, 0, 0, 0, 0, 0, 838, 838, 876, 340, 7, 0, 0, 0, 0, 412, 412, 661, 0, 0, 7, 0, 0, 7, 0, 0, 0, 0, 0, 412, 412, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 666, 666, 797, 65, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 824, 824, 860, 41, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 831, 831, 868, 43, 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 209, 0, 0, 352, 197, 556, 551, 51, 51, 0, 0, 0, 0, 0, 59, 1, 0, 0, 356, 200, 566, 561, 0, 0, 49, 203, 203, 1, 0, 0, 400, 651, 646, 0, 0, 55, 221, 218, 0, 0, 0, 0, 0, 0, 0, 0, 49, 203, 203, 203, 203, 203, 203, 1, 0, 0, 396, 641, 636, 0, 0, 53, 215, 212, 0, 0, 0, 384, 611, 606, 0, 0, 0, 376, 591, 586, 0, 380, 601, 596, 0, 0, 372, 581, 576, 0, 388, 621, 616, 0, 392, 631, 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 179, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 43, 185, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 39, 170, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 0, 0, 0, 194, 49, 348, 0, 0, 49, 0, 51, 51, 49, 0, 0, 0, 51, 51, 49, 0, 0, 206, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, 197, 551, 51, 51, 0, 0, 0, 0, 0, 356, 200, 561, 0, 0, 49, 203, 203, 0, 0, 400, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 203, 203, 203, 203, 203, 203, 0, 0, 396, 636, 0, 0, 0, 0, 384, 606, 0, 0, 0, 376, 586, 0, 380, 596, 0, 0, 372, 576, 0, 388, 616, 0, 392, 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 176, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 92, 0, 0, 0, 101, 0, 0, 35, 35, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 288, 0, 0, 0, 466, 0, 0, 481, 0, 0, 0, 0, 0, 471, 0, 0, 0, 0, 491, 0, 0, 0, 461, 0, 0, 0, 0, 0, 0, 511, 0, 0, 0, 0, 0, 521, 0, 0, 0, 0, 0, 0, 501, 0, 0, 0, 0, 0, 476, 0, 0, 0, 0, 0, 0, 0, 526, 0, 531, 0, 536, 0, 0, 0, 0, 0, 486, 0, 0, 0, 0, 0, 506, 0, 0, 0, 0, 0, 541, 0, 0, 0, 0, 0, 0, 0, 516, 0, 0, 0, 0, 0, 496, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 158, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 37, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 173, 0, 0, 39, 39, 170, 1, 1, 1, 1, 0, 0, 0, 0, 0, 191, 45, 188, 47, 47, 47, 47, 47, 360, 0, 0, 194, 49, 348, 0, 51, 51, 49, 404, 0, 0, 206, 364, 0, 0, 0, 0, 0, 209, 0, 0, 0, 0, 556, 352, 197, 551, 51, 51, 0, 0, 0, 0, 0, 1, 0, 0, 566, 356, 200, 561, 0, 0, 49, 203, 203, 1, 651, 0, 0, 400, 646, 0, 221, 0, 55, 218, 0, 0, 0, 0, 0, 0, 0, 0, 49, 203, 203, 203, 203, 203, 203, 1, 641, 0, 0, 396, 636, 0, 215, 0, 53, 212, 0, 0, 0, 611, 384, 606, 0, 0, 0, 591, 376, 586, 0, 601, 380, 596, 0, 0, 581, 372, 576, 0, 621, 388, 616, 0, 631, 392, 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 179, 41, 41, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 43, 43, 182, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 39, 39, 170, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 47, 47, 47, 47, 0, 0, 0, 194, 49, 348, 0, 0, 49, 0, 51, 51, 49, 0, 0, 0, 51, 51, 49, 0, 0, 206, 364, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 352, 197, 551, 51, 51, 0, 0, 0, 0, 0, 356, 200, 561, 0, 0, 49, 203, 203, 0, 0, 400, 646, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 203, 203, 203, 203, 203, 203, 0, 0, 396, 636, 0, 0, 0, 0, 384, 606, 0, 0, 0, 376, 586, 0, 380, 596, 0, 0, 372, 576, 0, 388, 616, 0, 392, 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 41, 176, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 308, 308, 308, 167, 0, 37, 47, 47, 0, 194, 49, 51, 51, 0, 0, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 203, 203, 203, 0, 0, 571, 368, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 695, 0, 0, 713, 0, 0, 0, 0, 0, 701, 0, 0, 0, 0, 0, 0, 0, 0, 77, 0, 1, 0, 0, 13, 1, 83, 0, 15, 0, 0, 0, 0, 725, 0, 0, 0, 689, 0, 0, 0, 0, 0, 0, 749, 0, 0, 0, 0, 0, 761, 0, 0, 0, 0, 0, 0, 737, 0, 0, 0, 0, 0, 707, 0, 0, 0, 0, 0, 0, 0, 767, 0, 773, 0, 779, 0, 0, 0, 0, 0, 719, 0, 0, 0, 0, 0, 743, 0, 0, 0, 0, 0, 785, 0, 0, 0, 0, 0, 0, 0, 755, 0, 0, 0, 0, 0, 731 }; static const int sip_message_parser_start = 1; static const int sip_message_parser_first_final = 7687; static const int sip_message_parser_error = 0; static const int sip_message_parser_en_main = 1; #line 578 "sip_message_parser.rl" int sip_message_parser_init(sip_message_parser *parser) { TRACE(); int cs = 0; #line 28760 "sip_message_parser.c" { cs = sip_message_parser_start; } #line 584 "sip_message_parser.rl" parser->cs = cs; parser->nread = 0; parser->error_start = NULL; parser->error_len = 0; parser->error_pos = 0; parser->mark = 0; parser->hdr_field_start = 0; parser->hdr_field_len = 0; parser->hdr_value_start = 0; parser->hdr_value_len = 0; parser->hdr_field_name = header_field_any; parser->uri_start = 0; parser->uri_param_key_start = 0; parser->uri_param_value_start = 0; parser->header_param_key_start = 0; parser->header_param_value_start = 0; parser->method = 0; parser->method_set = 0; parser->num_via = 0; parser->num_from = 0; parser->num_to = 0; parser->num_call_id = 0; parser->num_cseq = 0; parser->num_max_forwards = 0; parser->num_content_length = 0; parser->num_contact = 0; parser->contact_is_valid = 0; parser->route_found = 0; parser->do_uri = 0; parser->uri_owner = 0; parser->uri_scheme = 0; parser->uri_display_name_quoted = 0; parser->parsed = Qnil; return(1); } /** exec **/ size_t sip_message_parser_execute(sip_message_parser *parser, const char *buffer, size_t len, size_t off) { TRACE(); const char *p, *pe; int cs = parser->cs; assert(off <= len && "offset past end of buffer"); p = buffer+off; pe = buffer+len; assert(*pe == '\0' && "pointer does not end on NULL"); assert(pe - p == len - off && "pointers aren't same distance"); #line 28823 "sip_message_parser.c" { int _klen; unsigned int _trans; short _widec; const char *_acts; unsigned int _nacts; const short *_keys; if ( p == pe ) goto _test_eof; if ( cs == 0 ) goto _out; _resume: _widec = (*p); _klen = _sip_message_parser_cond_lengths[cs]; _keys = _sip_message_parser_cond_keys + (_sip_message_parser_cond_offsets[cs]*2); if ( _klen > 0 ) { const short *_lower = _keys; const short *_mid; const short *_upper = _keys + (_klen<<1) - 2; while (1) { if ( _upper < _lower ) break; _mid = _lower + (((_upper-_lower) >> 1) & ~1); if ( _widec < _mid[0] ) _upper = _mid - 2; else if ( _widec > _mid[1] ) _lower = _mid + 2; else { switch ( _sip_message_parser_cond_spaces[_sip_message_parser_cond_offsets[cs] + ((_mid - _keys)>>1)] ) { case 0: { _widec = (short)(128 + ((*p) - -128)); if ( #line 170 "sip_message_parser.rl" parser->method ) _widec += 256; break; } } break; } } } _keys = _sip_message_parser_trans_keys + _sip_message_parser_key_offsets[cs]; _trans = _sip_message_parser_index_offsets[cs]; _klen = _sip_message_parser_single_lengths[cs]; if ( _klen > 0 ) { const short *_lower = _keys; const short *_mid; const short *_upper = _keys + _klen - 1; while (1) { if ( _upper < _lower ) break; _mid = _lower + ((_upper-_lower) >> 1); if ( _widec < *_mid ) _upper = _mid - 1; else if ( _widec > *_mid ) _lower = _mid + 1; else { _trans += (unsigned int)(_mid - _keys); goto _match; } } _keys += _klen; _trans += _klen; } _klen = _sip_message_parser_range_lengths[cs]; if ( _klen > 0 ) { const short *_lower = _keys; const short *_mid; const short *_upper = _keys + (_klen<<1) - 2; while (1) { if ( _upper < _lower ) break; _mid = _lower + (((_upper-_lower) >> 1) & ~1); if ( _widec < _mid[0] ) _upper = _mid - 2; else if ( _widec > _mid[1] ) _lower = _mid + 2; else { _trans += (unsigned int)((_mid - _keys)>>1); goto _match; } } _trans += _klen; } _match: _trans = _sip_message_parser_indicies[_trans]; cs = _sip_message_parser_trans_targs[_trans]; if ( _sip_message_parser_trans_actions[_trans] == 0 ) goto _again; _acts = _sip_message_parser_actions + _sip_message_parser_trans_actions[_trans]; _nacts = (unsigned int) *_acts++; while ( _nacts-- > 0 ) { switch ( *_acts++ ) { case 0: #line 20 "sip_message_parser.rl" { parser->data_type(parser, sip_request); } break; case 1: #line 24 "sip_message_parser.rl" { parser->data_type(parser, sip_response); } break; case 2: #line 28 "sip_message_parser.rl" { parser->data_type(parser, outbound_keepalive); } break; case 3: #line 33 "sip_message_parser.rl" { MARK(mark, p); } break; case 4: #line 35 "sip_message_parser.rl" { MARK(hdr_field_start, p); } break; case 5: #line 39 "sip_message_parser.rl" { parser->hdr_field_len = LEN(hdr_field_start, p); parser->hdr_field_name = header_field_any; } break; case 6: #line 44 "sip_message_parser.rl" { MARK(hdr_value_start, p); } break; case 7: #line 46 "sip_message_parser.rl" { parser->hdr_value_len = LEN(hdr_value_start, p); } break; case 8: #line 50 "sip_message_parser.rl" { if (parser->hdr_value_start) { parser->header(parser->parsed, PTR_TO(hdr_field_start), parser->hdr_field_len, PTR_TO(hdr_value_start), parser->hdr_value_len, parser->hdr_field_name); } } break; case 9: #line 57 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_INVITE; } } break; case 10: #line 63 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_ACK; } } break; case 11: #line 69 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_CANCEL; } } break; case 12: #line 75 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_PRACK; } } break; case 13: #line 81 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_BYE; } } break; case 14: #line 87 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_REFER; } } break; case 15: #line 93 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_INFO; } } break; case 16: #line 99 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_UPDATE; } } break; case 17: #line 105 "sip_message_parser.rl" { if (!parser->method_set) { parser->method = method_OPTIONS; parser->method_set = 1; } } break; case 18: #line 112 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_REGISTER; } } break; case 19: #line 118 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_MESSAGE; } } break; case 20: #line 124 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_SUBSCRIBE; } } break; case 21: #line 130 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_NOTIFY; } } break; case 22: #line 136 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_PUBLISH; } } break; case 23: #line 142 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_PULL; } } break; case 24: #line 148 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_PUSH; } } break; case 25: #line 154 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_STORE; } } break; case 26: #line 160 "sip_message_parser.rl" { if (!parser->method) { parser->method = method_unknown; } } break; case 27: #line 166 "sip_message_parser.rl" { parser->message.method(parser->parsed, PTR_TO(mark), LEN(mark, p), parser->method); } break; case 28: #line 175 "sip_message_parser.rl" { parser->message.sip_version(parser->parsed, PTR_TO(mark), LEN(mark, p)); } break; case 29: #line 179 "sip_message_parser.rl" { parser->message.status_code(parser->parsed, PTR_TO(mark), LEN(mark, p)); } break; case 30: #line 183 "sip_message_parser.rl" { parser->message.reason_phrase(parser->parsed, PTR_TO(mark), LEN(mark, p)); } break; case 31: #line 188 "sip_message_parser.rl" { MARK(header_param_key_start, p); } break; case 32: #line 192 "sip_message_parser.rl" { parser->header_param_key_len = LEN(header_param_key_start, p); /* If current param has no value don't take previous param's value. */ parser->header_param_value_len = 0; } break; case 33: #line 198 "sip_message_parser.rl" { MARK(header_param_value_start, p); } break; case 34: #line 202 "sip_message_parser.rl" { parser->header_param_value_len = LEN(header_param_value_start, p); } break; case 35: #line 207 "sip_message_parser.rl" { parser->hdr_field_name = header_field_via; } break; case 36: #line 211 "sip_message_parser.rl" { parser->num_via++; } break; case 37: #line 213 "sip_message_parser.rl" { if (parser->num_via == 1) parser->message.via_sent_by_host(parser->parsed, PTR_TO(mark), LEN(mark, p)); } break; case 38: #line 218 "sip_message_parser.rl" { if (parser->num_via == 1) parser->message.via_sent_by_port(parser->parsed, PTR_TO(mark), LEN(mark, p)); } break; case 39: #line 223 "sip_message_parser.rl" { if (parser->num_via == 1) parser->message.via_branch(parser->parsed, PTR_TO(mark), LEN(mark, p)); } break; case 40: #line 228 "sip_message_parser.rl" { if (parser->num_via == 1) parser->message.via_branch_rfc3261(parser->parsed, PTR_TO(mark), LEN(mark, p)); } break; case 41: #line 233 "sip_message_parser.rl" { if (parser->num_via == 1) parser->message.via_received(parser->parsed, PTR_TO(mark), LEN(mark, p)); } break; case 42: #line 238 "sip_message_parser.rl" { if (parser->num_via == 1) parser->message.via_has_rport(parser->parsed); } break; case 43: #line 243 "sip_message_parser.rl" { if (parser->num_via == 1) parser->message.via_has_alias(parser->parsed); } break; case 44: #line 248 "sip_message_parser.rl" { if (parser->num_via == 1) parser->message.header_core_value(parser->parsed, header_field_via, PTR_TO(hdr_value_start), LEN(hdr_value_start, p)); } break; case 45: #line 253 "sip_message_parser.rl" { if (parser->num_via == 1) parser->message.header_param(parser->parsed, header_field_via, PTR_TO(header_param_key_start), parser->header_param_key_len, PTR_TO(header_param_value_start), parser->header_param_value_len); } break; case 46: #line 258 "sip_message_parser.rl" { parser->num_call_id++; } break; case 47: #line 260 "sip_message_parser.rl" { if (parser->num_call_id == 1) parser->message.call_id(parser->parsed, PTR_TO(mark), LEN(mark, p)); } break; case 48: #line 265 "sip_message_parser.rl" { parser->num_cseq++; } break; case 49: #line 267 "sip_message_parser.rl" { if (parser->num_cseq == 1) parser->message.cseq_number(parser->parsed, PTR_TO(mark), LEN(mark, p)); } break; case 50: #line 272 "sip_message_parser.rl" { parser->num_max_forwards++; } break; case 51: #line 274 "sip_message_parser.rl" { if (parser->num_max_forwards == 1) parser->message.max_forwards(parser->parsed, PTR_TO(mark), LEN(mark, p)); } break; case 52: #line 279 "sip_message_parser.rl" { parser->num_content_length++; } break; case 53: #line 281 "sip_message_parser.rl" { if (parser->num_content_length == 1) parser->message.content_length(parser->parsed, PTR_TO(mark), LEN(mark, p)); } break; case 54: #line 287 "sip_message_parser.rl" { if (parser->do_uri) parser->uri_scheme = uri_scheme_sip; } break; case 55: #line 292 "sip_message_parser.rl" { if (parser->do_uri) parser->uri_scheme = uri_scheme_sips; } break; case 56: #line 297 "sip_message_parser.rl" { if (parser->do_uri) parser->uri_scheme = uri_scheme_tel; } break; case 57: #line 302 "sip_message_parser.rl" { if (parser->do_uri) parser->uri_scheme = uri_scheme_unknown; } break; case 58: #line 307 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.scheme(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, p), parser->uri_scheme); } break; case 59: #line 312 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.user(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, p), parser->uri_scheme); } break; case 60: #line 317 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.host(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, p), host_type_domain); } break; case 61: #line 322 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.host(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, p), host_type_ipv4); } break; case 62: #line 327 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.host(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, p), host_type_ipv6); } break; case 63: #line 332 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.port(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, p), parser->uri_scheme); } break; case 64: #line 338 "sip_message_parser.rl" { if (parser->do_uri) MARK(uri_param_key_start, p); } break; case 65: #line 343 "sip_message_parser.rl" { if (parser->do_uri) { parser->uri_param_key_len = LEN(uri_param_key_start, p); /* If current param has no value don't take previous param's value. */ parser->uri_param_value_len = 0; } } break; case 66: #line 351 "sip_message_parser.rl" { if (parser->do_uri) MARK(uri_param_value_start, p); } break; case 67: #line 356 "sip_message_parser.rl" { if (parser->do_uri) parser->uri_param_value_len = LEN(uri_param_value_start, p); } break; case 68: #line 361 "sip_message_parser.rl" { if (parser->do_uri == 1) parser->uri.param(parser->parsed, parser->uri_owner, PTR_TO(uri_param_key_start), parser->uri_param_key_len, PTR_TO(uri_param_value_start), parser->uri_param_value_len); } break; case 69: #line 367 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.headers(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, p), parser->uri_scheme); } break; case 70: #line 372 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_tel_phone_context, PTR_TO(mark), LEN(mark, p), 0); } break; case 71: #line 377 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_udp); } break; case 72: #line 382 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_tcp); } break; case 73: #line 387 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_tls); } break; case 74: #line 392 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_sctp); } break; case 75: #line 397 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_ws); } break; case 76: #line 402 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_wss); } break; case 77: #line 407 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_unknown); } break; case 78: #line 412 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.has_param(parser->parsed, parser->uri_owner, uri_param_lr); } break; case 79: #line 417 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.has_param(parser->parsed, parser->uri_owner, uri_param_ob); } break; case 80: #line 422 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_ovid, PTR_TO(mark), LEN(mark, p), 0); } break; case 81: #line 427 "sip_message_parser.rl" { if (parser->do_uri) { if (!parser->uri_display_name_quoted) parser->uri.display_name(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, p), parser->uri_scheme); else parser->uri.display_name(parser->parsed, parser->uri_owner, PTR_TO(mark)+1, LEN(mark, p)-2, parser->uri_scheme); } } break; case 82: #line 437 "sip_message_parser.rl" { parser->uri_display_name_quoted=1; } break; case 83: #line 441 "sip_message_parser.rl" { if (parser->do_uri) MARK(uri_start, p); } break; case 84: #line 446 "sip_message_parser.rl" { if (parser->do_uri) parser->uri.full(parser->parsed, parser->uri_owner, PTR_TO(uri_start), LEN(uri_start, p), parser->uri_scheme); /* Reset variables after parsing a URI. */ parser->do_uri = 0; parser->uri_owner = 0; parser->uri_scheme = 0; parser->uri_display_name_quoted = 0; } break; case 85: #line 456 "sip_message_parser.rl" { parser->message.init_component(parser->parsed, component_ruri); } break; case 86: #line 458 "sip_message_parser.rl" { parser->do_uri = 1; parser->uri_owner = uri_owner_ruri; } break; case 87: #line 463 "sip_message_parser.rl" { parser->message.init_component(parser->parsed, component_from); parser->hdr_field_name = header_field_from; } break; case 88: #line 468 "sip_message_parser.rl" { parser->num_from++; } break; case 89: #line 470 "sip_message_parser.rl" { if (parser->num_from == 1) { parser->do_uri = 1; parser->uri_owner = uri_owner_from; } } break; case 90: #line 477 "sip_message_parser.rl" { parser->message.init_component(parser->parsed, component_to); parser->hdr_field_name = header_field_to; } break; case 91: #line 482 "sip_message_parser.rl" { parser->num_to++; } break; case 92: #line 484 "sip_message_parser.rl" { if (parser->num_to == 1) { parser->do_uri = 1; parser->uri_owner = uri_owner_to; } } break; case 93: #line 492 "sip_message_parser.rl" { parser->message.from_tag(parser->parsed, PTR_TO(mark), LEN(mark, p)); } break; case 94: #line 496 "sip_message_parser.rl" { parser->message.to_tag(parser->parsed, PTR_TO(mark), LEN(mark, p)); } break; case 95: #line 501 "sip_message_parser.rl" { if (parser->route_found == 0) { parser->message.init_component(parser->parsed, component_route); parser->hdr_field_name = header_field_route; parser->route_found = 1; } } break; case 96: #line 509 "sip_message_parser.rl" { parser->message.init_component(parser->parsed, component_route_uri); } break; case 97: #line 512 "sip_message_parser.rl" { parser->do_uri = 1; parser->uri_owner = uri_owner_route; } break; case 98: #line 518 "sip_message_parser.rl" { parser->message.init_component(parser->parsed, component_contact); parser->hdr_field_name = header_field_contact; } break; case 99: #line 523 "sip_message_parser.rl" { parser->num_contact++; } break; case 100: #line 525 "sip_message_parser.rl" { if (parser->num_contact == 1) { parser->do_uri = 1; parser->uri_owner = uri_owner_contact; } } break; case 101: #line 537 "sip_message_parser.rl" { if (parser->num_contact == 1) parser->message.contact_params(parser->parsed, PTR_TO(mark), LEN(mark, p)); } break; case 102: #line 542 "sip_message_parser.rl" { if (parser->num_contact == 1) parser->message.contact_has_reg_id(parser->parsed); } break; case 103: #line 547 "sip_message_parser.rl" { parser->contact_is_valid = 1; } break; case 104: #line 551 "sip_message_parser.rl" { parser->contact_is_valid = 0; } break; case 105: #line 556 "sip_message_parser.rl" { parser->message.option_tag(parser->parsed, header_field_require, PTR_TO(mark), LEN(mark, p)); } break; case 106: #line 560 "sip_message_parser.rl" { parser->message.option_tag(parser->parsed, header_field_proxy_require, PTR_TO(mark), LEN(mark, p)); } break; case 107: #line 564 "sip_message_parser.rl" { parser->message.option_tag(parser->parsed, header_field_supported, PTR_TO(mark), LEN(mark, p)); } break; case 108: #line 569 "sip_message_parser.rl" { {p++; goto _out; } } break; #line 29677 "sip_message_parser.c" } } _again: if ( cs == 0 ) goto _out; if ( ++p != pe ) goto _resume; _test_eof: {} _out: {} } #line 641 "sip_message_parser.rl" parser->cs = cs; parser->nread += p - (buffer + off); assert(p <= pe && "buffer overflow after parsing execute"); assert(parser->nread <= len && "nread longer than length"); assert(parser->mark < len && "mark is after buffer end"); assert(parser->hdr_field_start < len && "field starts after buffer end"); assert(parser->hdr_field_len <= len && "field has length longer than whole buffer"); assert(parser->hdr_value_start < len && "value starts after buffer end"); assert(parser->hdr_value_len <= len && "value has length longer than whole buffer"); if (sip_message_parser_has_error(parser)) { parser->error_start = (char *)buffer; parser->error_len = pe - buffer; parser->error_pos = p - buffer; /* DOC: * buffer is the start of the parsed data. * p is last position of the parsing. * pe is first position after data ends. */ } return(parser->nread); } int sip_message_parser_finish(sip_message_parser *parser) { TRACE(); int cs = parser->cs; parser->cs = cs; if (sip_message_parser_has_error(parser)) return -1; else if (sip_message_parser_is_finished(parser)) return 1; else return 0; } int sip_message_parser_has_error(sip_message_parser *parser) { TRACE(); return parser->cs == sip_message_parser_error; } int sip_message_parser_is_finished(sip_message_parser *parser) { TRACE(); return parser->cs == sip_message_parser_first_final; } ================================================ FILE: ext/sip_parser/sip_message_parser.rl ================================================ #include "sip_parser.h" #include "ext_help.h" #include #include #include #include #include #define MARK(M, FPC) (parser->M = (FPC) - buffer) #define LEN(AT, FPC) (FPC - buffer - parser->AT) #define PTR_TO(F) (buffer + parser->F) /** machine **/ %%{ machine sip_message_parser; action msg_request { parser->data_type(parser, sip_request); } action msg_response { parser->data_type(parser, sip_response); } action outbound_keepalive { parser->data_type(parser, outbound_keepalive); } action mark { MARK(mark, fpc); } action start_hdr_field { MARK(hdr_field_start, fpc); } action write_hdr_field { parser->hdr_field_len = LEN(hdr_field_start, fpc); parser->hdr_field_name = header_field_any; } action start_hdr_value { MARK(hdr_value_start, fpc); } action store_hdr_value { parser->hdr_value_len = LEN(hdr_value_start, fpc); } action write_hdr_value { if (parser->hdr_value_start) { parser->header(parser->parsed, PTR_TO(hdr_field_start), parser->hdr_field_len, PTR_TO(hdr_value_start), parser->hdr_value_len, parser->hdr_field_name); } } action msg_method_INVITE { if (!parser->method) { parser->method = method_INVITE; } } action msg_method_ACK { if (!parser->method) { parser->method = method_ACK; } } action msg_method_CANCEL { if (!parser->method) { parser->method = method_CANCEL; } } action msg_method_PRACK { if (!parser->method) { parser->method = method_PRACK; } } action msg_method_BYE { if (!parser->method) { parser->method = method_BYE; } } action msg_method_REFER { if (!parser->method) { parser->method = method_REFER; } } action msg_method_INFO { if (!parser->method) { parser->method = method_INFO; } } action msg_method_UPDATE { if (!parser->method) { parser->method = method_UPDATE; } } action msg_method_OPTIONS { if (!parser->method_set) { parser->method = method_OPTIONS; parser->method_set = 1; } } action msg_method_REGISTER { if (!parser->method) { parser->method = method_REGISTER; } } action msg_method_MESSAGE { if (!parser->method) { parser->method = method_MESSAGE; } } action msg_method_SUBSCRIBE { if (!parser->method) { parser->method = method_SUBSCRIBE; } } action msg_method_NOTIFY { if (!parser->method) { parser->method = method_NOTIFY; } } action msg_method_PUBLISH { if (!parser->method) { parser->method = method_PUBLISH; } } action msg_method_PULL { if (!parser->method) { parser->method = method_PULL; } } action msg_method_PUSH { if (!parser->method) { parser->method = method_PUSH; } } action msg_method_STORE { if (!parser->method) { parser->method = method_STORE; } } action msg_method_unknown { if (!parser->method) { parser->method = method_unknown; } } action msg_method { parser->message.method(parser->parsed, PTR_TO(mark), LEN(mark, fpc), parser->method); } action is_method_set { parser->method } action msg_sip_version { parser->message.sip_version(parser->parsed, PTR_TO(mark), LEN(mark, fpc)); } action msg_status_code { parser->message.status_code(parser->parsed, PTR_TO(mark), LEN(mark, fpc)); } action msg_reason_phrase { parser->message.reason_phrase(parser->parsed, PTR_TO(mark), LEN(mark, fpc)); } action start_header_param_key { MARK(header_param_key_start, fpc); } action header_param_key_len { parser->header_param_key_len = LEN(header_param_key_start, fpc); /* If current param has no value don't take previous param's value. */ parser->header_param_value_len = 0; } action start_header_param_value { MARK(header_param_value_start, fpc); } action header_param_value_len { parser->header_param_value_len = LEN(header_param_value_start, fpc); } action init_via { parser->hdr_field_name = header_field_via; } action new_via { parser->num_via++; } action via_sent_by_host { if (parser->num_via == 1) parser->message.via_sent_by_host(parser->parsed, PTR_TO(mark), LEN(mark, fpc)); } action via_sent_by_port { if (parser->num_via == 1) parser->message.via_sent_by_port(parser->parsed, PTR_TO(mark), LEN(mark, fpc)); } action via_branch { if (parser->num_via == 1) parser->message.via_branch(parser->parsed, PTR_TO(mark), LEN(mark, fpc)); } action via_branch_rfc3261 { if (parser->num_via == 1) parser->message.via_branch_rfc3261(parser->parsed, PTR_TO(mark), LEN(mark, fpc)); } action via_received { if (parser->num_via == 1) parser->message.via_received(parser->parsed, PTR_TO(mark), LEN(mark, fpc)); } action via_has_rport { if (parser->num_via == 1) parser->message.via_has_rport(parser->parsed); } action via_has_alias { if (parser->num_via == 1) parser->message.via_has_alias(parser->parsed); } action write_header_via_core { if (parser->num_via == 1) parser->message.header_core_value(parser->parsed, header_field_via, PTR_TO(hdr_value_start), LEN(hdr_value_start, fpc)); } action write_via_param { if (parser->num_via == 1) parser->message.header_param(parser->parsed, header_field_via, PTR_TO(header_param_key_start), parser->header_param_key_len, PTR_TO(header_param_value_start), parser->header_param_value_len); } action new_call_id { parser->num_call_id++; } action msg_call_id { if (parser->num_call_id == 1) parser->message.call_id(parser->parsed, PTR_TO(mark), LEN(mark, fpc)); } action new_cseq { parser->num_cseq++; } action msg_cseq_number { if (parser->num_cseq == 1) parser->message.cseq_number(parser->parsed, PTR_TO(mark), LEN(mark, fpc)); } action new_max_forwards { parser->num_max_forwards++; } action msg_max_forwards { if (parser->num_max_forwards == 1) parser->message.max_forwards(parser->parsed, PTR_TO(mark), LEN(mark, fpc)); } action new_content_length { parser->num_content_length++; } action msg_content_length { if (parser->num_content_length == 1) parser->message.content_length(parser->parsed, PTR_TO(mark), LEN(mark, fpc)); } action uri_is_sip { if (parser->do_uri) parser->uri_scheme = uri_scheme_sip; } action uri_is_sips { if (parser->do_uri) parser->uri_scheme = uri_scheme_sips; } action uri_is_tel { if (parser->do_uri) parser->uri_scheme = uri_scheme_tel; } action uri_is_unknown { if (parser->do_uri) parser->uri_scheme = uri_scheme_unknown; } action uri_scheme { if (parser->do_uri) parser->uri.scheme(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, fpc), parser->uri_scheme); } action uri_user { if (parser->do_uri) parser->uri.user(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, fpc), parser->uri_scheme); } action uri_host_domain { if (parser->do_uri) parser->uri.host(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, fpc), host_type_domain); } action uri_host_ipv4 { if (parser->do_uri) parser->uri.host(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, fpc), host_type_ipv4); } action uri_host_ipv6 { if (parser->do_uri) parser->uri.host(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, fpc), host_type_ipv6); } action uri_port { if (parser->do_uri) parser->uri.port(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, fpc), parser->uri_scheme); } action start_uri_param_key { if (parser->do_uri) MARK(uri_param_key_start, fpc); } action uri_param_key_len { if (parser->do_uri) { parser->uri_param_key_len = LEN(uri_param_key_start, fpc); /* If current param has no value don't take previous param's value. */ parser->uri_param_value_len = 0; } } action start_uri_param_value { if (parser->do_uri) MARK(uri_param_value_start, fpc); } action uri_param_value_len { if (parser->do_uri) parser->uri_param_value_len = LEN(uri_param_value_start, fpc); } action write_uri_param { if (parser->do_uri == 1) parser->uri.param(parser->parsed, parser->uri_owner, PTR_TO(uri_param_key_start), parser->uri_param_key_len, PTR_TO(uri_param_value_start), parser->uri_param_value_len); } action uri_headers { if (parser->do_uri) parser->uri.headers(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, fpc), parser->uri_scheme); } action uri_tel_phone_context { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_tel_phone_context, PTR_TO(mark), LEN(mark, fpc), 0); } action sip_uri_transport_udp { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, fpc), transport_udp); } action sip_uri_transport_tcp { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, fpc), transport_tcp); } action sip_uri_transport_tls { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, fpc), transport_tls); } action sip_uri_transport_sctp { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, fpc), transport_sctp); } action sip_uri_transport_ws { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, fpc), transport_ws); } action sip_uri_transport_wss { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, fpc), transport_wss); } action sip_uri_transport_unknown { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_transport, PTR_TO(mark), LEN(mark, fpc), transport_unknown); } action sip_uri_has_lr { if (parser->do_uri) parser->uri.has_param(parser->parsed, parser->uri_owner, uri_param_lr); } action sip_uri_has_ob { if (parser->do_uri) parser->uri.has_param(parser->parsed, parser->uri_owner, uri_param_ob); } action sip_uri_ovid { if (parser->do_uri) parser->uri.known_param(parser->parsed, parser->uri_owner, uri_param_ovid, PTR_TO(mark), LEN(mark, fpc), 0); } action uri_display_name { if (parser->do_uri) { if (!parser->uri_display_name_quoted) parser->uri.display_name(parser->parsed, parser->uri_owner, PTR_TO(mark), LEN(mark, fpc), parser->uri_scheme); else parser->uri.display_name(parser->parsed, parser->uri_owner, PTR_TO(mark)+1, LEN(mark, fpc)-2, parser->uri_scheme); } } # This is for removing double quotes in display name. action uri_display_name_quoted { parser->uri_display_name_quoted=1; } action start_uri { if (parser->do_uri) MARK(uri_start, fpc); } action write_uri { if (parser->do_uri) parser->uri.full(parser->parsed, parser->uri_owner, PTR_TO(uri_start), LEN(uri_start, fpc), parser->uri_scheme); /* Reset variables after parsing a URI. */ parser->do_uri = 0; parser->uri_owner = 0; parser->uri_scheme = 0; parser->uri_display_name_quoted = 0; } action init_ruri { parser->message.init_component(parser->parsed, component_ruri); } action do_request_uri { parser->do_uri = 1; parser->uri_owner = uri_owner_ruri; } action init_from { parser->message.init_component(parser->parsed, component_from); parser->hdr_field_name = header_field_from; } action new_from { parser->num_from++; } action do_from_uri { if (parser->num_from == 1) { parser->do_uri = 1; parser->uri_owner = uri_owner_from; } } action init_to { parser->message.init_component(parser->parsed, component_to); parser->hdr_field_name = header_field_to; } action new_to { parser->num_to++; } action do_to_uri { if (parser->num_to == 1) { parser->do_uri = 1; parser->uri_owner = uri_owner_to; } } action from_tag { parser->message.from_tag(parser->parsed, PTR_TO(mark), LEN(mark, fpc)); } action to_tag { parser->message.to_tag(parser->parsed, PTR_TO(mark), LEN(mark, fpc)); } action init_route { if (parser->route_found == 0) { parser->message.init_component(parser->parsed, component_route); parser->hdr_field_name = header_field_route; parser->route_found = 1; } } action init_route_uri { parser->message.init_component(parser->parsed, component_route_uri); } action do_route_uri { parser->do_uri = 1; parser->uri_owner = uri_owner_route; } action init_contact { parser->message.init_component(parser->parsed, component_contact); parser->hdr_field_name = header_field_contact; } action new_contact { parser->num_contact++; } action do_contact_uri { if (parser->num_contact == 1) { parser->do_uri = 1; parser->uri_owner = uri_owner_contact; } } # action write_contact_param { # if (parser->num_contact == 1) # parser->message.header_param(parser->parsed, header_field_contact, PTR_TO(header_param_key_start), parser->header_param_key_len, PTR_TO(header_param_value_start), parser->header_param_value_len); # } action contact_params { if (parser->num_contact == 1) parser->message.contact_params(parser->parsed, PTR_TO(mark), LEN(mark, fpc)); } action contact_has_reg_id_param { if (parser->num_contact == 1) parser->message.contact_has_reg_id(parser->parsed); } action contact_is_valid { parser->contact_is_valid = 1; } action contact_is_invalid { parser->contact_is_valid = 0; } action require_option_tag { parser->message.option_tag(parser->parsed, header_field_require, PTR_TO(mark), LEN(mark, fpc)); } action proxy_require_option_tag { parser->message.option_tag(parser->parsed, header_field_proxy_require, PTR_TO(mark), LEN(mark, fpc)); } action supported_option_tag { parser->message.option_tag(parser->parsed, header_field_supported, PTR_TO(mark), LEN(mark, fpc)); } action done { fbreak; } include grammar_sip_message "grammar_sip_message.rl"; }%% /** Data **/ %% write data; int sip_message_parser_init(sip_message_parser *parser) { TRACE(); int cs = 0; %% write init; parser->cs = cs; parser->nread = 0; parser->error_start = NULL; parser->error_len = 0; parser->error_pos = 0; parser->mark = 0; parser->hdr_field_start = 0; parser->hdr_field_len = 0; parser->hdr_value_start = 0; parser->hdr_value_len = 0; parser->hdr_field_name = header_field_any; parser->uri_start = 0; parser->uri_param_key_start = 0; parser->uri_param_value_start = 0; parser->header_param_key_start = 0; parser->header_param_value_start = 0; parser->method = 0; parser->method_set = 0; parser->num_via = 0; parser->num_from = 0; parser->num_to = 0; parser->num_call_id = 0; parser->num_cseq = 0; parser->num_max_forwards = 0; parser->num_content_length = 0; parser->num_contact = 0; parser->contact_is_valid = 0; parser->route_found = 0; parser->do_uri = 0; parser->uri_owner = 0; parser->uri_scheme = 0; parser->uri_display_name_quoted = 0; parser->parsed = Qnil; return(1); } /** exec **/ size_t sip_message_parser_execute(sip_message_parser *parser, const char *buffer, size_t len, size_t off) { TRACE(); const char *p, *pe; int cs = parser->cs; assert(off <= len && "offset past end of buffer"); p = buffer+off; pe = buffer+len; assert(*pe == '\0' && "pointer does not end on NULL"); assert(pe - p == len - off && "pointers aren't same distance"); %% write exec; parser->cs = cs; parser->nread += p - (buffer + off); assert(p <= pe && "buffer overflow after parsing execute"); assert(parser->nread <= len && "nread longer than length"); assert(parser->mark < len && "mark is after buffer end"); assert(parser->hdr_field_start < len && "field starts after buffer end"); assert(parser->hdr_field_len <= len && "field has length longer than whole buffer"); assert(parser->hdr_value_start < len && "value starts after buffer end"); assert(parser->hdr_value_len <= len && "value has length longer than whole buffer"); if (sip_message_parser_has_error(parser)) { parser->error_start = (char *)buffer; parser->error_len = pe - buffer; parser->error_pos = p - buffer; /* DOC: * buffer is the start of the parsed data. * p is last position of the parsing. * pe is first position after data ends. */ } return(parser->nread); } int sip_message_parser_finish(sip_message_parser *parser) { TRACE(); int cs = parser->cs; parser->cs = cs; if (sip_message_parser_has_error(parser)) return -1; else if (sip_message_parser_is_finished(parser)) return 1; else return 0; } int sip_message_parser_has_error(sip_message_parser *parser) { TRACE(); return parser->cs == sip_message_parser_error; } int sip_message_parser_is_finished(sip_message_parser *parser) { TRACE(); return parser->cs == sip_message_parser_first_final; } ================================================ FILE: ext/sip_parser/sip_parser.h ================================================ #ifndef sip_parser_h #define sip_parser_h #include #include enum data_type { sip_request = 1, sip_response, outbound_keepalive }; enum method { method_INVITE = 1, method_ACK, method_CANCEL, method_PRACK, method_BYE, method_REFER, method_INFO, method_UPDATE, method_OPTIONS, method_REGISTER, method_MESSAGE, method_SUBSCRIBE, method_NOTIFY, method_PUBLISH, method_PULL, method_PUSH, method_STORE, method_unknown }; enum component { component_ruri = 1, component_from, component_to, component_route, component_route_uri, component_contact }; enum uri_owner { uri_owner_ruri = 1, uri_owner_from, uri_owner_to, uri_owner_route, uri_owner_contact }; enum uri_scheme { uri_scheme_sip = 1, uri_scheme_sips, uri_scheme_tel, uri_scheme_unknown }; enum uri_param_name { uri_param_transport = 1, uri_param_lr, uri_param_ob, uri_param_ovid, uri_tel_phone_context }; enum host_type { host_type_domain = 1, host_type_ipv4, host_type_ipv6 }; enum header_field { header_field_any = 0, header_field_via, header_field_from, header_field_to, header_field_route, header_field_supported, header_field_require, header_field_proxy_require, header_field_contact }; enum transport { transport_udp = 1, transport_tcp, transport_tls, transport_sctp, transport_ws, transport_wss, transport_unknown }; typedef void (*data_type_cb)(void *parser, enum data_type value); typedef void (*msg_method_cb)(VALUE parsed, const char *at, size_t length, enum method method); typedef void (*msg_element_cb)(VALUE parsed, const char *at, size_t length); typedef void (*msg_has_param_cb)(VALUE parsed); typedef void (*header_core_value_cb)(VALUE parsed, enum header_field header_field, const char *at, size_t length); typedef void (*header_param_cb)(VALUE parsed, enum header_field header_field, const char *key, size_t key_len, const char *value, size_t value_len); typedef void (*header_cb)(VALUE parsed, const char *hdr_field, size_t hdr_field_len, const char *hdr_value, size_t hdr_value_len, enum header_field hdr_field_name); typedef void (*uri_element_cb)(VALUE parsed, enum uri_owner owner, const char *at, size_t length, enum uri_scheme); typedef void (*uri_element2_cb)(VALUE parsed, enum uri_owner owner, const char *at, size_t length, int type); typedef void (*uri_param_cb)(VALUE parsed, enum uri_owner owner, const char *key, size_t key_len, const char *value, size_t value_len); typedef void (*uri_known_param_cb)(VALUE parsed, enum uri_owner owner, enum uri_param_name, const char *at, size_t length, int uri_param_value); typedef void (*uri_has_param_cb)(VALUE parsed, enum uri_owner, enum uri_param_name); typedef void (*option_tag_cb)(VALUE parsed, enum header_field, const char *at, size_t length); typedef void (*init_component_cb)(VALUE parsed, enum component); typedef struct struct_message { msg_method_cb method; msg_element_cb sip_version; msg_element_cb status_code; msg_element_cb reason_phrase; msg_element_cb via_sent_by_host; msg_element_cb via_sent_by_port; msg_element_cb via_branch; msg_element_cb via_branch_rfc3261; msg_element_cb via_received; msg_has_param_cb via_has_rport; msg_has_param_cb via_has_alias; msg_element_cb call_id; msg_element_cb cseq_number; msg_element_cb max_forwards; msg_element_cb content_length; msg_element_cb from_tag; msg_element_cb to_tag; msg_element_cb contact_params; msg_has_param_cb contact_has_reg_id; /* Header value without header params. */ header_core_value_cb header_core_value; header_param_cb header_param; option_tag_cb option_tag; init_component_cb init_component; } struct_message; typedef struct struct_uri { uri_element_cb full; uri_element_cb scheme; uri_element_cb user; uri_element2_cb host; uri_element_cb port; uri_param_cb param; uri_known_param_cb known_param; uri_has_param_cb has_param; uri_element_cb headers; uri_element_cb display_name; } struct_uri; typedef struct sip_message_parser { /* Parser stuf. */ int cs; size_t nread; char * error_start; size_t error_len; int error_pos; size_t mark; size_t hdr_field_start; size_t hdr_field_len; size_t hdr_value_start; size_t hdr_value_len; enum header_field hdr_field_name; size_t uri_start; /* URI parameters. */ size_t uri_param_key_start; size_t uri_param_key_len; size_t uri_param_value_start; size_t uri_param_value_len; /* Header parameters. */ size_t header_param_key_start; size_t header_param_key_len; size_t header_param_value_start; size_t header_param_value_len; /* Method which set parser->parsed as OverSIP::SIP::Request, OverSIP::SIP::Response or * :outbound_keepalive. */ data_type_cb data_type; /* Message method. */ enum method method; /* Method already set. */ size_t method_set; /* Just take top most Via data. */ size_t num_via; /* Don't allow duplicate headers (From, To, Call-ID, CSeq, Max-Forwards and Content-Length). */ size_t num_from; size_t num_to; size_t num_call_id; size_t num_cseq; size_t num_max_forwards; size_t num_content_length; size_t num_contact; int contact_is_valid; /* If a previous Route was found then don't re-initialize the ruby @route array. */ size_t route_found; /* Set it before parsing a desired URI. */ size_t do_uri; /* The header (or request line) the URI belongs to. */ enum uri_owner uri_owner; /* URI scheme type. */ enum uri_scheme uri_scheme; /* URI display name is quoted. */ size_t uri_display_name_quoted; header_cb header; struct_message message; struct_uri uri; /* Can be set to OverSIP::SIP::Request, OverSIP::SIP::Response or :outbound_keepalive or nil. */ VALUE parsed; /* A pointer to the Ruby OverSIP::SIP::MessageParser instance (required by data_type() in * sip_parser_ruby.c). */ VALUE ruby_sip_parser; } sip_message_parser; typedef struct sip_uri_parser { /* Parser stuf. */ size_t mark; size_t uri_start; /* URI parameters. */ size_t uri_param_key_start; size_t uri_param_key_len; size_t uri_param_value_start; size_t uri_param_value_len; /* URI scheme type. */ enum uri_scheme uri_scheme; /* URI display name is quoted. */ size_t uri_display_name_quoted; struct_uri uri; /* Will be set to OverSIP::SIP::Uri. */ VALUE parsed; } sip_uri_parser; int sip_message_parser_init(sip_message_parser *parser); int sip_message_parser_finish(sip_message_parser *parser); size_t sip_message_parser_execute(sip_message_parser *parser, const char *buffer, size_t len, size_t off); int sip_message_parser_has_error(sip_message_parser *parser); int sip_message_parser_is_finished(sip_message_parser *parser); #define sip_message_parser_nread(parser) (parser)->nread int sip_uri_parser_execute(sip_uri_parser *parser, const char *buffer, size_t len, VALUE parsed, int allow_name_addr); #endif ================================================ FILE: ext/sip_parser/sip_parser_ruby.c ================================================ #include #include "ext_help.h" #include "sip_parser.h" #include "common_headers.h" #include "../utils/utils_ruby.h" #include "../common/c_util.h" #include "../common/ruby_c_util.h" static VALUE my_rb_str_tel_number_clean(const char*, size_t); static VALUE mOverSIP; static VALUE eOverSIPError; static VALUE mSIP; static VALUE cSIPMessageParser; static VALUE eSIPMessageParserError; static VALUE cSIPMessage; static VALUE cSIPRequest; static VALUE cSIPResponse; static VALUE cUri; static VALUE cNameAddr; static ID id_headers; static ID id_parsed; static ID id_sip_method; static ID id_is_unknown_method; static ID id_ruri; static ID id_status_code; static ID id_reason_phrase; static ID id_sip_version; static ID id_via_sent_by_host; static ID id_via_sent_by_port; static ID id_via_branch; static ID id_via_branch_rfc3261; static ID id_via_received; static ID id_via_has_rport; static ID id_via_has_alias; static ID id_via_core_value; static ID id_via_params; static ID id_num_vias; static ID id_call_id; static ID id_cseq; static ID id_max_forwards; static ID id_content_length; static ID id_from; static ID id_from_tag; static ID id_to; static ID id_to_tag; static ID id_routes; static ID id_contact; static ID id_contact_params; static ID id_contact_has_reg_id; static ID id_require; static ID id_proxy_require; static ID id_supported; static ID id_hdr_via; static ID id_hdr_from; static ID id_hdr_to; static ID id_hdr_route; static ID id_display_name; static ID id_uri; static ID id_uri_scheme; static ID id_uri_user; static ID id_uri_host; static ID id_uri_host_type; static ID id_uri_port; static ID id_uri_params; static ID id_uri_transport_param; static ID id_uri_lr_param; static ID id_uri_ob_param; static ID id_uri_ovid_param; static ID id_uri_phone_context_param; static ID id_uri_headers; static VALUE symbol_outbound_keepalive; static VALUE symbol_INVITE; static VALUE symbol_OPTIONS; static VALUE symbol_INVITE; static VALUE symbol_ACK; static VALUE symbol_CANCEL; static VALUE symbol_PRACK; static VALUE symbol_BYE; static VALUE symbol_REFER; static VALUE symbol_INFO; static VALUE symbol_UPDATE; static VALUE symbol_OPTIONS; static VALUE symbol_REGISTER; static VALUE symbol_MESSAGE; static VALUE symbol_SUBSCRIBE; static VALUE symbol_NOTIFY; static VALUE symbol_PUBLISH; static VALUE symbol_PULL; static VALUE symbol_PUSH; static VALUE symbol_STORE; static VALUE symbol_sip; static VALUE symbol_sips; static VALUE symbol_tel; static VALUE symbol_udp; static VALUE symbol_tcp; static VALUE symbol_tls; static VALUE symbol_sctp; static VALUE symbol_ws; static VALUE symbol_wss; static VALUE symbol_domain; static VALUE symbol_ipv4; static VALUE symbol_ipv6; static VALUE symbol_ipv6_reference; static VALUE string_Via; static VALUE string_From; static VALUE string_To; static VALUE string_CSeq; static VALUE string_Call_ID; static VALUE string_Max_Forwards; static VALUE string_Content_Length; /* A single and global SIP URI parser. */ static sip_uri_parser *global_sip_uri_parser; static void data_type(void *parser, enum data_type data_type) { TRACE(); VALUE parsed; sip_message_parser *sp = (sip_message_parser*)parser; switch(data_type) { case sip_request: parsed = rb_obj_alloc(cSIPRequest); rb_ivar_set(parsed, id_headers, rb_hash_new()); sp->parsed = parsed; break; case sip_response: parsed = rb_obj_alloc(cSIPResponse); rb_ivar_set(parsed, id_headers, rb_hash_new()); sp->parsed = parsed; break; case outbound_keepalive: parsed = symbol_outbound_keepalive; sp->parsed = parsed; break; } /* NOTE: The parsing can require multiple invocations of the parser#execute() so * we need to store the in-process message (Request or Response) in an attribute * within the parser (if not it would be garbage collected as it has been declared * as a VALUE variable). */ rb_ivar_set(sp->ruby_sip_parser, id_parsed, parsed); } static void init_component(VALUE parsed, enum component msg_component) { switch(msg_component) { case component_ruri: rb_ivar_set(parsed, id_ruri, rb_obj_alloc(cUri)); break; case component_from: rb_ivar_set(parsed, id_from, rb_obj_alloc(cNameAddr)); break; case component_to: rb_ivar_set(parsed, id_to, rb_obj_alloc(cNameAddr)); break; case component_route: rb_ivar_set(parsed, id_routes, rb_ary_new()); break; case component_route_uri: rb_ary_push(rb_ivar_get(parsed, id_routes), rb_obj_alloc(cNameAddr)); break; case component_contact: rb_ivar_set(parsed, id_contact, rb_obj_alloc(cNameAddr)); break; } } static void header(VALUE parsed, const char *hdr_field, size_t hdr_field_len, const char *hdr_value, size_t hdr_value_len, enum header_field hdr_field_name) { TRACE(); char *ch, *end; VALUE v, f, el; VALUE headers, array; /* Header name. */ f = headerize(hdr_field, hdr_field_len); /* Header value. */ v = RB_STR_UTF8_NEW(hdr_value, hdr_value_len); headers = rb_ivar_get(parsed, id_headers); /* Here we have the header name capitalized in variable f. */ el = rb_hash_lookup(headers, f); switch(TYPE(el)) { case T_ARRAY: rb_ary_push(el, v); break; default: array = rb_hash_aset(headers, f, rb_ary_new3(1, v)); switch(hdr_field_name) { case header_field_any: break; case header_field_via: rb_ivar_set(parsed, id_hdr_via, array); break; case header_field_from: rb_ivar_set(parsed, id_hdr_from, v); break; case header_field_to: rb_ivar_set(parsed, id_hdr_to, v); break; case header_field_route: rb_ivar_set(parsed, id_hdr_route, array); break; default: break; } } } static void msg_method(VALUE parsed, const char *at, size_t length, enum method method) { TRACE(); VALUE v; switch(method) { /* If the method is known store it as a symbol (i.e. :INVITE). */ case method_INVITE: rb_ivar_set(parsed, id_sip_method, symbol_INVITE); break; case method_ACK: rb_ivar_set(parsed, id_sip_method, symbol_ACK); break; case method_CANCEL: rb_ivar_set(parsed, id_sip_method, symbol_CANCEL); break; case method_PRACK: rb_ivar_set(parsed, id_sip_method, symbol_PRACK); break; case method_BYE: rb_ivar_set(parsed, id_sip_method, symbol_BYE); break; case method_REFER: rb_ivar_set(parsed, id_sip_method, symbol_REFER); break; case method_INFO: rb_ivar_set(parsed, id_sip_method, symbol_INFO); break; case method_UPDATE: rb_ivar_set(parsed, id_sip_method, symbol_UPDATE); break; case method_OPTIONS: rb_ivar_set(parsed, id_sip_method, symbol_OPTIONS); break; case method_REGISTER: rb_ivar_set(parsed, id_sip_method, symbol_REGISTER); break; case method_MESSAGE: rb_ivar_set(parsed, id_sip_method, symbol_MESSAGE); break; case method_SUBSCRIBE: rb_ivar_set(parsed, id_sip_method, symbol_SUBSCRIBE); break; case method_NOTIFY: rb_ivar_set(parsed, id_sip_method, symbol_NOTIFY); break; case method_PUBLISH: rb_ivar_set(parsed, id_sip_method, symbol_PUBLISH); break; case method_PULL: rb_ivar_set(parsed, id_sip_method, symbol_PULL); break; case method_PUSH: rb_ivar_set(parsed, id_sip_method, symbol_PUSH); break; case method_STORE: rb_ivar_set(parsed, id_sip_method, symbol_STORE); break; /* If the method is unknown store it as a string (i.e. "CHICKEN") and set the attribute @is_unknown_method to true. */ case method_unknown: v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_sip_method, v); rb_ivar_set(parsed, id_is_unknown_method, Qtrue); break; } } static void msg_status_code(VALUE parsed, const char *at, size_t length) { TRACE(); VALUE v; v = INT2FIX(str_to_int(at, length)); rb_ivar_set(parsed, id_status_code, v); } static void msg_reason_phrase(VALUE parsed, const char *at, size_t length) { TRACE(); VALUE v; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_reason_phrase, v); } static void msg_sip_version(VALUE parsed, const char *at, size_t length) { TRACE(); VALUE v; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_sip_version, v); } static void msg_via_sent_by_host(VALUE parsed, const char *at, size_t length) { TRACE(); VALUE v; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_via_sent_by_host, v); } static void msg_via_sent_by_port(VALUE parsed, const char *at, size_t length) { TRACE(); VALUE v; v = INT2FIX(str_to_int(at, length)); rb_ivar_set(parsed, id_via_sent_by_port, v); } static void msg_via_branch(VALUE parsed, const char *at, size_t length) { TRACE(); VALUE v; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_via_branch, v); } static void msg_via_branch_rfc3261(VALUE parsed, const char *at, size_t length) { TRACE(); rb_ivar_set(parsed, id_via_branch_rfc3261, Qtrue); } static void msg_via_received(VALUE parsed, const char *at, size_t length) { TRACE(); VALUE v; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_via_received, v); } static void msg_via_has_rport(VALUE parsed) { TRACE(); rb_ivar_set(parsed, id_via_has_rport, Qtrue); } static void msg_via_has_alias(VALUE parsed) { TRACE(); rb_ivar_set(parsed, id_via_has_alias, Qtrue); } static void msg_call_id(VALUE parsed, const char *at, size_t length) { TRACE(); VALUE v; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_call_id, v); } static void msg_cseq_number(VALUE parsed, const char *at, size_t length) { TRACE(); VALUE v; v = LONG2FIX(strtol(at,NULL,0)); rb_ivar_set(parsed, id_cseq, v); } static void msg_max_forwards(VALUE parsed, const char *at, size_t length) { TRACE(); VALUE v; v = INT2FIX(str_to_int(at, length)); rb_ivar_set(parsed, id_max_forwards, v); } static void msg_content_length(VALUE parsed, const char *at, size_t length) { TRACE(); VALUE v; v = LONG2FIX(strtol(at,NULL,0)); rb_ivar_set(parsed, id_content_length, v); } static void msg_from_tag(VALUE parsed, const char *at, size_t length) { TRACE(); VALUE v; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_from_tag, v); } static void msg_to_tag(VALUE parsed, const char *at, size_t length) { TRACE(); VALUE v; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_to_tag, v); } static VALUE get_uri_object(VALUE parsed, enum uri_owner owner) { TRACE(); VALUE routes_array; switch(owner) { case uri_owner_ruri: return rb_ivar_get(parsed, id_ruri); break; case uri_owner_from: return rb_ivar_get(parsed, id_from); break; case uri_owner_to: return rb_ivar_get(parsed, id_to); break; /* If we are in Route header, then return the last NameAddr entry. */ case uri_owner_route: routes_array = rb_ivar_get(parsed, id_routes); return RARRAY_PTR(routes_array)[RARRAY_LEN(routes_array)-1]; break; case uri_owner_contact: return rb_ivar_get(parsed, id_contact); break; /* Otherwise return the parsed object itself (useful for OverSIP::SIP::MessageParser.parse_uri method). */ default: return parsed; } return Qnil; } static void uri_scheme(VALUE parsed, enum uri_owner owner, const char *at, size_t length, enum uri_scheme scheme) { TRACE(); VALUE v; switch(scheme) { case uri_scheme_sip: v = symbol_sip; break; case uri_scheme_sips: v = symbol_sips; break; case uri_scheme_tel: v = symbol_tel; break; case uri_scheme_unknown: v = my_rb_str_downcase(at, length); break; } rb_ivar_set(get_uri_object(parsed, owner), id_uri_scheme, v); } static void uri_full(VALUE parsed, enum uri_owner owner, const char *at, size_t length, enum uri_scheme scheme) { TRACE(); VALUE v; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(get_uri_object(parsed, owner), id_uri, v); } static void uri_user(VALUE parsed, enum uri_owner owner, const char *at, size_t length, enum uri_scheme scheme) { TRACE(); VALUE v; if (scheme == uri_scheme_tel) v = my_rb_str_tel_number_clean(at, length); else v = my_rb_str_hex_unescape(at, length); rb_ivar_set(get_uri_object(parsed, owner), id_uri_user, v); } static void uri_host(VALUE parsed, enum uri_owner owner, const char *at, size_t length, int type) { TRACE(); VALUE v; VALUE host_type; /* If it's a domain and ends with ".", remove it. */ if (at[length-1] == '.') length--; /* Downcase the host part. */ v = my_rb_str_downcase(at, length); switch(type) { case host_type_domain: host_type = symbol_domain; break; case host_type_ipv4: host_type = symbol_ipv4; break; case host_type_ipv6: host_type = symbol_ipv6_reference; break; } /* NOTE: In case of an IPv6 we normalize it so comparissons are easier later. */ if (host_type == symbol_ipv6_reference) rb_ivar_set(get_uri_object(parsed, owner), id_uri_host, utils_normalize_ipv6(v, 0)); else rb_ivar_set(get_uri_object(parsed, owner), id_uri_host, v); rb_ivar_set(get_uri_object(parsed, owner), id_uri_host_type, host_type); } static void uri_port(VALUE parsed, enum uri_owner owner, const char *at, size_t length, enum uri_scheme scheme) { TRACE(); VALUE v; v = INT2FIX(str_to_int(at, length)); rb_ivar_set(get_uri_object(parsed, owner), id_uri_port, v); } static void uri_param(VALUE parsed, enum uri_owner owner, const char *key, size_t key_len, const char *value, size_t value_len) { TRACE(); VALUE uri, params, v; if ((uri = get_uri_object(parsed, owner)) == Qnil) return; if ((params = rb_ivar_get(uri, id_uri_params)) == Qnil) { params = rb_hash_new(); rb_ivar_set(uri, id_uri_params, params); } if (value_len > 0) v = RB_STR_UTF8_NEW(value, value_len); else v = Qnil; rb_hash_aset(params, my_rb_str_downcase(key, key_len), v); } static void uri_known_param(VALUE parsed, enum uri_owner owner, enum uri_param_name param_name, const char *at, size_t length, int param_value) { TRACE(); VALUE p, v; switch(param_name) { case uri_param_transport: p = id_uri_transport_param; switch(param_value) { case transport_udp: v = symbol_udp; break; case transport_tcp: v = symbol_tcp; break; case transport_tls: v = symbol_tls; break; case transport_sctp: v = symbol_sctp; break; case transport_ws: v = symbol_ws; break; case transport_wss: v = symbol_wss; break; case transport_unknown: v = my_rb_str_downcase(at, length); break; default: break; } break; case uri_param_ovid: p = id_uri_ovid_param; v = rb_str_new(at, length); break; case uri_tel_phone_context: if (length == 0) return; /* If it's a domain and ends with ".", remove it. */ if (at[length-1] == '.') length--; p = id_uri_phone_context_param; v = my_rb_str_downcase(at, length); break; default: break; } rb_ivar_set(get_uri_object(parsed, owner), p, v); } static void uri_has_param(VALUE parsed, enum uri_owner owner, enum uri_param_name param_name) { TRACE(); VALUE p; switch(param_name) { case uri_param_lr: p = id_uri_lr_param; break; case uri_param_ob: p = id_uri_ob_param; break; default: break; } rb_ivar_set(get_uri_object(parsed, owner), p, Qtrue); } static void uri_headers(VALUE parsed, enum uri_owner owner, const char *at, size_t length, enum uri_scheme scheme) { TRACE(); VALUE v; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(get_uri_object(parsed, owner), id_uri_headers, v); } static void uri_display_name(VALUE parsed, enum uri_owner owner, const char *at, size_t length, enum uri_scheme scheme) { TRACE(); VALUE v; if (length == 0) return; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(get_uri_object(parsed, owner), id_display_name, v); } static void header_core_value(VALUE parsed, enum header_field header_field, const char *at, size_t length) { TRACE(); VALUE v; if (length == 0) return; v = RB_STR_UTF8_NEW(at, length); switch(header_field) { case header_field_via: rb_ivar_set(parsed, id_via_core_value, v); break; default: break; } } static void header_param(VALUE parsed, enum header_field header_field, const char *key, size_t key_len, const char *value, size_t value_len) { TRACE(); VALUE v; VALUE header_params; switch(header_field) { case header_field_via: if ((header_params = rb_ivar_get(parsed, id_via_params)) == Qnil) { header_params = rb_hash_new(); rb_ivar_set(parsed, id_via_params, header_params); } if (value_len > 0) v = RB_STR_UTF8_NEW(value, value_len); else v = Qnil; rb_hash_aset(header_params, my_rb_str_downcase(key, key_len), v); break; /* case header_field_contact: if ((header_params = rb_ivar_get(parsed, id_contact_params)) == Qnil) { header_params = rb_hash_new(); rb_ivar_set(parsed, id_contact_params, header_params); } if (value_len > 0) v = RB_STR_UTF8_NEW(value, value_len); else v = Qnil; rb_hash_aset(header_params, my_rb_str_downcase(key, key_len), v); break; */ default: break; } } static void msg_contact_params(VALUE parsed, const char *at, size_t length) { TRACE(); VALUE v; if (length == 0) return; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_contact_params, v); } static void msg_contact_has_reg_id(VALUE parsed) { TRACE(); rb_ivar_set(parsed, id_contact_has_reg_id, Qtrue); } static void option_tag(VALUE parsed, enum header_field header_field, const char *at, size_t length) { TRACE(); VALUE v; VALUE id_option_tag_owner; VALUE option_tag_owner; switch(header_field) { case header_field_require: id_option_tag_owner = id_require; break; case header_field_proxy_require: id_option_tag_owner = id_proxy_require; break; case header_field_supported: id_option_tag_owner = id_supported; break; default: break; } if ((option_tag_owner = rb_ivar_get(parsed, id_option_tag_owner)) == Qnil) { option_tag_owner = rb_ary_new(); rb_ivar_set(parsed, id_option_tag_owner, option_tag_owner); } rb_ary_push(option_tag_owner,my_rb_str_downcase(at, length)); } /*************** Custom C funcions (helpers) ****************/ /* * my_rb_str_tel_number_clean: Remove separators from a TEL URI number and downcase letters. */ static VALUE my_rb_str_tel_number_clean(const char *str, size_t len) { TRACE(); char *new_str; VALUE str_clean; new_str = ALLOC_N(char, len); char *s; int i, j; int new_len; for (s = (char *)str, i = 0, j = 0, new_len = len; i < len ; s++, i++) /* The char is not a separator so keep it. */ if (*s != '-' && *s != '.' && *s != '(' && *s != ')') /* Downcase if it's A-F. */ if (*s >= 'A' && *s <= 'F') new_str[j++] = *s + 32; else new_str[j++] = *s; else new_len--; str_clean = RB_STR_UTF8_NEW(new_str, new_len); xfree(new_str); return(str_clean); } /*************** Ruby functions ****************/ static void SipMessageParser_free(void *parser) { TRACE(); if(parser) { /* NOTE: Use always xfree() rather than free(): * http://www.mail-archive.com/libxml-devel@rubyforge.org/msg00242.html */ xfree(parser); } } VALUE SipMessageParser_alloc(VALUE klass) { TRACE(); VALUE obj; /* NOTE: Use always ALLOC/ALLOC_N rather than malloc(). * ALLOC uses xmalloc: * ALLOC(type) (type*)xmalloc(sizeof(type)) * ALLOC_N(type, n) (type*)xmalloc(sizeof(type)*(n)) */ sip_message_parser *parser = ALLOC(sip_message_parser); /* Asign functions to the pointers of sip_message_parser struct. */ parser->data_type = data_type; parser->header = header; parser->message.method = msg_method; parser->message.status_code = msg_status_code; parser->message.reason_phrase = msg_reason_phrase; parser->message.sip_version = msg_sip_version; parser->message.via_sent_by_host = msg_via_sent_by_host; parser->message.via_sent_by_port = msg_via_sent_by_port; parser->message.via_branch = msg_via_branch; parser->message.via_branch_rfc3261 = msg_via_branch_rfc3261; parser->message.via_received = msg_via_received; parser->message.via_has_rport = msg_via_has_rport; parser->message.via_has_alias = msg_via_has_alias; parser->message.call_id = msg_call_id; parser->message.cseq_number = msg_cseq_number; parser->message.max_forwards = msg_max_forwards; parser->message.content_length = msg_content_length; parser->message.from_tag = msg_from_tag; parser->message.to_tag = msg_to_tag; parser->message.contact_params = msg_contact_params; parser->message.contact_has_reg_id = msg_contact_has_reg_id; parser->message.header_core_value = header_core_value; parser->message.header_param = header_param; parser->message.option_tag = option_tag; parser->message.init_component = init_component; parser->uri.full = uri_full; parser->uri.scheme = uri_scheme; parser->uri.user = uri_user; parser->uri.host = uri_host; parser->uri.port = uri_port; parser->uri.param = uri_param; parser->uri.known_param = uri_known_param; parser->uri.has_param = uri_has_param; parser->uri.headers = uri_headers; parser->uri.display_name = uri_display_name; sip_message_parser_init(parser); obj = Data_Wrap_Struct(klass, NULL, SipMessageParser_free, parser); return obj; } /** * call-seq: * parser.new -> parser * * Creates a new parser. */ VALUE SipMessageParser_init(VALUE self) { TRACE(); sip_message_parser *parser = NULL; DATA_GET(self, sip_message_parser, parser); sip_message_parser_init(parser); /* NOTE: This allows the C struct to access to the VALUE element of the Ruby MessageParser instance. */ parser->ruby_sip_parser = self; return self; } /** * call-seq: * parser.reset -> nil * * Resets the parser to it's initial state so that you can reuse it * rather than making new ones. */ VALUE SipMessageParser_reset(VALUE self) { TRACE(); sip_message_parser *parser = NULL; DATA_GET(self, sip_message_parser, parser); sip_message_parser_init(parser); return Qnil; } /** * call-seq: * parser.finish -> true/false * * Finishes a parser early which could put in a "good" or bad state. * You should call reset after finish it or bad things will happen. */ VALUE SipMessageParser_finish(VALUE self) { TRACE(); sip_message_parser *parser = NULL; DATA_GET(self, sip_message_parser, parser); sip_message_parser_finish(parser); return sip_message_parser_is_finished(parser) ? Qtrue : Qfalse; } /** * call-seq: * parser.execute(buffer, start) -> Integer */ VALUE SipMessageParser_execute(VALUE self, VALUE buffer, VALUE start) { TRACE(); sip_message_parser *parser = NULL; int from = 0; char *dptr = NULL; long dlen = 0; REQUIRE_TYPE(buffer, T_STRING); REQUIRE_TYPE(start, T_FIXNUM); DATA_GET(self, sip_message_parser, parser); from = FIX2INT(start); dptr = RSTRING_PTR(buffer); dlen = RSTRING_LEN(buffer); /* This should never occur or there is an error in the parser. */ if(from >= dlen) rb_raise(eSIPMessageParserError, "requested start is after buffer end."); sip_message_parser_execute(parser, dptr, dlen, from); if (sip_message_parser_has_error(parser)) return Qfalse; else return INT2FIX(sip_message_parser_nread(parser)); } /** * call-seq: * parser.error? -> true/false * * Tells you whether the parser is in an error state. */ VALUE SipMessageParser_has_error(VALUE self) { TRACE(); sip_message_parser *parser = NULL; DATA_GET(self, sip_message_parser, parser); return sip_message_parser_has_error(parser) ? Qtrue : Qfalse; } /** * call-seq: * parser.error -> String * * Returns a String showing the error by enclosing the exact wrong char between {{{ }}}. */ VALUE SipMessageParser_error(VALUE self) { TRACE(); sip_message_parser *parser = NULL; DATA_GET(self, sip_message_parser, parser); if(sip_message_parser_has_error(parser)) { char *parsing_error_str; int parsing_error_str_len; int i; int j; VALUE rb_error_str; /* Duplicate error string length so '\r' and '\n' are displayed as CR and LF. Let 6 chars more for allocating {{{ and }}}. */ parsing_error_str = ALLOC_N(char, 2*parser->error_len + 6); parsing_error_str_len=0; for(i=0, j=0; i < parser->error_len; i++) { if (i != parser->error_pos) { if (parser->error_start[i] == '\r') { parsing_error_str[j++] = '\\'; parsing_error_str[j++] = 'r'; parsing_error_str_len += 2; } else if (parser->error_start[i] == '\n') { parsing_error_str[j++] = '\\'; parsing_error_str[j++] = 'n'; parsing_error_str_len += 2; } else { parsing_error_str[j++] = parser->error_start[i]; parsing_error_str_len++; } } else { parsing_error_str[j++] = '{'; parsing_error_str[j++] = '{'; parsing_error_str[j++] = '{'; if (parser->error_start[i] == '\r') { parsing_error_str[j++] = '\\'; parsing_error_str[j++] = 'r'; parsing_error_str_len += 2; } else if (parser->error_start[i] == '\n') { parsing_error_str[j++] = '\\'; parsing_error_str[j++] = 'n'; parsing_error_str_len += 2; } else { parsing_error_str[j++] = parser->error_start[i]; parsing_error_str_len++; } parsing_error_str[j++] = '}'; parsing_error_str[j++] = '}'; parsing_error_str[j++] = '}'; parsing_error_str_len += 6; } } rb_error_str = rb_str_new(parsing_error_str, parsing_error_str_len); xfree(parsing_error_str); return rb_error_str; } else return Qnil; } /** * call-seq: * parser.finished? -> true/false * * Tells you whether the parser is finished or not and in a good state. */ VALUE SipMessageParser_is_finished(VALUE self) { TRACE(); sip_message_parser *parser = NULL; DATA_GET(self, sip_message_parser, parser); return sip_message_parser_is_finished(parser) ? Qtrue : Qfalse; } /** * call-seq: * parser.parsed -> OverSIP::Request or OverSIP::Response or :outbound_keepalive or nil * * Returns the parsed object. It doesn't meant that the parsing has succedded. The returned * object could be a message identified as a Request or Response or :outbound_keepalive, but later * the message has been detected as invalid. So the parsed object is incomplete. * * In case the parsing has failed in the first char the method returns nil. */ VALUE SipMessageParser_parsed(VALUE self) { TRACE(); sip_message_parser *parser = NULL; DATA_GET(self, sip_message_parser, parser); /* NOTE: We can safely access here to parser->parsed as its content is also referenced * by id_parsed so it cannot be garbage collected while the OverSIP::MessageParser * still alives. */ return parser->parsed; } /** * call-seq: * parser.nread -> Integer * * Returns the amount of data processed so far during this processing cycle. It is * set to 0 on initialize or reset calls and is incremented each time execute is called. */ VALUE SipMessageParser_nread(VALUE self) { TRACE(); sip_message_parser *parser = NULL; DATA_GET(self, sip_message_parser, parser); return INT2FIX(parser->nread); } /** * call-seq: * parser.duplicated_core_header? -> true/false * * In case a core header is duplicated its name is returned as string. * False otherwise. */ VALUE SipMessageParser_has_duplicated_core_header(VALUE self) { TRACE(); sip_message_parser *parser = NULL; DATA_GET(self, sip_message_parser, parser); /* NOTE: Good moment for counting the num of Via values and store it. */ rb_ivar_set(parser->parsed, id_num_vias, INT2FIX(parser->num_via)); if (parser->num_from > 1) return string_From; else if (parser->num_to > 1) return string_To; else if (parser->num_cseq > 1) return string_CSeq; else if (parser->num_call_id > 1) return string_Call_ID; else if (parser->num_max_forwards > 1) return string_Max_Forwards; else if (parser->num_content_length > 1) return string_Content_Length; return Qfalse; } /** * call-seq: * parser.missing_core_header? -> true/false * * In case a core header is missing its name is returned as string. * False otherwise. */ VALUE SipMessageParser_has_missing_core_header(VALUE self) { TRACE(); sip_message_parser *parser = NULL; DATA_GET(self, sip_message_parser, parser); if (parser->num_via == 0) return string_Via; else if (parser->num_from == 0) return string_From; else if (parser->num_to == 0) return string_To; else if (parser->num_cseq == 0) return string_CSeq; else if (parser->num_call_id == 0) return string_Call_ID; return Qfalse; } VALUE SipMessageParser_post_parsing(VALUE self) { TRACE(); sip_message_parser *parser = NULL; DATA_GET(self, sip_message_parser, parser); /* We just parse Contact if it's a single header with a single Name Addr within it. */ if (! (parser->contact_is_valid == 1 && parser->num_contact == 1)) rb_ivar_set(parser->parsed, id_contact, Qnil); return Qnil; } /** * call-seq: * OverSIP::SIP::MessageParser.headarize -> String * * Tries to lookup the header name in a list of well-known headers. If so, * returns the retrieved VALUE. It also works for short headers. * In case the header is unknown, it normalizes it (by capitalizing the * first letter and each letter under a "-" or "_" symbol). */ VALUE SipMessageParser_Class_headerize(VALUE self, VALUE string) { TRACE(); if (TYPE(string) != T_STRING) rb_raise(rb_eTypeError, "Argument must be a String"); if ((RSTRING_LEN(string)) == 0) rb_str_new(RSTRING_PTR(string), RSTRING_LEN(string)); return(headerize(RSTRING_PTR(string), RSTRING_LEN(string))); } /** * call-seq: * OverSIP::SIP::MessageParser.parse_uri(string) -> OverSIP::SIP::Uri */ VALUE SipMessageParser_Class_parse_uri(VALUE self, VALUE string, VALUE allow_name_addr) { TRACE(); char *dptr = NULL; long dlen = 0; sip_uri_parser *parser; VALUE parsed; int int_allow_name_addr; /* Initialize the global SIP URI parser if not set yet. */ if (global_sip_uri_parser == NULL) { /* Asign functions to the pointers of global_sip_uri_parser struct. */ global_sip_uri_parser = ALLOC(sip_uri_parser); global_sip_uri_parser->uri.full = uri_full; global_sip_uri_parser->uri.scheme = uri_scheme; global_sip_uri_parser->uri.user = uri_user; global_sip_uri_parser->uri.host = uri_host; global_sip_uri_parser->uri.port = uri_port; global_sip_uri_parser->uri.param = uri_param; global_sip_uri_parser->uri.known_param = uri_known_param; global_sip_uri_parser->uri.has_param = uri_has_param; global_sip_uri_parser->uri.headers = uri_headers; global_sip_uri_parser->uri.display_name = uri_display_name; } REQUIRE_TYPE(string, T_STRING); /* NOTE: We need to pass a \0 terminated string to the URI parser. StringValueCStr() gives * exactly that. So also increment dlen in 1. */ dptr = StringValueCStr(string); dlen = RSTRING_LEN(string) + 1; if (TYPE(allow_name_addr) == T_TRUE) { parsed = rb_obj_alloc(cNameAddr); int_allow_name_addr = 1; } else { parsed = rb_obj_alloc(cUri); int_allow_name_addr = 0; } if (sip_uri_parser_execute(global_sip_uri_parser, dptr, dlen, parsed, int_allow_name_addr) == 0) return parsed; else return Qfalse; } void Init_sip_parser() { TRACE(); mOverSIP = rb_define_module("OverSIP"); eOverSIPError = rb_define_class_under(mOverSIP, "Error", rb_eStandardError); mSIP = rb_define_module_under(mOverSIP, "SIP"); cSIPMessageParser = rb_define_class_under(mSIP, "MessageParser", rb_cObject); cSIPMessage = rb_define_class_under(mSIP, "Message", rb_cObject); cSIPRequest = rb_define_class_under(mSIP, "Request", cSIPMessage); cSIPResponse = rb_define_class_under(mSIP, "Response", cSIPMessage); cUri = rb_define_class_under(mSIP, "Uri", rb_cObject); cNameAddr = rb_define_class_under(mSIP, "NameAddr", cUri); eSIPMessageParserError = rb_define_class_under(mSIP, "MessageParserError", eOverSIPError); rb_define_alloc_func(cSIPMessageParser, SipMessageParser_alloc); rb_define_method(cSIPMessageParser, "initialize", SipMessageParser_init,0); rb_define_method(cSIPMessageParser, "reset", SipMessageParser_reset,0); rb_define_method(cSIPMessageParser, "finish", SipMessageParser_finish,0); rb_define_method(cSIPMessageParser, "execute", SipMessageParser_execute,2); rb_define_method(cSIPMessageParser, "error?", SipMessageParser_has_error,0); rb_define_method(cSIPMessageParser, "error", SipMessageParser_error,0); rb_define_method(cSIPMessageParser, "finished?", SipMessageParser_is_finished,0); rb_define_method(cSIPMessageParser, "parsed", SipMessageParser_parsed,0); rb_define_method(cSIPMessageParser, "nread", SipMessageParser_nread,0); rb_define_method(cSIPMessageParser, "duplicated_core_header?", SipMessageParser_has_duplicated_core_header,0); rb_define_method(cSIPMessageParser, "missing_core_header?", SipMessageParser_has_missing_core_header,0); rb_define_method(cSIPMessageParser, "post_parsing", SipMessageParser_post_parsing,0); rb_define_module_function(cSIPMessageParser, "headerize", SipMessageParser_Class_headerize,1); rb_define_module_function(cSIPMessageParser, "parse_uri", SipMessageParser_Class_parse_uri,2); init_common_headers(); init_short_headers(); id_headers = rb_intern("@headers"); id_parsed = rb_intern("@parsed"); id_sip_method = rb_intern("@sip_method"); id_is_unknown_method = rb_intern("@is_unknown_method"); id_ruri = rb_intern("@ruri"); id_status_code = rb_intern("@status_code"); id_reason_phrase = rb_intern("@reason_phrase"); id_sip_version = rb_intern("@sip_version"); id_via_sent_by_host = rb_intern("@via_sent_by_host"); id_via_sent_by_port = rb_intern("@via_sent_by_port"); id_via_branch = rb_intern("@via_branch"); id_via_branch_rfc3261 = rb_intern("@via_branch_rfc3261"); id_via_received = rb_intern("@via_received"); id_via_has_rport = rb_intern("@via_has_rport"); id_via_has_alias = rb_intern("@via_has_alias"); id_via_core_value = rb_intern("@via_core_value"); id_via_params = rb_intern("@via_params"); id_num_vias = rb_intern("@num_vias"); id_call_id = rb_intern("@call_id"); id_cseq = rb_intern("@cseq"); id_max_forwards = rb_intern("@max_forwards"); id_content_length = rb_intern("@content_length"); id_from = rb_intern("@from"); id_from_tag = rb_intern("@from_tag"); id_to = rb_intern("@to"); id_to_tag = rb_intern("@to_tag"); id_routes = rb_intern("@routes"); id_contact = rb_intern("@contact"); id_contact_params = rb_intern("@contact_params"); id_contact_has_reg_id = rb_intern("@contact_has_reg_id"); id_require = rb_intern("@require"); id_proxy_require = rb_intern("@proxy_require"); id_supported = rb_intern("@supported"); id_hdr_via = rb_intern("@hdr_via"); id_hdr_from = rb_intern("@hdr_from"); id_hdr_to = rb_intern("@hdr_to"); id_hdr_route = rb_intern("@hdr_route"); id_display_name = rb_intern("@display_name"); id_uri = rb_intern("@uri"); id_uri_scheme = rb_intern("@scheme"); id_uri_user = rb_intern("@user"); id_uri_host = rb_intern("@host"); id_uri_host_type = rb_intern("@host_type"); id_uri_port = rb_intern("@port"); id_uri_params = rb_intern("@params"); id_uri_transport_param = rb_intern("@transport_param"); id_uri_lr_param = rb_intern("@lr_param"); id_uri_ob_param = rb_intern("@ob_param"); id_uri_ovid_param = rb_intern("@ovid_param"); id_uri_phone_context_param = rb_intern("@phone_context_param"); id_uri_headers = rb_intern("@headers"); symbol_outbound_keepalive = ID2SYM(rb_intern("outbound_keepalive")); symbol_INVITE = ID2SYM(rb_intern("INVITE")); symbol_ACK = ID2SYM(rb_intern("ACK")); symbol_CANCEL = ID2SYM(rb_intern("CANCEL")); symbol_PRACK = ID2SYM(rb_intern("PRACK")); symbol_BYE = ID2SYM(rb_intern("BYE")); symbol_REFER = ID2SYM(rb_intern("REFER")); symbol_INFO = ID2SYM(rb_intern("INFO")); symbol_UPDATE = ID2SYM(rb_intern("UPDATE")); symbol_OPTIONS = ID2SYM(rb_intern("OPTIONS")); symbol_REGISTER = ID2SYM(rb_intern("REGISTER")); symbol_MESSAGE = ID2SYM(rb_intern("MESSAGE")); symbol_SUBSCRIBE = ID2SYM(rb_intern("SUBSCRIBE")); symbol_NOTIFY = ID2SYM(rb_intern("NOTIFY")); symbol_PUBLISH = ID2SYM(rb_intern("PUBLISH")); symbol_PULL = ID2SYM(rb_intern("PULL")); symbol_PUSH = ID2SYM(rb_intern("PUSH")); symbol_STORE = ID2SYM(rb_intern("STORE")); symbol_sip = ID2SYM(rb_intern("sip")); symbol_sips = ID2SYM(rb_intern("sips")); symbol_tel = ID2SYM(rb_intern("tel")); symbol_udp = ID2SYM(rb_intern("udp")); symbol_tcp = ID2SYM(rb_intern("tcp")); symbol_tls = ID2SYM(rb_intern("tls")); symbol_sctp = ID2SYM(rb_intern("sctp")); symbol_ws = ID2SYM(rb_intern("ws")); symbol_wss = ID2SYM(rb_intern("wss")); symbol_domain = ID2SYM(rb_intern("domain")); symbol_ipv4 = ID2SYM(rb_intern("ipv4")); symbol_ipv6 = ID2SYM(rb_intern("ipv6")); symbol_ipv6_reference = ID2SYM(rb_intern("ipv6_reference")); string_Via = rb_str_new2("Via"); string_Via = rb_obj_freeze(string_Via); rb_global_variable(&string_Via); string_From = rb_str_new2("From"); string_From = rb_obj_freeze(string_From); rb_global_variable(&string_From); string_To = rb_str_new2("To"); string_To = rb_obj_freeze(string_To); rb_global_variable(&string_To); string_CSeq = rb_str_new2("CSeq"); string_CSeq = rb_obj_freeze(string_CSeq); rb_global_variable(&string_CSeq); string_Call_ID = rb_str_new2("Call-ID"); string_Call_ID = rb_obj_freeze(string_Call_ID); rb_global_variable(&string_Call_ID); string_Max_Forwards = rb_str_new2("Max-Forwards"); string_Max_Forwards = rb_obj_freeze(string_Max_Forwards); rb_global_variable(&string_Max_Forwards); string_Content_Length = rb_str_new2("Content-Length"); string_Content_Length = rb_obj_freeze(string_Content_Length); rb_global_variable(&string_Content_Length); /* Initialize global_sip_uri_parser struct to NULL. */ global_sip_uri_parser = NULL; } ================================================ FILE: ext/sip_parser/sip_uri_parser.c ================================================ #line 1 "sip_uri_parser.rl" #include "sip_parser.h" #include "ext_help.h" #include #include #include #include #include #define MARK(M, FPC) (parser->M = (FPC) - buffer) #define LEN(AT, FPC) (FPC - buffer - parser->AT) #define PTR_TO(F) (buffer + parser->F) /** machine **/ #line 183 "sip_uri_parser.rl" /** Data **/ #line 28 "sip_uri_parser.c" static const char _sip_uri_parser_actions[] = { 0, 1, 0, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12, 1, 13, 1, 24, 1, 27, 1, 28, 1, 31, 1, 32, 2, 0, 29, 2, 0, 30, 2, 1, 5, 2, 2, 5, 2, 4, 5, 2, 6, 31, 2, 7, 0, 2, 7, 31, 2, 8, 0, 2, 8, 31, 2, 9, 0, 2, 9, 31, 2, 10, 0, 2, 10, 31, 2, 12, 15, 2, 12, 25, 2, 12, 26, 2, 13, 0, 2, 14, 15, 2, 16, 31, 2, 24, 0, 2, 24, 31, 2, 27, 0, 2, 27, 31, 2, 30, 0, 2, 31, 32, 3, 3, 5, 0, 3, 6, 31, 32, 3, 7, 31, 32, 3, 8, 31, 32, 3, 9, 31, 32, 3, 10, 31, 32, 3, 12, 15, 0, 3, 12, 15, 25, 3, 12, 15, 26, 3, 12, 15, 31, 3, 14, 15, 0, 3, 14, 15, 17, 3, 14, 15, 18, 3, 14, 15, 19, 3, 14, 15, 20, 3, 14, 15, 21, 3, 14, 15, 22, 3, 14, 15, 23, 3, 14, 15, 24, 3, 14, 15, 27, 3, 14, 15, 31, 3, 16, 31, 32, 3, 24, 31, 32, 3, 27, 31, 32, 4, 12, 15, 25, 0, 4, 12, 15, 25, 31, 4, 12, 15, 26, 0, 4, 12, 15, 26, 31, 4, 12, 15, 31, 32, 4, 14, 15, 17, 31, 4, 14, 15, 18, 0, 4, 14, 15, 18, 31, 4, 14, 15, 19, 0, 4, 14, 15, 19, 31, 4, 14, 15, 20, 0, 4, 14, 15, 20, 31, 4, 14, 15, 21, 0, 4, 14, 15, 21, 31, 4, 14, 15, 22, 0, 4, 14, 15, 22, 31, 4, 14, 15, 23, 0, 4, 14, 15, 23, 31, 4, 14, 15, 24, 0, 4, 14, 15, 24, 31, 4, 14, 15, 27, 0, 4, 14, 15, 27, 31, 4, 14, 15, 31, 32, 5, 12, 15, 25, 31, 32, 5, 12, 15, 26, 31, 32, 5, 14, 15, 17, 31, 32, 5, 14, 15, 18, 31, 32, 5, 14, 15, 19, 31, 32, 5, 14, 15, 20, 31, 32, 5, 14, 15, 21, 31, 32, 5, 14, 15, 22, 31, 32, 5, 14, 15, 23, 31, 32, 5, 14, 15, 24, 31, 32, 5, 14, 15, 27, 31, 32 }; static const unsigned short _sip_uri_parser_cond_offsets[] = { 0, 0, 24, 28, 29, 31, 34, 42, 49, 78, 103, 127, 140, 153, 172, 185, 198, 205, 211, 216, 222, 225, 234, 239, 245, 249, 251, 253, 254, 256, 260, 261, 263, 267, 268, 270, 273, 289, 290, 292, 307, 325, 330, 331, 333, 337, 358, 359, 361, 381, 398, 402, 415, 416, 417, 418, 419, 420, 421, 423, 427, 430, 444, 458, 472, 486, 487, 501, 515, 529, 543, 544, 558, 572, 586, 600, 601, 615, 629, 643, 657, 658, 672, 686, 700, 714, 715, 729, 743, 757, 771, 772, 789, 804, 808, 809, 813, 814, 818, 819, 821, 823, 827, 829, 831, 833, 837, 839, 841, 843, 847, 849, 863, 877, 878, 892, 906, 920, 934, 949, 964, 979, 996, 1012, 1027, 1042, 1056, 1070, 1087, 1103, 1118, 1133, 1135, 1148, 1164, 1180, 1196, 1214, 1231, 1247, 1263, 1278, 1295, 1311, 1326, 1341, 1343, 1359, 1375, 1391, 1407, 1425, 1442, 1458, 1474, 1489, 1506, 1522, 1537, 1552, 1554, 1570, 1586, 1602, 1618, 1636, 1653, 1669, 1685, 1700, 1717, 1733, 1748, 1763, 1765, 1781, 1797, 1813, 1829, 1847, 1864, 1880, 1896, 1911, 1928, 1944, 1959, 1974, 1976, 1992, 2008, 2024, 2040, 2058, 2075, 2091, 2107, 2122, 2123, 2140, 2156, 2171, 2186, 2188, 2204, 2220, 2236, 2252, 2270, 2287, 2303, 2319, 2334, 2358, 2371, 2384, 2387, 2390, 2393, 2396, 2401, 2406, 2411, 2414, 2420, 2426, 2432, 2438, 2444, 2453, 2462, 2471, 2482, 2492, 2498, 2504, 2512, 2519, 2525, 2531, 2539, 2546, 2552, 2558, 2566, 2573, 2587, 2601, 2615, 2629, 2630, 2644, 2658, 2672, 2686, 2687, 2701, 2715, 2729, 2743, 2744, 2758, 2772, 2786, 2800, 2801, 2815, 2829, 2843, 2857, 2858, 2872, 2886, 2900, 2914, 2915, 2932, 2947, 2951, 2952, 2956, 2957, 2961, 2962, 2965, 2967, 2969, 2973, 2975, 2977, 2979, 2983, 2985, 2987, 2989, 2993, 2995, 3009, 3023, 3024, 3038, 3052, 3066, 3080, 3095, 3110, 3125, 3142, 3158, 3173, 3188, 3202, 3216, 3233, 3249, 3264, 3279, 3281, 3294, 3310, 3326, 3342, 3360, 3377, 3393, 3409, 3424, 3441, 3457, 3472, 3487, 3489, 3505, 3521, 3537, 3553, 3571, 3588, 3604, 3620, 3635, 3652, 3668, 3683, 3698, 3700, 3716, 3732, 3748, 3764, 3782, 3799, 3815, 3831, 3846, 3863, 3879, 3894, 3909, 3911, 3927, 3943, 3959, 3975, 3993, 4010, 4026, 4042, 4057, 4074, 4090, 4105, 4120, 4122, 4138, 4154, 4170, 4186, 4204, 4221, 4237, 4253, 4268, 4269, 4286, 4302, 4317, 4332, 4334, 4350, 4366, 4382, 4398, 4416, 4433, 4449, 4465, 4480, 4493, 4506, 4530, 4543, 4556, 4584, 4609, 4638, 4663, 4687, 4700, 4713, 4732, 4745, 4758, 4765, 4771, 4776, 4782, 4785, 4795, 4800, 4807, 4811, 4813, 4815, 4816, 4819, 4823, 4827, 4831, 4835, 4841, 4847, 4853, 4857, 4863, 4869, 4875, 4881, 4887, 4897, 4907, 4917, 4929, 4940, 4946, 4952, 4960, 4967, 4973, 4979, 4987, 4994, 5000, 5006, 5014, 5021, 5035, 5049, 5063, 5077, 5078, 5092, 5106, 5120, 5134, 5135, 5149, 5163, 5177, 5191, 5192, 5206, 5220, 5234, 5248, 5249, 5263, 5277, 5291, 5305, 5306, 5320, 5334, 5348, 5362, 5363, 5380, 5395, 5399, 5400, 5404, 5405, 5409, 5410, 5414, 5416, 5418, 5422, 5424, 5426, 5428, 5432, 5434, 5436, 5438, 5442, 5444, 5458, 5472, 5473, 5487, 5501, 5515, 5529, 5544, 5559, 5574, 5591, 5607, 5622, 5637, 5651, 5665, 5682, 5698, 5713, 5728, 5730, 5743, 5759, 5775, 5791, 5809, 5826, 5842, 5858, 5873, 5890, 5906, 5921, 5936, 5938, 5954, 5970, 5986, 6002, 6020, 6037, 6053, 6069, 6084, 6101, 6117, 6132, 6147, 6149, 6165, 6181, 6197, 6213, 6231, 6248, 6264, 6280, 6295, 6312, 6328, 6343, 6358, 6360, 6376, 6392, 6408, 6424, 6442, 6459, 6475, 6491, 6506, 6523, 6539, 6554, 6569, 6571, 6587, 6603, 6619, 6635, 6653, 6670, 6686, 6702, 6717, 6718, 6735, 6751, 6766, 6781, 6783, 6799, 6815, 6831, 6847, 6865, 6882, 6898, 6914, 6929, 6942, 6955, 6979, 6992, 7005, 7033, 7044, 7055, 7066, 7092, 7116, 7129, 7142, 7161, 7174, 7187, 7194, 7200, 7205, 7211, 7214, 7224, 7229, 7236, 7240, 7242, 7244, 7245, 7248, 7280, 7304, 7317, 7330, 7354, 7377, 7390, 7403, 7423, 7444, 7457, 7470, 7492, 7505, 7518, 7538, 7566, 7590, 7615, 7639, 7667, 7683, 7711, 7743, 7767, 7795, 7823, 7847, 7872, 7896, 7924, 7940, 7968, 7996, 8022, 8050, 8078, 8106, 8134, 8162, 8190, 8214, 8251, 8275, 8303, 8319, 8347, 8375, 8403, 8431, 8455, 8487, 8515, 8539, 8567, 8591, 8619, 8647, 8671, 8699, 8727, 8751, 8755, 8759, 8763, 8767, 8773, 8779, 8785, 8789, 8795, 8801, 8807, 8813, 8819, 8829, 8839, 8849, 8861, 8872, 8878, 8884, 8892, 8899, 8905, 8911, 8919, 8926, 8932, 8938, 8946, 8953, 8967, 8981, 8995, 9009, 9010, 9024, 9038, 9052, 9066, 9067, 9081, 9095, 9109, 9123, 9124, 9138, 9152, 9166, 9180, 9181, 9195, 9209, 9223, 9237, 9238, 9252, 9266, 9280, 9294, 9295, 9312, 9327, 9331, 9332, 9336, 9337, 9341, 9342, 9346, 9348, 9350, 9354, 9356, 9358, 9360, 9364, 9366, 9368, 9370, 9374, 9376, 9390, 9404, 9405, 9419, 9433, 9447, 9461, 9476, 9491, 9506, 9523, 9539, 9554, 9569, 9583, 9597, 9614, 9630, 9645, 9660, 9662, 9675, 9691, 9707, 9723, 9741, 9758, 9774, 9790, 9805, 9822, 9838, 9853, 9868, 9870, 9886, 9902, 9918, 9934, 9952, 9969, 9985, 10001, 10016, 10033, 10049, 10064, 10079, 10081, 10097, 10113, 10129, 10145, 10163, 10180, 10196, 10212, 10227, 10244, 10260, 10275, 10290, 10292, 10308, 10324, 10340, 10356, 10374, 10391, 10407, 10423, 10438, 10455, 10471, 10486, 10501, 10503, 10519, 10535, 10551, 10567, 10585, 10602, 10618, 10634, 10649, 10650, 10667, 10683, 10698, 10713, 10715, 10731, 10747, 10763, 10779, 10797, 10814, 10830, 10846, 10861, 10885, 10909, 10933, 10957, 10982, 11006, 11031, 11053, 11073, 11093, 11113, 11135, 11157, 11179, 11201, 11223, 11247, 11271, 11295, 11318, 11356, 11383, 11396, 11409, 11435, 11448, 11461, 11487, 11513, 11526, 11539, 11562, 11589, 11616, 11629, 11642, 11668, 11694, 11707, 11720, 11744, 11757, 11770, 11795, 11808, 11821, 11845, 11872, 11885, 11898, 11924, 11955, 11982, 12010, 12038, 12066, 12094, 12129, 12156, 12187, 12218, 12245, 12273, 12301, 12329, 12357, 12388, 12417, 12448, 12479, 12510, 12541, 12572, 12603, 12630, 12670, 12698, 12726, 12754, 12786, 12818, 12850, 12878, 12914, 12946, 12974, 13006, 13034, 13066, 13098, 13126, 13158, 13190, 13218, 13245, 13269, 13296, 13320, 13347, 13372, 13397, 13422, 13449, 13475, 13499, 13523, 13549, 13574, 13598, 13622, 13648, 13673, 13697, 13721, 13747, 13772, 13779, 13790, 13801, 13808, 13828, 13849, 13857, 13864, 13884, 13906, 13919, 13932, 13943, 13954, 13965, 13976, 13983, 13994, 14005, 14016, 14027, 14038, 14049, 14060, 14067, 14087, 14109, 14131, 14153, 14175, 14197, 14219, 14241, 14263, 14282, 14287, 14294, 14311, 14328, 14329, 14331, 14347, 14360, 14361, 14362, 14363, 14364, 14365, 14366, 14368, 14372, 14375, 14382, 14410, 14434, 14458, 14471, 14484, 14503, 14516, 14529, 14536, 14542, 14547, 14553, 14556, 14564, 14569, 14574, 14578, 14580, 14582, 14583, 14584, 14607, 14620, 14633, 14635, 14637, 14639, 14641, 14645, 14649, 14653, 14655, 14661, 14667, 14673, 14679, 14685, 14693, 14701, 14709, 14719, 14728, 14734, 14740, 14748, 14755, 14761, 14767, 14775, 14782, 14788, 14794, 14802, 14809, 14823, 14837, 14851, 14865, 14866, 14880, 14894, 14908, 14922, 14923, 14937, 14951, 14965, 14979, 14980, 14994, 15008, 15022, 15036, 15037, 15051, 15065, 15079, 15093, 15094, 15108, 15122, 15136, 15150, 15151, 15168, 15183, 15187, 15188, 15192, 15193, 15197, 15198, 15200, 15202, 15204, 15208, 15210, 15212, 15214, 15218, 15220, 15222, 15224, 15228, 15230, 15244, 15258, 15259, 15273, 15287, 15301, 15315, 15330, 15345, 15360, 15377, 15393, 15408, 15423, 15437, 15451, 15468, 15484, 15499, 15514, 15516, 15529, 15545, 15561, 15577, 15595, 15612, 15628, 15644, 15659, 15676, 15692, 15707, 15722, 15724, 15740, 15756, 15772, 15788, 15806, 15823, 15839, 15855, 15870, 15887, 15903, 15918, 15933, 15935, 15951, 15967, 15983, 15999, 16017, 16034, 16050, 16066, 16081, 16098, 16114, 16129, 16144, 16146, 16162, 16178, 16194, 16210, 16228, 16245, 16261, 16277, 16292, 16309, 16325, 16340, 16355, 16357, 16373, 16389, 16405, 16421, 16439, 16456, 16472, 16488, 16503, 16504, 16521, 16537, 16552, 16567, 16569, 16585, 16601, 16617, 16633, 16651, 16668, 16684, 16700, 16715, 16728, 16741, 16764, 16777, 16790, 16817, 16841, 16869, 16893, 16917, 16930, 16943, 16962, 16975, 16988, 16995, 17001, 17006, 17012, 17015, 17024, 17029, 17035, 17039, 17041, 17043, 17044, 17046, 17049, 17052, 17055, 17058, 17063, 17068, 17073, 17076, 17082, 17088, 17094, 17100, 17106, 17115, 17124, 17133, 17144, 17154, 17160, 17166, 17174, 17181, 17187, 17193, 17201, 17208, 17214, 17220, 17228, 17235, 17249, 17263, 17277, 17291, 17292, 17306, 17320, 17334, 17348, 17349, 17363, 17377, 17391, 17405, 17406, 17420, 17434, 17448, 17462, 17463, 17477, 17491, 17505, 17519, 17520, 17534, 17548, 17562, 17576, 17577, 17594, 17609, 17613, 17614, 17618, 17619, 17623, 17624, 17627, 17629, 17631, 17635, 17637, 17639, 17641, 17645, 17647, 17649, 17651, 17655, 17657, 17671, 17685, 17686, 17700, 17714, 17728, 17742, 17757, 17772, 17787, 17804, 17820, 17835, 17850, 17864, 17878, 17895, 17911, 17926, 17941, 17943, 17956, 17972, 17988, 18004, 18022, 18039, 18055, 18071, 18086, 18103, 18119, 18134, 18149, 18151, 18167, 18183, 18199, 18215, 18233, 18250, 18266, 18282, 18297, 18314, 18330, 18345, 18360, 18362, 18378, 18394, 18410, 18426, 18444, 18461, 18477, 18493, 18508, 18525, 18541, 18556, 18571, 18573, 18589, 18605, 18621, 18637, 18655, 18672, 18688, 18704, 18719, 18736, 18752, 18767, 18782, 18784, 18800, 18816, 18832, 18848, 18866, 18883, 18899, 18915, 18930, 18931, 18948, 18964, 18979, 18994, 18996, 19012, 19028, 19044, 19060, 19078, 19095, 19111, 19127, 19142, 19155, 19168, 19191, 19204, 19217, 19244, 19255, 19266, 19277, 19303, 19327, 19340, 19353, 19372, 19385, 19398, 19405, 19411, 19416, 19422, 19425, 19434, 19439, 19445, 19449, 19451, 19453, 19454, 19456, 19488, 19511, 19524, 19537, 19560, 19582, 19595, 19608, 19628, 19649, 19662, 19675, 19696, 19709, 19722, 19742, 19769, 19792, 19816, 19839, 19866, 19881, 19908, 19939, 19962, 19989, 20016, 20039, 20063, 20086, 20113, 20128, 20155, 20182, 20207, 20234, 20261, 20288, 20315, 20342, 20369, 20392, 20428, 20451, 20478, 20493, 20520, 20547, 20574, 20601, 20624, 20655, 20682, 20705, 20732, 20755, 20782, 20809, 20832, 20859, 20886, 20909, 20912, 20915, 20918, 20921, 20926, 20931, 20936, 20939, 20945, 20951, 20957, 20963, 20969, 20978, 20987, 20996, 21007, 21017, 21023, 21029, 21037, 21044, 21050, 21056, 21064, 21071, 21077, 21083, 21091, 21098, 21112, 21126, 21140, 21154, 21155, 21169, 21183, 21197, 21211, 21212, 21226, 21240, 21254, 21268, 21269, 21283, 21297, 21311, 21325, 21326, 21340, 21354, 21368, 21382, 21383, 21397, 21411, 21425, 21439, 21440, 21457, 21472, 21476, 21477, 21481, 21482, 21486, 21487, 21490, 21492, 21494, 21498, 21500, 21502, 21504, 21508, 21510, 21512, 21514, 21518, 21520, 21534, 21548, 21549, 21563, 21577, 21591, 21605, 21620, 21635, 21650, 21667, 21683, 21698, 21713, 21727, 21741, 21758, 21774, 21789, 21804, 21806, 21819, 21835, 21851, 21867, 21885, 21902, 21918, 21934, 21949, 21966, 21982, 21997, 22012, 22014, 22030, 22046, 22062, 22078, 22096, 22113, 22129, 22145, 22160, 22177, 22193, 22208, 22223, 22225, 22241, 22257, 22273, 22289, 22307, 22324, 22340, 22356, 22371, 22388, 22404, 22419, 22434, 22436, 22452, 22468, 22484, 22500, 22518, 22535, 22551, 22567, 22582, 22599, 22615, 22630, 22645, 22647, 22663, 22679, 22695, 22711, 22729, 22746, 22762, 22778, 22793, 22794, 22811, 22827, 22842, 22857, 22859, 22875, 22891, 22907, 22923, 22941, 22958, 22974, 22990, 23005, 23029, 23053, 23077, 23101, 23125, 23149, 23173, 23195, 23215, 23235, 23255, 23276, 23297, 23318, 23339, 23360, 23383, 23406, 23429, 23451, 23489, 23515, 23528, 23541, 23566, 23579, 23592, 23617, 23642, 23655, 23668, 23691, 23717, 23743, 23756, 23769, 23795, 23821, 23834, 23847, 23871, 23884, 23897, 23921, 23934, 23947, 23971, 23997, 24010, 24023, 24049, 24079, 24105, 24132, 24159, 24186, 24213, 24247, 24273, 24303, 24333, 24359, 24386, 24413, 24440, 24467, 24497, 24525, 24555, 24585, 24615, 24645, 24675, 24705, 24731, 24770, 24797, 24824, 24851, 24882, 24913, 24944, 24971, 25006, 25037, 25064, 25095, 25122, 25153, 25184, 25211, 25242, 25273, 25300, 25327, 25351, 25378, 25402, 25429, 25453, 25477, 25501, 25527, 25552, 25576, 25600, 25626, 25651, 25675, 25699, 25725, 25750, 25774, 25798, 25824, 25849, 25856, 25867, 25878, 25885, 25905, 25925, 25933, 25939, 25959, 25980, 25993, 26006, 26016, 26026, 26036, 26046, 26052, 26062, 26072, 26082, 26092, 26102, 26112, 26122, 26128, 26148, 26169, 26190, 26211, 26232, 26253, 26274, 26295, 26316, 26335, 26340, 26346, 26364, 26393, 26418, 26439, 26452, 26465, 26483, 26496, 26509, 26516, 26522, 26527, 26533, 26536, 26547, 26552, 26560, 26564, 26566, 26568, 26569, 26573, 26578, 26583, 26588, 26593, 26600, 26607, 26614, 26619, 26625, 26631, 26637, 26643, 26649, 26660, 26671, 26682, 26695, 26707, 26713, 26719, 26727, 26734, 26740, 26746, 26754, 26761, 26767, 26773, 26781, 26788, 26802, 26816, 26830, 26844, 26845, 26859, 26873, 26887, 26901, 26902, 26916, 26930, 26944, 26958, 26959, 26973, 26987, 27001, 27015, 27016, 27030, 27044, 27058, 27072, 27073, 27087, 27101, 27115, 27129, 27130, 27147, 27162, 27166, 27167, 27171, 27172, 27176, 27177, 27182, 27184, 27186, 27190, 27192, 27194, 27196, 27200, 27202, 27204, 27206, 27210, 27212, 27226, 27240, 27241, 27255, 27269, 27283, 27297, 27312, 27327, 27342, 27359, 27375, 27390, 27405, 27419, 27433, 27450, 27466, 27481, 27496, 27498, 27511, 27527, 27543, 27559, 27577, 27594, 27610, 27626, 27641, 27658, 27674, 27689, 27704, 27706, 27722, 27738, 27754, 27770, 27788, 27805, 27821, 27837, 27852, 27869, 27885, 27900, 27915, 27917, 27933, 27949, 27965, 27981, 27999, 28016, 28032, 28048, 28063, 28080, 28096, 28111, 28126, 28128, 28144, 28160, 28176, 28192, 28210, 28227, 28243, 28259, 28274, 28291, 28307, 28322, 28337, 28339, 28355, 28371, 28387, 28403, 28421, 28438, 28454, 28470, 28485, 28486, 28503, 28519, 28534, 28549, 28551, 28567, 28583, 28599, 28615, 28633, 28650, 28666, 28682, 28697, 28710, 28723, 28747, 28760, 28773, 28797, 28810, 28823, 28851, 28876, 28905, 28930, 28951, 28964, 28977, 28995, 29008, 29021, 29028, 29034, 29039, 29045, 29048, 29060, 29065, 29074, 29078, 29080, 29082, 29083, 29088, 29094, 29100, 29106, 29112, 29120, 29128, 29136, 29142, 29148, 29154, 29160, 29166, 29172, 29184, 29196, 29208, 29222, 29235, 29241, 29247, 29255, 29262, 29268, 29274, 29282, 29289, 29295, 29301, 29309, 29316, 29330, 29344, 29358, 29372, 29373, 29387, 29401, 29415, 29429, 29430, 29444, 29458, 29472, 29486, 29487, 29501, 29515, 29529, 29543, 29544, 29558, 29572, 29586, 29600, 29601, 29615, 29629, 29643, 29657, 29658, 29675, 29690, 29694, 29695, 29699, 29700, 29704, 29705, 29711, 29713, 29715, 29719, 29721, 29723, 29725, 29729, 29731, 29733, 29735, 29739, 29741, 29755, 29769, 29770, 29784, 29798, 29812, 29826, 29841, 29856, 29871, 29888, 29904, 29919, 29934, 29948, 29962, 29979, 29995, 30010, 30025, 30027, 30040, 30056, 30072, 30088, 30106, 30123, 30139, 30155, 30170, 30187, 30203, 30218, 30233, 30235, 30251, 30267, 30283, 30299, 30317, 30334, 30350, 30366, 30381, 30398, 30414, 30429, 30444, 30446, 30462, 30478, 30494, 30510, 30528, 30545, 30561, 30577, 30592, 30609, 30625, 30640, 30655, 30657, 30673, 30689, 30705, 30721, 30739, 30756, 30772, 30788, 30803, 30820, 30836, 30851, 30866, 30868, 30884, 30900, 30916, 30932, 30950, 30967, 30983, 30999, 31014, 31015, 31032, 31048, 31063, 31078, 31080, 31096, 31112, 31128, 31144, 31162, 31179, 31195, 31211, 31226, 31239, 31252, 31276, 31289, 31302, 31330, 31352, 31374, 31396, 31419, 31440, 31453, 31466, 31484, 31497, 31510, 31517, 31523, 31528, 31534, 31537, 31548, 31553, 31561, 31565, 31567, 31569, 31570, 31574, 31579, 31584, 31589, 31594, 31601, 31608, 31615, 31620, 31626, 31632, 31638, 31644, 31650, 31661, 31672, 31683, 31696, 31708, 31714, 31720, 31728, 31735, 31741, 31747, 31755, 31762, 31768, 31774, 31782, 31789, 31803, 31817, 31831, 31845, 31846, 31860, 31874, 31888, 31902, 31903, 31917, 31931, 31945, 31959, 31960, 31974, 31988, 32002, 32016, 32017, 32031, 32045, 32059, 32073, 32074, 32088, 32102, 32116, 32130, 32131, 32148, 32163, 32167, 32168, 32172, 32173, 32177, 32178, 32183, 32185, 32187, 32191, 32193, 32195, 32197, 32201, 32203, 32205, 32207, 32211, 32213, 32227, 32241, 32242, 32256, 32270, 32284, 32298, 32313, 32328, 32343, 32360, 32376, 32391, 32406, 32420, 32434, 32451, 32467, 32482, 32497, 32499, 32512, 32528, 32544, 32560, 32578, 32595, 32611, 32627, 32642, 32659, 32675, 32690, 32705, 32707, 32723, 32739, 32755, 32771, 32789, 32806, 32822, 32838, 32853, 32870, 32886, 32901, 32916, 32918, 32934, 32950, 32966, 32982, 33000, 33017, 33033, 33049, 33064, 33081, 33097, 33112, 33127, 33129, 33145, 33161, 33177, 33193, 33211, 33228, 33244, 33260, 33275, 33292, 33308, 33323, 33338, 33340, 33356, 33372, 33388, 33404, 33422, 33439, 33455, 33471, 33486, 33487, 33504, 33520, 33535, 33550, 33552, 33568, 33584, 33600, 33616, 33634, 33651, 33667, 33683, 33698, 33719, 33740, 33761, 33782, 33807, 33828, 33853, 33874, 33893, 33912, 33931, 33953, 33975, 33997, 34019, 34041, 34065, 34089, 34113, 34136, 34160, 34181, 34205, 34226, 34250, 34275, 34300, 34325, 34352, 34378, 34399, 34420, 34443, 34465, 34486, 34507, 34530, 34552, 34573, 34594, 34617, 34639, 34657, 34679, 34701, 34719, 34739, 34762, 34781, 34786, 34795, 34813, 34844, 34871, 34895, 34908, 34921, 34940, 34953, 34966, 34973, 34979, 34984, 34990, 34993, 35005, 35010, 35019, 35023, 35025, 35027, 35028, 35033, 35039, 35045, 35051, 35057, 35065, 35073, 35081, 35087, 35093, 35099, 35105, 35111, 35117, 35129, 35141, 35153, 35167, 35180, 35186, 35192, 35200, 35207, 35213, 35219, 35227, 35234, 35240, 35246, 35254, 35261, 35275, 35289, 35303, 35317, 35318, 35332, 35346, 35360, 35374, 35375, 35389, 35403, 35417, 35431, 35432, 35446, 35460, 35474, 35488, 35489, 35503, 35517, 35531, 35545, 35546, 35560, 35574, 35588, 35602, 35603, 35620, 35635, 35639, 35640, 35644, 35645, 35649, 35650, 35656, 35658, 35660, 35664, 35666, 35668, 35670, 35674, 35676, 35678, 35680, 35684, 35686, 35700, 35714, 35715, 35729, 35743, 35757, 35771, 35786, 35801, 35816, 35833, 35849, 35864, 35879, 35893, 35907, 35924, 35940, 35955, 35970, 35972, 35985, 36001, 36017, 36033, 36051, 36068, 36084, 36100, 36115, 36132, 36148, 36163, 36178, 36180, 36196, 36212, 36228, 36244, 36262, 36279, 36295, 36311, 36326, 36343, 36359, 36374, 36389, 36391, 36407, 36423, 36439, 36455, 36473, 36490, 36506, 36522, 36537, 36554, 36570, 36585, 36600, 36602, 36618, 36634, 36650, 36666, 36684, 36701, 36717, 36733, 36748, 36765, 36781, 36796, 36811, 36813, 36829, 36845, 36861, 36877, 36895, 36912, 36928, 36944, 36959, 36960, 36977, 36993, 37008, 37023, 37025, 37041, 37057, 37073, 37089, 37107, 37124, 37140, 37156, 37171, 37184, 37197, 37223, 37236, 37249, 37275, 37288, 37301, 37328, 37355, 37385, 37415, 37447, 37474, 37503, 37532, 37562, 37590, 37618, 37648, 37678, 37711, 37739, 37768, 37797, 37824, 37855, 37882, 37906, 37919, 37932, 37951, 37964, 37977, 37984, 37990, 37995, 38001, 38004, 38017, 38022, 38032, 38036, 38038, 38040, 38041, 38047, 38054, 38061, 38068, 38075, 38084, 38093, 38102, 38109, 38115, 38121, 38127, 38133, 38139, 38152, 38165, 38178, 38193, 38207, 38213, 38219, 38227, 38234, 38240, 38246, 38254, 38261, 38267, 38273, 38281, 38288, 38302, 38316, 38330, 38344, 38345, 38359, 38373, 38387, 38401, 38402, 38416, 38430, 38444, 38458, 38459, 38473, 38487, 38501, 38515, 38516, 38530, 38544, 38558, 38572, 38573, 38587, 38601, 38615, 38629, 38630, 38647, 38662, 38666, 38667, 38671, 38672, 38676, 38677, 38684, 38686, 38688, 38692, 38694, 38696, 38698, 38702, 38704, 38706, 38708, 38712, 38714, 38728, 38742, 38743, 38757, 38771, 38785, 38799, 38814, 38829, 38844, 38861, 38877, 38892, 38907, 38921, 38935, 38952, 38968, 38983, 38998, 39000, 39013, 39029, 39045, 39061, 39079, 39096, 39112, 39128, 39143, 39160, 39176, 39191, 39206, 39208, 39224, 39240, 39256, 39272, 39290, 39307, 39323, 39339, 39354, 39371, 39387, 39402, 39417, 39419, 39435, 39451, 39467, 39483, 39501, 39518, 39534, 39550, 39565, 39582, 39598, 39613, 39628, 39630, 39646, 39662, 39678, 39694, 39712, 39729, 39745, 39761, 39776, 39793, 39809, 39824, 39839, 39841, 39857, 39873, 39889, 39905, 39923, 39940, 39956, 39972, 39987, 39988, 40005, 40021, 40036, 40051, 40053, 40069, 40085, 40101, 40117, 40135, 40152, 40168, 40184, 40199, 40212, 40225, 40251, 40264, 40277, 40307, 40335, 40363, 40393, 40423, 40456, 40484, 40513, 40542, 40564, 40586, 40608, 40634, 40658, 40671, 40684, 40703, 40716, 40729, 40736, 40742, 40747, 40753, 40756, 40768, 40773, 40782, 40786, 40788, 40790, 40791, 40796, 40832, 40859, 40889, 40919, 40950, 40976, 41005, 41034, 41068, 41102, 41136, 41170, 41192, 41226, 41260, 41294, 41328, 41350, 41384, 41418, 41452, 41486, 41508, 41542, 41576, 41610, 41644, 41666, 41700, 41734, 41768, 41802, 41824, 41858, 41892, 41926, 41960, 41982, 42019, 42053, 42078, 42100, 42125, 42147, 42172, 42194, 42219, 42241, 42263, 42287, 42310, 42332, 42354, 42378, 42401, 42423, 42445, 42469, 42492, 42526, 42560, 42582, 42616, 42650, 42684, 42718, 42752, 42786, 42820, 42856, 42891, 42925, 42959, 42993, 43027, 43064, 43098, 43132, 43166, 43188, 43222, 43256, 43290, 43324, 43360, 43395, 43429, 43463, 43497, 43534, 43568, 43602, 43636, 43658, 43695, 43729, 43763, 43797, 43833, 43868, 43902, 43936, 43970, 44007, 44041, 44075, 44109, 44131, 44168, 44202, 44236, 44270, 44306, 44341, 44375, 44409, 44443, 44480, 44514, 44548, 44582, 44604, 44641, 44675, 44709, 44743, 44779, 44814, 44848, 44882, 44916, 44953, 44987, 45021, 45055, 45077, 45114, 45148, 45182, 45216, 45252, 45287, 45321, 45355, 45389, 45411, 45448, 45482, 45516, 45550, 45572, 45609, 45643, 45677, 45711, 45747, 45782, 45816, 45850, 45884, 45915, 45942, 45973, 45999, 46029, 46047, 46077, 46112, 46139, 46170, 46201, 46228, 46259, 46285, 46315, 46333, 46363, 46394, 46423, 46454, 46485, 46516, 46547, 46578, 46609, 46636, 46679, 46705, 46735, 46753, 46783, 46813, 46843, 46873, 46899, 46933, 46963, 46989, 47019, 47045, 47075, 47105, 47131, 47161, 47191, 47217, 47223, 47229, 47235, 47241, 47249, 47257, 47265, 47271, 47277, 47283, 47289, 47295, 47301, 47313, 47325, 47337, 47351, 47364, 47370, 47376, 47384, 47391, 47397, 47403, 47411, 47418, 47424, 47430, 47438, 47445, 47459, 47473, 47487, 47501, 47502, 47516, 47530, 47544, 47558, 47559, 47573, 47587, 47601, 47615, 47616, 47630, 47644, 47658, 47672, 47673, 47687, 47701, 47715, 47729, 47730, 47744, 47758, 47772, 47786, 47787, 47804, 47819, 47823, 47824, 47828, 47829, 47833, 47834, 47840, 47842, 47844, 47848, 47850, 47852, 47854, 47858, 47860, 47862, 47864, 47868, 47870, 47884, 47898, 47899, 47913, 47927, 47941, 47955, 47970, 47985, 48000, 48017, 48033, 48048, 48063, 48077, 48091, 48108, 48124, 48139, 48154, 48156, 48169, 48185, 48201, 48217, 48235, 48252, 48268, 48284, 48299, 48316, 48332, 48347, 48362, 48364, 48380, 48396, 48412, 48428, 48446, 48463, 48479, 48495, 48510, 48527, 48543, 48558, 48573, 48575, 48591, 48607, 48623, 48639, 48657, 48674, 48690, 48706, 48721, 48738, 48754, 48769, 48784, 48786, 48802, 48818, 48834, 48850, 48868, 48885, 48901, 48917, 48932, 48949, 48965, 48980, 48995, 48997, 49013, 49029, 49045, 49061, 49079, 49096, 49112, 49128, 49143, 49144, 49161, 49177, 49192, 49207, 49209, 49225, 49241, 49257, 49273, 49291, 49308, 49324, 49340, 49355, 49379, 49403, 49427, 49451, 49478, 49502, 49529, 49551, 49571, 49591, 49611, 49635, 49659, 49683, 49707, 49731, 49757, 49783, 49809, 49834, 49876, 49906, 49936, 49966, 50000, 50030, 50059, 50088, 50122, 50152, 50186, 50216, 50246, 50276, 50314, 50344, 50378, 50412, 50442, 50476, 50506, 50536, 50566, 50600, 50632, 50666, 50700, 50734, 50768, 50802, 50836, 50866, 50912, 50942, 50972, 51002, 51036, 51070, 51104, 51134, 51172, 51206, 51236, 51270, 51300, 51334, 51368, 51398, 51432, 51466, 51496, 51523, 51547, 51574, 51598, 51625, 51652, 51679, 51706, 51735, 51763, 51787, 51811, 51837, 51862, 51886, 51910, 51936, 51961, 51985, 52009, 52035, 52060, 52078, 52100, 52122, 52140, 52160, 52183, 52203, 52221, 52249, 52274, 52303, 52332, 52365, 52398, 52431, 52464, 52485, 52518, 52551, 52584, 52617, 52638, 52671, 52704, 52737, 52770, 52791, 52824, 52857, 52890, 52923, 52944, 52977, 53010, 53043, 53076, 53097, 53130, 53163, 53196, 53229, 53250, 53286, 53319, 53343, 53364, 53388, 53409, 53433, 53454, 53478, 53499, 53520, 53543, 53565, 53586, 53607, 53630, 53652, 53673, 53694, 53717, 53739, 53772, 53805, 53826, 53859, 53892, 53925, 53958, 53991, 54024, 54057, 54092, 54126, 54159, 54192, 54225, 54258, 54294, 54327, 54360, 54393, 54414, 54447, 54480, 54513, 54546, 54581, 54615, 54648, 54681, 54714, 54750, 54783, 54816, 54849, 54870, 54906, 54939, 54972, 55005, 55040, 55074, 55107, 55140, 55173, 55209, 55242, 55275, 55308, 55329, 55365, 55398, 55431, 55464, 55499, 55533, 55566, 55599, 55632, 55668, 55701, 55734, 55767, 55788, 55824, 55857, 55890, 55923, 55958, 55992, 56025, 56058, 56091, 56127, 56160, 56193, 56226, 56247, 56283, 56316, 56349, 56382, 56417, 56451, 56484, 56517, 56550, 56571, 56607, 56640, 56673, 56706, 56727, 56763, 56796, 56829, 56862, 56897, 56931, 56964, 56997, 57030, 57052, 57074, 57096, 57118, 57136, 57158, 57180, 57202, 57224, 57246, 57268, 57290, 57308, 57336, 57361, 57386, 57411, 57436, 57461, 57486, 57511, 57536, 57555, 57560, 57569 }; static const char _sip_uri_parser_cond_lengths[] = { 0, 24, 4, 1, 2, 3, 8, 7, 29, 25, 24, 13, 13, 19, 13, 13, 7, 6, 5, 6, 3, 9, 5, 6, 4, 2, 2, 1, 2, 4, 1, 2, 4, 1, 2, 3, 16, 1, 2, 15, 18, 5, 1, 2, 4, 21, 1, 2, 20, 17, 4, 13, 1, 1, 1, 1, 1, 1, 2, 4, 3, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 17, 15, 4, 1, 4, 1, 4, 1, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 14, 14, 1, 14, 14, 14, 14, 15, 15, 15, 17, 16, 15, 15, 14, 14, 17, 16, 15, 15, 2, 13, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 1, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 24, 13, 13, 3, 3, 3, 3, 5, 5, 5, 3, 6, 6, 6, 6, 6, 9, 9, 9, 11, 10, 6, 6, 8, 7, 6, 6, 8, 7, 6, 6, 8, 7, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 17, 15, 4, 1, 4, 1, 4, 1, 3, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 14, 14, 1, 14, 14, 14, 14, 15, 15, 15, 17, 16, 15, 15, 14, 14, 17, 16, 15, 15, 2, 13, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 1, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 13, 13, 24, 13, 13, 28, 25, 29, 25, 24, 13, 13, 19, 13, 13, 7, 6, 5, 6, 3, 10, 5, 7, 4, 2, 2, 1, 3, 4, 4, 4, 4, 6, 6, 6, 4, 6, 6, 6, 6, 6, 10, 10, 10, 12, 11, 6, 6, 8, 7, 6, 6, 8, 7, 6, 6, 8, 7, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 17, 15, 4, 1, 4, 1, 4, 1, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 14, 14, 1, 14, 14, 14, 14, 15, 15, 15, 17, 16, 15, 15, 14, 14, 17, 16, 15, 15, 2, 13, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 1, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 13, 13, 24, 13, 13, 28, 11, 11, 11, 26, 24, 13, 13, 19, 13, 13, 7, 6, 5, 6, 3, 10, 5, 7, 4, 2, 2, 1, 3, 32, 24, 13, 13, 24, 23, 13, 13, 20, 21, 13, 13, 22, 13, 13, 20, 28, 24, 25, 24, 28, 16, 28, 32, 24, 28, 28, 24, 25, 24, 28, 16, 28, 28, 26, 28, 28, 28, 28, 28, 28, 24, 37, 24, 28, 16, 28, 28, 28, 28, 24, 32, 28, 24, 28, 24, 28, 28, 24, 28, 28, 24, 4, 4, 4, 4, 6, 6, 6, 4, 6, 6, 6, 6, 6, 10, 10, 10, 12, 11, 6, 6, 8, 7, 6, 6, 8, 7, 6, 6, 8, 7, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 17, 15, 4, 1, 4, 1, 4, 1, 4, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 14, 14, 1, 14, 14, 14, 14, 15, 15, 15, 17, 16, 15, 15, 14, 14, 17, 16, 15, 15, 2, 13, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 1, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 24, 24, 24, 24, 25, 24, 25, 22, 20, 20, 20, 22, 22, 22, 22, 22, 24, 24, 24, 23, 38, 27, 13, 13, 26, 13, 13, 26, 26, 13, 13, 23, 27, 27, 13, 13, 26, 26, 13, 13, 24, 13, 13, 25, 13, 13, 24, 27, 13, 13, 26, 31, 27, 28, 28, 28, 28, 35, 27, 31, 31, 27, 28, 28, 28, 28, 31, 29, 31, 31, 31, 31, 31, 31, 27, 40, 28, 28, 28, 32, 32, 32, 28, 36, 32, 28, 32, 28, 32, 32, 28, 32, 32, 28, 27, 24, 27, 24, 27, 25, 25, 25, 27, 26, 24, 24, 26, 25, 24, 24, 26, 25, 24, 24, 26, 25, 7, 11, 11, 7, 20, 21, 8, 7, 20, 22, 13, 13, 11, 11, 11, 11, 7, 11, 11, 11, 11, 11, 11, 11, 7, 20, 22, 22, 22, 22, 22, 22, 22, 22, 19, 5, 7, 17, 17, 1, 2, 16, 13, 1, 1, 1, 1, 1, 1, 2, 4, 3, 7, 28, 24, 24, 13, 13, 19, 13, 13, 7, 6, 5, 6, 3, 8, 5, 5, 4, 2, 2, 1, 1, 23, 13, 13, 2, 2, 2, 2, 4, 4, 4, 2, 6, 6, 6, 6, 6, 8, 8, 8, 10, 9, 6, 6, 8, 7, 6, 6, 8, 7, 6, 6, 8, 7, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 17, 15, 4, 1, 4, 1, 4, 1, 2, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 14, 14, 1, 14, 14, 14, 14, 15, 15, 15, 17, 16, 15, 15, 14, 14, 17, 16, 15, 15, 2, 13, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 1, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 13, 13, 23, 13, 13, 27, 24, 28, 24, 24, 13, 13, 19, 13, 13, 7, 6, 5, 6, 3, 9, 5, 6, 4, 2, 2, 1, 2, 3, 3, 3, 3, 5, 5, 5, 3, 6, 6, 6, 6, 6, 9, 9, 9, 11, 10, 6, 6, 8, 7, 6, 6, 8, 7, 6, 6, 8, 7, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 17, 15, 4, 1, 4, 1, 4, 1, 3, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 14, 14, 1, 14, 14, 14, 14, 15, 15, 15, 17, 16, 15, 15, 14, 14, 17, 16, 15, 15, 2, 13, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 1, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 13, 13, 23, 13, 13, 27, 11, 11, 11, 26, 24, 13, 13, 19, 13, 13, 7, 6, 5, 6, 3, 9, 5, 6, 4, 2, 2, 1, 2, 32, 23, 13, 13, 23, 22, 13, 13, 20, 21, 13, 13, 21, 13, 13, 20, 27, 23, 24, 23, 27, 15, 27, 31, 23, 27, 27, 23, 24, 23, 27, 15, 27, 27, 25, 27, 27, 27, 27, 27, 27, 23, 36, 23, 27, 15, 27, 27, 27, 27, 23, 31, 27, 23, 27, 23, 27, 27, 23, 27, 27, 23, 3, 3, 3, 3, 5, 5, 5, 3, 6, 6, 6, 6, 6, 9, 9, 9, 11, 10, 6, 6, 8, 7, 6, 6, 8, 7, 6, 6, 8, 7, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 17, 15, 4, 1, 4, 1, 4, 1, 3, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 14, 14, 1, 14, 14, 14, 14, 15, 15, 15, 17, 16, 15, 15, 14, 14, 17, 16, 15, 15, 2, 13, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 1, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 24, 24, 24, 24, 24, 24, 24, 22, 20, 20, 20, 21, 21, 21, 21, 21, 23, 23, 23, 22, 38, 26, 13, 13, 25, 13, 13, 25, 25, 13, 13, 23, 26, 26, 13, 13, 26, 26, 13, 13, 24, 13, 13, 24, 13, 13, 24, 26, 13, 13, 26, 30, 26, 27, 27, 27, 27, 34, 26, 30, 30, 26, 27, 27, 27, 27, 30, 28, 30, 30, 30, 30, 30, 30, 26, 39, 27, 27, 27, 31, 31, 31, 27, 35, 31, 27, 31, 27, 31, 31, 27, 31, 31, 27, 27, 24, 27, 24, 27, 24, 24, 24, 26, 25, 24, 24, 26, 25, 24, 24, 26, 25, 24, 24, 26, 25, 7, 11, 11, 7, 20, 20, 8, 6, 20, 21, 13, 13, 10, 10, 10, 10, 6, 10, 10, 10, 10, 10, 10, 10, 6, 20, 21, 21, 21, 21, 21, 21, 21, 21, 19, 5, 6, 18, 29, 25, 21, 13, 13, 18, 13, 13, 7, 6, 5, 6, 3, 11, 5, 8, 4, 2, 2, 1, 4, 5, 5, 5, 5, 7, 7, 7, 5, 6, 6, 6, 6, 6, 11, 11, 11, 13, 12, 6, 6, 8, 7, 6, 6, 8, 7, 6, 6, 8, 7, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 17, 15, 4, 1, 4, 1, 4, 1, 5, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 14, 14, 1, 14, 14, 14, 14, 15, 15, 15, 17, 16, 15, 15, 14, 14, 17, 16, 15, 15, 2, 13, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 1, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 13, 13, 24, 13, 13, 24, 13, 13, 28, 25, 29, 25, 21, 13, 13, 18, 13, 13, 7, 6, 5, 6, 3, 12, 5, 9, 4, 2, 2, 1, 5, 6, 6, 6, 6, 8, 8, 8, 6, 6, 6, 6, 6, 6, 12, 12, 12, 14, 13, 6, 6, 8, 7, 6, 6, 8, 7, 6, 6, 8, 7, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 17, 15, 4, 1, 4, 1, 4, 1, 6, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 14, 14, 1, 14, 14, 14, 14, 15, 15, 15, 17, 16, 15, 15, 14, 14, 17, 16, 15, 15, 2, 13, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 1, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 13, 13, 24, 13, 13, 28, 22, 22, 22, 23, 21, 13, 13, 18, 13, 13, 7, 6, 5, 6, 3, 11, 5, 8, 4, 2, 2, 1, 4, 5, 5, 5, 5, 7, 7, 7, 5, 6, 6, 6, 6, 6, 11, 11, 11, 13, 12, 6, 6, 8, 7, 6, 6, 8, 7, 6, 6, 8, 7, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 17, 15, 4, 1, 4, 1, 4, 1, 5, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 14, 14, 1, 14, 14, 14, 14, 15, 15, 15, 17, 16, 15, 15, 14, 14, 17, 16, 15, 15, 2, 13, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 1, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 21, 21, 21, 21, 25, 21, 25, 21, 19, 19, 19, 22, 22, 22, 22, 22, 24, 24, 24, 23, 24, 21, 24, 21, 24, 25, 25, 25, 27, 26, 21, 21, 23, 22, 21, 21, 23, 22, 21, 21, 23, 22, 18, 22, 22, 18, 20, 23, 19, 5, 9, 18, 31, 27, 24, 13, 13, 19, 13, 13, 7, 6, 5, 6, 3, 12, 5, 9, 4, 2, 2, 1, 5, 6, 6, 6, 6, 8, 8, 8, 6, 6, 6, 6, 6, 6, 12, 12, 12, 14, 13, 6, 6, 8, 7, 6, 6, 8, 7, 6, 6, 8, 7, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 17, 15, 4, 1, 4, 1, 4, 1, 6, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 14, 14, 1, 14, 14, 14, 14, 15, 15, 15, 17, 16, 15, 15, 14, 14, 17, 16, 15, 15, 2, 13, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 1, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 13, 13, 26, 13, 13, 26, 13, 13, 27, 27, 30, 30, 32, 27, 29, 29, 30, 28, 28, 30, 30, 33, 28, 29, 29, 27, 31, 27, 24, 13, 13, 19, 13, 13, 7, 6, 5, 6, 3, 13, 5, 10, 4, 2, 2, 1, 6, 7, 7, 7, 7, 9, 9, 9, 7, 6, 6, 6, 6, 6, 13, 13, 13, 15, 14, 6, 6, 8, 7, 6, 6, 8, 7, 6, 6, 8, 7, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 17, 15, 4, 1, 4, 1, 4, 1, 7, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 14, 14, 1, 14, 14, 14, 14, 15, 15, 15, 17, 16, 15, 15, 14, 14, 17, 16, 15, 15, 2, 13, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 1, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 13, 13, 26, 13, 13, 30, 28, 28, 30, 30, 33, 28, 29, 29, 22, 22, 22, 26, 24, 13, 13, 19, 13, 13, 7, 6, 5, 6, 3, 12, 5, 9, 4, 2, 2, 1, 5, 36, 27, 30, 30, 31, 26, 29, 29, 34, 34, 34, 34, 22, 34, 34, 34, 34, 22, 34, 34, 34, 34, 22, 34, 34, 34, 34, 22, 34, 34, 34, 34, 22, 34, 34, 34, 34, 22, 37, 34, 25, 22, 25, 22, 25, 22, 25, 22, 22, 24, 23, 22, 22, 24, 23, 22, 22, 24, 23, 34, 34, 22, 34, 34, 34, 34, 34, 34, 34, 36, 35, 34, 34, 34, 34, 37, 34, 34, 34, 22, 34, 34, 34, 34, 36, 35, 34, 34, 34, 37, 34, 34, 34, 22, 37, 34, 34, 34, 36, 35, 34, 34, 34, 37, 34, 34, 34, 22, 37, 34, 34, 34, 36, 35, 34, 34, 34, 37, 34, 34, 34, 22, 37, 34, 34, 34, 36, 35, 34, 34, 34, 37, 34, 34, 34, 22, 37, 34, 34, 34, 36, 35, 34, 34, 34, 22, 37, 34, 34, 34, 22, 37, 34, 34, 34, 36, 35, 34, 34, 34, 31, 27, 31, 26, 30, 18, 30, 35, 27, 31, 31, 27, 31, 26, 30, 18, 30, 31, 29, 31, 31, 31, 31, 31, 31, 27, 43, 26, 30, 18, 30, 30, 30, 30, 26, 34, 30, 26, 30, 26, 30, 30, 26, 30, 30, 26, 6, 6, 6, 6, 8, 8, 8, 6, 6, 6, 6, 6, 6, 12, 12, 12, 14, 13, 6, 6, 8, 7, 6, 6, 8, 7, 6, 6, 8, 7, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 14, 14, 14, 14, 1, 17, 15, 4, 1, 4, 1, 4, 1, 6, 2, 2, 4, 2, 2, 2, 4, 2, 2, 2, 4, 2, 14, 14, 1, 14, 14, 14, 14, 15, 15, 15, 17, 16, 15, 15, 14, 14, 17, 16, 15, 15, 2, 13, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 1, 17, 16, 15, 15, 2, 16, 16, 16, 16, 18, 17, 16, 16, 15, 24, 24, 24, 24, 27, 24, 27, 22, 20, 20, 20, 24, 24, 24, 24, 24, 26, 26, 26, 25, 42, 30, 30, 30, 34, 30, 29, 29, 34, 30, 34, 30, 30, 30, 38, 30, 34, 34, 30, 34, 30, 30, 30, 34, 32, 34, 34, 34, 34, 34, 34, 30, 46, 30, 30, 30, 34, 34, 34, 30, 38, 34, 30, 34, 30, 34, 34, 30, 34, 34, 30, 27, 24, 27, 24, 27, 27, 27, 27, 29, 28, 24, 24, 26, 25, 24, 24, 26, 25, 24, 24, 26, 25, 18, 22, 22, 18, 20, 23, 20, 18, 28, 25, 29, 29, 33, 33, 33, 33, 21, 33, 33, 33, 33, 21, 33, 33, 33, 33, 21, 33, 33, 33, 33, 21, 33, 33, 33, 33, 21, 33, 33, 33, 33, 21, 36, 33, 24, 21, 24, 21, 24, 21, 24, 21, 21, 23, 22, 21, 21, 23, 22, 21, 21, 23, 22, 33, 33, 21, 33, 33, 33, 33, 33, 33, 33, 35, 34, 33, 33, 33, 33, 36, 33, 33, 33, 21, 33, 33, 33, 33, 35, 34, 33, 33, 33, 36, 33, 33, 33, 21, 36, 33, 33, 33, 35, 34, 33, 33, 33, 36, 33, 33, 33, 21, 36, 33, 33, 33, 35, 34, 33, 33, 33, 36, 33, 33, 33, 21, 36, 33, 33, 33, 35, 34, 33, 33, 33, 36, 33, 33, 33, 21, 36, 33, 33, 33, 35, 34, 33, 33, 33, 21, 36, 33, 33, 33, 21, 36, 33, 33, 33, 35, 34, 33, 33, 33, 22, 22, 22, 22, 18, 22, 22, 22, 22, 22, 22, 22, 18, 28, 25, 25, 25, 25, 25, 25, 25, 25, 19, 5, 9, 0 }; static const short _sip_uri_parser_cond_keys[] = { 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 60, 60, 65, 82, 83, 83, 84, 84, 85, 90, 95, 95, 96, 96, 97, 114, 115, 115, 116, 116, 117, 122, 126, 126, 9, 9, 13, 13, 32, 32, 60, 60, 10, 10, 9, 9, 32, 32, 9, 9, 32, 32, 60, 60, 65, 82, 83, 83, 84, 84, 85, 90, 97, 114, 115, 115, 116, 116, 117, 122, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 90, 97, 122, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 91, 91, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 62, 62, 63, 63, 65, 90, 97, 122, 48, 48, 49, 53, 54, 54, 55, 57, 48, 48, 49, 57, 48, 48, 49, 57, 49, 57, 62, 62, 63, 63, 9, 9, 13, 13, 32, 32, 59, 59, 10, 10, 9, 9, 32, 32, 9, 9, 13, 13, 32, 32, 59, 59, 10, 10, 9, 9, 32, 32, 9, 9, 32, 32, 59, 59, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 10, 10, 9, 9, 32, 32, 9, 9, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 59, 59, 61, 61, 10, 10, 9, 9, 32, 32, 9, 9, 32, 32, 59, 59, 61, 61, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 91, 91, 95, 95, 96, 96, 97, 122, 126, 126, 10, 10, 9, 9, 32, 32, 9, 9, 32, 32, 33, 33, 34, 34, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 91, 91, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 59, 59, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 35, 91, 92, 92, 93, 126, -128, -65, -128, -65, -128, -65, -128, -65, -128, -65, 10, 10, 9, 9, 32, 32, 9, 9, 13, 13, 32, 32, 59, 59, 0, 9, 11, 12, 14, 127, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 93, 93, 48, 57, 93, 93, 48, 57, 93, 93, 48, 52, 53, 53, 54, 57, 93, 93, 48, 53, 93, 93, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 62, 62, 63, 63, 48, 57, 62, 62, 63, 63, 48, 57, 62, 62, 63, 63, 48, 57, 62, 62, 63, 63, 48, 52, 53, 53, 54, 57, 62, 62, 63, 63, 48, 52, 53, 53, 54, 57, 62, 62, 63, 63, 48, 50, 51, 51, 52, 57, 62, 62, 63, 63, 48, 53, 62, 62, 63, 63, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 58, 58, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 93, 93, 58, 58, 62, 62, 63, 63, 48, 57, 93, 93, 48, 57, 93, 93, 48, 52, 53, 53, 54, 57, 93, 93, 48, 53, 93, 93, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 91, 91, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 65, 90, 97, 122, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 47, 47, 48, 57, 58, 58, 62, 62, 63, 63, 65, 90, 97, 122, 48, 48, 49, 53, 54, 54, 55, 57, 48, 48, 49, 57, 48, 48, 49, 57, 49, 57, 47, 47, 62, 62, 63, 63, 47, 47, 48, 57, 62, 62, 63, 63, 47, 47, 48, 57, 62, 62, 63, 63, 47, 47, 48, 57, 62, 62, 63, 63, 47, 47, 48, 57, 62, 62, 63, 63, 47, 47, 48, 52, 53, 53, 54, 57, 62, 62, 63, 63, 47, 47, 48, 52, 53, 53, 54, 57, 62, 62, 63, 63, 47, 47, 48, 50, 51, 51, 52, 57, 62, 62, 63, 63, 47, 47, 48, 53, 62, 62, 63, 63, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 93, 93, 47, 47, 58, 58, 62, 62, 63, 63, 48, 57, 93, 93, 48, 57, 93, 93, 48, 52, 53, 53, 54, 57, 93, 93, 48, 53, 93, 93, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 72, 73, 73, 74, 90, 97, 104, 105, 105, 106, 122, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 79, 80, 80, 81, 90, 97, 111, 112, 112, 113, 122, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 82, 83, 83, 84, 90, 97, 114, 115, 115, 116, 122, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 91, 91, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 97, 122, 48, 48, 49, 53, 54, 54, 55, 57, 48, 48, 49, 57, 48, 48, 49, 57, 49, 57, 59, 59, 62, 62, 63, 63, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 65, 75, 76, 76, 77, 78, 79, 79, 80, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 97, 107, 108, 108, 109, 110, 111, 111, 112, 115, 116, 116, 117, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 97, 113, 114, 114, 115, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 63, 63, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 65, 66, 66, 67, 85, 86, 86, 87, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 117, 118, 118, 119, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 72, 73, 73, 74, 90, 91, 91, 93, 93, 95, 95, 97, 104, 105, 105, 106, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 67, 68, 68, 69, 90, 91, 91, 93, 93, 95, 95, 97, 99, 100, 100, 101, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 63, 63, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 97, 113, 114, 114, 115, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 65, 66, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 77, 78, 78, 79, 90, 91, 91, 93, 93, 95, 95, 97, 109, 110, 110, 111, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 78, 79, 79, 80, 90, 91, 91, 93, 93, 95, 95, 97, 110, 111, 111, 112, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 97, 113, 114, 114, 115, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 97, 115, 116, 116, 117, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 65, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119, 119, 120, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 63, 63, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 66, 67, 67, 68, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 98, 99, 99, 100, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 115, 116, 116, 117, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 66, 67, 67, 68, 75, 76, 76, 77, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 98, 99, 99, 100, 107, 108, 108, 109, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 67, 68, 68, 69, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 99, 100, 100, 101, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 48, 57, 59, 59, 62, 62, 63, 63, 48, 57, 59, 59, 62, 62, 63, 63, 48, 57, 59, 59, 62, 62, 63, 63, 48, 57, 59, 59, 62, 62, 63, 63, 48, 52, 53, 53, 54, 57, 59, 59, 62, 62, 63, 63, 48, 52, 53, 53, 54, 57, 59, 59, 62, 62, 63, 63, 48, 50, 51, 51, 52, 57, 59, 59, 62, 62, 63, 63, 48, 53, 59, 59, 62, 62, 63, 63, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 58, 58, 59, 59, 62, 62, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 93, 93, 58, 58, 59, 59, 62, 62, 63, 63, 48, 57, 93, 93, 48, 57, 93, 93, 48, 52, 53, 53, 54, 57, 93, 93, 48, 53, 93, 93, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 48, 49, 53, 54, 54, 55, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 48, 49, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 48, 49, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 48, 49, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 50, 51, 51, 52, 57, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 53, 54, 57, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 75, 76, 76, 77, 78, 79, 79, 80, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 97, 107, 108, 108, 109, 110, 111, 111, 112, 115, 116, 116, 117, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 97, 113, 114, 114, 115, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 66, 66, 67, 85, 86, 86, 87, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 117, 118, 118, 119, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 72, 73, 73, 74, 90, 91, 91, 93, 93, 95, 95, 97, 104, 105, 105, 106, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 67, 68, 68, 69, 90, 91, 91, 93, 93, 95, 95, 97, 99, 100, 100, 101, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 97, 113, 114, 114, 115, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 65, 66, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 77, 78, 78, 79, 90, 91, 91, 93, 93, 95, 95, 97, 109, 110, 110, 111, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 78, 79, 79, 80, 90, 91, 91, 93, 93, 95, 95, 97, 110, 111, 111, 112, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 97, 113, 114, 114, 115, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 97, 115, 116, 116, 117, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119, 119, 120, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 66, 67, 67, 68, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 98, 99, 99, 100, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 115, 116, 116, 117, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 66, 67, 67, 68, 75, 76, 76, 77, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 98, 99, 99, 100, 107, 108, 108, 109, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 67, 68, 68, 69, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 99, 100, 100, 101, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 61, 61, 62, 62, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 90, 97, 122, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 68, 69, 69, 70, 90, 97, 100, 101, 101, 102, 122, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 75, 76, 76, 77, 90, 97, 107, 108, 108, 109, 122, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 90, 97, 122, 35, 35, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 35, 35, 40, 40, 41, 41, 42, 42, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 45, 45, 48, 57, 65, 79, 80, 80, 81, 90, 97, 111, 112, 112, 113, 122, 45, 45, 48, 57, 59, 59, 61, 61, 62, 62, 65, 90, 97, 122, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 45, 45, 48, 57, 59, 59, 61, 61, 62, 62, 65, 71, 72, 72, 73, 90, 97, 103, 104, 104, 105, 122, 45, 45, 48, 57, 59, 59, 61, 61, 62, 62, 65, 78, 79, 79, 80, 90, 97, 110, 111, 111, 112, 122, 45, 45, 48, 57, 59, 59, 61, 61, 62, 62, 65, 77, 78, 78, 79, 90, 97, 109, 110, 110, 111, 122, 45, 45, 48, 57, 59, 59, 61, 61, 62, 62, 65, 68, 69, 69, 70, 90, 97, 100, 101, 101, 102, 122, 45, 45, 48, 57, 59, 59, 61, 61, 62, 62, 65, 90, 97, 122, 45, 45, 48, 57, 59, 59, 61, 61, 62, 62, 65, 66, 67, 67, 68, 90, 97, 98, 99, 99, 100, 122, 45, 45, 48, 57, 59, 59, 61, 61, 62, 62, 65, 78, 79, 79, 80, 90, 97, 110, 111, 111, 112, 122, 45, 45, 48, 57, 59, 59, 61, 61, 62, 62, 65, 77, 78, 78, 79, 90, 97, 109, 110, 110, 111, 122, 45, 45, 48, 57, 59, 59, 61, 61, 62, 62, 65, 83, 84, 84, 85, 90, 97, 115, 116, 116, 117, 122, 45, 45, 48, 57, 59, 59, 61, 61, 62, 62, 65, 68, 69, 69, 70, 90, 97, 100, 101, 101, 102, 122, 45, 45, 48, 57, 59, 59, 61, 61, 62, 62, 65, 87, 88, 88, 89, 90, 97, 119, 120, 120, 121, 122, 45, 45, 48, 57, 59, 59, 61, 61, 62, 62, 65, 83, 84, 84, 85, 90, 97, 115, 116, 116, 117, 122, 45, 45, 48, 57, 59, 59, 61, 61, 62, 62, 65, 90, 97, 122, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 62, 62, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 35, 35, 40, 40, 41, 41, 42, 42, 45, 45, 46, 46, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 40, 40, 41, 41, 45, 45, 46, 46, 48, 57, 40, 40, 41, 41, 45, 45, 46, 46, 48, 57, 59, 59, 62, 62, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 60, 60, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 60, 60, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 10, 10, 9, 9, 32, 32, 9, 9, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 60, 60, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, -64, -33, -32, -17, -16, -9, -8, -5, -4, -3, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 35, 91, 92, 92, 93, 126, -128, -65, -128, -65, -128, -65, -128, -65, -128, -65, 10, 10, 9, 9, 32, 32, 9, 9, 13, 13, 32, 32, 60, 60, 0, 9, 11, 12, 14, 127, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 90, 97, 122, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 91, 91, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 63, 63, 65, 90, 97, 122, 48, 48, 49, 53, 54, 54, 55, 57, 48, 48, 49, 57, 48, 48, 49, 57, 49, 57, 63, 63, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 63, 63, 48, 57, 63, 63, 48, 57, 63, 63, 48, 57, 63, 63, 48, 52, 53, 53, 54, 57, 63, 63, 48, 52, 53, 53, 54, 57, 63, 63, 48, 50, 51, 51, 52, 57, 63, 63, 48, 53, 63, 63, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 58, 58, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 93, 93, 58, 58, 63, 63, 48, 57, 93, 93, 48, 57, 93, 93, 48, 52, 53, 53, 54, 57, 93, 93, 48, 53, 93, 93, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 91, 91, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 65, 90, 97, 122, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 47, 47, 48, 57, 58, 58, 63, 63, 65, 90, 97, 122, 48, 48, 49, 53, 54, 54, 55, 57, 48, 48, 49, 57, 48, 48, 49, 57, 49, 57, 47, 47, 63, 63, 47, 47, 48, 57, 63, 63, 47, 47, 48, 57, 63, 63, 47, 47, 48, 57, 63, 63, 47, 47, 48, 57, 63, 63, 47, 47, 48, 52, 53, 53, 54, 57, 63, 63, 47, 47, 48, 52, 53, 53, 54, 57, 63, 63, 47, 47, 48, 50, 51, 51, 52, 57, 63, 63, 47, 47, 48, 53, 63, 63, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 93, 93, 47, 47, 58, 58, 63, 63, 48, 57, 93, 93, 48, 57, 93, 93, 48, 52, 53, 53, 54, 57, 93, 93, 48, 53, 93, 93, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 72, 73, 73, 74, 90, 97, 104, 105, 105, 106, 122, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 79, 80, 80, 81, 90, 97, 111, 112, 112, 113, 122, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 82, 83, 83, 84, 90, 97, 114, 115, 115, 116, 122, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 91, 91, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 97, 122, 48, 48, 49, 53, 54, 54, 55, 57, 48, 48, 49, 57, 48, 48, 49, 57, 49, 57, 59, 59, 63, 63, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 65, 75, 76, 76, 77, 78, 79, 79, 80, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 97, 107, 108, 108, 109, 110, 111, 111, 112, 115, 116, 116, 117, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 97, 113, 114, 114, 115, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 65, 66, 66, 67, 85, 86, 86, 87, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 117, 118, 118, 119, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 72, 73, 73, 74, 90, 91, 91, 93, 93, 95, 95, 97, 104, 105, 105, 106, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 67, 68, 68, 69, 90, 91, 91, 93, 93, 95, 95, 97, 99, 100, 100, 101, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 97, 113, 114, 114, 115, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 65, 66, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 77, 78, 78, 79, 90, 91, 91, 93, 93, 95, 95, 97, 109, 110, 110, 111, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 78, 79, 79, 80, 90, 91, 91, 93, 93, 95, 95, 97, 110, 111, 111, 112, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 97, 113, 114, 114, 115, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 97, 115, 116, 116, 117, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119, 119, 120, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 66, 67, 67, 68, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 98, 99, 99, 100, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 115, 116, 116, 117, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 66, 67, 67, 68, 75, 76, 76, 77, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 98, 99, 99, 100, 107, 108, 108, 109, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 67, 68, 68, 69, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 99, 100, 100, 101, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 48, 57, 59, 59, 63, 63, 48, 57, 59, 59, 63, 63, 48, 57, 59, 59, 63, 63, 48, 57, 59, 59, 63, 63, 48, 52, 53, 53, 54, 57, 59, 59, 63, 63, 48, 52, 53, 53, 54, 57, 59, 59, 63, 63, 48, 50, 51, 51, 52, 57, 59, 59, 63, 63, 48, 53, 59, 59, 63, 63, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 93, 93, 58, 58, 59, 59, 63, 63, 48, 57, 93, 93, 48, 57, 93, 93, 48, 52, 53, 53, 54, 57, 93, 93, 48, 53, 93, 93, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 48, 49, 53, 54, 54, 55, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 48, 49, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 48, 49, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 48, 49, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 50, 51, 51, 52, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 53, 54, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 75, 76, 76, 77, 78, 79, 79, 80, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 97, 107, 108, 108, 109, 110, 111, 111, 112, 115, 116, 116, 117, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 97, 113, 114, 114, 115, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 65, 66, 66, 67, 85, 86, 86, 87, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 117, 118, 118, 119, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 72, 73, 73, 74, 90, 91, 91, 93, 93, 95, 95, 97, 104, 105, 105, 106, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 67, 68, 68, 69, 90, 91, 91, 93, 93, 95, 95, 97, 99, 100, 100, 101, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 97, 113, 114, 114, 115, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 65, 66, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 77, 78, 78, 79, 90, 91, 91, 93, 93, 95, 95, 97, 109, 110, 110, 111, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 78, 79, 79, 80, 90, 91, 91, 93, 93, 95, 95, 97, 110, 111, 111, 112, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 97, 113, 114, 114, 115, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 97, 115, 116, 116, 117, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119, 119, 120, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 66, 67, 67, 68, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 98, 99, 99, 100, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 115, 116, 116, 117, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 66, 67, 67, 68, 75, 76, 76, 77, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 98, 99, 99, 100, 107, 108, 108, 109, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 67, 68, 68, 69, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 99, 100, 100, 101, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 90, 97, 122, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 68, 69, 69, 70, 90, 97, 100, 101, 101, 102, 122, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 75, 76, 76, 77, 90, 97, 107, 108, 108, 109, 122, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 65, 90, 97, 122, 35, 35, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 35, 35, 40, 40, 41, 41, 42, 42, 45, 45, 46, 46, 48, 57, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 45, 45, 48, 57, 65, 79, 80, 80, 81, 90, 97, 111, 112, 112, 113, 122, 45, 45, 48, 57, 59, 59, 61, 61, 65, 90, 97, 122, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 45, 45, 48, 57, 59, 59, 61, 61, 65, 71, 72, 72, 73, 90, 97, 103, 104, 104, 105, 122, 45, 45, 48, 57, 59, 59, 61, 61, 65, 78, 79, 79, 80, 90, 97, 110, 111, 111, 112, 122, 45, 45, 48, 57, 59, 59, 61, 61, 65, 77, 78, 78, 79, 90, 97, 109, 110, 110, 111, 122, 45, 45, 48, 57, 59, 59, 61, 61, 65, 68, 69, 69, 70, 90, 97, 100, 101, 101, 102, 122, 45, 45, 48, 57, 59, 59, 61, 61, 65, 90, 97, 122, 45, 45, 48, 57, 59, 59, 61, 61, 65, 66, 67, 67, 68, 90, 97, 98, 99, 99, 100, 122, 45, 45, 48, 57, 59, 59, 61, 61, 65, 78, 79, 79, 80, 90, 97, 110, 111, 111, 112, 122, 45, 45, 48, 57, 59, 59, 61, 61, 65, 77, 78, 78, 79, 90, 97, 109, 110, 110, 111, 122, 45, 45, 48, 57, 59, 59, 61, 61, 65, 83, 84, 84, 85, 90, 97, 115, 116, 116, 117, 122, 45, 45, 48, 57, 59, 59, 61, 61, 65, 68, 69, 69, 70, 90, 97, 100, 101, 101, 102, 122, 45, 45, 48, 57, 59, 59, 61, 61, 65, 87, 88, 88, 89, 90, 97, 119, 120, 120, 121, 122, 45, 45, 48, 57, 59, 59, 61, 61, 65, 83, 84, 84, 85, 90, 97, 115, 116, 116, 117, 122, 45, 45, 48, 57, 59, 59, 61, 61, 65, 90, 97, 122, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 35, 35, 40, 40, 41, 41, 42, 42, 45, 45, 46, 46, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 40, 40, 41, 41, 45, 45, 46, 46, 48, 57, 40, 40, 41, 41, 45, 45, 46, 46, 48, 57, 59, 59, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 91, 91, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 65, 90, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 48, 57, 58, 58, 59, 59, 65, 90, 97, 122, 48, 48, 49, 53, 54, 54, 55, 57, 48, 48, 49, 57, 48, 48, 49, 57, 49, 57, 9, 9, 13, 13, 32, 32, 59, 59, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 9, 9, 13, 13, 32, 32, 48, 52, 53, 53, 54, 57, 59, 59, 9, 9, 13, 13, 32, 32, 48, 52, 53, 53, 54, 57, 59, 59, 9, 9, 13, 13, 32, 32, 48, 50, 51, 51, 52, 57, 59, 59, 9, 9, 13, 13, 32, 32, 48, 53, 59, 59, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 53, 54, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 93, 93, 9, 9, 13, 13, 32, 32, 58, 58, 59, 59, 48, 57, 93, 93, 48, 57, 93, 93, 48, 52, 53, 53, 54, 57, 93, 93, 48, 53, 93, 93, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 91, 91, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 65, 90, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 97, 122, 48, 48, 49, 53, 54, 54, 55, 57, 48, 48, 49, 57, 48, 48, 49, 57, 49, 57, 9, 9, 13, 13, 32, 32, 47, 47, 59, 59, 9, 9, 13, 13, 32, 32, 47, 47, 48, 57, 59, 59, 9, 9, 13, 13, 32, 32, 47, 47, 48, 57, 59, 59, 9, 9, 13, 13, 32, 32, 47, 47, 48, 57, 59, 59, 9, 9, 13, 13, 32, 32, 47, 47, 48, 57, 59, 59, 9, 9, 13, 13, 32, 32, 47, 47, 48, 52, 53, 53, 54, 57, 59, 59, 9, 9, 13, 13, 32, 32, 47, 47, 48, 52, 53, 53, 54, 57, 59, 59, 9, 9, 13, 13, 32, 32, 47, 47, 48, 50, 51, 51, 52, 57, 59, 59, 9, 9, 13, 13, 32, 32, 47, 47, 48, 53, 59, 59, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 93, 93, 9, 9, 13, 13, 32, 32, 47, 47, 58, 58, 59, 59, 48, 57, 93, 93, 48, 57, 93, 93, 48, 52, 53, 53, 54, 57, 93, 93, 48, 53, 93, 93, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 72, 73, 73, 74, 90, 95, 95, 96, 96, 97, 104, 105, 105, 106, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 79, 80, 80, 81, 90, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 82, 83, 83, 84, 90, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 61, 61, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 91, 91, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 65, 90, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 48, 57, 58, 58, 59, 59, 65, 90, 97, 122, 48, 48, 49, 53, 54, 54, 55, 57, 48, 48, 49, 57, 48, 48, 49, 57, 49, 57, 9, 9, 13, 13, 32, 32, 59, 59, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 9, 9, 13, 13, 32, 32, 48, 52, 53, 53, 54, 57, 59, 59, 9, 9, 13, 13, 32, 32, 48, 52, 53, 53, 54, 57, 59, 59, 9, 9, 13, 13, 32, 32, 48, 50, 51, 51, 52, 57, 59, 59, 9, 9, 13, 13, 32, 32, 48, 53, 59, 59, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 53, 54, 57, 58, 58, 59, 59, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 93, 93, 9, 9, 13, 13, 32, 32, 58, 58, 59, 59, 48, 57, 93, 93, 48, 57, 93, 93, 48, 52, 53, 53, 54, 57, 93, 93, 48, 53, 93, 93, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 48, 49, 53, 54, 54, 55, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 48, 49, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 48, 49, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 48, 49, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 50, 51, 51, 52, 57, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 53, 54, 57, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 68, 69, 69, 70, 90, 95, 95, 96, 96, 97, 100, 101, 101, 102, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 75, 76, 76, 77, 90, 95, 95, 96, 96, 97, 107, 108, 108, 109, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 35, 35, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 9, 9, 13, 13, 32, 32, 35, 35, 40, 40, 41, 41, 42, 42, 45, 45, 46, 46, 48, 57, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 35, 35, 40, 40, 41, 41, 42, 42, 45, 45, 46, 46, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 40, 40, 41, 41, 45, 45, 46, 46, 48, 57, 9, 9, 13, 13, 32, 32, 40, 40, 41, 41, 45, 45, 46, 46, 48, 57, 59, 59, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 91, 91, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 65, 90, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 97, 122, 48, 48, 49, 53, 54, 54, 55, 57, 48, 48, 49, 57, 48, 48, 49, 57, 49, 57, 9, 9, 13, 13, 32, 32, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 48, 52, 53, 53, 54, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 48, 52, 53, 53, 54, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 48, 50, 51, 51, 52, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 48, 53, 59, 59, 63, 63, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 93, 93, 9, 9, 13, 13, 32, 32, 58, 58, 59, 59, 63, 63, 48, 57, 93, 93, 48, 57, 93, 93, 48, 52, 53, 53, 54, 57, 93, 93, 48, 53, 93, 93, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 91, 91, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 65, 90, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 97, 122, 48, 48, 49, 53, 54, 54, 55, 57, 48, 48, 49, 57, 48, 48, 49, 57, 49, 57, 9, 9, 13, 13, 32, 32, 47, 47, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 47, 47, 48, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 47, 47, 48, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 47, 47, 48, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 47, 47, 48, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 47, 47, 48, 52, 53, 53, 54, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 47, 47, 48, 52, 53, 53, 54, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 47, 47, 48, 50, 51, 51, 52, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 47, 47, 48, 53, 59, 59, 63, 63, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 93, 93, 9, 9, 13, 13, 32, 32, 47, 47, 58, 58, 59, 59, 63, 63, 48, 57, 93, 93, 48, 57, 93, 93, 48, 52, 53, 53, 54, 57, 93, 93, 48, 53, 93, 93, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 72, 73, 73, 74, 90, 95, 95, 96, 96, 97, 104, 105, 105, 106, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 79, 80, 80, 81, 90, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 82, 83, 83, 84, 90, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 91, 91, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 57, 65, 90, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 48, 57, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 97, 122, 48, 48, 49, 53, 54, 54, 55, 57, 48, 48, 49, 57, 48, 48, 49, 57, 49, 57, 9, 9, 13, 13, 32, 32, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 65, 75, 76, 76, 77, 78, 79, 79, 80, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 107, 108, 108, 109, 110, 111, 111, 112, 115, 116, 116, 117, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 113, 114, 114, 115, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 65, 66, 66, 67, 85, 86, 86, 87, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 97, 98, 98, 99, 117, 118, 118, 119, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 72, 73, 73, 74, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 104, 105, 105, 106, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 67, 68, 68, 69, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 99, 100, 100, 101, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 113, 114, 114, 115, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 65, 66, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 97, 98, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 77, 78, 78, 79, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 109, 110, 110, 111, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 78, 79, 79, 80, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 110, 111, 111, 112, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 113, 114, 114, 115, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 115, 116, 116, 117, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 65, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119, 119, 120, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 66, 67, 67, 68, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 98, 99, 99, 100, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 115, 116, 116, 117, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 66, 67, 67, 68, 75, 76, 76, 77, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 98, 99, 99, 100, 107, 108, 108, 109, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 67, 68, 68, 69, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 99, 100, 100, 101, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 48, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 48, 52, 53, 53, 54, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 48, 52, 53, 53, 54, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 48, 50, 51, 51, 52, 57, 59, 59, 63, 63, 9, 9, 13, 13, 32, 32, 48, 53, 59, 59, 63, 63, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 48, 48, 49, 49, 50, 50, 51, 57, 65, 90, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 9, 9, 13, 13, 32, 32, 45, 45, 46, 46, 48, 53, 54, 57, 58, 58, 59, 59, 63, 63, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 65, 90, 95, 95, 97, 122, 45, 45, 46, 46, 48, 53, 54, 57, 65, 90, 95, 95, 97, 122, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 46, 46, 48, 48, 49, 49, 50, 50, 51, 57, 93, 93, 9, 9, 13, 13, 32, 32, 58, 58, 59, 59, 63, 63, 48, 57, 93, 93, 48, 57, 93, 93, 48, 52, 53, 53, 54, 57, 93, 93, 48, 53, 93, 93, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 46, 46, 48, 57, 46, 46, 48, 57, 46, 46, 48, 52, 53, 53, 54, 57, 46, 46, 48, 53, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 58, 58, 93, 93, 48, 48, 49, 49, 50, 50, 51, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 52, 53, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 53, 54, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 46, 46, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 48, 57, 58, 58, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 93, 93, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 48, 49, 53, 54, 54, 55, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 48, 49, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 48, 49, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 48, 49, 57, 61, 61, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 52, 53, 53, 54, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 50, 51, 51, 52, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 48, 53, 54, 57, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 75, 76, 76, 77, 78, 79, 79, 80, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 107, 108, 108, 109, 110, 111, 111, 112, 115, 116, 116, 117, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 113, 114, 114, 115, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 65, 66, 66, 67, 85, 86, 86, 87, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 97, 98, 98, 99, 117, 118, 118, 119, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 72, 73, 73, 74, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 104, 105, 105, 106, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 67, 68, 68, 69, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 99, 100, 100, 101, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 113, 114, 114, 115, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 65, 66, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 97, 98, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 77, 78, 78, 79, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 109, 110, 110, 111, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 78, 79, 79, 80, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 110, 111, 111, 112, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 81, 82, 82, 83, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 113, 114, 114, 115, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 115, 116, 116, 117, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 116, 117, 117, 118, 118, 119, 119, 120, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 63, 63, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 66, 67, 67, 68, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 98, 99, 99, 100, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 83, 84, 84, 85, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 115, 116, 116, 117, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 66, 67, 67, 68, 75, 76, 76, 77, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 98, 99, 99, 100, 107, 108, 108, 109, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 67, 68, 68, 69, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 99, 100, 100, 101, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 79, 80, 80, 81, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 82, 83, 83, 84, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 114, 115, 115, 116, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 33, 33, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 61, 61, 63, 63, 64, 64, 65, 90, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 68, 69, 69, 70, 90, 95, 95, 96, 96, 97, 100, 101, 101, 102, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 75, 76, 76, 77, 90, 95, 95, 96, 96, 97, 107, 108, 108, 109, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 58, 58, 60, 60, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 35, 35, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 9, 9, 13, 13, 32, 32, 35, 35, 40, 40, 41, 41, 42, 42, 45, 45, 46, 46, 48, 57, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 65, 79, 80, 80, 81, 90, 95, 95, 96, 96, 97, 111, 112, 112, 113, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 95, 95, 96, 96, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 97, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 52, 53, 53, 54, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 53, 54, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 90, 91, 91, 93, 93, 95, 95, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 103, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 71, 72, 72, 73, 90, 95, 95, 96, 96, 97, 103, 104, 104, 105, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 78, 79, 79, 80, 90, 95, 95, 96, 96, 97, 110, 111, 111, 112, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 77, 78, 78, 79, 90, 95, 95, 96, 96, 97, 109, 110, 110, 111, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 68, 69, 69, 70, 90, 95, 95, 96, 96, 97, 100, 101, 101, 102, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 66, 67, 67, 68, 90, 95, 95, 96, 96, 97, 98, 99, 99, 100, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 78, 79, 79, 80, 90, 95, 95, 96, 96, 97, 110, 111, 111, 112, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 77, 78, 78, 79, 90, 95, 95, 96, 96, 97, 109, 110, 110, 111, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 83, 84, 84, 85, 90, 95, 95, 96, 96, 97, 115, 116, 116, 117, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 68, 69, 69, 70, 90, 95, 95, 96, 96, 97, 100, 101, 101, 102, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 87, 88, 88, 89, 90, 95, 95, 96, 96, 97, 119, 120, 120, 121, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 83, 84, 84, 85, 90, 95, 95, 96, 96, 97, 115, 116, 116, 117, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 37, 37, 39, 39, 42, 42, 43, 43, 45, 45, 46, 46, 48, 57, 59, 59, 61, 61, 65, 90, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 34, 34, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50, 51, 57, 58, 58, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 9, 9, 13, 13, 32, 32, 33, 33, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 45, 45, 46, 46, 47, 47, 48, 57, 58, 58, 59, 59, 65, 90, 91, 91, 93, 93, 95, 95, 96, 96, 97, 122, 126, 126, 35, 35, 40, 40, 41, 41, 42, 42, 45, 45, 46, 46, 48, 57, 65, 65, 66, 66, 67, 67, 68, 68, 69, 69, 70, 70, 97, 97, 98, 98, 99, 99, 100, 100, 101, 101, 102, 102, 40, 40, 41, 41, 45, 45, 46, 46, 48, 57, 9, 9, 13, 13, 32, 32, 40, 40, 41, 41, 45, 45, 46, 46, 48, 57, 59, 59, 0 }; static const char _sip_uri_parser_cond_spaces[] = { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 0, 1, 1, 1, 2, 1, 0, 1, 1, 1, 2, 1, 0, 1, 1, 1, 2, 1, 0, 1, 1, 1, 2, 1, 0, 1, 1, 1, 2, 2, 2, 1, 0, 1, 1, 1, 2, 2, 2, 1, 0, 1, 1, 1, 2, 2, 2, 1, 0, 1, 1, 1, 2, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 1, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 2, 2, 1, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 1, 2, 1, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 2, 2, 1, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 1, 2, 1, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 1, 0, 1, 1, 1, 2, 2, 1, 0, 1, 1, 1, 2, 2, 1, 0, 1, 1, 1, 2, 2, 1, 0, 1, 1, 1, 2, 2, 1, 0, 1, 1, 1, 2, 2, 2, 2, 1, 0, 1, 1, 1, 2, 2, 2, 2, 1, 0, 1, 1, 1, 2, 2, 2, 2, 1, 0, 1, 1, 1, 2, 2, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 1, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 1, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 1, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 1, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 1, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 2, 2, 1, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 1, 2, 1, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 0, 2, 1, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 2, 1, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 2, 1, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 2, 0, 0, 2, 1, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 2, 1, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 2, 0, 1, 1, 1, 2, 2, 0, 1, 1, 1, 2, 2, 0, 1, 1, 1, 2, 2, 0, 1, 1, 1, 2, 2, 2, 2, 0, 1, 1, 1, 2, 2, 2, 2, 0, 1, 1, 1, 2, 2, 2, 2, 0, 1, 1, 1, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 1, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 0, 2, 1, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 2, 1, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 2, 1, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 0, 0, 2, 1, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 2, 1, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 0, 2, 0, 0, 2, 2, 0, 2, 2, 0, 2, 0, 2, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 2, 0, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 1, 2, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 2, 1, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 0, 2, 1, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 2, 0, 2, 2, 2, 2, 2, 2, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 2, 2, 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 2, 2, 2, 1, 1, 2, 1, 1, 1, 1, 2, 1, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 2, 2, 2, 0, 2, 2, 0, 2, 1, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 1, 2, 2, 1, 1, 1, 2, 0, 2, 0, 2, 0, 0, 2, 2, 2, 2, 0, 2, 0, 2, 2, 0, 0, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 2, 2, 2, 2, 2, 2, 0 }; static const unsigned short _sip_uri_parser_key_offsets[] = { 0, 0, 41, 45, 46, 48, 51, 59, 69, 85, 99, 112, 118, 124, 138, 144, 150, 160, 169, 177, 186, 192, 204, 212, 221, 227, 230, 233, 235, 237, 242, 243, 245, 250, 251, 253, 256, 273, 274, 276, 292, 312, 317, 318, 320, 324, 343, 344, 346, 364, 383, 387, 403, 405, 407, 409, 411, 413, 414, 416, 421, 427, 434, 441, 448, 455, 456, 463, 470, 477, 484, 485, 492, 499, 506, 513, 514, 521, 528, 535, 542, 543, 550, 557, 564, 571, 572, 579, 586, 593, 600, 601, 611, 619, 624, 625, 630, 631, 636, 637, 640, 643, 649, 652, 655, 658, 664, 667, 670, 673, 679, 682, 689, 696, 697, 704, 711, 718, 725, 733, 741, 749, 760, 770, 778, 786, 793, 800, 810, 819, 827, 835, 837, 843, 852, 861, 870, 882, 893, 902, 911, 919, 929, 938, 946, 954, 956, 965, 974, 983, 992, 1004, 1015, 1024, 1033, 1041, 1051, 1060, 1068, 1076, 1078, 1087, 1096, 1105, 1114, 1126, 1137, 1146, 1155, 1163, 1173, 1182, 1190, 1198, 1200, 1209, 1218, 1227, 1236, 1248, 1259, 1268, 1277, 1285, 1295, 1304, 1312, 1320, 1322, 1331, 1340, 1349, 1358, 1370, 1381, 1390, 1399, 1407, 1408, 1418, 1427, 1435, 1443, 1445, 1454, 1463, 1472, 1481, 1493, 1504, 1513, 1522, 1530, 1541, 1547, 1553, 1557, 1561, 1565, 1569, 1576, 1583, 1590, 1594, 1603, 1612, 1621, 1630, 1639, 1651, 1663, 1675, 1690, 1704, 1713, 1722, 1734, 1745, 1754, 1763, 1775, 1786, 1795, 1804, 1816, 1827, 1834, 1841, 1848, 1855, 1856, 1863, 1870, 1877, 1884, 1885, 1892, 1899, 1906, 1913, 1914, 1921, 1928, 1935, 1942, 1943, 1950, 1957, 1964, 1971, 1972, 1979, 1986, 1993, 2000, 2001, 2011, 2019, 2024, 2025, 2030, 2031, 2036, 2037, 2040, 2043, 2046, 2052, 2055, 2058, 2061, 2067, 2070, 2073, 2076, 2082, 2085, 2092, 2099, 2100, 2107, 2114, 2121, 2128, 2136, 2144, 2152, 2163, 2173, 2181, 2189, 2196, 2203, 2213, 2222, 2230, 2238, 2240, 2246, 2255, 2264, 2273, 2285, 2296, 2305, 2314, 2322, 2332, 2341, 2349, 2357, 2359, 2368, 2377, 2386, 2395, 2407, 2418, 2427, 2436, 2444, 2454, 2463, 2471, 2479, 2481, 2490, 2499, 2508, 2517, 2529, 2540, 2549, 2558, 2566, 2576, 2585, 2593, 2601, 2603, 2612, 2621, 2630, 2639, 2651, 2662, 2671, 2680, 2688, 2698, 2707, 2715, 2723, 2725, 2734, 2743, 2752, 2761, 2773, 2784, 2793, 2802, 2810, 2811, 2821, 2830, 2838, 2846, 2848, 2857, 2866, 2875, 2884, 2896, 2907, 2916, 2925, 2933, 2939, 2945, 2961, 2967, 2973, 2985, 3000, 3015, 3029, 3042, 3048, 3054, 3068, 3074, 3080, 3090, 3099, 3107, 3116, 3122, 3135, 3143, 3153, 3159, 3162, 3165, 3167, 3170, 3175, 3180, 3185, 3190, 3198, 3206, 3214, 3219, 3228, 3237, 3246, 3255, 3264, 3277, 3290, 3303, 3319, 3334, 3343, 3352, 3364, 3375, 3384, 3393, 3405, 3416, 3425, 3434, 3446, 3457, 3464, 3471, 3478, 3485, 3486, 3493, 3500, 3507, 3514, 3515, 3522, 3529, 3536, 3543, 3544, 3551, 3558, 3565, 3572, 3573, 3580, 3587, 3594, 3601, 3602, 3609, 3616, 3623, 3630, 3631, 3641, 3649, 3654, 3655, 3660, 3661, 3666, 3667, 3671, 3674, 3677, 3683, 3686, 3689, 3692, 3698, 3701, 3704, 3707, 3713, 3716, 3723, 3730, 3731, 3738, 3745, 3752, 3759, 3767, 3775, 3783, 3794, 3804, 3812, 3820, 3827, 3834, 3844, 3853, 3861, 3869, 3871, 3877, 3886, 3895, 3904, 3916, 3927, 3936, 3945, 3953, 3963, 3972, 3980, 3988, 3990, 3999, 4008, 4017, 4026, 4038, 4049, 4058, 4067, 4075, 4085, 4094, 4102, 4110, 4112, 4121, 4130, 4139, 4148, 4160, 4171, 4180, 4189, 4197, 4207, 4216, 4224, 4232, 4234, 4243, 4252, 4261, 4270, 4282, 4293, 4302, 4311, 4319, 4329, 4338, 4346, 4354, 4356, 4365, 4374, 4383, 4392, 4404, 4415, 4424, 4433, 4441, 4442, 4452, 4461, 4469, 4477, 4479, 4488, 4497, 4506, 4515, 4527, 4538, 4547, 4556, 4564, 4570, 4576, 4592, 4598, 4604, 4616, 4628, 4640, 4652, 4671, 4684, 4690, 4696, 4710, 4716, 4722, 4732, 4741, 4749, 4758, 4764, 4777, 4785, 4795, 4801, 4804, 4807, 4809, 4812, 4831, 4848, 4854, 4860, 4877, 4893, 4899, 4905, 4920, 4936, 4942, 4948, 4964, 4970, 4976, 4989, 5008, 5025, 5048, 5070, 5093, 5110, 5133, 5154, 5171, 5190, 5209, 5226, 5249, 5271, 5294, 5311, 5334, 5353, 5372, 5391, 5410, 5429, 5448, 5467, 5486, 5503, 5534, 5556, 5579, 5596, 5619, 5643, 5667, 5691, 5713, 5739, 5763, 5785, 5809, 5831, 5855, 5879, 5901, 5925, 5949, 5971, 5976, 5981, 5986, 5991, 5999, 6007, 6015, 6020, 6029, 6038, 6047, 6056, 6065, 6078, 6091, 6104, 6120, 6135, 6144, 6153, 6165, 6176, 6185, 6194, 6206, 6217, 6226, 6235, 6247, 6258, 6265, 6272, 6279, 6286, 6287, 6294, 6301, 6308, 6315, 6316, 6323, 6330, 6337, 6344, 6345, 6352, 6359, 6366, 6373, 6374, 6381, 6388, 6395, 6402, 6403, 6410, 6417, 6424, 6431, 6432, 6442, 6450, 6455, 6456, 6461, 6462, 6467, 6468, 6472, 6475, 6478, 6484, 6487, 6490, 6493, 6499, 6502, 6505, 6508, 6514, 6517, 6524, 6531, 6532, 6539, 6546, 6553, 6560, 6568, 6576, 6584, 6595, 6605, 6613, 6621, 6628, 6635, 6645, 6654, 6662, 6670, 6672, 6678, 6687, 6696, 6705, 6717, 6728, 6737, 6746, 6754, 6764, 6773, 6781, 6789, 6791, 6800, 6809, 6818, 6827, 6839, 6850, 6859, 6868, 6876, 6886, 6895, 6903, 6911, 6913, 6922, 6931, 6940, 6949, 6961, 6972, 6981, 6990, 6998, 7008, 7017, 7025, 7033, 7035, 7044, 7053, 7062, 7071, 7083, 7094, 7103, 7112, 7120, 7130, 7139, 7147, 7155, 7157, 7166, 7175, 7184, 7193, 7205, 7216, 7225, 7234, 7242, 7243, 7253, 7262, 7270, 7278, 7280, 7289, 7298, 7307, 7316, 7328, 7339, 7348, 7357, 7365, 7384, 7402, 7421, 7438, 7458, 7476, 7494, 7512, 7527, 7542, 7557, 7573, 7589, 7605, 7621, 7637, 7656, 7675, 7694, 7712, 7737, 7757, 7763, 7769, 7789, 7795, 7801, 7821, 7841, 7847, 7853, 7870, 7890, 7910, 7916, 7922, 7942, 7962, 7968, 7974, 7993, 7999, 8005, 8025, 8031, 8037, 8056, 8076, 8082, 8088, 8107, 8129, 8149, 8173, 8197, 8220, 8243, 8267, 8287, 8309, 8331, 8351, 8375, 8399, 8422, 8445, 8467, 8489, 8511, 8533, 8555, 8577, 8599, 8621, 8641, 8673, 8697, 8720, 8743, 8769, 8795, 8821, 8845, 8873, 8899, 8923, 8949, 8973, 8999, 9025, 9049, 9075, 9101, 9125, 9145, 9164, 9184, 9203, 9223, 9243, 9263, 9283, 9306, 9328, 9347, 9366, 9388, 9409, 9428, 9447, 9469, 9490, 9509, 9528, 9550, 9571, 9581, 9593, 9605, 9615, 9628, 9641, 9650, 9660, 9673, 9688, 9694, 9700, 9712, 9724, 9736, 9748, 9758, 9770, 9782, 9794, 9806, 9818, 9830, 9842, 9852, 9870, 9893, 9914, 9934, 9954, 9973, 9993, 10013, 10032, 10044, 10050, 10058, 10076, 10094, 10095, 10097, 10114, 10130, 10132, 10134, 10136, 10138, 10140, 10141, 10143, 10147, 10153, 10163, 10180, 10195, 10208, 10214, 10220, 10234, 10240, 10246, 10256, 10265, 10273, 10282, 10288, 10300, 10308, 10317, 10323, 10326, 10329, 10331, 10333, 10345, 10351, 10357, 10361, 10365, 10369, 10373, 10380, 10387, 10394, 10398, 10407, 10416, 10425, 10434, 10443, 10455, 10467, 10479, 10494, 10508, 10517, 10526, 10538, 10549, 10558, 10567, 10579, 10590, 10599, 10608, 10620, 10631, 10638, 10645, 10652, 10659, 10660, 10667, 10674, 10681, 10688, 10689, 10696, 10703, 10710, 10717, 10718, 10725, 10732, 10739, 10746, 10747, 10754, 10761, 10768, 10775, 10776, 10783, 10790, 10797, 10804, 10805, 10815, 10823, 10828, 10829, 10834, 10835, 10840, 10841, 10844, 10847, 10850, 10856, 10859, 10862, 10865, 10871, 10874, 10877, 10880, 10886, 10889, 10896, 10903, 10904, 10911, 10918, 10925, 10932, 10940, 10948, 10956, 10967, 10977, 10985, 10993, 11000, 11007, 11017, 11026, 11034, 11042, 11044, 11050, 11059, 11068, 11077, 11089, 11100, 11109, 11118, 11126, 11136, 11145, 11153, 11161, 11163, 11172, 11181, 11190, 11199, 11211, 11222, 11231, 11240, 11248, 11258, 11267, 11275, 11283, 11285, 11294, 11303, 11312, 11321, 11333, 11344, 11353, 11362, 11370, 11380, 11389, 11397, 11405, 11407, 11416, 11425, 11434, 11443, 11455, 11466, 11475, 11484, 11492, 11502, 11511, 11519, 11527, 11529, 11538, 11547, 11556, 11565, 11577, 11588, 11597, 11606, 11614, 11615, 11625, 11634, 11642, 11650, 11652, 11661, 11670, 11679, 11688, 11700, 11711, 11720, 11729, 11737, 11743, 11749, 11766, 11772, 11778, 11791, 11807, 11823, 11838, 11851, 11857, 11863, 11877, 11883, 11889, 11899, 11908, 11916, 11925, 11931, 11944, 11952, 11962, 11968, 11971, 11974, 11976, 11979, 11984, 11989, 11994, 11999, 12007, 12015, 12023, 12028, 12037, 12046, 12055, 12064, 12073, 12086, 12099, 12112, 12128, 12143, 12152, 12161, 12173, 12184, 12193, 12202, 12214, 12225, 12234, 12243, 12255, 12266, 12273, 12280, 12287, 12294, 12295, 12302, 12309, 12316, 12323, 12324, 12331, 12338, 12345, 12352, 12353, 12360, 12367, 12374, 12381, 12382, 12389, 12396, 12403, 12410, 12411, 12418, 12425, 12432, 12439, 12440, 12450, 12458, 12463, 12464, 12469, 12470, 12475, 12476, 12480, 12483, 12486, 12492, 12495, 12498, 12501, 12507, 12510, 12513, 12516, 12522, 12525, 12532, 12539, 12540, 12547, 12554, 12561, 12568, 12576, 12584, 12592, 12603, 12613, 12621, 12629, 12636, 12643, 12653, 12662, 12670, 12678, 12680, 12686, 12695, 12704, 12713, 12725, 12736, 12745, 12754, 12762, 12772, 12781, 12789, 12797, 12799, 12808, 12817, 12826, 12835, 12847, 12858, 12867, 12876, 12884, 12894, 12903, 12911, 12919, 12921, 12930, 12939, 12948, 12957, 12969, 12980, 12989, 12998, 13006, 13016, 13025, 13033, 13041, 13043, 13052, 13061, 13070, 13079, 13091, 13102, 13111, 13120, 13128, 13138, 13147, 13155, 13163, 13165, 13174, 13183, 13192, 13201, 13213, 13224, 13233, 13242, 13250, 13251, 13261, 13270, 13278, 13286, 13288, 13297, 13306, 13315, 13324, 13336, 13347, 13356, 13365, 13373, 13379, 13385, 13402, 13408, 13414, 13427, 13439, 13451, 13463, 13482, 13495, 13501, 13507, 13521, 13527, 13533, 13543, 13552, 13560, 13569, 13575, 13588, 13596, 13606, 13612, 13615, 13618, 13620, 13623, 13642, 13659, 13665, 13671, 13688, 13704, 13710, 13716, 13731, 13747, 13753, 13759, 13775, 13781, 13787, 13800, 13819, 13836, 13859, 13881, 13904, 13921, 13944, 13965, 13982, 14001, 14020, 14037, 14060, 14082, 14105, 14122, 14145, 14164, 14183, 14202, 14221, 14240, 14259, 14278, 14297, 14314, 14345, 14367, 14390, 14407, 14430, 14454, 14478, 14502, 14524, 14550, 14574, 14596, 14620, 14642, 14666, 14690, 14712, 14736, 14760, 14782, 14787, 14792, 14797, 14802, 14810, 14818, 14826, 14831, 14840, 14849, 14858, 14867, 14876, 14889, 14902, 14915, 14931, 14946, 14955, 14964, 14976, 14987, 14996, 15005, 15017, 15028, 15037, 15046, 15058, 15069, 15076, 15083, 15090, 15097, 15098, 15105, 15112, 15119, 15126, 15127, 15134, 15141, 15148, 15155, 15156, 15163, 15170, 15177, 15184, 15185, 15192, 15199, 15206, 15213, 15214, 15221, 15228, 15235, 15242, 15243, 15253, 15261, 15266, 15267, 15272, 15273, 15278, 15279, 15283, 15286, 15289, 15295, 15298, 15301, 15304, 15310, 15313, 15316, 15319, 15325, 15328, 15335, 15342, 15343, 15350, 15357, 15364, 15371, 15379, 15387, 15395, 15406, 15416, 15424, 15432, 15439, 15446, 15456, 15465, 15473, 15481, 15483, 15489, 15498, 15507, 15516, 15528, 15539, 15548, 15557, 15565, 15575, 15584, 15592, 15600, 15602, 15611, 15620, 15629, 15638, 15650, 15661, 15670, 15679, 15687, 15697, 15706, 15714, 15722, 15724, 15733, 15742, 15751, 15760, 15772, 15783, 15792, 15801, 15809, 15819, 15828, 15836, 15844, 15846, 15855, 15864, 15873, 15882, 15894, 15905, 15914, 15923, 15931, 15941, 15950, 15958, 15966, 15968, 15977, 15986, 15995, 16004, 16016, 16027, 16036, 16045, 16053, 16054, 16064, 16073, 16081, 16089, 16091, 16100, 16109, 16118, 16127, 16139, 16150, 16159, 16168, 16176, 16195, 16213, 16232, 16249, 16269, 16287, 16305, 16323, 16338, 16353, 16368, 16385, 16402, 16419, 16436, 16453, 16473, 16493, 16513, 16532, 16557, 16577, 16583, 16589, 16609, 16615, 16621, 16641, 16661, 16667, 16673, 16690, 16710, 16730, 16736, 16742, 16762, 16782, 16788, 16794, 16813, 16819, 16825, 16845, 16851, 16857, 16876, 16896, 16902, 16908, 16927, 16949, 16969, 16993, 17017, 17040, 17063, 17087, 17107, 17129, 17151, 17171, 17195, 17219, 17242, 17265, 17287, 17309, 17331, 17353, 17375, 17397, 17419, 17441, 17461, 17493, 17517, 17540, 17563, 17589, 17615, 17641, 17665, 17693, 17719, 17743, 17769, 17793, 17819, 17845, 17869, 17895, 17921, 17945, 17965, 17984, 18004, 18023, 18043, 18063, 18083, 18103, 18126, 18148, 18167, 18186, 18208, 18229, 18248, 18267, 18289, 18310, 18329, 18348, 18370, 18391, 18401, 18413, 18425, 18435, 18448, 18461, 18470, 18480, 18493, 18508, 18514, 18520, 18532, 18544, 18556, 18568, 18578, 18590, 18602, 18614, 18626, 18638, 18650, 18662, 18672, 18690, 18713, 18734, 18754, 18774, 18793, 18813, 18833, 18852, 18864, 18870, 18878, 18899, 18922, 18943, 18958, 18964, 18970, 18986, 18992, 18998, 19008, 19017, 19025, 19034, 19040, 19055, 19063, 19075, 19081, 19084, 19087, 19089, 19094, 19101, 19108, 19115, 19122, 19132, 19142, 19152, 19159, 19168, 19177, 19186, 19195, 19204, 19219, 19234, 19249, 19267, 19284, 19293, 19302, 19314, 19325, 19334, 19343, 19355, 19366, 19375, 19384, 19396, 19407, 19414, 19421, 19428, 19435, 19436, 19443, 19450, 19457, 19464, 19465, 19472, 19479, 19486, 19493, 19494, 19501, 19508, 19515, 19522, 19523, 19530, 19537, 19544, 19551, 19552, 19559, 19566, 19573, 19580, 19581, 19591, 19599, 19604, 19605, 19610, 19611, 19616, 19617, 19623, 19626, 19629, 19635, 19638, 19641, 19644, 19650, 19653, 19656, 19659, 19665, 19668, 19675, 19682, 19683, 19690, 19697, 19704, 19711, 19719, 19727, 19735, 19746, 19756, 19764, 19772, 19779, 19786, 19796, 19805, 19813, 19821, 19823, 19829, 19838, 19847, 19856, 19868, 19879, 19888, 19897, 19905, 19915, 19924, 19932, 19940, 19942, 19951, 19960, 19969, 19978, 19990, 20001, 20010, 20019, 20027, 20037, 20046, 20054, 20062, 20064, 20073, 20082, 20091, 20100, 20112, 20123, 20132, 20141, 20149, 20159, 20168, 20176, 20184, 20186, 20195, 20204, 20213, 20222, 20234, 20245, 20254, 20263, 20271, 20281, 20290, 20298, 20306, 20308, 20317, 20326, 20335, 20344, 20356, 20367, 20376, 20385, 20393, 20394, 20404, 20413, 20421, 20429, 20431, 20440, 20449, 20458, 20467, 20479, 20490, 20499, 20508, 20516, 20522, 20528, 20549, 20555, 20561, 20579, 20585, 20591, 20610, 20632, 20654, 20675, 20690, 20696, 20702, 20718, 20724, 20730, 20740, 20749, 20757, 20766, 20772, 20788, 20796, 20809, 20815, 20818, 20821, 20823, 20829, 20837, 20845, 20853, 20861, 20872, 20883, 20894, 20902, 20911, 20920, 20929, 20938, 20947, 20963, 20979, 20995, 21014, 21032, 21041, 21050, 21062, 21073, 21082, 21091, 21103, 21114, 21123, 21132, 21144, 21155, 21162, 21169, 21176, 21183, 21184, 21191, 21198, 21205, 21212, 21213, 21220, 21227, 21234, 21241, 21242, 21249, 21256, 21263, 21270, 21271, 21278, 21285, 21292, 21299, 21300, 21307, 21314, 21321, 21328, 21329, 21339, 21347, 21352, 21353, 21358, 21359, 21364, 21365, 21372, 21375, 21378, 21384, 21387, 21390, 21393, 21399, 21402, 21405, 21408, 21414, 21417, 21424, 21431, 21432, 21439, 21446, 21453, 21460, 21468, 21476, 21484, 21495, 21505, 21513, 21521, 21528, 21535, 21545, 21554, 21562, 21570, 21572, 21578, 21587, 21596, 21605, 21617, 21628, 21637, 21646, 21654, 21664, 21673, 21681, 21689, 21691, 21700, 21709, 21718, 21727, 21739, 21750, 21759, 21768, 21776, 21786, 21795, 21803, 21811, 21813, 21822, 21831, 21840, 21849, 21861, 21872, 21881, 21890, 21898, 21908, 21917, 21925, 21933, 21935, 21944, 21953, 21962, 21971, 21983, 21994, 22003, 22012, 22020, 22030, 22039, 22047, 22055, 22057, 22066, 22075, 22084, 22093, 22105, 22116, 22125, 22134, 22142, 22143, 22153, 22162, 22170, 22178, 22180, 22189, 22198, 22207, 22216, 22228, 22239, 22248, 22257, 22265, 22271, 22277, 22298, 22304, 22310, 22329, 22352, 22375, 22398, 22417, 22432, 22438, 22444, 22460, 22466, 22472, 22482, 22491, 22499, 22508, 22514, 22529, 22537, 22549, 22555, 22558, 22561, 22563, 22568, 22575, 22582, 22589, 22596, 22606, 22616, 22626, 22633, 22642, 22651, 22660, 22669, 22678, 22693, 22708, 22723, 22741, 22758, 22767, 22776, 22788, 22799, 22808, 22817, 22829, 22840, 22849, 22858, 22870, 22881, 22888, 22895, 22902, 22909, 22910, 22917, 22924, 22931, 22938, 22939, 22946, 22953, 22960, 22967, 22968, 22975, 22982, 22989, 22996, 22997, 23004, 23011, 23018, 23025, 23026, 23033, 23040, 23047, 23054, 23055, 23065, 23073, 23078, 23079, 23084, 23085, 23090, 23091, 23097, 23100, 23103, 23109, 23112, 23115, 23118, 23124, 23127, 23130, 23133, 23139, 23142, 23149, 23156, 23157, 23164, 23171, 23178, 23185, 23193, 23201, 23209, 23220, 23230, 23238, 23246, 23253, 23260, 23270, 23279, 23287, 23295, 23297, 23303, 23312, 23321, 23330, 23342, 23353, 23362, 23371, 23379, 23389, 23398, 23406, 23414, 23416, 23425, 23434, 23443, 23452, 23464, 23475, 23484, 23493, 23501, 23511, 23520, 23528, 23536, 23538, 23547, 23556, 23565, 23574, 23586, 23597, 23606, 23615, 23623, 23633, 23642, 23650, 23658, 23660, 23669, 23678, 23687, 23696, 23708, 23719, 23728, 23737, 23745, 23755, 23764, 23772, 23780, 23782, 23791, 23800, 23809, 23818, 23830, 23841, 23850, 23859, 23867, 23868, 23878, 23887, 23895, 23903, 23905, 23914, 23923, 23932, 23941, 23953, 23964, 23973, 23982, 23990, 24008, 24026, 24044, 24061, 24084, 24102, 24124, 24144, 24161, 24178, 24195, 24216, 24237, 24258, 24279, 24300, 24324, 24348, 24372, 24395, 24415, 24433, 24453, 24471, 24491, 24514, 24537, 24560, 24586, 24611, 24629, 24647, 24668, 24688, 24706, 24724, 24745, 24765, 24783, 24801, 24822, 24842, 24863, 24886, 24909, 24930, 24943, 24959, 24971, 24977, 24988, 25029, 25091, 25147, 25195, 25213, 25231, 25280, 25298, 25316, 25346, 25373, 25397, 25424, 25442, 25478, 25502, 25529, 25547, 25556, 25565, 25571, 25577, 25589, 25601, 25613, 25625, 25646, 25667, 25688, 25700, 25727, 25754, 25781, 25808, 25835, 25871, 25907, 25943, 25988, 26030, 26057, 26084, 26120, 26153, 26180, 26207, 26243, 26276, 26303, 26330, 26366, 26399, 26420, 26441, 26462, 26483, 26486, 26507, 26528, 26549, 26570, 26573, 26594, 26615, 26636, 26657, 26660, 26681, 26702, 26723, 26744, 26747, 26768, 26789, 26810, 26831, 26834, 26855, 26876, 26897, 26918, 26921, 26951, 26975, 26990, 26993, 27008, 27011, 27026, 27029, 27038, 27047, 27056, 27074, 27083, 27092, 27101, 27119, 27128, 27137, 27146, 27164, 27173, 27194, 27215, 27218, 27239, 27260, 27281, 27302, 27326, 27350, 27374, 27407, 27437, 27461, 27485, 27506, 27527, 27557, 27584, 27608, 27632, 27638, 27656, 27683, 27710, 27737, 27773, 27806, 27833, 27860, 27884, 27914, 27941, 27965, 27989, 27995, 28022, 28049, 28076, 28103, 28139, 28172, 28199, 28226, 28250, 28280, 28307, 28331, 28355, 28361, 28388, 28415, 28442, 28469, 28505, 28538, 28565, 28592, 28616, 28646, 28673, 28697, 28721, 28727, 28754, 28781, 28808, 28835, 28871, 28904, 28931, 28958, 28982, 29012, 29039, 29063, 29087, 29093, 29120, 29147, 29174, 29201, 29237, 29270, 29297, 29324, 29348, 29351, 29381, 29408, 29432, 29456, 29462, 29489, 29516, 29543, 29570, 29606, 29639, 29666, 29693, 29717, 29735, 29753, 29810, 29828, 29846, 29893, 29911, 29929, 29990, 30055, 30093, 30131, 30194, 30257, 30294, 30331, 30381, 30443, 30509, 30547, 30585, 30649, 30713, 30750, 30787, 30846, 30905, 30961, 31009, 31027, 31045, 31094, 31112, 31130, 31160, 31187, 31211, 31238, 31256, 31295, 31319, 31349, 31367, 31376, 31385, 31391, 31400, 31415, 31430, 31445, 31460, 31484, 31508, 31532, 31547, 31574, 31601, 31628, 31655, 31682, 31721, 31760, 31799, 31847, 31892, 31919, 31946, 31982, 32015, 32042, 32069, 32105, 32138, 32165, 32192, 32228, 32261, 32282, 32303, 32324, 32345, 32348, 32369, 32390, 32411, 32432, 32435, 32456, 32477, 32498, 32519, 32522, 32543, 32564, 32585, 32606, 32609, 32630, 32651, 32672, 32693, 32696, 32717, 32738, 32759, 32780, 32783, 32813, 32837, 32852, 32855, 32870, 32873, 32888, 32891, 32903, 32912, 32921, 32939, 32948, 32957, 32966, 32984, 32993, 33002, 33011, 33029, 33038, 33059, 33080, 33083, 33104, 33125, 33146, 33167, 33191, 33215, 33239, 33272, 33302, 33326, 33350, 33371, 33392, 33422, 33449, 33473, 33497, 33503, 33521, 33548, 33575, 33602, 33638, 33671, 33698, 33725, 33749, 33779, 33806, 33830, 33854, 33860, 33887, 33914, 33941, 33968, 34004, 34037, 34064, 34091, 34115, 34145, 34172, 34196, 34220, 34226, 34253, 34280, 34307, 34334, 34370, 34403, 34430, 34457, 34481, 34511, 34538, 34562, 34586, 34592, 34619, 34646, 34673, 34700, 34736, 34769, 34796, 34823, 34847, 34877, 34904, 34928, 34952, 34958, 34985, 35012, 35039, 35066, 35102, 35135, 35162, 35189, 35213, 35216, 35246, 35273, 35297, 35321, 35327, 35354, 35381, 35408, 35435, 35471, 35504, 35531, 35558, 35582, 35600, 35618, 35675, 35693, 35711, 35761, 35823, 35889, 35927, 35965, 36029, 36093, 36130, 36167, 36214, 36261, 36308, 36368, 36416, 36434, 36452, 36501, 36519, 36537, 36567, 36594, 36618, 36645, 36663, 36701, 36725, 36754, 36772, 36781, 36790, 36796, 36804, 36873, 36938, 36976, 37014, 37077, 37139, 37176, 37213, 37249, 37285, 37321, 37357, 37376, 37412, 37448, 37484, 37520, 37539, 37575, 37611, 37647, 37683, 37702, 37738, 37774, 37810, 37846, 37865, 37901, 37937, 37973, 38009, 38028, 38064, 38100, 38136, 38172, 38191, 38233, 38272, 38301, 38321, 38350, 38370, 38399, 38417, 38438, 38463, 38488, 38519, 38545, 38571, 38597, 38629, 38656, 38682, 38708, 38740, 38767, 38803, 38839, 38858, 38894, 38931, 38968, 39005, 39044, 39083, 39122, 39167, 39210, 39249, 39288, 39325, 39361, 39404, 39445, 39483, 39521, 39542, 39577, 39618, 39659, 39700, 39747, 39792, 39833, 39874, 39912, 39955, 39996, 40034, 40072, 40093, 40134, 40175, 40216, 40257, 40304, 40349, 40390, 40431, 40469, 40512, 40553, 40591, 40629, 40650, 40691, 40732, 40773, 40814, 40861, 40906, 40947, 40988, 41026, 41069, 41110, 41148, 41186, 41207, 41248, 41289, 41330, 41371, 41418, 41463, 41504, 41545, 41583, 41626, 41667, 41705, 41743, 41764, 41805, 41846, 41887, 41928, 41975, 42020, 42061, 42102, 42140, 42159, 42202, 42243, 42281, 42319, 42340, 42381, 42422, 42463, 42504, 42551, 42596, 42637, 42678, 42716, 42785, 42850, 42912, 42972, 43034, 43084, 43146, 43219, 43284, 43353, 43422, 43487, 43549, 43609, 43671, 43721, 43783, 43852, 43921, 43990, 44059, 44128, 44197, 44266, 44335, 44400, 44478, 44538, 44600, 44650, 44712, 44776, 44840, 44904, 44964, 45032, 45096, 45156, 45220, 45280, 45344, 45408, 45468, 45532, 45596, 45656, 45670, 45684, 45698, 45712, 45735, 45758, 45781, 45795, 45822, 45849, 45876, 45903, 45930, 45968, 46006, 46044, 46091, 46135, 46162, 46189, 46225, 46258, 46285, 46312, 46348, 46381, 46408, 46435, 46471, 46504, 46525, 46546, 46567, 46588, 46591, 46612, 46633, 46654, 46675, 46678, 46699, 46720, 46741, 46762, 46765, 46786, 46807, 46828, 46849, 46852, 46873, 46894, 46915, 46936, 46939, 46960, 46981, 47002, 47023, 47026, 47056, 47080, 47095, 47098, 47113, 47116, 47131, 47134, 47145, 47154, 47163, 47181, 47190, 47199, 47208, 47226, 47235, 47244, 47253, 47271, 47280, 47301, 47322, 47325, 47346, 47367, 47388, 47409, 47433, 47457, 47481, 47514, 47544, 47568, 47592, 47613, 47634, 47664, 47691, 47715, 47739, 47745, 47763, 47790, 47817, 47844, 47880, 47913, 47940, 47967, 47991, 48021, 48048, 48072, 48096, 48102, 48129, 48156, 48183, 48210, 48246, 48279, 48306, 48333, 48357, 48387, 48414, 48438, 48462, 48468, 48495, 48522, 48549, 48576, 48612, 48645, 48672, 48699, 48723, 48753, 48780, 48804, 48828, 48834, 48861, 48888, 48915, 48942, 48978, 49011, 49038, 49065, 49089, 49119, 49146, 49170, 49194, 49200, 49227, 49254, 49281, 49308, 49344, 49377, 49404, 49431, 49455, 49458, 49488, 49515, 49539, 49563, 49569, 49596, 49623, 49650, 49677, 49713, 49746, 49773, 49800, 49824, 49881, 49938, 49995, 50049, 50112, 50169, 50229, 50290, 50342, 50394, 50446, 50503, 50560, 50617, 50674, 50731, 50797, 50863, 50929, 50992, 51067, 51135, 51173, 51211, 51278, 51344, 51381, 51418, 51490, 51558, 51623, 51687, 51749, 51811, 51887, 51955, 52027, 52099, 52167, 52232, 52296, 52358, 52420, 52492, 52564, 52636, 52708, 52780, 52852, 52924, 52996, 53064, 53145, 53209, 53271, 53333, 53401, 53469, 53537, 53601, 53673, 53741, 53805, 53873, 53937, 54005, 54073, 54137, 54205, 54273, 54337, 54400, 54457, 54520, 54577, 54640, 54703, 54766, 54829, 54901, 54970, 55027, 55084, 55150, 55213, 55270, 55327, 55393, 55456, 55513, 55570, 55636, 55699, 55740, 55787, 55834, 55875, 55914, 55954, 55991, 56031, 56090, 56151, 56188, 56225, 56260, 56295, 56330, 56365, 56383, 56418, 56453, 56488, 56523, 56541, 56576, 56611, 56646, 56681, 56699, 56734, 56769, 56804, 56839, 56857, 56892, 56927, 56962, 56997, 57015, 57050, 57085, 57120, 57155, 57173, 57214, 57252, 57280, 57299, 57327, 57346, 57374, 57391, 57411, 57435, 57459, 57489, 57514, 57539, 57564, 57595, 57621, 57646, 57671, 57702, 57728, 57763, 57798, 57816, 57851, 57887, 57923, 57959, 57997, 58035, 58073, 58117, 58159, 58197, 58235, 58271, 58306, 58348, 58388, 58425, 58462, 58482, 58516, 58556, 58596, 58636, 58682, 58726, 58766, 58806, 58843, 58885, 58925, 58962, 58999, 59019, 59059, 59099, 59139, 59179, 59225, 59269, 59309, 59349, 59386, 59428, 59468, 59505, 59542, 59562, 59602, 59642, 59682, 59722, 59768, 59812, 59852, 59892, 59929, 59971, 60011, 60048, 60085, 60105, 60145, 60185, 60225, 60265, 60311, 60355, 60395, 60435, 60472, 60514, 60554, 60591, 60628, 60648, 60688, 60728, 60768, 60808, 60854, 60898, 60938, 60978, 61015, 61033, 61075, 61115, 61152, 61189, 61209, 61249, 61289, 61329, 61369, 61415, 61459, 61499, 61539, 61576, 61620, 61664, 61708, 61752, 61792, 61836, 61880, 61924, 61968, 62012, 62056, 62100, 62140, 62200, 62261, 62322, 62383, 62444, 62505, 62566, 62627, 62688, 62724, 62742, 62767 }; static const short _sip_uri_parser_trans_keys[] = { 1033, 1037, 1056, 1057, 1058, 1061, 1063, 1084, 1150, 1619, 1620, 1651, 1652, 1875, 1876, 1907, 1908, 2131, 2132, 2163, 2164, 1066, 1067, 1069, 1070, 1072, 1081, 1119, 1120, 1601, 1626, 1633, 1658, 1857, 1882, 1889, 1914, 2113, 2138, 2145, 2170, 1033, 1037, 1056, 1084, 1034, 1033, 1056, 1033, 1056, 1084, 1107, 1108, 1139, 1140, 1089, 1114, 1121, 1146, 1067, 1082, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1071, 1082, 1086, 1088, 1115, 1119, 1150, 1060, 1083, 1085, 1114, 1121, 1146, 1057, 1059, 1061, 1082, 1086, 1088, 1119, 1150, 1060, 1083, 1085, 1114, 1121, 1146, 1057, 1061, 1082, 1085, 1088, 1119, 1150, 1059, 1083, 1087, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1085, 1088, 1119, 1150, 1060, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1115, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1082, 1086, 1087, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1082, 1086, 1087, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1078, 1073, 1077, 1079, 1081, 1072, 1073, 1081, 1072, 1073, 1081, 1073, 1081, 1086, 1087, 0, 1033, 1037, 1056, 1083, 1034, 1033, 1056, 0, 1033, 1037, 1056, 1083, 1034, 1033, 1056, 1033, 1056, 1083, 1033, 1037, 1056, 1057, 1061, 1063, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1146, 1034, 1033, 1056, 1033, 1056, 1057, 1061, 1063, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1085, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1146, 1033, 1037, 1056, 1083, 1085, 1034, 1033, 1056, 1033, 1056, 1083, 1085, 1033, 1037, 1056, 1057, 1058, 1061, 1063, 1115, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1146, 1034, 1033, 1056, 1033, 1056, 1057, 1058, 1061, 1063, 1115, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1146, 1033, 1037, 1056, 1083, 1033, 1037, 1058, 1116, 960, 991, 992, 1007, 1008, 1015, 1016, 1019, 1020, 1021, 1056, 1150, 896, 959, 896, 959, 896, 959, 896, 959, 896, 959, 1034, 1033, 1056, 0, 1033, 1037, 1056, 1083, 1024, 1033, 1035, 1036, 1038, 1151, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1073, 1074, 1082, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1075, 1081, 1070, 1072, 1073, 1074, 1075, 1081, 1070, 1072, 1073, 1074, 1075, 1081, 1117, 1117, 1072, 1081, 1117, 1072, 1081, 1077, 1117, 1072, 1076, 1078, 1081, 1117, 1072, 1077, 1070, 1072, 1081, 1070, 1072, 1081, 1070, 1077, 1072, 1076, 1078, 1081, 1070, 1072, 1077, 1070, 1072, 1081, 1070, 1072, 1081, 1070, 1077, 1072, 1076, 1078, 1081, 1070, 1072, 1077, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1086, 1119, 1150, 1060, 1083, 1085, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1086, 1087, 1072, 1081, 1086, 1087, 1072, 1081, 1086, 1087, 1072, 1081, 1086, 1087, 1072, 1081, 1077, 1086, 1087, 1072, 1076, 1078, 1081, 1077, 1086, 1087, 1072, 1076, 1078, 1081, 1075, 1086, 1087, 1072, 1074, 1076, 1081, 1086, 1087, 1072, 1077, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1082, 1086, 1087, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1082, 1086, 1087, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1082, 1086, 1087, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1082, 1086, 1087, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1082, 1086, 1087, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1073, 1074, 1082, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1075, 1081, 1070, 1072, 1073, 1074, 1075, 1081, 1070, 1072, 1073, 1074, 1075, 1081, 1117, 1082, 1086, 1087, 1117, 1072, 1081, 1117, 1072, 1081, 1077, 1117, 1072, 1076, 1078, 1081, 1117, 1072, 1077, 1070, 1072, 1081, 1070, 1072, 1081, 1070, 1077, 1072, 1076, 1078, 1081, 1070, 1072, 1077, 1070, 1072, 1081, 1070, 1072, 1081, 1070, 1077, 1072, 1076, 1078, 1081, 1070, 1072, 1077, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1071, 1086, 1087, 1088, 1119, 1150, 1060, 1081, 1082, 1083, 1085, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1086, 1115, 1119, 1150, 1060, 1083, 1085, 1114, 1121, 1146, 1057, 1059, 1061, 1071, 1082, 1086, 1088, 1119, 1150, 1060, 1083, 1085, 1114, 1121, 1146, 1057, 1059, 1061, 1082, 1086, 1088, 1115, 1119, 1150, 1060, 1083, 1085, 1114, 1121, 1146, 1057, 1059, 1061, 1082, 1086, 1088, 1119, 1150, 1060, 1083, 1085, 1114, 1121, 1146, 1057, 1061, 1082, 1085, 1088, 1119, 1150, 1059, 1083, 1087, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1085, 1088, 1119, 1150, 1060, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1115, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1071, 1082, 1086, 1087, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1071, 1082, 1086, 1087, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1078, 1073, 1077, 1079, 1081, 1072, 1073, 1081, 1072, 1073, 1081, 1073, 1081, 1071, 1086, 1087, 1071, 1086, 1087, 1072, 1081, 1071, 1086, 1087, 1072, 1081, 1071, 1086, 1087, 1072, 1081, 1071, 1086, 1087, 1072, 1081, 1071, 1077, 1086, 1087, 1072, 1076, 1078, 1081, 1071, 1077, 1086, 1087, 1072, 1076, 1078, 1081, 1071, 1075, 1086, 1087, 1072, 1074, 1076, 1081, 1071, 1086, 1087, 1072, 1077, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1071, 1082, 1086, 1087, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1071, 1082, 1086, 1087, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1071, 1082, 1086, 1087, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1071, 1077, 1082, 1086, 1087, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1071, 1082, 1086, 1087, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1073, 1074, 1082, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1075, 1081, 1070, 1072, 1073, 1074, 1075, 1081, 1070, 1072, 1073, 1074, 1075, 1081, 1117, 1071, 1082, 1086, 1087, 1117, 1072, 1081, 1117, 1072, 1081, 1077, 1117, 1072, 1076, 1078, 1081, 1117, 1072, 1077, 1070, 1072, 1081, 1070, 1072, 1081, 1070, 1077, 1072, 1076, 1078, 1081, 1070, 1072, 1077, 1070, 1072, 1081, 1070, 1072, 1081, 1070, 1077, 1072, 1076, 1078, 1081, 1070, 1072, 1077, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1071, 1086, 1087, 1088, 1119, 1150, 1060, 1081, 1082, 1083, 1085, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1086, 1115, 1119, 1150, 1060, 1083, 1085, 1114, 1121, 1146, 1067, 1082, 1097, 1129, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 1067, 1082, 1104, 1136, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 1067, 1082, 1107, 1139, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1072, 1073, 1074, 1083, 1085, 1087, 1115, 1119, 1150, 1059, 1071, 1075, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1082, 1085, 1088, 1119, 1150, 1059, 1083, 1087, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1085, 1088, 1119, 1150, 1060, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1115, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1082, 1083, 1086, 1087, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1082, 1083, 1086, 1087, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1078, 1073, 1077, 1079, 1081, 1072, 1073, 1081, 1072, 1073, 1081, 1073, 1081, 1083, 1086, 1087, 1057, 1061, 1100, 1103, 1108, 1117, 1119, 1132, 1135, 1140, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1117, 1119, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1083, 1085, 1086, 1087, 1117, 1119, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1086, 1087, 1117, 1119, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1060, 1061, 1087, 1117, 1119, 1150, 1063, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1060, 1061, 1085, 1087, 1117, 1119, 1150, 1063, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1062, 1086, 1087, 1117, 1119, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1117, 1119, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1106, 1117, 1119, 1138, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1117, 1119, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1085, 1086, 1087, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1083, 1086, 1087, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1094, 1095, 1114, 1119, 1120, 1121, 1126, 1127, 1146, 1057, 1061, 1063, 1083, 1086, 1087, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1083, 1086, 1087, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1094, 1095, 1114, 1119, 1120, 1121, 1126, 1127, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1090, 1110, 1117, 1119, 1122, 1142, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1117, 1119, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1097, 1117, 1119, 1129, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1092, 1117, 1119, 1124, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1117, 1119, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1085, 1086, 1087, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1083, 1086, 1087, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1094, 1095, 1114, 1119, 1120, 1121, 1126, 1127, 1146, 1057, 1061, 1063, 1083, 1086, 1087, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1083, 1086, 1087, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1094, 1095, 1114, 1119, 1120, 1121, 1126, 1127, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1106, 1117, 1119, 1138, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1089, 1117, 1119, 1121, 1150, 1060, 1067, 1069, 1082, 1090, 1115, 1122, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1102, 1117, 1119, 1134, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1107, 1117, 1119, 1139, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1104, 1117, 1119, 1136, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1103, 1117, 1119, 1135, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1106, 1117, 1119, 1138, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1108, 1117, 1119, 1140, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1085, 1086, 1087, 1117, 1119, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1085, 1086, 1087, 1107, 1108, 1109, 1111, 1115, 1117, 1120, 1139, 1140, 1141, 1143, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1083, 1086, 1087, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1094, 1095, 1114, 1119, 1120, 1121, 1126, 1127, 1146, 1057, 1061, 1063, 1083, 1086, 1087, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1083, 1086, 1087, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1094, 1095, 1114, 1119, 1120, 1121, 1126, 1127, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1091, 1115, 1117, 1120, 1123, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1108, 1115, 1117, 1120, 1140, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1104, 1115, 1117, 1120, 1136, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1091, 1100, 1115, 1117, 1120, 1123, 1132, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1104, 1115, 1117, 1120, 1136, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1107, 1115, 1117, 1120, 1139, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1092, 1115, 1117, 1120, 1124, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1104, 1115, 1117, 1120, 1136, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1107, 1115, 1117, 1120, 1139, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1107, 1115, 1117, 1120, 1139, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1071, 1082, 1083, 1086, 1087, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1067, 1069, 1081, 1089, 1114, 1119, 1146, 1083, 1086, 1087, 1072, 1081, 1083, 1086, 1087, 1072, 1081, 1083, 1086, 1087, 1072, 1081, 1083, 1086, 1087, 1072, 1081, 1077, 1083, 1086, 1087, 1072, 1076, 1078, 1081, 1077, 1083, 1086, 1087, 1072, 1076, 1078, 1081, 1075, 1083, 1086, 1087, 1072, 1074, 1076, 1081, 1083, 1086, 1087, 1072, 1077, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1082, 1083, 1086, 1087, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1082, 1083, 1086, 1087, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1082, 1083, 1086, 1087, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1082, 1083, 1086, 1087, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1082, 1083, 1086, 1087, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1073, 1074, 1082, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1075, 1081, 1070, 1072, 1073, 1074, 1075, 1081, 1070, 1072, 1073, 1074, 1075, 1081, 1117, 1082, 1083, 1086, 1087, 1117, 1072, 1081, 1117, 1072, 1081, 1077, 1117, 1072, 1076, 1078, 1081, 1117, 1072, 1077, 1070, 1072, 1081, 1070, 1072, 1081, 1070, 1077, 1072, 1076, 1078, 1081, 1070, 1072, 1077, 1070, 1072, 1081, 1070, 1072, 1081, 1070, 1077, 1072, 1076, 1078, 1081, 1070, 1072, 1077, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1086, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1082, 1083, 1085, 1086, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1072, 1078, 1085, 1088, 1119, 1150, 1060, 1070, 1073, 1077, 1079, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1072, 1085, 1088, 1119, 1150, 1060, 1070, 1073, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1072, 1085, 1088, 1119, 1150, 1060, 1070, 1073, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1072, 1085, 1088, 1119, 1150, 1060, 1070, 1073, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1083, 1086, 1087, 1088, 1119, 1150, 1060, 1070, 1072, 1081, 1085, 1114, 1121, 1146, 1057, 1061, 1083, 1086, 1087, 1088, 1119, 1150, 1060, 1070, 1072, 1081, 1085, 1114, 1121, 1146, 1057, 1061, 1083, 1086, 1087, 1088, 1119, 1150, 1060, 1070, 1072, 1081, 1085, 1114, 1121, 1146, 1057, 1061, 1083, 1086, 1087, 1088, 1119, 1150, 1060, 1070, 1072, 1081, 1085, 1114, 1121, 1146, 1057, 1061, 1083, 1086, 1087, 1088, 1119, 1150, 1060, 1070, 1072, 1081, 1085, 1114, 1121, 1146, 1057, 1061, 1077, 1083, 1086, 1087, 1088, 1119, 1150, 1060, 1070, 1072, 1076, 1078, 1081, 1085, 1114, 1121, 1146, 1057, 1061, 1077, 1083, 1086, 1087, 1088, 1119, 1150, 1060, 1070, 1072, 1076, 1078, 1081, 1085, 1114, 1121, 1146, 1057, 1061, 1075, 1083, 1086, 1087, 1088, 1119, 1150, 1060, 1070, 1072, 1074, 1076, 1081, 1085, 1114, 1121, 1146, 1057, 1061, 1083, 1086, 1087, 1088, 1119, 1150, 1060, 1070, 1072, 1077, 1078, 1081, 1085, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1087, 1088, 1100, 1103, 1108, 1115, 1117, 1119, 1132, 1135, 1140, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1068, 1071, 1082, 1085, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1060, 1061, 1068, 1082, 1083, 1085, 1088, 1115, 1117, 1119, 1150, 1059, 1062, 1063, 1081, 1087, 1114, 1121, 1146, 1057, 1060, 1061, 1068, 1082, 1083, 1085, 1088, 1115, 1117, 1119, 1150, 1059, 1062, 1063, 1081, 1087, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1062, 1068, 1071, 1082, 1085, 1087, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1062, 1068, 1071, 1082, 1085, 1086, 1087, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1062, 1068, 1071, 1082, 1085, 1087, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1062, 1068, 1082, 1083, 1085, 1086, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1087, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1087, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1106, 1115, 1117, 1119, 1138, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1083, 1086, 1087, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1094, 1095, 1114, 1119, 1120, 1121, 1126, 1127, 1146, 1057, 1061, 1063, 1083, 1086, 1087, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1094, 1095, 1114, 1119, 1120, 1121, 1126, 1127, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1090, 1110, 1115, 1117, 1119, 1122, 1142, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1097, 1115, 1117, 1119, 1129, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1092, 1115, 1117, 1119, 1124, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1083, 1086, 1087, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1094, 1095, 1114, 1119, 1120, 1121, 1126, 1127, 1146, 1057, 1061, 1063, 1083, 1086, 1087, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1094, 1095, 1114, 1119, 1120, 1121, 1126, 1127, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1106, 1115, 1117, 1119, 1138, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1089, 1115, 1117, 1119, 1121, 1150, 1060, 1081, 1090, 1114, 1122, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1102, 1115, 1117, 1119, 1134, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1107, 1115, 1117, 1119, 1139, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1104, 1115, 1117, 1119, 1136, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1103, 1115, 1117, 1119, 1135, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1106, 1115, 1117, 1119, 1138, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1108, 1115, 1117, 1119, 1140, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1068, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1119, 1150, 1060, 1081, 1089, 1114, 1121, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1107, 1108, 1109, 1111, 1115, 1117, 1120, 1139, 1140, 1141, 1143, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1063, 1083, 1086, 1087, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1094, 1095, 1114, 1119, 1120, 1121, 1126, 1127, 1146, 1057, 1061, 1063, 1083, 1086, 1087, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1094, 1095, 1114, 1119, 1120, 1121, 1126, 1127, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1091, 1115, 1117, 1120, 1123, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1108, 1115, 1117, 1120, 1140, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1104, 1115, 1117, 1120, 1136, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1091, 1100, 1115, 1117, 1120, 1123, 1132, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1104, 1115, 1117, 1120, 1136, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1107, 1115, 1117, 1120, 1139, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1092, 1115, 1117, 1120, 1124, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1104, 1115, 1117, 1120, 1136, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1107, 1115, 1117, 1120, 1139, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1107, 1115, 1117, 1120, 1139, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1059, 1061, 1063, 1068, 1071, 1082, 1083, 1085, 1086, 1087, 1088, 1115, 1117, 1120, 1150, 1060, 1065, 1066, 1081, 1089, 1114, 1119, 1146, 1057, 1061, 1072, 1073, 1074, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1075, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1072, 1073, 1074, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1075, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1072, 1073, 1074, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1075, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1086, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1086, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1086, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1077, 1082, 1083, 1085, 1086, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1086, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1077, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1077, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1077, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1082, 1083, 1085, 1087, 1088, 1119, 1150, 1059, 1071, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1067, 1082, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 1067, 1082, 1093, 1125, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 1067, 1082, 1100, 1132, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 1067, 1082, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 1059, 1066, 1067, 1064, 1065, 1069, 1070, 1072, 1081, 1089, 1094, 1121, 1126, 1059, 1083, 1086, 1064, 1066, 1069, 1070, 1072, 1081, 1089, 1094, 1121, 1126, 1069, 1104, 1136, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1083, 1085, 1086, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1117, 1119, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1057, 1061, 1083, 1086, 1117, 1119, 1150, 1060, 1067, 1069, 1082, 1089, 1115, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1069, 1083, 1085, 1086, 1096, 1128, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1083, 1085, 1086, 1103, 1135, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1083, 1085, 1086, 1102, 1134, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1083, 1085, 1086, 1093, 1125, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1083, 1085, 1086, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1083, 1085, 1086, 1091, 1123, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1083, 1085, 1086, 1103, 1135, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1083, 1085, 1086, 1102, 1134, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1083, 1085, 1086, 1108, 1140, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1083, 1085, 1086, 1093, 1125, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1083, 1085, 1086, 1112, 1144, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1083, 1085, 1086, 1108, 1140, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1083, 1085, 1086, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1067, 1082, 1115, 1117, 1119, 1150, 1060, 1066, 1069, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1071, 1082, 1083, 1086, 1117, 1119, 1150, 1060, 1063, 1064, 1065, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1115, 1121, 1146, 1057, 1061, 1071, 1082, 1083, 1086, 1117, 1119, 1150, 1060, 1063, 1064, 1065, 1066, 1067, 1069, 1081, 1089, 1115, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1082, 1083, 1086, 1115, 1117, 1119, 1150, 1060, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1082, 1083, 1086, 1115, 1117, 1119, 1150, 1060, 1067, 1070, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1082, 1083, 1086, 1115, 1117, 1119, 1150, 1060, 1067, 1069, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1082, 1083, 1086, 1115, 1117, 1119, 1150, 1060, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1082, 1083, 1086, 1115, 1117, 1119, 1150, 1060, 1067, 1070, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1082, 1083, 1086, 1115, 1117, 1119, 1150, 1060, 1067, 1069, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1059, 1066, 1064, 1065, 1069, 1070, 1072, 1081, 1089, 1094, 1121, 1126, 1064, 1065, 1069, 1070, 1072, 1081, 1083, 1086, 1064, 1065, 1069, 1070, 1072, 1081, 1033, 1037, 1056, 1057, 1061, 1063, 1084, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1146, 1033, 1037, 1056, 1057, 1061, 1063, 1084, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1146, 1034, 1033, 1056, 1033, 1056, 1057, 1061, 1063, 1084, 1150, 1066, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1146, 1033, 1037, 1058, 1116, 960, 991, 992, 1007, 1008, 1015, 1016, 1019, 1020, 1021, 1056, 1150, 896, 959, 896, 959, 896, 959, 896, 959, 896, 959, 1034, 1033, 1056, 1033, 1037, 1056, 1084, 1024, 1033, 1035, 1036, 1038, 1151, 555, 570, 557, 558, 560, 569, 577, 602, 609, 634, 0, 545, 547, 549, 559, 570, 573, 576, 603, 607, 638, 548, 571, 575, 602, 609, 634, 0, 545, 547, 549, 570, 573, 576, 607, 638, 548, 571, 575, 602, 609, 634, 545, 549, 570, 573, 576, 607, 638, 547, 571, 575, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 545, 549, 573, 576, 607, 638, 548, 558, 560, 569, 577, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 560, 561, 562, 603, 563, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 607, 560, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 560, 569, 577, 602, 609, 634, 0, 557, 558, 570, 575, 607, 560, 569, 577, 602, 609, 634, 557, 607, 560, 569, 577, 602, 609, 634, 0, 570, 575, 560, 569, 577, 602, 609, 634, 560, 566, 561, 565, 567, 569, 560, 561, 569, 560, 561, 569, 561, 569, 0, 575, 0, 545, 549, 573, 607, 638, 548, 571, 575, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 0, 575, 560, 569, 0, 575, 560, 569, 0, 575, 560, 569, 0, 575, 560, 569, 0, 565, 575, 560, 564, 566, 569, 0, 565, 575, 560, 564, 566, 569, 0, 563, 575, 560, 562, 564, 569, 0, 575, 560, 565, 560, 561, 562, 563, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 560, 561, 562, 563, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 560, 561, 562, 563, 569, 577, 602, 609, 634, 0, 557, 558, 570, 575, 607, 560, 569, 577, 602, 609, 634, 0, 557, 558, 570, 575, 607, 560, 569, 577, 602, 609, 634, 0, 557, 558, 570, 575, 607, 560, 569, 577, 602, 609, 634, 0, 557, 558, 565, 570, 575, 607, 560, 564, 566, 569, 577, 602, 609, 634, 0, 557, 558, 570, 575, 607, 560, 565, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 565, 607, 560, 564, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 565, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 565, 607, 560, 564, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 565, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 565, 607, 560, 564, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 565, 566, 569, 577, 602, 609, 634, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 561, 562, 570, 563, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 560, 561, 562, 563, 569, 558, 560, 561, 562, 563, 569, 558, 560, 561, 562, 563, 569, 605, 0, 570, 575, 605, 560, 569, 605, 560, 569, 565, 605, 560, 564, 566, 569, 605, 560, 565, 558, 560, 569, 558, 560, 569, 558, 565, 560, 564, 566, 569, 558, 560, 565, 558, 560, 569, 558, 560, 569, 558, 565, 560, 564, 566, 569, 558, 560, 565, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 605, 560, 569, 577, 582, 609, 614, 605, 560, 569, 577, 582, 609, 614, 605, 560, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 558, 565, 570, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 605, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 561, 562, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 561, 562, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 561, 562, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 561, 562, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 561, 562, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 0, 545, 549, 559, 573, 575, 576, 607, 638, 548, 569, 570, 571, 577, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 0, 545, 549, 573, 603, 607, 638, 548, 571, 575, 602, 609, 634, 0, 545, 547, 549, 559, 570, 573, 576, 607, 638, 548, 571, 575, 602, 609, 634, 0, 545, 547, 549, 570, 573, 576, 603, 607, 638, 548, 571, 575, 602, 609, 634, 0, 545, 547, 549, 570, 573, 576, 607, 638, 548, 571, 575, 602, 609, 634, 545, 549, 570, 573, 576, 607, 638, 547, 571, 575, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 545, 549, 573, 576, 607, 638, 548, 558, 560, 569, 577, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 560, 561, 562, 603, 563, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 607, 560, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 560, 569, 577, 602, 609, 634, 0, 557, 558, 559, 570, 575, 607, 560, 569, 577, 602, 609, 634, 557, 607, 560, 569, 577, 602, 609, 634, 0, 559, 570, 575, 560, 569, 577, 602, 609, 634, 560, 566, 561, 565, 567, 569, 560, 561, 569, 560, 561, 569, 561, 569, 0, 559, 575, 0, 559, 575, 560, 569, 0, 559, 575, 560, 569, 0, 559, 575, 560, 569, 0, 559, 575, 560, 569, 0, 559, 565, 575, 560, 564, 566, 569, 0, 559, 565, 575, 560, 564, 566, 569, 0, 559, 563, 575, 560, 562, 564, 569, 0, 559, 575, 560, 565, 560, 561, 562, 563, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 560, 561, 562, 563, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 560, 561, 562, 563, 569, 577, 602, 609, 634, 0, 557, 558, 559, 570, 575, 607, 560, 569, 577, 602, 609, 634, 0, 557, 558, 559, 570, 575, 607, 560, 569, 577, 602, 609, 634, 0, 557, 558, 559, 570, 575, 607, 560, 569, 577, 602, 609, 634, 0, 557, 558, 559, 565, 570, 575, 607, 560, 564, 566, 569, 577, 602, 609, 634, 0, 557, 558, 559, 570, 575, 607, 560, 565, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 565, 607, 560, 564, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 565, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 565, 607, 560, 564, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 565, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 565, 607, 560, 564, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 565, 566, 569, 577, 602, 609, 634, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 561, 562, 570, 563, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 560, 561, 562, 563, 569, 558, 560, 561, 562, 563, 569, 558, 560, 561, 562, 563, 569, 605, 0, 559, 570, 575, 605, 560, 569, 605, 560, 569, 565, 605, 560, 564, 566, 569, 605, 560, 565, 558, 560, 569, 558, 560, 569, 558, 565, 560, 564, 566, 569, 558, 560, 565, 558, 560, 569, 558, 560, 569, 558, 565, 560, 564, 566, 569, 558, 560, 565, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 605, 560, 569, 577, 582, 609, 614, 605, 560, 569, 577, 582, 609, 614, 605, 560, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 558, 565, 570, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 605, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 561, 562, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 561, 562, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 561, 562, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 561, 562, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 561, 562, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 0, 545, 549, 559, 573, 575, 576, 607, 638, 548, 569, 570, 571, 577, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 0, 545, 549, 573, 603, 607, 638, 548, 571, 575, 602, 609, 634, 555, 570, 585, 617, 557, 558, 560, 569, 577, 602, 609, 634, 555, 570, 592, 624, 557, 558, 560, 569, 577, 602, 609, 634, 555, 570, 595, 627, 557, 558, 560, 569, 577, 602, 609, 634, 545, 549, 560, 561, 562, 571, 573, 575, 603, 607, 638, 547, 559, 563, 569, 577, 602, 609, 634, 545, 549, 570, 573, 576, 607, 638, 547, 571, 575, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 545, 549, 573, 576, 607, 638, 548, 558, 560, 569, 577, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 560, 561, 562, 603, 563, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 607, 560, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 560, 569, 577, 602, 609, 634, 0, 557, 558, 570, 571, 575, 607, 560, 569, 577, 602, 609, 634, 557, 607, 560, 569, 577, 602, 609, 634, 0, 570, 571, 575, 560, 569, 577, 602, 609, 634, 560, 566, 561, 565, 567, 569, 560, 561, 569, 560, 561, 569, 561, 569, 0, 571, 575, 545, 549, 588, 591, 596, 605, 607, 620, 623, 628, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 573, 575, 605, 607, 638, 548, 555, 557, 570, 577, 603, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 0, 545, 549, 571, 573, 575, 605, 607, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 575, 605, 607, 638, 548, 555, 557, 570, 577, 603, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 545, 548, 549, 575, 605, 607, 638, 551, 555, 557, 570, 577, 603, 609, 634, 545, 548, 549, 573, 575, 605, 607, 638, 551, 555, 557, 570, 577, 603, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 0, 545, 549, 550, 575, 605, 607, 638, 548, 555, 557, 570, 577, 603, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 545, 549, 605, 607, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 573, 575, 594, 605, 607, 626, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 573, 575, 605, 607, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 551, 559, 570, 571, 573, 575, 603, 605, 608, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 603, 605, 608, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 571, 575, 638, 554, 555, 557, 558, 560, 569, 577, 582, 583, 602, 607, 608, 609, 614, 615, 634, 0, 545, 549, 551, 571, 575, 638, 554, 555, 557, 558, 560, 569, 577, 602, 607, 634, 0, 545, 549, 551, 571, 575, 638, 554, 555, 557, 558, 560, 569, 577, 582, 583, 602, 607, 608, 609, 614, 615, 634, 0, 545, 549, 571, 573, 575, 578, 598, 605, 607, 610, 630, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 573, 575, 605, 607, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 573, 575, 585, 605, 607, 617, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 573, 575, 580, 605, 607, 612, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 573, 575, 605, 607, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 551, 559, 570, 571, 573, 575, 603, 605, 608, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 603, 605, 608, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 571, 575, 638, 554, 555, 557, 558, 560, 569, 577, 582, 583, 602, 607, 608, 609, 614, 615, 634, 0, 545, 549, 551, 571, 575, 638, 554, 555, 557, 558, 560, 569, 577, 602, 607, 634, 0, 545, 549, 551, 571, 575, 638, 554, 555, 557, 558, 560, 569, 577, 582, 583, 602, 607, 608, 609, 614, 615, 634, 0, 545, 549, 571, 573, 575, 594, 605, 607, 626, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 573, 575, 577, 605, 607, 609, 638, 548, 555, 557, 570, 578, 603, 610, 634, 0, 545, 549, 571, 573, 575, 590, 605, 607, 622, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 573, 575, 595, 605, 607, 627, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 573, 575, 592, 605, 607, 624, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 573, 575, 591, 605, 607, 623, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 573, 575, 594, 605, 607, 626, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 573, 575, 596, 605, 607, 628, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 573, 575, 605, 607, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 551, 559, 570, 571, 573, 575, 595, 596, 597, 599, 603, 605, 608, 627, 628, 629, 631, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 603, 605, 608, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 571, 575, 638, 554, 555, 557, 558, 560, 569, 577, 582, 583, 602, 607, 608, 609, 614, 615, 634, 0, 545, 549, 551, 571, 575, 638, 554, 555, 557, 558, 560, 569, 577, 602, 607, 634, 0, 545, 549, 551, 571, 575, 638, 554, 555, 557, 558, 560, 569, 577, 582, 583, 602, 607, 608, 609, 614, 615, 634, 0, 545, 549, 551, 559, 570, 571, 575, 579, 603, 605, 608, 611, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 596, 603, 605, 608, 628, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 592, 603, 605, 608, 624, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 603, 605, 608, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 579, 588, 603, 605, 608, 611, 620, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 592, 603, 605, 608, 624, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 603, 605, 608, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 595, 603, 605, 608, 627, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 603, 605, 608, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 580, 603, 605, 608, 612, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 592, 603, 605, 608, 624, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 603, 605, 608, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 595, 603, 605, 608, 627, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 595, 603, 605, 608, 627, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 545, 549, 551, 559, 570, 571, 575, 603, 605, 608, 638, 548, 553, 554, 555, 557, 569, 577, 602, 607, 634, 0, 571, 575, 560, 569, 0, 571, 575, 560, 569, 0, 571, 575, 560, 569, 0, 571, 575, 560, 569, 0, 565, 571, 575, 560, 564, 566, 569, 0, 565, 571, 575, 560, 564, 566, 569, 0, 563, 571, 575, 560, 562, 564, 569, 0, 571, 575, 560, 565, 560, 561, 562, 563, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 560, 561, 562, 563, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 560, 561, 562, 563, 569, 577, 602, 609, 634, 0, 557, 558, 570, 571, 575, 607, 560, 569, 577, 602, 609, 634, 0, 557, 558, 570, 571, 575, 607, 560, 569, 577, 602, 609, 634, 0, 557, 558, 570, 571, 575, 607, 560, 569, 577, 602, 609, 634, 0, 557, 558, 565, 570, 571, 575, 607, 560, 564, 566, 569, 577, 602, 609, 634, 0, 557, 558, 570, 571, 575, 607, 560, 565, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 565, 607, 560, 564, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 565, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 565, 607, 560, 564, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 565, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 607, 560, 569, 577, 602, 609, 634, 557, 558, 565, 607, 560, 564, 566, 569, 577, 602, 609, 634, 557, 558, 607, 560, 565, 566, 569, 577, 602, 609, 634, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 560, 561, 562, 570, 563, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 560, 561, 562, 563, 569, 558, 560, 561, 562, 563, 569, 558, 560, 561, 562, 563, 569, 605, 0, 570, 571, 575, 605, 560, 569, 605, 560, 569, 565, 605, 560, 564, 566, 569, 605, 560, 565, 558, 560, 569, 558, 560, 569, 558, 565, 560, 564, 566, 569, 558, 560, 565, 558, 560, 569, 558, 560, 569, 558, 565, 560, 564, 566, 569, 558, 560, 565, 570, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 570, 570, 560, 569, 577, 582, 609, 614, 605, 560, 569, 577, 582, 609, 614, 605, 560, 569, 577, 582, 609, 614, 605, 560, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 558, 565, 570, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 558, 570, 560, 569, 577, 582, 609, 614, 605, 560, 569, 577, 582, 609, 614, 570, 560, 569, 577, 582, 609, 614, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 561, 562, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 561, 562, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 561, 562, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 561, 562, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 560, 561, 562, 605, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 561, 562, 563, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 565, 570, 605, 560, 564, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 565, 566, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 558, 570, 605, 560, 569, 577, 582, 609, 614, 570, 605, 560, 569, 577, 582, 609, 614, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 545, 549, 557, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 545, 549, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 0, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 545, 549, 557, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 0, 545, 549, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 545, 549, 560, 566, 573, 576, 607, 638, 548, 558, 561, 565, 567, 569, 577, 602, 609, 634, 545, 549, 560, 573, 576, 607, 638, 548, 558, 561, 569, 577, 602, 609, 634, 545, 549, 560, 573, 576, 607, 638, 548, 558, 561, 569, 577, 602, 609, 634, 545, 549, 560, 573, 576, 607, 638, 548, 558, 561, 569, 577, 602, 609, 634, 0, 545, 549, 571, 573, 575, 576, 607, 638, 548, 558, 560, 569, 577, 602, 609, 634, 0, 545, 549, 571, 573, 575, 576, 607, 638, 548, 558, 560, 569, 577, 602, 609, 634, 0, 545, 549, 571, 573, 575, 576, 607, 638, 548, 558, 560, 569, 577, 602, 609, 634, 0, 545, 549, 571, 573, 575, 576, 607, 638, 548, 558, 560, 569, 577, 602, 609, 634, 0, 545, 549, 571, 573, 575, 576, 607, 638, 548, 558, 560, 569, 577, 602, 609, 634, 0, 545, 549, 565, 571, 573, 575, 576, 607, 638, 548, 558, 560, 564, 566, 569, 577, 602, 609, 634, 0, 545, 549, 565, 571, 573, 575, 576, 607, 638, 548, 558, 560, 564, 566, 569, 577, 602, 609, 634, 0, 545, 549, 563, 571, 573, 575, 576, 607, 638, 548, 558, 560, 562, 564, 569, 577, 602, 609, 634, 0, 545, 549, 571, 573, 575, 576, 607, 638, 548, 558, 560, 565, 566, 569, 577, 602, 609, 634, 545, 547, 549, 556, 570, 571, 573, 575, 576, 588, 591, 596, 603, 605, 607, 620, 623, 628, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 603, 605, 607, 638, 548, 569, 577, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 0, 545, 549, 556, 559, 570, 571, 573, 575, 576, 603, 605, 607, 638, 548, 569, 577, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 0, 545, 549, 556, 559, 570, 571, 573, 575, 576, 603, 605, 607, 638, 548, 569, 577, 602, 609, 634, 0, 545, 549, 556, 559, 570, 571, 573, 575, 576, 603, 605, 607, 638, 548, 569, 577, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 545, 549, 556, 559, 570, 573, 576, 603, 605, 607, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 603, 605, 607, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 603, 605, 607, 638, 548, 569, 577, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 545, 548, 549, 556, 570, 571, 573, 576, 603, 605, 607, 638, 547, 550, 551, 569, 575, 602, 609, 634, 545, 548, 549, 556, 570, 571, 573, 576, 603, 605, 607, 638, 547, 550, 551, 569, 575, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 545, 549, 550, 556, 559, 570, 573, 575, 576, 603, 605, 607, 638, 548, 569, 577, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 0, 545, 549, 550, 556, 559, 570, 573, 575, 576, 603, 605, 607, 638, 548, 569, 577, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 545, 549, 550, 556, 559, 570, 573, 575, 576, 603, 605, 607, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 550, 556, 570, 571, 573, 576, 603, 605, 607, 638, 548, 569, 575, 602, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 545, 547, 549, 556, 570, 571, 573, 575, 576, 603, 605, 607, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 594, 603, 605, 607, 626, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 603, 605, 607, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 603, 605, 608, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 603, 605, 608, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 549, 551, 571, 575, 638, 554, 555, 557, 558, 560, 569, 577, 582, 583, 602, 607, 608, 609, 614, 615, 634, 0, 545, 549, 551, 571, 575, 638, 554, 555, 557, 558, 560, 569, 577, 582, 583, 602, 607, 608, 609, 614, 615, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 578, 598, 603, 605, 607, 610, 630, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 603, 605, 607, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 585, 603, 605, 607, 617, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 580, 603, 605, 607, 612, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 603, 605, 607, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 603, 605, 608, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 603, 605, 608, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 549, 551, 571, 575, 638, 554, 555, 557, 558, 560, 569, 577, 582, 583, 602, 607, 608, 609, 614, 615, 634, 0, 545, 549, 551, 571, 575, 638, 554, 555, 557, 558, 560, 569, 577, 582, 583, 602, 607, 608, 609, 614, 615, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 594, 603, 605, 607, 626, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 577, 603, 605, 607, 609, 638, 548, 569, 578, 602, 610, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 590, 603, 605, 607, 622, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 595, 603, 605, 607, 627, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 592, 603, 605, 607, 624, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 591, 603, 605, 607, 623, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 594, 603, 605, 607, 626, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 596, 603, 605, 607, 628, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 556, 570, 571, 573, 575, 576, 603, 605, 607, 638, 548, 569, 577, 602, 609, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 595, 596, 597, 599, 603, 605, 608, 627, 628, 629, 631, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 603, 605, 608, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 549, 551, 571, 575, 638, 554, 555, 557, 558, 560, 569, 577, 582, 583, 602, 607, 608, 609, 614, 615, 634, 0, 545, 549, 551, 571, 575, 638, 554, 555, 557, 558, 560, 569, 577, 582, 583, 602, 607, 608, 609, 614, 615, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 579, 603, 605, 608, 611, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 596, 603, 605, 608, 628, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 592, 603, 605, 608, 624, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 603, 605, 608, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 579, 588, 603, 605, 608, 611, 620, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 592, 603, 605, 608, 624, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 603, 605, 608, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 595, 603, 605, 608, 627, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 603, 605, 608, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 580, 603, 605, 608, 612, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 592, 603, 605, 608, 624, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 603, 605, 608, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 595, 603, 605, 608, 627, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 595, 603, 605, 608, 627, 638, 548, 553, 554, 569, 577, 602, 607, 634, 0, 545, 547, 549, 551, 556, 559, 570, 571, 573, 575, 576, 603, 605, 608, 638, 548, 553, 554, 569, 577, 602, 607, 634, 545, 549, 560, 561, 562, 570, 571, 573, 575, 576, 607, 638, 547, 559, 563, 569, 577, 602, 609, 634, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 545, 549, 560, 561, 562, 570, 571, 573, 575, 576, 607, 638, 547, 559, 563, 569, 577, 602, 609, 634, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 545, 549, 560, 561, 562, 570, 571, 573, 575, 576, 607, 638, 547, 559, 563, 569, 577, 602, 609, 634, 0, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 0, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 0, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 0, 545, 549, 557, 558, 565, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 564, 566, 569, 577, 602, 609, 634, 0, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 565, 566, 569, 577, 602, 609, 634, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 545, 549, 557, 558, 565, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 564, 566, 569, 577, 602, 609, 634, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 565, 566, 569, 577, 602, 609, 634, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 545, 549, 557, 558, 565, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 564, 566, 569, 577, 602, 609, 634, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 565, 566, 569, 577, 602, 609, 634, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 569, 577, 602, 609, 634, 545, 549, 557, 558, 565, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 564, 566, 569, 577, 602, 609, 634, 545, 549, 557, 558, 570, 571, 573, 575, 576, 607, 638, 547, 559, 560, 565, 566, 569, 577, 602, 609, 634, 555, 570, 557, 558, 560, 569, 577, 602, 609, 634, 555, 570, 581, 613, 557, 558, 560, 569, 577, 602, 609, 634, 555, 570, 588, 620, 557, 558, 560, 569, 577, 602, 609, 634, 555, 570, 557, 558, 560, 569, 577, 602, 609, 634, 547, 554, 555, 552, 553, 557, 558, 560, 569, 577, 582, 609, 614, 0, 547, 571, 552, 554, 557, 558, 560, 569, 577, 582, 609, 614, 557, 592, 624, 560, 569, 577, 602, 609, 634, 0, 557, 571, 573, 560, 569, 577, 602, 609, 634, 545, 549, 605, 607, 638, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 571, 605, 607, 638, 548, 555, 557, 570, 577, 603, 609, 634, 560, 569, 577, 582, 609, 614, 560, 569, 577, 582, 609, 614, 0, 557, 571, 573, 584, 616, 560, 569, 577, 602, 609, 634, 0, 557, 571, 573, 591, 623, 560, 569, 577, 602, 609, 634, 0, 557, 571, 573, 590, 622, 560, 569, 577, 602, 609, 634, 0, 557, 571, 573, 581, 613, 560, 569, 577, 602, 609, 634, 0, 557, 571, 573, 560, 569, 577, 602, 609, 634, 0, 557, 571, 573, 579, 611, 560, 569, 577, 602, 609, 634, 0, 557, 571, 573, 591, 623, 560, 569, 577, 602, 609, 634, 0, 557, 571, 573, 590, 622, 560, 569, 577, 602, 609, 634, 0, 557, 571, 573, 596, 628, 560, 569, 577, 602, 609, 634, 0, 557, 571, 573, 581, 613, 560, 569, 577, 602, 609, 634, 0, 557, 571, 573, 600, 632, 560, 569, 577, 602, 609, 634, 0, 557, 571, 573, 596, 628, 560, 569, 577, 602, 609, 634, 0, 557, 571, 573, 560, 569, 577, 602, 609, 634, 545, 549, 555, 570, 603, 605, 607, 638, 548, 554, 557, 559, 560, 569, 577, 602, 609, 634, 0, 545, 549, 559, 570, 571, 605, 607, 638, 548, 551, 552, 553, 554, 555, 557, 558, 560, 569, 577, 603, 609, 634, 0, 545, 549, 559, 570, 571, 605, 607, 638, 548, 551, 552, 553, 554, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 557, 558, 559, 570, 571, 603, 605, 607, 638, 548, 555, 560, 569, 577, 602, 609, 634, 0, 545, 549, 557, 570, 571, 603, 605, 607, 638, 548, 555, 558, 559, 560, 569, 577, 602, 609, 634, 0, 545, 549, 570, 571, 603, 605, 607, 638, 548, 555, 557, 559, 560, 569, 577, 602, 609, 634, 0, 545, 549, 557, 558, 559, 570, 571, 603, 605, 607, 638, 548, 555, 560, 569, 577, 602, 609, 634, 0, 545, 549, 557, 570, 571, 603, 605, 607, 638, 548, 555, 558, 559, 560, 569, 577, 602, 609, 634, 0, 545, 549, 570, 571, 603, 605, 607, 638, 548, 555, 557, 559, 560, 569, 577, 602, 609, 634, 547, 554, 552, 553, 557, 558, 560, 569, 577, 582, 609, 614, 552, 553, 557, 558, 560, 569, 0, 571, 552, 553, 557, 558, 560, 569, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1067, 1082, 1084, 1150, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1120, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1059, 1061, 1071, 1082, 1083, 1085, 1088, 1115, 1119, 1150, 1060, 1067, 1069, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1059, 1061, 1082, 1083, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1069, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1115, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1082, 1083, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1082, 1083, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1078, 1073, 1077, 1079, 1081, 1072, 1073, 1081, 1072, 1073, 1081, 1073, 1081, 0, 1033, 1037, 1056, 1083, 0, 1033, 1037, 1056, 1083, 1072, 1081, 0, 1033, 1037, 1056, 1083, 1072, 1081, 0, 1033, 1037, 1056, 1083, 1072, 1081, 0, 1033, 1037, 1056, 1083, 1072, 1081, 0, 1033, 1037, 1056, 1077, 1083, 1072, 1076, 1078, 1081, 0, 1033, 1037, 1056, 1077, 1083, 1072, 1076, 1078, 1081, 0, 1033, 1037, 1056, 1075, 1083, 1072, 1074, 1076, 1081, 0, 1033, 1037, 1056, 1083, 1072, 1077, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1082, 1083, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1082, 1083, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1082, 1083, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1077, 1082, 1083, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1082, 1083, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1073, 1074, 1082, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1075, 1081, 1070, 1072, 1073, 1074, 1075, 1081, 1070, 1072, 1073, 1074, 1075, 1081, 1117, 0, 1033, 1037, 1056, 1082, 1083, 1117, 1072, 1081, 1117, 1072, 1081, 1077, 1117, 1072, 1076, 1078, 1081, 1117, 1072, 1077, 1070, 1072, 1081, 1070, 1072, 1081, 1070, 1077, 1072, 1076, 1078, 1081, 1070, 1072, 1077, 1070, 1072, 1081, 1070, 1072, 1081, 1070, 1077, 1072, 1076, 1078, 1081, 1070, 1072, 1077, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 0, 1033, 1037, 1056, 1057, 1061, 1071, 1082, 1083, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 0, 1033, 1037, 1056, 1057, 1061, 1083, 1085, 1119, 1150, 1060, 1067, 1069, 1082, 1088, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 0, 1033, 1037, 1056, 1057, 1061, 1083, 1085, 1115, 1119, 1150, 1060, 1067, 1069, 1082, 1088, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1059, 1061, 1071, 1082, 1083, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1059, 1061, 1082, 1083, 1085, 1088, 1115, 1119, 1150, 1060, 1067, 1069, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1059, 1061, 1082, 1083, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1069, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1115, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1071, 1082, 1083, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1071, 1082, 1083, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1078, 1073, 1077, 1079, 1081, 1072, 1073, 1081, 1072, 1073, 1081, 1073, 1081, 0, 1033, 1037, 1056, 1071, 1083, 0, 1033, 1037, 1056, 1071, 1083, 1072, 1081, 0, 1033, 1037, 1056, 1071, 1083, 1072, 1081, 0, 1033, 1037, 1056, 1071, 1083, 1072, 1081, 0, 1033, 1037, 1056, 1071, 1083, 1072, 1081, 0, 1033, 1037, 1056, 1071, 1077, 1083, 1072, 1076, 1078, 1081, 0, 1033, 1037, 1056, 1071, 1077, 1083, 1072, 1076, 1078, 1081, 0, 1033, 1037, 1056, 1071, 1075, 1083, 1072, 1074, 1076, 1081, 0, 1033, 1037, 1056, 1071, 1083, 1072, 1077, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1071, 1082, 1083, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1071, 1082, 1083, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1071, 1082, 1083, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1071, 1077, 1082, 1083, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1071, 1082, 1083, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1073, 1074, 1082, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1075, 1081, 1070, 1072, 1073, 1074, 1075, 1081, 1070, 1072, 1073, 1074, 1075, 1081, 1117, 0, 1033, 1037, 1056, 1071, 1082, 1083, 1117, 1072, 1081, 1117, 1072, 1081, 1077, 1117, 1072, 1076, 1078, 1081, 1117, 1072, 1077, 1070, 1072, 1081, 1070, 1072, 1081, 1070, 1077, 1072, 1076, 1078, 1081, 1070, 1072, 1077, 1070, 1072, 1081, 1070, 1072, 1081, 1070, 1077, 1072, 1076, 1078, 1081, 1070, 1072, 1077, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 0, 1033, 1037, 1056, 1057, 1061, 1071, 1082, 1083, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 0, 1033, 1037, 1056, 1057, 1061, 1083, 1085, 1115, 1119, 1150, 1060, 1067, 1069, 1082, 1088, 1114, 1121, 1146, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1067, 1082, 1084, 1097, 1129, 1150, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1120, 1121, 1146, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1067, 1082, 1084, 1104, 1136, 1150, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1120, 1121, 1146, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1067, 1082, 1084, 1107, 1139, 1150, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1120, 1121, 1146, 1057, 1061, 1072, 1073, 1074, 1085, 1115, 1119, 1150, 1059, 1067, 1069, 1071, 1075, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1069, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1115, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1082, 1083, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1082, 1083, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1078, 1073, 1077, 1079, 1081, 1072, 1073, 1081, 1072, 1073, 1081, 1073, 1081, 0, 1033, 1037, 1056, 1083, 0, 1033, 1037, 1056, 1083, 1072, 1081, 0, 1033, 1037, 1056, 1083, 1072, 1081, 0, 1033, 1037, 1056, 1083, 1072, 1081, 0, 1033, 1037, 1056, 1083, 1072, 1081, 0, 1033, 1037, 1056, 1077, 1083, 1072, 1076, 1078, 1081, 0, 1033, 1037, 1056, 1077, 1083, 1072, 1076, 1078, 1081, 0, 1033, 1037, 1056, 1075, 1083, 1072, 1074, 1076, 1081, 0, 1033, 1037, 1056, 1083, 1072, 1077, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1072, 1073, 1074, 1075, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1082, 1083, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1082, 1083, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1082, 1083, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1077, 1082, 1083, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1069, 1070, 1082, 1083, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1077, 1119, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1069, 1070, 1119, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1073, 1074, 1082, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1075, 1081, 1070, 1072, 1073, 1074, 1075, 1081, 1070, 1072, 1073, 1074, 1075, 1081, 1117, 0, 1033, 1037, 1056, 1082, 1083, 1117, 1072, 1081, 1117, 1072, 1081, 1077, 1117, 1072, 1076, 1078, 1081, 1117, 1072, 1077, 1070, 1072, 1081, 1070, 1072, 1081, 1070, 1077, 1072, 1076, 1078, 1081, 1070, 1072, 1077, 1070, 1072, 1081, 1070, 1072, 1081, 1070, 1077, 1072, 1076, 1078, 1081, 1070, 1072, 1077, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1072, 1073, 1074, 1117, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1073, 1074, 1075, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1077, 1082, 1117, 1072, 1076, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1077, 1078, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1070, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1082, 1117, 1072, 1081, 1089, 1094, 1121, 1126, 1057, 1061, 1069, 1070, 1071, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1070, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1069, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1069, 1070, 1071, 1082, 1083, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1070, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1082, 1083, 1085, 1088, 1119, 1150, 1059, 1067, 1069, 1071, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1072, 1078, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1073, 1077, 1079, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1072, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1073, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1072, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1073, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1072, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1073, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1083, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1083, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1083, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1083, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1083, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1077, 1083, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1077, 1083, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1075, 1083, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1072, 1074, 1076, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1083, 1085, 1088, 1119, 1150, 1060, 1067, 1069, 1070, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1072, 1073, 1074, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1069, 1071, 1075, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1072, 1073, 1074, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1069, 1071, 1075, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1072, 1073, 1074, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1069, 1071, 1075, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1069, 1070, 1071, 1082, 1083, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1069, 1070, 1071, 1082, 1083, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1069, 1070, 1071, 1082, 1083, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1069, 1070, 1071, 1077, 1082, 1083, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 0, 1033, 1037, 1056, 1057, 1061, 1069, 1070, 1071, 1082, 1083, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1077, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1077, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1077, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1076, 1078, 1081, 1089, 1114, 1121, 1146, 1057, 1061, 1069, 1070, 1071, 1082, 1085, 1088, 1119, 1150, 1059, 1067, 1072, 1077, 1078, 1081, 1089, 1114, 1121, 1146, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1067, 1082, 1084, 1150, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1120, 1121, 1146, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1067, 1082, 1084, 1093, 1125, 1150, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1120, 1121, 1146, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1067, 1082, 1084, 1100, 1132, 1150, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1120, 1121, 1146, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1067, 1082, 1084, 1150, 1069, 1070, 1072, 1081, 1089, 1114, 1119, 1120, 1121, 1146, 1059, 1066, 1067, 1064, 1065, 1069, 1070, 1072, 1081, 1089, 1094, 1121, 1126, 0, 1033, 1037, 1056, 1059, 1083, 1064, 1066, 1069, 1070, 1072, 1081, 1089, 1094, 1121, 1126, 1059, 1066, 1064, 1065, 1069, 1070, 1072, 1081, 1089, 1094, 1121, 1126, 1064, 1065, 1069, 1070, 1072, 1081, 0, 1033, 1037, 1056, 1083, 1064, 1065, 1069, 1070, 1072, 1081, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1084, 1150, 1579, 1594, 1835, 1850, 2091, 2106, 1119, 1120, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1571, 1573, 1583, 1594, 1597, 1600, 1627, 1631, 1662, 1825, 1827, 1829, 1839, 1850, 1851, 1853, 1856, 1883, 1887, 1918, 2081, 2083, 2085, 2095, 2106, 2107, 2109, 2112, 2139, 2143, 2174, 1572, 1579, 1581, 1595, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1571, 1573, 1594, 1597, 1600, 1631, 1662, 1825, 1827, 1829, 1850, 1851, 1853, 1856, 1887, 1918, 2081, 2083, 2085, 2106, 2107, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1595, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1581, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1837, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2093, 2105, 2113, 2138, 2145, 2170, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 556, 1569, 1573, 1597, 1600, 1631, 1662, 1825, 1829, 1853, 1856, 1887, 1918, 2081, 2085, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1627, 1840, 1841, 1842, 1883, 2096, 2097, 2098, 2139, 1587, 1593, 1601, 1626, 1633, 1658, 1843, 1849, 1857, 1882, 1889, 1914, 2099, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1631, 1837, 1887, 2093, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1083, 1581, 1582, 1594, 1631, 1837, 1838, 1850, 1887, 2093, 2094, 2106, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1631, 1837, 1887, 2093, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1083, 1594, 1850, 2106, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1584, 1590, 1840, 1846, 2096, 2102, 1585, 1589, 1591, 1593, 1841, 1845, 1847, 1849, 2097, 2101, 2103, 2105, 1584, 1840, 2096, 1585, 1593, 1841, 1849, 2097, 2105, 1584, 1840, 2096, 1585, 1593, 1841, 1849, 2097, 2105, 1585, 1593, 1841, 1849, 2097, 2105, 0, 575, 1033, 1037, 1056, 1083, 0, 575, 1033, 1037, 1056, 1083, 1584, 1593, 1840, 1849, 2096, 2105, 0, 575, 1033, 1037, 1056, 1083, 1584, 1593, 1840, 1849, 2096, 2105, 0, 575, 1033, 1037, 1056, 1083, 1584, 1593, 1840, 1849, 2096, 2105, 0, 575, 1033, 1037, 1056, 1083, 1584, 1593, 1840, 1849, 2096, 2105, 0, 575, 1033, 1037, 1056, 1083, 1589, 1845, 2101, 1584, 1588, 1590, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 0, 575, 1033, 1037, 1056, 1083, 1589, 1845, 2101, 1584, 1588, 1590, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 0, 575, 1033, 1037, 1056, 1083, 1587, 1843, 2099, 1584, 1586, 1588, 1593, 1840, 1842, 1844, 1849, 2096, 2098, 2100, 2105, 0, 575, 1033, 1037, 1056, 1083, 1584, 1589, 1840, 1845, 2096, 2101, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1626, 1633, 1658, 1843, 1849, 1857, 1882, 1889, 1914, 2099, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1626, 1633, 1658, 1843, 1849, 1857, 1882, 1889, 1914, 2099, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1626, 1633, 1658, 1843, 1849, 1857, 1882, 1889, 1914, 2099, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1083, 1581, 1582, 1594, 1631, 1837, 1838, 1850, 1887, 2093, 2094, 2106, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1083, 1581, 1582, 1594, 1631, 1837, 1838, 1850, 1887, 2093, 2094, 2106, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1083, 1581, 1582, 1594, 1631, 1837, 1838, 1850, 1887, 2093, 2094, 2106, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1083, 1581, 1582, 1589, 1594, 1631, 1837, 1838, 1845, 1850, 1887, 2093, 2094, 2101, 2106, 2143, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1083, 1581, 1582, 1594, 1631, 1837, 1838, 1850, 1887, 2093, 2094, 2106, 2143, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1589, 1631, 1837, 1838, 1845, 1887, 2093, 2094, 2101, 2143, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1589, 1631, 1837, 1838, 1845, 1887, 2093, 2094, 2101, 2143, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1589, 1631, 1837, 1838, 1845, 1887, 2093, 2094, 2101, 2143, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1585, 1586, 1594, 1840, 1841, 1842, 1850, 2096, 2097, 2098, 2106, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1843, 1849, 2099, 2105, 1582, 1838, 2094, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1843, 1849, 2099, 2105, 1582, 1838, 2094, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1843, 1849, 2099, 2105, 1629, 1885, 2141, 0, 575, 1033, 1037, 1056, 1083, 1594, 1850, 2106, 1629, 1885, 2141, 1584, 1593, 1840, 1849, 2096, 2105, 1629, 1885, 2141, 1584, 1593, 1840, 1849, 2096, 2105, 1589, 1629, 1845, 1885, 2101, 2141, 1584, 1588, 1590, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 1629, 1885, 2141, 1584, 1589, 1840, 1845, 2096, 2101, 1582, 1838, 2094, 1584, 1593, 1840, 1849, 2096, 2105, 1582, 1838, 2094, 1584, 1593, 1840, 1849, 2096, 2105, 1582, 1589, 1838, 1845, 2094, 2101, 1584, 1588, 1590, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 1582, 1838, 2094, 1584, 1589, 1840, 1845, 2096, 2101, 1582, 1838, 2094, 1584, 1593, 1840, 1849, 2096, 2105, 1582, 1838, 2094, 1584, 1593, 1840, 1849, 2096, 2105, 1582, 1589, 1838, 1845, 2094, 2101, 1584, 1588, 1590, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 1582, 1838, 2094, 1584, 1589, 1840, 1845, 2096, 2101, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1629, 1885, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1629, 1885, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1629, 1885, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1838, 1845, 1850, 2094, 2101, 2106, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1629, 1885, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1583, 1597, 1600, 1631, 1662, 1825, 1829, 1839, 1850, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2095, 2106, 2107, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1593, 1594, 1595, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2105, 2113, 2138, 2145, 2170, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1597, 1631, 1662, 1825, 1829, 1851, 1853, 1887, 1918, 2081, 2085, 2107, 2109, 2143, 2174, 1572, 1579, 1581, 1595, 1600, 1626, 1633, 1658, 1828, 1835, 1837, 1850, 1856, 1882, 1889, 1914, 2084, 2091, 2093, 2106, 2112, 2138, 2145, 2170, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 548, 550, 556, 559, 573, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1631, 1662, 1825, 1829, 1831, 1887, 1918, 2081, 2085, 2087, 2143, 2174, 552, 553, 570, 571, 575, 576, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 556, 559, 570, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1631, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2143, 2174, 552, 553, 575, 576, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1085, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1085, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 548, 550, 556, 559, 573, 1033, 1037, 1056, 1058, 1115, 1120, 1569, 1573, 1575, 1631, 1662, 1825, 1829, 1831, 1887, 1918, 2081, 2085, 2087, 2143, 2174, 552, 553, 570, 571, 575, 576, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 556, 559, 570, 573, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1631, 1662, 1825, 1829, 1831, 1851, 1887, 1918, 2081, 2085, 2087, 2107, 2143, 2174, 552, 553, 575, 576, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1597, 1627, 1631, 1662, 1825, 1829, 1851, 1853, 1883, 1887, 1918, 2081, 2085, 2107, 2109, 2139, 2143, 2174, 1572, 1579, 1581, 1595, 1600, 1626, 1633, 1658, 1828, 1835, 1837, 1850, 1856, 1882, 1889, 1914, 2084, 2091, 2093, 2106, 2112, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 571, 573, 575, 576, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1631, 1662, 1825, 1829, 1831, 1887, 1918, 2081, 2085, 2087, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1631, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1085, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1085, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 547, 548, 550, 556, 559, 570, 571, 573, 575, 576, 1033, 1037, 1056, 1058, 1115, 1120, 1569, 1573, 1575, 1631, 1662, 1825, 1829, 1831, 1887, 1918, 2081, 2085, 2087, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1631, 1662, 1825, 1829, 1831, 1851, 1887, 1918, 2081, 2085, 2087, 2107, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 556, 575, 1033, 1037, 1056, 1569, 1571, 1573, 1583, 1594, 1597, 1600, 1631, 1662, 1825, 1827, 1829, 1839, 1850, 1851, 1853, 1856, 1887, 1918, 2081, 2083, 2085, 2095, 2106, 2107, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1595, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1571, 1573, 1594, 1597, 1600, 1627, 1631, 1662, 1825, 1827, 1829, 1850, 1851, 1853, 1856, 1883, 1887, 1918, 2081, 2083, 2085, 2106, 2107, 2109, 2112, 2139, 2143, 2174, 1572, 1579, 1581, 1595, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1571, 1573, 1594, 1597, 1600, 1631, 1662, 1825, 1827, 1829, 1850, 1851, 1853, 1856, 1887, 1918, 2081, 2083, 2085, 2106, 2107, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1595, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1581, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1837, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2093, 2105, 2113, 2138, 2145, 2170, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 556, 1569, 1573, 1597, 1600, 1631, 1662, 1825, 1829, 1853, 1856, 1887, 1918, 2081, 2085, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1627, 1840, 1841, 1842, 1883, 2096, 2097, 2098, 2139, 1587, 1593, 1601, 1626, 1633, 1658, 1843, 1849, 1857, 1882, 1889, 1914, 2099, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1631, 1837, 1887, 2093, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1083, 1581, 1582, 1583, 1594, 1631, 1837, 1838, 1839, 1850, 1887, 2093, 2094, 2095, 2106, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1631, 1837, 1887, 2093, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1083, 1583, 1594, 1839, 1850, 2095, 2106, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1584, 1590, 1840, 1846, 2096, 2102, 1585, 1589, 1591, 1593, 1841, 1845, 1847, 1849, 2097, 2101, 2103, 2105, 1584, 1840, 2096, 1585, 1593, 1841, 1849, 2097, 2105, 1584, 1840, 2096, 1585, 1593, 1841, 1849, 2097, 2105, 1585, 1593, 1841, 1849, 2097, 2105, 0, 575, 1033, 1037, 1056, 1083, 1583, 1839, 2095, 0, 575, 1033, 1037, 1056, 1083, 1583, 1839, 2095, 1584, 1593, 1840, 1849, 2096, 2105, 0, 575, 1033, 1037, 1056, 1083, 1583, 1839, 2095, 1584, 1593, 1840, 1849, 2096, 2105, 0, 575, 1033, 1037, 1056, 1083, 1583, 1839, 2095, 1584, 1593, 1840, 1849, 2096, 2105, 0, 575, 1033, 1037, 1056, 1083, 1583, 1839, 2095, 1584, 1593, 1840, 1849, 2096, 2105, 0, 575, 1033, 1037, 1056, 1083, 1583, 1589, 1839, 1845, 2095, 2101, 1584, 1588, 1590, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 0, 575, 1033, 1037, 1056, 1083, 1583, 1589, 1839, 1845, 2095, 2101, 1584, 1588, 1590, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 0, 575, 1033, 1037, 1056, 1083, 1583, 1587, 1839, 1843, 2095, 2099, 1584, 1586, 1588, 1593, 1840, 1842, 1844, 1849, 2096, 2098, 2100, 2105, 0, 575, 1033, 1037, 1056, 1083, 1583, 1839, 2095, 1584, 1589, 1840, 1845, 2096, 2101, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1626, 1633, 1658, 1843, 1849, 1857, 1882, 1889, 1914, 2099, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1626, 1633, 1658, 1843, 1849, 1857, 1882, 1889, 1914, 2099, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1626, 1633, 1658, 1843, 1849, 1857, 1882, 1889, 1914, 2099, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1083, 1581, 1582, 1583, 1594, 1631, 1837, 1838, 1839, 1850, 1887, 2093, 2094, 2095, 2106, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1083, 1581, 1582, 1583, 1594, 1631, 1837, 1838, 1839, 1850, 1887, 2093, 2094, 2095, 2106, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1083, 1581, 1582, 1583, 1594, 1631, 1837, 1838, 1839, 1850, 1887, 2093, 2094, 2095, 2106, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1083, 1581, 1582, 1583, 1589, 1594, 1631, 1837, 1838, 1839, 1845, 1850, 1887, 2093, 2094, 2095, 2101, 2106, 2143, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1083, 1581, 1582, 1583, 1594, 1631, 1837, 1838, 1839, 1850, 1887, 2093, 2094, 2095, 2106, 2143, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1589, 1631, 1837, 1838, 1845, 1887, 2093, 2094, 2101, 2143, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1589, 1631, 1837, 1838, 1845, 1887, 2093, 2094, 2101, 2143, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1589, 1631, 1837, 1838, 1845, 1887, 2093, 2094, 2101, 2143, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1585, 1586, 1594, 1840, 1841, 1842, 1850, 2096, 2097, 2098, 2106, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1843, 1849, 2099, 2105, 1582, 1838, 2094, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1843, 1849, 2099, 2105, 1582, 1838, 2094, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1843, 1849, 2099, 2105, 1629, 1885, 2141, 0, 575, 1033, 1037, 1056, 1083, 1583, 1594, 1839, 1850, 2095, 2106, 1629, 1885, 2141, 1584, 1593, 1840, 1849, 2096, 2105, 1629, 1885, 2141, 1584, 1593, 1840, 1849, 2096, 2105, 1589, 1629, 1845, 1885, 2101, 2141, 1584, 1588, 1590, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 1629, 1885, 2141, 1584, 1589, 1840, 1845, 2096, 2101, 1582, 1838, 2094, 1584, 1593, 1840, 1849, 2096, 2105, 1582, 1838, 2094, 1584, 1593, 1840, 1849, 2096, 2105, 1582, 1589, 1838, 1845, 2094, 2101, 1584, 1588, 1590, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 1582, 1838, 2094, 1584, 1589, 1840, 1845, 2096, 2101, 1582, 1838, 2094, 1584, 1593, 1840, 1849, 2096, 2105, 1582, 1838, 2094, 1584, 1593, 1840, 1849, 2096, 2105, 1582, 1589, 1838, 1845, 2094, 2101, 1584, 1588, 1590, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 1582, 1838, 2094, 1584, 1589, 1840, 1845, 2096, 2101, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1629, 1885, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1629, 1885, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1629, 1885, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1838, 1845, 1850, 2094, 2101, 2106, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1629, 1885, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1583, 1597, 1600, 1631, 1662, 1825, 1829, 1839, 1850, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2095, 2106, 2107, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1593, 1594, 1595, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2105, 2113, 2138, 2145, 2170, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1597, 1627, 1631, 1662, 1825, 1829, 1851, 1853, 1883, 1887, 1918, 2081, 2085, 2107, 2109, 2139, 2143, 2174, 1572, 1579, 1581, 1595, 1600, 1626, 1633, 1658, 1828, 1835, 1837, 1850, 1856, 1882, 1889, 1914, 2084, 2091, 2093, 2106, 2112, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 571, 573, 575, 576, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1631, 1662, 1825, 1829, 1831, 1887, 1918, 2081, 2085, 2087, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1631, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1085, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1085, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 547, 548, 550, 556, 559, 570, 571, 573, 575, 576, 1033, 1037, 1056, 1058, 1115, 1120, 1569, 1573, 1575, 1631, 1662, 1825, 1829, 1831, 1887, 1918, 2081, 2085, 2087, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1631, 1662, 1825, 1829, 1831, 1851, 1887, 1918, 2081, 2085, 2087, 2107, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1084, 1150, 1579, 1594, 1609, 1641, 1835, 1850, 1865, 1897, 2091, 2106, 2121, 2153, 1119, 1120, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1084, 1150, 1579, 1594, 1616, 1648, 1835, 1850, 1872, 1904, 2091, 2106, 2128, 2160, 1119, 1120, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1084, 1150, 1579, 1594, 1619, 1651, 1835, 1850, 1875, 1907, 2091, 2106, 2131, 2163, 1119, 1120, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1584, 1585, 1586, 1597, 1627, 1631, 1662, 1825, 1829, 1840, 1841, 1842, 1853, 1883, 1887, 1918, 2081, 2085, 2096, 2097, 2098, 2109, 2139, 2143, 2174, 1571, 1579, 1581, 1583, 1587, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1837, 1839, 1843, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2093, 2095, 2099, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1581, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1837, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2093, 2105, 2113, 2138, 2145, 2170, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 556, 1569, 1573, 1597, 1600, 1631, 1662, 1825, 1829, 1853, 1856, 1887, 1918, 2081, 2085, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1627, 1840, 1841, 1842, 1883, 2096, 2097, 2098, 2139, 1587, 1593, 1601, 1626, 1633, 1658, 1843, 1849, 1857, 1882, 1889, 1914, 2099, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1631, 1837, 1887, 2093, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1581, 1582, 1594, 1595, 1631, 1837, 1838, 1850, 1851, 1887, 2093, 2094, 2106, 2107, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1631, 1837, 1887, 2093, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1594, 1595, 1850, 1851, 2106, 2107, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1584, 1590, 1840, 1846, 2096, 2102, 1585, 1589, 1591, 1593, 1841, 1845, 1847, 1849, 2097, 2101, 2103, 2105, 1584, 1840, 2096, 1585, 1593, 1841, 1849, 2097, 2105, 1584, 1840, 2096, 1585, 1593, 1841, 1849, 2097, 2105, 1585, 1593, 1841, 1849, 2097, 2105, 0, 575, 1033, 1037, 1056, 1595, 1851, 2107, 548, 550, 559, 570, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1612, 1615, 1620, 1631, 1644, 1647, 1652, 1662, 1825, 1829, 1831, 1887, 1918, 2081, 2085, 2087, 2124, 2127, 2132, 2143, 2156, 2159, 2164, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1631, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1085, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1085, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 548, 550, 559, 570, 571, 573, 575, 605, 1033, 1037, 1056, 1058, 1120, 1569, 1573, 1575, 1631, 1662, 1825, 1829, 1831, 1883, 1887, 1918, 2081, 2085, 2087, 2139, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1627, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1631, 1662, 1825, 1829, 1831, 1851, 1887, 1918, 2081, 2085, 2087, 2107, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 571, 575, 605, 607, 638, 1840, 1841, 1842, 1850, 2096, 2097, 2098, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 605, 607, 638, 1582, 1838, 1850, 2094, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 575, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 577, 603, 609, 634, 1584, 1593, 1843, 1849, 2099, 2105, 0, 545, 549, 557, 571, 575, 605, 607, 638, 1582, 1838, 2094, 548, 555, 559, 570, 577, 603, 609, 634, 0, 545, 549, 570, 571, 575, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 577, 603, 609, 634, 1584, 1593, 1843, 1849, 2099, 2105, 0, 545, 549, 557, 571, 575, 605, 607, 638, 1582, 1838, 2094, 548, 555, 559, 570, 577, 603, 609, 634, 0, 545, 549, 570, 571, 575, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 577, 603, 609, 634, 1584, 1593, 1843, 1849, 2099, 2105, 0, 545, 549, 571, 575, 607, 638, 1629, 1885, 2141, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 575, 605, 607, 638, 1033, 1037, 1056, 1595, 1851, 2107, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 570, 571, 575, 607, 638, 1629, 1885, 2141, 548, 555, 557, 559, 577, 603, 609, 634, 1584, 1593, 1840, 1849, 2096, 2105, 0, 545, 549, 570, 571, 575, 607, 638, 1629, 1885, 2141, 548, 555, 557, 559, 577, 603, 609, 634, 1584, 1593, 1840, 1849, 2096, 2105, 0, 545, 549, 570, 571, 575, 607, 638, 1629, 1845, 1885, 2101, 2141, 548, 555, 557, 559, 577, 603, 609, 634, 1584, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 0, 545, 549, 571, 575, 607, 638, 1629, 1885, 2141, 548, 555, 557, 559, 566, 570, 577, 603, 609, 634, 1584, 1589, 1840, 1845, 2096, 2101, 0, 545, 549, 557, 559, 570, 571, 575, 605, 607, 638, 1582, 1838, 2094, 548, 555, 577, 603, 609, 634, 1584, 1593, 1840, 1849, 2096, 2105, 0, 545, 549, 557, 559, 570, 571, 575, 605, 607, 638, 1582, 1838, 2094, 548, 555, 577, 603, 609, 634, 1584, 1593, 1840, 1849, 2096, 2105, 0, 545, 549, 557, 559, 570, 571, 575, 605, 607, 638, 1582, 1838, 1845, 2094, 2101, 548, 555, 577, 603, 609, 634, 1584, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 0, 545, 549, 557, 559, 571, 575, 605, 607, 638, 1582, 1838, 2094, 548, 555, 566, 570, 577, 603, 609, 634, 1584, 1589, 1840, 1845, 2096, 2101, 0, 545, 549, 557, 559, 570, 571, 575, 605, 607, 638, 1582, 1838, 2094, 548, 555, 577, 603, 609, 634, 1584, 1593, 1840, 1849, 2096, 2105, 0, 545, 549, 557, 559, 570, 571, 575, 605, 607, 638, 1582, 1838, 2094, 548, 555, 577, 603, 609, 634, 1584, 1593, 1840, 1849, 2096, 2105, 0, 545, 549, 557, 559, 570, 571, 575, 605, 607, 638, 1582, 1838, 1845, 2094, 2101, 548, 555, 577, 603, 609, 634, 1584, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 0, 545, 549, 557, 559, 571, 575, 605, 607, 638, 1582, 1838, 2094, 548, 555, 566, 570, 577, 603, 609, 634, 1584, 1589, 1840, 1845, 2096, 2101, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 575, 607, 638, 1629, 1885, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 575, 607, 638, 1629, 1885, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 575, 607, 638, 1629, 1885, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 605, 607, 638, 1582, 1838, 1850, 2094, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 605, 607, 638, 1582, 1838, 1850, 2094, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 605, 607, 638, 1582, 1838, 1850, 2094, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 605, 607, 638, 1582, 1838, 1845, 1850, 2094, 2101, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 605, 607, 638, 1582, 1838, 1850, 2094, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 605, 607, 638, 1582, 1838, 1850, 2094, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 605, 607, 638, 1582, 1838, 1850, 2094, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 575, 607, 638, 1629, 1885, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 575, 607, 638, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1594, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 570, 571, 575, 605, 607, 638, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 575, 607, 638, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1594, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 570, 571, 575, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 575, 607, 638, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1594, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 570, 571, 575, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 575, 607, 638, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1594, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 570, 571, 575, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 575, 607, 638, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1594, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 570, 571, 575, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 570, 571, 575, 607, 638, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1594, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 570, 571, 575, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 575, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 575, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1618, 1631, 1650, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2130, 2143, 2162, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1631, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 571, 573, 575, 605, 1033, 1037, 1056, 1058, 1569, 1573, 1575, 1627, 1632, 1662, 1825, 1829, 1831, 1883, 1918, 2081, 2085, 2087, 2139, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 575, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2174, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1606, 1607, 1626, 1631, 1632, 1633, 1638, 1639, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2118, 2119, 2138, 2143, 2144, 2145, 2150, 2151, 2170, 0, 575, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2174, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 575, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2174, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1606, 1607, 1626, 1631, 1632, 1633, 1638, 1639, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2118, 2119, 2138, 2143, 2144, 2145, 2150, 2151, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1602, 1622, 1631, 1634, 1654, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2114, 2134, 2143, 2146, 2166, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1631, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1609, 1631, 1641, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2121, 2143, 2153, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1604, 1631, 1636, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2116, 2143, 2148, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1631, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 571, 573, 575, 605, 1033, 1037, 1056, 1058, 1569, 1573, 1575, 1627, 1632, 1662, 1825, 1829, 1831, 1883, 1918, 2081, 2085, 2087, 2139, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 575, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2174, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1606, 1607, 1626, 1631, 1632, 1633, 1638, 1639, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2118, 2119, 2138, 2143, 2144, 2145, 2150, 2151, 2170, 0, 575, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2174, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 575, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2174, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1606, 1607, 1626, 1631, 1632, 1633, 1638, 1639, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2118, 2119, 2138, 2143, 2144, 2145, 2150, 2151, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1618, 1631, 1650, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2130, 2143, 2162, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1601, 1631, 1633, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2113, 2143, 2145, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1602, 1626, 1634, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2114, 2138, 2146, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1614, 1631, 1646, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2126, 2143, 2158, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1619, 1631, 1651, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2131, 2143, 2163, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1616, 1631, 1648, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2128, 2143, 2160, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1615, 1631, 1647, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2127, 2143, 2159, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1618, 1631, 1650, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2130, 2143, 2162, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1620, 1631, 1652, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2132, 2143, 2164, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1631, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 571, 573, 575, 605, 1033, 1037, 1056, 1058, 1569, 1573, 1575, 1619, 1620, 1621, 1623, 1627, 1632, 1651, 1652, 1653, 1655, 1662, 1825, 1829, 1831, 1883, 1918, 2081, 2085, 2087, 2131, 2132, 2133, 2135, 2139, 2144, 2163, 2164, 2165, 2167, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 575, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2174, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1606, 1607, 1626, 1631, 1632, 1633, 1638, 1639, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2118, 2119, 2138, 2143, 2144, 2145, 2150, 2151, 2170, 0, 575, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2174, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 575, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2174, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1606, 1607, 1626, 1631, 1632, 1633, 1638, 1639, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2118, 2119, 2138, 2143, 2144, 2145, 2150, 2151, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1603, 1632, 1635, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2115, 2144, 2147, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1620, 1632, 1652, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2132, 2144, 2164, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1616, 1632, 1648, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2128, 2144, 2160, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1603, 1612, 1632, 1635, 1644, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2115, 2124, 2144, 2147, 2156, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1616, 1632, 1648, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2128, 2144, 2160, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1619, 1632, 1651, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2131, 2144, 2163, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1604, 1632, 1636, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2116, 2144, 2148, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1616, 1632, 1648, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2128, 2144, 2160, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1619, 1632, 1651, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2131, 2144, 2163, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1619, 1632, 1651, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2131, 2144, 2163, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 548, 550, 559, 570, 575, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 575, 1033, 1037, 1056, 1595, 1851, 2107, 1584, 1593, 1840, 1849, 2096, 2105, 0, 575, 1033, 1037, 1056, 1595, 1851, 2107, 1584, 1593, 1840, 1849, 2096, 2105, 0, 575, 1033, 1037, 1056, 1595, 1851, 2107, 1584, 1593, 1840, 1849, 2096, 2105, 0, 575, 1033, 1037, 1056, 1595, 1851, 2107, 1584, 1593, 1840, 1849, 2096, 2105, 0, 575, 1033, 1037, 1056, 1589, 1595, 1845, 1851, 2101, 2107, 1584, 1588, 1590, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 0, 575, 1033, 1037, 1056, 1589, 1595, 1845, 1851, 2101, 2107, 1584, 1588, 1590, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 0, 575, 1033, 1037, 1056, 1587, 1595, 1843, 1851, 2099, 2107, 1584, 1586, 1588, 1593, 1840, 1842, 1844, 1849, 2096, 2098, 2100, 2105, 0, 575, 1033, 1037, 1056, 1595, 1851, 2107, 1584, 1589, 1840, 1845, 2096, 2101, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1626, 1633, 1658, 1843, 1849, 1857, 1882, 1889, 1914, 2099, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1626, 1633, 1658, 1843, 1849, 1857, 1882, 1889, 1914, 2099, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1626, 1633, 1658, 1843, 1849, 1857, 1882, 1889, 1914, 2099, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1581, 1582, 1594, 1595, 1631, 1837, 1838, 1850, 1851, 1887, 2093, 2094, 2106, 2107, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1581, 1582, 1594, 1595, 1631, 1837, 1838, 1850, 1851, 1887, 2093, 2094, 2106, 2107, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1581, 1582, 1594, 1595, 1631, 1837, 1838, 1850, 1851, 1887, 2093, 2094, 2106, 2107, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1581, 1582, 1589, 1594, 1595, 1631, 1837, 1838, 1845, 1850, 1851, 1887, 2093, 2094, 2101, 2106, 2107, 2143, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 0, 575, 1033, 1037, 1056, 1581, 1582, 1594, 1595, 1631, 1837, 1838, 1850, 1851, 1887, 2093, 2094, 2106, 2107, 2143, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1589, 1631, 1837, 1838, 1845, 1887, 2093, 2094, 2101, 2143, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1589, 1631, 1837, 1838, 1845, 1887, 2093, 2094, 2101, 2143, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1589, 1631, 1837, 1838, 1845, 1887, 2093, 2094, 2101, 2143, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 1581, 1582, 1631, 1837, 1838, 1887, 2093, 2094, 2143, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1585, 1586, 1594, 1840, 1841, 1842, 1850, 2096, 2097, 2098, 2106, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1843, 1849, 2099, 2105, 1582, 1838, 2094, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1843, 1849, 2099, 2105, 1582, 1838, 2094, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1843, 1849, 2099, 2105, 1629, 1885, 2141, 0, 575, 1033, 1037, 1056, 1594, 1595, 1850, 1851, 2106, 2107, 1629, 1885, 2141, 1584, 1593, 1840, 1849, 2096, 2105, 1629, 1885, 2141, 1584, 1593, 1840, 1849, 2096, 2105, 1589, 1629, 1845, 1885, 2101, 2141, 1584, 1588, 1590, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 1629, 1885, 2141, 1584, 1589, 1840, 1845, 2096, 2101, 1582, 1838, 2094, 1584, 1593, 1840, 1849, 2096, 2105, 1582, 1838, 2094, 1584, 1593, 1840, 1849, 2096, 2105, 1582, 1589, 1838, 1845, 2094, 2101, 1584, 1588, 1590, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 1582, 1838, 2094, 1584, 1589, 1840, 1845, 2096, 2101, 1582, 1838, 2094, 1584, 1593, 1840, 1849, 2096, 2105, 1582, 1838, 2094, 1584, 1593, 1840, 1849, 2096, 2105, 1582, 1589, 1838, 1845, 2094, 2101, 1584, 1588, 1590, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 1582, 1838, 2094, 1584, 1589, 1840, 1845, 2096, 2101, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1629, 1885, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1629, 1885, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1629, 1885, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1838, 1845, 1850, 2094, 2101, 2106, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1838, 1850, 2094, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1629, 1885, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1850, 2106, 1584, 1585, 1586, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1585, 1586, 1840, 1841, 1842, 2096, 2097, 2098, 1587, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1589, 1594, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 1584, 1588, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1589, 1590, 1593, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1582, 1594, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 1594, 1629, 1850, 1885, 2106, 2141, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1582, 1583, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1838, 1839, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2094, 2095, 2096, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1581, 1583, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1837, 1839, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2093, 2095, 2096, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1581, 1582, 1583, 1594, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2107, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1582, 1583, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1838, 1839, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2094, 2095, 2096, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1594, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1850, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2106, 2107, 2109, 2112, 2143, 2174, 1571, 1579, 1581, 1583, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1837, 1839, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2093, 2095, 2096, 2105, 2113, 2138, 2145, 2170, 556, 1569, 1573, 1584, 1590, 1597, 1600, 1631, 1662, 1825, 1829, 1840, 1846, 1853, 1856, 1887, 1918, 2081, 2085, 2096, 2102, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1585, 1589, 1591, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1841, 1845, 1847, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2097, 2101, 2103, 2105, 2113, 2138, 2145, 2170, 556, 1569, 1573, 1584, 1597, 1600, 1631, 1662, 1825, 1829, 1840, 1853, 1856, 1887, 1918, 2081, 2085, 2096, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1585, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1841, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2097, 2105, 2113, 2138, 2145, 2170, 556, 1569, 1573, 1584, 1597, 1600, 1631, 1662, 1825, 1829, 1840, 1853, 1856, 1887, 1918, 2081, 2085, 2096, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1585, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1841, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2097, 2105, 2113, 2138, 2145, 2170, 556, 1569, 1573, 1584, 1597, 1600, 1631, 1662, 1825, 1829, 1840, 1853, 1856, 1887, 1918, 2081, 2085, 2096, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1585, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1841, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2097, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2107, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2107, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2107, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2107, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2107, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1589, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1845, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2101, 2107, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1589, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1845, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2101, 2107, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1587, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1843, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2099, 2107, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1584, 1586, 1588, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1840, 1842, 1844, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2096, 2098, 2100, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2107, 2109, 2112, 2143, 2174, 1572, 1579, 1581, 1582, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1828, 1835, 1837, 1838, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2084, 2091, 2093, 2094, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 547, 548, 550, 556, 559, 570, 571, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1612, 1615, 1620, 1631, 1644, 1647, 1652, 1662, 1825, 1829, 1831, 1887, 1918, 2081, 2085, 2087, 2124, 2127, 2132, 2143, 2156, 2159, 2164, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1631, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1085, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1085, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 547, 548, 550, 556, 559, 570, 571, 573, 575, 576, 605, 1033, 1037, 1056, 1058, 1120, 1569, 1573, 1575, 1627, 1631, 1662, 1825, 1829, 1831, 1883, 1887, 1918, 2081, 2085, 2087, 2139, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1631, 1662, 1825, 1829, 1831, 1851, 1887, 1918, 2081, 2085, 2087, 2107, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1618, 1631, 1650, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2130, 2143, 2162, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1631, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 571, 573, 575, 576, 605, 1033, 1037, 1056, 1058, 1569, 1573, 1575, 1627, 1632, 1662, 1825, 1829, 1831, 1883, 1918, 2081, 2085, 2087, 2139, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 575, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2174, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1606, 1607, 1626, 1631, 1632, 1633, 1638, 1639, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2118, 2119, 2138, 2143, 2144, 2145, 2150, 2151, 2170, 0, 575, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2174, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1606, 1607, 1626, 1631, 1632, 1633, 1638, 1639, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2118, 2119, 2138, 2143, 2144, 2145, 2150, 2151, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1602, 1622, 1631, 1634, 1654, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2114, 2134, 2143, 2146, 2166, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1631, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1609, 1631, 1641, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2121, 2143, 2153, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1604, 1631, 1636, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2116, 2143, 2148, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1631, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 571, 573, 575, 576, 605, 1033, 1037, 1056, 1058, 1569, 1573, 1575, 1627, 1632, 1662, 1825, 1829, 1831, 1883, 1918, 2081, 2085, 2087, 2139, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 575, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2174, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1606, 1607, 1626, 1631, 1632, 1633, 1638, 1639, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2118, 2119, 2138, 2143, 2144, 2145, 2150, 2151, 2170, 0, 575, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2174, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1606, 1607, 1626, 1631, 1632, 1633, 1638, 1639, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2118, 2119, 2138, 2143, 2144, 2145, 2150, 2151, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1618, 1631, 1650, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2130, 2143, 2162, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1601, 1631, 1633, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2113, 2143, 2145, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1602, 1626, 1634, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2114, 2138, 2146, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1614, 1631, 1646, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2126, 2143, 2158, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1619, 1631, 1651, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2131, 2143, 2163, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1616, 1631, 1648, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2128, 2143, 2160, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1615, 1631, 1647, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2127, 2143, 2159, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1618, 1631, 1650, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2130, 2143, 2162, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1620, 1631, 1652, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2132, 2143, 2164, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 575, 576, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1597, 1631, 1662, 1825, 1829, 1831, 1851, 1853, 1887, 1918, 2081, 2085, 2087, 2107, 2109, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 547, 548, 550, 556, 559, 570, 571, 573, 575, 576, 605, 1033, 1037, 1056, 1058, 1569, 1573, 1575, 1619, 1620, 1621, 1623, 1627, 1632, 1651, 1652, 1653, 1655, 1662, 1825, 1829, 1831, 1883, 1918, 2081, 2085, 2087, 2131, 2132, 2133, 2135, 2139, 2144, 2163, 2164, 2165, 2167, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 575, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2174, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1606, 1607, 1626, 1631, 1632, 1633, 1638, 1639, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2118, 2119, 2138, 2143, 2144, 2145, 2150, 2151, 2170, 0, 575, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2174, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1606, 1607, 1626, 1631, 1632, 1633, 1638, 1639, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2118, 2119, 2138, 2143, 2144, 2145, 2150, 2151, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1603, 1632, 1635, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2115, 2144, 2147, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1620, 1632, 1652, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2132, 2144, 2164, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1616, 1632, 1648, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2128, 2144, 2160, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1603, 1612, 1632, 1635, 1644, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2115, 2124, 2144, 2147, 2156, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1616, 1632, 1648, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2128, 2144, 2160, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1619, 1632, 1651, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2131, 2144, 2163, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1604, 1632, 1636, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2116, 2144, 2148, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1616, 1632, 1648, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2128, 2144, 2160, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1619, 1632, 1651, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2131, 2144, 2163, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1619, 1632, 1651, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2131, 2144, 2163, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 0, 547, 548, 550, 556, 559, 570, 573, 575, 576, 603, 605, 1033, 1037, 1056, 1569, 1573, 1575, 1595, 1632, 1662, 1825, 1829, 1831, 1851, 1918, 2081, 2085, 2087, 2107, 2144, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1631, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1887, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2143, 2170, 556, 571, 575, 1569, 1573, 1584, 1585, 1586, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1840, 1841, 1842, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2096, 2097, 2098, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1581, 1583, 1587, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1837, 1839, 1843, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2093, 2095, 2099, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1584, 1585, 1586, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1840, 1841, 1842, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2096, 2097, 2098, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1581, 1583, 1587, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1837, 1839, 1843, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2093, 2095, 2099, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1584, 1585, 1586, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1840, 1841, 1842, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2096, 2097, 2098, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1581, 1583, 1587, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1837, 1839, 1843, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2093, 2095, 2099, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1581, 1582, 1583, 1594, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2107, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1581, 1582, 1583, 1594, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2107, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1581, 1582, 1583, 1594, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2107, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1581, 1582, 1583, 1589, 1594, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1845, 1850, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2101, 2106, 2107, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 0, 556, 575, 1033, 1037, 1056, 1569, 1573, 1581, 1582, 1583, 1594, 1595, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1851, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2107, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1589, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1845, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2101, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1589, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1845, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2101, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1589, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1845, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2101, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1588, 1590, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1844, 1846, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2100, 2102, 2105, 2113, 2138, 2145, 2170, 556, 571, 575, 1569, 1573, 1581, 1582, 1583, 1594, 1597, 1600, 1631, 1662, 1825, 1829, 1837, 1838, 1839, 1850, 1853, 1856, 1887, 1918, 2081, 2085, 2093, 2094, 2095, 2106, 2109, 2112, 2143, 2174, 1571, 1579, 1584, 1589, 1590, 1593, 1601, 1626, 1633, 1658, 1827, 1835, 1840, 1845, 1846, 1849, 1857, 1882, 1889, 1914, 2083, 2091, 2096, 2101, 2102, 2105, 2113, 2138, 2145, 2170, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1084, 1150, 1579, 1594, 1835, 1850, 2091, 2106, 1119, 1120, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1084, 1150, 1579, 1594, 1605, 1637, 1835, 1850, 1861, 1893, 2091, 2106, 2117, 2149, 1119, 1120, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1084, 1150, 1579, 1594, 1612, 1644, 1835, 1850, 1868, 1900, 2091, 2106, 2124, 2156, 1119, 1120, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 1033, 1037, 1056, 1057, 1061, 1063, 1066, 1084, 1150, 1579, 1594, 1835, 1850, 2091, 2106, 1119, 1120, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 1571, 1578, 1579, 1827, 1834, 1835, 2083, 2090, 2091, 1576, 1577, 1581, 1582, 1584, 1593, 1601, 1606, 1633, 1638, 1832, 1833, 1837, 1838, 1840, 1849, 1857, 1862, 1889, 1894, 2088, 2089, 2093, 2094, 2096, 2105, 2113, 2118, 2145, 2150, 0, 1033, 1037, 1056, 1571, 1595, 1827, 1851, 2083, 2107, 1576, 1578, 1581, 1582, 1584, 1593, 1601, 1606, 1633, 1638, 1832, 1834, 1837, 1838, 1840, 1849, 1857, 1862, 1889, 1894, 2088, 2090, 2093, 2094, 2096, 2105, 2113, 2118, 2145, 2150, 1033, 1037, 1056, 1057, 1061, 1063, 1070, 1150, 1581, 1616, 1648, 1837, 2093, 2128, 2160, 1066, 1067, 1119, 1120, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1070, 1150, 1581, 1595, 1597, 1837, 1851, 1853, 2093, 2107, 2109, 1066, 1067, 1119, 1120, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 548, 550, 559, 570, 605, 1033, 1037, 1056, 1058, 1120, 1569, 1573, 1575, 1631, 1662, 1825, 1829, 1831, 1883, 1887, 1918, 2081, 2085, 2087, 2139, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1627, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1631, 1662, 1825, 1829, 1831, 1851, 1887, 1918, 2081, 2085, 2087, 2107, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1083, 1150, 1066, 1067, 1069, 1070, 1095, 1114, 1119, 1120, 1127, 1146, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 571, 605, 607, 638, 1840, 1841, 1842, 1850, 2096, 2097, 2098, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 605, 607, 638, 1582, 1838, 1850, 2094, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 577, 603, 609, 634, 1584, 1593, 1843, 1849, 2099, 2105, 0, 545, 549, 557, 571, 605, 607, 638, 1582, 1838, 2094, 548, 555, 559, 570, 577, 603, 609, 634, 0, 545, 549, 570, 571, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 577, 603, 609, 634, 1584, 1593, 1843, 1849, 2099, 2105, 0, 545, 549, 557, 571, 605, 607, 638, 1582, 1838, 2094, 548, 555, 559, 570, 577, 603, 609, 634, 0, 545, 549, 570, 571, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 577, 603, 609, 634, 1584, 1593, 1843, 1849, 2099, 2105, 0, 545, 549, 571, 607, 638, 1629, 1885, 2141, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 605, 607, 638, 1033, 1037, 1056, 1595, 1851, 2107, 548, 555, 557, 570, 577, 603, 609, 634, 0, 545, 549, 570, 571, 607, 638, 1629, 1885, 2141, 548, 555, 557, 559, 577, 603, 609, 634, 1584, 1593, 1840, 1849, 2096, 2105, 0, 545, 549, 570, 571, 607, 638, 1629, 1885, 2141, 548, 555, 557, 559, 577, 603, 609, 634, 1584, 1593, 1840, 1849, 2096, 2105, 0, 545, 549, 570, 571, 607, 638, 1629, 1845, 1885, 2101, 2141, 548, 555, 557, 559, 577, 603, 609, 634, 1584, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 0, 545, 549, 571, 607, 638, 1629, 1885, 2141, 548, 555, 557, 559, 566, 570, 577, 603, 609, 634, 1584, 1589, 1840, 1845, 2096, 2101, 0, 545, 549, 557, 559, 570, 571, 605, 607, 638, 1582, 1838, 2094, 548, 555, 577, 603, 609, 634, 1584, 1593, 1840, 1849, 2096, 2105, 0, 545, 549, 557, 559, 570, 571, 605, 607, 638, 1582, 1838, 2094, 548, 555, 577, 603, 609, 634, 1584, 1593, 1840, 1849, 2096, 2105, 0, 545, 549, 557, 559, 570, 571, 605, 607, 638, 1582, 1838, 1845, 2094, 2101, 548, 555, 577, 603, 609, 634, 1584, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 0, 545, 549, 557, 559, 571, 605, 607, 638, 1582, 1838, 2094, 548, 555, 566, 570, 577, 603, 609, 634, 1584, 1589, 1840, 1845, 2096, 2101, 0, 545, 549, 557, 559, 570, 571, 605, 607, 638, 1582, 1838, 2094, 548, 555, 577, 603, 609, 634, 1584, 1593, 1840, 1849, 2096, 2105, 0, 545, 549, 557, 559, 570, 571, 605, 607, 638, 1582, 1838, 2094, 548, 555, 577, 603, 609, 634, 1584, 1593, 1840, 1849, 2096, 2105, 0, 545, 549, 557, 559, 570, 571, 605, 607, 638, 1582, 1838, 1845, 2094, 2101, 548, 555, 577, 603, 609, 634, 1584, 1593, 1840, 1844, 1846, 1849, 2096, 2100, 2102, 2105, 0, 545, 549, 557, 559, 571, 605, 607, 638, 1582, 1838, 2094, 548, 555, 566, 570, 577, 603, 609, 634, 1584, 1589, 1840, 1845, 2096, 2101, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 607, 638, 1629, 1885, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 607, 638, 1629, 1885, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 607, 638, 1629, 1885, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 605, 607, 638, 1582, 1838, 1850, 2094, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 605, 607, 638, 1582, 1838, 1850, 2094, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 605, 607, 638, 1582, 1838, 1850, 2094, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 605, 607, 638, 1582, 1838, 1845, 1850, 2094, 2101, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 605, 607, 638, 1582, 1838, 1850, 2094, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 605, 607, 638, 1582, 1838, 1850, 2094, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 605, 607, 638, 1582, 1838, 1850, 2094, 2106, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 607, 638, 1629, 1885, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1850, 2106, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 607, 638, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1594, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 570, 571, 605, 607, 638, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 607, 638, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1594, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 570, 571, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 607, 638, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1594, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 570, 571, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 607, 638, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1594, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 570, 571, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 570, 571, 607, 638, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1594, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 570, 571, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 605, 607, 638, 1594, 1850, 2106, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 570, 571, 607, 638, 1629, 1840, 1841, 1842, 1885, 2096, 2097, 2098, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1594, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 569, 577, 603, 609, 634, 0, 545, 549, 570, 571, 605, 607, 638, 1840, 1841, 1842, 2096, 2097, 2098, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1593, 1601, 1606, 1633, 1638, 1843, 1849, 1857, 1862, 1889, 1894, 2099, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1845, 1850, 1885, 2094, 2101, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1844, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2100, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1845, 1846, 1849, 1857, 1862, 1889, 1894, 2096, 2101, 2102, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 557, 559, 571, 607, 638, 1582, 1629, 1838, 1850, 1885, 2094, 2106, 2141, 548, 555, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 545, 549, 571, 607, 638, 1629, 1850, 1885, 2106, 2141, 548, 555, 557, 559, 583, 603, 615, 634, 1584, 1594, 1601, 1606, 1633, 1638, 1840, 1849, 1857, 1862, 1889, 1894, 2096, 2105, 2113, 2118, 2145, 2150, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1070, 1150, 1581, 1595, 1597, 1608, 1640, 1837, 1851, 1853, 2093, 2107, 2109, 2120, 2152, 1066, 1067, 1119, 1120, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1070, 1150, 1581, 1595, 1597, 1615, 1647, 1837, 1851, 1853, 2093, 2107, 2109, 2127, 2159, 1066, 1067, 1119, 1120, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1070, 1150, 1581, 1595, 1597, 1614, 1646, 1837, 1851, 1853, 2093, 2107, 2109, 2126, 2158, 1066, 1067, 1119, 1120, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1070, 1150, 1581, 1595, 1597, 1605, 1637, 1837, 1851, 1853, 2093, 2107, 2109, 2117, 2149, 1066, 1067, 1119, 1120, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1070, 1150, 1581, 1595, 1597, 1837, 1851, 1853, 2093, 2107, 2109, 1066, 1067, 1119, 1120, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1070, 1150, 1581, 1595, 1597, 1603, 1635, 1837, 1851, 1853, 2093, 2107, 2109, 2115, 2147, 1066, 1067, 1119, 1120, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1070, 1150, 1581, 1595, 1597, 1615, 1647, 1837, 1851, 1853, 2093, 2107, 2109, 2127, 2159, 1066, 1067, 1119, 1120, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1070, 1150, 1581, 1595, 1597, 1614, 1646, 1837, 1851, 1853, 2093, 2107, 2109, 2126, 2158, 1066, 1067, 1119, 1120, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1070, 1150, 1581, 1595, 1597, 1620, 1652, 1837, 1851, 1853, 2093, 2107, 2109, 2132, 2164, 1066, 1067, 1119, 1120, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1070, 1150, 1581, 1595, 1597, 1605, 1637, 1837, 1851, 1853, 2093, 2107, 2109, 2117, 2149, 1066, 1067, 1119, 1120, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1070, 1150, 1581, 1595, 1597, 1624, 1656, 1837, 1851, 1853, 2093, 2107, 2109, 2136, 2168, 1066, 1067, 1119, 1120, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1070, 1150, 1581, 1595, 1597, 1620, 1652, 1837, 1851, 1853, 2093, 2107, 2109, 2132, 2164, 1066, 1067, 1119, 1120, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 0, 1033, 1037, 1056, 1057, 1061, 1063, 1070, 1150, 1581, 1595, 1597, 1837, 1851, 1853, 2093, 2107, 2109, 1066, 1067, 1119, 1120, 1584, 1593, 1601, 1626, 1633, 1658, 1840, 1849, 1857, 1882, 1889, 1914, 2096, 2105, 2113, 2138, 2145, 2170, 548, 550, 559, 570, 605, 1033, 1037, 1056, 1058, 1120, 1569, 1573, 1575, 1578, 1579, 1627, 1631, 1662, 1825, 1829, 1831, 1883, 1887, 1918, 2081, 2085, 2087, 2090, 2091, 2139, 2143, 2174, 552, 553, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1631, 1662, 1825, 1829, 1831, 1851, 1887, 1918, 2081, 2085, 2087, 2107, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1631, 1662, 1825, 1829, 1831, 1851, 1887, 1918, 2081, 2085, 2087, 2107, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1581, 1582, 1595, 1631, 1662, 1825, 1829, 1831, 1851, 1887, 1918, 2081, 2085, 2087, 2093, 2094, 2107, 2143, 2174, 552, 553, 1578, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1581, 1582, 1595, 1631, 1662, 1825, 1829, 1831, 1851, 1887, 1918, 2081, 2085, 2087, 2093, 2094, 2107, 2143, 2174, 552, 553, 1578, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1631, 1662, 1825, 1829, 1831, 1851, 1887, 1918, 2081, 2085, 2087, 2107, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1581, 1582, 1595, 1631, 1662, 1825, 1829, 1831, 1851, 1887, 1918, 2081, 2085, 2087, 2093, 2094, 2107, 2143, 2174, 552, 553, 1578, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1581, 1582, 1595, 1631, 1662, 1825, 1829, 1831, 1851, 1887, 1918, 2081, 2085, 2087, 2093, 2094, 2107, 2143, 2174, 552, 553, 1578, 1579, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2096, 2105, 2113, 2138, 2145, 2170, 0, 548, 550, 559, 570, 603, 605, 1033, 1037, 1056, 1120, 1569, 1573, 1575, 1595, 1631, 1662, 1825, 1829, 1831, 1851, 1887, 1918, 2081, 2085, 2087, 2107, 2143, 2174, 552, 553, 1578, 1579, 1581, 1582, 1584, 1593, 1601, 1626, 1633, 1658, 1834, 1835, 1837, 1838, 1840, 1849, 1857, 1882, 1889, 1914, 2090, 2091, 2093, 2094, 2096, 2105, 2113, 2138, 2145, 2170, 1571, 1578, 1827, 1834, 2083, 2090, 1576, 1577, 1581, 1582, 1584, 1593, 1601, 1606, 1633, 1638, 1832, 1833, 1837, 1838, 1840, 1849, 1857, 1862, 1889, 1894, 2088, 2089, 2093, 2094, 2096, 2105, 2113, 2118, 2145, 2150, 1576, 1577, 1581, 1582, 1584, 1593, 1832, 1833, 1837, 1838, 1840, 1849, 2088, 2089, 2093, 2094, 2096, 2105, 0, 1033, 1037, 1056, 1595, 1851, 2107, 1576, 1577, 1581, 1582, 1584, 1593, 1832, 1833, 1837, 1838, 1840, 1849, 2088, 2089, 2093, 2094, 2096, 2105, 0 }; static const char _sip_uri_parser_single_lengths[] = { 0, 21, 4, 1, 2, 3, 4, 2, 10, 8, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 6, 2, 3, 2, 1, 1, 0, 2, 5, 1, 2, 5, 1, 2, 3, 7, 1, 2, 6, 10, 5, 1, 2, 4, 9, 1, 2, 8, 9, 4, 4, 0, 0, 0, 0, 0, 1, 2, 5, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 5, 0, 0, 2, 2, 2, 2, 3, 3, 3, 2, 3, 3, 3, 3, 3, 6, 6, 6, 7, 6, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 3, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 8, 0, 0, 6, 9, 9, 8, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 7, 2, 4, 2, 1, 1, 0, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 7, 7, 7, 8, 7, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 4, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 8, 0, 0, 6, 4, 4, 4, 11, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 7, 2, 4, 2, 1, 1, 0, 3, 11, 9, 0, 0, 9, 8, 0, 0, 7, 8, 0, 0, 8, 0, 0, 5, 11, 9, 13, 12, 7, 7, 7, 13, 9, 11, 11, 9, 13, 12, 7, 7, 7, 11, 11, 11, 11, 11, 11, 11, 11, 9, 21, 12, 7, 7, 7, 14, 14, 14, 12, 16, 14, 12, 14, 12, 14, 14, 12, 14, 14, 12, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 7, 7, 7, 8, 7, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 4, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 11, 10, 11, 9, 12, 10, 10, 8, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 8, 19, 14, 0, 0, 14, 0, 0, 14, 14, 0, 0, 11, 14, 14, 0, 0, 12, 12, 0, 0, 13, 0, 0, 14, 0, 0, 13, 14, 0, 0, 13, 16, 14, 16, 16, 7, 7, 18, 14, 16, 16, 14, 16, 16, 7, 7, 16, 16, 16, 16, 16, 16, 16, 16, 14, 24, 16, 7, 7, 18, 18, 18, 16, 20, 18, 16, 18, 16, 18, 18, 16, 18, 18, 16, 12, 11, 12, 11, 12, 12, 12, 12, 13, 12, 11, 11, 12, 11, 11, 11, 12, 11, 11, 11, 12, 11, 2, 4, 4, 2, 3, 3, 3, 4, 5, 7, 0, 0, 6, 6, 6, 6, 4, 6, 6, 6, 6, 6, 6, 6, 4, 8, 9, 9, 12, 10, 9, 12, 10, 9, 2, 0, 2, 8, 8, 1, 2, 7, 4, 0, 0, 0, 0, 0, 1, 2, 4, 0, 2, 11, 9, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 6, 2, 3, 2, 1, 1, 0, 2, 6, 0, 0, 2, 2, 2, 2, 3, 3, 3, 2, 3, 3, 3, 3, 3, 6, 6, 6, 7, 6, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 3, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 9, 0, 0, 7, 10, 10, 9, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 7, 2, 4, 2, 1, 1, 0, 3, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 7, 7, 7, 8, 7, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 4, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 9, 0, 0, 7, 4, 4, 4, 11, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 7, 2, 4, 2, 1, 1, 0, 3, 11, 9, 0, 0, 9, 8, 0, 0, 7, 8, 0, 0, 8, 0, 0, 5, 11, 9, 13, 12, 7, 7, 7, 13, 9, 11, 11, 9, 13, 12, 7, 7, 7, 11, 11, 11, 11, 11, 11, 11, 11, 9, 21, 12, 7, 7, 7, 14, 14, 14, 12, 16, 14, 12, 14, 12, 14, 14, 12, 14, 14, 12, 3, 3, 3, 3, 4, 4, 4, 3, 3, 3, 3, 3, 3, 7, 7, 7, 8, 7, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 4, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 11, 10, 11, 9, 12, 10, 10, 8, 7, 7, 7, 9, 9, 9, 9, 9, 10, 10, 10, 9, 19, 14, 0, 0, 14, 0, 0, 14, 14, 0, 0, 11, 14, 14, 0, 0, 12, 12, 0, 0, 13, 0, 0, 14, 0, 0, 13, 14, 0, 0, 13, 16, 14, 16, 16, 7, 7, 18, 14, 16, 16, 14, 16, 16, 7, 7, 16, 16, 16, 16, 16, 16, 16, 16, 14, 24, 16, 7, 7, 18, 18, 18, 16, 20, 18, 16, 18, 16, 18, 18, 16, 18, 18, 16, 12, 11, 12, 11, 12, 12, 12, 12, 13, 12, 11, 11, 12, 11, 11, 11, 12, 11, 11, 11, 12, 11, 2, 4, 4, 2, 3, 3, 3, 4, 5, 7, 0, 0, 6, 6, 6, 6, 4, 6, 6, 6, 6, 6, 6, 6, 4, 8, 9, 9, 12, 10, 9, 12, 10, 9, 2, 0, 2, 11, 15, 13, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 9, 2, 6, 2, 1, 1, 0, 5, 5, 5, 5, 5, 6, 6, 6, 5, 3, 3, 3, 3, 3, 9, 9, 9, 10, 9, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 6, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 13, 0, 0, 10, 0, 0, 11, 14, 14, 13, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 10, 2, 7, 2, 1, 1, 0, 6, 6, 6, 6, 6, 7, 7, 7, 6, 3, 3, 3, 3, 3, 10, 10, 10, 11, 10, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 7, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 0, 0, 13, 0, 0, 11, 13, 13, 13, 9, 7, 0, 0, 6, 0, 0, 4, 3, 2, 3, 0, 9, 2, 6, 2, 1, 1, 0, 5, 5, 5, 5, 5, 6, 6, 6, 5, 3, 3, 3, 3, 3, 9, 9, 9, 10, 9, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 6, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 10, 8, 10, 7, 15, 8, 12, 8, 7, 7, 7, 11, 11, 11, 11, 11, 12, 12, 12, 11, 10, 10, 10, 10, 10, 15, 15, 15, 16, 15, 10, 10, 11, 10, 10, 10, 11, 10, 10, 10, 11, 10, 11, 13, 13, 11, 3, 6, 2, 0, 5, 15, 38, 32, 24, 0, 0, 19, 0, 0, 12, 9, 6, 9, 0, 18, 6, 9, 6, 3, 3, 0, 6, 6, 6, 6, 6, 9, 9, 9, 6, 9, 9, 9, 9, 9, 18, 18, 18, 21, 18, 9, 9, 12, 9, 9, 9, 12, 9, 9, 9, 12, 9, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 12, 6, 9, 3, 9, 3, 9, 3, 9, 3, 3, 6, 3, 3, 3, 6, 3, 3, 3, 6, 3, 3, 3, 3, 3, 3, 3, 3, 6, 6, 6, 9, 6, 6, 6, 3, 3, 12, 9, 6, 6, 6, 0, 9, 9, 9, 12, 9, 9, 9, 6, 12, 9, 6, 6, 6, 9, 9, 9, 9, 12, 9, 9, 9, 6, 12, 9, 6, 6, 6, 9, 9, 9, 9, 12, 9, 9, 9, 6, 12, 9, 6, 6, 6, 9, 9, 9, 9, 12, 9, 9, 9, 6, 12, 9, 6, 6, 6, 9, 9, 9, 9, 12, 9, 9, 9, 6, 3, 12, 9, 6, 6, 6, 9, 9, 9, 9, 12, 9, 9, 9, 6, 0, 0, 31, 0, 0, 23, 0, 0, 25, 31, 10, 10, 27, 29, 9, 9, 26, 30, 34, 10, 10, 32, 32, 9, 9, 35, 35, 32, 24, 0, 0, 19, 0, 0, 12, 9, 6, 9, 0, 21, 6, 12, 6, 3, 3, 0, 9, 9, 9, 9, 9, 12, 12, 12, 9, 9, 9, 9, 9, 9, 21, 21, 21, 24, 21, 9, 9, 12, 9, 9, 9, 12, 9, 9, 9, 12, 9, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 12, 6, 9, 3, 9, 3, 9, 3, 12, 3, 3, 6, 3, 3, 3, 6, 3, 3, 3, 6, 3, 3, 3, 3, 3, 3, 3, 3, 6, 6, 6, 9, 6, 6, 6, 3, 3, 12, 9, 6, 6, 6, 0, 9, 9, 9, 12, 9, 9, 9, 6, 12, 9, 6, 6, 6, 9, 9, 9, 9, 12, 9, 9, 9, 6, 12, 9, 6, 6, 6, 9, 9, 9, 9, 12, 9, 9, 9, 6, 12, 9, 6, 6, 6, 9, 9, 9, 9, 12, 9, 9, 9, 6, 12, 9, 6, 6, 6, 9, 9, 9, 9, 12, 9, 9, 9, 6, 3, 12, 9, 6, 6, 6, 9, 9, 9, 9, 12, 9, 9, 9, 6, 0, 0, 31, 0, 0, 26, 30, 34, 10, 10, 32, 32, 9, 9, 21, 21, 21, 30, 24, 0, 0, 19, 0, 0, 12, 9, 6, 9, 0, 20, 6, 11, 6, 3, 3, 0, 8, 37, 33, 10, 10, 31, 30, 9, 9, 10, 10, 10, 10, 11, 10, 10, 10, 10, 11, 10, 10, 10, 10, 11, 10, 10, 10, 10, 11, 10, 10, 10, 10, 11, 10, 10, 10, 10, 11, 16, 15, 15, 12, 15, 12, 15, 10, 13, 11, 11, 13, 10, 14, 14, 16, 13, 14, 14, 16, 13, 10, 10, 11, 10, 11, 11, 11, 15, 15, 15, 17, 15, 15, 15, 11, 10, 17, 17, 12, 12, 13, 9, 17, 17, 17, 19, 17, 17, 17, 12, 17, 17, 12, 12, 13, 15, 17, 17, 17, 19, 17, 17, 17, 12, 17, 17, 12, 12, 13, 15, 17, 17, 17, 19, 17, 17, 17, 12, 17, 17, 12, 12, 13, 15, 17, 17, 17, 19, 17, 17, 17, 12, 17, 17, 12, 12, 13, 15, 17, 17, 17, 19, 17, 17, 17, 12, 11, 17, 17, 12, 12, 13, 15, 17, 17, 17, 19, 17, 17, 17, 12, 37, 33, 30, 28, 20, 20, 20, 41, 33, 37, 37, 33, 30, 28, 20, 20, 20, 37, 37, 37, 37, 37, 37, 37, 37, 33, 46, 28, 20, 20, 20, 32, 32, 32, 28, 36, 32, 28, 32, 28, 32, 32, 28, 32, 32, 28, 8, 8, 8, 8, 11, 11, 11, 8, 9, 9, 9, 9, 9, 20, 20, 20, 23, 20, 9, 9, 12, 9, 9, 9, 12, 9, 9, 9, 12, 9, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 12, 6, 9, 3, 9, 3, 9, 3, 11, 3, 3, 6, 3, 3, 3, 6, 3, 3, 3, 6, 3, 3, 3, 3, 3, 3, 3, 3, 6, 6, 6, 9, 6, 6, 6, 3, 3, 12, 9, 6, 6, 6, 0, 9, 9, 9, 12, 9, 9, 9, 6, 12, 9, 6, 6, 6, 9, 9, 9, 9, 12, 9, 9, 9, 6, 12, 9, 6, 6, 6, 9, 9, 9, 9, 12, 9, 9, 9, 6, 12, 9, 6, 6, 6, 9, 9, 9, 9, 12, 9, 9, 9, 6, 12, 9, 6, 6, 6, 9, 9, 9, 9, 12, 9, 9, 9, 6, 3, 12, 9, 6, 6, 6, 9, 9, 9, 9, 12, 9, 9, 9, 6, 33, 27, 33, 24, 39, 27, 30, 25, 22, 22, 22, 27, 27, 27, 27, 27, 30, 30, 30, 27, 43, 36, 10, 10, 35, 34, 9, 9, 40, 36, 33, 32, 20, 20, 44, 36, 40, 40, 36, 33, 32, 20, 20, 40, 40, 40, 40, 40, 40, 40, 40, 36, 49, 32, 20, 20, 36, 36, 36, 32, 40, 36, 32, 36, 32, 36, 36, 32, 36, 36, 32, 33, 33, 33, 33, 33, 39, 39, 39, 42, 39, 33, 33, 36, 33, 33, 33, 36, 33, 33, 33, 36, 33, 15, 21, 21, 15, 9, 10, 15, 18, 27, 29, 9, 9, 9, 9, 9, 9, 10, 9, 9, 9, 9, 10, 9, 9, 9, 9, 10, 9, 9, 9, 9, 10, 9, 9, 9, 9, 10, 9, 9, 9, 9, 10, 15, 14, 14, 11, 14, 11, 14, 9, 12, 10, 10, 12, 9, 13, 13, 15, 12, 13, 13, 15, 12, 9, 9, 10, 9, 10, 10, 10, 14, 14, 14, 16, 14, 14, 14, 10, 9, 16, 16, 11, 11, 12, 8, 16, 16, 16, 18, 16, 16, 16, 11, 16, 16, 11, 11, 12, 14, 16, 16, 16, 18, 16, 16, 16, 11, 16, 16, 11, 11, 12, 14, 16, 16, 16, 18, 16, 16, 16, 11, 16, 16, 11, 11, 12, 14, 16, 16, 16, 18, 16, 16, 16, 11, 16, 16, 11, 11, 12, 14, 16, 16, 16, 18, 16, 16, 16, 11, 10, 16, 16, 11, 11, 12, 14, 16, 16, 16, 18, 16, 16, 16, 11, 22, 22, 22, 22, 18, 22, 22, 22, 22, 22, 22, 22, 18, 32, 29, 29, 33, 33, 29, 33, 33, 29, 6, 0, 7, 0 }; static const char _sip_uri_parser_range_lengths[] = { 0, 10, 0, 0, 0, 0, 2, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 5, 5, 0, 0, 0, 0, 5, 0, 0, 5, 5, 0, 6, 1, 1, 1, 1, 1, 0, 0, 0, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 3, 3, 4, 4, 4, 5, 5, 8, 5, 8, 4, 4, 4, 4, 4, 5, 5, 8, 5, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 8, 5, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 8, 8, 3, 3, 3, 3, 3, 4, 4, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 4, 4, 5, 5, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 7, 6, 4, 5, 5, 4, 5, 5, 5, 3, 3, 5, 5, 0, 0, 5, 6, 1, 1, 1, 1, 1, 0, 0, 0, 3, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 3, 3, 3, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 3, 4, 4, 4, 4, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 3, 3, 4, 4, 4, 5, 5, 8, 5, 8, 4, 4, 4, 4, 4, 5, 5, 8, 5, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 8, 5, 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 5, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 8, 8, 3, 3, 3, 3, 3, 4, 4, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 4, 4, 5, 5, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 7, 6, 4, 5, 5, 4, 5, 5, 5, 3, 3, 5, 4, 4, 4, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 4, 3, 3, 4, 4, 4, 4, 4, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 4, 3, 3, 4, 5, 5, 5, 5, 4, 3, 3, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 4, 5, 4, 5, 4, 5, 5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 5, 4, 5, 4, 5, 4, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 3, 3, 13, 12, 12, 12, 9, 9, 15, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 3, 3, 3, 0, 3, 3, 3, 3, 6, 6, 6, 3, 9, 9, 9, 9, 9, 9, 9, 9, 12, 12, 9, 9, 12, 12, 9, 9, 12, 12, 9, 9, 12, 12, 9, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 3, 0, 3, 0, 3, 0, 0, 3, 3, 6, 3, 3, 3, 6, 3, 3, 3, 6, 3, 9, 9, 0, 9, 9, 9, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 13, 9, 9, 12, 9, 9, 18, 17, 14, 14, 18, 17, 14, 14, 12, 16, 16, 14, 14, 16, 16, 14, 14, 12, 12, 12, 12, 9, 9, 15, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 3, 3, 3, 0, 3, 3, 3, 3, 6, 6, 6, 3, 9, 9, 9, 9, 9, 9, 9, 9, 12, 12, 9, 9, 12, 12, 9, 9, 12, 12, 9, 9, 12, 12, 9, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 3, 0, 3, 0, 3, 0, 0, 3, 3, 6, 3, 3, 3, 6, 3, 3, 3, 6, 3, 9, 9, 0, 9, 9, 9, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 13, 9, 9, 12, 16, 16, 14, 14, 16, 16, 14, 14, 13, 13, 13, 15, 12, 9, 9, 15, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 3, 3, 3, 0, 16, 16, 14, 14, 16, 16, 14, 14, 13, 13, 13, 13, 4, 13, 13, 13, 13, 4, 13, 13, 13, 13, 4, 13, 13, 13, 13, 4, 13, 13, 13, 13, 4, 13, 13, 13, 13, 4, 13, 12, 7, 4, 7, 4, 7, 4, 4, 7, 7, 9, 8, 6, 6, 8, 7, 6, 6, 8, 7, 13, 13, 4, 13, 13, 13, 13, 12, 12, 12, 14, 14, 12, 12, 13, 13, 13, 12, 13, 13, 4, 13, 12, 12, 12, 14, 14, 12, 12, 13, 13, 12, 13, 13, 4, 13, 12, 12, 12, 14, 14, 12, 12, 13, 13, 12, 13, 13, 4, 13, 12, 12, 12, 14, 14, 12, 12, 13, 13, 12, 13, 13, 4, 13, 12, 12, 12, 14, 14, 12, 12, 13, 13, 12, 13, 13, 4, 13, 12, 12, 12, 14, 14, 12, 12, 13, 4, 13, 12, 13, 13, 4, 13, 12, 12, 12, 14, 14, 12, 12, 13, 16, 16, 16, 16, 21, 15, 21, 16, 16, 16, 16, 16, 16, 16, 21, 15, 21, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 21, 15, 21, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 3, 3, 3, 3, 6, 6, 6, 3, 9, 9, 9, 9, 9, 9, 9, 9, 12, 12, 9, 9, 12, 12, 9, 9, 12, 12, 9, 9, 12, 12, 9, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 3, 0, 3, 0, 3, 0, 0, 3, 3, 6, 3, 3, 3, 6, 3, 3, 3, 6, 3, 9, 9, 0, 9, 9, 9, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 0, 9, 9, 9, 9, 0, 9, 9, 9, 9, 12, 12, 9, 9, 9, 12, 15, 12, 15, 12, 15, 15, 18, 15, 15, 15, 15, 15, 15, 15, 15, 18, 18, 18, 18, 16, 16, 14, 14, 16, 16, 14, 14, 16, 16, 16, 16, 21, 21, 16, 16, 16, 16, 16, 16, 16, 21, 21, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 21, 21, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 15, 12, 15, 12, 15, 12, 12, 12, 15, 15, 12, 12, 15, 15, 12, 12, 15, 15, 12, 12, 15, 15, 13, 13, 13, 13, 15, 15, 11, 11, 16, 16, 14, 14, 13, 13, 13, 13, 4, 13, 13, 13, 13, 4, 13, 13, 13, 13, 4, 13, 13, 13, 13, 4, 13, 13, 13, 13, 4, 13, 13, 13, 13, 4, 13, 12, 7, 4, 7, 4, 7, 4, 4, 7, 7, 9, 8, 6, 6, 8, 7, 6, 6, 8, 7, 13, 13, 4, 13, 13, 13, 13, 12, 12, 12, 14, 14, 12, 12, 13, 13, 13, 12, 13, 13, 4, 13, 12, 12, 12, 14, 14, 12, 12, 13, 13, 12, 13, 13, 4, 13, 12, 12, 12, 14, 14, 12, 12, 13, 13, 12, 13, 13, 4, 13, 12, 12, 12, 14, 14, 12, 12, 13, 13, 12, 13, 13, 4, 13, 12, 12, 12, 14, 14, 12, 12, 13, 13, 12, 13, 13, 4, 13, 12, 12, 12, 14, 14, 12, 12, 13, 4, 13, 12, 13, 13, 4, 13, 12, 12, 12, 14, 14, 12, 12, 13, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 14, 16, 16, 14, 14, 16, 14, 14, 16, 15, 9, 9, 0 }; static const unsigned short _sip_uri_parser_index_offsets[] = { 0, 0, 32, 37, 39, 42, 46, 53, 60, 74, 86, 97, 101, 105, 116, 120, 124, 132, 139, 145, 152, 156, 166, 172, 179, 184, 187, 190, 192, 195, 201, 203, 206, 212, 214, 217, 221, 234, 236, 239, 251, 267, 273, 275, 278, 283, 298, 300, 303, 317, 332, 337, 348, 350, 352, 354, 356, 358, 360, 363, 369, 373, 378, 383, 388, 393, 395, 400, 405, 410, 415, 417, 422, 427, 432, 437, 439, 444, 449, 454, 459, 461, 466, 471, 476, 481, 483, 488, 493, 498, 503, 505, 513, 519, 524, 526, 531, 533, 538, 540, 543, 546, 551, 554, 557, 560, 565, 568, 571, 574, 579, 582, 587, 592, 594, 599, 604, 609, 614, 620, 626, 632, 640, 647, 653, 659, 664, 669, 677, 684, 690, 696, 699, 703, 710, 717, 724, 733, 741, 748, 755, 761, 769, 776, 782, 788, 791, 798, 805, 812, 819, 828, 836, 843, 850, 856, 864, 871, 877, 883, 886, 893, 900, 907, 914, 923, 931, 938, 945, 951, 959, 966, 972, 978, 981, 988, 995, 1002, 1009, 1018, 1026, 1033, 1040, 1046, 1054, 1061, 1067, 1073, 1076, 1083, 1090, 1097, 1104, 1113, 1121, 1128, 1135, 1141, 1143, 1151, 1158, 1164, 1170, 1173, 1180, 1187, 1194, 1201, 1210, 1218, 1225, 1232, 1238, 1247, 1251, 1255, 1259, 1263, 1267, 1271, 1277, 1283, 1289, 1293, 1300, 1307, 1314, 1321, 1328, 1338, 1348, 1358, 1370, 1381, 1388, 1395, 1404, 1412, 1419, 1426, 1435, 1443, 1450, 1457, 1466, 1474, 1479, 1484, 1489, 1494, 1496, 1501, 1506, 1511, 1516, 1518, 1523, 1528, 1533, 1538, 1540, 1545, 1550, 1555, 1560, 1562, 1567, 1572, 1577, 1582, 1584, 1589, 1594, 1599, 1604, 1606, 1614, 1620, 1625, 1627, 1632, 1634, 1639, 1641, 1645, 1648, 1651, 1656, 1659, 1662, 1665, 1670, 1673, 1676, 1679, 1684, 1687, 1692, 1697, 1699, 1704, 1709, 1714, 1719, 1725, 1731, 1737, 1745, 1752, 1758, 1764, 1769, 1774, 1782, 1789, 1795, 1801, 1804, 1808, 1815, 1822, 1829, 1838, 1846, 1853, 1860, 1866, 1874, 1881, 1887, 1893, 1896, 1903, 1910, 1917, 1924, 1933, 1941, 1948, 1955, 1961, 1969, 1976, 1982, 1988, 1991, 1998, 2005, 2012, 2019, 2028, 2036, 2043, 2050, 2056, 2064, 2071, 2077, 2083, 2086, 2093, 2100, 2107, 2114, 2123, 2131, 2138, 2145, 2151, 2159, 2166, 2172, 2178, 2181, 2188, 2195, 2202, 2209, 2218, 2226, 2233, 2240, 2246, 2248, 2256, 2263, 2269, 2275, 2278, 2285, 2292, 2299, 2306, 2315, 2323, 2330, 2337, 2343, 2347, 2351, 2364, 2368, 2372, 2382, 2395, 2408, 2420, 2431, 2435, 2439, 2450, 2454, 2458, 2466, 2473, 2479, 2486, 2490, 2501, 2507, 2515, 2520, 2523, 2526, 2528, 2532, 2537, 2542, 2547, 2552, 2559, 2566, 2573, 2578, 2585, 2592, 2599, 2606, 2613, 2624, 2635, 2646, 2659, 2671, 2678, 2685, 2694, 2702, 2709, 2716, 2725, 2733, 2740, 2747, 2756, 2764, 2769, 2774, 2779, 2784, 2786, 2791, 2796, 2801, 2806, 2808, 2813, 2818, 2823, 2828, 2830, 2835, 2840, 2845, 2850, 2852, 2857, 2862, 2867, 2872, 2874, 2879, 2884, 2889, 2894, 2896, 2904, 2910, 2915, 2917, 2922, 2924, 2929, 2931, 2936, 2939, 2942, 2947, 2950, 2953, 2956, 2961, 2964, 2967, 2970, 2975, 2978, 2983, 2988, 2990, 2995, 3000, 3005, 3010, 3016, 3022, 3028, 3036, 3043, 3049, 3055, 3060, 3065, 3073, 3080, 3086, 3092, 3095, 3099, 3106, 3113, 3120, 3129, 3137, 3144, 3151, 3157, 3165, 3172, 3178, 3184, 3187, 3194, 3201, 3208, 3215, 3224, 3232, 3239, 3246, 3252, 3260, 3267, 3273, 3279, 3282, 3289, 3296, 3303, 3310, 3319, 3327, 3334, 3341, 3347, 3355, 3362, 3368, 3374, 3377, 3384, 3391, 3398, 3405, 3414, 3422, 3429, 3436, 3442, 3450, 3457, 3463, 3469, 3472, 3479, 3486, 3493, 3500, 3509, 3517, 3524, 3531, 3537, 3539, 3547, 3554, 3560, 3566, 3569, 3576, 3583, 3590, 3597, 3606, 3614, 3621, 3628, 3634, 3638, 3642, 3655, 3659, 3663, 3673, 3682, 3691, 3700, 3716, 3727, 3731, 3735, 3746, 3750, 3754, 3762, 3769, 3775, 3782, 3786, 3797, 3803, 3811, 3816, 3819, 3822, 3824, 3828, 3844, 3858, 3862, 3866, 3880, 3893, 3897, 3901, 3913, 3926, 3930, 3934, 3947, 3951, 3955, 3965, 3981, 3995, 4014, 4032, 4048, 4061, 4077, 4095, 4109, 4125, 4141, 4155, 4174, 4192, 4208, 4221, 4237, 4253, 4269, 4285, 4301, 4317, 4333, 4349, 4365, 4379, 4406, 4424, 4440, 4453, 4469, 4489, 4509, 4529, 4547, 4569, 4589, 4607, 4627, 4645, 4665, 4685, 4703, 4723, 4743, 4761, 4766, 4771, 4776, 4781, 4788, 4795, 4802, 4807, 4814, 4821, 4828, 4835, 4842, 4853, 4864, 4875, 4888, 4900, 4907, 4914, 4923, 4931, 4938, 4945, 4954, 4962, 4969, 4976, 4985, 4993, 4998, 5003, 5008, 5013, 5015, 5020, 5025, 5030, 5035, 5037, 5042, 5047, 5052, 5057, 5059, 5064, 5069, 5074, 5079, 5081, 5086, 5091, 5096, 5101, 5103, 5108, 5113, 5118, 5123, 5125, 5133, 5139, 5144, 5146, 5151, 5153, 5158, 5160, 5165, 5168, 5171, 5176, 5179, 5182, 5185, 5190, 5193, 5196, 5199, 5204, 5207, 5212, 5217, 5219, 5224, 5229, 5234, 5239, 5245, 5251, 5257, 5265, 5272, 5278, 5284, 5289, 5294, 5302, 5309, 5315, 5321, 5324, 5328, 5335, 5342, 5349, 5358, 5366, 5373, 5380, 5386, 5394, 5401, 5407, 5413, 5416, 5423, 5430, 5437, 5444, 5453, 5461, 5468, 5475, 5481, 5489, 5496, 5502, 5508, 5511, 5518, 5525, 5532, 5539, 5548, 5556, 5563, 5570, 5576, 5584, 5591, 5597, 5603, 5606, 5613, 5620, 5627, 5634, 5643, 5651, 5658, 5665, 5671, 5679, 5686, 5692, 5698, 5701, 5708, 5715, 5722, 5729, 5738, 5746, 5753, 5760, 5766, 5768, 5776, 5783, 5789, 5795, 5798, 5805, 5812, 5819, 5826, 5835, 5843, 5850, 5857, 5863, 5879, 5894, 5910, 5924, 5941, 5956, 5971, 5985, 5997, 6009, 6021, 6034, 6047, 6060, 6073, 6086, 6101, 6116, 6131, 6145, 6168, 6186, 6190, 6194, 6212, 6216, 6220, 6238, 6256, 6260, 6264, 6279, 6297, 6315, 6319, 6323, 6340, 6357, 6361, 6365, 6382, 6386, 6390, 6408, 6412, 6416, 6433, 6451, 6455, 6459, 6476, 6496, 6514, 6535, 6556, 6572, 6588, 6610, 6628, 6648, 6668, 6686, 6707, 6728, 6744, 6760, 6780, 6800, 6820, 6840, 6860, 6880, 6900, 6920, 6938, 6967, 6988, 7004, 7020, 7043, 7066, 7089, 7110, 7135, 7158, 7179, 7202, 7223, 7246, 7269, 7290, 7313, 7336, 7357, 7374, 7390, 7407, 7423, 7440, 7457, 7474, 7491, 7510, 7528, 7544, 7560, 7578, 7595, 7611, 7627, 7645, 7662, 7678, 7694, 7712, 7729, 7736, 7745, 7754, 7761, 7770, 7779, 7786, 7794, 7804, 7816, 7820, 7824, 7834, 7844, 7854, 7864, 7872, 7882, 7892, 7902, 7912, 7922, 7932, 7942, 7950, 7964, 7981, 7997, 8014, 8030, 8045, 8062, 8078, 8093, 8101, 8105, 8111, 8125, 8139, 8141, 8144, 8157, 8168, 8170, 8172, 8174, 8176, 8178, 8180, 8183, 8188, 8192, 8199, 8214, 8227, 8238, 8242, 8246, 8257, 8261, 8265, 8273, 8280, 8286, 8293, 8297, 8307, 8313, 8320, 8325, 8328, 8331, 8333, 8336, 8346, 8350, 8354, 8358, 8362, 8366, 8370, 8376, 8382, 8388, 8392, 8399, 8406, 8413, 8420, 8427, 8437, 8447, 8457, 8469, 8480, 8487, 8494, 8503, 8511, 8518, 8525, 8534, 8542, 8549, 8556, 8565, 8573, 8578, 8583, 8588, 8593, 8595, 8600, 8605, 8610, 8615, 8617, 8622, 8627, 8632, 8637, 8639, 8644, 8649, 8654, 8659, 8661, 8666, 8671, 8676, 8681, 8683, 8688, 8693, 8698, 8703, 8705, 8713, 8719, 8724, 8726, 8731, 8733, 8738, 8740, 8744, 8747, 8750, 8755, 8758, 8761, 8764, 8769, 8772, 8775, 8778, 8783, 8786, 8791, 8796, 8798, 8803, 8808, 8813, 8818, 8824, 8830, 8836, 8844, 8851, 8857, 8863, 8868, 8873, 8881, 8888, 8894, 8900, 8903, 8907, 8914, 8921, 8928, 8937, 8945, 8952, 8959, 8965, 8973, 8980, 8986, 8992, 8995, 9002, 9009, 9016, 9023, 9032, 9040, 9047, 9054, 9060, 9068, 9075, 9081, 9087, 9090, 9097, 9104, 9111, 9118, 9127, 9135, 9142, 9149, 9155, 9163, 9170, 9176, 9182, 9185, 9192, 9199, 9206, 9213, 9222, 9230, 9237, 9244, 9250, 9258, 9265, 9271, 9277, 9280, 9287, 9294, 9301, 9308, 9317, 9325, 9332, 9339, 9345, 9347, 9355, 9362, 9368, 9374, 9377, 9384, 9391, 9398, 9405, 9414, 9422, 9429, 9436, 9442, 9446, 9450, 9464, 9468, 9472, 9483, 9497, 9511, 9524, 9535, 9539, 9543, 9554, 9558, 9562, 9570, 9577, 9583, 9590, 9594, 9605, 9611, 9619, 9624, 9627, 9630, 9632, 9636, 9641, 9646, 9651, 9656, 9663, 9670, 9677, 9682, 9689, 9696, 9703, 9710, 9717, 9728, 9739, 9750, 9763, 9775, 9782, 9789, 9798, 9806, 9813, 9820, 9829, 9837, 9844, 9851, 9860, 9868, 9873, 9878, 9883, 9888, 9890, 9895, 9900, 9905, 9910, 9912, 9917, 9922, 9927, 9932, 9934, 9939, 9944, 9949, 9954, 9956, 9961, 9966, 9971, 9976, 9978, 9983, 9988, 9993, 9998, 10000, 10008, 10014, 10019, 10021, 10026, 10028, 10033, 10035, 10040, 10043, 10046, 10051, 10054, 10057, 10060, 10065, 10068, 10071, 10074, 10079, 10082, 10087, 10092, 10094, 10099, 10104, 10109, 10114, 10120, 10126, 10132, 10140, 10147, 10153, 10159, 10164, 10169, 10177, 10184, 10190, 10196, 10199, 10203, 10210, 10217, 10224, 10233, 10241, 10248, 10255, 10261, 10269, 10276, 10282, 10288, 10291, 10298, 10305, 10312, 10319, 10328, 10336, 10343, 10350, 10356, 10364, 10371, 10377, 10383, 10386, 10393, 10400, 10407, 10414, 10423, 10431, 10438, 10445, 10451, 10459, 10466, 10472, 10478, 10481, 10488, 10495, 10502, 10509, 10518, 10526, 10533, 10540, 10546, 10554, 10561, 10567, 10573, 10576, 10583, 10590, 10597, 10604, 10613, 10621, 10628, 10635, 10641, 10643, 10651, 10658, 10664, 10670, 10673, 10680, 10687, 10694, 10701, 10710, 10718, 10725, 10732, 10738, 10742, 10746, 10760, 10764, 10768, 10779, 10788, 10797, 10806, 10822, 10833, 10837, 10841, 10852, 10856, 10860, 10868, 10875, 10881, 10888, 10892, 10903, 10909, 10917, 10922, 10925, 10928, 10930, 10934, 10950, 10964, 10968, 10972, 10986, 10999, 11003, 11007, 11019, 11032, 11036, 11040, 11053, 11057, 11061, 11071, 11087, 11101, 11120, 11138, 11154, 11167, 11183, 11201, 11215, 11231, 11247, 11261, 11280, 11298, 11314, 11327, 11343, 11359, 11375, 11391, 11407, 11423, 11439, 11455, 11471, 11485, 11512, 11530, 11546, 11559, 11575, 11595, 11615, 11635, 11653, 11675, 11695, 11713, 11733, 11751, 11771, 11791, 11809, 11829, 11849, 11867, 11872, 11877, 11882, 11887, 11894, 11901, 11908, 11913, 11920, 11927, 11934, 11941, 11948, 11959, 11970, 11981, 11994, 12006, 12013, 12020, 12029, 12037, 12044, 12051, 12060, 12068, 12075, 12082, 12091, 12099, 12104, 12109, 12114, 12119, 12121, 12126, 12131, 12136, 12141, 12143, 12148, 12153, 12158, 12163, 12165, 12170, 12175, 12180, 12185, 12187, 12192, 12197, 12202, 12207, 12209, 12214, 12219, 12224, 12229, 12231, 12239, 12245, 12250, 12252, 12257, 12259, 12264, 12266, 12271, 12274, 12277, 12282, 12285, 12288, 12291, 12296, 12299, 12302, 12305, 12310, 12313, 12318, 12323, 12325, 12330, 12335, 12340, 12345, 12351, 12357, 12363, 12371, 12378, 12384, 12390, 12395, 12400, 12408, 12415, 12421, 12427, 12430, 12434, 12441, 12448, 12455, 12464, 12472, 12479, 12486, 12492, 12500, 12507, 12513, 12519, 12522, 12529, 12536, 12543, 12550, 12559, 12567, 12574, 12581, 12587, 12595, 12602, 12608, 12614, 12617, 12624, 12631, 12638, 12645, 12654, 12662, 12669, 12676, 12682, 12690, 12697, 12703, 12709, 12712, 12719, 12726, 12733, 12740, 12749, 12757, 12764, 12771, 12777, 12785, 12792, 12798, 12804, 12807, 12814, 12821, 12828, 12835, 12844, 12852, 12859, 12866, 12872, 12874, 12882, 12889, 12895, 12901, 12904, 12911, 12918, 12925, 12932, 12941, 12949, 12956, 12963, 12969, 12985, 13000, 13016, 13030, 13047, 13062, 13077, 13091, 13103, 13115, 13127, 13141, 13155, 13169, 13183, 13197, 13213, 13229, 13245, 13260, 13283, 13301, 13305, 13309, 13327, 13331, 13335, 13353, 13371, 13375, 13379, 13394, 13412, 13430, 13434, 13438, 13455, 13472, 13476, 13480, 13497, 13501, 13505, 13523, 13527, 13531, 13548, 13566, 13570, 13574, 13591, 13611, 13629, 13650, 13671, 13687, 13703, 13725, 13743, 13763, 13783, 13801, 13822, 13843, 13859, 13875, 13895, 13915, 13935, 13955, 13975, 13995, 14015, 14035, 14053, 14082, 14103, 14119, 14135, 14158, 14181, 14204, 14225, 14250, 14273, 14294, 14317, 14338, 14361, 14384, 14405, 14428, 14451, 14472, 14489, 14505, 14522, 14538, 14555, 14572, 14589, 14606, 14625, 14643, 14659, 14675, 14693, 14710, 14726, 14742, 14760, 14777, 14793, 14809, 14827, 14844, 14851, 14860, 14869, 14876, 14885, 14894, 14901, 14909, 14919, 14931, 14935, 14939, 14949, 14959, 14969, 14979, 14987, 14997, 15007, 15017, 15027, 15037, 15047, 15057, 15065, 15079, 15096, 15112, 15129, 15145, 15160, 15177, 15193, 15208, 15216, 15220, 15226, 15243, 15263, 15281, 15293, 15297, 15301, 15313, 15317, 15321, 15329, 15336, 15342, 15349, 15353, 15366, 15372, 15382, 15387, 15390, 15393, 15395, 15401, 15408, 15415, 15422, 15429, 15438, 15447, 15456, 15463, 15470, 15477, 15484, 15491, 15498, 15511, 15524, 15537, 15552, 15566, 15573, 15580, 15589, 15597, 15604, 15611, 15620, 15628, 15635, 15642, 15651, 15659, 15664, 15669, 15674, 15679, 15681, 15686, 15691, 15696, 15701, 15703, 15708, 15713, 15718, 15723, 15725, 15730, 15735, 15740, 15745, 15747, 15752, 15757, 15762, 15767, 15769, 15774, 15779, 15784, 15789, 15791, 15799, 15805, 15810, 15812, 15817, 15819, 15824, 15826, 15833, 15836, 15839, 15844, 15847, 15850, 15853, 15858, 15861, 15864, 15867, 15872, 15875, 15880, 15885, 15887, 15892, 15897, 15902, 15907, 15913, 15919, 15925, 15933, 15940, 15946, 15952, 15957, 15962, 15970, 15977, 15983, 15989, 15992, 15996, 16003, 16010, 16017, 16026, 16034, 16041, 16048, 16054, 16062, 16069, 16075, 16081, 16084, 16091, 16098, 16105, 16112, 16121, 16129, 16136, 16143, 16149, 16157, 16164, 16170, 16176, 16179, 16186, 16193, 16200, 16207, 16216, 16224, 16231, 16238, 16244, 16252, 16259, 16265, 16271, 16274, 16281, 16288, 16295, 16302, 16311, 16319, 16326, 16333, 16339, 16347, 16354, 16360, 16366, 16369, 16376, 16383, 16390, 16397, 16406, 16414, 16421, 16428, 16434, 16436, 16444, 16451, 16457, 16463, 16466, 16473, 16480, 16487, 16494, 16503, 16511, 16518, 16525, 16531, 16535, 16539, 16557, 16561, 16565, 16580, 16584, 16588, 16604, 16623, 16642, 16660, 16672, 16676, 16680, 16692, 16696, 16700, 16708, 16715, 16721, 16728, 16732, 16746, 16752, 16763, 16768, 16771, 16774, 16776, 16783, 16791, 16799, 16807, 16815, 16825, 16835, 16845, 16853, 16860, 16867, 16874, 16881, 16888, 16902, 16916, 16930, 16946, 16961, 16968, 16975, 16984, 16992, 16999, 17006, 17015, 17023, 17030, 17037, 17046, 17054, 17059, 17064, 17069, 17074, 17076, 17081, 17086, 17091, 17096, 17098, 17103, 17108, 17113, 17118, 17120, 17125, 17130, 17135, 17140, 17142, 17147, 17152, 17157, 17162, 17164, 17169, 17174, 17179, 17184, 17186, 17194, 17200, 17205, 17207, 17212, 17214, 17219, 17221, 17229, 17232, 17235, 17240, 17243, 17246, 17249, 17254, 17257, 17260, 17263, 17268, 17271, 17276, 17281, 17283, 17288, 17293, 17298, 17303, 17309, 17315, 17321, 17329, 17336, 17342, 17348, 17353, 17358, 17366, 17373, 17379, 17385, 17388, 17392, 17399, 17406, 17413, 17422, 17430, 17437, 17444, 17450, 17458, 17465, 17471, 17477, 17480, 17487, 17494, 17501, 17508, 17517, 17525, 17532, 17539, 17545, 17553, 17560, 17566, 17572, 17575, 17582, 17589, 17596, 17603, 17612, 17620, 17627, 17634, 17640, 17648, 17655, 17661, 17667, 17670, 17677, 17684, 17691, 17698, 17707, 17715, 17722, 17729, 17735, 17743, 17750, 17756, 17762, 17765, 17772, 17779, 17786, 17793, 17802, 17810, 17817, 17824, 17830, 17832, 17840, 17847, 17853, 17859, 17862, 17869, 17876, 17883, 17890, 17899, 17907, 17914, 17921, 17927, 17931, 17935, 17953, 17957, 17961, 17977, 17996, 18015, 18034, 18049, 18061, 18065, 18069, 18081, 18085, 18089, 18097, 18104, 18110, 18117, 18121, 18134, 18140, 18150, 18155, 18158, 18161, 18163, 18169, 18176, 18183, 18190, 18197, 18206, 18215, 18224, 18231, 18238, 18245, 18252, 18259, 18266, 18279, 18292, 18305, 18320, 18334, 18341, 18348, 18357, 18365, 18372, 18379, 18388, 18396, 18403, 18410, 18419, 18427, 18432, 18437, 18442, 18447, 18449, 18454, 18459, 18464, 18469, 18471, 18476, 18481, 18486, 18491, 18493, 18498, 18503, 18508, 18513, 18515, 18520, 18525, 18530, 18535, 18537, 18542, 18547, 18552, 18557, 18559, 18567, 18573, 18578, 18580, 18585, 18587, 18592, 18594, 18601, 18604, 18607, 18612, 18615, 18618, 18621, 18626, 18629, 18632, 18635, 18640, 18643, 18648, 18653, 18655, 18660, 18665, 18670, 18675, 18681, 18687, 18693, 18701, 18708, 18714, 18720, 18725, 18730, 18738, 18745, 18751, 18757, 18760, 18764, 18771, 18778, 18785, 18794, 18802, 18809, 18816, 18822, 18830, 18837, 18843, 18849, 18852, 18859, 18866, 18873, 18880, 18889, 18897, 18904, 18911, 18917, 18925, 18932, 18938, 18944, 18947, 18954, 18961, 18968, 18975, 18984, 18992, 18999, 19006, 19012, 19020, 19027, 19033, 19039, 19042, 19049, 19056, 19063, 19070, 19079, 19087, 19094, 19101, 19107, 19115, 19122, 19128, 19134, 19137, 19144, 19151, 19158, 19165, 19174, 19182, 19189, 19196, 19202, 19204, 19212, 19219, 19225, 19231, 19234, 19241, 19248, 19255, 19262, 19271, 19279, 19286, 19293, 19299, 19314, 19328, 19343, 19356, 19376, 19390, 19408, 19423, 19436, 19449, 19462, 19479, 19496, 19513, 19530, 19547, 19566, 19585, 19604, 19622, 19638, 19653, 19669, 19684, 19700, 19720, 19740, 19760, 19782, 19803, 19818, 19833, 19850, 19866, 19881, 19896, 19913, 19929, 19944, 19959, 19976, 19992, 20009, 20028, 20047, 20064, 20073, 20085, 20093, 20097, 20106, 20135, 20186, 20231, 20268, 20278, 20288, 20323, 20333, 20343, 20365, 20384, 20400, 20419, 20429, 20457, 20473, 20492, 20505, 20512, 20519, 20523, 20530, 20540, 20550, 20560, 20570, 20586, 20602, 20618, 20628, 20647, 20666, 20685, 20704, 20723, 20751, 20779, 20807, 20841, 20872, 20891, 20910, 20935, 20957, 20976, 20995, 21020, 21042, 21061, 21080, 21105, 21127, 21140, 21153, 21166, 21179, 21183, 21196, 21209, 21222, 21235, 21239, 21252, 21265, 21278, 21291, 21295, 21308, 21321, 21334, 21347, 21351, 21364, 21377, 21390, 21403, 21407, 21420, 21433, 21446, 21459, 21463, 21485, 21501, 21514, 21518, 21531, 21535, 21548, 21552, 21562, 21569, 21576, 21589, 21596, 21603, 21610, 21623, 21630, 21637, 21644, 21657, 21664, 21677, 21690, 21694, 21707, 21720, 21733, 21746, 21762, 21778, 21794, 21816, 21835, 21851, 21867, 21880, 21893, 21915, 21934, 21950, 21966, 21973, 21983, 22002, 22021, 22040, 22065, 22087, 22106, 22125, 22141, 22163, 22182, 22198, 22214, 22221, 22240, 22259, 22278, 22297, 22322, 22344, 22363, 22382, 22398, 22420, 22439, 22455, 22471, 22478, 22497, 22516, 22535, 22554, 22579, 22601, 22620, 22639, 22655, 22677, 22696, 22712, 22728, 22735, 22754, 22773, 22792, 22811, 22836, 22858, 22877, 22896, 22912, 22934, 22953, 22969, 22985, 22992, 23011, 23030, 23049, 23068, 23093, 23115, 23134, 23153, 23169, 23173, 23195, 23214, 23230, 23246, 23253, 23272, 23291, 23310, 23329, 23354, 23376, 23395, 23414, 23430, 23440, 23450, 23495, 23505, 23515, 23551, 23561, 23571, 23615, 23664, 23689, 23714, 23760, 23807, 23831, 23855, 23894, 23941, 23992, 24017, 24042, 24091, 24140, 24164, 24188, 24236, 24284, 24329, 24366, 24376, 24386, 24421, 24431, 24441, 24463, 24482, 24498, 24517, 24527, 24558, 24574, 24596, 24609, 24616, 24623, 24627, 24637, 24650, 24663, 24676, 24689, 24708, 24727, 24746, 24759, 24778, 24797, 24816, 24835, 24854, 24885, 24916, 24947, 24984, 25018, 25037, 25056, 25081, 25103, 25122, 25141, 25166, 25188, 25207, 25226, 25251, 25273, 25286, 25299, 25312, 25325, 25329, 25342, 25355, 25368, 25381, 25385, 25398, 25411, 25424, 25437, 25441, 25454, 25467, 25480, 25493, 25497, 25510, 25523, 25536, 25549, 25553, 25566, 25579, 25592, 25605, 25609, 25631, 25647, 25660, 25664, 25677, 25681, 25694, 25698, 25711, 25718, 25725, 25738, 25745, 25752, 25759, 25772, 25779, 25786, 25793, 25806, 25813, 25826, 25839, 25843, 25856, 25869, 25882, 25895, 25911, 25927, 25943, 25965, 25984, 26000, 26016, 26029, 26042, 26064, 26083, 26099, 26115, 26122, 26132, 26151, 26170, 26189, 26214, 26236, 26255, 26274, 26290, 26312, 26331, 26347, 26363, 26370, 26389, 26408, 26427, 26446, 26471, 26493, 26512, 26531, 26547, 26569, 26588, 26604, 26620, 26627, 26646, 26665, 26684, 26703, 26728, 26750, 26769, 26788, 26804, 26826, 26845, 26861, 26877, 26884, 26903, 26922, 26941, 26960, 26985, 27007, 27026, 27045, 27061, 27083, 27102, 27118, 27134, 27141, 27160, 27179, 27198, 27217, 27242, 27264, 27283, 27302, 27318, 27322, 27344, 27363, 27379, 27395, 27402, 27421, 27440, 27459, 27478, 27503, 27525, 27544, 27563, 27579, 27589, 27599, 27644, 27654, 27664, 27703, 27750, 27801, 27826, 27851, 27900, 27949, 27973, 27997, 28032, 28067, 28102, 28148, 28185, 28195, 28205, 28240, 28250, 28260, 28282, 28301, 28317, 28336, 28346, 28376, 28392, 28413, 28426, 28433, 28440, 28444, 28453, 28507, 28557, 28582, 28607, 28655, 28702, 28726, 28750, 28774, 28798, 28822, 28846, 28862, 28886, 28910, 28934, 28958, 28974, 28998, 29022, 29046, 29070, 29086, 29110, 29134, 29158, 29182, 29198, 29222, 29246, 29270, 29294, 29310, 29334, 29358, 29382, 29406, 29422, 29452, 29480, 29503, 29520, 29543, 29560, 29583, 29598, 29616, 29635, 29654, 29677, 29696, 29717, 29738, 29763, 29784, 29805, 29826, 29851, 29872, 29896, 29920, 29936, 29960, 29985, 30010, 30035, 30063, 30091, 30119, 30151, 30181, 30209, 30237, 30262, 30286, 30317, 30347, 30373, 30399, 30417, 30440, 30470, 30500, 30530, 30564, 30596, 30626, 30656, 30682, 30713, 30743, 30769, 30795, 30813, 30842, 30872, 30902, 30932, 30966, 30998, 31028, 31058, 31084, 31115, 31145, 31171, 31197, 31215, 31244, 31274, 31304, 31334, 31368, 31400, 31430, 31460, 31486, 31517, 31547, 31573, 31599, 31617, 31646, 31676, 31706, 31736, 31770, 31802, 31832, 31862, 31888, 31919, 31949, 31975, 32001, 32019, 32048, 32078, 32108, 32138, 32172, 32204, 32234, 32264, 32290, 32306, 32337, 32367, 32393, 32419, 32437, 32466, 32496, 32526, 32556, 32590, 32622, 32652, 32682, 32708, 32762, 32812, 32859, 32904, 32946, 32982, 33024, 33082, 33132, 33186, 33240, 33290, 33337, 33382, 33424, 33460, 33502, 33556, 33610, 33664, 33718, 33772, 33826, 33880, 33934, 33984, 34047, 34092, 34134, 34170, 34212, 34261, 34310, 34359, 34404, 34457, 34506, 34551, 34600, 34645, 34694, 34743, 34788, 34837, 34886, 34931, 34943, 34955, 34967, 34979, 34997, 35015, 35033, 35045, 35064, 35083, 35102, 35121, 35140, 35170, 35200, 35230, 35266, 35299, 35318, 35337, 35362, 35384, 35403, 35422, 35447, 35469, 35488, 35507, 35532, 35554, 35567, 35580, 35593, 35606, 35610, 35623, 35636, 35649, 35662, 35666, 35679, 35692, 35705, 35718, 35722, 35735, 35748, 35761, 35774, 35778, 35791, 35804, 35817, 35830, 35834, 35847, 35860, 35873, 35886, 35890, 35912, 35928, 35941, 35945, 35958, 35962, 35975, 35979, 35991, 35998, 36005, 36018, 36025, 36032, 36039, 36052, 36059, 36066, 36073, 36086, 36093, 36106, 36119, 36123, 36136, 36149, 36162, 36175, 36191, 36207, 36223, 36245, 36264, 36280, 36296, 36309, 36322, 36344, 36363, 36379, 36395, 36402, 36412, 36431, 36450, 36469, 36494, 36516, 36535, 36554, 36570, 36592, 36611, 36627, 36643, 36650, 36669, 36688, 36707, 36726, 36751, 36773, 36792, 36811, 36827, 36849, 36868, 36884, 36900, 36907, 36926, 36945, 36964, 36983, 37008, 37030, 37049, 37068, 37084, 37106, 37125, 37141, 37157, 37164, 37183, 37202, 37221, 37240, 37265, 37287, 37306, 37325, 37341, 37363, 37382, 37398, 37414, 37421, 37440, 37459, 37478, 37497, 37522, 37544, 37563, 37582, 37598, 37602, 37624, 37643, 37659, 37675, 37682, 37701, 37720, 37739, 37758, 37783, 37805, 37824, 37843, 37859, 37905, 37948, 37994, 38034, 38086, 38129, 38175, 38219, 38257, 38295, 38333, 38376, 38419, 38462, 38505, 38548, 38597, 38646, 38695, 38741, 38801, 38854, 38879, 38904, 38956, 39007, 39031, 39055, 39112, 39165, 39215, 39264, 39306, 39348, 39409, 39462, 39519, 39576, 39629, 39679, 39728, 39770, 39812, 39869, 39926, 39983, 40040, 40097, 40154, 40211, 40268, 40321, 40387, 40436, 40478, 40520, 40573, 40626, 40679, 40728, 40785, 40838, 40887, 40940, 40989, 41042, 41095, 41144, 41197, 41250, 41299, 41348, 41394, 41443, 41489, 41538, 41590, 41642, 41694, 41752, 41807, 41853, 41899, 41951, 42000, 42046, 42092, 42144, 42193, 42239, 42285, 42337, 42386, 42415, 42450, 42485, 42514, 42539, 42565, 42592, 42622, 42666, 42712, 42736, 42760, 42783, 42806, 42829, 42852, 42867, 42890, 42913, 42936, 42959, 42974, 42997, 43020, 43043, 43066, 43081, 43104, 43127, 43150, 43173, 43188, 43211, 43234, 43257, 43280, 43295, 43318, 43341, 43364, 43387, 43402, 43431, 43458, 43480, 43496, 43518, 43534, 43556, 43570, 43587, 43605, 43623, 43645, 43663, 43683, 43703, 43727, 43747, 43767, 43787, 43811, 43831, 43854, 43877, 43892, 43915, 43939, 43963, 43987, 44014, 44041, 44068, 44099, 44128, 44155, 44182, 44206, 44229, 44259, 44288, 44313, 44338, 44355, 44377, 44406, 44435, 44464, 44497, 44528, 44557, 44586, 44611, 44641, 44670, 44695, 44720, 44737, 44765, 44794, 44823, 44852, 44885, 44916, 44945, 44974, 44999, 45029, 45058, 45083, 45108, 45125, 45153, 45182, 45211, 45240, 45273, 45304, 45333, 45362, 45387, 45417, 45446, 45471, 45496, 45513, 45541, 45570, 45599, 45628, 45661, 45692, 45721, 45750, 45775, 45805, 45834, 45859, 45884, 45901, 45929, 45958, 45987, 46016, 46049, 46080, 46109, 46138, 46163, 46178, 46208, 46237, 46262, 46287, 46304, 46332, 46361, 46390, 46419, 46452, 46483, 46512, 46541, 46566, 46600, 46634, 46668, 46702, 46732, 46766, 46800, 46834, 46868, 46902, 46936, 46970, 47000, 47047, 47093, 47139, 47187, 47235, 47281, 47329, 47377, 47423, 47445, 47455, 47472 }; static const short _sip_uri_parser_indicies[] = { 0, 2, 0, 3, 4, 3, 3, 5, 3, 7, 8, 7, 8, 10, 11, 10, 11, 13, 14, 13, 14, 3, 3, 3, 3, 6, 6, 9, 9, 12, 12, 1, 0, 2, 0, 5, 1, 15, 1, 16, 16, 1, 16, 16, 5, 1, 18, 19, 18, 19, 17, 17, 1, 20, 21, 20, 20, 20, 20, 1, 22, 23, 24, 25, 26, 27, 26, 28, 22, 22, 22, 22, 22, 1, 22, 23, 24, 29, 27, 30, 22, 22, 22, 22, 22, 1, 23, 31, 32, 23, 33, 23, 23, 23, 23, 23, 1, 34, 34, 34, 1, 23, 23, 23, 1, 32, 35, 32, 33, 32, 32, 32, 32, 32, 32, 1, 36, 36, 36, 1, 32, 32, 32, 1, 37, 38, 39, 28, 40, 41, 41, 1, 42, 43, 42, 44, 44, 44, 1, 42, 42, 44, 44, 44, 1, 42, 45, 42, 44, 44, 44, 1, 44, 41, 41, 1, 46, 47, 48, 27, 26, 46, 41, 41, 41, 1, 46, 46, 41, 41, 41, 1, 48, 27, 26, 44, 41, 41, 1, 49, 51, 50, 52, 1, 53, 54, 1, 55, 56, 1, 57, 1, 27, 26, 1, 58, 59, 60, 59, 61, 1, 62, 1, 63, 63, 1, 58, 63, 64, 63, 61, 1, 65, 1, 66, 66, 1, 66, 66, 61, 1, 61, 67, 61, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1, 69, 1, 70, 70, 1, 70, 70, 68, 68, 68, 68, 68, 68, 68, 68, 68, 1, 58, 71, 72, 71, 68, 68, 68, 61, 73, 68, 68, 68, 68, 68, 68, 1, 71, 72, 71, 61, 73, 1, 74, 1, 75, 75, 1, 75, 75, 61, 73, 1, 73, 76, 73, 77, 78, 77, 77, 79, 77, 77, 77, 77, 77, 77, 1, 80, 1, 81, 81, 1, 81, 81, 77, 78, 77, 77, 79, 77, 77, 77, 77, 77, 77, 1, 58, 82, 64, 82, 77, 77, 77, 61, 77, 77, 77, 77, 77, 77, 1, 82, 64, 82, 61, 1, 78, 88, 89, 90, 83, 84, 85, 86, 87, 78, 1, 78, 1, 83, 1, 84, 1, 85, 1, 86, 1, 91, 1, 78, 78, 1, 58, 82, 64, 82, 61, 1, 78, 78, 78, 1, 93, 92, 92, 92, 1, 95, 94, 94, 94, 1, 95, 96, 96, 96, 1, 95, 97, 97, 97, 1, 95, 1, 99, 98, 98, 98, 1, 101, 100, 100, 100, 1, 101, 102, 102, 102, 1, 101, 103, 103, 103, 1, 101, 1, 105, 104, 104, 104, 1, 107, 106, 106, 106, 1, 107, 108, 108, 108, 1, 107, 109, 109, 109, 1, 107, 1, 111, 110, 110, 110, 1, 113, 112, 112, 112, 1, 113, 114, 114, 114, 1, 113, 115, 115, 115, 1, 113, 1, 117, 116, 116, 116, 1, 119, 118, 118, 118, 1, 119, 120, 120, 120, 1, 119, 121, 121, 121, 1, 119, 1, 123, 122, 122, 122, 1, 125, 124, 124, 124, 1, 125, 126, 126, 126, 1, 125, 127, 127, 127, 1, 125, 1, 128, 129, 130, 132, 131, 133, 133, 1, 134, 136, 135, 135, 135, 1, 137, 138, 139, 140, 1, 141, 1, 142, 143, 144, 145, 1, 146, 1, 147, 148, 149, 150, 1, 89, 1, 89, 150, 1, 89, 147, 1, 151, 89, 150, 147, 1, 89, 147, 1, 146, 145, 1, 146, 142, 1, 146, 152, 145, 142, 1, 146, 142, 1, 141, 140, 1, 141, 137, 1, 141, 153, 140, 137, 1, 141, 137, 1, 136, 154, 154, 154, 1, 136, 155, 155, 155, 1, 136, 1, 147, 156, 156, 156, 1, 89, 157, 157, 157, 1, 89, 158, 158, 158, 1, 89, 147, 147, 147, 1, 134, 136, 159, 135, 135, 1, 134, 136, 160, 154, 154, 1, 134, 136, 155, 155, 155, 1, 134, 161, 136, 159, 162, 135, 135, 1, 134, 136, 160, 154, 154, 154, 1, 134, 136, 154, 154, 154, 1, 134, 136, 162, 135, 135, 1, 89, 156, 156, 156, 1, 136, 135, 135, 135, 1, 163, 164, 165, 89, 166, 167, 167, 1, 134, 169, 89, 168, 168, 168, 1, 169, 89, 170, 170, 170, 1, 169, 89, 171, 171, 171, 1, 169, 89, 1, 156, 156, 156, 1, 134, 169, 89, 172, 168, 168, 1, 134, 169, 89, 173, 170, 170, 1, 134, 169, 89, 171, 171, 171, 1, 134, 174, 169, 89, 172, 175, 168, 168, 1, 134, 169, 89, 173, 170, 170, 170, 1, 134, 169, 89, 170, 170, 170, 1, 134, 169, 89, 175, 168, 168, 1, 169, 89, 168, 168, 168, 1, 176, 177, 178, 89, 179, 180, 180, 1, 134, 182, 89, 181, 181, 181, 1, 182, 89, 183, 183, 183, 1, 182, 89, 184, 184, 184, 1, 182, 89, 1, 163, 164, 165, 166, 167, 167, 1, 134, 182, 89, 185, 181, 181, 1, 134, 182, 89, 186, 183, 183, 1, 134, 182, 89, 184, 184, 184, 1, 134, 187, 182, 89, 185, 188, 181, 181, 1, 134, 182, 89, 186, 183, 183, 183, 1, 134, 182, 89, 183, 183, 183, 1, 134, 182, 89, 188, 181, 181, 1, 182, 89, 181, 181, 181, 1, 189, 190, 191, 89, 192, 193, 193, 1, 134, 195, 89, 194, 194, 194, 1, 195, 89, 196, 196, 196, 1, 195, 89, 197, 197, 197, 1, 195, 89, 1, 176, 177, 178, 179, 180, 180, 1, 134, 195, 89, 198, 194, 194, 1, 134, 195, 89, 199, 196, 196, 1, 134, 195, 89, 197, 197, 197, 1, 134, 200, 195, 89, 198, 201, 194, 194, 1, 134, 195, 89, 199, 196, 196, 196, 1, 134, 195, 89, 196, 196, 196, 1, 134, 195, 89, 201, 194, 194, 1, 195, 89, 194, 194, 194, 1, 202, 203, 204, 89, 205, 206, 206, 1, 134, 208, 89, 207, 207, 207, 1, 208, 89, 209, 209, 209, 1, 208, 89, 210, 210, 210, 1, 208, 89, 1, 189, 190, 191, 192, 193, 193, 1, 134, 208, 89, 211, 207, 207, 1, 134, 208, 89, 212, 209, 209, 1, 134, 208, 89, 210, 210, 210, 1, 134, 213, 208, 89, 211, 214, 207, 207, 1, 134, 208, 89, 212, 209, 209, 209, 1, 134, 208, 89, 209, 209, 209, 1, 134, 208, 89, 214, 207, 207, 1, 208, 89, 207, 207, 207, 1, 215, 216, 217, 89, 218, 219, 219, 1, 134, 221, 89, 220, 220, 220, 1, 221, 89, 222, 222, 222, 1, 221, 89, 223, 223, 223, 1, 221, 89, 1, 202, 203, 204, 205, 206, 206, 1, 134, 221, 89, 224, 220, 220, 1, 134, 221, 89, 225, 222, 222, 1, 134, 221, 89, 223, 223, 223, 1, 134, 226, 221, 89, 224, 227, 220, 220, 1, 134, 221, 89, 225, 222, 222, 222, 1, 134, 221, 89, 222, 222, 222, 1, 134, 221, 89, 227, 220, 220, 1, 221, 89, 220, 220, 220, 1, 228, 1, 229, 230, 231, 89, 232, 233, 233, 1, 134, 235, 89, 234, 234, 234, 1, 235, 89, 236, 236, 236, 1, 235, 89, 237, 237, 237, 1, 235, 89, 1, 215, 216, 217, 218, 219, 219, 1, 134, 235, 89, 238, 234, 234, 1, 134, 235, 89, 239, 236, 236, 1, 134, 235, 89, 237, 237, 237, 1, 134, 240, 235, 89, 238, 241, 234, 234, 1, 134, 235, 89, 239, 236, 236, 236, 1, 134, 235, 89, 236, 236, 236, 1, 134, 235, 89, 241, 234, 234, 1, 235, 89, 234, 234, 234, 1, 26, 242, 27, 26, 26, 26, 26, 26, 1, 243, 243, 243, 1, 26, 26, 26, 1, 27, 26, 57, 1, 27, 26, 56, 1, 27, 26, 52, 1, 27, 26, 54, 1, 244, 27, 26, 52, 54, 1, 245, 27, 26, 54, 56, 1, 246, 27, 26, 56, 57, 1, 27, 26, 57, 1, 247, 248, 249, 250, 41, 41, 1, 42, 251, 42, 44, 44, 44, 1, 252, 253, 254, 255, 41, 41, 1, 42, 256, 42, 44, 44, 44, 1, 257, 258, 259, 260, 41, 41, 1, 42, 45, 48, 27, 26, 42, 44, 44, 44, 1, 42, 45, 48, 27, 26, 42, 260, 44, 44, 1, 42, 45, 48, 27, 26, 42, 257, 44, 44, 1, 42, 45, 261, 48, 27, 26, 42, 260, 257, 44, 44, 1, 42, 45, 48, 27, 26, 42, 257, 44, 44, 44, 1, 42, 256, 42, 255, 44, 44, 1, 42, 256, 42, 252, 44, 44, 1, 42, 256, 262, 42, 255, 252, 44, 44, 1, 42, 256, 42, 252, 44, 44, 44, 1, 42, 251, 42, 250, 44, 44, 1, 42, 251, 42, 247, 44, 44, 1, 42, 251, 263, 42, 250, 247, 44, 44, 1, 42, 251, 42, 247, 44, 44, 44, 1, 42, 43, 42, 40, 44, 44, 1, 42, 43, 42, 37, 44, 44, 1, 42, 43, 264, 42, 40, 37, 44, 44, 1, 42, 43, 42, 37, 44, 44, 44, 1, 266, 265, 265, 265, 1, 268, 267, 267, 267, 1, 268, 269, 269, 269, 1, 268, 270, 270, 270, 1, 268, 1, 272, 271, 271, 271, 1, 274, 273, 273, 273, 1, 274, 275, 275, 275, 1, 274, 276, 276, 276, 1, 274, 1, 278, 277, 277, 277, 1, 280, 279, 279, 279, 1, 280, 281, 281, 281, 1, 280, 282, 282, 282, 1, 280, 1, 284, 283, 283, 283, 1, 286, 285, 285, 285, 1, 286, 287, 287, 287, 1, 286, 288, 288, 288, 1, 286, 1, 290, 289, 289, 289, 1, 292, 291, 291, 291, 1, 292, 293, 293, 293, 1, 292, 294, 294, 294, 1, 292, 1, 296, 295, 295, 295, 1, 298, 297, 297, 297, 1, 298, 299, 299, 299, 1, 298, 300, 300, 300, 1, 298, 1, 301, 302, 303, 305, 304, 306, 306, 1, 307, 309, 308, 308, 308, 1, 310, 311, 312, 313, 1, 314, 1, 315, 316, 317, 318, 1, 319, 1, 320, 321, 322, 323, 1, 324, 1, 48, 27, 26, 1, 324, 323, 1, 324, 320, 1, 325, 324, 323, 320, 1, 324, 320, 1, 319, 318, 1, 319, 315, 1, 319, 326, 318, 315, 1, 319, 315, 1, 314, 313, 1, 314, 310, 1, 314, 327, 313, 310, 1, 314, 310, 1, 309, 328, 328, 328, 1, 309, 329, 329, 329, 1, 309, 1, 320, 330, 330, 330, 1, 324, 331, 331, 331, 1, 324, 332, 332, 332, 1, 324, 320, 320, 320, 1, 307, 309, 333, 308, 308, 1, 307, 309, 334, 328, 328, 1, 307, 309, 329, 329, 329, 1, 307, 335, 309, 333, 336, 308, 308, 1, 307, 309, 334, 328, 328, 328, 1, 307, 309, 328, 328, 328, 1, 307, 309, 336, 308, 308, 1, 324, 330, 330, 330, 1, 309, 308, 308, 308, 1, 337, 338, 339, 324, 340, 341, 341, 1, 307, 343, 324, 342, 342, 342, 1, 343, 324, 344, 344, 344, 1, 343, 324, 345, 345, 345, 1, 343, 324, 1, 330, 330, 330, 1, 307, 343, 324, 346, 342, 342, 1, 307, 343, 324, 347, 344, 344, 1, 307, 343, 324, 345, 345, 345, 1, 307, 348, 343, 324, 346, 349, 342, 342, 1, 307, 343, 324, 347, 344, 344, 344, 1, 307, 343, 324, 344, 344, 344, 1, 307, 343, 324, 349, 342, 342, 1, 343, 324, 342, 342, 342, 1, 350, 351, 352, 324, 353, 354, 354, 1, 307, 356, 324, 355, 355, 355, 1, 356, 324, 357, 357, 357, 1, 356, 324, 358, 358, 358, 1, 356, 324, 1, 337, 338, 339, 340, 341, 341, 1, 307, 356, 324, 359, 355, 355, 1, 307, 356, 324, 360, 357, 357, 1, 307, 356, 324, 358, 358, 358, 1, 307, 361, 356, 324, 359, 362, 355, 355, 1, 307, 356, 324, 360, 357, 357, 357, 1, 307, 356, 324, 357, 357, 357, 1, 307, 356, 324, 362, 355, 355, 1, 356, 324, 355, 355, 355, 1, 363, 364, 365, 324, 366, 367, 367, 1, 307, 369, 324, 368, 368, 368, 1, 369, 324, 370, 370, 370, 1, 369, 324, 371, 371, 371, 1, 369, 324, 1, 350, 351, 352, 353, 354, 354, 1, 307, 369, 324, 372, 368, 368, 1, 307, 369, 324, 373, 370, 370, 1, 307, 369, 324, 371, 371, 371, 1, 307, 374, 369, 324, 372, 375, 368, 368, 1, 307, 369, 324, 373, 370, 370, 370, 1, 307, 369, 324, 370, 370, 370, 1, 307, 369, 324, 375, 368, 368, 1, 369, 324, 368, 368, 368, 1, 376, 377, 378, 324, 379, 380, 380, 1, 307, 382, 324, 381, 381, 381, 1, 382, 324, 383, 383, 383, 1, 382, 324, 384, 384, 384, 1, 382, 324, 1, 363, 364, 365, 366, 367, 367, 1, 307, 382, 324, 385, 381, 381, 1, 307, 382, 324, 386, 383, 383, 1, 307, 382, 324, 384, 384, 384, 1, 307, 387, 382, 324, 385, 388, 381, 381, 1, 307, 382, 324, 386, 383, 383, 383, 1, 307, 382, 324, 383, 383, 383, 1, 307, 382, 324, 388, 381, 381, 1, 382, 324, 381, 381, 381, 1, 389, 390, 391, 324, 392, 393, 393, 1, 307, 395, 324, 394, 394, 394, 1, 395, 324, 396, 396, 396, 1, 395, 324, 397, 397, 397, 1, 395, 324, 1, 376, 377, 378, 379, 380, 380, 1, 307, 395, 324, 398, 394, 394, 1, 307, 395, 324, 399, 396, 396, 1, 307, 395, 324, 397, 397, 397, 1, 307, 400, 395, 324, 398, 401, 394, 394, 1, 307, 395, 324, 399, 396, 396, 396, 1, 307, 395, 324, 396, 396, 396, 1, 307, 395, 324, 401, 394, 394, 1, 395, 324, 394, 394, 394, 1, 402, 1, 403, 404, 405, 324, 406, 407, 407, 1, 307, 409, 324, 408, 408, 408, 1, 409, 324, 410, 410, 410, 1, 409, 324, 411, 411, 411, 1, 409, 324, 1, 389, 390, 391, 392, 393, 393, 1, 307, 409, 324, 412, 408, 408, 1, 307, 409, 324, 413, 410, 410, 1, 307, 409, 324, 411, 411, 411, 1, 307, 414, 409, 324, 412, 415, 408, 408, 1, 307, 409, 324, 413, 410, 410, 410, 1, 307, 409, 324, 410, 410, 410, 1, 307, 409, 324, 415, 408, 408, 1, 409, 324, 408, 408, 408, 1, 416, 416, 416, 1, 22, 22, 22, 1, 29, 417, 26, 27, 26, 30, 29, 29, 29, 26, 29, 29, 1, 418, 418, 418, 1, 29, 29, 29, 1, 26, 242, 27, 28, 26, 26, 26, 26, 26, 1, 22, 23, 24, 419, 29, 27, 30, 22, 22, 22, 22, 22, 1, 420, 421, 422, 29, 27, 30, 423, 420, 420, 420, 420, 420, 1, 420, 421, 422, 424, 27, 425, 420, 420, 420, 420, 420, 1, 421, 426, 427, 421, 428, 421, 421, 421, 421, 421, 1, 429, 429, 429, 1, 421, 421, 421, 1, 427, 430, 427, 428, 427, 427, 427, 427, 427, 427, 1, 431, 431, 431, 1, 427, 427, 427, 1, 432, 433, 434, 423, 435, 436, 436, 1, 437, 438, 437, 439, 439, 439, 1, 437, 437, 439, 439, 439, 1, 437, 440, 437, 439, 439, 439, 1, 439, 436, 436, 1, 441, 442, 26, 443, 27, 26, 441, 436, 436, 436, 1, 441, 441, 436, 436, 436, 1, 26, 443, 27, 26, 439, 436, 436, 1, 444, 446, 445, 447, 1, 448, 449, 1, 450, 451, 1, 452, 1, 26, 27, 26, 1, 26, 27, 26, 452, 1, 26, 27, 26, 451, 1, 26, 27, 26, 447, 1, 26, 27, 26, 449, 1, 26, 453, 27, 26, 447, 449, 1, 26, 454, 27, 26, 449, 451, 1, 26, 455, 27, 26, 451, 452, 1, 26, 27, 26, 452, 1, 456, 457, 458, 459, 436, 436, 1, 437, 460, 437, 439, 439, 439, 1, 461, 462, 463, 464, 436, 436, 1, 437, 465, 437, 439, 439, 439, 1, 466, 467, 468, 469, 436, 436, 1, 437, 440, 26, 443, 27, 26, 437, 439, 439, 439, 1, 437, 440, 26, 443, 27, 26, 437, 469, 439, 439, 1, 437, 440, 26, 443, 27, 26, 437, 466, 439, 439, 1, 437, 440, 26, 470, 443, 27, 26, 437, 469, 466, 439, 439, 1, 437, 440, 26, 443, 27, 26, 437, 466, 439, 439, 439, 1, 437, 465, 437, 464, 439, 439, 1, 437, 465, 437, 461, 439, 439, 1, 437, 465, 471, 437, 464, 461, 439, 439, 1, 437, 465, 437, 461, 439, 439, 439, 1, 437, 460, 437, 459, 439, 439, 1, 437, 460, 437, 456, 439, 439, 1, 437, 460, 472, 437, 459, 456, 439, 439, 1, 437, 460, 437, 456, 439, 439, 439, 1, 437, 438, 437, 435, 439, 439, 1, 437, 438, 437, 432, 439, 439, 1, 437, 438, 473, 437, 435, 432, 439, 439, 1, 437, 438, 437, 432, 439, 439, 439, 1, 475, 474, 474, 474, 1, 477, 476, 476, 476, 1, 477, 478, 478, 478, 1, 477, 479, 479, 479, 1, 477, 1, 481, 480, 480, 480, 1, 483, 482, 482, 482, 1, 483, 484, 484, 484, 1, 483, 485, 485, 485, 1, 483, 1, 487, 486, 486, 486, 1, 489, 488, 488, 488, 1, 489, 490, 490, 490, 1, 489, 491, 491, 491, 1, 489, 1, 493, 492, 492, 492, 1, 495, 494, 494, 494, 1, 495, 496, 496, 496, 1, 495, 497, 497, 497, 1, 495, 1, 499, 498, 498, 498, 1, 501, 500, 500, 500, 1, 501, 502, 502, 502, 1, 501, 503, 503, 503, 1, 501, 1, 505, 504, 504, 504, 1, 507, 506, 506, 506, 1, 507, 508, 508, 508, 1, 507, 509, 509, 509, 1, 507, 1, 510, 511, 512, 514, 513, 515, 515, 1, 516, 518, 517, 517, 517, 1, 519, 520, 521, 522, 1, 523, 1, 524, 525, 526, 527, 1, 528, 1, 529, 530, 531, 532, 1, 533, 1, 26, 443, 27, 26, 1, 533, 532, 1, 533, 529, 1, 534, 533, 532, 529, 1, 533, 529, 1, 528, 527, 1, 528, 524, 1, 528, 535, 527, 524, 1, 528, 524, 1, 523, 522, 1, 523, 519, 1, 523, 536, 522, 519, 1, 523, 519, 1, 518, 537, 537, 537, 1, 518, 538, 538, 538, 1, 518, 1, 529, 539, 539, 539, 1, 533, 540, 540, 540, 1, 533, 541, 541, 541, 1, 533, 529, 529, 529, 1, 516, 518, 542, 517, 517, 1, 516, 518, 543, 537, 537, 1, 516, 518, 538, 538, 538, 1, 516, 544, 518, 542, 545, 517, 517, 1, 516, 518, 543, 537, 537, 537, 1, 516, 518, 537, 537, 537, 1, 516, 518, 545, 517, 517, 1, 533, 539, 539, 539, 1, 518, 517, 517, 517, 1, 546, 547, 548, 533, 549, 550, 550, 1, 516, 552, 533, 551, 551, 551, 1, 552, 533, 553, 553, 553, 1, 552, 533, 554, 554, 554, 1, 552, 533, 1, 539, 539, 539, 1, 516, 552, 533, 555, 551, 551, 1, 516, 552, 533, 556, 553, 553, 1, 516, 552, 533, 554, 554, 554, 1, 516, 557, 552, 533, 555, 558, 551, 551, 1, 516, 552, 533, 556, 553, 553, 553, 1, 516, 552, 533, 553, 553, 553, 1, 516, 552, 533, 558, 551, 551, 1, 552, 533, 551, 551, 551, 1, 559, 560, 561, 533, 562, 563, 563, 1, 516, 565, 533, 564, 564, 564, 1, 565, 533, 566, 566, 566, 1, 565, 533, 567, 567, 567, 1, 565, 533, 1, 546, 547, 548, 549, 550, 550, 1, 516, 565, 533, 568, 564, 564, 1, 516, 565, 533, 569, 566, 566, 1, 516, 565, 533, 567, 567, 567, 1, 516, 570, 565, 533, 568, 571, 564, 564, 1, 516, 565, 533, 569, 566, 566, 566, 1, 516, 565, 533, 566, 566, 566, 1, 516, 565, 533, 571, 564, 564, 1, 565, 533, 564, 564, 564, 1, 572, 573, 574, 533, 575, 576, 576, 1, 516, 578, 533, 577, 577, 577, 1, 578, 533, 579, 579, 579, 1, 578, 533, 580, 580, 580, 1, 578, 533, 1, 559, 560, 561, 562, 563, 563, 1, 516, 578, 533, 581, 577, 577, 1, 516, 578, 533, 582, 579, 579, 1, 516, 578, 533, 580, 580, 580, 1, 516, 583, 578, 533, 581, 584, 577, 577, 1, 516, 578, 533, 582, 579, 579, 579, 1, 516, 578, 533, 579, 579, 579, 1, 516, 578, 533, 584, 577, 577, 1, 578, 533, 577, 577, 577, 1, 585, 586, 587, 533, 588, 589, 589, 1, 516, 591, 533, 590, 590, 590, 1, 591, 533, 592, 592, 592, 1, 591, 533, 593, 593, 593, 1, 591, 533, 1, 572, 573, 574, 575, 576, 576, 1, 516, 591, 533, 594, 590, 590, 1, 516, 591, 533, 595, 592, 592, 1, 516, 591, 533, 593, 593, 593, 1, 516, 596, 591, 533, 594, 597, 590, 590, 1, 516, 591, 533, 595, 592, 592, 592, 1, 516, 591, 533, 592, 592, 592, 1, 516, 591, 533, 597, 590, 590, 1, 591, 533, 590, 590, 590, 1, 598, 599, 600, 533, 601, 602, 602, 1, 516, 604, 533, 603, 603, 603, 1, 604, 533, 605, 605, 605, 1, 604, 533, 606, 606, 606, 1, 604, 533, 1, 585, 586, 587, 588, 589, 589, 1, 516, 604, 533, 607, 603, 603, 1, 516, 604, 533, 608, 605, 605, 1, 516, 604, 533, 606, 606, 606, 1, 516, 609, 604, 533, 607, 610, 603, 603, 1, 516, 604, 533, 608, 605, 605, 605, 1, 516, 604, 533, 605, 605, 605, 1, 516, 604, 533, 610, 603, 603, 1, 604, 533, 603, 603, 603, 1, 611, 1, 612, 613, 614, 533, 615, 616, 616, 1, 516, 618, 533, 617, 617, 617, 1, 618, 533, 619, 619, 619, 1, 618, 533, 620, 620, 620, 1, 618, 533, 1, 598, 599, 600, 601, 602, 602, 1, 516, 618, 533, 621, 617, 617, 1, 516, 618, 533, 622, 619, 619, 1, 516, 618, 533, 620, 620, 620, 1, 516, 623, 618, 533, 621, 624, 617, 617, 1, 516, 618, 533, 622, 619, 619, 619, 1, 516, 618, 533, 619, 619, 619, 1, 516, 618, 533, 624, 617, 617, 1, 618, 533, 617, 617, 617, 1, 625, 625, 625, 1, 420, 420, 420, 1, 424, 626, 26, 27, 26, 425, 424, 424, 424, 26, 424, 424, 1, 627, 627, 627, 1, 424, 424, 424, 1, 26, 242, 27, 423, 26, 26, 26, 26, 26, 1, 20, 21, 628, 628, 20, 20, 20, 20, 1, 20, 21, 629, 629, 20, 20, 20, 20, 1, 20, 630, 631, 631, 20, 20, 20, 20, 1, 632, 633, 634, 635, 636, 632, 632, 632, 639, 632, 632, 632, 637, 638, 638, 1, 640, 641, 642, 640, 643, 640, 640, 640, 640, 640, 1, 644, 644, 644, 1, 640, 640, 640, 1, 642, 645, 642, 643, 642, 642, 642, 642, 642, 642, 1, 646, 646, 646, 1, 642, 642, 642, 1, 647, 648, 649, 639, 650, 651, 651, 1, 652, 653, 652, 654, 654, 654, 1, 652, 652, 654, 654, 654, 1, 652, 655, 652, 654, 654, 654, 1, 654, 656, 656, 1, 657, 658, 659, 660, 661, 662, 657, 656, 656, 656, 1, 657, 657, 656, 656, 656, 1, 659, 660, 661, 662, 654, 656, 656, 1, 663, 665, 664, 666, 1, 667, 668, 1, 669, 670, 1, 671, 1, 672, 673, 674, 1, 675, 676, 677, 678, 679, 675, 675, 677, 678, 679, 675, 675, 675, 675, 675, 1, 680, 681, 682, 683, 684, 685, 680, 680, 680, 680, 680, 680, 680, 1, 686, 686, 686, 1, 680, 680, 680, 1, 687, 688, 682, 689, 684, 685, 687, 687, 687, 687, 687, 687, 687, 1, 690, 691, 692, 693, 694, 690, 690, 690, 690, 690, 690, 690, 1, 695, 695, 695, 1, 690, 690, 690, 1, 696, 696, 697, 696, 696, 696, 696, 696, 696, 696, 696, 1, 696, 696, 697, 698, 696, 696, 696, 696, 696, 696, 696, 696, 1, 699, 699, 699, 1, 696, 696, 696, 1, 698, 700, 701, 702, 698, 698, 698, 698, 698, 698, 698, 698, 1, 703, 703, 703, 1, 698, 698, 698, 1, 687, 688, 687, 687, 687, 687, 687, 687, 687, 1, 680, 681, 682, 683, 684, 685, 704, 680, 680, 704, 680, 680, 680, 680, 680, 1, 680, 681, 705, 706, 707, 708, 680, 680, 680, 680, 680, 680, 680, 1, 709, 710, 709, 687, 687, 682, 689, 684, 685, 687, 687, 711, 709, 687, 709, 709, 709, 709, 1, 712, 713, 712, 690, 690, 692, 693, 694, 690, 690, 711, 712, 690, 712, 712, 712, 712, 1, 711, 711, 711, 715, 27, 716, 711, 711, 711, 714, 714, 711, 711, 714, 711, 1, 711, 711, 711, 715, 27, 716, 711, 711, 711, 711, 711, 711, 1, 711, 711, 711, 715, 27, 716, 711, 711, 711, 712, 712, 711, 711, 712, 711, 1, 680, 681, 682, 683, 684, 685, 717, 718, 680, 680, 717, 718, 680, 680, 680, 680, 680, 1, 680, 681, 719, 720, 721, 722, 680, 680, 680, 680, 680, 680, 680, 1, 680, 681, 682, 683, 684, 685, 723, 680, 680, 723, 680, 680, 680, 680, 680, 1, 680, 681, 682, 683, 684, 685, 724, 680, 680, 724, 680, 680, 680, 680, 680, 1, 680, 681, 682, 725, 684, 685, 680, 680, 680, 680, 680, 680, 680, 1, 726, 727, 726, 687, 687, 682, 689, 684, 685, 687, 687, 728, 726, 687, 726, 726, 726, 726, 1, 729, 730, 729, 690, 690, 731, 732, 733, 690, 690, 734, 729, 690, 729, 729, 729, 729, 1, 734, 734, 734, 736, 737, 738, 734, 734, 734, 735, 735, 734, 734, 735, 734, 1, 734, 734, 734, 736, 737, 738, 734, 734, 734, 734, 734, 734, 1, 734, 734, 734, 736, 737, 738, 734, 734, 734, 729, 729, 734, 734, 729, 734, 1, 680, 681, 682, 683, 684, 685, 739, 680, 680, 739, 680, 680, 680, 680, 680, 1, 680, 681, 682, 683, 684, 685, 740, 680, 680, 740, 680, 680, 680, 680, 680, 1, 680, 681, 682, 683, 684, 685, 741, 680, 680, 741, 680, 680, 680, 680, 680, 1, 680, 681, 682, 683, 684, 685, 742, 680, 680, 742, 680, 680, 680, 680, 680, 1, 680, 681, 682, 683, 684, 685, 743, 680, 680, 743, 680, 680, 680, 680, 680, 1, 680, 681, 682, 683, 684, 685, 744, 680, 680, 744, 680, 680, 680, 680, 680, 1, 680, 681, 682, 683, 684, 685, 745, 680, 680, 745, 680, 680, 680, 680, 680, 1, 680, 681, 682, 683, 684, 685, 746, 680, 680, 746, 680, 680, 680, 680, 680, 1, 680, 681, 682, 747, 684, 685, 680, 680, 680, 680, 680, 680, 680, 1, 748, 749, 748, 687, 687, 682, 689, 684, 685, 750, 751, 752, 753, 687, 687, 754, 750, 751, 752, 753, 748, 687, 748, 748, 748, 748, 1, 755, 756, 755, 690, 690, 757, 758, 759, 690, 690, 760, 755, 690, 755, 755, 755, 755, 1, 760, 760, 760, 762, 763, 764, 760, 760, 760, 761, 761, 760, 760, 761, 760, 1, 760, 760, 760, 762, 763, 764, 760, 760, 760, 760, 760, 760, 1, 760, 760, 760, 762, 763, 764, 760, 760, 760, 755, 755, 760, 760, 755, 760, 1, 755, 756, 755, 690, 690, 757, 758, 759, 765, 690, 690, 760, 765, 755, 690, 755, 755, 755, 755, 1, 755, 756, 755, 690, 690, 757, 758, 759, 766, 690, 690, 760, 766, 755, 690, 755, 755, 755, 755, 1, 755, 756, 755, 690, 690, 757, 758, 759, 767, 690, 690, 760, 767, 755, 690, 755, 755, 755, 755, 1, 755, 756, 755, 690, 690, 768, 769, 770, 690, 690, 760, 755, 690, 755, 755, 755, 755, 1, 755, 756, 755, 690, 690, 757, 758, 759, 771, 772, 690, 690, 760, 771, 772, 755, 690, 755, 755, 755, 755, 1, 755, 756, 755, 690, 690, 757, 758, 759, 773, 690, 690, 760, 773, 755, 690, 755, 755, 755, 755, 1, 755, 756, 755, 690, 690, 774, 775, 776, 690, 690, 760, 755, 690, 755, 755, 755, 755, 1, 755, 756, 755, 690, 690, 757, 758, 759, 777, 690, 690, 760, 777, 755, 690, 755, 755, 755, 755, 1, 755, 756, 755, 690, 690, 778, 779, 780, 690, 690, 760, 755, 690, 755, 755, 755, 755, 1, 755, 756, 755, 690, 690, 757, 758, 759, 781, 690, 690, 760, 781, 755, 690, 755, 755, 755, 755, 1, 755, 756, 755, 690, 690, 757, 758, 759, 782, 690, 690, 760, 782, 755, 690, 755, 755, 755, 755, 1, 755, 756, 755, 690, 690, 783, 784, 785, 690, 690, 760, 755, 690, 755, 755, 755, 755, 1, 755, 756, 755, 690, 690, 757, 758, 759, 786, 690, 690, 760, 786, 755, 690, 755, 755, 755, 755, 1, 755, 756, 755, 690, 690, 787, 788, 789, 790, 690, 690, 760, 790, 755, 690, 755, 755, 755, 755, 1, 755, 756, 755, 690, 690, 791, 792, 793, 690, 690, 760, 755, 690, 755, 755, 755, 755, 1, 672, 673, 674, 671, 1, 672, 673, 674, 670, 1, 672, 673, 674, 794, 1, 672, 673, 674, 668, 1, 795, 672, 673, 674, 794, 668, 1, 796, 672, 673, 674, 668, 670, 1, 797, 672, 673, 674, 670, 671, 1, 672, 673, 674, 671, 1, 798, 799, 800, 801, 656, 656, 1, 652, 802, 652, 654, 654, 654, 1, 803, 804, 805, 806, 656, 656, 1, 652, 807, 652, 654, 654, 654, 1, 808, 809, 810, 811, 656, 656, 1, 652, 655, 812, 813, 814, 815, 652, 654, 654, 654, 1, 652, 655, 812, 813, 814, 815, 652, 811, 654, 654, 1, 652, 655, 812, 813, 814, 815, 652, 808, 654, 654, 1, 652, 655, 816, 812, 813, 814, 815, 652, 811, 808, 654, 654, 1, 652, 655, 812, 813, 814, 815, 652, 808, 654, 654, 654, 1, 652, 807, 652, 806, 654, 654, 1, 652, 807, 652, 803, 654, 654, 1, 652, 807, 817, 652, 806, 803, 654, 654, 1, 652, 807, 652, 803, 654, 654, 654, 1, 652, 802, 652, 801, 654, 654, 1, 652, 802, 652, 798, 654, 654, 1, 652, 802, 818, 652, 801, 798, 654, 654, 1, 652, 802, 652, 798, 654, 654, 654, 1, 652, 653, 652, 819, 654, 654, 1, 652, 653, 652, 820, 654, 654, 1, 652, 653, 821, 652, 819, 820, 654, 654, 1, 652, 653, 652, 820, 654, 654, 654, 1, 823, 822, 822, 822, 1, 825, 824, 824, 824, 1, 825, 826, 826, 826, 1, 825, 827, 827, 827, 1, 825, 1, 829, 828, 828, 828, 1, 831, 830, 830, 830, 1, 831, 832, 832, 832, 1, 831, 833, 833, 833, 1, 831, 1, 835, 834, 834, 834, 1, 837, 836, 836, 836, 1, 837, 838, 838, 838, 1, 837, 839, 839, 839, 1, 837, 1, 841, 840, 840, 840, 1, 843, 842, 842, 842, 1, 843, 844, 844, 844, 1, 843, 845, 845, 845, 1, 843, 1, 847, 846, 846, 846, 1, 849, 848, 848, 848, 1, 849, 850, 850, 850, 1, 849, 851, 851, 851, 1, 849, 1, 853, 852, 852, 852, 1, 855, 854, 854, 854, 1, 855, 856, 856, 856, 1, 855, 857, 857, 857, 1, 855, 1, 858, 859, 860, 862, 861, 863, 863, 1, 864, 866, 865, 865, 865, 1, 867, 868, 869, 870, 1, 871, 1, 872, 873, 874, 875, 1, 876, 1, 877, 878, 879, 880, 1, 881, 1, 882, 883, 884, 885, 1, 881, 880, 1, 881, 877, 1, 886, 881, 880, 877, 1, 881, 877, 1, 876, 875, 1, 876, 872, 1, 876, 887, 875, 872, 1, 876, 872, 1, 871, 870, 1, 871, 867, 1, 871, 888, 870, 867, 1, 871, 867, 1, 866, 889, 889, 889, 1, 866, 890, 890, 890, 1, 866, 1, 877, 891, 891, 891, 1, 881, 892, 892, 892, 1, 881, 893, 893, 893, 1, 881, 877, 877, 877, 1, 864, 866, 894, 865, 865, 1, 864, 866, 895, 889, 889, 1, 864, 866, 890, 890, 890, 1, 864, 896, 866, 894, 897, 865, 865, 1, 864, 866, 895, 889, 889, 889, 1, 864, 866, 889, 889, 889, 1, 864, 866, 897, 865, 865, 1, 881, 891, 891, 891, 1, 866, 865, 865, 865, 1, 898, 899, 900, 881, 901, 902, 902, 1, 864, 904, 881, 903, 903, 903, 1, 904, 881, 905, 905, 905, 1, 904, 881, 906, 906, 906, 1, 904, 881, 1, 891, 891, 891, 1, 864, 904, 881, 907, 903, 903, 1, 864, 904, 881, 908, 905, 905, 1, 864, 904, 881, 906, 906, 906, 1, 864, 909, 904, 881, 907, 910, 903, 903, 1, 864, 904, 881, 908, 905, 905, 905, 1, 864, 904, 881, 905, 905, 905, 1, 864, 904, 881, 910, 903, 903, 1, 904, 881, 903, 903, 903, 1, 911, 912, 913, 881, 914, 915, 915, 1, 864, 917, 881, 916, 916, 916, 1, 917, 881, 918, 918, 918, 1, 917, 881, 919, 919, 919, 1, 917, 881, 1, 898, 899, 900, 901, 902, 902, 1, 864, 917, 881, 920, 916, 916, 1, 864, 917, 881, 921, 918, 918, 1, 864, 917, 881, 919, 919, 919, 1, 864, 922, 917, 881, 920, 923, 916, 916, 1, 864, 917, 881, 921, 918, 918, 918, 1, 864, 917, 881, 918, 918, 918, 1, 864, 917, 881, 923, 916, 916, 1, 917, 881, 916, 916, 916, 1, 924, 925, 926, 881, 927, 928, 928, 1, 864, 930, 881, 929, 929, 929, 1, 930, 881, 931, 931, 931, 1, 930, 881, 932, 932, 932, 1, 930, 881, 1, 911, 912, 913, 914, 915, 915, 1, 864, 930, 881, 933, 929, 929, 1, 864, 930, 881, 934, 931, 931, 1, 864, 930, 881, 932, 932, 932, 1, 864, 935, 930, 881, 933, 936, 929, 929, 1, 864, 930, 881, 934, 931, 931, 931, 1, 864, 930, 881, 931, 931, 931, 1, 864, 930, 881, 936, 929, 929, 1, 930, 881, 929, 929, 929, 1, 937, 938, 939, 881, 940, 941, 941, 1, 864, 943, 881, 942, 942, 942, 1, 943, 881, 944, 944, 944, 1, 943, 881, 945, 945, 945, 1, 943, 881, 1, 924, 925, 926, 927, 928, 928, 1, 864, 943, 881, 946, 942, 942, 1, 864, 943, 881, 947, 944, 944, 1, 864, 943, 881, 945, 945, 945, 1, 864, 948, 943, 881, 946, 949, 942, 942, 1, 864, 943, 881, 947, 944, 944, 944, 1, 864, 943, 881, 944, 944, 944, 1, 864, 943, 881, 949, 942, 942, 1, 943, 881, 942, 942, 942, 1, 950, 951, 952, 881, 953, 954, 954, 1, 864, 956, 881, 955, 955, 955, 1, 956, 881, 957, 957, 957, 1, 956, 881, 958, 958, 958, 1, 956, 881, 1, 937, 938, 939, 940, 941, 941, 1, 864, 956, 881, 959, 955, 955, 1, 864, 956, 881, 960, 957, 957, 1, 864, 956, 881, 958, 958, 958, 1, 864, 961, 956, 881, 959, 962, 955, 955, 1, 864, 956, 881, 960, 957, 957, 957, 1, 864, 956, 881, 957, 957, 957, 1, 864, 956, 881, 962, 955, 955, 1, 956, 881, 955, 955, 955, 1, 963, 1, 964, 965, 966, 881, 967, 968, 968, 1, 864, 970, 881, 969, 969, 969, 1, 970, 881, 971, 971, 971, 1, 970, 881, 972, 972, 972, 1, 970, 881, 1, 950, 951, 952, 953, 954, 954, 1, 864, 970, 881, 973, 969, 969, 1, 864, 970, 881, 974, 971, 971, 1, 864, 970, 881, 972, 972, 972, 1, 864, 975, 970, 881, 973, 976, 969, 969, 1, 864, 970, 881, 974, 971, 971, 971, 1, 864, 970, 881, 971, 971, 971, 1, 864, 970, 881, 976, 969, 969, 1, 970, 881, 969, 969, 969, 1, 640, 641, 977, 978, 642, 640, 640, 640, 643, 977, 640, 640, 979, 979, 979, 1, 640, 641, 977, 642, 640, 640, 640, 643, 977, 640, 640, 979, 979, 979, 1, 640, 641, 977, 980, 642, 640, 640, 640, 643, 977, 640, 640, 979, 979, 979, 1, 640, 641, 642, 640, 640, 640, 643, 640, 640, 640, 979, 981, 981, 1, 640, 641, 982, 983, 984, 985, 640, 661, 986, 643, 982, 640, 640, 981, 981, 981, 1, 640, 641, 982, 642, 640, 640, 640, 643, 982, 640, 640, 981, 981, 981, 1, 640, 641, 984, 985, 640, 661, 986, 643, 640, 640, 640, 979, 981, 981, 1, 642, 645, 987, 989, 642, 643, 642, 642, 642, 988, 990, 642, 642, 1, 642, 645, 991, 642, 643, 642, 642, 642, 992, 642, 642, 1, 642, 645, 993, 642, 643, 642, 642, 642, 994, 642, 642, 1, 642, 645, 642, 642, 643, 642, 642, 642, 995, 642, 642, 1, 642, 645, 672, 673, 674, 643, 642, 642, 642, 642, 642, 642, 1, 642, 645, 672, 673, 674, 643, 642, 642, 642, 995, 642, 642, 1, 642, 645, 672, 673, 674, 643, 642, 642, 642, 994, 642, 642, 1, 642, 645, 672, 673, 674, 643, 642, 642, 642, 996, 642, 642, 1, 642, 645, 672, 673, 674, 643, 642, 642, 642, 992, 642, 642, 1, 642, 645, 997, 672, 673, 674, 643, 642, 642, 642, 996, 992, 642, 642, 1, 642, 645, 998, 672, 673, 674, 643, 642, 642, 642, 992, 994, 642, 642, 1, 642, 645, 999, 672, 673, 674, 643, 642, 642, 642, 994, 995, 642, 642, 1, 642, 645, 672, 673, 674, 643, 642, 642, 642, 995, 642, 642, 642, 1, 1000, 640, 1001, 640, 1002, 640, 640, 640, 643, 1003, 1004, 1005, 675, 675, 1000, 1003, 1004, 1005, 1000, 1000, 1000, 1000, 1, 1006, 640, 1007, 640, 1008, 1009, 1010, 684, 1011, 643, 680, 680, 1006, 1006, 1006, 1006, 1006, 1, 1012, 1012, 1012, 1, 1006, 1006, 1006, 1, 1008, 1013, 642, 680, 680, 682, 1014, 684, 685, 643, 680, 680, 1008, 1008, 1008, 1008, 1008, 1, 1015, 1015, 1015, 1, 1008, 1008, 1008, 1, 1016, 1017, 642, 687, 687, 682, 1018, 684, 685, 643, 687, 687, 1016, 1016, 1016, 1016, 1016, 1, 1019, 1020, 642, 690, 690, 692, 642, 693, 694, 643, 690, 690, 1019, 1019, 1019, 1019, 1019, 1, 1021, 1021, 1021, 1, 1019, 1019, 1019, 1, 1016, 1017, 642, 687, 687, 642, 643, 687, 687, 1016, 1016, 1016, 1016, 1016, 1, 1022, 640, 1023, 640, 1016, 1009, 1024, 684, 1011, 643, 687, 687, 1022, 1022, 1022, 1022, 1022, 1, 1025, 640, 1026, 640, 1019, 1027, 640, 693, 1028, 643, 690, 690, 1025, 1025, 1025, 1025, 1025, 1, 1029, 1029, 1029, 1, 1025, 1025, 1025, 1, 1030, 1030, 1031, 640, 1032, 640, 640, 643, 696, 696, 1030, 1030, 640, 1030, 1030, 1030, 1, 1030, 1030, 1031, 640, 1032, 640, 1033, 643, 696, 696, 1030, 1030, 640, 1030, 1030, 1030, 1, 1034, 1034, 1034, 1, 1030, 1030, 1030, 1, 1032, 1035, 642, 642, 696, 696, 1036, 696, 643, 696, 696, 1032, 1032, 1032, 1032, 1032, 1, 1037, 1037, 1037, 1, 1032, 1032, 1032, 1, 1036, 1038, 1039, 642, 698, 698, 642, 702, 698, 643, 698, 698, 1036, 1036, 1036, 1036, 1036, 1, 1040, 1040, 1040, 1, 1036, 1036, 1036, 1, 1032, 1035, 642, 642, 696, 696, 642, 696, 643, 696, 696, 1032, 1032, 1032, 1032, 1032, 1, 1033, 640, 1041, 1042, 640, 1036, 640, 640, 702, 643, 698, 698, 1033, 1033, 1033, 1033, 1033, 1, 1043, 1043, 1043, 1, 1033, 1033, 1033, 1, 1022, 640, 1023, 640, 1016, 640, 640, 640, 643, 687, 687, 1022, 1022, 1022, 1022, 1022, 1, 1006, 640, 1007, 640, 1008, 1009, 1010, 684, 1011, 643, 1044, 680, 680, 1006, 1044, 1006, 1006, 1006, 1006, 1, 1006, 640, 1007, 640, 1008, 1045, 1046, 707, 1047, 643, 680, 680, 1006, 1006, 1006, 1006, 1006, 1, 1048, 640, 1049, 1048, 640, 1022, 1016, 1009, 1024, 684, 1011, 643, 687, 687, 711, 1048, 1022, 1048, 1048, 1048, 1, 1050, 640, 1051, 1050, 640, 1025, 1019, 1027, 640, 693, 1028, 643, 690, 690, 711, 1050, 1025, 1050, 1050, 1050, 1, 711, 711, 711, 715, 27, 716, 711, 711, 711, 1052, 1052, 711, 711, 1052, 711, 1, 711, 711, 711, 715, 27, 716, 711, 711, 711, 1050, 1050, 711, 711, 1050, 711, 1, 1006, 640, 1007, 640, 1008, 1009, 1010, 684, 1011, 643, 1053, 1054, 680, 680, 1006, 1053, 1054, 1006, 1006, 1006, 1006, 1, 1006, 640, 1007, 640, 1008, 1055, 1056, 721, 1057, 643, 680, 680, 1006, 1006, 1006, 1006, 1006, 1, 1006, 640, 1007, 640, 1008, 1009, 1010, 684, 1011, 643, 1058, 680, 680, 1006, 1058, 1006, 1006, 1006, 1006, 1, 1006, 640, 1007, 640, 1008, 1009, 1010, 684, 1011, 643, 1059, 680, 680, 1006, 1059, 1006, 1006, 1006, 1006, 1, 1006, 640, 1007, 640, 1008, 1009, 1060, 684, 1011, 643, 680, 680, 1006, 1006, 1006, 1006, 1006, 1, 1061, 640, 1062, 1061, 640, 1022, 1016, 1009, 1024, 684, 1011, 643, 687, 687, 728, 1061, 1022, 1061, 1061, 1061, 1, 1063, 640, 1064, 1063, 640, 1025, 1019, 1065, 640, 732, 1066, 643, 690, 690, 734, 1063, 1025, 1063, 1063, 1063, 1, 734, 734, 734, 736, 737, 738, 734, 734, 734, 1067, 1067, 734, 734, 1067, 734, 1, 734, 734, 734, 736, 737, 738, 734, 734, 734, 1063, 1063, 734, 734, 1063, 734, 1, 1006, 640, 1007, 640, 1008, 1009, 1010, 684, 1011, 643, 1068, 680, 680, 1006, 1068, 1006, 1006, 1006, 1006, 1, 1006, 640, 1007, 640, 1008, 1009, 1010, 684, 1011, 643, 1069, 680, 680, 1006, 1069, 1006, 1006, 1006, 1006, 1, 1006, 640, 1007, 640, 1008, 1009, 1010, 684, 1011, 643, 1070, 680, 680, 1006, 1070, 1006, 1006, 1006, 1006, 1, 1006, 640, 1007, 640, 1008, 1009, 1010, 684, 1011, 643, 1071, 680, 680, 1006, 1071, 1006, 1006, 1006, 1006, 1, 1006, 640, 1007, 640, 1008, 1009, 1010, 684, 1011, 643, 1072, 680, 680, 1006, 1072, 1006, 1006, 1006, 1006, 1, 1006, 640, 1007, 640, 1008, 1009, 1010, 684, 1011, 643, 1073, 680, 680, 1006, 1073, 1006, 1006, 1006, 1006, 1, 1006, 640, 1007, 640, 1008, 1009, 1010, 684, 1011, 643, 1074, 680, 680, 1006, 1074, 1006, 1006, 1006, 1006, 1, 1006, 640, 1007, 640, 1008, 1009, 1010, 684, 1011, 643, 1075, 680, 680, 1006, 1075, 1006, 1006, 1006, 1006, 1, 1006, 640, 1007, 640, 1008, 1009, 1076, 684, 1011, 643, 680, 680, 1006, 1006, 1006, 1006, 1006, 1, 1077, 640, 1078, 1077, 640, 1022, 1016, 1009, 1024, 684, 1011, 643, 1079, 1080, 1081, 1082, 687, 687, 754, 1079, 1080, 1081, 1082, 1077, 1022, 1077, 1077, 1077, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1085, 640, 758, 1086, 643, 690, 690, 760, 1083, 1025, 1083, 1083, 1083, 1, 760, 760, 760, 762, 763, 764, 760, 760, 760, 1087, 1087, 760, 760, 1087, 760, 1, 760, 760, 760, 762, 763, 764, 760, 760, 760, 1083, 1083, 760, 760, 1083, 760, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1085, 640, 758, 1086, 643, 1088, 690, 690, 760, 1088, 1083, 1025, 1083, 1083, 1083, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1085, 640, 758, 1086, 643, 1089, 690, 690, 760, 1089, 1083, 1025, 1083, 1083, 1083, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1085, 640, 758, 1086, 643, 1090, 690, 690, 760, 1090, 1083, 1025, 1083, 1083, 1083, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1091, 640, 769, 1092, 643, 690, 690, 760, 1083, 1025, 1083, 1083, 1083, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1085, 640, 758, 1086, 643, 1093, 1094, 690, 690, 760, 1093, 1094, 1083, 1025, 1083, 1083, 1083, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1085, 640, 758, 1086, 643, 1095, 690, 690, 760, 1095, 1083, 1025, 1083, 1083, 1083, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1096, 640, 775, 1097, 643, 690, 690, 760, 1083, 1025, 1083, 1083, 1083, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1085, 640, 758, 1086, 643, 1098, 690, 690, 760, 1098, 1083, 1025, 1083, 1083, 1083, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1099, 640, 779, 1100, 643, 690, 690, 760, 1083, 1025, 1083, 1083, 1083, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1085, 640, 758, 1086, 643, 1101, 690, 690, 760, 1101, 1083, 1025, 1083, 1083, 1083, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1085, 640, 758, 1086, 643, 1102, 690, 690, 760, 1102, 1083, 1025, 1083, 1083, 1083, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1103, 640, 784, 1104, 643, 690, 690, 760, 1083, 1025, 1083, 1083, 1083, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1085, 640, 758, 1086, 643, 1105, 690, 690, 760, 1105, 1083, 1025, 1083, 1083, 1083, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1106, 640, 788, 1107, 643, 1108, 690, 690, 760, 1108, 1083, 1025, 1083, 1083, 1083, 1, 1083, 640, 1084, 1083, 640, 1025, 1019, 1109, 640, 792, 1110, 643, 690, 690, 760, 1083, 1025, 1083, 1083, 1083, 1, 640, 641, 1111, 1112, 1113, 642, 640, 640, 640, 643, 640, 640, 640, 1114, 981, 981, 1, 640, 641, 977, 1115, 642, 640, 640, 640, 643, 977, 640, 640, 979, 979, 979, 1, 640, 641, 1116, 1117, 1118, 642, 640, 640, 640, 643, 640, 640, 640, 1119, 981, 981, 1, 640, 641, 977, 1120, 642, 640, 640, 640, 643, 977, 640, 640, 979, 979, 979, 1, 640, 641, 1121, 1122, 1123, 642, 640, 640, 640, 643, 640, 640, 640, 1124, 981, 981, 1, 640, 641, 977, 980, 1125, 1126, 640, 814, 1127, 643, 977, 640, 640, 979, 979, 979, 1, 640, 641, 977, 980, 1125, 1126, 640, 814, 1127, 643, 977, 640, 640, 1124, 979, 979, 1, 640, 641, 977, 980, 1125, 1126, 640, 814, 1127, 643, 977, 640, 640, 1121, 979, 979, 1, 640, 641, 977, 980, 1128, 1125, 1126, 640, 814, 1127, 643, 977, 640, 640, 1124, 1121, 979, 979, 1, 640, 641, 977, 980, 1125, 1126, 640, 814, 1127, 643, 977, 640, 640, 1121, 979, 979, 979, 1, 640, 641, 977, 1120, 642, 640, 640, 640, 643, 977, 640, 640, 1119, 979, 979, 1, 640, 641, 977, 1120, 642, 640, 640, 640, 643, 977, 640, 640, 1116, 979, 979, 1, 640, 641, 977, 1120, 1129, 642, 640, 640, 640, 643, 977, 640, 640, 1119, 1116, 979, 979, 1, 640, 641, 977, 1120, 642, 640, 640, 640, 643, 977, 640, 640, 1116, 979, 979, 979, 1, 640, 641, 977, 1115, 642, 640, 640, 640, 643, 977, 640, 640, 1114, 979, 979, 1, 640, 641, 977, 1115, 642, 640, 640, 640, 643, 977, 640, 640, 1111, 979, 979, 1, 640, 641, 977, 1115, 1130, 642, 640, 640, 640, 643, 977, 640, 640, 1114, 1111, 979, 979, 1, 640, 641, 977, 1115, 642, 640, 640, 640, 643, 977, 640, 640, 1111, 979, 979, 979, 1, 640, 641, 977, 978, 642, 640, 640, 640, 643, 977, 640, 640, 1131, 979, 979, 1, 640, 641, 977, 978, 642, 640, 640, 640, 643, 977, 640, 640, 1132, 979, 979, 1, 640, 641, 977, 978, 1133, 642, 640, 640, 640, 643, 977, 640, 640, 1131, 1132, 979, 979, 1, 640, 641, 977, 978, 642, 640, 640, 640, 643, 977, 640, 640, 1132, 979, 979, 979, 1, 20, 1134, 20, 20, 20, 20, 1, 20, 21, 1135, 1135, 20, 20, 20, 20, 1, 20, 21, 1136, 1136, 20, 20, 20, 20, 1, 20, 1137, 20, 20, 20, 20, 1, 1138, 1138, 1140, 1139, 1139, 1138, 1138, 1138, 1, 1141, 1142, 1143, 1141, 1141, 1141, 1141, 1141, 1, 1144, 1145, 1145, 1144, 1144, 1144, 1, 1146, 1147, 1148, 684, 1146, 1146, 1146, 1, 1149, 1150, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1, 1151, 1152, 1153, 693, 1151, 1151, 1151, 1151, 1151, 1151, 1151, 1, 1154, 1154, 1154, 1, 1151, 1151, 1151, 1, 1146, 1147, 1148, 684, 1155, 1155, 1146, 1146, 1146, 1, 1146, 1147, 1148, 684, 1156, 1156, 1146, 1146, 1146, 1, 1146, 1147, 1148, 684, 1157, 1157, 1146, 1146, 1146, 1, 1146, 1147, 1148, 684, 1158, 1158, 1146, 1146, 1146, 1, 1159, 1147, 1148, 684, 1146, 1146, 1146, 1, 1146, 1147, 1148, 684, 1160, 1160, 1146, 1146, 1146, 1, 1146, 1147, 1148, 684, 1161, 1161, 1146, 1146, 1146, 1, 1146, 1147, 1148, 684, 1162, 1162, 1146, 1146, 1146, 1, 1146, 1147, 1148, 684, 1163, 1163, 1146, 1146, 1146, 1, 1146, 1147, 1148, 684, 1164, 1164, 1146, 1146, 1146, 1, 1146, 1147, 1148, 684, 1165, 1165, 1146, 1146, 1146, 1, 1146, 1147, 1148, 684, 1166, 1166, 1146, 1146, 1146, 1, 1146, 1147, 1167, 684, 1146, 1146, 1146, 1, 1149, 1150, 1168, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1169, 1170, 1170, 1, 1151, 1152, 1151, 1151, 1153, 693, 1151, 1151, 1151, 1151, 1171, 1151, 1171, 1172, 1151, 1151, 1, 1151, 1152, 1151, 1151, 1173, 1174, 1151, 1151, 1151, 1151, 1172, 1151, 1172, 1151, 1151, 1, 1151, 1152, 1175, 1176, 1151, 1151, 1153, 693, 1151, 1151, 1175, 1151, 1151, 1177, 1177, 1177, 1, 1151, 1152, 1175, 1151, 1153, 693, 1151, 1151, 1175, 1151, 1151, 1151, 1177, 1177, 1177, 1, 1151, 1152, 1151, 1153, 693, 1151, 1151, 1151, 1151, 1151, 1151, 1177, 1178, 1178, 1, 1151, 1152, 1179, 1180, 1151, 1151, 1173, 1174, 1151, 1151, 1179, 1151, 1151, 1178, 1178, 1178, 1, 1151, 1152, 1179, 1151, 1153, 693, 1151, 1151, 1179, 1151, 1151, 1151, 1178, 1178, 1178, 1, 1151, 1152, 1151, 1173, 1174, 1151, 1151, 1151, 1151, 1151, 1151, 1177, 1178, 1178, 1, 1141, 1141, 1181, 1181, 1141, 1141, 1141, 1, 1182, 1182, 1183, 1, 1142, 1143, 1183, 1183, 1183, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1187, 1186, 1186, 1186, 1186, 1186, 1186, 1, 1188, 1189, 1188, 1186, 1186, 1186, 5, 1186, 1186, 1186, 1186, 1186, 1186, 1, 1190, 1, 1191, 1191, 1, 1191, 1191, 1186, 1186, 1186, 5, 1186, 1186, 1186, 1186, 1186, 1186, 1, 1197, 1198, 1199, 1200, 1192, 1193, 1194, 1195, 1196, 1197, 1, 1197, 1, 1192, 1, 1193, 1, 1194, 1, 1195, 1, 1201, 1, 1197, 1197, 1, 1202, 1203, 1202, 1187, 1, 1197, 1197, 1197, 1, 1204, 1205, 1204, 1204, 1204, 1204, 1, 1206, 1207, 1208, 1209, 1210, 1211, 1207, 1211, 1212, 1207, 1207, 1207, 1207, 1207, 1, 1206, 1207, 1208, 1209, 1213, 1207, 1214, 1207, 1207, 1207, 1207, 1207, 1, 1208, 1215, 1216, 1208, 1217, 1208, 1208, 1208, 1208, 1208, 1, 1218, 1218, 1218, 1, 1208, 1208, 1208, 1, 1216, 1219, 1216, 1217, 1216, 1216, 1216, 1216, 1216, 1216, 1, 1220, 1220, 1220, 1, 1216, 1216, 1216, 1, 1221, 1222, 1223, 1212, 1224, 1225, 1225, 1, 1226, 1227, 1226, 1228, 1228, 1228, 1, 1226, 1226, 1228, 1228, 1228, 1, 1226, 1229, 1226, 1228, 1228, 1228, 1, 1228, 1225, 1225, 1, 1206, 1230, 1231, 1232, 1211, 1230, 1225, 1225, 1225, 1, 1230, 1230, 1225, 1225, 1225, 1, 1206, 1232, 1211, 1228, 1225, 1225, 1, 1233, 1235, 1234, 1236, 1, 1237, 1238, 1, 1239, 1240, 1, 1241, 1, 1206, 1211, 1, 1206, 1211, 1242, 1211, 1211, 1211, 1211, 1211, 1211, 1, 1243, 1243, 1243, 1, 1211, 1211, 1211, 1, 1206, 1211, 1241, 1, 1206, 1211, 1240, 1, 1206, 1211, 1236, 1, 1206, 1211, 1238, 1, 1206, 1244, 1211, 1236, 1238, 1, 1206, 1245, 1211, 1238, 1240, 1, 1206, 1246, 1211, 1240, 1241, 1, 1206, 1211, 1241, 1, 1247, 1248, 1249, 1250, 1225, 1225, 1, 1226, 1251, 1226, 1228, 1228, 1228, 1, 1252, 1253, 1254, 1255, 1225, 1225, 1, 1226, 1256, 1226, 1228, 1228, 1228, 1, 1257, 1258, 1259, 1260, 1225, 1225, 1, 1206, 1226, 1229, 1232, 1211, 1226, 1228, 1228, 1228, 1, 1206, 1226, 1229, 1232, 1211, 1226, 1260, 1228, 1228, 1, 1206, 1226, 1229, 1232, 1211, 1226, 1257, 1228, 1228, 1, 1206, 1226, 1229, 1261, 1232, 1211, 1226, 1260, 1257, 1228, 1228, 1, 1206, 1226, 1229, 1232, 1211, 1226, 1257, 1228, 1228, 1228, 1, 1226, 1256, 1226, 1255, 1228, 1228, 1, 1226, 1256, 1226, 1252, 1228, 1228, 1, 1226, 1256, 1262, 1226, 1255, 1252, 1228, 1228, 1, 1226, 1256, 1226, 1252, 1228, 1228, 1228, 1, 1226, 1251, 1226, 1250, 1228, 1228, 1, 1226, 1251, 1226, 1247, 1228, 1228, 1, 1226, 1251, 1263, 1226, 1250, 1247, 1228, 1228, 1, 1226, 1251, 1226, 1247, 1228, 1228, 1228, 1, 1226, 1227, 1226, 1224, 1228, 1228, 1, 1226, 1227, 1226, 1221, 1228, 1228, 1, 1226, 1227, 1264, 1226, 1224, 1221, 1228, 1228, 1, 1226, 1227, 1226, 1221, 1228, 1228, 1228, 1, 1266, 1265, 1265, 1265, 1, 1268, 1267, 1267, 1267, 1, 1268, 1269, 1269, 1269, 1, 1268, 1270, 1270, 1270, 1, 1268, 1, 1272, 1271, 1271, 1271, 1, 1274, 1273, 1273, 1273, 1, 1274, 1275, 1275, 1275, 1, 1274, 1276, 1276, 1276, 1, 1274, 1, 1278, 1277, 1277, 1277, 1, 1280, 1279, 1279, 1279, 1, 1280, 1281, 1281, 1281, 1, 1280, 1282, 1282, 1282, 1, 1280, 1, 1284, 1283, 1283, 1283, 1, 1286, 1285, 1285, 1285, 1, 1286, 1287, 1287, 1287, 1, 1286, 1288, 1288, 1288, 1, 1286, 1, 1290, 1289, 1289, 1289, 1, 1292, 1291, 1291, 1291, 1, 1292, 1293, 1293, 1293, 1, 1292, 1294, 1294, 1294, 1, 1292, 1, 1296, 1295, 1295, 1295, 1, 1298, 1297, 1297, 1297, 1, 1298, 1299, 1299, 1299, 1, 1298, 1300, 1300, 1300, 1, 1298, 1, 1301, 1302, 1303, 1305, 1304, 1306, 1306, 1, 1307, 1309, 1308, 1308, 1308, 1, 1310, 1311, 1312, 1313, 1, 1314, 1, 1315, 1316, 1317, 1318, 1, 1319, 1, 1320, 1321, 1322, 1323, 1, 1324, 1, 1206, 1232, 1211, 1, 1324, 1323, 1, 1324, 1320, 1, 1325, 1324, 1323, 1320, 1, 1324, 1320, 1, 1319, 1318, 1, 1319, 1315, 1, 1319, 1326, 1318, 1315, 1, 1319, 1315, 1, 1314, 1313, 1, 1314, 1310, 1, 1314, 1327, 1313, 1310, 1, 1314, 1310, 1, 1309, 1328, 1328, 1328, 1, 1309, 1329, 1329, 1329, 1, 1309, 1, 1320, 1330, 1330, 1330, 1, 1324, 1331, 1331, 1331, 1, 1324, 1332, 1332, 1332, 1, 1324, 1320, 1320, 1320, 1, 1307, 1309, 1333, 1308, 1308, 1, 1307, 1309, 1334, 1328, 1328, 1, 1307, 1309, 1329, 1329, 1329, 1, 1307, 1335, 1309, 1333, 1336, 1308, 1308, 1, 1307, 1309, 1334, 1328, 1328, 1328, 1, 1307, 1309, 1328, 1328, 1328, 1, 1307, 1309, 1336, 1308, 1308, 1, 1324, 1330, 1330, 1330, 1, 1309, 1308, 1308, 1308, 1, 1337, 1338, 1339, 1324, 1340, 1341, 1341, 1, 1307, 1343, 1324, 1342, 1342, 1342, 1, 1343, 1324, 1344, 1344, 1344, 1, 1343, 1324, 1345, 1345, 1345, 1, 1343, 1324, 1, 1330, 1330, 1330, 1, 1307, 1343, 1324, 1346, 1342, 1342, 1, 1307, 1343, 1324, 1347, 1344, 1344, 1, 1307, 1343, 1324, 1345, 1345, 1345, 1, 1307, 1348, 1343, 1324, 1346, 1349, 1342, 1342, 1, 1307, 1343, 1324, 1347, 1344, 1344, 1344, 1, 1307, 1343, 1324, 1344, 1344, 1344, 1, 1307, 1343, 1324, 1349, 1342, 1342, 1, 1343, 1324, 1342, 1342, 1342, 1, 1350, 1351, 1352, 1324, 1353, 1354, 1354, 1, 1307, 1356, 1324, 1355, 1355, 1355, 1, 1356, 1324, 1357, 1357, 1357, 1, 1356, 1324, 1358, 1358, 1358, 1, 1356, 1324, 1, 1337, 1338, 1339, 1340, 1341, 1341, 1, 1307, 1356, 1324, 1359, 1355, 1355, 1, 1307, 1356, 1324, 1360, 1357, 1357, 1, 1307, 1356, 1324, 1358, 1358, 1358, 1, 1307, 1361, 1356, 1324, 1359, 1362, 1355, 1355, 1, 1307, 1356, 1324, 1360, 1357, 1357, 1357, 1, 1307, 1356, 1324, 1357, 1357, 1357, 1, 1307, 1356, 1324, 1362, 1355, 1355, 1, 1356, 1324, 1355, 1355, 1355, 1, 1363, 1364, 1365, 1324, 1366, 1367, 1367, 1, 1307, 1369, 1324, 1368, 1368, 1368, 1, 1369, 1324, 1370, 1370, 1370, 1, 1369, 1324, 1371, 1371, 1371, 1, 1369, 1324, 1, 1350, 1351, 1352, 1353, 1354, 1354, 1, 1307, 1369, 1324, 1372, 1368, 1368, 1, 1307, 1369, 1324, 1373, 1370, 1370, 1, 1307, 1369, 1324, 1371, 1371, 1371, 1, 1307, 1374, 1369, 1324, 1372, 1375, 1368, 1368, 1, 1307, 1369, 1324, 1373, 1370, 1370, 1370, 1, 1307, 1369, 1324, 1370, 1370, 1370, 1, 1307, 1369, 1324, 1375, 1368, 1368, 1, 1369, 1324, 1368, 1368, 1368, 1, 1376, 1377, 1378, 1324, 1379, 1380, 1380, 1, 1307, 1382, 1324, 1381, 1381, 1381, 1, 1382, 1324, 1383, 1383, 1383, 1, 1382, 1324, 1384, 1384, 1384, 1, 1382, 1324, 1, 1363, 1364, 1365, 1366, 1367, 1367, 1, 1307, 1382, 1324, 1385, 1381, 1381, 1, 1307, 1382, 1324, 1386, 1383, 1383, 1, 1307, 1382, 1324, 1384, 1384, 1384, 1, 1307, 1387, 1382, 1324, 1385, 1388, 1381, 1381, 1, 1307, 1382, 1324, 1386, 1383, 1383, 1383, 1, 1307, 1382, 1324, 1383, 1383, 1383, 1, 1307, 1382, 1324, 1388, 1381, 1381, 1, 1382, 1324, 1381, 1381, 1381, 1, 1389, 1390, 1391, 1324, 1392, 1393, 1393, 1, 1307, 1395, 1324, 1394, 1394, 1394, 1, 1395, 1324, 1396, 1396, 1396, 1, 1395, 1324, 1397, 1397, 1397, 1, 1395, 1324, 1, 1376, 1377, 1378, 1379, 1380, 1380, 1, 1307, 1395, 1324, 1398, 1394, 1394, 1, 1307, 1395, 1324, 1399, 1396, 1396, 1, 1307, 1395, 1324, 1397, 1397, 1397, 1, 1307, 1400, 1395, 1324, 1398, 1401, 1394, 1394, 1, 1307, 1395, 1324, 1399, 1396, 1396, 1396, 1, 1307, 1395, 1324, 1396, 1396, 1396, 1, 1307, 1395, 1324, 1401, 1394, 1394, 1, 1395, 1324, 1394, 1394, 1394, 1, 1402, 1, 1403, 1404, 1405, 1324, 1406, 1407, 1407, 1, 1307, 1409, 1324, 1408, 1408, 1408, 1, 1409, 1324, 1410, 1410, 1410, 1, 1409, 1324, 1411, 1411, 1411, 1, 1409, 1324, 1, 1389, 1390, 1391, 1392, 1393, 1393, 1, 1307, 1409, 1324, 1412, 1408, 1408, 1, 1307, 1409, 1324, 1413, 1410, 1410, 1, 1307, 1409, 1324, 1411, 1411, 1411, 1, 1307, 1414, 1409, 1324, 1412, 1415, 1408, 1408, 1, 1307, 1409, 1324, 1413, 1410, 1410, 1410, 1, 1307, 1409, 1324, 1410, 1410, 1410, 1, 1307, 1409, 1324, 1415, 1408, 1408, 1, 1409, 1324, 1408, 1408, 1408, 1, 1416, 1416, 1416, 1, 1207, 1207, 1207, 1, 1206, 1213, 1417, 1211, 1213, 1211, 1214, 1213, 1213, 1213, 1211, 1213, 1213, 1, 1418, 1418, 1418, 1, 1213, 1213, 1213, 1, 1206, 1211, 1242, 1211, 1212, 1211, 1211, 1211, 1211, 1211, 1, 1206, 1207, 1208, 1209, 1419, 1213, 1207, 1214, 1207, 1207, 1207, 1207, 1207, 1, 1206, 1420, 1421, 1422, 1213, 1420, 1214, 1423, 1420, 1420, 1420, 1420, 1420, 1, 1206, 1420, 1421, 1422, 1424, 1420, 1425, 1420, 1420, 1420, 1420, 1420, 1, 1421, 1426, 1427, 1421, 1428, 1421, 1421, 1421, 1421, 1421, 1, 1429, 1429, 1429, 1, 1421, 1421, 1421, 1, 1427, 1430, 1427, 1428, 1427, 1427, 1427, 1427, 1427, 1427, 1, 1431, 1431, 1431, 1, 1427, 1427, 1427, 1, 1432, 1433, 1434, 1423, 1435, 1436, 1436, 1, 1437, 1438, 1437, 1439, 1439, 1439, 1, 1437, 1437, 1439, 1439, 1439, 1, 1437, 1440, 1437, 1439, 1439, 1439, 1, 1439, 1436, 1436, 1, 1206, 1441, 1442, 1211, 1443, 1211, 1441, 1436, 1436, 1436, 1, 1441, 1441, 1436, 1436, 1436, 1, 1206, 1211, 1443, 1211, 1439, 1436, 1436, 1, 1444, 1446, 1445, 1447, 1, 1448, 1449, 1, 1450, 1451, 1, 1452, 1, 1206, 1211, 1211, 1, 1206, 1211, 1211, 1452, 1, 1206, 1211, 1211, 1451, 1, 1206, 1211, 1211, 1447, 1, 1206, 1211, 1211, 1449, 1, 1206, 1211, 1453, 1211, 1447, 1449, 1, 1206, 1211, 1454, 1211, 1449, 1451, 1, 1206, 1211, 1455, 1211, 1451, 1452, 1, 1206, 1211, 1211, 1452, 1, 1456, 1457, 1458, 1459, 1436, 1436, 1, 1437, 1460, 1437, 1439, 1439, 1439, 1, 1461, 1462, 1463, 1464, 1436, 1436, 1, 1437, 1465, 1437, 1439, 1439, 1439, 1, 1466, 1467, 1468, 1469, 1436, 1436, 1, 1206, 1437, 1440, 1211, 1443, 1211, 1437, 1439, 1439, 1439, 1, 1206, 1437, 1440, 1211, 1443, 1211, 1437, 1469, 1439, 1439, 1, 1206, 1437, 1440, 1211, 1443, 1211, 1437, 1466, 1439, 1439, 1, 1206, 1437, 1440, 1211, 1470, 1443, 1211, 1437, 1469, 1466, 1439, 1439, 1, 1206, 1437, 1440, 1211, 1443, 1211, 1437, 1466, 1439, 1439, 1439, 1, 1437, 1465, 1437, 1464, 1439, 1439, 1, 1437, 1465, 1437, 1461, 1439, 1439, 1, 1437, 1465, 1471, 1437, 1464, 1461, 1439, 1439, 1, 1437, 1465, 1437, 1461, 1439, 1439, 1439, 1, 1437, 1460, 1437, 1459, 1439, 1439, 1, 1437, 1460, 1437, 1456, 1439, 1439, 1, 1437, 1460, 1472, 1437, 1459, 1456, 1439, 1439, 1, 1437, 1460, 1437, 1456, 1439, 1439, 1439, 1, 1437, 1438, 1437, 1435, 1439, 1439, 1, 1437, 1438, 1437, 1432, 1439, 1439, 1, 1437, 1438, 1473, 1437, 1435, 1432, 1439, 1439, 1, 1437, 1438, 1437, 1432, 1439, 1439, 1439, 1, 1475, 1474, 1474, 1474, 1, 1477, 1476, 1476, 1476, 1, 1477, 1478, 1478, 1478, 1, 1477, 1479, 1479, 1479, 1, 1477, 1, 1481, 1480, 1480, 1480, 1, 1483, 1482, 1482, 1482, 1, 1483, 1484, 1484, 1484, 1, 1483, 1485, 1485, 1485, 1, 1483, 1, 1487, 1486, 1486, 1486, 1, 1489, 1488, 1488, 1488, 1, 1489, 1490, 1490, 1490, 1, 1489, 1491, 1491, 1491, 1, 1489, 1, 1493, 1492, 1492, 1492, 1, 1495, 1494, 1494, 1494, 1, 1495, 1496, 1496, 1496, 1, 1495, 1497, 1497, 1497, 1, 1495, 1, 1499, 1498, 1498, 1498, 1, 1501, 1500, 1500, 1500, 1, 1501, 1502, 1502, 1502, 1, 1501, 1503, 1503, 1503, 1, 1501, 1, 1505, 1504, 1504, 1504, 1, 1507, 1506, 1506, 1506, 1, 1507, 1508, 1508, 1508, 1, 1507, 1509, 1509, 1509, 1, 1507, 1, 1510, 1511, 1512, 1514, 1513, 1515, 1515, 1, 1516, 1518, 1517, 1517, 1517, 1, 1519, 1520, 1521, 1522, 1, 1523, 1, 1524, 1525, 1526, 1527, 1, 1528, 1, 1529, 1530, 1531, 1532, 1, 1533, 1, 1206, 1211, 1443, 1211, 1, 1533, 1532, 1, 1533, 1529, 1, 1534, 1533, 1532, 1529, 1, 1533, 1529, 1, 1528, 1527, 1, 1528, 1524, 1, 1528, 1535, 1527, 1524, 1, 1528, 1524, 1, 1523, 1522, 1, 1523, 1519, 1, 1523, 1536, 1522, 1519, 1, 1523, 1519, 1, 1518, 1537, 1537, 1537, 1, 1518, 1538, 1538, 1538, 1, 1518, 1, 1529, 1539, 1539, 1539, 1, 1533, 1540, 1540, 1540, 1, 1533, 1541, 1541, 1541, 1, 1533, 1529, 1529, 1529, 1, 1516, 1518, 1542, 1517, 1517, 1, 1516, 1518, 1543, 1537, 1537, 1, 1516, 1518, 1538, 1538, 1538, 1, 1516, 1544, 1518, 1542, 1545, 1517, 1517, 1, 1516, 1518, 1543, 1537, 1537, 1537, 1, 1516, 1518, 1537, 1537, 1537, 1, 1516, 1518, 1545, 1517, 1517, 1, 1533, 1539, 1539, 1539, 1, 1518, 1517, 1517, 1517, 1, 1546, 1547, 1548, 1533, 1549, 1550, 1550, 1, 1516, 1552, 1533, 1551, 1551, 1551, 1, 1552, 1533, 1553, 1553, 1553, 1, 1552, 1533, 1554, 1554, 1554, 1, 1552, 1533, 1, 1539, 1539, 1539, 1, 1516, 1552, 1533, 1555, 1551, 1551, 1, 1516, 1552, 1533, 1556, 1553, 1553, 1, 1516, 1552, 1533, 1554, 1554, 1554, 1, 1516, 1557, 1552, 1533, 1555, 1558, 1551, 1551, 1, 1516, 1552, 1533, 1556, 1553, 1553, 1553, 1, 1516, 1552, 1533, 1553, 1553, 1553, 1, 1516, 1552, 1533, 1558, 1551, 1551, 1, 1552, 1533, 1551, 1551, 1551, 1, 1559, 1560, 1561, 1533, 1562, 1563, 1563, 1, 1516, 1565, 1533, 1564, 1564, 1564, 1, 1565, 1533, 1566, 1566, 1566, 1, 1565, 1533, 1567, 1567, 1567, 1, 1565, 1533, 1, 1546, 1547, 1548, 1549, 1550, 1550, 1, 1516, 1565, 1533, 1568, 1564, 1564, 1, 1516, 1565, 1533, 1569, 1566, 1566, 1, 1516, 1565, 1533, 1567, 1567, 1567, 1, 1516, 1570, 1565, 1533, 1568, 1571, 1564, 1564, 1, 1516, 1565, 1533, 1569, 1566, 1566, 1566, 1, 1516, 1565, 1533, 1566, 1566, 1566, 1, 1516, 1565, 1533, 1571, 1564, 1564, 1, 1565, 1533, 1564, 1564, 1564, 1, 1572, 1573, 1574, 1533, 1575, 1576, 1576, 1, 1516, 1578, 1533, 1577, 1577, 1577, 1, 1578, 1533, 1579, 1579, 1579, 1, 1578, 1533, 1580, 1580, 1580, 1, 1578, 1533, 1, 1559, 1560, 1561, 1562, 1563, 1563, 1, 1516, 1578, 1533, 1581, 1577, 1577, 1, 1516, 1578, 1533, 1582, 1579, 1579, 1, 1516, 1578, 1533, 1580, 1580, 1580, 1, 1516, 1583, 1578, 1533, 1581, 1584, 1577, 1577, 1, 1516, 1578, 1533, 1582, 1579, 1579, 1579, 1, 1516, 1578, 1533, 1579, 1579, 1579, 1, 1516, 1578, 1533, 1584, 1577, 1577, 1, 1578, 1533, 1577, 1577, 1577, 1, 1585, 1586, 1587, 1533, 1588, 1589, 1589, 1, 1516, 1591, 1533, 1590, 1590, 1590, 1, 1591, 1533, 1592, 1592, 1592, 1, 1591, 1533, 1593, 1593, 1593, 1, 1591, 1533, 1, 1572, 1573, 1574, 1575, 1576, 1576, 1, 1516, 1591, 1533, 1594, 1590, 1590, 1, 1516, 1591, 1533, 1595, 1592, 1592, 1, 1516, 1591, 1533, 1593, 1593, 1593, 1, 1516, 1596, 1591, 1533, 1594, 1597, 1590, 1590, 1, 1516, 1591, 1533, 1595, 1592, 1592, 1592, 1, 1516, 1591, 1533, 1592, 1592, 1592, 1, 1516, 1591, 1533, 1597, 1590, 1590, 1, 1591, 1533, 1590, 1590, 1590, 1, 1598, 1599, 1600, 1533, 1601, 1602, 1602, 1, 1516, 1604, 1533, 1603, 1603, 1603, 1, 1604, 1533, 1605, 1605, 1605, 1, 1604, 1533, 1606, 1606, 1606, 1, 1604, 1533, 1, 1585, 1586, 1587, 1588, 1589, 1589, 1, 1516, 1604, 1533, 1607, 1603, 1603, 1, 1516, 1604, 1533, 1608, 1605, 1605, 1, 1516, 1604, 1533, 1606, 1606, 1606, 1, 1516, 1609, 1604, 1533, 1607, 1610, 1603, 1603, 1, 1516, 1604, 1533, 1608, 1605, 1605, 1605, 1, 1516, 1604, 1533, 1605, 1605, 1605, 1, 1516, 1604, 1533, 1610, 1603, 1603, 1, 1604, 1533, 1603, 1603, 1603, 1, 1611, 1, 1612, 1613, 1614, 1533, 1615, 1616, 1616, 1, 1516, 1618, 1533, 1617, 1617, 1617, 1, 1618, 1533, 1619, 1619, 1619, 1, 1618, 1533, 1620, 1620, 1620, 1, 1618, 1533, 1, 1598, 1599, 1600, 1601, 1602, 1602, 1, 1516, 1618, 1533, 1621, 1617, 1617, 1, 1516, 1618, 1533, 1622, 1619, 1619, 1, 1516, 1618, 1533, 1620, 1620, 1620, 1, 1516, 1623, 1618, 1533, 1621, 1624, 1617, 1617, 1, 1516, 1618, 1533, 1622, 1619, 1619, 1619, 1, 1516, 1618, 1533, 1619, 1619, 1619, 1, 1516, 1618, 1533, 1624, 1617, 1617, 1, 1618, 1533, 1617, 1617, 1617, 1, 1625, 1625, 1625, 1, 1420, 1420, 1420, 1, 1206, 1424, 1626, 1211, 1424, 1211, 1425, 1424, 1424, 1424, 1211, 1424, 1424, 1, 1627, 1627, 1627, 1, 1424, 1424, 1424, 1, 1206, 1211, 1242, 1211, 1423, 1211, 1211, 1211, 1211, 1211, 1, 1204, 1205, 1628, 1628, 1204, 1204, 1204, 1204, 1, 1204, 1205, 1629, 1629, 1204, 1204, 1204, 1204, 1, 1204, 1630, 1631, 1631, 1204, 1204, 1204, 1204, 1, 1632, 1633, 1634, 1635, 1636, 1632, 1632, 1632, 1639, 1632, 1632, 1632, 1637, 1638, 1638, 1, 1640, 1641, 1642, 1640, 1643, 1640, 1640, 1640, 1640, 1640, 1, 1644, 1644, 1644, 1, 1640, 1640, 1640, 1, 1642, 1645, 1642, 1643, 1642, 1642, 1642, 1642, 1642, 1642, 1, 1646, 1646, 1646, 1, 1642, 1642, 1642, 1, 1647, 1648, 1649, 1639, 1650, 1651, 1651, 1, 1652, 1653, 1652, 1654, 1654, 1654, 1, 1652, 1652, 1654, 1654, 1654, 1, 1652, 1655, 1652, 1654, 1654, 1654, 1, 1654, 1656, 1656, 1, 1657, 1658, 1659, 1660, 1661, 1662, 1658, 1656, 1656, 1656, 1, 1658, 1658, 1656, 1656, 1656, 1, 1657, 1660, 1661, 1662, 1654, 1656, 1656, 1, 1663, 1665, 1664, 1666, 1, 1667, 1668, 1, 1669, 1670, 1, 1671, 1, 1672, 1673, 1674, 1, 1675, 1676, 1677, 1678, 1679, 1675, 1675, 1677, 1678, 1679, 1675, 1675, 1675, 1675, 1675, 1, 1680, 1681, 1682, 1683, 1684, 1685, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1, 1686, 1686, 1686, 1, 1681, 1681, 1681, 1, 1680, 1687, 1688, 1683, 1689, 1685, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1, 1695, 1695, 1695, 1, 1691, 1691, 1691, 1, 1696, 1696, 1697, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1, 1696, 1696, 1697, 1698, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1696, 1, 1699, 1699, 1699, 1, 1696, 1696, 1696, 1, 1700, 1698, 1701, 1702, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1698, 1, 1703, 1703, 1703, 1, 1698, 1698, 1698, 1, 1687, 1688, 1687, 1687, 1687, 1687, 1687, 1687, 1687, 1, 1680, 1681, 1682, 1683, 1684, 1685, 1704, 1681, 1681, 1704, 1681, 1681, 1681, 1681, 1681, 1, 1705, 1681, 1682, 1706, 1707, 1708, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1, 1680, 1709, 1710, 1709, 1687, 1687, 1683, 1689, 1685, 1687, 1687, 1711, 1709, 1687, 1709, 1709, 1709, 1709, 1, 1690, 1712, 1713, 1712, 1691, 1691, 1693, 1694, 1691, 1691, 1711, 1712, 1691, 1712, 1712, 1712, 1712, 1, 1206, 1711, 1711, 1711, 1715, 1716, 1711, 1711, 1711, 1714, 1714, 1711, 1711, 1714, 1711, 1, 1206, 1711, 1711, 1711, 1715, 1716, 1711, 1711, 1711, 1711, 1711, 1711, 1, 1206, 1711, 1711, 1711, 1715, 1716, 1711, 1711, 1711, 1712, 1712, 1711, 1711, 1712, 1711, 1, 1680, 1681, 1682, 1683, 1684, 1685, 1717, 1718, 1681, 1681, 1717, 1718, 1681, 1681, 1681, 1681, 1681, 1, 1719, 1681, 1682, 1720, 1721, 1722, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1, 1680, 1681, 1682, 1683, 1684, 1685, 1723, 1681, 1681, 1723, 1681, 1681, 1681, 1681, 1681, 1, 1680, 1681, 1682, 1683, 1684, 1685, 1724, 1681, 1681, 1724, 1681, 1681, 1681, 1681, 1681, 1, 1680, 1681, 1682, 1683, 1725, 1685, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1, 1680, 1726, 1727, 1726, 1687, 1687, 1683, 1689, 1685, 1687, 1687, 1728, 1726, 1687, 1726, 1726, 1726, 1726, 1, 1729, 1730, 1731, 1730, 1691, 1691, 1732, 1733, 1691, 1691, 1734, 1730, 1691, 1730, 1730, 1730, 1730, 1, 1735, 1734, 1734, 1734, 1737, 1738, 1734, 1734, 1734, 1736, 1736, 1734, 1734, 1736, 1734, 1, 1735, 1734, 1734, 1734, 1737, 1738, 1734, 1734, 1734, 1734, 1734, 1734, 1, 1735, 1734, 1734, 1734, 1737, 1738, 1734, 1734, 1734, 1730, 1730, 1734, 1734, 1730, 1734, 1, 1680, 1681, 1682, 1683, 1684, 1685, 1739, 1681, 1681, 1739, 1681, 1681, 1681, 1681, 1681, 1, 1680, 1681, 1682, 1683, 1684, 1685, 1740, 1681, 1681, 1740, 1681, 1681, 1681, 1681, 1681, 1, 1680, 1681, 1682, 1683, 1684, 1685, 1741, 1681, 1681, 1741, 1681, 1681, 1681, 1681, 1681, 1, 1680, 1681, 1682, 1683, 1684, 1685, 1742, 1681, 1681, 1742, 1681, 1681, 1681, 1681, 1681, 1, 1680, 1681, 1682, 1683, 1684, 1685, 1743, 1681, 1681, 1743, 1681, 1681, 1681, 1681, 1681, 1, 1680, 1681, 1682, 1683, 1684, 1685, 1744, 1681, 1681, 1744, 1681, 1681, 1681, 1681, 1681, 1, 1680, 1681, 1682, 1683, 1684, 1685, 1745, 1681, 1681, 1745, 1681, 1681, 1681, 1681, 1681, 1, 1680, 1681, 1682, 1683, 1684, 1685, 1746, 1681, 1681, 1746, 1681, 1681, 1681, 1681, 1681, 1, 1680, 1681, 1682, 1683, 1747, 1685, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1, 1680, 1748, 1749, 1748, 1687, 1687, 1683, 1689, 1685, 1750, 1751, 1752, 1753, 1687, 1687, 1754, 1750, 1751, 1752, 1753, 1748, 1687, 1748, 1748, 1748, 1748, 1, 1755, 1756, 1757, 1756, 1691, 1691, 1758, 1759, 1691, 1691, 1760, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1761, 1760, 1760, 1760, 1763, 1764, 1760, 1760, 1760, 1762, 1762, 1760, 1760, 1762, 1760, 1, 1761, 1760, 1760, 1760, 1763, 1764, 1760, 1760, 1760, 1760, 1760, 1760, 1, 1761, 1760, 1760, 1760, 1763, 1764, 1760, 1760, 1760, 1756, 1756, 1760, 1760, 1756, 1760, 1, 1755, 1756, 1757, 1756, 1691, 1691, 1758, 1759, 1765, 1691, 1691, 1760, 1765, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1755, 1756, 1757, 1756, 1691, 1691, 1758, 1759, 1766, 1691, 1691, 1760, 1766, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1755, 1756, 1757, 1756, 1691, 1691, 1758, 1759, 1767, 1691, 1691, 1760, 1767, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1768, 1756, 1757, 1756, 1691, 1691, 1769, 1770, 1691, 1691, 1760, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1755, 1756, 1757, 1756, 1691, 1691, 1758, 1759, 1771, 1772, 1691, 1691, 1760, 1771, 1772, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1755, 1756, 1757, 1756, 1691, 1691, 1758, 1759, 1773, 1691, 1691, 1760, 1773, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1774, 1756, 1757, 1756, 1691, 1691, 1775, 1776, 1691, 1691, 1760, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1755, 1756, 1757, 1756, 1691, 1691, 1758, 1759, 1777, 1691, 1691, 1760, 1777, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1778, 1756, 1757, 1756, 1691, 1691, 1779, 1780, 1691, 1691, 1760, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1755, 1756, 1757, 1756, 1691, 1691, 1758, 1759, 1781, 1691, 1691, 1760, 1781, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1755, 1756, 1757, 1756, 1691, 1691, 1758, 1759, 1782, 1691, 1691, 1760, 1782, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1783, 1756, 1757, 1756, 1691, 1691, 1784, 1785, 1691, 1691, 1760, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1755, 1756, 1757, 1756, 1691, 1691, 1758, 1759, 1786, 1691, 1691, 1760, 1786, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1787, 1756, 1757, 1756, 1691, 1691, 1788, 1789, 1790, 1691, 1691, 1760, 1790, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1791, 1756, 1757, 1756, 1691, 1691, 1792, 1793, 1691, 1691, 1760, 1756, 1691, 1756, 1756, 1756, 1756, 1, 1672, 1673, 1674, 1671, 1, 1672, 1673, 1674, 1670, 1, 1672, 1673, 1674, 1794, 1, 1672, 1673, 1674, 1668, 1, 1672, 1795, 1673, 1674, 1794, 1668, 1, 1672, 1796, 1673, 1674, 1668, 1670, 1, 1672, 1797, 1673, 1674, 1670, 1671, 1, 1672, 1673, 1674, 1671, 1, 1798, 1799, 1800, 1801, 1656, 1656, 1, 1652, 1802, 1652, 1654, 1654, 1654, 1, 1803, 1804, 1805, 1806, 1656, 1656, 1, 1652, 1807, 1652, 1654, 1654, 1654, 1, 1808, 1809, 1810, 1811, 1656, 1656, 1, 1812, 1652, 1655, 1813, 1814, 1815, 1652, 1654, 1654, 1654, 1, 1812, 1652, 1655, 1813, 1814, 1815, 1652, 1811, 1654, 1654, 1, 1812, 1652, 1655, 1813, 1814, 1815, 1652, 1808, 1654, 1654, 1, 1812, 1652, 1655, 1816, 1813, 1814, 1815, 1652, 1811, 1808, 1654, 1654, 1, 1812, 1652, 1655, 1813, 1814, 1815, 1652, 1808, 1654, 1654, 1654, 1, 1652, 1807, 1652, 1806, 1654, 1654, 1, 1652, 1807, 1652, 1803, 1654, 1654, 1, 1652, 1807, 1817, 1652, 1806, 1803, 1654, 1654, 1, 1652, 1807, 1652, 1803, 1654, 1654, 1654, 1, 1652, 1802, 1652, 1801, 1654, 1654, 1, 1652, 1802, 1652, 1798, 1654, 1654, 1, 1652, 1802, 1818, 1652, 1801, 1798, 1654, 1654, 1, 1652, 1802, 1652, 1798, 1654, 1654, 1654, 1, 1652, 1653, 1652, 1819, 1654, 1654, 1, 1652, 1653, 1652, 1820, 1654, 1654, 1, 1652, 1653, 1821, 1652, 1819, 1820, 1654, 1654, 1, 1652, 1653, 1652, 1820, 1654, 1654, 1654, 1, 1823, 1822, 1822, 1822, 1, 1825, 1824, 1824, 1824, 1, 1825, 1826, 1826, 1826, 1, 1825, 1827, 1827, 1827, 1, 1825, 1, 1829, 1828, 1828, 1828, 1, 1831, 1830, 1830, 1830, 1, 1831, 1832, 1832, 1832, 1, 1831, 1833, 1833, 1833, 1, 1831, 1, 1835, 1834, 1834, 1834, 1, 1837, 1836, 1836, 1836, 1, 1837, 1838, 1838, 1838, 1, 1837, 1839, 1839, 1839, 1, 1837, 1, 1841, 1840, 1840, 1840, 1, 1843, 1842, 1842, 1842, 1, 1843, 1844, 1844, 1844, 1, 1843, 1845, 1845, 1845, 1, 1843, 1, 1847, 1846, 1846, 1846, 1, 1849, 1848, 1848, 1848, 1, 1849, 1850, 1850, 1850, 1, 1849, 1851, 1851, 1851, 1, 1849, 1, 1853, 1852, 1852, 1852, 1, 1855, 1854, 1854, 1854, 1, 1855, 1856, 1856, 1856, 1, 1855, 1857, 1857, 1857, 1, 1855, 1, 1858, 1859, 1860, 1862, 1861, 1863, 1863, 1, 1864, 1866, 1865, 1865, 1865, 1, 1867, 1868, 1869, 1870, 1, 1871, 1, 1872, 1873, 1874, 1875, 1, 1876, 1, 1877, 1878, 1879, 1880, 1, 1881, 1, 1882, 1883, 1884, 1885, 1, 1881, 1880, 1, 1881, 1877, 1, 1886, 1881, 1880, 1877, 1, 1881, 1877, 1, 1876, 1875, 1, 1876, 1872, 1, 1876, 1887, 1875, 1872, 1, 1876, 1872, 1, 1871, 1870, 1, 1871, 1867, 1, 1871, 1888, 1870, 1867, 1, 1871, 1867, 1, 1866, 1889, 1889, 1889, 1, 1866, 1890, 1890, 1890, 1, 1866, 1, 1877, 1891, 1891, 1891, 1, 1881, 1892, 1892, 1892, 1, 1881, 1893, 1893, 1893, 1, 1881, 1877, 1877, 1877, 1, 1864, 1866, 1894, 1865, 1865, 1, 1864, 1866, 1895, 1889, 1889, 1, 1864, 1866, 1890, 1890, 1890, 1, 1864, 1896, 1866, 1894, 1897, 1865, 1865, 1, 1864, 1866, 1895, 1889, 1889, 1889, 1, 1864, 1866, 1889, 1889, 1889, 1, 1864, 1866, 1897, 1865, 1865, 1, 1881, 1891, 1891, 1891, 1, 1866, 1865, 1865, 1865, 1, 1898, 1899, 1900, 1881, 1901, 1902, 1902, 1, 1864, 1904, 1881, 1903, 1903, 1903, 1, 1904, 1881, 1905, 1905, 1905, 1, 1904, 1881, 1906, 1906, 1906, 1, 1904, 1881, 1, 1891, 1891, 1891, 1, 1864, 1904, 1881, 1907, 1903, 1903, 1, 1864, 1904, 1881, 1908, 1905, 1905, 1, 1864, 1904, 1881, 1906, 1906, 1906, 1, 1864, 1909, 1904, 1881, 1907, 1910, 1903, 1903, 1, 1864, 1904, 1881, 1908, 1905, 1905, 1905, 1, 1864, 1904, 1881, 1905, 1905, 1905, 1, 1864, 1904, 1881, 1910, 1903, 1903, 1, 1904, 1881, 1903, 1903, 1903, 1, 1911, 1912, 1913, 1881, 1914, 1915, 1915, 1, 1864, 1917, 1881, 1916, 1916, 1916, 1, 1917, 1881, 1918, 1918, 1918, 1, 1917, 1881, 1919, 1919, 1919, 1, 1917, 1881, 1, 1898, 1899, 1900, 1901, 1902, 1902, 1, 1864, 1917, 1881, 1920, 1916, 1916, 1, 1864, 1917, 1881, 1921, 1918, 1918, 1, 1864, 1917, 1881, 1919, 1919, 1919, 1, 1864, 1922, 1917, 1881, 1920, 1923, 1916, 1916, 1, 1864, 1917, 1881, 1921, 1918, 1918, 1918, 1, 1864, 1917, 1881, 1918, 1918, 1918, 1, 1864, 1917, 1881, 1923, 1916, 1916, 1, 1917, 1881, 1916, 1916, 1916, 1, 1924, 1925, 1926, 1881, 1927, 1928, 1928, 1, 1864, 1930, 1881, 1929, 1929, 1929, 1, 1930, 1881, 1931, 1931, 1931, 1, 1930, 1881, 1932, 1932, 1932, 1, 1930, 1881, 1, 1911, 1912, 1913, 1914, 1915, 1915, 1, 1864, 1930, 1881, 1933, 1929, 1929, 1, 1864, 1930, 1881, 1934, 1931, 1931, 1, 1864, 1930, 1881, 1932, 1932, 1932, 1, 1864, 1935, 1930, 1881, 1933, 1936, 1929, 1929, 1, 1864, 1930, 1881, 1934, 1931, 1931, 1931, 1, 1864, 1930, 1881, 1931, 1931, 1931, 1, 1864, 1930, 1881, 1936, 1929, 1929, 1, 1930, 1881, 1929, 1929, 1929, 1, 1937, 1938, 1939, 1881, 1940, 1941, 1941, 1, 1864, 1943, 1881, 1942, 1942, 1942, 1, 1943, 1881, 1944, 1944, 1944, 1, 1943, 1881, 1945, 1945, 1945, 1, 1943, 1881, 1, 1924, 1925, 1926, 1927, 1928, 1928, 1, 1864, 1943, 1881, 1946, 1942, 1942, 1, 1864, 1943, 1881, 1947, 1944, 1944, 1, 1864, 1943, 1881, 1945, 1945, 1945, 1, 1864, 1948, 1943, 1881, 1946, 1949, 1942, 1942, 1, 1864, 1943, 1881, 1947, 1944, 1944, 1944, 1, 1864, 1943, 1881, 1944, 1944, 1944, 1, 1864, 1943, 1881, 1949, 1942, 1942, 1, 1943, 1881, 1942, 1942, 1942, 1, 1950, 1951, 1952, 1881, 1953, 1954, 1954, 1, 1864, 1956, 1881, 1955, 1955, 1955, 1, 1956, 1881, 1957, 1957, 1957, 1, 1956, 1881, 1958, 1958, 1958, 1, 1956, 1881, 1, 1937, 1938, 1939, 1940, 1941, 1941, 1, 1864, 1956, 1881, 1959, 1955, 1955, 1, 1864, 1956, 1881, 1960, 1957, 1957, 1, 1864, 1956, 1881, 1958, 1958, 1958, 1, 1864, 1961, 1956, 1881, 1959, 1962, 1955, 1955, 1, 1864, 1956, 1881, 1960, 1957, 1957, 1957, 1, 1864, 1956, 1881, 1957, 1957, 1957, 1, 1864, 1956, 1881, 1962, 1955, 1955, 1, 1956, 1881, 1955, 1955, 1955, 1, 1963, 1, 1964, 1965, 1966, 1881, 1967, 1968, 1968, 1, 1864, 1970, 1881, 1969, 1969, 1969, 1, 1970, 1881, 1971, 1971, 1971, 1, 1970, 1881, 1972, 1972, 1972, 1, 1970, 1881, 1, 1950, 1951, 1952, 1953, 1954, 1954, 1, 1864, 1970, 1881, 1973, 1969, 1969, 1, 1864, 1970, 1881, 1974, 1971, 1971, 1, 1864, 1970, 1881, 1972, 1972, 1972, 1, 1864, 1975, 1970, 1881, 1973, 1976, 1969, 1969, 1, 1864, 1970, 1881, 1974, 1971, 1971, 1971, 1, 1864, 1970, 1881, 1971, 1971, 1971, 1, 1864, 1970, 1881, 1976, 1969, 1969, 1, 1970, 1881, 1969, 1969, 1969, 1, 1640, 1641, 1977, 1978, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 1979, 1979, 1979, 1, 1640, 1641, 1977, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 1979, 1979, 1979, 1, 1640, 1641, 1977, 1980, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 1979, 1979, 1979, 1, 1640, 1641, 1642, 1640, 1640, 1640, 1643, 1640, 1640, 1640, 1979, 1981, 1981, 1, 1657, 1640, 1641, 1982, 1983, 1984, 1985, 1640, 1986, 1643, 1982, 1640, 1640, 1981, 1981, 1981, 1, 1640, 1641, 1982, 1642, 1640, 1640, 1640, 1643, 1982, 1640, 1640, 1981, 1981, 1981, 1, 1657, 1640, 1641, 1984, 1985, 1640, 1986, 1643, 1640, 1640, 1640, 1979, 1981, 1981, 1, 1642, 1645, 1987, 1989, 1642, 1643, 1642, 1642, 1642, 1988, 1990, 1642, 1642, 1, 1642, 1645, 1991, 1642, 1643, 1642, 1642, 1642, 1992, 1642, 1642, 1, 1642, 1645, 1993, 1642, 1643, 1642, 1642, 1642, 1994, 1642, 1642, 1, 1642, 1645, 1642, 1642, 1643, 1642, 1642, 1642, 1995, 1642, 1642, 1, 1672, 1642, 1645, 1673, 1642, 1674, 1643, 1642, 1642, 1642, 1642, 1642, 1642, 1, 1672, 1642, 1645, 1673, 1642, 1674, 1643, 1642, 1642, 1642, 1995, 1642, 1642, 1, 1672, 1642, 1645, 1673, 1642, 1674, 1643, 1642, 1642, 1642, 1994, 1642, 1642, 1, 1672, 1642, 1645, 1673, 1642, 1674, 1643, 1642, 1642, 1642, 1996, 1642, 1642, 1, 1672, 1642, 1645, 1673, 1642, 1674, 1643, 1642, 1642, 1642, 1992, 1642, 1642, 1, 1672, 1642, 1645, 1997, 1673, 1642, 1674, 1643, 1642, 1642, 1642, 1996, 1992, 1642, 1642, 1, 1672, 1642, 1645, 1998, 1673, 1642, 1674, 1643, 1642, 1642, 1642, 1992, 1994, 1642, 1642, 1, 1672, 1642, 1645, 1999, 1673, 1642, 1674, 1643, 1642, 1642, 1642, 1994, 1995, 1642, 1642, 1, 1672, 1642, 1645, 1673, 1642, 1674, 1643, 1642, 1642, 1642, 1995, 1642, 1642, 1642, 1, 2000, 1640, 2001, 1640, 2002, 1640, 1640, 1640, 1643, 2003, 2004, 2005, 1675, 1675, 2000, 2003, 2004, 2005, 2000, 2000, 2000, 2000, 1, 1680, 2006, 1640, 2007, 1640, 2008, 2009, 2010, 2011, 1643, 1681, 1681, 2006, 2006, 2006, 2006, 2006, 1, 2012, 2012, 2012, 1, 2006, 2006, 2006, 1, 1680, 2008, 2013, 1642, 1681, 1681, 1683, 2014, 1685, 1643, 1681, 1681, 2008, 2008, 2008, 2008, 2008, 1, 2015, 2015, 2015, 1, 2008, 2008, 2008, 1, 1680, 2016, 2017, 1642, 1687, 1687, 1683, 2018, 1685, 1643, 1687, 1687, 2016, 2016, 2016, 2016, 2016, 1, 1690, 2019, 2020, 1642, 1691, 1691, 1693, 1642, 1694, 1643, 1691, 1691, 2019, 2019, 2019, 2019, 2019, 1, 2021, 2021, 2021, 1, 2019, 2019, 2019, 1, 2016, 2017, 1642, 1687, 1687, 1642, 1643, 1687, 1687, 2016, 2016, 2016, 2016, 2016, 1, 1680, 2022, 1640, 2023, 1640, 2016, 2009, 2024, 2011, 1643, 1687, 1687, 2022, 2022, 2022, 2022, 2022, 1, 1690, 2025, 1640, 2026, 1640, 2019, 2027, 1640, 2028, 1643, 1691, 1691, 2025, 2025, 2025, 2025, 2025, 1, 2029, 2029, 2029, 1, 2025, 2025, 2025, 1, 2030, 2030, 2031, 1640, 2032, 1640, 1640, 1643, 1696, 1696, 2030, 2030, 1640, 2030, 2030, 2030, 1, 2030, 2030, 2031, 1640, 2032, 1640, 2033, 1643, 1696, 1696, 2030, 2030, 1640, 2030, 2030, 2030, 1, 2034, 2034, 2034, 1, 2030, 2030, 2030, 1, 2032, 2035, 1642, 1642, 1696, 1696, 2036, 1696, 1643, 1696, 1696, 2032, 2032, 2032, 2032, 2032, 1, 2037, 2037, 2037, 1, 2032, 2032, 2032, 1, 1700, 2036, 2038, 2039, 1642, 1698, 1698, 1642, 1698, 1643, 1698, 1698, 2036, 2036, 2036, 2036, 2036, 1, 2040, 2040, 2040, 1, 2036, 2036, 2036, 1, 2032, 2035, 1642, 1642, 1696, 1696, 1642, 1696, 1643, 1696, 1696, 2032, 2032, 2032, 2032, 2032, 1, 1700, 2033, 1640, 2041, 2042, 1640, 2036, 1640, 1640, 1643, 1698, 1698, 2033, 2033, 2033, 2033, 2033, 1, 2043, 2043, 2043, 1, 2033, 2033, 2033, 1, 2022, 1640, 2023, 1640, 2016, 1640, 1640, 1640, 1643, 1687, 1687, 2022, 2022, 2022, 2022, 2022, 1, 1680, 2006, 1640, 2007, 1640, 2008, 2009, 2010, 2011, 1643, 2044, 1681, 1681, 2006, 2044, 2006, 2006, 2006, 2006, 1, 1705, 2006, 1640, 2007, 1640, 2008, 2045, 2046, 2047, 1643, 1681, 1681, 2006, 2006, 2006, 2006, 2006, 1, 1680, 2048, 1640, 2049, 2048, 1640, 2022, 2016, 2009, 2024, 2011, 1643, 1687, 1687, 1711, 2048, 2022, 2048, 2048, 2048, 1, 1690, 2050, 1640, 2051, 2050, 1640, 2025, 2019, 2027, 1640, 2028, 1643, 1691, 1691, 1711, 2050, 2025, 2050, 2050, 2050, 1, 1206, 1711, 1711, 1711, 1715, 1716, 1711, 1711, 1711, 2052, 2052, 1711, 1711, 2052, 1711, 1, 1206, 1711, 1711, 1711, 1715, 1716, 1711, 1711, 1711, 2050, 2050, 1711, 1711, 2050, 1711, 1, 1680, 2006, 1640, 2007, 1640, 2008, 2009, 2010, 2011, 1643, 2053, 2054, 1681, 1681, 2006, 2053, 2054, 2006, 2006, 2006, 2006, 1, 1719, 2006, 1640, 2007, 1640, 2008, 2055, 2056, 2057, 1643, 1681, 1681, 2006, 2006, 2006, 2006, 2006, 1, 1680, 2006, 1640, 2007, 1640, 2008, 2009, 2010, 2011, 1643, 2058, 1681, 1681, 2006, 2058, 2006, 2006, 2006, 2006, 1, 1680, 2006, 1640, 2007, 1640, 2008, 2009, 2010, 2011, 1643, 2059, 1681, 1681, 2006, 2059, 2006, 2006, 2006, 2006, 1, 1680, 2006, 1640, 2007, 1640, 2008, 2009, 2060, 2011, 1643, 1681, 1681, 2006, 2006, 2006, 2006, 2006, 1, 1680, 2061, 1640, 2062, 2061, 1640, 2022, 2016, 2009, 2024, 2011, 1643, 1687, 1687, 1728, 2061, 2022, 2061, 2061, 2061, 1, 1729, 2063, 1640, 2064, 2063, 1640, 2025, 2019, 2065, 1640, 2066, 1643, 1691, 1691, 1734, 2063, 2025, 2063, 2063, 2063, 1, 1735, 1734, 1734, 1734, 1737, 1738, 1734, 1734, 1734, 2067, 2067, 1734, 1734, 2067, 1734, 1, 1735, 1734, 1734, 1734, 1737, 1738, 1734, 1734, 1734, 2063, 2063, 1734, 1734, 2063, 1734, 1, 1680, 2006, 1640, 2007, 1640, 2008, 2009, 2010, 2011, 1643, 2068, 1681, 1681, 2006, 2068, 2006, 2006, 2006, 2006, 1, 1680, 2006, 1640, 2007, 1640, 2008, 2009, 2010, 2011, 1643, 2069, 1681, 1681, 2006, 2069, 2006, 2006, 2006, 2006, 1, 1680, 2006, 1640, 2007, 1640, 2008, 2009, 2010, 2011, 1643, 2070, 1681, 1681, 2006, 2070, 2006, 2006, 2006, 2006, 1, 1680, 2006, 1640, 2007, 1640, 2008, 2009, 2010, 2011, 1643, 2071, 1681, 1681, 2006, 2071, 2006, 2006, 2006, 2006, 1, 1680, 2006, 1640, 2007, 1640, 2008, 2009, 2010, 2011, 1643, 2072, 1681, 1681, 2006, 2072, 2006, 2006, 2006, 2006, 1, 1680, 2006, 1640, 2007, 1640, 2008, 2009, 2010, 2011, 1643, 2073, 1681, 1681, 2006, 2073, 2006, 2006, 2006, 2006, 1, 1680, 2006, 1640, 2007, 1640, 2008, 2009, 2010, 2011, 1643, 2074, 1681, 1681, 2006, 2074, 2006, 2006, 2006, 2006, 1, 1680, 2006, 1640, 2007, 1640, 2008, 2009, 2010, 2011, 1643, 2075, 1681, 1681, 2006, 2075, 2006, 2006, 2006, 2006, 1, 1680, 2006, 1640, 2007, 1640, 2008, 2009, 2076, 2011, 1643, 1681, 1681, 2006, 2006, 2006, 2006, 2006, 1, 1680, 2077, 1640, 2078, 2077, 1640, 2022, 2016, 2009, 2024, 2011, 1643, 2079, 2080, 2081, 2082, 1687, 1687, 1754, 2079, 2080, 2081, 2082, 2077, 2022, 2077, 2077, 2077, 1, 1755, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2085, 1640, 2086, 1643, 1691, 1691, 1760, 2083, 2025, 2083, 2083, 2083, 1, 1761, 1760, 1760, 1760, 1763, 1764, 1760, 1760, 1760, 2087, 2087, 1760, 1760, 2087, 1760, 1, 1761, 1760, 1760, 1760, 1763, 1764, 1760, 1760, 1760, 2083, 2083, 1760, 1760, 2083, 1760, 1, 1755, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2085, 1640, 2086, 1643, 2088, 1691, 1691, 1760, 2088, 2083, 2025, 2083, 2083, 2083, 1, 1755, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2085, 1640, 2086, 1643, 2089, 1691, 1691, 1760, 2089, 2083, 2025, 2083, 2083, 2083, 1, 1755, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2085, 1640, 2086, 1643, 2090, 1691, 1691, 1760, 2090, 2083, 2025, 2083, 2083, 2083, 1, 1768, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2091, 1640, 2092, 1643, 1691, 1691, 1760, 2083, 2025, 2083, 2083, 2083, 1, 1755, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2085, 1640, 2086, 1643, 2093, 2094, 1691, 1691, 1760, 2093, 2094, 2083, 2025, 2083, 2083, 2083, 1, 1755, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2085, 1640, 2086, 1643, 2095, 1691, 1691, 1760, 2095, 2083, 2025, 2083, 2083, 2083, 1, 1774, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2096, 1640, 2097, 1643, 1691, 1691, 1760, 2083, 2025, 2083, 2083, 2083, 1, 1755, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2085, 1640, 2086, 1643, 2098, 1691, 1691, 1760, 2098, 2083, 2025, 2083, 2083, 2083, 1, 1778, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2099, 1640, 2100, 1643, 1691, 1691, 1760, 2083, 2025, 2083, 2083, 2083, 1, 1755, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2085, 1640, 2086, 1643, 2101, 1691, 1691, 1760, 2101, 2083, 2025, 2083, 2083, 2083, 1, 1755, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2085, 1640, 2086, 1643, 2102, 1691, 1691, 1760, 2102, 2083, 2025, 2083, 2083, 2083, 1, 1783, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2103, 1640, 2104, 1643, 1691, 1691, 1760, 2083, 2025, 2083, 2083, 2083, 1, 1755, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2085, 1640, 2086, 1643, 2105, 1691, 1691, 1760, 2105, 2083, 2025, 2083, 2083, 2083, 1, 1787, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2106, 1640, 2107, 1643, 2108, 1691, 1691, 1760, 2108, 2083, 2025, 2083, 2083, 2083, 1, 1791, 2083, 1640, 2084, 2083, 1640, 2025, 2019, 2109, 1640, 2110, 1643, 1691, 1691, 1760, 2083, 2025, 2083, 2083, 2083, 1, 1640, 1641, 2111, 2112, 2113, 1642, 1640, 1640, 1640, 1643, 1640, 1640, 1640, 2114, 1981, 1981, 1, 1640, 1641, 1977, 2115, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 1979, 1979, 1979, 1, 1640, 1641, 2116, 2117, 2118, 1642, 1640, 1640, 1640, 1643, 1640, 1640, 1640, 2119, 1981, 1981, 1, 1640, 1641, 1977, 2120, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 1979, 1979, 1979, 1, 1640, 1641, 2121, 2122, 2123, 1642, 1640, 1640, 1640, 1643, 1640, 1640, 1640, 2124, 1981, 1981, 1, 1812, 1640, 1641, 1977, 1980, 2125, 2126, 1640, 2127, 1643, 1977, 1640, 1640, 1979, 1979, 1979, 1, 1812, 1640, 1641, 1977, 1980, 2125, 2126, 1640, 2127, 1643, 1977, 1640, 1640, 2124, 1979, 1979, 1, 1812, 1640, 1641, 1977, 1980, 2125, 2126, 1640, 2127, 1643, 1977, 1640, 1640, 2121, 1979, 1979, 1, 1812, 1640, 1641, 1977, 1980, 2128, 2125, 2126, 1640, 2127, 1643, 1977, 1640, 1640, 2124, 2121, 1979, 1979, 1, 1812, 1640, 1641, 1977, 1980, 2125, 2126, 1640, 2127, 1643, 1977, 1640, 1640, 2121, 1979, 1979, 1979, 1, 1640, 1641, 1977, 2120, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 2119, 1979, 1979, 1, 1640, 1641, 1977, 2120, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 2116, 1979, 1979, 1, 1640, 1641, 1977, 2120, 2129, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 2119, 2116, 1979, 1979, 1, 1640, 1641, 1977, 2120, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 2116, 1979, 1979, 1979, 1, 1640, 1641, 1977, 2115, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 2114, 1979, 1979, 1, 1640, 1641, 1977, 2115, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 2111, 1979, 1979, 1, 1640, 1641, 1977, 2115, 2130, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 2114, 2111, 1979, 1979, 1, 1640, 1641, 1977, 2115, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 2111, 1979, 1979, 1979, 1, 1640, 1641, 1977, 1978, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 2131, 1979, 1979, 1, 1640, 1641, 1977, 1978, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 2132, 1979, 1979, 1, 1640, 1641, 1977, 1978, 2133, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 2131, 2132, 1979, 1979, 1, 1640, 1641, 1977, 1978, 1642, 1640, 1640, 1640, 1643, 1977, 1640, 1640, 2132, 1979, 1979, 1979, 1, 1204, 2134, 1204, 1204, 1204, 1204, 1, 1204, 1205, 2135, 2135, 1204, 1204, 1204, 1204, 1, 1204, 1205, 2136, 2136, 1204, 1204, 1204, 1204, 1, 1204, 2137, 1204, 1204, 1204, 1204, 1, 2138, 2138, 2140, 2139, 2139, 2138, 2138, 2138, 1, 2141, 2142, 2143, 2142, 2142, 2142, 2142, 2142, 1, 2144, 2145, 2145, 2144, 2144, 2144, 1, 1680, 2146, 2147, 2148, 2146, 2146, 2146, 1, 2149, 2150, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 1, 2154, 2154, 2154, 1, 2151, 2151, 2151, 1, 1680, 2146, 2147, 2148, 2155, 2155, 2146, 2146, 2146, 1, 1680, 2146, 2147, 2148, 2156, 2156, 2146, 2146, 2146, 1, 1680, 2146, 2147, 2148, 2157, 2157, 2146, 2146, 2146, 1, 1680, 2146, 2147, 2148, 2158, 2158, 2146, 2146, 2146, 1, 1680, 2159, 2147, 2148, 2146, 2146, 2146, 1, 1680, 2146, 2147, 2148, 2160, 2160, 2146, 2146, 2146, 1, 1680, 2146, 2147, 2148, 2161, 2161, 2146, 2146, 2146, 1, 1680, 2146, 2147, 2148, 2162, 2162, 2146, 2146, 2146, 1, 1680, 2146, 2147, 2148, 2163, 2163, 2146, 2146, 2146, 1, 1680, 2146, 2147, 2148, 2164, 2164, 2146, 2146, 2146, 1, 1680, 2146, 2147, 2148, 2165, 2165, 2146, 2146, 2146, 1, 1680, 2146, 2147, 2148, 2166, 2166, 2146, 2146, 2146, 1, 1680, 2146, 2147, 2167, 2146, 2146, 2146, 1, 2149, 2150, 2168, 2149, 2149, 2149, 2149, 2149, 2149, 2149, 2169, 2170, 2170, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 2171, 2151, 2171, 2172, 2151, 2151, 1, 2173, 2151, 2152, 2151, 2151, 2174, 2151, 2151, 2151, 2151, 2172, 2151, 2172, 2151, 2151, 1, 1690, 2151, 2152, 2175, 2176, 2151, 2151, 2153, 2151, 2151, 2175, 2151, 2151, 2177, 2177, 2177, 1, 1690, 2151, 2152, 2175, 2151, 2153, 2151, 2151, 2175, 2151, 2151, 2151, 2177, 2177, 2177, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 2151, 2151, 2151, 2177, 2178, 2178, 1, 2173, 2151, 2152, 2179, 2180, 2151, 2151, 2174, 2151, 2151, 2179, 2151, 2151, 2178, 2178, 2178, 1, 1690, 2151, 2152, 2179, 2151, 2153, 2151, 2151, 2179, 2151, 2151, 2151, 2178, 2178, 2178, 1, 2173, 2151, 2152, 2151, 2174, 2151, 2151, 2151, 2151, 2151, 2151, 2177, 2178, 2178, 1, 2142, 2142, 2181, 2181, 2142, 2142, 2142, 1, 2182, 2182, 2183, 1, 2141, 2143, 2183, 2183, 2183, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 2184, 2185, 1187, 1186, 2184, 2184, 2184, 1186, 2184, 1, 1206, 2186, 2187, 2186, 2188, 2189, 2190, 2191, 2192, 2193, 2188, 2192, 2194, 2188, 2188, 2188, 2188, 2188, 2188, 1, 1206, 2186, 2187, 2186, 2188, 2189, 2190, 2195, 2193, 2188, 2196, 2188, 2188, 2188, 2188, 2188, 2188, 1, 2189, 2197, 2198, 2189, 2199, 2189, 2189, 2189, 2189, 2189, 2189, 1, 2200, 2200, 2200, 1, 2189, 2189, 2189, 1, 2198, 2201, 2198, 2199, 2198, 2198, 2198, 2198, 2198, 2198, 2198, 1, 2202, 2202, 2202, 1, 2198, 2198, 2198, 1, 2203, 2204, 2205, 2194, 2206, 2207, 2207, 1, 2208, 2209, 2208, 2210, 2210, 2210, 1, 2208, 2208, 2210, 2210, 2210, 1, 2208, 2211, 2208, 2210, 2210, 2210, 1, 2210, 2207, 2207, 1, 1206, 2186, 2187, 2186, 2212, 2213, 2214, 2193, 2212, 2207, 2207, 2207, 1, 2212, 2212, 2207, 2207, 2207, 1, 1206, 2186, 2187, 2186, 2214, 2193, 2210, 2207, 2207, 1, 2215, 2217, 2216, 2218, 1, 2219, 2220, 1, 2221, 2222, 1, 2223, 1, 1206, 2186, 2187, 2186, 2193, 1, 1206, 2186, 2187, 2186, 2193, 2223, 1, 1206, 2186, 2187, 2186, 2193, 2222, 1, 1206, 2186, 2187, 2186, 2193, 2218, 1, 1206, 2186, 2187, 2186, 2193, 2220, 1, 1206, 2186, 2187, 2186, 2224, 2193, 2218, 2220, 1, 1206, 2186, 2187, 2186, 2225, 2193, 2220, 2222, 1, 1206, 2186, 2187, 2186, 2226, 2193, 2222, 2223, 1, 1206, 2186, 2187, 2186, 2193, 2223, 1, 2227, 2228, 2229, 2230, 2207, 2207, 1, 2208, 2231, 2208, 2210, 2210, 2210, 1, 2232, 2233, 2234, 2235, 2207, 2207, 1, 2208, 2236, 2208, 2210, 2210, 2210, 1, 2237, 2238, 2239, 2240, 2207, 2207, 1, 1206, 2186, 2187, 2186, 2208, 2211, 2214, 2193, 2208, 2210, 2210, 2210, 1, 1206, 2186, 2187, 2186, 2208, 2211, 2214, 2193, 2208, 2240, 2210, 2210, 1, 1206, 2186, 2187, 2186, 2208, 2211, 2214, 2193, 2208, 2237, 2210, 2210, 1, 1206, 2186, 2187, 2186, 2208, 2211, 2241, 2214, 2193, 2208, 2240, 2237, 2210, 2210, 1, 1206, 2186, 2187, 2186, 2208, 2211, 2214, 2193, 2208, 2237, 2210, 2210, 2210, 1, 2208, 2236, 2208, 2235, 2210, 2210, 1, 2208, 2236, 2208, 2232, 2210, 2210, 1, 2208, 2236, 2242, 2208, 2235, 2232, 2210, 2210, 1, 2208, 2236, 2208, 2232, 2210, 2210, 2210, 1, 2208, 2231, 2208, 2230, 2210, 2210, 1, 2208, 2231, 2208, 2227, 2210, 2210, 1, 2208, 2231, 2243, 2208, 2230, 2227, 2210, 2210, 1, 2208, 2231, 2208, 2227, 2210, 2210, 2210, 1, 2208, 2209, 2208, 2206, 2210, 2210, 1, 2208, 2209, 2208, 2203, 2210, 2210, 1, 2208, 2209, 2244, 2208, 2206, 2203, 2210, 2210, 1, 2208, 2209, 2208, 2203, 2210, 2210, 2210, 1, 2246, 2245, 2245, 2245, 1, 2248, 2247, 2247, 2247, 1, 2248, 2249, 2249, 2249, 1, 2248, 2250, 2250, 2250, 1, 2248, 1, 2252, 2251, 2251, 2251, 1, 2254, 2253, 2253, 2253, 1, 2254, 2255, 2255, 2255, 1, 2254, 2256, 2256, 2256, 1, 2254, 1, 2258, 2257, 2257, 2257, 1, 2260, 2259, 2259, 2259, 1, 2260, 2261, 2261, 2261, 1, 2260, 2262, 2262, 2262, 1, 2260, 1, 2264, 2263, 2263, 2263, 1, 2266, 2265, 2265, 2265, 1, 2266, 2267, 2267, 2267, 1, 2266, 2268, 2268, 2268, 1, 2266, 1, 2270, 2269, 2269, 2269, 1, 2272, 2271, 2271, 2271, 1, 2272, 2273, 2273, 2273, 1, 2272, 2274, 2274, 2274, 1, 2272, 1, 2276, 2275, 2275, 2275, 1, 2278, 2277, 2277, 2277, 1, 2278, 2279, 2279, 2279, 1, 2278, 2280, 2280, 2280, 1, 2278, 1, 2281, 2282, 2283, 2285, 2284, 2286, 2286, 1, 2287, 2289, 2288, 2288, 2288, 1, 2290, 2291, 2292, 2293, 1, 2294, 1, 2295, 2296, 2297, 2298, 1, 2299, 1, 2300, 2301, 2302, 2303, 1, 2304, 1, 1206, 2186, 2187, 2186, 2214, 2193, 1, 2304, 2303, 1, 2304, 2300, 1, 2305, 2304, 2303, 2300, 1, 2304, 2300, 1, 2299, 2298, 1, 2299, 2295, 1, 2299, 2306, 2298, 2295, 1, 2299, 2295, 1, 2294, 2293, 1, 2294, 2290, 1, 2294, 2307, 2293, 2290, 1, 2294, 2290, 1, 2289, 2308, 2308, 2308, 1, 2289, 2309, 2309, 2309, 1, 2289, 1, 2300, 2310, 2310, 2310, 1, 2304, 2311, 2311, 2311, 1, 2304, 2312, 2312, 2312, 1, 2304, 2300, 2300, 2300, 1, 2287, 2289, 2313, 2288, 2288, 1, 2287, 2289, 2314, 2308, 2308, 1, 2287, 2289, 2309, 2309, 2309, 1, 2287, 2315, 2289, 2313, 2316, 2288, 2288, 1, 2287, 2289, 2314, 2308, 2308, 2308, 1, 2287, 2289, 2308, 2308, 2308, 1, 2287, 2289, 2316, 2288, 2288, 1, 2304, 2310, 2310, 2310, 1, 2289, 2288, 2288, 2288, 1, 2317, 2318, 2319, 2304, 2320, 2321, 2321, 1, 2287, 2323, 2304, 2322, 2322, 2322, 1, 2323, 2304, 2324, 2324, 2324, 1, 2323, 2304, 2325, 2325, 2325, 1, 2323, 2304, 1, 2310, 2310, 2310, 1, 2287, 2323, 2304, 2326, 2322, 2322, 1, 2287, 2323, 2304, 2327, 2324, 2324, 1, 2287, 2323, 2304, 2325, 2325, 2325, 1, 2287, 2328, 2323, 2304, 2326, 2329, 2322, 2322, 1, 2287, 2323, 2304, 2327, 2324, 2324, 2324, 1, 2287, 2323, 2304, 2324, 2324, 2324, 1, 2287, 2323, 2304, 2329, 2322, 2322, 1, 2323, 2304, 2322, 2322, 2322, 1, 2330, 2331, 2332, 2304, 2333, 2334, 2334, 1, 2287, 2336, 2304, 2335, 2335, 2335, 1, 2336, 2304, 2337, 2337, 2337, 1, 2336, 2304, 2338, 2338, 2338, 1, 2336, 2304, 1, 2317, 2318, 2319, 2320, 2321, 2321, 1, 2287, 2336, 2304, 2339, 2335, 2335, 1, 2287, 2336, 2304, 2340, 2337, 2337, 1, 2287, 2336, 2304, 2338, 2338, 2338, 1, 2287, 2341, 2336, 2304, 2339, 2342, 2335, 2335, 1, 2287, 2336, 2304, 2340, 2337, 2337, 2337, 1, 2287, 2336, 2304, 2337, 2337, 2337, 1, 2287, 2336, 2304, 2342, 2335, 2335, 1, 2336, 2304, 2335, 2335, 2335, 1, 2343, 2344, 2345, 2304, 2346, 2347, 2347, 1, 2287, 2349, 2304, 2348, 2348, 2348, 1, 2349, 2304, 2350, 2350, 2350, 1, 2349, 2304, 2351, 2351, 2351, 1, 2349, 2304, 1, 2330, 2331, 2332, 2333, 2334, 2334, 1, 2287, 2349, 2304, 2352, 2348, 2348, 1, 2287, 2349, 2304, 2353, 2350, 2350, 1, 2287, 2349, 2304, 2351, 2351, 2351, 1, 2287, 2354, 2349, 2304, 2352, 2355, 2348, 2348, 1, 2287, 2349, 2304, 2353, 2350, 2350, 2350, 1, 2287, 2349, 2304, 2350, 2350, 2350, 1, 2287, 2349, 2304, 2355, 2348, 2348, 1, 2349, 2304, 2348, 2348, 2348, 1, 2356, 2357, 2358, 2304, 2359, 2360, 2360, 1, 2287, 2362, 2304, 2361, 2361, 2361, 1, 2362, 2304, 2363, 2363, 2363, 1, 2362, 2304, 2364, 2364, 2364, 1, 2362, 2304, 1, 2343, 2344, 2345, 2346, 2347, 2347, 1, 2287, 2362, 2304, 2365, 2361, 2361, 1, 2287, 2362, 2304, 2366, 2363, 2363, 1, 2287, 2362, 2304, 2364, 2364, 2364, 1, 2287, 2367, 2362, 2304, 2365, 2368, 2361, 2361, 1, 2287, 2362, 2304, 2366, 2363, 2363, 2363, 1, 2287, 2362, 2304, 2363, 2363, 2363, 1, 2287, 2362, 2304, 2368, 2361, 2361, 1, 2362, 2304, 2361, 2361, 2361, 1, 2369, 2370, 2371, 2304, 2372, 2373, 2373, 1, 2287, 2375, 2304, 2374, 2374, 2374, 1, 2375, 2304, 2376, 2376, 2376, 1, 2375, 2304, 2377, 2377, 2377, 1, 2375, 2304, 1, 2356, 2357, 2358, 2359, 2360, 2360, 1, 2287, 2375, 2304, 2378, 2374, 2374, 1, 2287, 2375, 2304, 2379, 2376, 2376, 1, 2287, 2375, 2304, 2377, 2377, 2377, 1, 2287, 2380, 2375, 2304, 2378, 2381, 2374, 2374, 1, 2287, 2375, 2304, 2379, 2376, 2376, 2376, 1, 2287, 2375, 2304, 2376, 2376, 2376, 1, 2287, 2375, 2304, 2381, 2374, 2374, 1, 2375, 2304, 2374, 2374, 2374, 1, 2382, 1, 2383, 2384, 2385, 2304, 2386, 2387, 2387, 1, 2287, 2389, 2304, 2388, 2388, 2388, 1, 2389, 2304, 2390, 2390, 2390, 1, 2389, 2304, 2391, 2391, 2391, 1, 2389, 2304, 1, 2369, 2370, 2371, 2372, 2373, 2373, 1, 2287, 2389, 2304, 2392, 2388, 2388, 1, 2287, 2389, 2304, 2393, 2390, 2390, 1, 2287, 2389, 2304, 2391, 2391, 2391, 1, 2287, 2394, 2389, 2304, 2392, 2395, 2388, 2388, 1, 2287, 2389, 2304, 2393, 2390, 2390, 2390, 1, 2287, 2389, 2304, 2390, 2390, 2390, 1, 2287, 2389, 2304, 2395, 2388, 2388, 1, 2389, 2304, 2388, 2388, 2388, 1, 2396, 2396, 2396, 1, 2188, 2188, 2188, 1, 1206, 2186, 2187, 2186, 2195, 2397, 2192, 2192, 2193, 2195, 2196, 2195, 2195, 2195, 2195, 2195, 2195, 1, 2398, 2398, 2398, 1, 2195, 2195, 2195, 1, 1206, 2186, 2187, 2186, 2192, 2399, 2193, 2192, 2192, 2192, 2192, 2192, 2192, 2192, 1, 2400, 2400, 2400, 1, 2192, 2192, 2192, 1, 1206, 2186, 2187, 2186, 2192, 2399, 2193, 2192, 2194, 2192, 2192, 2192, 2192, 2192, 2192, 1, 1206, 2186, 2187, 2186, 2188, 2189, 2190, 2401, 2195, 2193, 2188, 2196, 2188, 2188, 2188, 2188, 2188, 2188, 1, 1206, 2186, 2187, 2186, 2402, 2403, 2404, 2195, 2193, 2402, 2196, 2405, 2402, 2402, 2402, 2402, 2402, 2402, 1, 1206, 2186, 2187, 2186, 2402, 2403, 2404, 2406, 2193, 2402, 2407, 2402, 2402, 2402, 2402, 2402, 2402, 1, 2403, 2408, 2409, 2403, 2410, 2403, 2403, 2403, 2403, 2403, 2403, 1, 2411, 2411, 2411, 1, 2403, 2403, 2403, 1, 2409, 2412, 2409, 2410, 2409, 2409, 2409, 2409, 2409, 2409, 2409, 1, 2413, 2413, 2413, 1, 2409, 2409, 2409, 1, 2414, 2415, 2416, 2405, 2417, 2418, 2418, 1, 2419, 2420, 2419, 2421, 2421, 2421, 1, 2419, 2419, 2421, 2421, 2421, 1, 2419, 2422, 2419, 2421, 2421, 2421, 1, 2421, 2418, 2418, 1, 1206, 2186, 2187, 2186, 2423, 2424, 2192, 2425, 2193, 2423, 2418, 2418, 2418, 1, 2423, 2423, 2418, 2418, 2418, 1, 1206, 2186, 2187, 2186, 2192, 2425, 2193, 2421, 2418, 2418, 1, 2426, 2428, 2427, 2429, 1, 2430, 2431, 1, 2432, 2433, 1, 2434, 1, 1206, 2186, 2187, 2186, 2192, 2193, 1, 1206, 2186, 2187, 2186, 2192, 2193, 2434, 1, 1206, 2186, 2187, 2186, 2192, 2193, 2433, 1, 1206, 2186, 2187, 2186, 2192, 2193, 2429, 1, 1206, 2186, 2187, 2186, 2192, 2193, 2431, 1, 1206, 2186, 2187, 2186, 2192, 2435, 2193, 2429, 2431, 1, 1206, 2186, 2187, 2186, 2192, 2436, 2193, 2431, 2433, 1, 1206, 2186, 2187, 2186, 2192, 2437, 2193, 2433, 2434, 1, 1206, 2186, 2187, 2186, 2192, 2193, 2434, 1, 2438, 2439, 2440, 2441, 2418, 2418, 1, 2419, 2442, 2419, 2421, 2421, 2421, 1, 2443, 2444, 2445, 2446, 2418, 2418, 1, 2419, 2447, 2419, 2421, 2421, 2421, 1, 2448, 2449, 2450, 2451, 2418, 2418, 1, 1206, 2186, 2187, 2186, 2419, 2422, 2192, 2425, 2193, 2419, 2421, 2421, 2421, 1, 1206, 2186, 2187, 2186, 2419, 2422, 2192, 2425, 2193, 2419, 2451, 2421, 2421, 1, 1206, 2186, 2187, 2186, 2419, 2422, 2192, 2425, 2193, 2419, 2448, 2421, 2421, 1, 1206, 2186, 2187, 2186, 2419, 2422, 2192, 2452, 2425, 2193, 2419, 2451, 2448, 2421, 2421, 1, 1206, 2186, 2187, 2186, 2419, 2422, 2192, 2425, 2193, 2419, 2448, 2421, 2421, 2421, 1, 2419, 2447, 2419, 2446, 2421, 2421, 1, 2419, 2447, 2419, 2443, 2421, 2421, 1, 2419, 2447, 2453, 2419, 2446, 2443, 2421, 2421, 1, 2419, 2447, 2419, 2443, 2421, 2421, 2421, 1, 2419, 2442, 2419, 2441, 2421, 2421, 1, 2419, 2442, 2419, 2438, 2421, 2421, 1, 2419, 2442, 2454, 2419, 2441, 2438, 2421, 2421, 1, 2419, 2442, 2419, 2438, 2421, 2421, 2421, 1, 2419, 2420, 2419, 2417, 2421, 2421, 1, 2419, 2420, 2419, 2414, 2421, 2421, 1, 2419, 2420, 2455, 2419, 2417, 2414, 2421, 2421, 1, 2419, 2420, 2419, 2414, 2421, 2421, 2421, 1, 2457, 2456, 2456, 2456, 1, 2459, 2458, 2458, 2458, 1, 2459, 2460, 2460, 2460, 1, 2459, 2461, 2461, 2461, 1, 2459, 1, 2463, 2462, 2462, 2462, 1, 2465, 2464, 2464, 2464, 1, 2465, 2466, 2466, 2466, 1, 2465, 2467, 2467, 2467, 1, 2465, 1, 2469, 2468, 2468, 2468, 1, 2471, 2470, 2470, 2470, 1, 2471, 2472, 2472, 2472, 1, 2471, 2473, 2473, 2473, 1, 2471, 1, 2475, 2474, 2474, 2474, 1, 2477, 2476, 2476, 2476, 1, 2477, 2478, 2478, 2478, 1, 2477, 2479, 2479, 2479, 1, 2477, 1, 2481, 2480, 2480, 2480, 1, 2483, 2482, 2482, 2482, 1, 2483, 2484, 2484, 2484, 1, 2483, 2485, 2485, 2485, 1, 2483, 1, 2487, 2486, 2486, 2486, 1, 2489, 2488, 2488, 2488, 1, 2489, 2490, 2490, 2490, 1, 2489, 2491, 2491, 2491, 1, 2489, 1, 2492, 2493, 2494, 2496, 2495, 2497, 2497, 1, 2498, 2500, 2499, 2499, 2499, 1, 2501, 2502, 2503, 2504, 1, 2505, 1, 2506, 2507, 2508, 2509, 1, 2510, 1, 2511, 2512, 2513, 2514, 1, 2515, 1, 1206, 2186, 2187, 2186, 2192, 2425, 2193, 1, 2515, 2514, 1, 2515, 2511, 1, 2516, 2515, 2514, 2511, 1, 2515, 2511, 1, 2510, 2509, 1, 2510, 2506, 1, 2510, 2517, 2509, 2506, 1, 2510, 2506, 1, 2505, 2504, 1, 2505, 2501, 1, 2505, 2518, 2504, 2501, 1, 2505, 2501, 1, 2500, 2519, 2519, 2519, 1, 2500, 2520, 2520, 2520, 1, 2500, 1, 2511, 2521, 2521, 2521, 1, 2515, 2522, 2522, 2522, 1, 2515, 2523, 2523, 2523, 1, 2515, 2511, 2511, 2511, 1, 2498, 2500, 2524, 2499, 2499, 1, 2498, 2500, 2525, 2519, 2519, 1, 2498, 2500, 2520, 2520, 2520, 1, 2498, 2526, 2500, 2524, 2527, 2499, 2499, 1, 2498, 2500, 2525, 2519, 2519, 2519, 1, 2498, 2500, 2519, 2519, 2519, 1, 2498, 2500, 2527, 2499, 2499, 1, 2515, 2521, 2521, 2521, 1, 2500, 2499, 2499, 2499, 1, 2528, 2529, 2530, 2515, 2531, 2532, 2532, 1, 2498, 2534, 2515, 2533, 2533, 2533, 1, 2534, 2515, 2535, 2535, 2535, 1, 2534, 2515, 2536, 2536, 2536, 1, 2534, 2515, 1, 2521, 2521, 2521, 1, 2498, 2534, 2515, 2537, 2533, 2533, 1, 2498, 2534, 2515, 2538, 2535, 2535, 1, 2498, 2534, 2515, 2536, 2536, 2536, 1, 2498, 2539, 2534, 2515, 2537, 2540, 2533, 2533, 1, 2498, 2534, 2515, 2538, 2535, 2535, 2535, 1, 2498, 2534, 2515, 2535, 2535, 2535, 1, 2498, 2534, 2515, 2540, 2533, 2533, 1, 2534, 2515, 2533, 2533, 2533, 1, 2541, 2542, 2543, 2515, 2544, 2545, 2545, 1, 2498, 2547, 2515, 2546, 2546, 2546, 1, 2547, 2515, 2548, 2548, 2548, 1, 2547, 2515, 2549, 2549, 2549, 1, 2547, 2515, 1, 2528, 2529, 2530, 2531, 2532, 2532, 1, 2498, 2547, 2515, 2550, 2546, 2546, 1, 2498, 2547, 2515, 2551, 2548, 2548, 1, 2498, 2547, 2515, 2549, 2549, 2549, 1, 2498, 2552, 2547, 2515, 2550, 2553, 2546, 2546, 1, 2498, 2547, 2515, 2551, 2548, 2548, 2548, 1, 2498, 2547, 2515, 2548, 2548, 2548, 1, 2498, 2547, 2515, 2553, 2546, 2546, 1, 2547, 2515, 2546, 2546, 2546, 1, 2554, 2555, 2556, 2515, 2557, 2558, 2558, 1, 2498, 2560, 2515, 2559, 2559, 2559, 1, 2560, 2515, 2561, 2561, 2561, 1, 2560, 2515, 2562, 2562, 2562, 1, 2560, 2515, 1, 2541, 2542, 2543, 2544, 2545, 2545, 1, 2498, 2560, 2515, 2563, 2559, 2559, 1, 2498, 2560, 2515, 2564, 2561, 2561, 1, 2498, 2560, 2515, 2562, 2562, 2562, 1, 2498, 2565, 2560, 2515, 2563, 2566, 2559, 2559, 1, 2498, 2560, 2515, 2564, 2561, 2561, 2561, 1, 2498, 2560, 2515, 2561, 2561, 2561, 1, 2498, 2560, 2515, 2566, 2559, 2559, 1, 2560, 2515, 2559, 2559, 2559, 1, 2567, 2568, 2569, 2515, 2570, 2571, 2571, 1, 2498, 2573, 2515, 2572, 2572, 2572, 1, 2573, 2515, 2574, 2574, 2574, 1, 2573, 2515, 2575, 2575, 2575, 1, 2573, 2515, 1, 2554, 2555, 2556, 2557, 2558, 2558, 1, 2498, 2573, 2515, 2576, 2572, 2572, 1, 2498, 2573, 2515, 2577, 2574, 2574, 1, 2498, 2573, 2515, 2575, 2575, 2575, 1, 2498, 2578, 2573, 2515, 2576, 2579, 2572, 2572, 1, 2498, 2573, 2515, 2577, 2574, 2574, 2574, 1, 2498, 2573, 2515, 2574, 2574, 2574, 1, 2498, 2573, 2515, 2579, 2572, 2572, 1, 2573, 2515, 2572, 2572, 2572, 1, 2580, 2581, 2582, 2515, 2583, 2584, 2584, 1, 2498, 2586, 2515, 2585, 2585, 2585, 1, 2586, 2515, 2587, 2587, 2587, 1, 2586, 2515, 2588, 2588, 2588, 1, 2586, 2515, 1, 2567, 2568, 2569, 2570, 2571, 2571, 1, 2498, 2586, 2515, 2589, 2585, 2585, 1, 2498, 2586, 2515, 2590, 2587, 2587, 1, 2498, 2586, 2515, 2588, 2588, 2588, 1, 2498, 2591, 2586, 2515, 2589, 2592, 2585, 2585, 1, 2498, 2586, 2515, 2590, 2587, 2587, 2587, 1, 2498, 2586, 2515, 2587, 2587, 2587, 1, 2498, 2586, 2515, 2592, 2585, 2585, 1, 2586, 2515, 2585, 2585, 2585, 1, 2593, 1, 2594, 2595, 2596, 2515, 2597, 2598, 2598, 1, 2498, 2600, 2515, 2599, 2599, 2599, 1, 2600, 2515, 2601, 2601, 2601, 1, 2600, 2515, 2602, 2602, 2602, 1, 2600, 2515, 1, 2580, 2581, 2582, 2583, 2584, 2584, 1, 2498, 2600, 2515, 2603, 2599, 2599, 1, 2498, 2600, 2515, 2604, 2601, 2601, 1, 2498, 2600, 2515, 2602, 2602, 2602, 1, 2498, 2605, 2600, 2515, 2603, 2606, 2599, 2599, 1, 2498, 2600, 2515, 2604, 2601, 2601, 2601, 1, 2498, 2600, 2515, 2601, 2601, 2601, 1, 2498, 2600, 2515, 2606, 2599, 2599, 1, 2600, 2515, 2599, 2599, 2599, 1, 2607, 2607, 2607, 1, 2402, 2402, 2402, 1, 1206, 2186, 2187, 2186, 2406, 2608, 2192, 2192, 2193, 2406, 2407, 2406, 2406, 2406, 2406, 2406, 2406, 1, 2609, 2609, 2609, 1, 2406, 2406, 2406, 1, 1206, 2186, 2187, 2186, 2192, 2399, 2193, 2192, 2405, 2192, 2192, 2192, 2192, 2192, 2192, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 2184, 2185, 1187, 2610, 2610, 1186, 2184, 2184, 2184, 1186, 2184, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 2184, 2185, 1187, 2611, 2611, 1186, 2184, 2184, 2184, 1186, 2184, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 2184, 2612, 1187, 2613, 2613, 1186, 2184, 2184, 2184, 1186, 2184, 1, 2614, 2615, 2616, 2617, 2618, 2614, 2621, 2614, 2614, 2614, 2614, 2619, 2620, 2620, 1, 2622, 2623, 2624, 2622, 2625, 2622, 2622, 2622, 2622, 2622, 2622, 1, 2626, 2626, 2626, 1, 2622, 2622, 2622, 1, 2624, 2627, 2624, 2625, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 1, 2628, 2628, 2628, 1, 2624, 2624, 2624, 1, 2629, 2630, 2631, 2621, 2632, 2633, 2633, 1, 2634, 2635, 2634, 2636, 2636, 2636, 1, 2634, 2634, 2636, 2636, 2636, 1, 2634, 2637, 2634, 2636, 2636, 2636, 1, 2636, 2638, 2638, 1, 1657, 2639, 2640, 2639, 2641, 2642, 2643, 2644, 2641, 2638, 2638, 2638, 1, 2641, 2641, 2638, 2638, 2638, 1, 1657, 2639, 2640, 2639, 2643, 2644, 2636, 2638, 2638, 1, 2645, 2647, 2646, 2648, 1, 2649, 2650, 1, 2651, 2652, 1, 2653, 1, 1672, 2654, 2655, 2654, 2656, 1, 1672, 2654, 2655, 2654, 2656, 2653, 1, 1672, 2654, 2655, 2654, 2656, 2652, 1, 1672, 2654, 2655, 2654, 2656, 2657, 1, 1672, 2654, 2655, 2654, 2656, 2650, 1, 1672, 2654, 2655, 2654, 2658, 2656, 2657, 2650, 1, 1672, 2654, 2655, 2654, 2659, 2656, 2650, 2652, 1, 1672, 2654, 2655, 2654, 2660, 2656, 2652, 2653, 1, 1672, 2654, 2655, 2654, 2656, 2653, 1, 2661, 2662, 2663, 2664, 2638, 2638, 1, 2634, 2665, 2634, 2636, 2636, 2636, 1, 2666, 2667, 2668, 2669, 2638, 2638, 1, 2634, 2670, 2634, 2636, 2636, 2636, 1, 2671, 2672, 2673, 2674, 2638, 2638, 1, 1812, 2675, 2676, 2675, 2634, 2637, 2677, 2678, 2634, 2636, 2636, 2636, 1, 1812, 2675, 2676, 2675, 2634, 2637, 2677, 2678, 2634, 2674, 2636, 2636, 1, 1812, 2675, 2676, 2675, 2634, 2637, 2677, 2678, 2634, 2671, 2636, 2636, 1, 1812, 2675, 2676, 2675, 2634, 2637, 2679, 2677, 2678, 2634, 2674, 2671, 2636, 2636, 1, 1812, 2675, 2676, 2675, 2634, 2637, 2677, 2678, 2634, 2671, 2636, 2636, 2636, 1, 2634, 2670, 2634, 2669, 2636, 2636, 1, 2634, 2670, 2634, 2666, 2636, 2636, 1, 2634, 2670, 2680, 2634, 2669, 2666, 2636, 2636, 1, 2634, 2670, 2634, 2666, 2636, 2636, 2636, 1, 2634, 2665, 2634, 2664, 2636, 2636, 1, 2634, 2665, 2634, 2661, 2636, 2636, 1, 2634, 2665, 2681, 2634, 2664, 2661, 2636, 2636, 1, 2634, 2665, 2634, 2661, 2636, 2636, 2636, 1, 2634, 2635, 2634, 2682, 2636, 2636, 1, 2634, 2635, 2634, 2683, 2636, 2636, 1, 2634, 2635, 2684, 2634, 2682, 2683, 2636, 2636, 1, 2634, 2635, 2634, 2683, 2636, 2636, 2636, 1, 2686, 2685, 2685, 2685, 1, 2688, 2687, 2687, 2687, 1, 2688, 2689, 2689, 2689, 1, 2688, 2690, 2690, 2690, 1, 2688, 1, 2692, 2691, 2691, 2691, 1, 2694, 2693, 2693, 2693, 1, 2694, 2695, 2695, 2695, 1, 2694, 2696, 2696, 2696, 1, 2694, 1, 2698, 2697, 2697, 2697, 1, 2700, 2699, 2699, 2699, 1, 2700, 2701, 2701, 2701, 1, 2700, 2702, 2702, 2702, 1, 2700, 1, 2704, 2703, 2703, 2703, 1, 2706, 2705, 2705, 2705, 1, 2706, 2707, 2707, 2707, 1, 2706, 2708, 2708, 2708, 1, 2706, 1, 2710, 2709, 2709, 2709, 1, 2712, 2711, 2711, 2711, 1, 2712, 2713, 2713, 2713, 1, 2712, 2714, 2714, 2714, 1, 2712, 1, 2716, 2715, 2715, 2715, 1, 2718, 2717, 2717, 2717, 1, 2718, 2719, 2719, 2719, 1, 2718, 2720, 2720, 2720, 1, 2718, 1, 2721, 2722, 2723, 2725, 2724, 2726, 2726, 1, 2727, 2729, 2728, 2728, 2728, 1, 2730, 2731, 2732, 2733, 1, 2734, 1, 2735, 2736, 2737, 2738, 1, 2739, 1, 2740, 2741, 2742, 2743, 1, 2744, 1, 1882, 2745, 2746, 2745, 2747, 2748, 1, 2744, 2743, 1, 2744, 2740, 1, 2749, 2744, 2743, 2740, 1, 2744, 2740, 1, 2739, 2738, 1, 2739, 2735, 1, 2739, 2750, 2738, 2735, 1, 2739, 2735, 1, 2734, 2733, 1, 2734, 2730, 1, 2734, 2751, 2733, 2730, 1, 2734, 2730, 1, 2729, 2752, 2752, 2752, 1, 2729, 2753, 2753, 2753, 1, 2729, 1, 2740, 2754, 2754, 2754, 1, 2744, 2755, 2755, 2755, 1, 2744, 2756, 2756, 2756, 1, 2744, 2740, 2740, 2740, 1, 2727, 2729, 2757, 2728, 2728, 1, 2727, 2729, 2758, 2752, 2752, 1, 2727, 2729, 2753, 2753, 2753, 1, 2727, 2759, 2729, 2757, 2760, 2728, 2728, 1, 2727, 2729, 2758, 2752, 2752, 2752, 1, 2727, 2729, 2752, 2752, 2752, 1, 2727, 2729, 2760, 2728, 2728, 1, 2744, 2754, 2754, 2754, 1, 2729, 2728, 2728, 2728, 1, 2761, 2762, 2763, 2744, 2764, 2765, 2765, 1, 2727, 2767, 2744, 2766, 2766, 2766, 1, 2767, 2744, 2768, 2768, 2768, 1, 2767, 2744, 2769, 2769, 2769, 1, 2767, 2744, 1, 2754, 2754, 2754, 1, 2727, 2767, 2744, 2770, 2766, 2766, 1, 2727, 2767, 2744, 2771, 2768, 2768, 1, 2727, 2767, 2744, 2769, 2769, 2769, 1, 2727, 2772, 2767, 2744, 2770, 2773, 2766, 2766, 1, 2727, 2767, 2744, 2771, 2768, 2768, 2768, 1, 2727, 2767, 2744, 2768, 2768, 2768, 1, 2727, 2767, 2744, 2773, 2766, 2766, 1, 2767, 2744, 2766, 2766, 2766, 1, 2774, 2775, 2776, 2744, 2777, 2778, 2778, 1, 2727, 2780, 2744, 2779, 2779, 2779, 1, 2780, 2744, 2781, 2781, 2781, 1, 2780, 2744, 2782, 2782, 2782, 1, 2780, 2744, 1, 2761, 2762, 2763, 2764, 2765, 2765, 1, 2727, 2780, 2744, 2783, 2779, 2779, 1, 2727, 2780, 2744, 2784, 2781, 2781, 1, 2727, 2780, 2744, 2782, 2782, 2782, 1, 2727, 2785, 2780, 2744, 2783, 2786, 2779, 2779, 1, 2727, 2780, 2744, 2784, 2781, 2781, 2781, 1, 2727, 2780, 2744, 2781, 2781, 2781, 1, 2727, 2780, 2744, 2786, 2779, 2779, 1, 2780, 2744, 2779, 2779, 2779, 1, 2787, 2788, 2789, 2744, 2790, 2791, 2791, 1, 2727, 2793, 2744, 2792, 2792, 2792, 1, 2793, 2744, 2794, 2794, 2794, 1, 2793, 2744, 2795, 2795, 2795, 1, 2793, 2744, 1, 2774, 2775, 2776, 2777, 2778, 2778, 1, 2727, 2793, 2744, 2796, 2792, 2792, 1, 2727, 2793, 2744, 2797, 2794, 2794, 1, 2727, 2793, 2744, 2795, 2795, 2795, 1, 2727, 2798, 2793, 2744, 2796, 2799, 2792, 2792, 1, 2727, 2793, 2744, 2797, 2794, 2794, 2794, 1, 2727, 2793, 2744, 2794, 2794, 2794, 1, 2727, 2793, 2744, 2799, 2792, 2792, 1, 2793, 2744, 2792, 2792, 2792, 1, 2800, 2801, 2802, 2744, 2803, 2804, 2804, 1, 2727, 2806, 2744, 2805, 2805, 2805, 1, 2806, 2744, 2807, 2807, 2807, 1, 2806, 2744, 2808, 2808, 2808, 1, 2806, 2744, 1, 2787, 2788, 2789, 2790, 2791, 2791, 1, 2727, 2806, 2744, 2809, 2805, 2805, 1, 2727, 2806, 2744, 2810, 2807, 2807, 1, 2727, 2806, 2744, 2808, 2808, 2808, 1, 2727, 2811, 2806, 2744, 2809, 2812, 2805, 2805, 1, 2727, 2806, 2744, 2810, 2807, 2807, 2807, 1, 2727, 2806, 2744, 2807, 2807, 2807, 1, 2727, 2806, 2744, 2812, 2805, 2805, 1, 2806, 2744, 2805, 2805, 2805, 1, 2813, 2814, 2815, 2744, 2816, 2817, 2817, 1, 2727, 2819, 2744, 2818, 2818, 2818, 1, 2819, 2744, 2820, 2820, 2820, 1, 2819, 2744, 2821, 2821, 2821, 1, 2819, 2744, 1, 2800, 2801, 2802, 2803, 2804, 2804, 1, 2727, 2819, 2744, 2822, 2818, 2818, 1, 2727, 2819, 2744, 2823, 2820, 2820, 1, 2727, 2819, 2744, 2821, 2821, 2821, 1, 2727, 2824, 2819, 2744, 2822, 2825, 2818, 2818, 1, 2727, 2819, 2744, 2823, 2820, 2820, 2820, 1, 2727, 2819, 2744, 2820, 2820, 2820, 1, 2727, 2819, 2744, 2825, 2818, 2818, 1, 2819, 2744, 2818, 2818, 2818, 1, 2826, 1, 2827, 2828, 2829, 2744, 2830, 2831, 2831, 1, 2727, 2833, 2744, 2832, 2832, 2832, 1, 2833, 2744, 2834, 2834, 2834, 1, 2833, 2744, 2835, 2835, 2835, 1, 2833, 2744, 1, 2813, 2814, 2815, 2816, 2817, 2817, 1, 2727, 2833, 2744, 2836, 2832, 2832, 1, 2727, 2833, 2744, 2837, 2834, 2834, 1, 2727, 2833, 2744, 2835, 2835, 2835, 1, 2727, 2838, 2833, 2744, 2836, 2839, 2832, 2832, 1, 2727, 2833, 2744, 2837, 2834, 2834, 2834, 1, 2727, 2833, 2744, 2834, 2834, 2834, 1, 2727, 2833, 2744, 2839, 2832, 2832, 1, 2833, 2744, 2832, 2832, 2832, 1, 2622, 2623, 2840, 2841, 2622, 2624, 2622, 2625, 2840, 2622, 2622, 2842, 2842, 2842, 1, 2622, 2623, 2840, 2624, 2622, 2625, 2840, 2622, 2622, 2622, 2842, 2842, 2842, 1, 2622, 2623, 2840, 2843, 2622, 2624, 2622, 2625, 2840, 2622, 2622, 2842, 2842, 2842, 1, 2622, 2623, 2624, 2622, 2625, 2622, 2622, 2622, 2622, 2842, 2844, 2844, 1, 1657, 2639, 2640, 2639, 2622, 2623, 2845, 2846, 2622, 2847, 2644, 2622, 2625, 2845, 2622, 2622, 2844, 2844, 2844, 1, 2622, 2623, 2845, 2624, 2622, 2625, 2845, 2622, 2622, 2622, 2844, 2844, 2844, 1, 1657, 2639, 2640, 2639, 2622, 2623, 2847, 2644, 2622, 2625, 2622, 2622, 2622, 2622, 2842, 2844, 2844, 1, 2624, 2627, 2848, 2850, 2624, 2625, 2624, 2624, 2624, 2624, 2849, 2851, 2624, 2624, 1, 2624, 2627, 2852, 2624, 2625, 2624, 2624, 2624, 2624, 2853, 2624, 2624, 1, 2624, 2627, 2854, 2624, 2625, 2624, 2624, 2624, 2624, 2855, 2624, 2624, 1, 2624, 2627, 2624, 2624, 2625, 2624, 2624, 2624, 2624, 2856, 2624, 2624, 1, 1672, 2654, 2655, 2654, 2624, 2627, 2656, 2624, 2625, 2624, 2624, 2624, 2624, 2624, 2624, 2624, 1, 1672, 2654, 2655, 2654, 2624, 2627, 2656, 2624, 2625, 2624, 2624, 2624, 2624, 2856, 2624, 2624, 1, 1672, 2654, 2655, 2654, 2624, 2627, 2656, 2624, 2625, 2624, 2624, 2624, 2624, 2855, 2624, 2624, 1, 1672, 2654, 2655, 2654, 2624, 2627, 2656, 2624, 2625, 2624, 2624, 2624, 2624, 2857, 2624, 2624, 1, 1672, 2654, 2655, 2654, 2624, 2627, 2656, 2624, 2625, 2624, 2624, 2624, 2624, 2853, 2624, 2624, 1, 1672, 2654, 2655, 2654, 2624, 2627, 2858, 2656, 2624, 2625, 2624, 2624, 2624, 2624, 2857, 2853, 2624, 2624, 1, 1672, 2654, 2655, 2654, 2624, 2627, 2859, 2656, 2624, 2625, 2624, 2624, 2624, 2624, 2853, 2855, 2624, 2624, 1, 1672, 2654, 2655, 2654, 2624, 2627, 2860, 2656, 2624, 2625, 2624, 2624, 2624, 2624, 2855, 2856, 2624, 2624, 1, 1672, 2654, 2655, 2654, 2624, 2627, 2656, 2624, 2625, 2624, 2624, 2624, 2624, 2856, 2624, 2624, 2624, 1, 2622, 2623, 2861, 2862, 2863, 2624, 2622, 2625, 2622, 2622, 2622, 2622, 2864, 2844, 2844, 1, 2622, 2623, 2840, 2865, 2622, 2624, 2622, 2625, 2840, 2622, 2622, 2842, 2842, 2842, 1, 2622, 2623, 2866, 2867, 2868, 2624, 2622, 2625, 2622, 2622, 2622, 2622, 2869, 2844, 2844, 1, 2622, 2623, 2840, 2870, 2622, 2624, 2622, 2625, 2840, 2622, 2622, 2842, 2842, 2842, 1, 2622, 2623, 2871, 2872, 2873, 2624, 2622, 2625, 2622, 2622, 2622, 2622, 2874, 2844, 2844, 1, 1812, 2675, 2676, 2675, 2622, 2623, 2840, 2843, 2622, 2875, 2678, 2622, 2625, 2840, 2622, 2622, 2842, 2842, 2842, 1, 1812, 2675, 2676, 2675, 2622, 2623, 2840, 2843, 2622, 2875, 2678, 2622, 2625, 2840, 2622, 2622, 2874, 2842, 2842, 1, 1812, 2675, 2676, 2675, 2622, 2623, 2840, 2843, 2622, 2875, 2678, 2622, 2625, 2840, 2622, 2622, 2871, 2842, 2842, 1, 1812, 2675, 2676, 2675, 2622, 2623, 2840, 2843, 2622, 2876, 2875, 2678, 2622, 2625, 2840, 2622, 2622, 2874, 2871, 2842, 2842, 1, 1812, 2675, 2676, 2675, 2622, 2623, 2840, 2843, 2622, 2875, 2678, 2622, 2625, 2840, 2622, 2622, 2871, 2842, 2842, 2842, 1, 2622, 2623, 2840, 2870, 2622, 2624, 2622, 2625, 2840, 2622, 2622, 2869, 2842, 2842, 1, 2622, 2623, 2840, 2870, 2622, 2624, 2622, 2625, 2840, 2622, 2622, 2866, 2842, 2842, 1, 2622, 2623, 2840, 2870, 2622, 2877, 2624, 2622, 2625, 2840, 2622, 2622, 2869, 2866, 2842, 2842, 1, 2622, 2623, 2840, 2870, 2622, 2624, 2622, 2625, 2840, 2622, 2622, 2866, 2842, 2842, 2842, 1, 2622, 2623, 2840, 2865, 2622, 2624, 2622, 2625, 2840, 2622, 2622, 2864, 2842, 2842, 1, 2622, 2623, 2840, 2865, 2622, 2624, 2622, 2625, 2840, 2622, 2622, 2861, 2842, 2842, 1, 2622, 2623, 2840, 2865, 2622, 2878, 2624, 2622, 2625, 2840, 2622, 2622, 2864, 2861, 2842, 2842, 1, 2622, 2623, 2840, 2865, 2622, 2624, 2622, 2625, 2840, 2622, 2622, 2861, 2842, 2842, 2842, 1, 2622, 2623, 2840, 2841, 2622, 2624, 2622, 2625, 2840, 2622, 2622, 2879, 2842, 2842, 1, 2622, 2623, 2840, 2841, 2622, 2624, 2622, 2625, 2840, 2622, 2622, 2880, 2842, 2842, 1, 2622, 2623, 2840, 2841, 2622, 2881, 2624, 2622, 2625, 2840, 2622, 2622, 2879, 2880, 2842, 2842, 1, 2622, 2623, 2840, 2841, 2622, 2624, 2622, 2625, 2840, 2622, 2622, 2880, 2842, 2842, 2842, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 2184, 2882, 1187, 1186, 2184, 2184, 2184, 1186, 2184, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 2184, 2185, 1187, 2883, 2883, 1186, 2184, 2184, 2184, 1186, 2184, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 2184, 2185, 1187, 2884, 2884, 1186, 2184, 2184, 2184, 1186, 2184, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 2184, 2885, 1187, 1186, 2184, 2184, 2184, 1186, 2184, 1, 2886, 2886, 2888, 2887, 2887, 2886, 2886, 2886, 1, 2141, 2889, 2890, 2889, 2891, 2892, 2891, 2891, 2891, 2891, 2891, 1, 2891, 2891, 2893, 2893, 2891, 2891, 2891, 1, 2894, 2894, 2895, 1, 2141, 2889, 2890, 2889, 2892, 2895, 2895, 2895, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 1187, 1186, 1204, 1205, 2184, 2185, 2896, 2897, 1186, 1204, 1204, 1204, 1204, 2184, 2184, 2184, 2184, 2896, 2896, 2896, 2896, 1, 1206, 1207, 1207, 2186, 2187, 2186, 1207, 1208, 1209, 1210, 1211, 1207, 1211, 1212, 1207, 1207, 2188, 2189, 2190, 2191, 2192, 2193, 2188, 2192, 2194, 2188, 2188, 2898, 2899, 2900, 2901, 2902, 2903, 2898, 2902, 2904, 2898, 2898, 1207, 1207, 1207, 1207, 2188, 2188, 2188, 2188, 2898, 2898, 2898, 2898, 1, 1206, 1207, 1207, 2186, 2187, 2186, 1207, 1208, 1209, 1213, 1207, 1214, 1207, 1207, 2188, 2189, 2190, 2195, 2193, 2188, 2196, 2188, 2188, 2898, 2899, 2900, 2905, 2903, 2898, 2906, 2898, 2898, 1207, 1207, 1207, 1207, 2188, 2188, 2188, 2188, 2898, 2898, 2898, 2898, 1, 1208, 1208, 1208, 1208, 1215, 1216, 1208, 1217, 1208, 1208, 2189, 2197, 2198, 2189, 2199, 2189, 2189, 2899, 2907, 2908, 2899, 2909, 2899, 2899, 1208, 1208, 1208, 1208, 2189, 2189, 2189, 2189, 2899, 2899, 2899, 2899, 1, 1218, 1218, 1218, 2200, 2200, 2200, 2910, 2910, 2910, 1, 1208, 1208, 1208, 2189, 2189, 2189, 2899, 2899, 2899, 1, 1216, 1216, 1219, 1216, 1217, 1216, 1216, 2198, 2201, 2198, 2199, 2198, 2198, 2908, 2911, 2908, 2909, 2908, 2908, 1216, 1216, 1216, 1216, 1216, 2198, 2198, 2198, 2198, 2198, 2908, 2908, 2908, 2908, 2908, 1, 1220, 1220, 1220, 2202, 2202, 2202, 2912, 2912, 2912, 1, 1216, 1216, 1216, 2198, 2198, 2198, 2908, 2908, 2908, 1, 1221, 1222, 1223, 1212, 2203, 2204, 2205, 2194, 2913, 2914, 2915, 2904, 1224, 1225, 1225, 2206, 2207, 2207, 2916, 2917, 2917, 1, 1226, 1227, 1226, 2208, 2209, 2208, 2918, 2919, 2918, 1228, 1228, 1228, 2210, 2210, 2210, 2920, 2920, 2920, 1, 1226, 1226, 2208, 2208, 2918, 2918, 1228, 1228, 1228, 2210, 2210, 2210, 2920, 2920, 2920, 1, 1226, 1229, 1226, 2208, 2211, 2208, 2918, 2921, 2918, 1228, 1228, 1228, 2210, 2210, 2210, 2920, 2920, 2920, 1, 1228, 1225, 1225, 2210, 2207, 2207, 2920, 2917, 2917, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1230, 1231, 1232, 1230, 2212, 2213, 2214, 2212, 2922, 2923, 2924, 2922, 1225, 1225, 1225, 2207, 2207, 2207, 2917, 2917, 2917, 1, 1230, 1230, 2212, 2212, 2922, 2922, 1225, 1225, 1225, 2207, 2207, 2207, 2917, 2917, 2917, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1232, 2214, 2924, 1228, 1225, 1225, 2210, 2207, 2207, 2920, 2917, 2917, 1, 1233, 1235, 2215, 2217, 2925, 2927, 1234, 1236, 2216, 2218, 2926, 2928, 1, 1237, 2219, 2929, 1238, 2220, 2930, 1, 1239, 2221, 2931, 1240, 2222, 2932, 1, 1241, 2223, 2933, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1241, 2223, 2933, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1240, 2222, 2932, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1236, 2218, 2928, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1238, 2220, 2930, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1244, 2224, 2934, 1236, 1238, 2218, 2220, 2928, 2930, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1245, 2225, 2935, 1238, 1240, 2220, 2222, 2930, 2932, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1246, 2226, 2936, 1240, 1241, 2222, 2223, 2932, 2933, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1241, 2223, 2933, 1, 1247, 1248, 1249, 2227, 2228, 2229, 2937, 2938, 2939, 1250, 1225, 1225, 2230, 2207, 2207, 2940, 2917, 2917, 1, 1226, 1251, 1226, 2208, 2231, 2208, 2918, 2941, 2918, 1228, 1228, 1228, 2210, 2210, 2210, 2920, 2920, 2920, 1, 1252, 1253, 1254, 2232, 2233, 2234, 2942, 2943, 2944, 1255, 1225, 1225, 2235, 2207, 2207, 2945, 2917, 2917, 1, 1226, 1256, 1226, 2208, 2236, 2208, 2918, 2946, 2918, 1228, 1228, 1228, 2210, 2210, 2210, 2920, 2920, 2920, 1, 1257, 1258, 1259, 2237, 2238, 2239, 2947, 2948, 2949, 1260, 1225, 1225, 2240, 2207, 2207, 2950, 2917, 2917, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1226, 1229, 1232, 1226, 2208, 2211, 2214, 2208, 2918, 2921, 2924, 2918, 1228, 1228, 1228, 2210, 2210, 2210, 2920, 2920, 2920, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1226, 1229, 1232, 1226, 2208, 2211, 2214, 2208, 2918, 2921, 2924, 2918, 1260, 1228, 1228, 2240, 2210, 2210, 2950, 2920, 2920, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1226, 1229, 1232, 1226, 2208, 2211, 2214, 2208, 2918, 2921, 2924, 2918, 1257, 1228, 1228, 2237, 2210, 2210, 2947, 2920, 2920, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1226, 1229, 1261, 1232, 1226, 2208, 2211, 2241, 2214, 2208, 2918, 2921, 2951, 2924, 2918, 1260, 1257, 1228, 1228, 2240, 2237, 2210, 2210, 2950, 2947, 2920, 2920, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1226, 1229, 1232, 1226, 2208, 2211, 2214, 2208, 2918, 2921, 2924, 2918, 1257, 1228, 1228, 1228, 2237, 2210, 2210, 2210, 2947, 2920, 2920, 2920, 1, 1226, 1256, 1226, 2208, 2236, 2208, 2918, 2946, 2918, 1255, 1228, 1228, 2235, 2210, 2210, 2945, 2920, 2920, 1, 1226, 1256, 1226, 2208, 2236, 2208, 2918, 2946, 2918, 1252, 1228, 1228, 2232, 2210, 2210, 2942, 2920, 2920, 1, 1226, 1256, 1262, 1226, 2208, 2236, 2242, 2208, 2918, 2946, 2952, 2918, 1255, 1252, 1228, 1228, 2235, 2232, 2210, 2210, 2945, 2942, 2920, 2920, 1, 1226, 1256, 1226, 2208, 2236, 2208, 2918, 2946, 2918, 1252, 1228, 1228, 1228, 2232, 2210, 2210, 2210, 2942, 2920, 2920, 2920, 1, 1226, 1251, 1226, 2208, 2231, 2208, 2918, 2941, 2918, 1250, 1228, 1228, 2230, 2210, 2210, 2940, 2920, 2920, 1, 1226, 1251, 1226, 2208, 2231, 2208, 2918, 2941, 2918, 1247, 1228, 1228, 2227, 2210, 2210, 2937, 2920, 2920, 1, 1226, 1251, 1263, 1226, 2208, 2231, 2243, 2208, 2918, 2941, 2953, 2918, 1250, 1247, 1228, 1228, 2230, 2227, 2210, 2210, 2940, 2937, 2920, 2920, 1, 1226, 1251, 1226, 2208, 2231, 2208, 2918, 2941, 2918, 1247, 1228, 1228, 1228, 2227, 2210, 2210, 2210, 2937, 2920, 2920, 2920, 1, 1226, 1227, 1226, 2208, 2209, 2208, 2918, 2919, 2918, 1224, 1228, 1228, 2206, 2210, 2210, 2916, 2920, 2920, 1, 1226, 1227, 1226, 2208, 2209, 2208, 2918, 2919, 2918, 1221, 1228, 1228, 2203, 2210, 2210, 2913, 2920, 2920, 1, 1226, 1227, 1264, 1226, 2208, 2209, 2244, 2208, 2918, 2919, 2954, 2918, 1224, 1221, 1228, 1228, 2206, 2203, 2210, 2210, 2916, 2913, 2920, 2920, 1, 1226, 1227, 1226, 2208, 2209, 2208, 2918, 2919, 2918, 1221, 1228, 1228, 1228, 2203, 2210, 2210, 2210, 2913, 2920, 2920, 2920, 1, 1266, 2246, 2956, 1265, 1265, 1265, 2245, 2245, 2245, 2955, 2955, 2955, 1, 1268, 2248, 2958, 1267, 1267, 1267, 2247, 2247, 2247, 2957, 2957, 2957, 1, 1268, 2248, 2958, 1269, 1269, 1269, 2249, 2249, 2249, 2959, 2959, 2959, 1, 1268, 2248, 2958, 1270, 1270, 1270, 2250, 2250, 2250, 2960, 2960, 2960, 1, 1268, 2248, 2958, 1, 1272, 2252, 2962, 1271, 1271, 1271, 2251, 2251, 2251, 2961, 2961, 2961, 1, 1274, 2254, 2964, 1273, 1273, 1273, 2253, 2253, 2253, 2963, 2963, 2963, 1, 1274, 2254, 2964, 1275, 1275, 1275, 2255, 2255, 2255, 2965, 2965, 2965, 1, 1274, 2254, 2964, 1276, 1276, 1276, 2256, 2256, 2256, 2966, 2966, 2966, 1, 1274, 2254, 2964, 1, 1278, 2258, 2968, 1277, 1277, 1277, 2257, 2257, 2257, 2967, 2967, 2967, 1, 1280, 2260, 2970, 1279, 1279, 1279, 2259, 2259, 2259, 2969, 2969, 2969, 1, 1280, 2260, 2970, 1281, 1281, 1281, 2261, 2261, 2261, 2971, 2971, 2971, 1, 1280, 2260, 2970, 1282, 1282, 1282, 2262, 2262, 2262, 2972, 2972, 2972, 1, 1280, 2260, 2970, 1, 1284, 2264, 2974, 1283, 1283, 1283, 2263, 2263, 2263, 2973, 2973, 2973, 1, 1286, 2266, 2976, 1285, 1285, 1285, 2265, 2265, 2265, 2975, 2975, 2975, 1, 1286, 2266, 2976, 1287, 1287, 1287, 2267, 2267, 2267, 2977, 2977, 2977, 1, 1286, 2266, 2976, 1288, 1288, 1288, 2268, 2268, 2268, 2978, 2978, 2978, 1, 1286, 2266, 2976, 1, 1290, 2270, 2980, 1289, 1289, 1289, 2269, 2269, 2269, 2979, 2979, 2979, 1, 1292, 2272, 2982, 1291, 1291, 1291, 2271, 2271, 2271, 2981, 2981, 2981, 1, 1292, 2272, 2982, 1293, 1293, 1293, 2273, 2273, 2273, 2983, 2983, 2983, 1, 1292, 2272, 2982, 1294, 1294, 1294, 2274, 2274, 2274, 2984, 2984, 2984, 1, 1292, 2272, 2982, 1, 1296, 2276, 2986, 1295, 1295, 1295, 2275, 2275, 2275, 2985, 2985, 2985, 1, 1298, 2278, 2988, 1297, 1297, 1297, 2277, 2277, 2277, 2987, 2987, 2987, 1, 1298, 2278, 2988, 1299, 1299, 1299, 2279, 2279, 2279, 2989, 2989, 2989, 1, 1298, 2278, 2988, 1300, 1300, 1300, 2280, 2280, 2280, 2990, 2990, 2990, 1, 1298, 2278, 2988, 1, 1301, 1302, 1303, 1305, 2281, 2282, 2283, 2285, 2991, 2992, 2993, 2995, 1304, 1306, 1306, 2284, 2286, 2286, 2994, 2996, 2996, 1, 1307, 1309, 2287, 2289, 2997, 2999, 1308, 1308, 1308, 2288, 2288, 2288, 2998, 2998, 2998, 1, 1310, 1311, 1312, 2290, 2291, 2292, 3000, 3001, 3002, 1313, 2293, 3003, 1, 1314, 2294, 3004, 1, 1315, 1316, 1317, 2295, 2296, 2297, 3005, 3006, 3007, 1318, 2298, 3008, 1, 1319, 2299, 3009, 1, 1320, 1321, 1322, 2300, 2301, 2302, 3010, 3011, 3012, 1323, 2303, 3013, 1, 1324, 2304, 3014, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1232, 2214, 2924, 1, 1324, 2304, 3014, 1323, 2303, 3013, 1, 1324, 2304, 3014, 1320, 2300, 3010, 1, 1325, 1324, 2305, 2304, 3015, 3014, 1323, 1320, 2303, 2300, 3013, 3010, 1, 1324, 2304, 3014, 1320, 2300, 3010, 1, 1319, 2299, 3009, 1318, 2298, 3008, 1, 1319, 2299, 3009, 1315, 2295, 3005, 1, 1319, 1326, 2299, 2306, 3009, 3016, 1318, 1315, 2298, 2295, 3008, 3005, 1, 1319, 2299, 3009, 1315, 2295, 3005, 1, 1314, 2294, 3004, 1313, 2293, 3003, 1, 1314, 2294, 3004, 1310, 2290, 3000, 1, 1314, 1327, 2294, 2307, 3004, 3017, 1313, 1310, 2293, 2290, 3003, 3000, 1, 1314, 2294, 3004, 1310, 2290, 3000, 1, 1309, 2289, 2999, 1328, 1328, 1328, 2308, 2308, 2308, 3018, 3018, 3018, 1, 1309, 2289, 2999, 1329, 1329, 1329, 2309, 2309, 2309, 3019, 3019, 3019, 1, 1309, 2289, 2999, 1, 1320, 2300, 3010, 1330, 1330, 1330, 2310, 2310, 2310, 3020, 3020, 3020, 1, 1324, 2304, 3014, 1331, 1331, 1331, 2311, 2311, 2311, 3021, 3021, 3021, 1, 1324, 2304, 3014, 1332, 1332, 1332, 2312, 2312, 2312, 3022, 3022, 3022, 1, 1324, 2304, 3014, 1320, 1320, 1320, 2300, 2300, 2300, 3010, 3010, 3010, 1, 1307, 1309, 2287, 2289, 2997, 2999, 1333, 1308, 1308, 2313, 2288, 2288, 3023, 2998, 2998, 1, 1307, 1309, 2287, 2289, 2997, 2999, 1334, 1328, 1328, 2314, 2308, 2308, 3024, 3018, 3018, 1, 1307, 1309, 2287, 2289, 2997, 2999, 1329, 1329, 1329, 2309, 2309, 2309, 3019, 3019, 3019, 1, 1307, 1335, 1309, 2287, 2315, 2289, 2997, 3025, 2999, 1333, 1336, 1308, 1308, 2313, 2316, 2288, 2288, 3023, 3026, 2998, 2998, 1, 1307, 1309, 2287, 2289, 2997, 2999, 1334, 1328, 1328, 1328, 2314, 2308, 2308, 2308, 3024, 3018, 3018, 3018, 1, 1307, 1309, 2287, 2289, 2997, 2999, 1328, 1328, 1328, 2308, 2308, 2308, 3018, 3018, 3018, 1, 1307, 1309, 2287, 2289, 2997, 2999, 1336, 1308, 1308, 2316, 2288, 2288, 3026, 2998, 2998, 1, 1324, 2304, 3014, 1330, 1330, 1330, 2310, 2310, 2310, 3020, 3020, 3020, 1, 1309, 2289, 2999, 1308, 1308, 1308, 2288, 2288, 2288, 2998, 2998, 2998, 1, 1337, 1338, 1339, 1324, 2317, 2318, 2319, 2304, 3027, 3028, 3029, 3014, 1340, 1341, 1341, 2320, 2321, 2321, 3030, 3031, 3031, 1, 1307, 1343, 1324, 2287, 2323, 2304, 2997, 3033, 3014, 1342, 1342, 1342, 2322, 2322, 2322, 3032, 3032, 3032, 1, 1343, 1324, 2323, 2304, 3033, 3014, 1344, 1344, 1344, 2324, 2324, 2324, 3034, 3034, 3034, 1, 1343, 1324, 2323, 2304, 3033, 3014, 1345, 1345, 1345, 2325, 2325, 2325, 3035, 3035, 3035, 1, 1343, 1324, 2323, 2304, 3033, 3014, 1, 1330, 1330, 1330, 2310, 2310, 2310, 3020, 3020, 3020, 1, 1307, 1343, 1324, 2287, 2323, 2304, 2997, 3033, 3014, 1346, 1342, 1342, 2326, 2322, 2322, 3036, 3032, 3032, 1, 1307, 1343, 1324, 2287, 2323, 2304, 2997, 3033, 3014, 1347, 1344, 1344, 2327, 2324, 2324, 3037, 3034, 3034, 1, 1307, 1343, 1324, 2287, 2323, 2304, 2997, 3033, 3014, 1345, 1345, 1345, 2325, 2325, 2325, 3035, 3035, 3035, 1, 1307, 1348, 1343, 1324, 2287, 2328, 2323, 2304, 2997, 3038, 3033, 3014, 1346, 1349, 1342, 1342, 2326, 2329, 2322, 2322, 3036, 3039, 3032, 3032, 1, 1307, 1343, 1324, 2287, 2323, 2304, 2997, 3033, 3014, 1347, 1344, 1344, 1344, 2327, 2324, 2324, 2324, 3037, 3034, 3034, 3034, 1, 1307, 1343, 1324, 2287, 2323, 2304, 2997, 3033, 3014, 1344, 1344, 1344, 2324, 2324, 2324, 3034, 3034, 3034, 1, 1307, 1343, 1324, 2287, 2323, 2304, 2997, 3033, 3014, 1349, 1342, 1342, 2329, 2322, 2322, 3039, 3032, 3032, 1, 1343, 1324, 2323, 2304, 3033, 3014, 1342, 1342, 1342, 2322, 2322, 2322, 3032, 3032, 3032, 1, 1350, 1351, 1352, 1324, 2330, 2331, 2332, 2304, 3040, 3041, 3042, 3014, 1353, 1354, 1354, 2333, 2334, 2334, 3043, 3044, 3044, 1, 1307, 1356, 1324, 2287, 2336, 2304, 2997, 3046, 3014, 1355, 1355, 1355, 2335, 2335, 2335, 3045, 3045, 3045, 1, 1356, 1324, 2336, 2304, 3046, 3014, 1357, 1357, 1357, 2337, 2337, 2337, 3047, 3047, 3047, 1, 1356, 1324, 2336, 2304, 3046, 3014, 1358, 1358, 1358, 2338, 2338, 2338, 3048, 3048, 3048, 1, 1356, 1324, 2336, 2304, 3046, 3014, 1, 1337, 1338, 1339, 2317, 2318, 2319, 3027, 3028, 3029, 1340, 1341, 1341, 2320, 2321, 2321, 3030, 3031, 3031, 1, 1307, 1356, 1324, 2287, 2336, 2304, 2997, 3046, 3014, 1359, 1355, 1355, 2339, 2335, 2335, 3049, 3045, 3045, 1, 1307, 1356, 1324, 2287, 2336, 2304, 2997, 3046, 3014, 1360, 1357, 1357, 2340, 2337, 2337, 3050, 3047, 3047, 1, 1307, 1356, 1324, 2287, 2336, 2304, 2997, 3046, 3014, 1358, 1358, 1358, 2338, 2338, 2338, 3048, 3048, 3048, 1, 1307, 1361, 1356, 1324, 2287, 2341, 2336, 2304, 2997, 3051, 3046, 3014, 1359, 1362, 1355, 1355, 2339, 2342, 2335, 2335, 3049, 3052, 3045, 3045, 1, 1307, 1356, 1324, 2287, 2336, 2304, 2997, 3046, 3014, 1360, 1357, 1357, 1357, 2340, 2337, 2337, 2337, 3050, 3047, 3047, 3047, 1, 1307, 1356, 1324, 2287, 2336, 2304, 2997, 3046, 3014, 1357, 1357, 1357, 2337, 2337, 2337, 3047, 3047, 3047, 1, 1307, 1356, 1324, 2287, 2336, 2304, 2997, 3046, 3014, 1362, 1355, 1355, 2342, 2335, 2335, 3052, 3045, 3045, 1, 1356, 1324, 2336, 2304, 3046, 3014, 1355, 1355, 1355, 2335, 2335, 2335, 3045, 3045, 3045, 1, 1363, 1364, 1365, 1324, 2343, 2344, 2345, 2304, 3053, 3054, 3055, 3014, 1366, 1367, 1367, 2346, 2347, 2347, 3056, 3057, 3057, 1, 1307, 1369, 1324, 2287, 2349, 2304, 2997, 3059, 3014, 1368, 1368, 1368, 2348, 2348, 2348, 3058, 3058, 3058, 1, 1369, 1324, 2349, 2304, 3059, 3014, 1370, 1370, 1370, 2350, 2350, 2350, 3060, 3060, 3060, 1, 1369, 1324, 2349, 2304, 3059, 3014, 1371, 1371, 1371, 2351, 2351, 2351, 3061, 3061, 3061, 1, 1369, 1324, 2349, 2304, 3059, 3014, 1, 1350, 1351, 1352, 2330, 2331, 2332, 3040, 3041, 3042, 1353, 1354, 1354, 2333, 2334, 2334, 3043, 3044, 3044, 1, 1307, 1369, 1324, 2287, 2349, 2304, 2997, 3059, 3014, 1372, 1368, 1368, 2352, 2348, 2348, 3062, 3058, 3058, 1, 1307, 1369, 1324, 2287, 2349, 2304, 2997, 3059, 3014, 1373, 1370, 1370, 2353, 2350, 2350, 3063, 3060, 3060, 1, 1307, 1369, 1324, 2287, 2349, 2304, 2997, 3059, 3014, 1371, 1371, 1371, 2351, 2351, 2351, 3061, 3061, 3061, 1, 1307, 1374, 1369, 1324, 2287, 2354, 2349, 2304, 2997, 3064, 3059, 3014, 1372, 1375, 1368, 1368, 2352, 2355, 2348, 2348, 3062, 3065, 3058, 3058, 1, 1307, 1369, 1324, 2287, 2349, 2304, 2997, 3059, 3014, 1373, 1370, 1370, 1370, 2353, 2350, 2350, 2350, 3063, 3060, 3060, 3060, 1, 1307, 1369, 1324, 2287, 2349, 2304, 2997, 3059, 3014, 1370, 1370, 1370, 2350, 2350, 2350, 3060, 3060, 3060, 1, 1307, 1369, 1324, 2287, 2349, 2304, 2997, 3059, 3014, 1375, 1368, 1368, 2355, 2348, 2348, 3065, 3058, 3058, 1, 1369, 1324, 2349, 2304, 3059, 3014, 1368, 1368, 1368, 2348, 2348, 2348, 3058, 3058, 3058, 1, 1376, 1377, 1378, 1324, 2356, 2357, 2358, 2304, 3066, 3067, 3068, 3014, 1379, 1380, 1380, 2359, 2360, 2360, 3069, 3070, 3070, 1, 1307, 1382, 1324, 2287, 2362, 2304, 2997, 3072, 3014, 1381, 1381, 1381, 2361, 2361, 2361, 3071, 3071, 3071, 1, 1382, 1324, 2362, 2304, 3072, 3014, 1383, 1383, 1383, 2363, 2363, 2363, 3073, 3073, 3073, 1, 1382, 1324, 2362, 2304, 3072, 3014, 1384, 1384, 1384, 2364, 2364, 2364, 3074, 3074, 3074, 1, 1382, 1324, 2362, 2304, 3072, 3014, 1, 1363, 1364, 1365, 2343, 2344, 2345, 3053, 3054, 3055, 1366, 1367, 1367, 2346, 2347, 2347, 3056, 3057, 3057, 1, 1307, 1382, 1324, 2287, 2362, 2304, 2997, 3072, 3014, 1385, 1381, 1381, 2365, 2361, 2361, 3075, 3071, 3071, 1, 1307, 1382, 1324, 2287, 2362, 2304, 2997, 3072, 3014, 1386, 1383, 1383, 2366, 2363, 2363, 3076, 3073, 3073, 1, 1307, 1382, 1324, 2287, 2362, 2304, 2997, 3072, 3014, 1384, 1384, 1384, 2364, 2364, 2364, 3074, 3074, 3074, 1, 1307, 1387, 1382, 1324, 2287, 2367, 2362, 2304, 2997, 3077, 3072, 3014, 1385, 1388, 1381, 1381, 2365, 2368, 2361, 2361, 3075, 3078, 3071, 3071, 1, 1307, 1382, 1324, 2287, 2362, 2304, 2997, 3072, 3014, 1386, 1383, 1383, 1383, 2366, 2363, 2363, 2363, 3076, 3073, 3073, 3073, 1, 1307, 1382, 1324, 2287, 2362, 2304, 2997, 3072, 3014, 1383, 1383, 1383, 2363, 2363, 2363, 3073, 3073, 3073, 1, 1307, 1382, 1324, 2287, 2362, 2304, 2997, 3072, 3014, 1388, 1381, 1381, 2368, 2361, 2361, 3078, 3071, 3071, 1, 1382, 1324, 2362, 2304, 3072, 3014, 1381, 1381, 1381, 2361, 2361, 2361, 3071, 3071, 3071, 1, 1389, 1390, 1391, 1324, 2369, 2370, 2371, 2304, 3079, 3080, 3081, 3014, 1392, 1393, 1393, 2372, 2373, 2373, 3082, 3083, 3083, 1, 1307, 1395, 1324, 2287, 2375, 2304, 2997, 3085, 3014, 1394, 1394, 1394, 2374, 2374, 2374, 3084, 3084, 3084, 1, 1395, 1324, 2375, 2304, 3085, 3014, 1396, 1396, 1396, 2376, 2376, 2376, 3086, 3086, 3086, 1, 1395, 1324, 2375, 2304, 3085, 3014, 1397, 1397, 1397, 2377, 2377, 2377, 3087, 3087, 3087, 1, 1395, 1324, 2375, 2304, 3085, 3014, 1, 1376, 1377, 1378, 2356, 2357, 2358, 3066, 3067, 3068, 1379, 1380, 1380, 2359, 2360, 2360, 3069, 3070, 3070, 1, 1307, 1395, 1324, 2287, 2375, 2304, 2997, 3085, 3014, 1398, 1394, 1394, 2378, 2374, 2374, 3088, 3084, 3084, 1, 1307, 1395, 1324, 2287, 2375, 2304, 2997, 3085, 3014, 1399, 1396, 1396, 2379, 2376, 2376, 3089, 3086, 3086, 1, 1307, 1395, 1324, 2287, 2375, 2304, 2997, 3085, 3014, 1397, 1397, 1397, 2377, 2377, 2377, 3087, 3087, 3087, 1, 1307, 1400, 1395, 1324, 2287, 2380, 2375, 2304, 2997, 3090, 3085, 3014, 1398, 1401, 1394, 1394, 2378, 2381, 2374, 2374, 3088, 3091, 3084, 3084, 1, 1307, 1395, 1324, 2287, 2375, 2304, 2997, 3085, 3014, 1399, 1396, 1396, 1396, 2379, 2376, 2376, 2376, 3089, 3086, 3086, 3086, 1, 1307, 1395, 1324, 2287, 2375, 2304, 2997, 3085, 3014, 1396, 1396, 1396, 2376, 2376, 2376, 3086, 3086, 3086, 1, 1307, 1395, 1324, 2287, 2375, 2304, 2997, 3085, 3014, 1401, 1394, 1394, 2381, 2374, 2374, 3091, 3084, 3084, 1, 1395, 1324, 2375, 2304, 3085, 3014, 1394, 1394, 1394, 2374, 2374, 2374, 3084, 3084, 3084, 1, 1402, 2382, 3092, 1, 1403, 1404, 1405, 1324, 2383, 2384, 2385, 2304, 3093, 3094, 3095, 3014, 1406, 1407, 1407, 2386, 2387, 2387, 3096, 3097, 3097, 1, 1307, 1409, 1324, 2287, 2389, 2304, 2997, 3099, 3014, 1408, 1408, 1408, 2388, 2388, 2388, 3098, 3098, 3098, 1, 1409, 1324, 2389, 2304, 3099, 3014, 1410, 1410, 1410, 2390, 2390, 2390, 3100, 3100, 3100, 1, 1409, 1324, 2389, 2304, 3099, 3014, 1411, 1411, 1411, 2391, 2391, 2391, 3101, 3101, 3101, 1, 1409, 1324, 2389, 2304, 3099, 3014, 1, 1389, 1390, 1391, 2369, 2370, 2371, 3079, 3080, 3081, 1392, 1393, 1393, 2372, 2373, 2373, 3082, 3083, 3083, 1, 1307, 1409, 1324, 2287, 2389, 2304, 2997, 3099, 3014, 1412, 1408, 1408, 2392, 2388, 2388, 3102, 3098, 3098, 1, 1307, 1409, 1324, 2287, 2389, 2304, 2997, 3099, 3014, 1413, 1410, 1410, 2393, 2390, 2390, 3103, 3100, 3100, 1, 1307, 1409, 1324, 2287, 2389, 2304, 2997, 3099, 3014, 1411, 1411, 1411, 2391, 2391, 2391, 3101, 3101, 3101, 1, 1307, 1414, 1409, 1324, 2287, 2394, 2389, 2304, 2997, 3104, 3099, 3014, 1412, 1415, 1408, 1408, 2392, 2395, 2388, 2388, 3102, 3105, 3098, 3098, 1, 1307, 1409, 1324, 2287, 2389, 2304, 2997, 3099, 3014, 1413, 1410, 1410, 1410, 2393, 2390, 2390, 2390, 3103, 3100, 3100, 3100, 1, 1307, 1409, 1324, 2287, 2389, 2304, 2997, 3099, 3014, 1410, 1410, 1410, 2390, 2390, 2390, 3100, 3100, 3100, 1, 1307, 1409, 1324, 2287, 2389, 2304, 2997, 3099, 3014, 1415, 1408, 1408, 2395, 2388, 2388, 3105, 3098, 3098, 1, 1409, 1324, 2389, 2304, 3099, 3014, 1408, 1408, 1408, 2388, 2388, 2388, 3098, 3098, 3098, 1, 1416, 1416, 1416, 2396, 2396, 2396, 3106, 3106, 3106, 1, 1207, 1207, 1207, 2188, 2188, 2188, 2898, 2898, 2898, 1, 1206, 1213, 1211, 2186, 2187, 2186, 1213, 1417, 1211, 1213, 1214, 1213, 1213, 2195, 2397, 2192, 2192, 2193, 2195, 2196, 2195, 2195, 2905, 3107, 2902, 2902, 3108, 2905, 2906, 2905, 2905, 1213, 1213, 1211, 1213, 1213, 2195, 2195, 2195, 2195, 2905, 2905, 2905, 2905, 1, 1418, 1418, 1418, 2398, 2398, 2398, 3109, 3109, 3109, 1, 1213, 1213, 1213, 2195, 2195, 2195, 2905, 2905, 2905, 1, 1206, 1211, 1211, 2186, 2187, 2186, 1211, 1242, 1211, 1211, 1211, 2192, 2399, 2193, 2192, 2192, 2192, 2902, 3110, 3108, 2902, 2902, 2902, 1211, 1211, 1211, 1211, 2192, 2192, 2192, 2192, 2902, 2902, 2902, 2902, 1, 1243, 1243, 1243, 2400, 2400, 2400, 3111, 3111, 3111, 1, 1211, 1211, 1211, 2192, 2192, 2192, 2902, 2902, 2902, 1, 1206, 1211, 1211, 1211, 1211, 1211, 61, 67, 61, 68, 1211, 1242, 1211, 1211, 1211, 68, 68, 68, 68, 68, 3112, 3113, 3112, 3112, 3112, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 68, 68, 68, 68, 68, 3112, 3112, 3112, 3112, 3112, 1, 1206, 1211, 1211, 1211, 1211, 1211, 71, 72, 71, 68, 1211, 1242, 1211, 1211, 1211, 1211, 1211, 68, 68, 68, 61, 73, 68, 68, 3112, 3113, 3112, 3114, 3115, 3112, 3112, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 68, 68, 68, 68, 68, 3112, 3112, 3112, 3112, 3112, 1, 58, 71, 72, 71, 68, 68, 68, 61, 73, 68, 68, 68, 68, 68, 68, 1243, 1243, 1243, 68, 68, 68, 3116, 3116, 3116, 1, 58, 71, 72, 71, 68, 68, 68, 61, 73, 68, 68, 68, 68, 68, 68, 1211, 1211, 1211, 68, 68, 68, 3112, 3112, 3112, 1, 1206, 1211, 1211, 1211, 1211, 1211, 73, 76, 73, 78, 79, 77, 1211, 1242, 1211, 1211, 1211, 77, 77, 77, 77, 77, 3117, 3118, 3117, 3117, 3117, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 77, 77, 77, 77, 77, 3117, 3117, 3117, 3117, 3117, 1, 1206, 1211, 1211, 1211, 1211, 1211, 1211, 82, 64, 82, 77, 1211, 1242, 1211, 1211, 1211, 1211, 77, 77, 77, 61, 77, 77, 3117, 3118, 3117, 3114, 3117, 3117, 1211, 1211, 1211, 1211, 1211, 1211, 1211, 77, 77, 77, 77, 77, 3117, 3117, 3117, 3117, 3117, 1, 58, 82, 64, 82, 77, 77, 77, 61, 77, 77, 77, 77, 77, 77, 1243, 1243, 1243, 77, 77, 77, 3119, 3119, 3119, 1, 58, 82, 64, 82, 77, 77, 77, 61, 77, 77, 77, 77, 77, 77, 1211, 1211, 1211, 77, 77, 77, 3117, 3117, 3117, 1, 1206, 1211, 1211, 2186, 2187, 2186, 1211, 1242, 1211, 1212, 1211, 1211, 2192, 2399, 2193, 2192, 2194, 2192, 2192, 2902, 3110, 3108, 2902, 2904, 2902, 2902, 1211, 1211, 1211, 1211, 2192, 2192, 2192, 2192, 2902, 2902, 2902, 2902, 1, 1206, 1208, 1207, 1207, 1207, 1207, 1213, 1207, 1207, 1207, 1214, 61, 67, 61, 68, 1207, 1209, 1207, 1207, 1207, 68, 68, 68, 68, 68, 3120, 3121, 3120, 3120, 3120, 1207, 1207, 1207, 1207, 1207, 1207, 68, 68, 68, 68, 68, 3120, 3120, 3120, 3120, 3120, 1, 1206, 1208, 1207, 1207, 1207, 1207, 1213, 1207, 1214, 71, 72, 71, 68, 1207, 1209, 1207, 1207, 1207, 1207, 1207, 68, 68, 68, 61, 73, 68, 68, 3120, 3121, 3120, 3122, 3123, 3120, 3120, 1207, 1207, 1207, 1207, 1207, 1207, 68, 68, 68, 68, 68, 3120, 3120, 3120, 3120, 3120, 1, 58, 71, 72, 71, 68, 68, 68, 61, 73, 68, 68, 68, 68, 68, 68, 1416, 1416, 1416, 68, 68, 68, 3124, 3124, 3124, 1, 58, 71, 72, 71, 68, 68, 68, 61, 73, 68, 68, 68, 68, 68, 68, 1207, 1207, 1207, 68, 68, 68, 3120, 3120, 3120, 1, 1206, 1208, 1207, 1207, 1207, 1207, 1213, 1207, 1207, 1207, 1214, 73, 76, 73, 78, 79, 77, 1207, 1209, 1207, 1207, 1207, 77, 77, 77, 77, 77, 3125, 3126, 3125, 3125, 3125, 1207, 1207, 1207, 1207, 1207, 1207, 77, 77, 77, 77, 77, 3125, 3125, 3125, 3125, 3125, 1, 1206, 1208, 1207, 1207, 1207, 1207, 1213, 1207, 1207, 1214, 82, 64, 82, 77, 1207, 1209, 1207, 1207, 1207, 1207, 77, 77, 77, 61, 77, 77, 3125, 3126, 3125, 3122, 3125, 3125, 1207, 1207, 1207, 1207, 1207, 1207, 77, 77, 77, 77, 77, 3125, 3125, 3125, 3125, 3125, 1, 58, 82, 64, 82, 77, 77, 77, 61, 77, 77, 77, 77, 77, 77, 1416, 1416, 1416, 77, 77, 77, 3127, 3127, 3127, 1, 58, 82, 64, 82, 77, 77, 77, 61, 77, 77, 77, 77, 77, 77, 1207, 1207, 1207, 77, 77, 77, 3125, 3125, 3125, 1, 1206, 1207, 1207, 2186, 2187, 2186, 1207, 1208, 1209, 1419, 1213, 1207, 1214, 1207, 1207, 2188, 2189, 2190, 2401, 2195, 2193, 2188, 2196, 2188, 2188, 2898, 2899, 2900, 3128, 2905, 2903, 2898, 2906, 2898, 2898, 1207, 1207, 1207, 1207, 2188, 2188, 2188, 2188, 2898, 2898, 2898, 2898, 1, 1206, 1420, 1420, 2186, 2187, 2186, 1420, 1421, 1422, 1213, 1420, 1214, 1423, 1420, 1420, 2402, 2403, 2404, 2195, 2193, 2402, 2196, 2405, 2402, 2402, 3129, 3130, 3131, 2905, 3132, 3129, 2906, 3133, 3129, 3129, 1420, 1420, 1420, 1420, 2402, 2402, 2402, 2402, 3129, 3129, 3129, 3129, 1, 1206, 1420, 1420, 2186, 2187, 2186, 1420, 1421, 1422, 1424, 1420, 1425, 1420, 1420, 2402, 2403, 2404, 2406, 2193, 2402, 2407, 2402, 2402, 3129, 3130, 3131, 3134, 3132, 3129, 3135, 3129, 3129, 1420, 1420, 1420, 1420, 2402, 2402, 2402, 2402, 3129, 3129, 3129, 3129, 1, 1421, 1421, 1421, 1421, 1426, 1427, 1421, 1428, 1421, 1421, 2403, 2408, 2409, 2403, 2410, 2403, 2403, 3130, 3136, 3137, 3130, 3138, 3130, 3130, 1421, 1421, 1421, 1421, 2403, 2403, 2403, 2403, 3130, 3130, 3130, 3130, 1, 1429, 1429, 1429, 2411, 2411, 2411, 3139, 3139, 3139, 1, 1421, 1421, 1421, 2403, 2403, 2403, 3130, 3130, 3130, 1, 1427, 1427, 1430, 1427, 1428, 1427, 1427, 2409, 2412, 2409, 2410, 2409, 2409, 3137, 3140, 3137, 3138, 3137, 3137, 1427, 1427, 1427, 1427, 1427, 2409, 2409, 2409, 2409, 2409, 3137, 3137, 3137, 3137, 3137, 1, 1431, 1431, 1431, 2413, 2413, 2413, 3141, 3141, 3141, 1, 1427, 1427, 1427, 2409, 2409, 2409, 3137, 3137, 3137, 1, 1432, 1433, 1434, 1423, 2414, 2415, 2416, 2405, 3142, 3143, 3144, 3133, 1435, 1436, 1436, 2417, 2418, 2418, 3145, 3146, 3146, 1, 1437, 1438, 1437, 2419, 2420, 2419, 3147, 3148, 3147, 1439, 1439, 1439, 2421, 2421, 2421, 3149, 3149, 3149, 1, 1437, 1437, 2419, 2419, 3147, 3147, 1439, 1439, 1439, 2421, 2421, 2421, 3149, 3149, 3149, 1, 1437, 1440, 1437, 2419, 2422, 2419, 3147, 3150, 3147, 1439, 1439, 1439, 2421, 2421, 2421, 3149, 3149, 3149, 1, 1439, 1436, 1436, 2421, 2418, 2418, 3149, 3146, 3146, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1441, 1442, 1211, 1443, 1441, 2423, 2424, 2192, 2425, 2423, 3151, 3152, 2902, 3153, 3151, 1436, 1436, 1436, 2418, 2418, 2418, 3146, 3146, 3146, 1, 1441, 1441, 2423, 2423, 3151, 3151, 1436, 1436, 1436, 2418, 2418, 2418, 3146, 3146, 3146, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1211, 1443, 2192, 2425, 2902, 3153, 1439, 1436, 1436, 2421, 2418, 2418, 3149, 3146, 3146, 1, 1444, 1446, 2426, 2428, 3154, 3156, 1445, 1447, 2427, 2429, 3155, 3157, 1, 1448, 2430, 3158, 1449, 2431, 3159, 1, 1450, 2432, 3160, 1451, 2433, 3161, 1, 1452, 2434, 3162, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1211, 2192, 2902, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1211, 2192, 2902, 1452, 2434, 3162, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1211, 2192, 2902, 1451, 2433, 3161, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1211, 2192, 2902, 1447, 2429, 3157, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1211, 2192, 2902, 1449, 2431, 3159, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1211, 1453, 2192, 2435, 2902, 3163, 1447, 1449, 2429, 2431, 3157, 3159, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1211, 1454, 2192, 2436, 2902, 3164, 1449, 1451, 2431, 2433, 3159, 3161, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1211, 1455, 2192, 2437, 2902, 3165, 1451, 1452, 2433, 2434, 3161, 3162, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1211, 2192, 2902, 1452, 2434, 3162, 1, 1456, 1457, 1458, 2438, 2439, 2440, 3166, 3167, 3168, 1459, 1436, 1436, 2441, 2418, 2418, 3169, 3146, 3146, 1, 1437, 1460, 1437, 2419, 2442, 2419, 3147, 3170, 3147, 1439, 1439, 1439, 2421, 2421, 2421, 3149, 3149, 3149, 1, 1461, 1462, 1463, 2443, 2444, 2445, 3171, 3172, 3173, 1464, 1436, 1436, 2446, 2418, 2418, 3174, 3146, 3146, 1, 1437, 1465, 1437, 2419, 2447, 2419, 3147, 3175, 3147, 1439, 1439, 1439, 2421, 2421, 2421, 3149, 3149, 3149, 1, 1466, 1467, 1468, 2448, 2449, 2450, 3176, 3177, 3178, 1469, 1436, 1436, 2451, 2418, 2418, 3179, 3146, 3146, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1437, 1440, 1211, 1443, 1437, 2419, 2422, 2192, 2425, 2419, 3147, 3150, 2902, 3153, 3147, 1439, 1439, 1439, 2421, 2421, 2421, 3149, 3149, 3149, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1437, 1440, 1211, 1443, 1437, 2419, 2422, 2192, 2425, 2419, 3147, 3150, 2902, 3153, 3147, 1469, 1439, 1439, 2451, 2421, 2421, 3179, 3149, 3149, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1437, 1440, 1211, 1443, 1437, 2419, 2422, 2192, 2425, 2419, 3147, 3150, 2902, 3153, 3147, 1466, 1439, 1439, 2448, 2421, 2421, 3176, 3149, 3149, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1437, 1440, 1211, 1470, 1443, 1437, 2419, 2422, 2192, 2452, 2425, 2419, 3147, 3150, 2902, 3180, 3153, 3147, 1469, 1466, 1439, 1439, 2451, 2448, 2421, 2421, 3179, 3176, 3149, 3149, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1437, 1440, 1211, 1443, 1437, 2419, 2422, 2192, 2425, 2419, 3147, 3150, 2902, 3153, 3147, 1466, 1439, 1439, 1439, 2448, 2421, 2421, 2421, 3176, 3149, 3149, 3149, 1, 1437, 1465, 1437, 2419, 2447, 2419, 3147, 3175, 3147, 1464, 1439, 1439, 2446, 2421, 2421, 3174, 3149, 3149, 1, 1437, 1465, 1437, 2419, 2447, 2419, 3147, 3175, 3147, 1461, 1439, 1439, 2443, 2421, 2421, 3171, 3149, 3149, 1, 1437, 1465, 1471, 1437, 2419, 2447, 2453, 2419, 3147, 3175, 3181, 3147, 1464, 1461, 1439, 1439, 2446, 2443, 2421, 2421, 3174, 3171, 3149, 3149, 1, 1437, 1465, 1437, 2419, 2447, 2419, 3147, 3175, 3147, 1461, 1439, 1439, 1439, 2443, 2421, 2421, 2421, 3171, 3149, 3149, 3149, 1, 1437, 1460, 1437, 2419, 2442, 2419, 3147, 3170, 3147, 1459, 1439, 1439, 2441, 2421, 2421, 3169, 3149, 3149, 1, 1437, 1460, 1437, 2419, 2442, 2419, 3147, 3170, 3147, 1456, 1439, 1439, 2438, 2421, 2421, 3166, 3149, 3149, 1, 1437, 1460, 1472, 1437, 2419, 2442, 2454, 2419, 3147, 3170, 3182, 3147, 1459, 1456, 1439, 1439, 2441, 2438, 2421, 2421, 3169, 3166, 3149, 3149, 1, 1437, 1460, 1437, 2419, 2442, 2419, 3147, 3170, 3147, 1456, 1439, 1439, 1439, 2438, 2421, 2421, 2421, 3166, 3149, 3149, 3149, 1, 1437, 1438, 1437, 2419, 2420, 2419, 3147, 3148, 3147, 1435, 1439, 1439, 2417, 2421, 2421, 3145, 3149, 3149, 1, 1437, 1438, 1437, 2419, 2420, 2419, 3147, 3148, 3147, 1432, 1439, 1439, 2414, 2421, 2421, 3142, 3149, 3149, 1, 1437, 1438, 1473, 1437, 2419, 2420, 2455, 2419, 3147, 3148, 3183, 3147, 1435, 1432, 1439, 1439, 2417, 2414, 2421, 2421, 3145, 3142, 3149, 3149, 1, 1437, 1438, 1437, 2419, 2420, 2419, 3147, 3148, 3147, 1432, 1439, 1439, 1439, 2414, 2421, 2421, 2421, 3142, 3149, 3149, 3149, 1, 1475, 2457, 3185, 1474, 1474, 1474, 2456, 2456, 2456, 3184, 3184, 3184, 1, 1477, 2459, 3187, 1476, 1476, 1476, 2458, 2458, 2458, 3186, 3186, 3186, 1, 1477, 2459, 3187, 1478, 1478, 1478, 2460, 2460, 2460, 3188, 3188, 3188, 1, 1477, 2459, 3187, 1479, 1479, 1479, 2461, 2461, 2461, 3189, 3189, 3189, 1, 1477, 2459, 3187, 1, 1481, 2463, 3191, 1480, 1480, 1480, 2462, 2462, 2462, 3190, 3190, 3190, 1, 1483, 2465, 3193, 1482, 1482, 1482, 2464, 2464, 2464, 3192, 3192, 3192, 1, 1483, 2465, 3193, 1484, 1484, 1484, 2466, 2466, 2466, 3194, 3194, 3194, 1, 1483, 2465, 3193, 1485, 1485, 1485, 2467, 2467, 2467, 3195, 3195, 3195, 1, 1483, 2465, 3193, 1, 1487, 2469, 3197, 1486, 1486, 1486, 2468, 2468, 2468, 3196, 3196, 3196, 1, 1489, 2471, 3199, 1488, 1488, 1488, 2470, 2470, 2470, 3198, 3198, 3198, 1, 1489, 2471, 3199, 1490, 1490, 1490, 2472, 2472, 2472, 3200, 3200, 3200, 1, 1489, 2471, 3199, 1491, 1491, 1491, 2473, 2473, 2473, 3201, 3201, 3201, 1, 1489, 2471, 3199, 1, 1493, 2475, 3203, 1492, 1492, 1492, 2474, 2474, 2474, 3202, 3202, 3202, 1, 1495, 2477, 3205, 1494, 1494, 1494, 2476, 2476, 2476, 3204, 3204, 3204, 1, 1495, 2477, 3205, 1496, 1496, 1496, 2478, 2478, 2478, 3206, 3206, 3206, 1, 1495, 2477, 3205, 1497, 1497, 1497, 2479, 2479, 2479, 3207, 3207, 3207, 1, 1495, 2477, 3205, 1, 1499, 2481, 3209, 1498, 1498, 1498, 2480, 2480, 2480, 3208, 3208, 3208, 1, 1501, 2483, 3211, 1500, 1500, 1500, 2482, 2482, 2482, 3210, 3210, 3210, 1, 1501, 2483, 3211, 1502, 1502, 1502, 2484, 2484, 2484, 3212, 3212, 3212, 1, 1501, 2483, 3211, 1503, 1503, 1503, 2485, 2485, 2485, 3213, 3213, 3213, 1, 1501, 2483, 3211, 1, 1505, 2487, 3215, 1504, 1504, 1504, 2486, 2486, 2486, 3214, 3214, 3214, 1, 1507, 2489, 3217, 1506, 1506, 1506, 2488, 2488, 2488, 3216, 3216, 3216, 1, 1507, 2489, 3217, 1508, 1508, 1508, 2490, 2490, 2490, 3218, 3218, 3218, 1, 1507, 2489, 3217, 1509, 1509, 1509, 2491, 2491, 2491, 3219, 3219, 3219, 1, 1507, 2489, 3217, 1, 1510, 1511, 1512, 1514, 2492, 2493, 2494, 2496, 3220, 3221, 3222, 3224, 1513, 1515, 1515, 2495, 2497, 2497, 3223, 3225, 3225, 1, 1516, 1518, 2498, 2500, 3226, 3228, 1517, 1517, 1517, 2499, 2499, 2499, 3227, 3227, 3227, 1, 1519, 1520, 1521, 2501, 2502, 2503, 3229, 3230, 3231, 1522, 2504, 3232, 1, 1523, 2505, 3233, 1, 1524, 1525, 1526, 2506, 2507, 2508, 3234, 3235, 3236, 1527, 2509, 3237, 1, 1528, 2510, 3238, 1, 1529, 1530, 1531, 2511, 2512, 2513, 3239, 3240, 3241, 1532, 2514, 3242, 1, 1533, 2515, 3243, 1, 1206, 1211, 2186, 2187, 2186, 2193, 1211, 1443, 2192, 2425, 2902, 3153, 1, 1533, 2515, 3243, 1532, 2514, 3242, 1, 1533, 2515, 3243, 1529, 2511, 3239, 1, 1534, 1533, 2516, 2515, 3244, 3243, 1532, 1529, 2514, 2511, 3242, 3239, 1, 1533, 2515, 3243, 1529, 2511, 3239, 1, 1528, 2510, 3238, 1527, 2509, 3237, 1, 1528, 2510, 3238, 1524, 2506, 3234, 1, 1528, 1535, 2510, 2517, 3238, 3245, 1527, 1524, 2509, 2506, 3237, 3234, 1, 1528, 2510, 3238, 1524, 2506, 3234, 1, 1523, 2505, 3233, 1522, 2504, 3232, 1, 1523, 2505, 3233, 1519, 2501, 3229, 1, 1523, 1536, 2505, 2518, 3233, 3246, 1522, 1519, 2504, 2501, 3232, 3229, 1, 1523, 2505, 3233, 1519, 2501, 3229, 1, 1518, 2500, 3228, 1537, 1537, 1537, 2519, 2519, 2519, 3247, 3247, 3247, 1, 1518, 2500, 3228, 1538, 1538, 1538, 2520, 2520, 2520, 3248, 3248, 3248, 1, 1518, 2500, 3228, 1, 1529, 2511, 3239, 1539, 1539, 1539, 2521, 2521, 2521, 3249, 3249, 3249, 1, 1533, 2515, 3243, 1540, 1540, 1540, 2522, 2522, 2522, 3250, 3250, 3250, 1, 1533, 2515, 3243, 1541, 1541, 1541, 2523, 2523, 2523, 3251, 3251, 3251, 1, 1533, 2515, 3243, 1529, 1529, 1529, 2511, 2511, 2511, 3239, 3239, 3239, 1, 1516, 1518, 2498, 2500, 3226, 3228, 1542, 1517, 1517, 2524, 2499, 2499, 3252, 3227, 3227, 1, 1516, 1518, 2498, 2500, 3226, 3228, 1543, 1537, 1537, 2525, 2519, 2519, 3253, 3247, 3247, 1, 1516, 1518, 2498, 2500, 3226, 3228, 1538, 1538, 1538, 2520, 2520, 2520, 3248, 3248, 3248, 1, 1516, 1544, 1518, 2498, 2526, 2500, 3226, 3254, 3228, 1542, 1545, 1517, 1517, 2524, 2527, 2499, 2499, 3252, 3255, 3227, 3227, 1, 1516, 1518, 2498, 2500, 3226, 3228, 1543, 1537, 1537, 1537, 2525, 2519, 2519, 2519, 3253, 3247, 3247, 3247, 1, 1516, 1518, 2498, 2500, 3226, 3228, 1537, 1537, 1537, 2519, 2519, 2519, 3247, 3247, 3247, 1, 1516, 1518, 2498, 2500, 3226, 3228, 1545, 1517, 1517, 2527, 2499, 2499, 3255, 3227, 3227, 1, 1533, 2515, 3243, 1539, 1539, 1539, 2521, 2521, 2521, 3249, 3249, 3249, 1, 1518, 2500, 3228, 1517, 1517, 1517, 2499, 2499, 2499, 3227, 3227, 3227, 1, 1546, 1547, 1548, 1533, 2528, 2529, 2530, 2515, 3256, 3257, 3258, 3243, 1549, 1550, 1550, 2531, 2532, 2532, 3259, 3260, 3260, 1, 1516, 1552, 1533, 2498, 2534, 2515, 3226, 3262, 3243, 1551, 1551, 1551, 2533, 2533, 2533, 3261, 3261, 3261, 1, 1552, 1533, 2534, 2515, 3262, 3243, 1553, 1553, 1553, 2535, 2535, 2535, 3263, 3263, 3263, 1, 1552, 1533, 2534, 2515, 3262, 3243, 1554, 1554, 1554, 2536, 2536, 2536, 3264, 3264, 3264, 1, 1552, 1533, 2534, 2515, 3262, 3243, 1, 1539, 1539, 1539, 2521, 2521, 2521, 3249, 3249, 3249, 1, 1516, 1552, 1533, 2498, 2534, 2515, 3226, 3262, 3243, 1555, 1551, 1551, 2537, 2533, 2533, 3265, 3261, 3261, 1, 1516, 1552, 1533, 2498, 2534, 2515, 3226, 3262, 3243, 1556, 1553, 1553, 2538, 2535, 2535, 3266, 3263, 3263, 1, 1516, 1552, 1533, 2498, 2534, 2515, 3226, 3262, 3243, 1554, 1554, 1554, 2536, 2536, 2536, 3264, 3264, 3264, 1, 1516, 1557, 1552, 1533, 2498, 2539, 2534, 2515, 3226, 3267, 3262, 3243, 1555, 1558, 1551, 1551, 2537, 2540, 2533, 2533, 3265, 3268, 3261, 3261, 1, 1516, 1552, 1533, 2498, 2534, 2515, 3226, 3262, 3243, 1556, 1553, 1553, 1553, 2538, 2535, 2535, 2535, 3266, 3263, 3263, 3263, 1, 1516, 1552, 1533, 2498, 2534, 2515, 3226, 3262, 3243, 1553, 1553, 1553, 2535, 2535, 2535, 3263, 3263, 3263, 1, 1516, 1552, 1533, 2498, 2534, 2515, 3226, 3262, 3243, 1558, 1551, 1551, 2540, 2533, 2533, 3268, 3261, 3261, 1, 1552, 1533, 2534, 2515, 3262, 3243, 1551, 1551, 1551, 2533, 2533, 2533, 3261, 3261, 3261, 1, 1559, 1560, 1561, 1533, 2541, 2542, 2543, 2515, 3269, 3270, 3271, 3243, 1562, 1563, 1563, 2544, 2545, 2545, 3272, 3273, 3273, 1, 1516, 1565, 1533, 2498, 2547, 2515, 3226, 3275, 3243, 1564, 1564, 1564, 2546, 2546, 2546, 3274, 3274, 3274, 1, 1565, 1533, 2547, 2515, 3275, 3243, 1566, 1566, 1566, 2548, 2548, 2548, 3276, 3276, 3276, 1, 1565, 1533, 2547, 2515, 3275, 3243, 1567, 1567, 1567, 2549, 2549, 2549, 3277, 3277, 3277, 1, 1565, 1533, 2547, 2515, 3275, 3243, 1, 1546, 1547, 1548, 2528, 2529, 2530, 3256, 3257, 3258, 1549, 1550, 1550, 2531, 2532, 2532, 3259, 3260, 3260, 1, 1516, 1565, 1533, 2498, 2547, 2515, 3226, 3275, 3243, 1568, 1564, 1564, 2550, 2546, 2546, 3278, 3274, 3274, 1, 1516, 1565, 1533, 2498, 2547, 2515, 3226, 3275, 3243, 1569, 1566, 1566, 2551, 2548, 2548, 3279, 3276, 3276, 1, 1516, 1565, 1533, 2498, 2547, 2515, 3226, 3275, 3243, 1567, 1567, 1567, 2549, 2549, 2549, 3277, 3277, 3277, 1, 1516, 1570, 1565, 1533, 2498, 2552, 2547, 2515, 3226, 3280, 3275, 3243, 1568, 1571, 1564, 1564, 2550, 2553, 2546, 2546, 3278, 3281, 3274, 3274, 1, 1516, 1565, 1533, 2498, 2547, 2515, 3226, 3275, 3243, 1569, 1566, 1566, 1566, 2551, 2548, 2548, 2548, 3279, 3276, 3276, 3276, 1, 1516, 1565, 1533, 2498, 2547, 2515, 3226, 3275, 3243, 1566, 1566, 1566, 2548, 2548, 2548, 3276, 3276, 3276, 1, 1516, 1565, 1533, 2498, 2547, 2515, 3226, 3275, 3243, 1571, 1564, 1564, 2553, 2546, 2546, 3281, 3274, 3274, 1, 1565, 1533, 2547, 2515, 3275, 3243, 1564, 1564, 1564, 2546, 2546, 2546, 3274, 3274, 3274, 1, 1572, 1573, 1574, 1533, 2554, 2555, 2556, 2515, 3282, 3283, 3284, 3243, 1575, 1576, 1576, 2557, 2558, 2558, 3285, 3286, 3286, 1, 1516, 1578, 1533, 2498, 2560, 2515, 3226, 3288, 3243, 1577, 1577, 1577, 2559, 2559, 2559, 3287, 3287, 3287, 1, 1578, 1533, 2560, 2515, 3288, 3243, 1579, 1579, 1579, 2561, 2561, 2561, 3289, 3289, 3289, 1, 1578, 1533, 2560, 2515, 3288, 3243, 1580, 1580, 1580, 2562, 2562, 2562, 3290, 3290, 3290, 1, 1578, 1533, 2560, 2515, 3288, 3243, 1, 1559, 1560, 1561, 2541, 2542, 2543, 3269, 3270, 3271, 1562, 1563, 1563, 2544, 2545, 2545, 3272, 3273, 3273, 1, 1516, 1578, 1533, 2498, 2560, 2515, 3226, 3288, 3243, 1581, 1577, 1577, 2563, 2559, 2559, 3291, 3287, 3287, 1, 1516, 1578, 1533, 2498, 2560, 2515, 3226, 3288, 3243, 1582, 1579, 1579, 2564, 2561, 2561, 3292, 3289, 3289, 1, 1516, 1578, 1533, 2498, 2560, 2515, 3226, 3288, 3243, 1580, 1580, 1580, 2562, 2562, 2562, 3290, 3290, 3290, 1, 1516, 1583, 1578, 1533, 2498, 2565, 2560, 2515, 3226, 3293, 3288, 3243, 1581, 1584, 1577, 1577, 2563, 2566, 2559, 2559, 3291, 3294, 3287, 3287, 1, 1516, 1578, 1533, 2498, 2560, 2515, 3226, 3288, 3243, 1582, 1579, 1579, 1579, 2564, 2561, 2561, 2561, 3292, 3289, 3289, 3289, 1, 1516, 1578, 1533, 2498, 2560, 2515, 3226, 3288, 3243, 1579, 1579, 1579, 2561, 2561, 2561, 3289, 3289, 3289, 1, 1516, 1578, 1533, 2498, 2560, 2515, 3226, 3288, 3243, 1584, 1577, 1577, 2566, 2559, 2559, 3294, 3287, 3287, 1, 1578, 1533, 2560, 2515, 3288, 3243, 1577, 1577, 1577, 2559, 2559, 2559, 3287, 3287, 3287, 1, 1585, 1586, 1587, 1533, 2567, 2568, 2569, 2515, 3295, 3296, 3297, 3243, 1588, 1589, 1589, 2570, 2571, 2571, 3298, 3299, 3299, 1, 1516, 1591, 1533, 2498, 2573, 2515, 3226, 3301, 3243, 1590, 1590, 1590, 2572, 2572, 2572, 3300, 3300, 3300, 1, 1591, 1533, 2573, 2515, 3301, 3243, 1592, 1592, 1592, 2574, 2574, 2574, 3302, 3302, 3302, 1, 1591, 1533, 2573, 2515, 3301, 3243, 1593, 1593, 1593, 2575, 2575, 2575, 3303, 3303, 3303, 1, 1591, 1533, 2573, 2515, 3301, 3243, 1, 1572, 1573, 1574, 2554, 2555, 2556, 3282, 3283, 3284, 1575, 1576, 1576, 2557, 2558, 2558, 3285, 3286, 3286, 1, 1516, 1591, 1533, 2498, 2573, 2515, 3226, 3301, 3243, 1594, 1590, 1590, 2576, 2572, 2572, 3304, 3300, 3300, 1, 1516, 1591, 1533, 2498, 2573, 2515, 3226, 3301, 3243, 1595, 1592, 1592, 2577, 2574, 2574, 3305, 3302, 3302, 1, 1516, 1591, 1533, 2498, 2573, 2515, 3226, 3301, 3243, 1593, 1593, 1593, 2575, 2575, 2575, 3303, 3303, 3303, 1, 1516, 1596, 1591, 1533, 2498, 2578, 2573, 2515, 3226, 3306, 3301, 3243, 1594, 1597, 1590, 1590, 2576, 2579, 2572, 2572, 3304, 3307, 3300, 3300, 1, 1516, 1591, 1533, 2498, 2573, 2515, 3226, 3301, 3243, 1595, 1592, 1592, 1592, 2577, 2574, 2574, 2574, 3305, 3302, 3302, 3302, 1, 1516, 1591, 1533, 2498, 2573, 2515, 3226, 3301, 3243, 1592, 1592, 1592, 2574, 2574, 2574, 3302, 3302, 3302, 1, 1516, 1591, 1533, 2498, 2573, 2515, 3226, 3301, 3243, 1597, 1590, 1590, 2579, 2572, 2572, 3307, 3300, 3300, 1, 1591, 1533, 2573, 2515, 3301, 3243, 1590, 1590, 1590, 2572, 2572, 2572, 3300, 3300, 3300, 1, 1598, 1599, 1600, 1533, 2580, 2581, 2582, 2515, 3308, 3309, 3310, 3243, 1601, 1602, 1602, 2583, 2584, 2584, 3311, 3312, 3312, 1, 1516, 1604, 1533, 2498, 2586, 2515, 3226, 3314, 3243, 1603, 1603, 1603, 2585, 2585, 2585, 3313, 3313, 3313, 1, 1604, 1533, 2586, 2515, 3314, 3243, 1605, 1605, 1605, 2587, 2587, 2587, 3315, 3315, 3315, 1, 1604, 1533, 2586, 2515, 3314, 3243, 1606, 1606, 1606, 2588, 2588, 2588, 3316, 3316, 3316, 1, 1604, 1533, 2586, 2515, 3314, 3243, 1, 1585, 1586, 1587, 2567, 2568, 2569, 3295, 3296, 3297, 1588, 1589, 1589, 2570, 2571, 2571, 3298, 3299, 3299, 1, 1516, 1604, 1533, 2498, 2586, 2515, 3226, 3314, 3243, 1607, 1603, 1603, 2589, 2585, 2585, 3317, 3313, 3313, 1, 1516, 1604, 1533, 2498, 2586, 2515, 3226, 3314, 3243, 1608, 1605, 1605, 2590, 2587, 2587, 3318, 3315, 3315, 1, 1516, 1604, 1533, 2498, 2586, 2515, 3226, 3314, 3243, 1606, 1606, 1606, 2588, 2588, 2588, 3316, 3316, 3316, 1, 1516, 1609, 1604, 1533, 2498, 2591, 2586, 2515, 3226, 3319, 3314, 3243, 1607, 1610, 1603, 1603, 2589, 2592, 2585, 2585, 3317, 3320, 3313, 3313, 1, 1516, 1604, 1533, 2498, 2586, 2515, 3226, 3314, 3243, 1608, 1605, 1605, 1605, 2590, 2587, 2587, 2587, 3318, 3315, 3315, 3315, 1, 1516, 1604, 1533, 2498, 2586, 2515, 3226, 3314, 3243, 1605, 1605, 1605, 2587, 2587, 2587, 3315, 3315, 3315, 1, 1516, 1604, 1533, 2498, 2586, 2515, 3226, 3314, 3243, 1610, 1603, 1603, 2592, 2585, 2585, 3320, 3313, 3313, 1, 1604, 1533, 2586, 2515, 3314, 3243, 1603, 1603, 1603, 2585, 2585, 2585, 3313, 3313, 3313, 1, 1611, 2593, 3321, 1, 1612, 1613, 1614, 1533, 2594, 2595, 2596, 2515, 3322, 3323, 3324, 3243, 1615, 1616, 1616, 2597, 2598, 2598, 3325, 3326, 3326, 1, 1516, 1618, 1533, 2498, 2600, 2515, 3226, 3328, 3243, 1617, 1617, 1617, 2599, 2599, 2599, 3327, 3327, 3327, 1, 1618, 1533, 2600, 2515, 3328, 3243, 1619, 1619, 1619, 2601, 2601, 2601, 3329, 3329, 3329, 1, 1618, 1533, 2600, 2515, 3328, 3243, 1620, 1620, 1620, 2602, 2602, 2602, 3330, 3330, 3330, 1, 1618, 1533, 2600, 2515, 3328, 3243, 1, 1598, 1599, 1600, 2580, 2581, 2582, 3308, 3309, 3310, 1601, 1602, 1602, 2583, 2584, 2584, 3311, 3312, 3312, 1, 1516, 1618, 1533, 2498, 2600, 2515, 3226, 3328, 3243, 1621, 1617, 1617, 2603, 2599, 2599, 3331, 3327, 3327, 1, 1516, 1618, 1533, 2498, 2600, 2515, 3226, 3328, 3243, 1622, 1619, 1619, 2604, 2601, 2601, 3332, 3329, 3329, 1, 1516, 1618, 1533, 2498, 2600, 2515, 3226, 3328, 3243, 1620, 1620, 1620, 2602, 2602, 2602, 3330, 3330, 3330, 1, 1516, 1623, 1618, 1533, 2498, 2605, 2600, 2515, 3226, 3333, 3328, 3243, 1621, 1624, 1617, 1617, 2603, 2606, 2599, 2599, 3331, 3334, 3327, 3327, 1, 1516, 1618, 1533, 2498, 2600, 2515, 3226, 3328, 3243, 1622, 1619, 1619, 1619, 2604, 2601, 2601, 2601, 3332, 3329, 3329, 3329, 1, 1516, 1618, 1533, 2498, 2600, 2515, 3226, 3328, 3243, 1619, 1619, 1619, 2601, 2601, 2601, 3329, 3329, 3329, 1, 1516, 1618, 1533, 2498, 2600, 2515, 3226, 3328, 3243, 1624, 1617, 1617, 2606, 2599, 2599, 3334, 3327, 3327, 1, 1618, 1533, 2600, 2515, 3328, 3243, 1617, 1617, 1617, 2599, 2599, 2599, 3327, 3327, 3327, 1, 1625, 1625, 1625, 2607, 2607, 2607, 3335, 3335, 3335, 1, 1420, 1420, 1420, 2402, 2402, 2402, 3129, 3129, 3129, 1, 1206, 1424, 1211, 2186, 2187, 2186, 1424, 1626, 1211, 1424, 1425, 1424, 1424, 2406, 2608, 2192, 2192, 2193, 2406, 2407, 2406, 2406, 3134, 3336, 2902, 2902, 3108, 3134, 3135, 3134, 3134, 1424, 1424, 1211, 1424, 1424, 2406, 2406, 2406, 2406, 3134, 3134, 3134, 3134, 1, 1627, 1627, 1627, 2609, 2609, 2609, 3337, 3337, 3337, 1, 1424, 1424, 1424, 2406, 2406, 2406, 3134, 3134, 3134, 1, 1206, 1211, 1211, 2186, 2187, 2186, 1211, 1242, 1211, 1423, 1211, 1211, 2192, 2399, 2193, 2192, 2405, 2192, 2192, 2902, 3110, 3108, 2902, 3133, 2902, 2902, 1211, 1211, 1211, 1211, 2192, 2192, 2192, 2192, 2902, 2902, 2902, 2902, 1, 1206, 1421, 1420, 1420, 1420, 1420, 1424, 1420, 1420, 1420, 1425, 61, 67, 61, 68, 1420, 1422, 1420, 1420, 1420, 68, 68, 68, 68, 68, 3338, 3339, 3338, 3338, 3338, 1420, 1420, 1420, 1420, 1420, 1420, 68, 68, 68, 68, 68, 3338, 3338, 3338, 3338, 3338, 1, 1206, 1421, 1420, 1420, 1420, 1420, 1424, 1420, 1425, 71, 72, 71, 68, 1420, 1422, 1420, 1420, 1420, 1420, 1420, 68, 68, 68, 61, 73, 68, 68, 3338, 3339, 3338, 3340, 3341, 3338, 3338, 1420, 1420, 1420, 1420, 1420, 1420, 68, 68, 68, 68, 68, 3338, 3338, 3338, 3338, 3338, 1, 58, 71, 72, 71, 68, 68, 68, 61, 73, 68, 68, 68, 68, 68, 68, 1625, 1625, 1625, 68, 68, 68, 3342, 3342, 3342, 1, 58, 71, 72, 71, 68, 68, 68, 61, 73, 68, 68, 68, 68, 68, 68, 1420, 1420, 1420, 68, 68, 68, 3338, 3338, 3338, 1, 1206, 1421, 1420, 1420, 1420, 1420, 1424, 1420, 1420, 1420, 1425, 73, 76, 73, 78, 79, 77, 1420, 1422, 1420, 1420, 1420, 77, 77, 77, 77, 77, 3343, 3344, 3343, 3343, 3343, 1420, 1420, 1420, 1420, 1420, 1420, 77, 77, 77, 77, 77, 3343, 3343, 3343, 3343, 3343, 1, 1206, 1421, 1420, 1420, 1420, 1420, 1424, 1420, 1420, 1425, 82, 64, 82, 77, 1420, 1422, 1420, 1420, 1420, 1420, 77, 77, 77, 61, 77, 77, 3343, 3344, 3343, 3340, 3343, 3343, 1420, 1420, 1420, 1420, 1420, 1420, 77, 77, 77, 77, 77, 3343, 3343, 3343, 3343, 3343, 1, 58, 82, 64, 82, 77, 77, 77, 61, 77, 77, 77, 77, 77, 77, 1625, 1625, 1625, 77, 77, 77, 3345, 3345, 3345, 1, 58, 82, 64, 82, 77, 77, 77, 61, 77, 77, 77, 77, 77, 77, 1420, 1420, 1420, 77, 77, 77, 3343, 3343, 3343, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 1187, 1186, 1204, 1205, 1628, 1628, 2184, 2185, 2610, 2610, 2896, 2897, 3346, 3346, 1186, 1204, 1204, 1204, 1204, 2184, 2184, 2184, 2184, 2896, 2896, 2896, 2896, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 1187, 1186, 1204, 1205, 1629, 1629, 2184, 2185, 2611, 2611, 2896, 2897, 3347, 3347, 1186, 1204, 1204, 1204, 1204, 2184, 2184, 2184, 2184, 2896, 2896, 2896, 2896, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 1187, 1186, 1204, 1630, 1631, 1631, 2184, 2612, 2613, 2613, 2896, 3348, 3349, 3349, 1186, 1204, 1204, 1204, 1204, 2184, 2184, 2184, 2184, 2896, 2896, 2896, 2896, 1, 1632, 1632, 1632, 1632, 1633, 1634, 1635, 1636, 1632, 1639, 1632, 1632, 2614, 2615, 2616, 2617, 2618, 2614, 2621, 2614, 2614, 3350, 3351, 3352, 3353, 3354, 3350, 3357, 3350, 3350, 1632, 1632, 1637, 1638, 1638, 2614, 2614, 2619, 2620, 2620, 3350, 3350, 3355, 3356, 3356, 1, 1640, 1640, 1640, 1640, 1641, 1642, 1640, 1643, 1640, 1640, 2622, 2623, 2624, 2622, 2625, 2622, 2622, 3358, 3359, 3360, 3358, 3361, 3358, 3358, 1640, 1640, 1640, 1640, 2622, 2622, 2622, 2622, 3358, 3358, 3358, 3358, 1, 1644, 1644, 1644, 2626, 2626, 2626, 3362, 3362, 3362, 1, 1640, 1640, 1640, 2622, 2622, 2622, 3358, 3358, 3358, 1, 1642, 1642, 1645, 1642, 1643, 1642, 1642, 2624, 2627, 2624, 2625, 2624, 2624, 3360, 3363, 3360, 3361, 3360, 3360, 1642, 1642, 1642, 1642, 1642, 2624, 2624, 2624, 2624, 2624, 3360, 3360, 3360, 3360, 3360, 1, 1646, 1646, 1646, 2628, 2628, 2628, 3364, 3364, 3364, 1, 1642, 1642, 1642, 2624, 2624, 2624, 3360, 3360, 3360, 1, 1647, 1648, 1649, 1639, 2629, 2630, 2631, 2621, 3365, 3366, 3367, 3357, 1650, 1651, 1651, 2632, 2633, 2633, 3368, 3369, 3369, 1, 1652, 1653, 1652, 2634, 2635, 2634, 3370, 3371, 3370, 1654, 1654, 1654, 2636, 2636, 2636, 3372, 3372, 3372, 1, 1652, 1652, 2634, 2634, 3370, 3370, 1654, 1654, 1654, 2636, 2636, 2636, 3372, 3372, 3372, 1, 1652, 1655, 1652, 2634, 2637, 2634, 3370, 3373, 3370, 1654, 1654, 1654, 2636, 2636, 2636, 3372, 3372, 3372, 1, 1654, 1656, 1656, 2636, 2638, 2638, 3372, 3374, 3374, 1, 1657, 1662, 2639, 2640, 2639, 1658, 1659, 1660, 1661, 1658, 2641, 2642, 2643, 2644, 2641, 3375, 3376, 3377, 3378, 3375, 1656, 1656, 1656, 2638, 2638, 2638, 3374, 3374, 3374, 1, 1658, 1658, 2641, 2641, 3375, 3375, 1656, 1656, 1656, 2638, 2638, 2638, 3374, 3374, 3374, 1, 1657, 1662, 2639, 2640, 2639, 1660, 1661, 2643, 2644, 3377, 3378, 1654, 1656, 1656, 2636, 2638, 2638, 3372, 3374, 3374, 1, 1663, 1665, 2645, 2647, 3379, 3381, 1664, 1666, 2646, 2648, 3380, 3382, 1, 1667, 2649, 3383, 1668, 2650, 3384, 1, 1669, 2651, 3385, 1670, 2652, 3386, 1, 1671, 2653, 3387, 1, 1672, 1674, 2654, 2655, 2654, 1673, 2656, 3388, 1, 1675, 1675, 1675, 1675, 1675, 1675, 61, 67, 61, 68, 1675, 1676, 1675, 1677, 1678, 1679, 1675, 1677, 1678, 1679, 1675, 68, 68, 68, 68, 68, 3389, 3390, 3389, 3391, 3392, 3393, 3389, 3391, 3392, 3393, 3389, 1675, 1675, 1675, 1675, 1675, 1675, 68, 68, 68, 68, 68, 3389, 3389, 3389, 3389, 3389, 1, 1680, 1681, 1681, 1681, 1681, 1685, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1683, 1684, 1681, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3396, 3397, 3394, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 58, 71, 72, 71, 68, 68, 68, 61, 73, 68, 68, 68, 68, 68, 68, 1686, 1686, 1686, 68, 68, 68, 3398, 3398, 3398, 1, 58, 71, 72, 71, 68, 68, 68, 61, 73, 68, 68, 68, 68, 68, 68, 1681, 1681, 1681, 68, 68, 68, 3394, 3394, 3394, 1, 1680, 1687, 1687, 1687, 1687, 1683, 1689, 1685, 1687, 73, 76, 73, 78, 77, 1687, 1688, 1687, 1687, 1687, 77, 77, 77, 79, 77, 77, 3399, 3400, 3399, 3401, 3399, 3399, 1687, 1687, 1687, 1687, 1687, 1687, 77, 77, 77, 77, 77, 3399, 3399, 3399, 3399, 3399, 1, 1690, 1691, 1691, 1691, 1691, 1694, 1691, 1691, 82, 64, 82, 77, 1691, 1692, 1691, 1693, 1691, 1691, 77, 77, 77, 61, 77, 77, 3402, 3403, 3402, 3404, 3402, 3402, 1691, 1691, 1691, 1691, 1691, 1691, 77, 77, 77, 77, 77, 3402, 3402, 3402, 3402, 3402, 1, 58, 82, 64, 82, 77, 77, 77, 61, 77, 77, 77, 77, 77, 77, 1695, 1695, 1695, 77, 77, 77, 3405, 3405, 3405, 1, 58, 82, 64, 82, 77, 77, 77, 61, 77, 77, 77, 77, 77, 77, 1691, 1691, 1691, 77, 77, 77, 3402, 3402, 3402, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 93, 3407, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 92, 92, 92, 3406, 3406, 3406, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 95, 3409, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 94, 94, 94, 3408, 3408, 3408, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 95, 3409, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 96, 96, 96, 3410, 3410, 3410, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 95, 3409, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 97, 97, 97, 3411, 3411, 3411, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 1691, 95, 3409, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 99, 3413, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 98, 98, 98, 3412, 3412, 3412, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 101, 3415, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 100, 100, 100, 3414, 3414, 3414, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 101, 3415, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 102, 102, 102, 3416, 3416, 3416, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 101, 3415, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 103, 103, 103, 3417, 3417, 3417, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 1691, 101, 3415, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 105, 3419, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 104, 104, 104, 3418, 3418, 3418, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 107, 3421, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 106, 106, 106, 3420, 3420, 3420, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 107, 3421, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 108, 108, 108, 3422, 3422, 3422, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 107, 3421, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 109, 109, 109, 3423, 3423, 3423, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 1691, 107, 3421, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 111, 3425, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 110, 110, 110, 3424, 3424, 3424, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 113, 3427, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 112, 112, 112, 3426, 3426, 3426, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 113, 3427, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 114, 114, 114, 3428, 3428, 3428, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 113, 3427, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 115, 115, 115, 3429, 3429, 3429, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 1691, 113, 3427, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 117, 3431, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 116, 116, 116, 3430, 3430, 3430, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 119, 3433, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 118, 118, 118, 3432, 3432, 3432, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 119, 3433, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 120, 120, 120, 3434, 3434, 3434, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 119, 3433, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 121, 121, 121, 3435, 3435, 3435, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 1691, 119, 3433, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 123, 3437, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 122, 122, 122, 3436, 3436, 3436, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 125, 3439, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 124, 124, 124, 3438, 3438, 3438, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 125, 3439, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 126, 126, 126, 3440, 3440, 3440, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 125, 3439, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 127, 127, 127, 3441, 3441, 3441, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 1691, 125, 3439, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 128, 129, 130, 132, 3442, 3443, 3444, 3446, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 131, 133, 133, 3445, 3447, 3447, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 136, 3448, 3450, 1691, 1691, 1691, 1691, 1691, 1691, 135, 135, 135, 3449, 3449, 3449, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 137, 138, 139, 3451, 3452, 3453, 1691, 1691, 1691, 1691, 1691, 140, 3454, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 141, 3455, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 142, 143, 144, 3456, 3457, 3458, 1691, 1691, 1691, 1691, 1691, 145, 3459, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 146, 3460, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 147, 148, 149, 3461, 3462, 3463, 1691, 1691, 1691, 1691, 1691, 150, 3464, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 89, 3465, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1694, 1691, 1691, 1691, 82, 64, 82, 1693, 61, 3404, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 89, 3465, 1691, 1691, 1691, 1691, 1691, 150, 3464, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 89, 3465, 1691, 1691, 1691, 1691, 1691, 147, 3461, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 151, 89, 3466, 3465, 1691, 1691, 1691, 1691, 1691, 150, 147, 3464, 3461, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 89, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 147, 3461, 1, 1690, 1691, 1692, 1691, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 146, 3460, 1691, 1691, 1691, 1691, 145, 3459, 1, 1690, 1691, 1692, 1691, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 146, 3460, 1691, 1691, 1691, 1691, 142, 3456, 1, 1690, 1691, 1692, 1691, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 146, 152, 3460, 3467, 1691, 1691, 1691, 1691, 145, 142, 3459, 3456, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 146, 3460, 1691, 1691, 1691, 1691, 1691, 142, 3456, 1, 1690, 1691, 1692, 1691, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 141, 3455, 1691, 1691, 1691, 1691, 140, 3454, 1, 1690, 1691, 1692, 1691, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 141, 3455, 1691, 1691, 1691, 1691, 137, 3451, 1, 1690, 1691, 1692, 1691, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 141, 153, 3455, 3468, 1691, 1691, 1691, 1691, 140, 137, 3454, 3451, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 141, 3455, 1691, 1691, 1691, 1691, 1691, 137, 3451, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 136, 3450, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 154, 154, 154, 3469, 3469, 3469, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 136, 3450, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 155, 155, 155, 3470, 3470, 3470, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 1691, 136, 3450, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 147, 3461, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 156, 156, 156, 3471, 3471, 3471, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 89, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 157, 157, 157, 3472, 3472, 3472, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 89, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 158, 158, 158, 3473, 3473, 3473, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 89, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 147, 147, 147, 3461, 3461, 3461, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 136, 3448, 3450, 1691, 1691, 1691, 1691, 1691, 1691, 159, 135, 135, 3474, 3449, 3449, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 136, 3448, 3450, 1691, 1691, 1691, 1691, 1691, 1691, 160, 154, 154, 3475, 3469, 3469, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 136, 3448, 3450, 1691, 1691, 1691, 1691, 1691, 1691, 155, 155, 155, 3470, 3470, 3470, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 161, 136, 3448, 3476, 3450, 1691, 1691, 1691, 1691, 1691, 1691, 159, 162, 135, 135, 3474, 3477, 3449, 3449, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 136, 3448, 3450, 1691, 1691, 1691, 1691, 1691, 1691, 160, 154, 154, 154, 3475, 3469, 3469, 3469, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 136, 3448, 3450, 1691, 1691, 1691, 1691, 1691, 1691, 154, 154, 154, 3469, 3469, 3469, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 136, 3448, 3450, 1691, 1691, 1691, 1691, 1691, 1691, 162, 135, 135, 3477, 3449, 3449, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 89, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 156, 156, 156, 3471, 3471, 3471, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 136, 3450, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 135, 135, 135, 3449, 3449, 3449, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 163, 164, 165, 89, 3478, 3479, 3480, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 166, 167, 167, 3481, 3482, 3482, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 169, 89, 3448, 3484, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 168, 168, 168, 3483, 3483, 3483, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 169, 89, 3484, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 170, 170, 170, 3485, 3485, 3485, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 169, 89, 3484, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 171, 171, 171, 3486, 3486, 3486, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 1691, 169, 89, 3484, 3465, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 156, 156, 156, 3471, 3471, 3471, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 169, 89, 3448, 3484, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 172, 168, 168, 3487, 3483, 3483, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 169, 89, 3448, 3484, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 173, 170, 170, 3488, 3485, 3485, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 169, 89, 3448, 3484, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 171, 171, 171, 3486, 3486, 3486, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 174, 169, 89, 3448, 3489, 3484, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 172, 175, 168, 168, 3487, 3490, 3483, 3483, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 169, 89, 3448, 3484, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 173, 170, 170, 170, 3488, 3485, 3485, 3485, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 169, 89, 3448, 3484, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 170, 170, 170, 3485, 3485, 3485, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 169, 89, 3448, 3484, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 175, 168, 168, 3490, 3483, 3483, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 169, 89, 3484, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 168, 168, 168, 3483, 3483, 3483, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 176, 177, 178, 89, 3491, 3492, 3493, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 179, 180, 180, 3494, 3495, 3495, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 182, 89, 3448, 3497, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 181, 181, 181, 3496, 3496, 3496, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 182, 89, 3497, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 183, 183, 183, 3498, 3498, 3498, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 182, 89, 3497, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 184, 184, 184, 3499, 3499, 3499, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 1691, 182, 89, 3497, 3465, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 163, 164, 165, 3478, 3479, 3480, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 166, 167, 167, 3481, 3482, 3482, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 182, 89, 3448, 3497, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 185, 181, 181, 3500, 3496, 3496, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 182, 89, 3448, 3497, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 186, 183, 183, 3501, 3498, 3498, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 182, 89, 3448, 3497, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 184, 184, 184, 3499, 3499, 3499, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 187, 182, 89, 3448, 3502, 3497, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 185, 188, 181, 181, 3500, 3503, 3496, 3496, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 182, 89, 3448, 3497, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 186, 183, 183, 183, 3501, 3498, 3498, 3498, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 182, 89, 3448, 3497, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 183, 183, 183, 3498, 3498, 3498, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 182, 89, 3448, 3497, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 188, 181, 181, 3503, 3496, 3496, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 182, 89, 3497, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 181, 181, 181, 3496, 3496, 3496, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 189, 190, 191, 89, 3504, 3505, 3506, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 192, 193, 193, 3507, 3508, 3508, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 195, 89, 3448, 3510, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 194, 194, 194, 3509, 3509, 3509, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 195, 89, 3510, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 196, 196, 196, 3511, 3511, 3511, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 195, 89, 3510, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 197, 197, 197, 3512, 3512, 3512, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 1691, 195, 89, 3510, 3465, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 176, 177, 178, 3491, 3492, 3493, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 179, 180, 180, 3494, 3495, 3495, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 195, 89, 3448, 3510, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 198, 194, 194, 3513, 3509, 3509, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 195, 89, 3448, 3510, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 199, 196, 196, 3514, 3511, 3511, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 195, 89, 3448, 3510, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 197, 197, 197, 3512, 3512, 3512, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 200, 195, 89, 3448, 3515, 3510, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 198, 201, 194, 194, 3513, 3516, 3509, 3509, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 195, 89, 3448, 3510, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 199, 196, 196, 196, 3514, 3511, 3511, 3511, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 195, 89, 3448, 3510, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 196, 196, 196, 3511, 3511, 3511, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 195, 89, 3448, 3510, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 201, 194, 194, 3516, 3509, 3509, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 195, 89, 3510, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 194, 194, 194, 3509, 3509, 3509, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 202, 203, 204, 89, 3517, 3518, 3519, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 205, 206, 206, 3520, 3521, 3521, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 208, 89, 3448, 3523, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 207, 207, 207, 3522, 3522, 3522, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 208, 89, 3523, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 209, 209, 209, 3524, 3524, 3524, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 208, 89, 3523, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 210, 210, 210, 3525, 3525, 3525, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 1691, 208, 89, 3523, 3465, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 189, 190, 191, 3504, 3505, 3506, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 192, 193, 193, 3507, 3508, 3508, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 208, 89, 3448, 3523, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 211, 207, 207, 3526, 3522, 3522, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 208, 89, 3448, 3523, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 212, 209, 209, 3527, 3524, 3524, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 208, 89, 3448, 3523, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 210, 210, 210, 3525, 3525, 3525, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 213, 208, 89, 3448, 3528, 3523, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 211, 214, 207, 207, 3526, 3529, 3522, 3522, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 208, 89, 3448, 3523, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 212, 209, 209, 209, 3527, 3524, 3524, 3524, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 208, 89, 3448, 3523, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 209, 209, 209, 3524, 3524, 3524, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 208, 89, 3448, 3523, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 214, 207, 207, 3529, 3522, 3522, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 208, 89, 3523, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 207, 207, 207, 3522, 3522, 3522, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 215, 216, 217, 89, 3530, 3531, 3532, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 218, 219, 219, 3533, 3534, 3534, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 221, 89, 3448, 3536, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 220, 220, 220, 3535, 3535, 3535, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 221, 89, 3536, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 222, 222, 222, 3537, 3537, 3537, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 221, 89, 3536, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 223, 223, 223, 3538, 3538, 3538, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 1691, 221, 89, 3536, 3465, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 202, 203, 204, 3517, 3518, 3519, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 205, 206, 206, 3520, 3521, 3521, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 221, 89, 3448, 3536, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 224, 220, 220, 3539, 3535, 3535, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 221, 89, 3448, 3536, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 225, 222, 222, 3540, 3537, 3537, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 221, 89, 3448, 3536, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 223, 223, 223, 3538, 3538, 3538, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 226, 221, 89, 3448, 3541, 3536, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 224, 227, 220, 220, 3539, 3542, 3535, 3535, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 221, 89, 3448, 3536, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 225, 222, 222, 222, 3540, 3537, 3537, 3537, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 221, 89, 3448, 3536, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 222, 222, 222, 3537, 3537, 3537, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 221, 89, 3448, 3536, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 227, 220, 220, 3542, 3535, 3535, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 221, 89, 3536, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 220, 220, 220, 3535, 3535, 3535, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 1691, 228, 3543, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 229, 230, 231, 89, 3544, 3545, 3546, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 232, 233, 233, 3547, 3548, 3548, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 235, 89, 3448, 3550, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 234, 234, 234, 3549, 3549, 3549, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 235, 89, 3550, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 236, 236, 236, 3551, 3551, 3551, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 235, 89, 3550, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 237, 237, 237, 3552, 3552, 3552, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 1691, 235, 89, 3550, 3465, 1691, 1691, 1691, 1691, 1, 1690, 1691, 1692, 1691, 1693, 1694, 1691, 1691, 1691, 215, 216, 217, 3530, 3531, 3532, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 218, 219, 219, 3533, 3534, 3534, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 235, 89, 3448, 3550, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 238, 234, 234, 3553, 3549, 3549, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 235, 89, 3448, 3550, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 239, 236, 236, 3554, 3551, 3551, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 235, 89, 3448, 3550, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 237, 237, 237, 3552, 3552, 3552, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 240, 235, 89, 3448, 3555, 3550, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 238, 241, 234, 234, 3553, 3556, 3549, 3549, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 235, 89, 3448, 3550, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 239, 236, 236, 236, 3554, 3551, 3551, 3551, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 235, 89, 3448, 3550, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 236, 236, 236, 3551, 3551, 3551, 1, 1690, 1691, 1692, 1691, 1691, 1693, 1694, 1691, 1691, 1691, 1691, 134, 235, 89, 3448, 3550, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 241, 234, 234, 3556, 3549, 3549, 1, 1690, 1691, 1692, 1693, 1694, 1691, 1691, 1691, 235, 89, 3550, 3465, 1691, 1691, 1691, 1691, 1691, 1691, 1691, 234, 234, 234, 3549, 3549, 3549, 1, 1680, 1681, 1681, 1681, 1681, 1685, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1683, 1684, 1704, 1681, 1704, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3396, 3397, 3557, 3394, 3557, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1705, 1681, 1681, 1681, 1681, 1708, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1706, 1707, 1681, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3558, 3559, 3394, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1680, 1687, 1687, 1687, 1687, 1683, 1689, 1685, 1687, 73, 76, 73, 78, 1709, 1710, 1709, 1687, 1711, 1709, 77, 77, 77, 79, 77, 3560, 3561, 3560, 3401, 3562, 3560, 1687, 1709, 1709, 1709, 1709, 1709, 77, 77, 77, 77, 77, 3560, 3560, 3560, 3560, 3560, 1, 1690, 1691, 1691, 1691, 1691, 1694, 1691, 1691, 82, 64, 82, 1712, 1713, 1712, 1693, 1711, 1712, 77, 77, 77, 61, 77, 3563, 3564, 3563, 3404, 3562, 3563, 1691, 1712, 1712, 1712, 1712, 1712, 77, 77, 77, 77, 77, 3563, 3563, 3563, 3563, 3563, 1, 1206, 1716, 82, 64, 82, 1711, 1711, 1711, 1715, 1711, 77, 77, 77, 61, 77, 3562, 3562, 3562, 3566, 3562, 1711, 1711, 1714, 1714, 1711, 1711, 1714, 1711, 77, 77, 77, 77, 77, 3562, 3562, 3565, 3565, 3562, 3562, 3565, 3562, 1, 1206, 1716, 82, 64, 82, 1711, 1711, 1711, 1715, 1711, 77, 77, 77, 61, 77, 3562, 3562, 3562, 3566, 3562, 1711, 1711, 1711, 1711, 1711, 77, 77, 77, 77, 77, 3562, 3562, 3562, 3562, 3562, 1, 1206, 1716, 82, 64, 82, 1711, 1711, 1711, 1715, 1711, 77, 77, 77, 61, 77, 3562, 3562, 3562, 3566, 3562, 1711, 1711, 1712, 1712, 1711, 1711, 1712, 1711, 77, 77, 77, 77, 77, 3562, 3562, 3563, 3563, 3562, 3562, 3563, 3562, 1, 1680, 1681, 1681, 1681, 1681, 1685, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1683, 1684, 1717, 1718, 1681, 1717, 1718, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3396, 3397, 3567, 3568, 3394, 3567, 3568, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1719, 1681, 1681, 1681, 1681, 1722, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1720, 1721, 1681, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3569, 3570, 3394, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1680, 1681, 1681, 1681, 1681, 1685, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1683, 1684, 1723, 1681, 1723, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3396, 3397, 3571, 3394, 3571, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1680, 1681, 1681, 1681, 1681, 1685, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1683, 1684, 1724, 1681, 1724, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3396, 3397, 3572, 3394, 3572, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1680, 1681, 1681, 1681, 1681, 1685, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1683, 1725, 1681, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3396, 3573, 3394, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1680, 1687, 1687, 1687, 1687, 1683, 1689, 1685, 1687, 73, 76, 73, 78, 1726, 1727, 1726, 1687, 1728, 1726, 77, 77, 77, 79, 77, 3574, 3575, 3574, 3401, 3576, 3574, 1687, 1726, 1726, 1726, 1726, 1726, 77, 77, 77, 77, 77, 3574, 3574, 3574, 3574, 3574, 1, 1729, 1691, 1691, 1691, 1691, 1733, 1691, 1691, 82, 64, 82, 1730, 1731, 1730, 1732, 1734, 1730, 77, 77, 77, 61, 77, 3577, 3578, 3577, 3579, 3580, 3577, 1691, 1730, 1730, 1730, 1730, 1730, 77, 77, 77, 77, 77, 3577, 3577, 3577, 3577, 3577, 1, 1735, 1738, 82, 64, 82, 1734, 1734, 1734, 1737, 1734, 77, 77, 77, 61, 77, 3580, 3580, 3580, 3582, 3580, 1734, 1734, 1736, 1736, 1734, 1734, 1736, 1734, 77, 77, 77, 77, 77, 3580, 3580, 3581, 3581, 3580, 3580, 3581, 3580, 1, 1735, 1738, 82, 64, 82, 1734, 1734, 1734, 1737, 1734, 77, 77, 77, 61, 77, 3580, 3580, 3580, 3582, 3580, 1734, 1734, 1734, 1734, 1734, 77, 77, 77, 77, 77, 3580, 3580, 3580, 3580, 3580, 1, 1735, 1738, 82, 64, 82, 1734, 1734, 1734, 1737, 1734, 77, 77, 77, 61, 77, 3580, 3580, 3580, 3582, 3580, 1734, 1734, 1730, 1730, 1734, 1734, 1730, 1734, 77, 77, 77, 77, 77, 3580, 3580, 3577, 3577, 3580, 3580, 3577, 3580, 1, 1680, 1681, 1681, 1681, 1681, 1685, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1683, 1684, 1739, 1681, 1739, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3396, 3397, 3583, 3394, 3583, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1680, 1681, 1681, 1681, 1681, 1685, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1683, 1684, 1740, 1681, 1740, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3396, 3397, 3584, 3394, 3584, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1680, 1681, 1681, 1681, 1681, 1685, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1683, 1684, 1741, 1681, 1741, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3396, 3397, 3585, 3394, 3585, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1680, 1681, 1681, 1681, 1681, 1685, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1683, 1684, 1742, 1681, 1742, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3396, 3397, 3586, 3394, 3586, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1680, 1681, 1681, 1681, 1681, 1685, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1683, 1684, 1743, 1681, 1743, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3396, 3397, 3587, 3394, 3587, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1680, 1681, 1681, 1681, 1681, 1685, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1683, 1684, 1744, 1681, 1744, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3396, 3397, 3588, 3394, 3588, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1680, 1681, 1681, 1681, 1681, 1685, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1683, 1684, 1745, 1681, 1745, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3396, 3397, 3589, 3394, 3589, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1680, 1681, 1681, 1681, 1681, 1685, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1683, 1684, 1746, 1681, 1746, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3396, 3397, 3590, 3394, 3590, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1680, 1681, 1681, 1681, 1681, 1685, 1681, 1681, 71, 72, 71, 68, 1681, 1682, 1681, 1683, 1747, 1681, 1681, 68, 68, 68, 61, 73, 68, 68, 3394, 3395, 3394, 3396, 3591, 3394, 3394, 1681, 1681, 1681, 1681, 1681, 1681, 68, 68, 68, 68, 68, 3394, 3394, 3394, 3394, 3394, 1, 1680, 1687, 1687, 1687, 1687, 1683, 1689, 1685, 1687, 73, 76, 73, 78, 1748, 1749, 1748, 1750, 1751, 1752, 1753, 1687, 1754, 1750, 1751, 1752, 1753, 1748, 77, 77, 77, 79, 77, 3592, 3593, 3592, 3594, 3595, 3596, 3597, 3401, 3598, 3594, 3595, 3596, 3597, 3592, 1687, 1748, 1748, 1748, 1748, 1748, 77, 77, 77, 77, 77, 3592, 3592, 3592, 3592, 3592, 1, 1755, 1691, 1691, 1691, 1691, 1759, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1758, 1760, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3601, 3602, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1761, 1764, 82, 64, 82, 1760, 1760, 1760, 1763, 1760, 77, 77, 77, 61, 77, 3602, 3602, 3602, 3604, 3602, 1760, 1760, 1762, 1762, 1760, 1760, 1762, 1760, 77, 77, 77, 77, 77, 3602, 3602, 3603, 3603, 3602, 3602, 3603, 3602, 1, 1761, 1764, 82, 64, 82, 1760, 1760, 1760, 1763, 1760, 77, 77, 77, 61, 77, 3602, 3602, 3602, 3604, 3602, 1760, 1760, 1760, 1760, 1760, 77, 77, 77, 77, 77, 3602, 3602, 3602, 3602, 3602, 1, 1761, 1764, 82, 64, 82, 1760, 1760, 1760, 1763, 1760, 77, 77, 77, 61, 77, 3602, 3602, 3602, 3604, 3602, 1760, 1760, 1756, 1756, 1760, 1760, 1756, 1760, 77, 77, 77, 77, 77, 3602, 3602, 3599, 3599, 3602, 3602, 3599, 3602, 1, 1755, 1691, 1691, 1691, 1691, 1759, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1758, 1765, 1760, 1765, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3601, 3605, 3602, 3605, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1755, 1691, 1691, 1691, 1691, 1759, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1758, 1766, 1760, 1766, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3601, 3606, 3602, 3606, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1755, 1691, 1691, 1691, 1691, 1759, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1758, 1767, 1760, 1767, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3601, 3607, 3602, 3607, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1768, 1691, 1691, 1691, 1691, 1770, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1769, 1760, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3608, 3602, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1755, 1691, 1691, 1691, 1691, 1759, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1758, 1771, 1772, 1760, 1771, 1772, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3601, 3609, 3610, 3602, 3609, 3610, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1755, 1691, 1691, 1691, 1691, 1759, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1758, 1773, 1760, 1773, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3601, 3611, 3602, 3611, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1774, 1691, 1691, 1691, 1691, 1776, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1775, 1760, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3612, 3602, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1755, 1691, 1691, 1691, 1691, 1759, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1758, 1777, 1760, 1777, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3601, 3613, 3602, 3613, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1778, 1691, 1691, 1691, 1691, 1780, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1779, 1760, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3614, 3602, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1755, 1691, 1691, 1691, 1691, 1759, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1758, 1781, 1760, 1781, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3601, 3615, 3602, 3615, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1755, 1691, 1691, 1691, 1691, 1759, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1758, 1782, 1760, 1782, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3601, 3616, 3602, 3616, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1783, 1691, 1691, 1691, 1691, 1785, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1784, 1760, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3617, 3602, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1755, 1691, 1691, 1691, 1691, 1759, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1758, 1786, 1760, 1786, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3601, 3618, 3602, 3618, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1787, 1691, 1691, 1691, 1691, 1789, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1788, 1790, 1760, 1790, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3619, 3620, 3602, 3620, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1791, 1691, 1691, 1691, 1691, 1793, 1691, 1691, 82, 64, 82, 1756, 1757, 1756, 1792, 1760, 1756, 77, 77, 77, 61, 77, 3599, 3600, 3599, 3621, 3602, 3599, 1691, 1756, 1756, 1756, 1756, 1756, 77, 77, 77, 77, 77, 3599, 3599, 3599, 3599, 3599, 1, 1672, 1674, 2654, 2655, 2654, 1673, 2656, 3388, 1671, 2653, 3387, 1, 1672, 1674, 2654, 2655, 2654, 1673, 2656, 3388, 1670, 2652, 3386, 1, 1672, 1674, 2654, 2655, 2654, 1673, 2656, 3388, 1794, 2657, 3622, 1, 1672, 1674, 2654, 2655, 2654, 1673, 2656, 3388, 1668, 2650, 3384, 1, 1672, 1674, 2654, 2655, 2654, 1795, 1673, 2658, 2656, 3623, 3388, 1794, 1668, 2657, 2650, 3622, 3384, 1, 1672, 1674, 2654, 2655, 2654, 1796, 1673, 2659, 2656, 3624, 3388, 1668, 1670, 2650, 2652, 3384, 3386, 1, 1672, 1674, 2654, 2655, 2654, 1797, 1673, 2660, 2656, 3625, 3388, 1670, 1671, 2652, 2653, 3386, 3387, 1, 1672, 1674, 2654, 2655, 2654, 1673, 2656, 3388, 1671, 2653, 3387, 1, 1798, 1799, 1800, 2661, 2662, 2663, 3626, 3627, 3628, 1801, 1656, 1656, 2664, 2638, 2638, 3629, 3374, 3374, 1, 1652, 1802, 1652, 2634, 2665, 2634, 3370, 3630, 3370, 1654, 1654, 1654, 2636, 2636, 2636, 3372, 3372, 3372, 1, 1803, 1804, 1805, 2666, 2667, 2668, 3631, 3632, 3633, 1806, 1656, 1656, 2669, 2638, 2638, 3634, 3374, 3374, 1, 1652, 1807, 1652, 2634, 2670, 2634, 3370, 3635, 3370, 1654, 1654, 1654, 2636, 2636, 2636, 3372, 3372, 3372, 1, 1808, 1809, 1810, 2671, 2672, 2673, 3636, 3637, 3638, 1811, 1656, 1656, 2674, 2638, 2638, 3639, 3374, 3374, 1, 1812, 1815, 2675, 2676, 2675, 1652, 1655, 1813, 1814, 1652, 2634, 2637, 2677, 2678, 2634, 3370, 3373, 3640, 3641, 3370, 1654, 1654, 1654, 2636, 2636, 2636, 3372, 3372, 3372, 1, 1812, 1815, 2675, 2676, 2675, 1652, 1655, 1813, 1814, 1652, 2634, 2637, 2677, 2678, 2634, 3370, 3373, 3640, 3641, 3370, 1811, 1654, 1654, 2674, 2636, 2636, 3639, 3372, 3372, 1, 1812, 1815, 2675, 2676, 2675, 1652, 1655, 1813, 1814, 1652, 2634, 2637, 2677, 2678, 2634, 3370, 3373, 3640, 3641, 3370, 1808, 1654, 1654, 2671, 2636, 2636, 3636, 3372, 3372, 1, 1812, 1815, 2675, 2676, 2675, 1652, 1655, 1816, 1813, 1814, 1652, 2634, 2637, 2679, 2677, 2678, 2634, 3370, 3373, 3642, 3640, 3641, 3370, 1811, 1808, 1654, 1654, 2674, 2671, 2636, 2636, 3639, 3636, 3372, 3372, 1, 1812, 1815, 2675, 2676, 2675, 1652, 1655, 1813, 1814, 1652, 2634, 2637, 2677, 2678, 2634, 3370, 3373, 3640, 3641, 3370, 1808, 1654, 1654, 1654, 2671, 2636, 2636, 2636, 3636, 3372, 3372, 3372, 1, 1652, 1807, 1652, 2634, 2670, 2634, 3370, 3635, 3370, 1806, 1654, 1654, 2669, 2636, 2636, 3634, 3372, 3372, 1, 1652, 1807, 1652, 2634, 2670, 2634, 3370, 3635, 3370, 1803, 1654, 1654, 2666, 2636, 2636, 3631, 3372, 3372, 1, 1652, 1807, 1817, 1652, 2634, 2670, 2680, 2634, 3370, 3635, 3643, 3370, 1806, 1803, 1654, 1654, 2669, 2666, 2636, 2636, 3634, 3631, 3372, 3372, 1, 1652, 1807, 1652, 2634, 2670, 2634, 3370, 3635, 3370, 1803, 1654, 1654, 1654, 2666, 2636, 2636, 2636, 3631, 3372, 3372, 3372, 1, 1652, 1802, 1652, 2634, 2665, 2634, 3370, 3630, 3370, 1801, 1654, 1654, 2664, 2636, 2636, 3629, 3372, 3372, 1, 1652, 1802, 1652, 2634, 2665, 2634, 3370, 3630, 3370, 1798, 1654, 1654, 2661, 2636, 2636, 3626, 3372, 3372, 1, 1652, 1802, 1818, 1652, 2634, 2665, 2681, 2634, 3370, 3630, 3644, 3370, 1801, 1798, 1654, 1654, 2664, 2661, 2636, 2636, 3629, 3626, 3372, 3372, 1, 1652, 1802, 1652, 2634, 2665, 2634, 3370, 3630, 3370, 1798, 1654, 1654, 1654, 2661, 2636, 2636, 2636, 3626, 3372, 3372, 3372, 1, 1652, 1653, 1652, 2634, 2635, 2634, 3370, 3371, 3370, 1819, 1654, 1654, 2682, 2636, 2636, 3645, 3372, 3372, 1, 1652, 1653, 1652, 2634, 2635, 2634, 3370, 3371, 3370, 1820, 1654, 1654, 2683, 2636, 2636, 3646, 3372, 3372, 1, 1652, 1653, 1821, 1652, 2634, 2635, 2684, 2634, 3370, 3371, 3647, 3370, 1819, 1820, 1654, 1654, 2682, 2683, 2636, 2636, 3645, 3646, 3372, 3372, 1, 1652, 1653, 1652, 2634, 2635, 2634, 3370, 3371, 3370, 1820, 1654, 1654, 1654, 2683, 2636, 2636, 2636, 3646, 3372, 3372, 3372, 1, 1823, 2686, 3649, 1822, 1822, 1822, 2685, 2685, 2685, 3648, 3648, 3648, 1, 1825, 2688, 3651, 1824, 1824, 1824, 2687, 2687, 2687, 3650, 3650, 3650, 1, 1825, 2688, 3651, 1826, 1826, 1826, 2689, 2689, 2689, 3652, 3652, 3652, 1, 1825, 2688, 3651, 1827, 1827, 1827, 2690, 2690, 2690, 3653, 3653, 3653, 1, 1825, 2688, 3651, 1, 1829, 2692, 3655, 1828, 1828, 1828, 2691, 2691, 2691, 3654, 3654, 3654, 1, 1831, 2694, 3657, 1830, 1830, 1830, 2693, 2693, 2693, 3656, 3656, 3656, 1, 1831, 2694, 3657, 1832, 1832, 1832, 2695, 2695, 2695, 3658, 3658, 3658, 1, 1831, 2694, 3657, 1833, 1833, 1833, 2696, 2696, 2696, 3659, 3659, 3659, 1, 1831, 2694, 3657, 1, 1835, 2698, 3661, 1834, 1834, 1834, 2697, 2697, 2697, 3660, 3660, 3660, 1, 1837, 2700, 3663, 1836, 1836, 1836, 2699, 2699, 2699, 3662, 3662, 3662, 1, 1837, 2700, 3663, 1838, 1838, 1838, 2701, 2701, 2701, 3664, 3664, 3664, 1, 1837, 2700, 3663, 1839, 1839, 1839, 2702, 2702, 2702, 3665, 3665, 3665, 1, 1837, 2700, 3663, 1, 1841, 2704, 3667, 1840, 1840, 1840, 2703, 2703, 2703, 3666, 3666, 3666, 1, 1843, 2706, 3669, 1842, 1842, 1842, 2705, 2705, 2705, 3668, 3668, 3668, 1, 1843, 2706, 3669, 1844, 1844, 1844, 2707, 2707, 2707, 3670, 3670, 3670, 1, 1843, 2706, 3669, 1845, 1845, 1845, 2708, 2708, 2708, 3671, 3671, 3671, 1, 1843, 2706, 3669, 1, 1847, 2710, 3673, 1846, 1846, 1846, 2709, 2709, 2709, 3672, 3672, 3672, 1, 1849, 2712, 3675, 1848, 1848, 1848, 2711, 2711, 2711, 3674, 3674, 3674, 1, 1849, 2712, 3675, 1850, 1850, 1850, 2713, 2713, 2713, 3676, 3676, 3676, 1, 1849, 2712, 3675, 1851, 1851, 1851, 2714, 2714, 2714, 3677, 3677, 3677, 1, 1849, 2712, 3675, 1, 1853, 2716, 3679, 1852, 1852, 1852, 2715, 2715, 2715, 3678, 3678, 3678, 1, 1855, 2718, 3681, 1854, 1854, 1854, 2717, 2717, 2717, 3680, 3680, 3680, 1, 1855, 2718, 3681, 1856, 1856, 1856, 2719, 2719, 2719, 3682, 3682, 3682, 1, 1855, 2718, 3681, 1857, 1857, 1857, 2720, 2720, 2720, 3683, 3683, 3683, 1, 1855, 2718, 3681, 1, 1858, 1859, 1860, 1862, 2721, 2722, 2723, 2725, 3684, 3685, 3686, 3688, 1861, 1863, 1863, 2724, 2726, 2726, 3687, 3689, 3689, 1, 1864, 1866, 2727, 2729, 3690, 3692, 1865, 1865, 1865, 2728, 2728, 2728, 3691, 3691, 3691, 1, 1867, 1868, 1869, 2730, 2731, 2732, 3693, 3694, 3695, 1870, 2733, 3696, 1, 1871, 2734, 3697, 1, 1872, 1873, 1874, 2735, 2736, 2737, 3698, 3699, 3700, 1875, 2738, 3701, 1, 1876, 2739, 3702, 1, 1877, 1878, 1879, 2740, 2741, 2742, 3703, 3704, 3705, 1880, 2743, 3706, 1, 1881, 2744, 3707, 1, 1882, 1885, 2745, 2746, 2745, 1883, 1884, 2747, 2748, 3708, 3709, 1, 1881, 2744, 3707, 1880, 2743, 3706, 1, 1881, 2744, 3707, 1877, 2740, 3703, 1, 1886, 1881, 2749, 2744, 3710, 3707, 1880, 1877, 2743, 2740, 3706, 3703, 1, 1881, 2744, 3707, 1877, 2740, 3703, 1, 1876, 2739, 3702, 1875, 2738, 3701, 1, 1876, 2739, 3702, 1872, 2735, 3698, 1, 1876, 1887, 2739, 2750, 3702, 3711, 1875, 1872, 2738, 2735, 3701, 3698, 1, 1876, 2739, 3702, 1872, 2735, 3698, 1, 1871, 2734, 3697, 1870, 2733, 3696, 1, 1871, 2734, 3697, 1867, 2730, 3693, 1, 1871, 1888, 2734, 2751, 3697, 3712, 1870, 1867, 2733, 2730, 3696, 3693, 1, 1871, 2734, 3697, 1867, 2730, 3693, 1, 1866, 2729, 3692, 1889, 1889, 1889, 2752, 2752, 2752, 3713, 3713, 3713, 1, 1866, 2729, 3692, 1890, 1890, 1890, 2753, 2753, 2753, 3714, 3714, 3714, 1, 1866, 2729, 3692, 1, 1877, 2740, 3703, 1891, 1891, 1891, 2754, 2754, 2754, 3715, 3715, 3715, 1, 1881, 2744, 3707, 1892, 1892, 1892, 2755, 2755, 2755, 3716, 3716, 3716, 1, 1881, 2744, 3707, 1893, 1893, 1893, 2756, 2756, 2756, 3717, 3717, 3717, 1, 1881, 2744, 3707, 1877, 1877, 1877, 2740, 2740, 2740, 3703, 3703, 3703, 1, 1864, 1866, 2727, 2729, 3690, 3692, 1894, 1865, 1865, 2757, 2728, 2728, 3718, 3691, 3691, 1, 1864, 1866, 2727, 2729, 3690, 3692, 1895, 1889, 1889, 2758, 2752, 2752, 3719, 3713, 3713, 1, 1864, 1866, 2727, 2729, 3690, 3692, 1890, 1890, 1890, 2753, 2753, 2753, 3714, 3714, 3714, 1, 1864, 1896, 1866, 2727, 2759, 2729, 3690, 3720, 3692, 1894, 1897, 1865, 1865, 2757, 2760, 2728, 2728, 3718, 3721, 3691, 3691, 1, 1864, 1866, 2727, 2729, 3690, 3692, 1895, 1889, 1889, 1889, 2758, 2752, 2752, 2752, 3719, 3713, 3713, 3713, 1, 1864, 1866, 2727, 2729, 3690, 3692, 1889, 1889, 1889, 2752, 2752, 2752, 3713, 3713, 3713, 1, 1864, 1866, 2727, 2729, 3690, 3692, 1897, 1865, 1865, 2760, 2728, 2728, 3721, 3691, 3691, 1, 1881, 2744, 3707, 1891, 1891, 1891, 2754, 2754, 2754, 3715, 3715, 3715, 1, 1866, 2729, 3692, 1865, 1865, 1865, 2728, 2728, 2728, 3691, 3691, 3691, 1, 1898, 1899, 1900, 1881, 2761, 2762, 2763, 2744, 3722, 3723, 3724, 3707, 1901, 1902, 1902, 2764, 2765, 2765, 3725, 3726, 3726, 1, 1864, 1904, 1881, 2727, 2767, 2744, 3690, 3728, 3707, 1903, 1903, 1903, 2766, 2766, 2766, 3727, 3727, 3727, 1, 1904, 1881, 2767, 2744, 3728, 3707, 1905, 1905, 1905, 2768, 2768, 2768, 3729, 3729, 3729, 1, 1904, 1881, 2767, 2744, 3728, 3707, 1906, 1906, 1906, 2769, 2769, 2769, 3730, 3730, 3730, 1, 1904, 1881, 2767, 2744, 3728, 3707, 1, 1891, 1891, 1891, 2754, 2754, 2754, 3715, 3715, 3715, 1, 1864, 1904, 1881, 2727, 2767, 2744, 3690, 3728, 3707, 1907, 1903, 1903, 2770, 2766, 2766, 3731, 3727, 3727, 1, 1864, 1904, 1881, 2727, 2767, 2744, 3690, 3728, 3707, 1908, 1905, 1905, 2771, 2768, 2768, 3732, 3729, 3729, 1, 1864, 1904, 1881, 2727, 2767, 2744, 3690, 3728, 3707, 1906, 1906, 1906, 2769, 2769, 2769, 3730, 3730, 3730, 1, 1864, 1909, 1904, 1881, 2727, 2772, 2767, 2744, 3690, 3733, 3728, 3707, 1907, 1910, 1903, 1903, 2770, 2773, 2766, 2766, 3731, 3734, 3727, 3727, 1, 1864, 1904, 1881, 2727, 2767, 2744, 3690, 3728, 3707, 1908, 1905, 1905, 1905, 2771, 2768, 2768, 2768, 3732, 3729, 3729, 3729, 1, 1864, 1904, 1881, 2727, 2767, 2744, 3690, 3728, 3707, 1905, 1905, 1905, 2768, 2768, 2768, 3729, 3729, 3729, 1, 1864, 1904, 1881, 2727, 2767, 2744, 3690, 3728, 3707, 1910, 1903, 1903, 2773, 2766, 2766, 3734, 3727, 3727, 1, 1904, 1881, 2767, 2744, 3728, 3707, 1903, 1903, 1903, 2766, 2766, 2766, 3727, 3727, 3727, 1, 1911, 1912, 1913, 1881, 2774, 2775, 2776, 2744, 3735, 3736, 3737, 3707, 1914, 1915, 1915, 2777, 2778, 2778, 3738, 3739, 3739, 1, 1864, 1917, 1881, 2727, 2780, 2744, 3690, 3741, 3707, 1916, 1916, 1916, 2779, 2779, 2779, 3740, 3740, 3740, 1, 1917, 1881, 2780, 2744, 3741, 3707, 1918, 1918, 1918, 2781, 2781, 2781, 3742, 3742, 3742, 1, 1917, 1881, 2780, 2744, 3741, 3707, 1919, 1919, 1919, 2782, 2782, 2782, 3743, 3743, 3743, 1, 1917, 1881, 2780, 2744, 3741, 3707, 1, 1898, 1899, 1900, 2761, 2762, 2763, 3722, 3723, 3724, 1901, 1902, 1902, 2764, 2765, 2765, 3725, 3726, 3726, 1, 1864, 1917, 1881, 2727, 2780, 2744, 3690, 3741, 3707, 1920, 1916, 1916, 2783, 2779, 2779, 3744, 3740, 3740, 1, 1864, 1917, 1881, 2727, 2780, 2744, 3690, 3741, 3707, 1921, 1918, 1918, 2784, 2781, 2781, 3745, 3742, 3742, 1, 1864, 1917, 1881, 2727, 2780, 2744, 3690, 3741, 3707, 1919, 1919, 1919, 2782, 2782, 2782, 3743, 3743, 3743, 1, 1864, 1922, 1917, 1881, 2727, 2785, 2780, 2744, 3690, 3746, 3741, 3707, 1920, 1923, 1916, 1916, 2783, 2786, 2779, 2779, 3744, 3747, 3740, 3740, 1, 1864, 1917, 1881, 2727, 2780, 2744, 3690, 3741, 3707, 1921, 1918, 1918, 1918, 2784, 2781, 2781, 2781, 3745, 3742, 3742, 3742, 1, 1864, 1917, 1881, 2727, 2780, 2744, 3690, 3741, 3707, 1918, 1918, 1918, 2781, 2781, 2781, 3742, 3742, 3742, 1, 1864, 1917, 1881, 2727, 2780, 2744, 3690, 3741, 3707, 1923, 1916, 1916, 2786, 2779, 2779, 3747, 3740, 3740, 1, 1917, 1881, 2780, 2744, 3741, 3707, 1916, 1916, 1916, 2779, 2779, 2779, 3740, 3740, 3740, 1, 1924, 1925, 1926, 1881, 2787, 2788, 2789, 2744, 3748, 3749, 3750, 3707, 1927, 1928, 1928, 2790, 2791, 2791, 3751, 3752, 3752, 1, 1864, 1930, 1881, 2727, 2793, 2744, 3690, 3754, 3707, 1929, 1929, 1929, 2792, 2792, 2792, 3753, 3753, 3753, 1, 1930, 1881, 2793, 2744, 3754, 3707, 1931, 1931, 1931, 2794, 2794, 2794, 3755, 3755, 3755, 1, 1930, 1881, 2793, 2744, 3754, 3707, 1932, 1932, 1932, 2795, 2795, 2795, 3756, 3756, 3756, 1, 1930, 1881, 2793, 2744, 3754, 3707, 1, 1911, 1912, 1913, 2774, 2775, 2776, 3735, 3736, 3737, 1914, 1915, 1915, 2777, 2778, 2778, 3738, 3739, 3739, 1, 1864, 1930, 1881, 2727, 2793, 2744, 3690, 3754, 3707, 1933, 1929, 1929, 2796, 2792, 2792, 3757, 3753, 3753, 1, 1864, 1930, 1881, 2727, 2793, 2744, 3690, 3754, 3707, 1934, 1931, 1931, 2797, 2794, 2794, 3758, 3755, 3755, 1, 1864, 1930, 1881, 2727, 2793, 2744, 3690, 3754, 3707, 1932, 1932, 1932, 2795, 2795, 2795, 3756, 3756, 3756, 1, 1864, 1935, 1930, 1881, 2727, 2798, 2793, 2744, 3690, 3759, 3754, 3707, 1933, 1936, 1929, 1929, 2796, 2799, 2792, 2792, 3757, 3760, 3753, 3753, 1, 1864, 1930, 1881, 2727, 2793, 2744, 3690, 3754, 3707, 1934, 1931, 1931, 1931, 2797, 2794, 2794, 2794, 3758, 3755, 3755, 3755, 1, 1864, 1930, 1881, 2727, 2793, 2744, 3690, 3754, 3707, 1931, 1931, 1931, 2794, 2794, 2794, 3755, 3755, 3755, 1, 1864, 1930, 1881, 2727, 2793, 2744, 3690, 3754, 3707, 1936, 1929, 1929, 2799, 2792, 2792, 3760, 3753, 3753, 1, 1930, 1881, 2793, 2744, 3754, 3707, 1929, 1929, 1929, 2792, 2792, 2792, 3753, 3753, 3753, 1, 1937, 1938, 1939, 1881, 2800, 2801, 2802, 2744, 3761, 3762, 3763, 3707, 1940, 1941, 1941, 2803, 2804, 2804, 3764, 3765, 3765, 1, 1864, 1943, 1881, 2727, 2806, 2744, 3690, 3767, 3707, 1942, 1942, 1942, 2805, 2805, 2805, 3766, 3766, 3766, 1, 1943, 1881, 2806, 2744, 3767, 3707, 1944, 1944, 1944, 2807, 2807, 2807, 3768, 3768, 3768, 1, 1943, 1881, 2806, 2744, 3767, 3707, 1945, 1945, 1945, 2808, 2808, 2808, 3769, 3769, 3769, 1, 1943, 1881, 2806, 2744, 3767, 3707, 1, 1924, 1925, 1926, 2787, 2788, 2789, 3748, 3749, 3750, 1927, 1928, 1928, 2790, 2791, 2791, 3751, 3752, 3752, 1, 1864, 1943, 1881, 2727, 2806, 2744, 3690, 3767, 3707, 1946, 1942, 1942, 2809, 2805, 2805, 3770, 3766, 3766, 1, 1864, 1943, 1881, 2727, 2806, 2744, 3690, 3767, 3707, 1947, 1944, 1944, 2810, 2807, 2807, 3771, 3768, 3768, 1, 1864, 1943, 1881, 2727, 2806, 2744, 3690, 3767, 3707, 1945, 1945, 1945, 2808, 2808, 2808, 3769, 3769, 3769, 1, 1864, 1948, 1943, 1881, 2727, 2811, 2806, 2744, 3690, 3772, 3767, 3707, 1946, 1949, 1942, 1942, 2809, 2812, 2805, 2805, 3770, 3773, 3766, 3766, 1, 1864, 1943, 1881, 2727, 2806, 2744, 3690, 3767, 3707, 1947, 1944, 1944, 1944, 2810, 2807, 2807, 2807, 3771, 3768, 3768, 3768, 1, 1864, 1943, 1881, 2727, 2806, 2744, 3690, 3767, 3707, 1944, 1944, 1944, 2807, 2807, 2807, 3768, 3768, 3768, 1, 1864, 1943, 1881, 2727, 2806, 2744, 3690, 3767, 3707, 1949, 1942, 1942, 2812, 2805, 2805, 3773, 3766, 3766, 1, 1943, 1881, 2806, 2744, 3767, 3707, 1942, 1942, 1942, 2805, 2805, 2805, 3766, 3766, 3766, 1, 1950, 1951, 1952, 1881, 2813, 2814, 2815, 2744, 3774, 3775, 3776, 3707, 1953, 1954, 1954, 2816, 2817, 2817, 3777, 3778, 3778, 1, 1864, 1956, 1881, 2727, 2819, 2744, 3690, 3780, 3707, 1955, 1955, 1955, 2818, 2818, 2818, 3779, 3779, 3779, 1, 1956, 1881, 2819, 2744, 3780, 3707, 1957, 1957, 1957, 2820, 2820, 2820, 3781, 3781, 3781, 1, 1956, 1881, 2819, 2744, 3780, 3707, 1958, 1958, 1958, 2821, 2821, 2821, 3782, 3782, 3782, 1, 1956, 1881, 2819, 2744, 3780, 3707, 1, 1937, 1938, 1939, 2800, 2801, 2802, 3761, 3762, 3763, 1940, 1941, 1941, 2803, 2804, 2804, 3764, 3765, 3765, 1, 1864, 1956, 1881, 2727, 2819, 2744, 3690, 3780, 3707, 1959, 1955, 1955, 2822, 2818, 2818, 3783, 3779, 3779, 1, 1864, 1956, 1881, 2727, 2819, 2744, 3690, 3780, 3707, 1960, 1957, 1957, 2823, 2820, 2820, 3784, 3781, 3781, 1, 1864, 1956, 1881, 2727, 2819, 2744, 3690, 3780, 3707, 1958, 1958, 1958, 2821, 2821, 2821, 3782, 3782, 3782, 1, 1864, 1961, 1956, 1881, 2727, 2824, 2819, 2744, 3690, 3785, 3780, 3707, 1959, 1962, 1955, 1955, 2822, 2825, 2818, 2818, 3783, 3786, 3779, 3779, 1, 1864, 1956, 1881, 2727, 2819, 2744, 3690, 3780, 3707, 1960, 1957, 1957, 1957, 2823, 2820, 2820, 2820, 3784, 3781, 3781, 3781, 1, 1864, 1956, 1881, 2727, 2819, 2744, 3690, 3780, 3707, 1957, 1957, 1957, 2820, 2820, 2820, 3781, 3781, 3781, 1, 1864, 1956, 1881, 2727, 2819, 2744, 3690, 3780, 3707, 1962, 1955, 1955, 2825, 2818, 2818, 3786, 3779, 3779, 1, 1956, 1881, 2819, 2744, 3780, 3707, 1955, 1955, 1955, 2818, 2818, 2818, 3779, 3779, 3779, 1, 1963, 2826, 3787, 1, 1964, 1965, 1966, 1881, 2827, 2828, 2829, 2744, 3788, 3789, 3790, 3707, 1967, 1968, 1968, 2830, 2831, 2831, 3791, 3792, 3792, 1, 1864, 1970, 1881, 2727, 2833, 2744, 3690, 3794, 3707, 1969, 1969, 1969, 2832, 2832, 2832, 3793, 3793, 3793, 1, 1970, 1881, 2833, 2744, 3794, 3707, 1971, 1971, 1971, 2834, 2834, 2834, 3795, 3795, 3795, 1, 1970, 1881, 2833, 2744, 3794, 3707, 1972, 1972, 1972, 2835, 2835, 2835, 3796, 3796, 3796, 1, 1970, 1881, 2833, 2744, 3794, 3707, 1, 1950, 1951, 1952, 2813, 2814, 2815, 3774, 3775, 3776, 1953, 1954, 1954, 2816, 2817, 2817, 3777, 3778, 3778, 1, 1864, 1970, 1881, 2727, 2833, 2744, 3690, 3794, 3707, 1973, 1969, 1969, 2836, 2832, 2832, 3797, 3793, 3793, 1, 1864, 1970, 1881, 2727, 2833, 2744, 3690, 3794, 3707, 1974, 1971, 1971, 2837, 2834, 2834, 3798, 3795, 3795, 1, 1864, 1970, 1881, 2727, 2833, 2744, 3690, 3794, 3707, 1972, 1972, 1972, 2835, 2835, 2835, 3796, 3796, 3796, 1, 1864, 1975, 1970, 1881, 2727, 2838, 2833, 2744, 3690, 3799, 3794, 3707, 1973, 1976, 1969, 1969, 2836, 2839, 2832, 2832, 3797, 3800, 3793, 3793, 1, 1864, 1970, 1881, 2727, 2833, 2744, 3690, 3794, 3707, 1974, 1971, 1971, 1971, 2837, 2834, 2834, 2834, 3798, 3795, 3795, 3795, 1, 1864, 1970, 1881, 2727, 2833, 2744, 3690, 3794, 3707, 1971, 1971, 1971, 2834, 2834, 2834, 3795, 3795, 3795, 1, 1864, 1970, 1881, 2727, 2833, 2744, 3690, 3794, 3707, 1976, 1969, 1969, 2839, 2832, 2832, 3800, 3793, 3793, 1, 1970, 1881, 2833, 2744, 3794, 3707, 1969, 1969, 1969, 2832, 2832, 2832, 3793, 3793, 3793, 1, 1640, 1640, 1640, 1640, 1641, 1977, 1978, 1640, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2841, 2622, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3802, 3358, 3360, 3358, 3361, 3801, 3358, 1640, 1979, 1979, 1979, 2622, 2842, 2842, 2842, 3358, 3803, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 1977, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3360, 3358, 3361, 3801, 3358, 1640, 1640, 1979, 1979, 1979, 2622, 2622, 2842, 2842, 2842, 3358, 3358, 3803, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 1977, 1980, 1640, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2843, 2622, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3804, 3358, 3360, 3358, 3361, 3801, 3358, 1640, 1979, 1979, 1979, 2622, 2842, 2842, 2842, 3358, 3803, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 1642, 1640, 1643, 1640, 1640, 2622, 2623, 2624, 2622, 2625, 2622, 2622, 3358, 3359, 3360, 3358, 3361, 3358, 3358, 1640, 1640, 1979, 1981, 1981, 2622, 2622, 2842, 2844, 2844, 3358, 3358, 3803, 3805, 3805, 1, 1657, 1640, 1986, 2639, 2640, 2639, 1640, 1641, 1982, 1983, 1640, 1984, 1985, 1640, 1643, 1982, 1640, 2622, 2623, 2845, 2846, 2622, 2847, 2644, 2622, 2625, 2845, 2622, 3358, 3359, 3806, 3807, 3358, 3808, 3809, 3358, 3361, 3806, 3358, 1640, 1981, 1981, 1981, 2622, 2844, 2844, 2844, 3358, 3805, 3805, 3805, 1, 1640, 1640, 1640, 1640, 1641, 1982, 1642, 1640, 1643, 1982, 1640, 2622, 2623, 2845, 2624, 2622, 2625, 2845, 2622, 3358, 3359, 3806, 3360, 3358, 3361, 3806, 3358, 1640, 1640, 1981, 1981, 1981, 2622, 2622, 2844, 2844, 2844, 3358, 3358, 3805, 3805, 3805, 1, 1657, 1640, 1986, 2639, 2640, 2639, 1640, 1641, 1984, 1985, 1640, 1643, 1640, 1640, 2622, 2623, 2847, 2644, 2622, 2625, 2622, 2622, 3358, 3359, 3808, 3809, 3358, 3361, 3358, 3358, 1640, 1640, 1979, 1981, 1981, 2622, 2622, 2842, 2844, 2844, 3358, 3358, 3803, 3805, 3805, 1, 1642, 1642, 1645, 1987, 1989, 1642, 1643, 1642, 1642, 2624, 2627, 2848, 2850, 2624, 2625, 2624, 2624, 3360, 3363, 3810, 3812, 3360, 3361, 3360, 3360, 1642, 1642, 1988, 1990, 1642, 1642, 2624, 2624, 2849, 2851, 2624, 2624, 3360, 3360, 3811, 3813, 3360, 3360, 1, 1642, 1642, 1645, 1991, 1642, 1643, 1642, 1642, 2624, 2627, 2852, 2624, 2625, 2624, 2624, 3360, 3363, 3814, 3360, 3361, 3360, 3360, 1642, 1642, 1992, 1642, 1642, 2624, 2624, 2853, 2624, 2624, 3360, 3360, 3815, 3360, 3360, 1, 1642, 1642, 1645, 1993, 1642, 1643, 1642, 1642, 2624, 2627, 2854, 2624, 2625, 2624, 2624, 3360, 3363, 3816, 3360, 3361, 3360, 3360, 1642, 1642, 1994, 1642, 1642, 2624, 2624, 2855, 2624, 2624, 3360, 3360, 3817, 3360, 3360, 1, 1642, 1642, 1645, 1642, 1642, 1643, 1642, 1642, 2624, 2627, 2624, 2624, 2625, 2624, 2624, 3360, 3363, 3360, 3360, 3361, 3360, 3360, 1642, 1642, 1995, 1642, 1642, 2624, 2624, 2856, 2624, 2624, 3360, 3360, 3818, 3360, 3360, 1, 1672, 1642, 1674, 2654, 2655, 2654, 1642, 1645, 1673, 1642, 1643, 1642, 1642, 2624, 2627, 2656, 2624, 2625, 2624, 2624, 3360, 3363, 3388, 3360, 3361, 3360, 3360, 1642, 1642, 1642, 1642, 1642, 2624, 2624, 2624, 2624, 2624, 3360, 3360, 3360, 3360, 3360, 1, 1672, 1642, 1674, 2654, 2655, 2654, 1642, 1645, 1673, 1642, 1643, 1642, 1642, 2624, 2627, 2656, 2624, 2625, 2624, 2624, 3360, 3363, 3388, 3360, 3361, 3360, 3360, 1642, 1642, 1995, 1642, 1642, 2624, 2624, 2856, 2624, 2624, 3360, 3360, 3818, 3360, 3360, 1, 1672, 1642, 1674, 2654, 2655, 2654, 1642, 1645, 1673, 1642, 1643, 1642, 1642, 2624, 2627, 2656, 2624, 2625, 2624, 2624, 3360, 3363, 3388, 3360, 3361, 3360, 3360, 1642, 1642, 1994, 1642, 1642, 2624, 2624, 2855, 2624, 2624, 3360, 3360, 3817, 3360, 3360, 1, 1672, 1642, 1674, 2654, 2655, 2654, 1642, 1645, 1673, 1642, 1643, 1642, 1642, 2624, 2627, 2656, 2624, 2625, 2624, 2624, 3360, 3363, 3388, 3360, 3361, 3360, 3360, 1642, 1642, 1996, 1642, 1642, 2624, 2624, 2857, 2624, 2624, 3360, 3360, 3819, 3360, 3360, 1, 1672, 1642, 1674, 2654, 2655, 2654, 1642, 1645, 1673, 1642, 1643, 1642, 1642, 2624, 2627, 2656, 2624, 2625, 2624, 2624, 3360, 3363, 3388, 3360, 3361, 3360, 3360, 1642, 1642, 1992, 1642, 1642, 2624, 2624, 2853, 2624, 2624, 3360, 3360, 3815, 3360, 3360, 1, 1672, 1642, 1674, 2654, 2655, 2654, 1642, 1645, 1997, 1673, 1642, 1643, 1642, 1642, 2624, 2627, 2858, 2656, 2624, 2625, 2624, 2624, 3360, 3363, 3820, 3388, 3360, 3361, 3360, 3360, 1642, 1642, 1996, 1992, 1642, 1642, 2624, 2624, 2857, 2853, 2624, 2624, 3360, 3360, 3819, 3815, 3360, 3360, 1, 1672, 1642, 1674, 2654, 2655, 2654, 1642, 1645, 1998, 1673, 1642, 1643, 1642, 1642, 2624, 2627, 2859, 2656, 2624, 2625, 2624, 2624, 3360, 3363, 3821, 3388, 3360, 3361, 3360, 3360, 1642, 1642, 1992, 1994, 1642, 1642, 2624, 2624, 2853, 2855, 2624, 2624, 3360, 3360, 3815, 3817, 3360, 3360, 1, 1672, 1642, 1674, 2654, 2655, 2654, 1642, 1645, 1999, 1673, 1642, 1643, 1642, 1642, 2624, 2627, 2860, 2656, 2624, 2625, 2624, 2624, 3360, 3363, 3822, 3388, 3360, 3361, 3360, 3360, 1642, 1642, 1994, 1995, 1642, 1642, 2624, 2624, 2855, 2856, 2624, 2624, 3360, 3360, 3817, 3818, 3360, 3360, 1, 1672, 1642, 1674, 2654, 2655, 2654, 1642, 1645, 1673, 1642, 1643, 1642, 1642, 2624, 2627, 2656, 2624, 2625, 2624, 2624, 3360, 3363, 3388, 3360, 3361, 3360, 3360, 1642, 1642, 1995, 1642, 1642, 1642, 2624, 2624, 2856, 2624, 2624, 2624, 3360, 3360, 3818, 3360, 3360, 3360, 1, 1640, 2000, 2000, 1640, 2000, 2002, 1640, 1640, 1640, 1643, 1675, 1675, 61, 67, 61, 68, 2000, 2001, 2000, 2003, 2004, 2005, 2000, 2003, 2004, 2005, 2000, 68, 68, 68, 68, 68, 3823, 3824, 3823, 3825, 3826, 3827, 3823, 3825, 3826, 3827, 3823, 2000, 2000, 2000, 2000, 2000, 2000, 68, 68, 68, 68, 68, 3823, 3823, 3823, 3823, 3823, 1, 1680, 1640, 2006, 2006, 1640, 2006, 2008, 2011, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2009, 2010, 2006, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3830, 3831, 3828, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 58, 71, 72, 71, 68, 68, 68, 61, 73, 68, 68, 68, 68, 68, 68, 2012, 2012, 2012, 68, 68, 68, 3832, 3832, 3832, 1, 58, 71, 72, 71, 68, 68, 68, 61, 73, 68, 68, 68, 68, 68, 68, 2006, 2006, 2006, 68, 68, 68, 3828, 3828, 3828, 1, 1680, 1640, 2022, 2022, 1640, 2022, 2016, 2009, 2024, 2011, 1643, 1687, 73, 76, 73, 78, 77, 2022, 2023, 2022, 1687, 2022, 2022, 77, 77, 77, 79, 77, 77, 3833, 3834, 3833, 3401, 3833, 3833, 2022, 2022, 2022, 2022, 2022, 2022, 77, 77, 77, 77, 77, 3833, 3833, 3833, 3833, 3833, 1, 1690, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2028, 1643, 1691, 1691, 82, 64, 82, 77, 2025, 2026, 2025, 2027, 2025, 2025, 77, 77, 77, 61, 77, 77, 3835, 3836, 3835, 3837, 3835, 3835, 2025, 2025, 2025, 2025, 2025, 2025, 77, 77, 77, 77, 77, 3835, 3835, 3835, 3835, 3835, 1, 58, 82, 64, 82, 77, 77, 77, 61, 77, 77, 77, 77, 77, 77, 2029, 2029, 2029, 77, 77, 77, 3838, 3838, 3838, 1, 58, 82, 64, 82, 77, 77, 77, 61, 77, 77, 77, 77, 77, 77, 2025, 2025, 2025, 77, 77, 77, 3835, 3835, 3835, 1, 1680, 1640, 2006, 2006, 1640, 2006, 2008, 2011, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2009, 2010, 2044, 2006, 2044, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3830, 3831, 3839, 3828, 3839, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1705, 1640, 2006, 2006, 1640, 2006, 2008, 2047, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2045, 2046, 2006, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3840, 3841, 3828, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1680, 1640, 2022, 2022, 1640, 2022, 2016, 2009, 2024, 2011, 1643, 1687, 73, 76, 73, 78, 2048, 2049, 2048, 1687, 1711, 2048, 77, 77, 77, 79, 77, 3842, 3843, 3842, 3401, 3562, 3842, 2022, 2048, 2048, 2048, 2048, 2048, 77, 77, 77, 77, 77, 3842, 3842, 3842, 3842, 3842, 1, 1690, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2028, 1643, 1691, 1691, 82, 64, 82, 2050, 2051, 2050, 2027, 1711, 2050, 77, 77, 77, 61, 77, 3844, 3845, 3844, 3837, 3562, 3844, 2025, 2050, 2050, 2050, 2050, 2050, 77, 77, 77, 77, 77, 3844, 3844, 3844, 3844, 3844, 1, 1206, 1716, 82, 64, 82, 1711, 1711, 1711, 1715, 1711, 77, 77, 77, 61, 77, 3562, 3562, 3562, 3566, 3562, 1711, 1711, 2052, 2052, 1711, 1711, 2052, 1711, 77, 77, 77, 77, 77, 3562, 3562, 3846, 3846, 3562, 3562, 3846, 3562, 1, 1206, 1716, 82, 64, 82, 1711, 1711, 1711, 1715, 1711, 77, 77, 77, 61, 77, 3562, 3562, 3562, 3566, 3562, 1711, 1711, 2050, 2050, 1711, 1711, 2050, 1711, 77, 77, 77, 77, 77, 3562, 3562, 3844, 3844, 3562, 3562, 3844, 3562, 1, 1680, 1640, 2006, 2006, 1640, 2006, 2008, 2011, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2009, 2010, 2053, 2054, 2006, 2053, 2054, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3830, 3831, 3847, 3848, 3828, 3847, 3848, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1719, 1640, 2006, 2006, 1640, 2006, 2008, 2057, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2055, 2056, 2006, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3849, 3850, 3828, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1680, 1640, 2006, 2006, 1640, 2006, 2008, 2011, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2009, 2010, 2058, 2006, 2058, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3830, 3831, 3851, 3828, 3851, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1680, 1640, 2006, 2006, 1640, 2006, 2008, 2011, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2009, 2010, 2059, 2006, 2059, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3830, 3831, 3852, 3828, 3852, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1680, 1640, 2006, 2006, 1640, 2006, 2008, 2011, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2009, 2060, 2006, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3830, 3853, 3828, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1680, 1640, 2022, 2022, 1640, 2022, 2016, 2009, 2024, 2011, 1643, 1687, 73, 76, 73, 78, 2061, 2062, 2061, 1687, 1728, 2061, 77, 77, 77, 79, 77, 3854, 3855, 3854, 3401, 3576, 3854, 2022, 2061, 2061, 2061, 2061, 2061, 77, 77, 77, 77, 77, 3854, 3854, 3854, 3854, 3854, 1, 1729, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2066, 1643, 1691, 1691, 82, 64, 82, 2063, 2064, 2063, 2065, 1734, 2063, 77, 77, 77, 61, 77, 3856, 3857, 3856, 3858, 3580, 3856, 2025, 2063, 2063, 2063, 2063, 2063, 77, 77, 77, 77, 77, 3856, 3856, 3856, 3856, 3856, 1, 1735, 1738, 82, 64, 82, 1734, 1734, 1734, 1737, 1734, 77, 77, 77, 61, 77, 3580, 3580, 3580, 3582, 3580, 1734, 1734, 2067, 2067, 1734, 1734, 2067, 1734, 77, 77, 77, 77, 77, 3580, 3580, 3859, 3859, 3580, 3580, 3859, 3580, 1, 1735, 1738, 82, 64, 82, 1734, 1734, 1734, 1737, 1734, 77, 77, 77, 61, 77, 3580, 3580, 3580, 3582, 3580, 1734, 1734, 2063, 2063, 1734, 1734, 2063, 1734, 77, 77, 77, 77, 77, 3580, 3580, 3856, 3856, 3580, 3580, 3856, 3580, 1, 1680, 1640, 2006, 2006, 1640, 2006, 2008, 2011, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2009, 2010, 2068, 2006, 2068, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3830, 3831, 3860, 3828, 3860, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1680, 1640, 2006, 2006, 1640, 2006, 2008, 2011, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2009, 2010, 2069, 2006, 2069, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3830, 3831, 3861, 3828, 3861, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1680, 1640, 2006, 2006, 1640, 2006, 2008, 2011, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2009, 2010, 2070, 2006, 2070, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3830, 3831, 3862, 3828, 3862, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1680, 1640, 2006, 2006, 1640, 2006, 2008, 2011, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2009, 2010, 2071, 2006, 2071, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3830, 3831, 3863, 3828, 3863, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1680, 1640, 2006, 2006, 1640, 2006, 2008, 2011, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2009, 2010, 2072, 2006, 2072, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3830, 3831, 3864, 3828, 3864, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1680, 1640, 2006, 2006, 1640, 2006, 2008, 2011, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2009, 2010, 2073, 2006, 2073, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3830, 3831, 3865, 3828, 3865, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1680, 1640, 2006, 2006, 1640, 2006, 2008, 2011, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2009, 2010, 2074, 2006, 2074, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3830, 3831, 3866, 3828, 3866, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1680, 1640, 2006, 2006, 1640, 2006, 2008, 2011, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2009, 2010, 2075, 2006, 2075, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3830, 3831, 3867, 3828, 3867, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1680, 1640, 2006, 2006, 1640, 2006, 2008, 2011, 1643, 1681, 1681, 71, 72, 71, 68, 2006, 2007, 2006, 2009, 2076, 2006, 2006, 68, 68, 68, 61, 73, 68, 68, 3828, 3829, 3828, 3830, 3868, 3828, 3828, 2006, 2006, 2006, 2006, 2006, 2006, 68, 68, 68, 68, 68, 3828, 3828, 3828, 3828, 3828, 1, 1680, 1640, 2022, 2022, 1640, 2022, 2016, 2009, 2024, 2011, 1643, 1687, 73, 76, 73, 78, 2077, 2078, 2077, 2079, 2080, 2081, 2082, 1687, 1754, 2079, 2080, 2081, 2082, 2077, 77, 77, 77, 79, 77, 3869, 3870, 3869, 3871, 3872, 3873, 3874, 3401, 3598, 3871, 3872, 3873, 3874, 3869, 2022, 2077, 2077, 2077, 2077, 2077, 77, 77, 77, 77, 77, 3869, 3869, 3869, 3869, 3869, 1, 1755, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2086, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2085, 1760, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3877, 3602, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1761, 1764, 82, 64, 82, 1760, 1760, 1760, 1763, 1760, 77, 77, 77, 61, 77, 3602, 3602, 3602, 3604, 3602, 1760, 1760, 2087, 2087, 1760, 1760, 2087, 1760, 77, 77, 77, 77, 77, 3602, 3602, 3878, 3878, 3602, 3602, 3878, 3602, 1, 1761, 1764, 82, 64, 82, 1760, 1760, 1760, 1763, 1760, 77, 77, 77, 61, 77, 3602, 3602, 3602, 3604, 3602, 1760, 1760, 2083, 2083, 1760, 1760, 2083, 1760, 77, 77, 77, 77, 77, 3602, 3602, 3875, 3875, 3602, 3602, 3875, 3602, 1, 1755, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2086, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2085, 2088, 1760, 2088, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3877, 3879, 3602, 3879, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1755, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2086, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2085, 2089, 1760, 2089, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3877, 3880, 3602, 3880, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1755, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2086, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2085, 2090, 1760, 2090, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3877, 3881, 3602, 3881, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1768, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2092, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2091, 1760, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3882, 3602, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1755, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2086, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2085, 2093, 2094, 1760, 2093, 2094, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3877, 3883, 3884, 3602, 3883, 3884, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1755, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2086, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2085, 2095, 1760, 2095, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3877, 3885, 3602, 3885, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1774, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2097, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2096, 1760, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3886, 3602, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1755, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2086, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2085, 2098, 1760, 2098, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3877, 3887, 3602, 3887, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1778, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2100, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2099, 1760, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3888, 3602, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1755, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2086, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2085, 2101, 1760, 2101, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3877, 3889, 3602, 3889, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1755, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2086, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2085, 2102, 1760, 2102, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3877, 3890, 3602, 3890, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1783, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2104, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2103, 1760, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3891, 3602, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1755, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2086, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2085, 2105, 1760, 2105, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3877, 3892, 3602, 3892, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1787, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2107, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2106, 2108, 1760, 2108, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3893, 3894, 3602, 3894, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1791, 1640, 2025, 2025, 1640, 2025, 2019, 1640, 2110, 1643, 1691, 1691, 82, 64, 82, 2083, 2084, 2083, 2109, 1760, 2083, 77, 77, 77, 61, 77, 3875, 3876, 3875, 3895, 3602, 3875, 2025, 2083, 2083, 2083, 2083, 2083, 77, 77, 77, 77, 77, 3875, 3875, 3875, 3875, 3875, 1, 1640, 1640, 1640, 1640, 1641, 2111, 2112, 2113, 1642, 1640, 1643, 1640, 1640, 2622, 2623, 2861, 2862, 2863, 2624, 2622, 2625, 2622, 2622, 3358, 3359, 3896, 3897, 3898, 3360, 3358, 3361, 3358, 3358, 1640, 1640, 2114, 1981, 1981, 2622, 2622, 2864, 2844, 2844, 3358, 3358, 3899, 3805, 3805, 1, 1640, 1640, 1640, 1640, 1641, 1977, 2115, 1640, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2865, 2622, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3900, 3358, 3360, 3358, 3361, 3801, 3358, 1640, 1979, 1979, 1979, 2622, 2842, 2842, 2842, 3358, 3803, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 2116, 2117, 2118, 1642, 1640, 1643, 1640, 1640, 2622, 2623, 2866, 2867, 2868, 2624, 2622, 2625, 2622, 2622, 3358, 3359, 3901, 3902, 3903, 3360, 3358, 3361, 3358, 3358, 1640, 1640, 2119, 1981, 1981, 2622, 2622, 2869, 2844, 2844, 3358, 3358, 3904, 3805, 3805, 1, 1640, 1640, 1640, 1640, 1641, 1977, 2120, 1640, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2870, 2622, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3905, 3358, 3360, 3358, 3361, 3801, 3358, 1640, 1979, 1979, 1979, 2622, 2842, 2842, 2842, 3358, 3803, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 2121, 2122, 2123, 1642, 1640, 1643, 1640, 1640, 2622, 2623, 2871, 2872, 2873, 2624, 2622, 2625, 2622, 2622, 3358, 3359, 3906, 3907, 3908, 3360, 3358, 3361, 3358, 3358, 1640, 1640, 2124, 1981, 1981, 2622, 2622, 2874, 2844, 2844, 3358, 3358, 3909, 3805, 3805, 1, 1812, 1640, 2127, 2675, 2676, 2675, 1640, 1641, 1977, 1980, 1640, 2125, 2126, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2843, 2622, 2875, 2678, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3804, 3358, 3910, 3911, 3358, 3361, 3801, 3358, 1640, 1979, 1979, 1979, 2622, 2842, 2842, 2842, 3358, 3803, 3803, 3803, 1, 1812, 1640, 2127, 2675, 2676, 2675, 1640, 1641, 1977, 1980, 1640, 2125, 2126, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2843, 2622, 2875, 2678, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3804, 3358, 3910, 3911, 3358, 3361, 3801, 3358, 1640, 2124, 1979, 1979, 2622, 2874, 2842, 2842, 3358, 3909, 3803, 3803, 1, 1812, 1640, 2127, 2675, 2676, 2675, 1640, 1641, 1977, 1980, 1640, 2125, 2126, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2843, 2622, 2875, 2678, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3804, 3358, 3910, 3911, 3358, 3361, 3801, 3358, 1640, 2121, 1979, 1979, 2622, 2871, 2842, 2842, 3358, 3906, 3803, 3803, 1, 1812, 1640, 2127, 2675, 2676, 2675, 1640, 1641, 1977, 1980, 1640, 2128, 2125, 2126, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2843, 2622, 2876, 2875, 2678, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3804, 3358, 3912, 3910, 3911, 3358, 3361, 3801, 3358, 1640, 2124, 2121, 1979, 1979, 2622, 2874, 2871, 2842, 2842, 3358, 3909, 3906, 3803, 3803, 1, 1812, 1640, 2127, 2675, 2676, 2675, 1640, 1641, 1977, 1980, 1640, 2125, 2126, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2843, 2622, 2875, 2678, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3804, 3358, 3910, 3911, 3358, 3361, 3801, 3358, 1640, 2121, 1979, 1979, 1979, 2622, 2871, 2842, 2842, 2842, 3358, 3906, 3803, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 1977, 2120, 1640, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2870, 2622, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3905, 3358, 3360, 3358, 3361, 3801, 3358, 1640, 2119, 1979, 1979, 2622, 2869, 2842, 2842, 3358, 3904, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 1977, 2120, 1640, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2870, 2622, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3905, 3358, 3360, 3358, 3361, 3801, 3358, 1640, 2116, 1979, 1979, 2622, 2866, 2842, 2842, 3358, 3901, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 1977, 2120, 1640, 2129, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2870, 2622, 2877, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3905, 3358, 3913, 3360, 3358, 3361, 3801, 3358, 1640, 2119, 2116, 1979, 1979, 2622, 2869, 2866, 2842, 2842, 3358, 3904, 3901, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 1977, 2120, 1640, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2870, 2622, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3905, 3358, 3360, 3358, 3361, 3801, 3358, 1640, 2116, 1979, 1979, 1979, 2622, 2866, 2842, 2842, 2842, 3358, 3901, 3803, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 1977, 2115, 1640, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2865, 2622, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3900, 3358, 3360, 3358, 3361, 3801, 3358, 1640, 2114, 1979, 1979, 2622, 2864, 2842, 2842, 3358, 3899, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 1977, 2115, 1640, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2865, 2622, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3900, 3358, 3360, 3358, 3361, 3801, 3358, 1640, 2111, 1979, 1979, 2622, 2861, 2842, 2842, 3358, 3896, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 1977, 2115, 1640, 2130, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2865, 2622, 2878, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3900, 3358, 3914, 3360, 3358, 3361, 3801, 3358, 1640, 2114, 2111, 1979, 1979, 2622, 2864, 2861, 2842, 2842, 3358, 3899, 3896, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 1977, 2115, 1640, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2865, 2622, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3900, 3358, 3360, 3358, 3361, 3801, 3358, 1640, 2111, 1979, 1979, 1979, 2622, 2861, 2842, 2842, 2842, 3358, 3896, 3803, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 1977, 1978, 1640, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2841, 2622, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3802, 3358, 3360, 3358, 3361, 3801, 3358, 1640, 2131, 1979, 1979, 2622, 2879, 2842, 2842, 3358, 3915, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 1977, 1978, 1640, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2841, 2622, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3802, 3358, 3360, 3358, 3361, 3801, 3358, 1640, 2132, 1979, 1979, 2622, 2880, 2842, 2842, 3358, 3916, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 1977, 1978, 1640, 2133, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2841, 2622, 2881, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3802, 3358, 3917, 3360, 3358, 3361, 3801, 3358, 1640, 2131, 2132, 1979, 1979, 2622, 2879, 2880, 2842, 2842, 3358, 3915, 3916, 3803, 3803, 1, 1640, 1640, 1640, 1640, 1641, 1977, 1978, 1640, 1642, 1640, 1643, 1977, 1640, 2622, 2623, 2840, 2841, 2622, 2624, 2622, 2625, 2840, 2622, 3358, 3359, 3801, 3802, 3358, 3360, 3358, 3361, 3801, 3358, 1640, 2132, 1979, 1979, 1979, 2622, 2880, 2842, 2842, 2842, 3358, 3916, 3803, 3803, 3803, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 1187, 1186, 1204, 2134, 2184, 2882, 2896, 3918, 1186, 1204, 1204, 1204, 1204, 2184, 2184, 2184, 2184, 2896, 2896, 2896, 2896, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 1187, 1186, 1204, 1205, 2135, 2135, 2184, 2185, 2883, 2883, 2896, 2897, 3919, 3919, 1186, 1204, 1204, 1204, 1204, 2184, 2184, 2184, 2184, 2896, 2896, 2896, 2896, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 1187, 1186, 1204, 1205, 2136, 2136, 2184, 2185, 2884, 2884, 2896, 2897, 3920, 3920, 1186, 1204, 1204, 1204, 1204, 2184, 2184, 2184, 2184, 2896, 2896, 2896, 2896, 1, 1184, 1185, 1184, 1186, 1186, 1186, 1186, 1187, 1186, 1204, 2137, 2184, 2885, 2896, 3921, 1186, 1204, 1204, 1204, 1204, 2184, 2184, 2184, 2184, 2896, 2896, 2896, 2896, 1, 2138, 2138, 2140, 2886, 2886, 2888, 3922, 3922, 3924, 2139, 2139, 2138, 2138, 2138, 2887, 2887, 2886, 2886, 2886, 3923, 3923, 3922, 3922, 3922, 1, 2141, 2889, 2890, 2889, 2142, 2143, 2891, 2892, 3925, 3926, 2142, 2142, 2142, 2142, 2142, 2891, 2891, 2891, 2891, 2891, 3925, 3925, 3925, 3925, 3925, 1, 61, 67, 61, 68, 68, 68, 68, 68, 2144, 2145, 2145, 68, 3927, 3928, 3928, 68, 68, 2144, 2144, 2144, 68, 68, 68, 3927, 3927, 3927, 1, 1680, 71, 72, 71, 68, 68, 68, 68, 68, 2146, 2147, 2148, 68, 61, 73, 3929, 3930, 3931, 68, 68, 2146, 2146, 2146, 68, 68, 68, 3929, 3929, 3929, 1, 2149, 2149, 2149, 2149, 2149, 73, 76, 73, 78, 77, 2149, 2150, 2149, 2149, 2149, 77, 77, 77, 79, 77, 77, 3932, 3933, 3932, 3934, 3932, 3932, 2149, 2149, 2149, 2149, 2149, 2149, 77, 77, 77, 77, 77, 3932, 3932, 3932, 3932, 3932, 1, 1690, 2151, 2151, 2151, 2151, 2151, 2151, 82, 64, 82, 77, 2151, 2152, 2151, 2153, 2151, 2151, 77, 77, 77, 61, 77, 77, 3935, 3936, 3935, 3937, 3935, 3935, 2151, 2151, 2151, 2151, 2151, 2151, 77, 77, 77, 77, 77, 3935, 3935, 3935, 3935, 3935, 1, 58, 82, 64, 82, 77, 77, 77, 61, 77, 77, 77, 77, 77, 77, 2154, 2154, 2154, 77, 77, 77, 3938, 3938, 3938, 1, 58, 82, 64, 82, 77, 77, 77, 61, 77, 77, 77, 77, 77, 77, 2151, 2151, 2151, 77, 77, 77, 3935, 3935, 3935, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 93, 3940, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 92, 92, 92, 3939, 3939, 3939, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 95, 3942, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 94, 94, 94, 3941, 3941, 3941, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 95, 3942, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 96, 96, 96, 3943, 3943, 3943, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 95, 3942, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 97, 97, 97, 3944, 3944, 3944, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 2151, 95, 3942, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 99, 3946, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 98, 98, 98, 3945, 3945, 3945, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 101, 3948, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 100, 100, 100, 3947, 3947, 3947, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 101, 3948, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 102, 102, 102, 3949, 3949, 3949, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 101, 3948, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 103, 103, 103, 3950, 3950, 3950, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 2151, 101, 3948, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 105, 3952, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 104, 104, 104, 3951, 3951, 3951, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 107, 3954, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 106, 106, 106, 3953, 3953, 3953, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 107, 3954, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 108, 108, 108, 3955, 3955, 3955, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 107, 3954, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 109, 109, 109, 3956, 3956, 3956, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 2151, 107, 3954, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 111, 3958, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 110, 110, 110, 3957, 3957, 3957, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 113, 3960, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 112, 112, 112, 3959, 3959, 3959, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 113, 3960, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 114, 114, 114, 3961, 3961, 3961, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 113, 3960, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 115, 115, 115, 3962, 3962, 3962, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 2151, 113, 3960, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 117, 3964, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 116, 116, 116, 3963, 3963, 3963, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 119, 3966, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 118, 118, 118, 3965, 3965, 3965, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 119, 3966, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 120, 120, 120, 3967, 3967, 3967, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 119, 3966, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 121, 121, 121, 3968, 3968, 3968, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 2151, 119, 3966, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 123, 3970, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 122, 122, 122, 3969, 3969, 3969, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 125, 3972, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 124, 124, 124, 3971, 3971, 3971, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 125, 3972, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 126, 126, 126, 3973, 3973, 3973, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 125, 3972, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 127, 127, 127, 3974, 3974, 3974, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 2151, 125, 3972, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 128, 129, 130, 132, 3975, 3976, 3977, 3979, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 131, 133, 133, 3978, 3980, 3980, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 136, 3981, 3983, 2151, 2151, 2151, 2151, 2151, 2151, 135, 135, 135, 3982, 3982, 3982, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 137, 138, 139, 3984, 3985, 3986, 2151, 2151, 2151, 2151, 2151, 140, 3987, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 2151, 141, 3988, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 142, 143, 144, 3989, 3990, 3991, 2151, 2151, 2151, 2151, 2151, 145, 3992, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 2151, 146, 3993, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 147, 148, 149, 3994, 3995, 3996, 2151, 2151, 2151, 2151, 2151, 150, 3997, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 89, 3998, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2151, 2151, 2151, 82, 64, 82, 2153, 61, 3937, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 89, 3998, 2151, 2151, 2151, 2151, 2151, 150, 3997, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 89, 3998, 2151, 2151, 2151, 2151, 2151, 147, 3994, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 151, 89, 3999, 3998, 2151, 2151, 2151, 2151, 2151, 150, 147, 3997, 3994, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 89, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 147, 3994, 1, 1690, 2151, 2152, 2151, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 146, 3993, 2151, 2151, 2151, 2151, 145, 3992, 1, 1690, 2151, 2152, 2151, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 146, 3993, 2151, 2151, 2151, 2151, 142, 3989, 1, 1690, 2151, 2152, 2151, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 146, 152, 3993, 4000, 2151, 2151, 2151, 2151, 145, 142, 3992, 3989, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 146, 3993, 2151, 2151, 2151, 2151, 2151, 142, 3989, 1, 1690, 2151, 2152, 2151, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 141, 3988, 2151, 2151, 2151, 2151, 140, 3987, 1, 1690, 2151, 2152, 2151, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 141, 3988, 2151, 2151, 2151, 2151, 137, 3984, 1, 1690, 2151, 2152, 2151, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 141, 153, 3988, 4001, 2151, 2151, 2151, 2151, 140, 137, 3987, 3984, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 141, 3988, 2151, 2151, 2151, 2151, 2151, 137, 3984, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 136, 3983, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 154, 154, 154, 4002, 4002, 4002, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 136, 3983, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 155, 155, 155, 4003, 4003, 4003, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 2151, 136, 3983, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 147, 3994, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 156, 156, 156, 4004, 4004, 4004, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 89, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 157, 157, 157, 4005, 4005, 4005, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 89, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 158, 158, 158, 4006, 4006, 4006, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 89, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 147, 147, 147, 3994, 3994, 3994, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 136, 3981, 3983, 2151, 2151, 2151, 2151, 2151, 2151, 159, 135, 135, 4007, 3982, 3982, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 136, 3981, 3983, 2151, 2151, 2151, 2151, 2151, 2151, 160, 154, 154, 4008, 4002, 4002, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 136, 3981, 3983, 2151, 2151, 2151, 2151, 2151, 2151, 155, 155, 155, 4003, 4003, 4003, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 161, 136, 3981, 4009, 3983, 2151, 2151, 2151, 2151, 2151, 2151, 159, 162, 135, 135, 4007, 4010, 3982, 3982, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 136, 3981, 3983, 2151, 2151, 2151, 2151, 2151, 2151, 160, 154, 154, 154, 4008, 4002, 4002, 4002, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 136, 3981, 3983, 2151, 2151, 2151, 2151, 2151, 2151, 154, 154, 154, 4002, 4002, 4002, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 136, 3981, 3983, 2151, 2151, 2151, 2151, 2151, 2151, 162, 135, 135, 4010, 3982, 3982, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 89, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 156, 156, 156, 4004, 4004, 4004, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 136, 3983, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 135, 135, 135, 3982, 3982, 3982, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 163, 164, 165, 89, 4011, 4012, 4013, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 166, 167, 167, 4014, 4015, 4015, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 169, 89, 3981, 4017, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 168, 168, 168, 4016, 4016, 4016, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 169, 89, 4017, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 170, 170, 170, 4018, 4018, 4018, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 169, 89, 4017, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 171, 171, 171, 4019, 4019, 4019, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 2151, 169, 89, 4017, 3998, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 156, 156, 156, 4004, 4004, 4004, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 169, 89, 3981, 4017, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 172, 168, 168, 4020, 4016, 4016, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 169, 89, 3981, 4017, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 173, 170, 170, 4021, 4018, 4018, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 169, 89, 3981, 4017, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 171, 171, 171, 4019, 4019, 4019, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 174, 169, 89, 3981, 4022, 4017, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 172, 175, 168, 168, 4020, 4023, 4016, 4016, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 169, 89, 3981, 4017, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 173, 170, 170, 170, 4021, 4018, 4018, 4018, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 169, 89, 3981, 4017, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 170, 170, 170, 4018, 4018, 4018, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 169, 89, 3981, 4017, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 175, 168, 168, 4023, 4016, 4016, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 169, 89, 4017, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 168, 168, 168, 4016, 4016, 4016, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 176, 177, 178, 89, 4024, 4025, 4026, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 179, 180, 180, 4027, 4028, 4028, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 182, 89, 3981, 4030, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 181, 181, 181, 4029, 4029, 4029, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 182, 89, 4030, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 183, 183, 183, 4031, 4031, 4031, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 182, 89, 4030, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 184, 184, 184, 4032, 4032, 4032, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 2151, 182, 89, 4030, 3998, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 163, 164, 165, 4011, 4012, 4013, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 166, 167, 167, 4014, 4015, 4015, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 182, 89, 3981, 4030, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 185, 181, 181, 4033, 4029, 4029, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 182, 89, 3981, 4030, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 186, 183, 183, 4034, 4031, 4031, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 182, 89, 3981, 4030, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 184, 184, 184, 4032, 4032, 4032, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 187, 182, 89, 3981, 4035, 4030, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 185, 188, 181, 181, 4033, 4036, 4029, 4029, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 182, 89, 3981, 4030, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 186, 183, 183, 183, 4034, 4031, 4031, 4031, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 182, 89, 3981, 4030, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 183, 183, 183, 4031, 4031, 4031, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 182, 89, 3981, 4030, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 188, 181, 181, 4036, 4029, 4029, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 182, 89, 4030, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 181, 181, 181, 4029, 4029, 4029, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 189, 190, 191, 89, 4037, 4038, 4039, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 192, 193, 193, 4040, 4041, 4041, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 195, 89, 3981, 4043, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 194, 194, 194, 4042, 4042, 4042, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 195, 89, 4043, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 196, 196, 196, 4044, 4044, 4044, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 195, 89, 4043, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 197, 197, 197, 4045, 4045, 4045, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 2151, 195, 89, 4043, 3998, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 176, 177, 178, 4024, 4025, 4026, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 179, 180, 180, 4027, 4028, 4028, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 195, 89, 3981, 4043, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 198, 194, 194, 4046, 4042, 4042, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 195, 89, 3981, 4043, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 199, 196, 196, 4047, 4044, 4044, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 195, 89, 3981, 4043, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 197, 197, 197, 4045, 4045, 4045, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 200, 195, 89, 3981, 4048, 4043, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 198, 201, 194, 194, 4046, 4049, 4042, 4042, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 195, 89, 3981, 4043, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 199, 196, 196, 196, 4047, 4044, 4044, 4044, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 195, 89, 3981, 4043, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 196, 196, 196, 4044, 4044, 4044, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 195, 89, 3981, 4043, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 201, 194, 194, 4049, 4042, 4042, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 195, 89, 4043, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 194, 194, 194, 4042, 4042, 4042, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 202, 203, 204, 89, 4050, 4051, 4052, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 205, 206, 206, 4053, 4054, 4054, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 208, 89, 3981, 4056, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 207, 207, 207, 4055, 4055, 4055, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 208, 89, 4056, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 209, 209, 209, 4057, 4057, 4057, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 208, 89, 4056, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 210, 210, 210, 4058, 4058, 4058, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 2151, 208, 89, 4056, 3998, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 189, 190, 191, 4037, 4038, 4039, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 192, 193, 193, 4040, 4041, 4041, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 208, 89, 3981, 4056, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 211, 207, 207, 4059, 4055, 4055, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 208, 89, 3981, 4056, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 212, 209, 209, 4060, 4057, 4057, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 208, 89, 3981, 4056, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 210, 210, 210, 4058, 4058, 4058, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 213, 208, 89, 3981, 4061, 4056, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 211, 214, 207, 207, 4059, 4062, 4055, 4055, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 208, 89, 3981, 4056, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 212, 209, 209, 209, 4060, 4057, 4057, 4057, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 208, 89, 3981, 4056, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 209, 209, 209, 4057, 4057, 4057, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 208, 89, 3981, 4056, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 214, 207, 207, 4062, 4055, 4055, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 208, 89, 4056, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 207, 207, 207, 4055, 4055, 4055, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 215, 216, 217, 89, 4063, 4064, 4065, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 218, 219, 219, 4066, 4067, 4067, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 221, 89, 3981, 4069, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 220, 220, 220, 4068, 4068, 4068, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 221, 89, 4069, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 222, 222, 222, 4070, 4070, 4070, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 221, 89, 4069, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 223, 223, 223, 4071, 4071, 4071, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 2151, 221, 89, 4069, 3998, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 202, 203, 204, 4050, 4051, 4052, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 205, 206, 206, 4053, 4054, 4054, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 221, 89, 3981, 4069, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 224, 220, 220, 4072, 4068, 4068, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 221, 89, 3981, 4069, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 225, 222, 222, 4073, 4070, 4070, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 221, 89, 3981, 4069, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 223, 223, 223, 4071, 4071, 4071, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 226, 221, 89, 3981, 4074, 4069, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 224, 227, 220, 220, 4072, 4075, 4068, 4068, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 221, 89, 3981, 4069, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 225, 222, 222, 222, 4073, 4070, 4070, 4070, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 221, 89, 3981, 4069, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 222, 222, 222, 4070, 4070, 4070, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 221, 89, 3981, 4069, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 227, 220, 220, 4075, 4068, 4068, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 221, 89, 4069, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 220, 220, 220, 4068, 4068, 4068, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 2151, 228, 4076, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 229, 230, 231, 89, 4077, 4078, 4079, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 232, 233, 233, 4080, 4081, 4081, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 235, 89, 3981, 4083, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 234, 234, 234, 4082, 4082, 4082, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 235, 89, 4083, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 236, 236, 236, 4084, 4084, 4084, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 235, 89, 4083, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 237, 237, 237, 4085, 4085, 4085, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 2151, 235, 89, 4083, 3998, 2151, 2151, 2151, 2151, 1, 1690, 2151, 2152, 2151, 2153, 2151, 2151, 2151, 215, 216, 217, 4063, 4064, 4065, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 218, 219, 219, 4066, 4067, 4067, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 235, 89, 3981, 4083, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 238, 234, 234, 4086, 4082, 4082, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 235, 89, 3981, 4083, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 239, 236, 236, 4087, 4084, 4084, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 235, 89, 3981, 4083, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 237, 237, 237, 4085, 4085, 4085, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 240, 235, 89, 3981, 4088, 4083, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 238, 241, 234, 234, 4086, 4089, 4082, 4082, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 235, 89, 3981, 4083, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 239, 236, 236, 236, 4087, 4084, 4084, 4084, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 235, 89, 3981, 4083, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 236, 236, 236, 4084, 4084, 4084, 1, 1690, 2151, 2152, 2151, 2151, 2153, 2151, 2151, 2151, 2151, 134, 235, 89, 3981, 4083, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 241, 234, 234, 4089, 4082, 4082, 1, 1690, 2151, 2152, 2153, 2151, 2151, 2151, 235, 89, 4083, 3998, 2151, 2151, 2151, 2151, 2151, 2151, 2151, 234, 234, 234, 4082, 4082, 4082, 1, 1680, 71, 72, 71, 68, 68, 68, 68, 68, 2146, 2147, 2148, 2155, 2155, 68, 61, 73, 3929, 3930, 3931, 4090, 4090, 68, 68, 2146, 2146, 2146, 68, 68, 68, 3929, 3929, 3929, 1, 1680, 71, 72, 71, 68, 68, 68, 68, 68, 2146, 2147, 2148, 2156, 2156, 68, 61, 73, 3929, 3930, 3931, 4091, 4091, 68, 68, 2146, 2146, 2146, 68, 68, 68, 3929, 3929, 3929, 1, 1680, 71, 72, 71, 68, 68, 68, 68, 68, 2146, 2147, 2148, 2157, 2157, 68, 61, 73, 3929, 3930, 3931, 4092, 4092, 68, 68, 2146, 2146, 2146, 68, 68, 68, 3929, 3929, 3929, 1, 1680, 71, 72, 71, 68, 68, 68, 68, 68, 2146, 2147, 2148, 2158, 2158, 68, 61, 73, 3929, 3930, 3931, 4093, 4093, 68, 68, 2146, 2146, 2146, 68, 68, 68, 3929, 3929, 3929, 1, 1680, 71, 72, 71, 68, 68, 68, 68, 68, 2159, 2147, 2148, 68, 61, 73, 4094, 3930, 3931, 68, 68, 2146, 2146, 2146, 68, 68, 68, 3929, 3929, 3929, 1, 1680, 71, 72, 71, 68, 68, 68, 68, 68, 2146, 2147, 2148, 2160, 2160, 68, 61, 73, 3929, 3930, 3931, 4095, 4095, 68, 68, 2146, 2146, 2146, 68, 68, 68, 3929, 3929, 3929, 1, 1680, 71, 72, 71, 68, 68, 68, 68, 68, 2146, 2147, 2148, 2161, 2161, 68, 61, 73, 3929, 3930, 3931, 4096, 4096, 68, 68, 2146, 2146, 2146, 68, 68, 68, 3929, 3929, 3929, 1, 1680, 71, 72, 71, 68, 68, 68, 68, 68, 2146, 2147, 2148, 2162, 2162, 68, 61, 73, 3929, 3930, 3931, 4097, 4097, 68, 68, 2146, 2146, 2146, 68, 68, 68, 3929, 3929, 3929, 1, 1680, 71, 72, 71, 68, 68, 68, 68, 68, 2146, 2147, 2148, 2163, 2163, 68, 61, 73, 3929, 3930, 3931, 4098, 4098, 68, 68, 2146, 2146, 2146, 68, 68, 68, 3929, 3929, 3929, 1, 1680, 71, 72, 71, 68, 68, 68, 68, 68, 2146, 2147, 2148, 2164, 2164, 68, 61, 73, 3929, 3930, 3931, 4099, 4099, 68, 68, 2146, 2146, 2146, 68, 68, 68, 3929, 3929, 3929, 1, 1680, 71, 72, 71, 68, 68, 68, 68, 68, 2146, 2147, 2148, 2165, 2165, 68, 61, 73, 3929, 3930, 3931, 4100, 4100, 68, 68, 2146, 2146, 2146, 68, 68, 68, 3929, 3929, 3929, 1, 1680, 71, 72, 71, 68, 68, 68, 68, 68, 2146, 2147, 2148, 2166, 2166, 68, 61, 73, 3929, 3930, 3931, 4101, 4101, 68, 68, 2146, 2146, 2146, 68, 68, 68, 3929, 3929, 3929, 1, 1680, 71, 72, 71, 68, 68, 68, 68, 68, 2146, 2147, 2167, 68, 61, 73, 3929, 3930, 4102, 68, 68, 2146, 2146, 2146, 68, 68, 68, 3929, 3929, 3929, 1, 2149, 2149, 2149, 2149, 2149, 73, 76, 73, 78, 77, 2149, 2150, 2149, 2149, 2168, 2149, 2149, 2149, 77, 77, 77, 79, 77, 77, 3932, 3933, 3932, 3932, 4103, 3934, 3932, 3932, 2149, 2149, 2169, 2170, 2170, 77, 77, 77, 77, 77, 3932, 4104, 4105, 4105, 1, 1690, 2151, 2151, 2151, 2151, 2151, 2151, 82, 64, 82, 77, 2151, 2152, 2151, 2153, 2151, 2151, 77, 77, 77, 61, 77, 77, 3935, 3936, 3935, 3937, 3935, 3935, 2171, 2151, 2171, 2172, 2151, 2151, 77, 77, 77, 77, 77, 3935, 4106, 4107, 3935, 3935, 1, 2173, 2151, 2151, 2151, 2151, 2151, 2151, 82, 64, 82, 77, 2151, 2152, 2151, 2174, 2151, 2151, 77, 77, 77, 61, 77, 77, 3935, 3936, 3935, 4108, 3935, 3935, 2172, 2151, 2172, 2172, 2151, 2151, 77, 77, 77, 77, 77, 3935, 4107, 4107, 3935, 3935, 1, 1690, 2151, 2151, 2151, 2151, 2151, 2151, 82, 64, 82, 77, 2151, 2152, 2151, 2175, 2176, 2153, 2175, 2151, 77, 77, 77, 61, 77, 77, 3935, 3936, 3935, 4109, 4110, 3937, 4109, 3935, 2151, 2151, 2177, 2177, 2177, 77, 77, 77, 77, 77, 3935, 4111, 4111, 4111, 1, 1690, 2151, 2151, 2151, 2151, 2151, 2151, 82, 64, 82, 77, 2151, 2152, 2151, 2175, 2151, 2153, 2175, 2151, 77, 77, 77, 61, 77, 77, 3935, 3936, 3935, 4109, 3935, 3937, 4109, 3935, 2151, 2151, 2177, 2177, 2177, 77, 77, 77, 77, 77, 3935, 4111, 4111, 4111, 1, 1690, 2151, 2151, 2151, 2151, 2151, 2151, 82, 64, 82, 77, 2151, 2152, 2151, 2153, 2151, 2151, 77, 77, 77, 61, 77, 77, 3935, 3936, 3935, 3937, 3935, 3935, 2151, 2151, 2151, 2177, 2178, 2178, 77, 77, 77, 77, 77, 3935, 3935, 4111, 4112, 4112, 1, 2173, 2151, 2151, 2151, 2151, 2151, 2151, 82, 64, 82, 77, 2151, 2152, 2151, 2179, 2180, 2174, 2179, 2151, 77, 77, 77, 61, 77, 77, 3935, 3936, 3935, 4113, 4114, 4108, 4113, 3935, 2151, 2151, 2178, 2178, 2178, 77, 77, 77, 77, 77, 3935, 4112, 4112, 4112, 1, 1690, 2151, 2151, 2151, 2151, 2151, 2151, 82, 64, 82, 77, 2151, 2152, 2151, 2179, 2151, 2153, 2179, 2151, 77, 77, 77, 61, 77, 77, 3935, 3936, 3935, 4113, 3935, 3937, 4113, 3935, 2151, 2151, 2178, 2178, 2178, 77, 77, 77, 77, 77, 3935, 4112, 4112, 4112, 1, 2173, 2151, 2151, 2151, 2151, 2151, 2151, 82, 64, 82, 77, 2151, 2152, 2151, 2174, 2151, 2151, 77, 77, 77, 61, 77, 77, 3935, 3936, 3935, 4108, 3935, 3935, 2151, 2151, 2151, 2177, 2178, 2178, 77, 77, 77, 77, 77, 3935, 3935, 4111, 4112, 4112, 1, 2142, 2142, 2891, 2891, 3925, 3925, 2181, 2181, 2142, 2142, 2142, 2893, 2893, 2891, 2891, 2891, 4115, 4115, 3925, 3925, 3925, 1, 2182, 2182, 2183, 2894, 2894, 2895, 4116, 4116, 4117, 1, 2141, 2889, 2890, 2889, 2143, 2892, 3926, 2183, 2183, 2183, 2895, 2895, 2895, 4117, 4117, 4117, 1, 1, 0 }; static const short _sip_uri_parser_trans_targs[] = { 2, 0, 3, 1033, 1038, 6, 1048, 1471, 1855, 1891, 2314, 2562, 2570, 3017, 3522, 4, 5, 7, 613, 997, 7, 8, 9, 10, 397, 403, 212, 29, 245, 399, 402, 11, 13, 16, 12, 14, 15, 17, 241, 243, 242, 21, 18, 223, 19, 20, 22, 23, 24, 25, 217, 219, 218, 26, 216, 27, 215, 28, 3710, 29, 30, 36, 31, 32, 33, 34, 35, 37, 40, 38, 39, 41, 42, 45, 43, 44, 46, 49, 51, 61, 47, 48, 50, 52, 53, 54, 55, 56, 57, 59, 60, 58, 62, 197, 63, 66, 64, 65, 67, 183, 68, 71, 69, 70, 72, 169, 73, 76, 74, 75, 77, 155, 78, 81, 79, 80, 82, 141, 83, 86, 84, 85, 87, 127, 88, 91, 89, 90, 92, 118, 121, 124, 125, 126, 93, 111, 114, 94, 107, 109, 108, 95, 96, 103, 105, 104, 97, 98, 99, 101, 100, 102, 106, 110, 112, 113, 115, 116, 117, 119, 120, 122, 123, 128, 133, 136, 139, 140, 129, 132, 130, 131, 134, 135, 137, 138, 142, 147, 150, 153, 154, 143, 146, 144, 145, 148, 149, 151, 152, 156, 161, 164, 167, 168, 157, 160, 158, 159, 162, 163, 165, 166, 170, 175, 178, 181, 182, 171, 174, 172, 173, 176, 177, 179, 180, 184, 189, 192, 195, 196, 185, 188, 186, 187, 190, 191, 193, 194, 198, 199, 204, 207, 210, 211, 200, 203, 201, 202, 205, 206, 208, 209, 213, 214, 220, 221, 222, 224, 237, 239, 238, 225, 226, 233, 235, 234, 227, 228, 229, 231, 230, 232, 236, 240, 244, 246, 382, 247, 250, 248, 249, 251, 368, 252, 255, 253, 254, 256, 354, 257, 260, 258, 259, 261, 340, 262, 265, 263, 264, 266, 326, 267, 270, 268, 269, 271, 312, 272, 275, 273, 274, 276, 303, 306, 309, 310, 311, 277, 296, 299, 278, 292, 294, 293, 279, 280, 288, 290, 289, 281, 282, 284, 286, 285, 283, 287, 291, 295, 297, 298, 300, 301, 302, 304, 305, 307, 308, 313, 318, 321, 324, 325, 314, 317, 315, 316, 319, 320, 322, 323, 327, 332, 335, 338, 339, 328, 331, 329, 330, 333, 334, 336, 337, 341, 346, 349, 352, 353, 342, 345, 343, 344, 347, 348, 350, 351, 355, 360, 363, 366, 367, 356, 359, 357, 358, 361, 362, 364, 365, 369, 374, 377, 380, 381, 370, 373, 371, 372, 375, 376, 378, 379, 383, 384, 389, 392, 395, 396, 385, 388, 386, 387, 390, 391, 393, 394, 398, 400, 401, 404, 405, 406, 607, 455, 609, 612, 407, 409, 412, 408, 410, 411, 413, 451, 453, 452, 417, 414, 433, 415, 416, 418, 419, 420, 421, 427, 429, 428, 422, 426, 423, 425, 424, 430, 431, 432, 434, 447, 449, 448, 435, 436, 443, 445, 444, 437, 438, 439, 441, 440, 442, 446, 450, 454, 456, 592, 457, 460, 458, 459, 461, 578, 462, 465, 463, 464, 466, 564, 467, 470, 468, 469, 471, 550, 472, 475, 473, 474, 476, 536, 477, 480, 478, 479, 481, 522, 482, 485, 483, 484, 486, 513, 516, 519, 520, 521, 487, 506, 509, 488, 502, 504, 503, 489, 490, 498, 500, 499, 491, 492, 494, 496, 495, 493, 497, 501, 505, 507, 508, 510, 511, 512, 514, 515, 517, 518, 523, 528, 531, 534, 535, 524, 527, 525, 526, 529, 530, 532, 533, 537, 542, 545, 548, 549, 538, 541, 539, 540, 543, 544, 546, 547, 551, 556, 559, 562, 563, 552, 555, 553, 554, 557, 558, 560, 561, 565, 570, 573, 576, 577, 566, 569, 567, 568, 571, 572, 574, 575, 579, 584, 587, 590, 591, 580, 583, 581, 582, 585, 586, 588, 589, 593, 594, 599, 602, 605, 606, 595, 598, 596, 597, 600, 601, 603, 604, 608, 610, 611, 614, 615, 616, 996, 617, 618, 880, 992, 994, 993, 884, 728, 617, 618, 620, 623, 619, 621, 622, 624, 724, 726, 725, 628, 625, 706, 626, 627, 628, 629, 630, 631, 636, 29, 644, 632, 700, 702, 701, 633, 699, 634, 698, 635, 636, 29, 644, 637, 638, 652, 659, 669, 637, 638, 636, 640, 29, 644, 639, 641, 642, 651, 641, 642, 636, 29, 644, 643, 645, 646, 648, 647, 649, 644, 29, 650, 653, 636, 654, 29, 644, 655, 656, 657, 655, 656, 658, 636, 644, 660, 661, 636, 654, 29, 644, 662, 663, 664, 665, 666, 667, 665, 666, 636, 29, 644, 667, 668, 636, 29, 644, 670, 671, 672, 673, 674, 675, 676, 677, 678, 679, 680, 683, 687, 692, 695, 681, 679, 680, 636, 29, 644, 681, 682, 636, 29, 644, 684, 685, 686, 636, 29, 644, 688, 690, 689, 636, 29, 644, 691, 636, 29, 644, 693, 694, 636, 29, 644, 696, 636, 29, 644, 697, 636, 29, 644, 701, 703, 704, 705, 707, 720, 722, 721, 708, 709, 716, 718, 717, 710, 711, 712, 714, 713, 631, 636, 29, 644, 715, 719, 723, 725, 624, 727, 729, 865, 730, 733, 731, 732, 734, 851, 735, 738, 736, 737, 739, 837, 740, 743, 741, 742, 744, 823, 745, 748, 746, 747, 749, 809, 750, 753, 751, 752, 754, 795, 755, 758, 756, 757, 759, 786, 789, 792, 793, 794, 760, 779, 782, 761, 775, 777, 776, 762, 763, 771, 773, 772, 764, 765, 767, 769, 768, 766, 631, 636, 29, 644, 770, 774, 778, 780, 781, 783, 784, 785, 787, 788, 790, 791, 796, 801, 804, 807, 808, 797, 800, 798, 799, 802, 803, 805, 806, 810, 815, 818, 821, 822, 811, 814, 812, 813, 816, 817, 819, 820, 824, 829, 832, 835, 836, 825, 828, 826, 827, 830, 831, 833, 834, 838, 843, 846, 849, 850, 839, 842, 840, 841, 844, 845, 847, 848, 852, 857, 860, 863, 864, 853, 856, 854, 855, 858, 859, 861, 862, 866, 867, 872, 875, 878, 879, 868, 871, 869, 870, 873, 874, 876, 877, 881, 974, 882, 883, 884, 885, 886, 887, 900, 916, 888, 894, 896, 895, 889, 893, 890, 892, 891, 895, 897, 898, 899, 901, 902, 904, 931, 937, 946, 901, 902, 904, 900, 912, 916, 903, 905, 907, 906, 908, 909, 911, 908, 909, 910, 913, 914, 930, 913, 914, 900, 916, 915, 917, 918, 920, 927, 919, 921, 923, 922, 924, 926, 925, 928, 916, 929, 932, 900, 933, 916, 934, 935, 934, 935, 936, 938, 939, 900, 933, 916, 940, 941, 942, 943, 944, 943, 944, 900, 916, 945, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 959, 963, 968, 971, 956, 957, 900, 916, 958, 960, 961, 962, 900, 916, 964, 966, 965, 900, 916, 967, 900, 916, 969, 970, 900, 916, 972, 900, 916, 973, 900, 916, 975, 988, 990, 989, 976, 977, 984, 986, 985, 978, 979, 980, 982, 981, 887, 900, 916, 983, 987, 991, 993, 880, 995, 616, 998, 999, 1000, 1001, 1030, 1031, 1001, 1002, 29, 1003, 1008, 1003, 1002, 1004, 1005, 1006, 1005, 1006, 1002, 1007, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1024, 1027, 1022, 1023, 1002, 29, 1025, 1026, 1024, 1027, 1028, 1029, 1030, 1031, 1032, 1034, 1035, 1033, 6, 1034, 1035, 1036, 1037, 1039, 1040, 1041, 1042, 1043, 1038, 1044, 1046, 1047, 1045, 2, 3, 1048, 1049, 3710, 1050, 1051, 1255, 1261, 1070, 1103, 1257, 1260, 1052, 1054, 1057, 1053, 1055, 1056, 1058, 1099, 1101, 1100, 1062, 1059, 1081, 1060, 1061, 1063, 1064, 1065, 1066, 1075, 1077, 1076, 1067, 1074, 1068, 1073, 1069, 1071, 1072, 1078, 1079, 1080, 1082, 1095, 1097, 1096, 1083, 1084, 1091, 1093, 1092, 1085, 1086, 1087, 1089, 1088, 1090, 1094, 1098, 1102, 1104, 1240, 1105, 1108, 1106, 1107, 1109, 1226, 1110, 1113, 1111, 1112, 1114, 1212, 1115, 1118, 1116, 1117, 1119, 1198, 1120, 1123, 1121, 1122, 1124, 1184, 1125, 1128, 1126, 1127, 1129, 1170, 1130, 1133, 1131, 1132, 1134, 1161, 1164, 1167, 1168, 1169, 1135, 1154, 1157, 1136, 1150, 1152, 1151, 1137, 1138, 1146, 1148, 1147, 1139, 1140, 1142, 1144, 1143, 1141, 1145, 1149, 1153, 1155, 1156, 1158, 1159, 1160, 1162, 1163, 1165, 1166, 1171, 1176, 1179, 1182, 1183, 1172, 1175, 1173, 1174, 1177, 1178, 1180, 1181, 1185, 1190, 1193, 1196, 1197, 1186, 1189, 1187, 1188, 1191, 1192, 1194, 1195, 1199, 1204, 1207, 1210, 1211, 1200, 1203, 1201, 1202, 1205, 1206, 1208, 1209, 1213, 1218, 1221, 1224, 1225, 1214, 1217, 1215, 1216, 1219, 1220, 1222, 1223, 1227, 1232, 1235, 1238, 1239, 1228, 1231, 1229, 1230, 1233, 1234, 1236, 1237, 1241, 1242, 1247, 1250, 1253, 1254, 1243, 1246, 1244, 1245, 1248, 1249, 1251, 1252, 1256, 1258, 1259, 1262, 1263, 1264, 1465, 1313, 1467, 1470, 1265, 1267, 1270, 1266, 1268, 1269, 1271, 1309, 1311, 1310, 1275, 1272, 1291, 1273, 1274, 1276, 1277, 1278, 1279, 1285, 1287, 1286, 1280, 1284, 1281, 1283, 1282, 1288, 1289, 1290, 1292, 1305, 1307, 1306, 1293, 1294, 1301, 1303, 1302, 1295, 1296, 1297, 1299, 1298, 1300, 1304, 1308, 1312, 1314, 1450, 1315, 1318, 1316, 1317, 1319, 1436, 1320, 1323, 1321, 1322, 1324, 1422, 1325, 1328, 1326, 1327, 1329, 1408, 1330, 1333, 1331, 1332, 1334, 1394, 1335, 1338, 1336, 1337, 1339, 1380, 1340, 1343, 1341, 1342, 1344, 1371, 1374, 1377, 1378, 1379, 1345, 1364, 1367, 1346, 1360, 1362, 1361, 1347, 1348, 1356, 1358, 1357, 1349, 1350, 1352, 1354, 1353, 1351, 1355, 1359, 1363, 1365, 1366, 1368, 1369, 1370, 1372, 1373, 1375, 1376, 1381, 1386, 1389, 1392, 1393, 1382, 1385, 1383, 1384, 1387, 1388, 1390, 1391, 1395, 1400, 1403, 1406, 1407, 1396, 1399, 1397, 1398, 1401, 1402, 1404, 1405, 1409, 1414, 1417, 1420, 1421, 1410, 1413, 1411, 1412, 1415, 1416, 1418, 1419, 1423, 1428, 1431, 1434, 1435, 1424, 1427, 1425, 1426, 1429, 1430, 1432, 1433, 1437, 1442, 1445, 1448, 1449, 1438, 1441, 1439, 1440, 1443, 1444, 1446, 1447, 1451, 1452, 1457, 1460, 1463, 1464, 1453, 1456, 1454, 1455, 1458, 1459, 1461, 1462, 1466, 1468, 1469, 1472, 1473, 1474, 1854, 1475, 1476, 1738, 1850, 1852, 1851, 1742, 1586, 1475, 1476, 1478, 1481, 1477, 1479, 1480, 1482, 1582, 1584, 1583, 1486, 1483, 1564, 1484, 1485, 1486, 3710, 1487, 1488, 1489, 1494, 1502, 1490, 1558, 1560, 1559, 1491, 1557, 1492, 1556, 1493, 3710, 1494, 1502, 1495, 1496, 1510, 1517, 1527, 3710, 1495, 1496, 1494, 1498, 1502, 1497, 1499, 1500, 1509, 3710, 1499, 1500, 1494, 1502, 1501, 1503, 1504, 1506, 1505, 3710, 1507, 1502, 1508, 1511, 3710, 1494, 1512, 1502, 1513, 1514, 1515, 1513, 1514, 1516, 1494, 1502, 1518, 1519, 3710, 1494, 1512, 1502, 1520, 1521, 1522, 1523, 1524, 1525, 3710, 1523, 1524, 1494, 1502, 1525, 3710, 1526, 1494, 1502, 1528, 1529, 1530, 1531, 1532, 1533, 1534, 1535, 1536, 1537, 1538, 1541, 1545, 1550, 1553, 1539, 3710, 1537, 1538, 1494, 1502, 1539, 3710, 1540, 1494, 1502, 1542, 1543, 1544, 3710, 1494, 1502, 1546, 1548, 1547, 3710, 1494, 1502, 1549, 3710, 1494, 1502, 1551, 1552, 3710, 1494, 1502, 1554, 3710, 1494, 1502, 1555, 3710, 1494, 1502, 1559, 1561, 1562, 1563, 1565, 1578, 1580, 1579, 1566, 1567, 1574, 1576, 1575, 1568, 1569, 1570, 1572, 1571, 3710, 1489, 1494, 1502, 1573, 1577, 1581, 1583, 1482, 1585, 1587, 1723, 1588, 1591, 1589, 1590, 1592, 1709, 1593, 1596, 1594, 1595, 1597, 1695, 1598, 1601, 1599, 1600, 1602, 1681, 1603, 1606, 1604, 1605, 1607, 1667, 1608, 1611, 1609, 1610, 1612, 1653, 1613, 1616, 1614, 1615, 1617, 1644, 1647, 1650, 1651, 1652, 1618, 1637, 1640, 1619, 1633, 1635, 1634, 1620, 1621, 1629, 1631, 1630, 1622, 1623, 1625, 1627, 1626, 1624, 3710, 1489, 1494, 1502, 1628, 1632, 1636, 1638, 1639, 1641, 1642, 1643, 1645, 1646, 1648, 1649, 1654, 1659, 1662, 1665, 1666, 1655, 1658, 1656, 1657, 1660, 1661, 1663, 1664, 1668, 1673, 1676, 1679, 1680, 1669, 1672, 1670, 1671, 1674, 1675, 1677, 1678, 1682, 1687, 1690, 1693, 1694, 1683, 1686, 1684, 1685, 1688, 1689, 1691, 1692, 1696, 1701, 1704, 1707, 1708, 1697, 1700, 1698, 1699, 1702, 1703, 1705, 1706, 1710, 1715, 1718, 1721, 1722, 1711, 1714, 1712, 1713, 1716, 1717, 1719, 1720, 1724, 1725, 1730, 1733, 1736, 1737, 1726, 1729, 1727, 1728, 1731, 1732, 1734, 1735, 1739, 1832, 1740, 1741, 1742, 1743, 1744, 1745, 1758, 1774, 1746, 1752, 1754, 1753, 1747, 1751, 1748, 1750, 1749, 1753, 1755, 1756, 1757, 1759, 1760, 1762, 1789, 1795, 1804, 1759, 1760, 1762, 1758, 1770, 1774, 1761, 1763, 1765, 1764, 1766, 1767, 1769, 1766, 1767, 1768, 1771, 1772, 1788, 1771, 1772, 1758, 1774, 1773, 1775, 1776, 1778, 1785, 1777, 1779, 1781, 1780, 1782, 1784, 1783, 1786, 1774, 1787, 1790, 1758, 1791, 1774, 1792, 1793, 1792, 1793, 1794, 1796, 1797, 1758, 1791, 1774, 1798, 1799, 1800, 1801, 1802, 1801, 1802, 1758, 1774, 1803, 1805, 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 1817, 1821, 1826, 1829, 1814, 1815, 1758, 1774, 1816, 1818, 1819, 1820, 1758, 1774, 1822, 1824, 1823, 1758, 1774, 1825, 1758, 1774, 1827, 1828, 1758, 1774, 1830, 1758, 1774, 1831, 1758, 1774, 1833, 1846, 1848, 1847, 1834, 1835, 1842, 1844, 1843, 1836, 1837, 1838, 1840, 1839, 1745, 1758, 1774, 1841, 1845, 1849, 1851, 1738, 1853, 1474, 1856, 1857, 1858, 1859, 1888, 1889, 3710, 1859, 1860, 1861, 1866, 1861, 1860, 1862, 1863, 1864, 1863, 1864, 1860, 1865, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, 1878, 1879, 1880, 1882, 1885, 1880, 1881, 3710, 1860, 1883, 1884, 1882, 1885, 1886, 1887, 1888, 1889, 1890, 1891, 1892, 50, 33, 1893, 1894, 2095, 2104, 2100, 36, 1943, 2097, 2103, 1895, 1897, 1900, 1896, 1898, 1899, 1901, 1939, 1941, 1940, 1905, 1902, 1921, 1903, 1904, 1906, 1907, 1908, 1909, 1915, 1917, 1916, 1910, 1914, 1911, 1913, 1912, 1918, 1919, 1920, 1922, 1935, 1937, 1936, 1923, 1924, 1931, 1933, 1932, 1925, 1926, 1927, 1929, 1928, 1930, 1934, 1938, 1942, 1944, 2080, 1945, 1948, 1946, 1947, 1949, 2066, 1950, 1953, 1951, 1952, 1954, 2052, 1955, 1958, 1956, 1957, 1959, 2038, 1960, 1963, 1961, 1962, 1964, 2024, 1965, 1968, 1966, 1967, 1969, 2010, 1970, 1973, 1971, 1972, 1974, 2001, 2004, 2007, 2008, 2009, 1975, 1994, 1997, 1976, 1990, 1992, 1991, 1977, 1978, 1986, 1988, 1987, 1979, 1980, 1982, 1984, 1983, 1981, 1985, 1989, 1993, 1995, 1996, 1998, 1999, 2000, 2002, 2003, 2005, 2006, 2011, 2016, 2019, 2022, 2023, 2012, 2015, 2013, 2014, 2017, 2018, 2020, 2021, 2025, 2030, 2033, 2036, 2037, 2026, 2029, 2027, 2028, 2031, 2032, 2034, 2035, 2039, 2044, 2047, 2050, 2051, 2040, 2043, 2041, 2042, 2045, 2046, 2048, 2049, 2053, 2058, 2061, 2064, 2065, 2054, 2057, 2055, 2056, 2059, 2060, 2062, 2063, 2067, 2072, 2075, 2078, 2079, 2068, 2071, 2069, 2070, 2073, 2074, 2076, 2077, 2081, 2082, 2087, 2090, 2093, 2094, 2083, 2086, 2084, 2085, 2088, 2089, 2091, 2092, 2096, 2098, 2099, 2101, 2102, 2105, 2106, 2107, 2308, 2156, 2310, 2313, 2108, 2110, 2113, 2109, 2111, 2112, 2114, 2152, 2154, 2153, 2118, 2115, 2134, 2116, 2117, 2119, 2120, 2121, 2122, 2128, 2130, 2129, 2123, 2127, 2124, 2126, 2125, 2131, 2132, 2133, 2135, 2148, 2150, 2149, 2136, 2137, 2144, 2146, 2145, 2138, 2139, 2140, 2142, 2141, 2143, 2147, 2151, 2155, 2157, 2293, 2158, 2161, 2159, 2160, 2162, 2279, 2163, 2166, 2164, 2165, 2167, 2265, 2168, 2171, 2169, 2170, 2172, 2251, 2173, 2176, 2174, 2175, 2177, 2237, 2178, 2181, 2179, 2180, 2182, 2223, 2183, 2186, 2184, 2185, 2187, 2214, 2217, 2220, 2221, 2222, 2188, 2207, 2210, 2189, 2203, 2205, 2204, 2190, 2191, 2199, 2201, 2200, 2192, 2193, 2195, 2197, 2196, 2194, 2198, 2202, 2206, 2208, 2209, 2211, 2212, 2213, 2215, 2216, 2218, 2219, 2224, 2229, 2232, 2235, 2236, 2225, 2228, 2226, 2227, 2230, 2231, 2233, 2234, 2238, 2243, 2246, 2249, 2250, 2239, 2242, 2240, 2241, 2244, 2245, 2247, 2248, 2252, 2257, 2260, 2263, 2264, 2253, 2256, 2254, 2255, 2258, 2259, 2261, 2262, 2266, 2271, 2274, 2277, 2278, 2267, 2270, 2268, 2269, 2272, 2273, 2275, 2276, 2280, 2285, 2288, 2291, 2292, 2281, 2284, 2282, 2283, 2286, 2287, 2289, 2290, 2294, 2295, 2300, 2303, 2306, 2307, 2296, 2299, 2297, 2298, 2301, 2302, 2304, 2305, 2309, 2311, 2312, 2315, 2316, 2317, 2561, 2318, 2319, 2519, 2557, 2559, 2558, 2523, 2367, 2318, 2319, 2321, 2324, 2320, 2322, 2323, 2325, 2363, 2365, 2364, 2329, 2326, 2345, 2327, 2328, 2329, 50, 33, 2330, 2331, 2332, 36, 2333, 2339, 2341, 2340, 2334, 2338, 2335, 2337, 2336, 50, 33, 36, 2340, 2342, 2343, 2344, 2346, 2359, 2361, 2360, 2347, 2348, 2355, 2357, 2356, 2349, 2350, 2351, 2353, 2352, 50, 33, 2332, 36, 2354, 2358, 2362, 2364, 2325, 2366, 2368, 2504, 2369, 2372, 2370, 2371, 2373, 2490, 2374, 2377, 2375, 2376, 2378, 2476, 2379, 2382, 2380, 2381, 2383, 2462, 2384, 2387, 2385, 2386, 2388, 2448, 2389, 2392, 2390, 2391, 2393, 2434, 2394, 2397, 2395, 2396, 2398, 2425, 2428, 2431, 2432, 2433, 2399, 2418, 2421, 2400, 2414, 2416, 2415, 2401, 2402, 2410, 2412, 2411, 2403, 2404, 2406, 2408, 2407, 2405, 50, 33, 2332, 36, 2409, 2413, 2417, 2419, 2420, 2422, 2423, 2424, 2426, 2427, 2429, 2430, 2435, 2440, 2443, 2446, 2447, 2436, 2439, 2437, 2438, 2441, 2442, 2444, 2445, 2449, 2454, 2457, 2460, 2461, 2450, 2453, 2451, 2452, 2455, 2456, 2458, 2459, 2463, 2468, 2471, 2474, 2475, 2464, 2467, 2465, 2466, 2469, 2470, 2472, 2473, 2477, 2482, 2485, 2488, 2489, 2478, 2481, 2479, 2480, 2483, 2484, 2486, 2487, 2491, 2496, 2499, 2502, 2503, 2492, 2495, 2493, 2494, 2497, 2498, 2500, 2501, 2505, 2506, 2511, 2514, 2517, 2518, 2507, 2510, 2508, 2509, 2512, 2513, 2515, 2516, 2520, 2539, 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2533, 2535, 2534, 2528, 2532, 2529, 2531, 2530, 2534, 2536, 2537, 2538, 2540, 2553, 2555, 2554, 2541, 2542, 2549, 2551, 2550, 2543, 2544, 2545, 2547, 2546, 2526, 2548, 2552, 2556, 2558, 2519, 2560, 2317, 2563, 2564, 2565, 2566, 2567, 2568, 50, 33, 2566, 36, 2567, 2568, 2569, 2570, 2571, 2572, 2573, 2774, 2799, 2779, 2791, 2622, 2776, 2790, 2574, 2576, 2579, 2575, 2577, 2578, 2580, 2618, 2620, 2619, 2584, 2581, 2600, 2582, 2583, 2585, 2586, 2587, 2588, 2594, 2596, 2595, 2589, 2593, 2590, 2592, 2591, 2597, 2598, 2599, 2601, 2614, 2616, 2615, 2602, 2603, 2610, 2612, 2611, 2604, 2605, 2606, 2608, 2607, 2609, 2613, 2617, 2621, 2623, 2759, 2624, 2627, 2625, 2626, 2628, 2745, 2629, 2632, 2630, 2631, 2633, 2731, 2634, 2637, 2635, 2636, 2638, 2717, 2639, 2642, 2640, 2641, 2643, 2703, 2644, 2647, 2645, 2646, 2648, 2689, 2649, 2652, 2650, 2651, 2653, 2680, 2683, 2686, 2687, 2688, 2654, 2673, 2676, 2655, 2669, 2671, 2670, 2656, 2657, 2665, 2667, 2666, 2658, 2659, 2661, 2663, 2662, 2660, 2664, 2668, 2672, 2674, 2675, 2677, 2678, 2679, 2681, 2682, 2684, 2685, 2690, 2695, 2698, 2701, 2702, 2691, 2694, 2692, 2693, 2696, 2697, 2699, 2700, 2704, 2709, 2712, 2715, 2716, 2705, 2708, 2706, 2707, 2710, 2711, 2713, 2714, 2718, 2723, 2726, 2729, 2730, 2719, 2722, 2720, 2721, 2724, 2725, 2727, 2728, 2732, 2737, 2740, 2743, 2744, 2733, 2736, 2734, 2735, 2738, 2739, 2741, 2742, 2746, 2751, 2754, 2757, 2758, 2747, 2750, 2748, 2749, 2752, 2753, 2755, 2756, 2760, 2761, 2766, 2769, 2772, 2773, 2762, 2765, 2763, 2764, 2767, 2768, 2770, 2771, 2775, 2777, 2782, 2778, 2780, 2781, 2783, 2784, 2782, 2786, 2785, 2787, 2788, 2789, 2792, 2793, 2791, 2795, 2794, 2796, 2797, 2798, 2800, 2801, 2802, 3003, 3009, 2851, 3005, 3008, 2803, 2805, 2808, 2804, 2806, 2807, 2809, 2847, 2849, 2848, 2813, 2810, 2829, 2811, 2812, 2814, 2815, 2816, 2817, 2823, 2825, 2824, 2818, 2822, 2819, 2821, 2820, 2826, 2827, 2828, 2830, 2843, 2845, 2844, 2831, 2832, 2839, 2841, 2840, 2833, 2834, 2835, 2837, 2836, 2838, 2842, 2846, 2850, 2852, 2988, 2853, 2856, 2854, 2855, 2857, 2974, 2858, 2861, 2859, 2860, 2862, 2960, 2863, 2866, 2864, 2865, 2867, 2946, 2868, 2871, 2869, 2870, 2872, 2932, 2873, 2876, 2874, 2875, 2877, 2918, 2878, 2881, 2879, 2880, 2882, 2909, 2912, 2915, 2916, 2917, 2883, 2902, 2905, 2884, 2898, 2900, 2899, 2885, 2886, 2894, 2896, 2895, 2887, 2888, 2890, 2892, 2891, 2889, 2893, 2897, 2901, 2903, 2904, 2906, 2907, 2908, 2910, 2911, 2913, 2914, 2919, 2924, 2927, 2930, 2931, 2920, 2923, 2921, 2922, 2925, 2926, 2928, 2929, 2933, 2938, 2941, 2944, 2945, 2934, 2937, 2935, 2936, 2939, 2940, 2942, 2943, 2947, 2952, 2955, 2958, 2959, 2948, 2951, 2949, 2950, 2953, 2954, 2956, 2957, 2961, 2966, 2969, 2972, 2973, 2962, 2965, 2963, 2964, 2967, 2968, 2970, 2971, 2975, 2980, 2983, 2986, 2987, 2976, 2979, 2977, 2978, 2981, 2982, 2984, 2985, 2989, 2990, 2995, 2998, 3001, 3002, 2991, 2994, 2992, 2993, 2996, 2997, 2999, 3000, 3004, 3006, 3007, 3010, 3011, 3009, 3013, 3012, 3014, 3015, 3016, 3018, 3019, 3020, 3521, 3021, 3022, 3428, 3517, 3519, 3518, 3432, 3276, 3021, 3022, 3024, 3027, 3023, 3025, 3026, 3028, 3272, 3274, 3273, 3032, 3029, 3254, 3030, 3031, 3032, 3033, 3034, 3035, 3040, 3036, 3248, 3250, 3249, 3037, 3247, 3038, 3246, 3039, 3040, 3041, 3042, 3200, 3207, 3217, 3041, 3042, 3040, 3044, 3043, 3045, 3046, 3048, 3045, 3046, 3040, 3047, 3049, 3185, 3050, 3053, 3051, 3052, 3054, 3171, 3055, 3058, 3056, 3057, 3059, 3157, 3060, 3063, 3061, 3062, 3064, 3143, 3065, 3068, 3066, 3067, 3069, 3129, 3070, 3073, 3071, 3072, 3074, 3115, 3075, 3078, 3076, 3077, 3079, 3106, 3109, 3112, 3113, 3114, 3080, 3099, 3102, 3081, 3095, 3097, 3096, 3082, 3083, 3091, 3093, 3092, 3084, 3085, 3087, 3089, 3088, 3086, 3090, 3094, 3098, 3100, 3101, 3103, 3104, 3105, 3107, 3108, 3110, 3111, 3116, 3121, 3124, 3127, 3128, 3117, 3120, 3118, 3119, 3122, 3123, 3125, 3126, 3130, 3135, 3138, 3141, 3142, 3131, 3134, 3132, 3133, 3136, 3137, 3139, 3140, 3144, 3149, 3152, 3155, 3156, 3145, 3148, 3146, 3147, 3150, 3151, 3153, 3154, 3158, 3163, 3166, 3169, 3170, 3159, 3162, 3160, 3161, 3164, 3165, 3167, 3168, 3172, 3177, 3180, 3183, 3184, 3173, 3176, 3174, 3175, 3178, 3179, 3181, 3182, 3186, 3187, 3192, 3195, 3198, 3199, 3188, 3191, 3189, 3190, 3193, 3194, 3196, 3197, 3201, 3040, 3202, 3203, 3204, 3205, 3203, 3204, 3206, 3040, 3208, 3209, 3040, 3202, 3210, 3211, 3212, 3213, 3214, 3215, 3213, 3214, 3040, 3215, 3216, 3040, 3218, 3219, 3220, 3221, 3222, 3223, 3224, 3225, 3226, 3227, 3228, 3231, 3235, 3240, 3243, 3229, 3227, 3228, 3040, 3229, 3230, 3040, 3232, 3233, 3234, 3040, 3236, 3238, 3237, 3040, 3239, 3040, 3241, 3242, 3040, 3244, 3040, 3245, 3040, 3249, 3251, 3252, 3253, 3255, 3268, 3270, 3269, 3256, 3257, 3264, 3266, 3265, 3258, 3259, 3260, 3262, 3261, 3035, 3040, 3263, 3267, 3271, 3273, 3028, 3275, 3277, 3413, 3278, 3281, 3279, 3280, 3282, 3399, 3283, 3286, 3284, 3285, 3287, 3385, 3288, 3291, 3289, 3290, 3292, 3371, 3293, 3296, 3294, 3295, 3297, 3357, 3298, 3301, 3299, 3300, 3302, 3343, 3303, 3306, 3304, 3305, 3307, 3334, 3337, 3340, 3341, 3342, 3308, 3327, 3330, 3309, 3323, 3325, 3324, 3310, 3311, 3319, 3321, 3320, 3312, 3313, 3315, 3317, 3316, 3314, 3035, 3040, 3318, 3322, 3326, 3328, 3329, 3331, 3332, 3333, 3335, 3336, 3338, 3339, 3344, 3349, 3352, 3355, 3356, 3345, 3348, 3346, 3347, 3350, 3351, 3353, 3354, 3358, 3363, 3366, 3369, 3370, 3359, 3362, 3360, 3361, 3364, 3365, 3367, 3368, 3372, 3377, 3380, 3383, 3384, 3373, 3376, 3374, 3375, 3378, 3379, 3381, 3382, 3386, 3391, 3394, 3397, 3398, 3387, 3390, 3388, 3389, 3392, 3393, 3395, 3396, 3400, 3405, 3408, 3411, 3412, 3401, 3404, 3402, 3403, 3406, 3407, 3409, 3410, 3414, 3415, 3420, 3423, 3426, 3427, 3416, 3419, 3417, 3418, 3421, 3422, 3424, 3425, 3429, 3499, 3430, 3431, 3432, 3433, 3434, 3435, 3448, 3436, 3442, 3444, 3443, 3437, 3441, 3438, 3440, 3439, 3443, 3445, 3446, 3447, 3449, 3450, 3456, 3462, 3471, 3449, 3450, 3448, 3452, 3451, 3453, 3454, 3453, 3454, 3448, 3455, 3457, 3448, 3458, 3459, 3460, 3459, 3460, 3461, 3463, 3464, 3448, 3458, 3465, 3466, 3467, 3468, 3469, 3468, 3469, 3448, 3470, 3472, 3473, 3474, 3475, 3476, 3477, 3478, 3479, 3480, 3481, 3482, 3484, 3488, 3493, 3496, 3481, 3482, 3448, 3483, 3485, 3486, 3487, 3448, 3489, 3491, 3490, 3448, 3492, 3448, 3494, 3495, 3448, 3497, 3448, 3498, 3448, 3500, 3513, 3515, 3514, 3501, 3502, 3509, 3511, 3510, 3503, 3504, 3505, 3507, 3506, 3435, 3448, 3508, 3512, 3516, 3518, 3428, 3520, 3020, 3523, 3524, 3525, 3526, 3707, 3708, 3526, 3527, 3528, 3685, 3528, 3527, 3529, 3530, 3531, 3533, 3530, 3531, 3527, 3532, 3534, 3670, 3535, 3538, 3536, 3537, 3539, 3656, 3540, 3543, 3541, 3542, 3544, 3642, 3545, 3548, 3546, 3547, 3549, 3628, 3550, 3553, 3551, 3552, 3554, 3614, 3555, 3558, 3556, 3557, 3559, 3600, 3560, 3563, 3561, 3562, 3564, 3591, 3594, 3597, 3598, 3599, 3565, 3584, 3587, 3566, 3580, 3582, 3581, 3567, 3568, 3576, 3578, 3577, 3569, 3570, 3572, 3574, 3573, 3571, 3575, 3579, 3583, 3585, 3586, 3588, 3589, 3590, 3592, 3593, 3595, 3596, 3601, 3606, 3609, 3612, 3613, 3602, 3605, 3603, 3604, 3607, 3608, 3610, 3611, 3615, 3620, 3623, 3626, 3627, 3616, 3619, 3617, 3618, 3621, 3622, 3624, 3625, 3629, 3634, 3637, 3640, 3641, 3630, 3633, 3631, 3632, 3635, 3636, 3638, 3639, 3643, 3648, 3651, 3654, 3655, 3644, 3647, 3645, 3646, 3649, 3650, 3652, 3653, 3657, 3662, 3665, 3668, 3669, 3658, 3661, 3659, 3660, 3663, 3664, 3666, 3667, 3671, 3672, 3677, 3680, 3683, 3684, 3673, 3676, 3674, 3675, 3678, 3679, 3681, 3682, 3686, 3687, 3688, 3689, 3690, 3691, 3692, 3693, 3694, 3695, 3696, 3697, 3698, 3699, 3701, 3704, 3699, 3700, 3527, 3702, 3703, 3701, 3704, 3705, 3706, 3707, 3708, 3709 }; static const short _sip_uri_parser_trans_actions[] = { 0, 0, 0, 1, 29, 0, 101, 101, 101, 32, 32, 32, 101, 101, 101, 0, 0, 101, 101, 101, 0, 41, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 5, 5, 50, 47, 1, 1, 1, 1, 0, 0, 0, 0, 0, 11, 68, 65, 13, 13, 13, 13, 13, 0, 0, 71, 15, 143, 131, 0, 17, 17, 15, 0, 0, 83, 187, 147, 0, 0, 0, 0, 0, 0, 0, 86, 0, 0, 135, 74, 208, 203, 17, 17, 0, 0, 0, 0, 0, 1, 0, 0, 139, 77, 218, 213, 0, 0, 15, 80, 80, 1, 0, 0, 183, 308, 303, 0, 0, 21, 98, 95, 0, 0, 0, 0, 0, 0, 0, 0, 15, 80, 80, 80, 80, 80, 80, 1, 0, 0, 179, 298, 293, 0, 0, 19, 92, 89, 0, 0, 0, 167, 268, 263, 0, 0, 0, 159, 248, 243, 0, 163, 258, 253, 0, 0, 155, 238, 233, 0, 171, 278, 273, 0, 175, 288, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 56, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 62, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 47, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, 13, 13, 13, 0, 0, 0, 71, 15, 131, 0, 0, 15, 0, 17, 17, 15, 0, 0, 0, 17, 17, 15, 0, 0, 83, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 74, 203, 17, 17, 0, 0, 0, 0, 0, 139, 77, 213, 0, 0, 15, 80, 80, 0, 0, 183, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 80, 80, 80, 80, 80, 80, 0, 0, 179, 293, 0, 0, 0, 0, 167, 263, 0, 0, 0, 159, 243, 0, 163, 253, 0, 0, 155, 233, 0, 171, 273, 0, 175, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 53, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 107, 107, 107, 0, 3, 44, 13, 13, 0, 71, 15, 17, 17, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 80, 80, 80, 0, 0, 151, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 0, 41, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 115, 0, 0, 5, 5, 47, 1, 1, 1, 1, 0, 0, 0, 0, 0, 127, 11, 65, 13, 13, 13, 13, 13, 223, 0, 0, 71, 15, 131, 0, 17, 17, 15, 313, 0, 0, 83, 147, 0, 0, 0, 0, 0, 191, 0, 0, 0, 0, 318, 135, 74, 203, 17, 17, 0, 0, 0, 0, 0, 1, 0, 0, 324, 139, 77, 213, 0, 0, 15, 80, 80, 1, 378, 0, 0, 183, 303, 0, 199, 0, 21, 95, 0, 0, 0, 0, 0, 0, 0, 0, 15, 80, 80, 80, 80, 80, 80, 1, 372, 0, 0, 179, 293, 0, 195, 0, 19, 89, 0, 0, 0, 354, 167, 263, 0, 0, 0, 342, 159, 243, 0, 348, 163, 253, 0, 0, 336, 155, 233, 0, 360, 171, 273, 0, 366, 175, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 119, 7, 7, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, 9, 9, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 47, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, 13, 13, 13, 0, 0, 0, 71, 15, 131, 0, 0, 15, 0, 17, 17, 15, 0, 0, 0, 17, 17, 15, 0, 0, 83, 147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 74, 203, 17, 17, 0, 0, 0, 0, 0, 139, 77, 213, 0, 0, 15, 80, 80, 0, 0, 183, 303, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 80, 80, 80, 80, 80, 80, 0, 0, 179, 293, 0, 0, 0, 0, 167, 263, 0, 0, 0, 159, 243, 0, 163, 253, 0, 0, 155, 233, 0, 171, 273, 0, 175, 283, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 53, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 107, 107, 107, 111, 0, 3, 13, 13, 0, 71, 15, 17, 17, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 80, 80, 80, 0, 0, 330, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41, 25, 25, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 50, 50, 0, 0, 5, 50, 1, 1, 1, 1, 0, 0, 0, 0, 0, 68, 68, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 56, 7, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 9, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 107, 107, 107, 44, 44, 0, 44, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 5, 50, 1, 1, 1, 1, 0, 0, 0, 0, 0, 68, 13, 13, 13, 13, 13, 0, 0, 71, 15, 0, 17, 17, 17, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 74, 17, 17, 0, 0, 0, 0, 0, 0, 0, 139, 77, 0, 0, 15, 80, 80, 1, 0, 0, 183, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 15, 80, 80, 80, 80, 80, 80, 1, 0, 0, 179, 0, 0, 19, 0, 0, 0, 167, 0, 0, 0, 159, 0, 163, 0, 0, 155, 0, 171, 0, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 50, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13, 13, 13, 0, 0, 71, 15, 0, 17, 17, 0, 0, 83, 0, 0, 135, 74, 17, 17, 0, 0, 0, 0, 0, 139, 77, 0, 0, 15, 80, 80, 0, 0, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 80, 80, 80, 80, 80, 80, 0, 0, 179, 0, 0, 0, 0, 167, 0, 0, 0, 159, 0, 163, 0, 0, 155, 0, 171, 0, 175, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 56, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 107, 107, 107, 0, 44, 13, 13, 0, 71, 15, 17, 17, 17, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 80, 80, 80, 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; static const int sip_uri_parser_start = 1; static const int sip_uri_parser_first_final = 3710; static const int sip_uri_parser_error = 0; static const int sip_uri_parser_en_main = 1; #line 189 "sip_uri_parser.rl" /** reset **/ void sip_uri_parser_reset(sip_uri_parser *parser) { TRACE(); parser->mark = 0; parser->uri_start = 0; parser->uri_param_key_start = 0; parser->uri_param_value_start = 0; parser->uri_scheme = 0; parser->uri_display_name_quoted = 0; } /** exec **/ int sip_uri_parser_execute(sip_uri_parser *parser, const char *buffer, size_t len, VALUE parsed, int allow_name_addr) { TRACE(); int cs = 0; const char *p, *pe; p = buffer; pe = buffer+len; parser->parsed = parsed; sip_uri_parser_reset(parser); #line 39341 "sip_uri_parser.c" { cs = sip_uri_parser_start; } #line 220 "sip_uri_parser.rl" #line 39348 "sip_uri_parser.c" { int _klen; unsigned int _trans; short _widec; const char *_acts; unsigned int _nacts; const short *_keys; if ( p == pe ) goto _test_eof; if ( cs == 0 ) goto _out; _resume: _widec = (*p); _klen = _sip_uri_parser_cond_lengths[cs]; _keys = _sip_uri_parser_cond_keys + (_sip_uri_parser_cond_offsets[cs]*2); if ( _klen > 0 ) { const short *_lower = _keys; const short *_mid; const short *_upper = _keys + (_klen<<1) - 2; while (1) { if ( _upper < _lower ) break; _mid = _lower + (((_upper-_lower) >> 1) & ~1); if ( _widec < _mid[0] ) _upper = _mid - 2; else if ( _widec > _mid[1] ) _lower = _mid + 2; else { switch ( _sip_uri_parser_cond_spaces[_sip_uri_parser_cond_offsets[cs] + ((_mid - _keys)>>1)] ) { case 0: { _widec = (short)(128 + ((*p) - -128)); if ( #line 159 "sip_uri_parser.rl" allow_name_addr == 0 ) _widec += 256; break; } case 1: { _widec = (short)(640 + ((*p) - -128)); if ( #line 164 "sip_uri_parser.rl" allow_name_addr == 1 ) _widec += 256; break; } case 2: { _widec = (short)(1152 + ((*p) - -128)); if ( #line 159 "sip_uri_parser.rl" allow_name_addr == 0 ) _widec += 256; if ( #line 164 "sip_uri_parser.rl" allow_name_addr == 1 ) _widec += 512; break; } } break; } } } _keys = _sip_uri_parser_trans_keys + _sip_uri_parser_key_offsets[cs]; _trans = _sip_uri_parser_index_offsets[cs]; _klen = _sip_uri_parser_single_lengths[cs]; if ( _klen > 0 ) { const short *_lower = _keys; const short *_mid; const short *_upper = _keys + _klen - 1; while (1) { if ( _upper < _lower ) break; _mid = _lower + ((_upper-_lower) >> 1); if ( _widec < *_mid ) _upper = _mid - 1; else if ( _widec > *_mid ) _lower = _mid + 1; else { _trans += (unsigned int)(_mid - _keys); goto _match; } } _keys += _klen; _trans += _klen; } _klen = _sip_uri_parser_range_lengths[cs]; if ( _klen > 0 ) { const short *_lower = _keys; const short *_mid; const short *_upper = _keys + (_klen<<1) - 2; while (1) { if ( _upper < _lower ) break; _mid = _lower + (((_upper-_lower) >> 1) & ~1); if ( _widec < _mid[0] ) _upper = _mid - 2; else if ( _widec > _mid[1] ) _lower = _mid + 2; else { _trans += (unsigned int)((_mid - _keys)>>1); goto _match; } } _trans += _klen; } _match: _trans = _sip_uri_parser_indicies[_trans]; cs = _sip_uri_parser_trans_targs[_trans]; if ( _sip_uri_parser_trans_actions[_trans] == 0 ) goto _again; _acts = _sip_uri_parser_actions + _sip_uri_parser_trans_actions[_trans]; _nacts = (unsigned int) *_acts++; while ( _nacts-- > 0 ) { switch ( *_acts++ ) { case 0: #line 21 "sip_uri_parser.rl" { MARK(mark, p); } break; case 1: #line 23 "sip_uri_parser.rl" { parser->uri_scheme = uri_scheme_sip; } break; case 2: #line 27 "sip_uri_parser.rl" { parser->uri_scheme = uri_scheme_sips; } break; case 3: #line 31 "sip_uri_parser.rl" { parser->uri_scheme = uri_scheme_tel; } break; case 4: #line 35 "sip_uri_parser.rl" { parser->uri_scheme = uri_scheme_unknown; } break; case 5: #line 39 "sip_uri_parser.rl" { parser->uri.scheme(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, p), parser->uri_scheme); } break; case 6: #line 43 "sip_uri_parser.rl" { parser->uri.user(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, p), parser->uri_scheme); } break; case 7: #line 47 "sip_uri_parser.rl" { parser->uri.host(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, p), host_type_domain); } break; case 8: #line 51 "sip_uri_parser.rl" { parser->uri.host(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, p), host_type_ipv4); } break; case 9: #line 55 "sip_uri_parser.rl" { parser->uri.host(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, p), host_type_ipv6); } break; case 10: #line 59 "sip_uri_parser.rl" { parser->uri.port(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, p), parser->uri_scheme); } break; case 11: #line 64 "sip_uri_parser.rl" { MARK(uri_param_key_start, p); } break; case 12: #line 68 "sip_uri_parser.rl" { parser->uri_param_key_len = LEN(uri_param_key_start, p); /* If current param has no value don't take previous param's value. */ parser->uri_param_value_len = 0; } break; case 13: #line 74 "sip_uri_parser.rl" { MARK(uri_param_value_start, p); } break; case 14: #line 78 "sip_uri_parser.rl" { parser->uri_param_value_len = LEN(uri_param_value_start, p); } break; case 15: #line 82 "sip_uri_parser.rl" { parser->uri.param(parser->parsed, parser->parsed, PTR_TO(uri_param_key_start), parser->uri_param_key_len, PTR_TO(uri_param_value_start), parser->uri_param_value_len); } break; case 16: #line 87 "sip_uri_parser.rl" { parser->uri.headers(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, p), parser->uri_scheme); } break; case 17: #line 91 "sip_uri_parser.rl" { parser->uri.known_param(parser->parsed, parser->parsed, uri_tel_phone_context, PTR_TO(mark), LEN(mark, p), 0); } break; case 18: #line 95 "sip_uri_parser.rl" { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_udp); } break; case 19: #line 99 "sip_uri_parser.rl" { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_tcp); } break; case 20: #line 103 "sip_uri_parser.rl" { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_tls); } break; case 21: #line 107 "sip_uri_parser.rl" { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_sctp); } break; case 22: #line 111 "sip_uri_parser.rl" { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_ws); } break; case 23: #line 115 "sip_uri_parser.rl" { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_wss); } break; case 24: #line 119 "sip_uri_parser.rl" { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_transport, PTR_TO(mark), LEN(mark, p), transport_unknown); } break; case 25: #line 123 "sip_uri_parser.rl" { parser->uri.has_param(parser->parsed, parser->parsed, uri_param_lr); } break; case 26: #line 127 "sip_uri_parser.rl" { parser->uri.has_param(parser->parsed, parser->parsed, uri_param_ob); } break; case 27: #line 131 "sip_uri_parser.rl" { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_ovid, PTR_TO(mark), LEN(mark, p), 0); } break; case 28: #line 135 "sip_uri_parser.rl" { if (!parser->uri_display_name_quoted) parser->uri.display_name(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, p), parser->uri_scheme); else parser->uri.display_name(parser->parsed, parser->parsed, PTR_TO(mark)+1, LEN(mark, p)-2, parser->uri_scheme); } break; case 29: #line 143 "sip_uri_parser.rl" { parser->uri_display_name_quoted=1; } break; case 30: #line 147 "sip_uri_parser.rl" { MARK(uri_start, p); } break; case 31: #line 151 "sip_uri_parser.rl" { parser->uri.full(parser->parsed, parser->parsed, PTR_TO(uri_start), LEN(uri_start, p), parser->uri_scheme); } break; case 32: #line 156 "sip_uri_parser.rl" { {p++; goto _out; } } break; #line 39678 "sip_uri_parser.c" } } _again: if ( cs == 0 ) goto _out; if ( ++p != pe ) goto _resume; _test_eof: {} _out: {} } #line 221 "sip_uri_parser.rl" sip_uri_parser_reset(parser); /* Error? */ if(len != p-buffer) return 1; return 0; } ================================================ FILE: ext/sip_parser/sip_uri_parser.rl ================================================ #include "sip_parser.h" #include "ext_help.h" #include #include #include #include #include #define MARK(M, FPC) (parser->M = (FPC) - buffer) #define LEN(AT, FPC) (FPC - buffer - parser->AT) #define PTR_TO(F) (buffer + parser->F) /** machine **/ %%{ machine sip_uri_parser; action mark { MARK(mark, fpc); } action uri_is_sip { parser->uri_scheme = uri_scheme_sip; } action uri_is_sips { parser->uri_scheme = uri_scheme_sips; } action uri_is_tel { parser->uri_scheme = uri_scheme_tel; } action uri_is_unknown { parser->uri_scheme = uri_scheme_unknown; } action uri_scheme { parser->uri.scheme(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, fpc), parser->uri_scheme); } action uri_user { parser->uri.user(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, fpc), parser->uri_scheme); } action uri_host_domain { parser->uri.host(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, fpc), host_type_domain); } action uri_host_ipv4 { parser->uri.host(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, fpc), host_type_ipv4); } action uri_host_ipv6 { parser->uri.host(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, fpc), host_type_ipv6); } action uri_port { parser->uri.port(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, fpc), parser->uri_scheme); } action start_uri_param_key { MARK(uri_param_key_start, fpc); } action uri_param_key_len { parser->uri_param_key_len = LEN(uri_param_key_start, fpc); /* If current param has no value don't take previous param's value. */ parser->uri_param_value_len = 0; } action start_uri_param_value { MARK(uri_param_value_start, fpc); } action uri_param_value_len { parser->uri_param_value_len = LEN(uri_param_value_start, fpc); } action write_uri_param { parser->uri.param(parser->parsed, parser->parsed, PTR_TO(uri_param_key_start), parser->uri_param_key_len, PTR_TO(uri_param_value_start), parser->uri_param_value_len); } action uri_headers { parser->uri.headers(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, fpc), parser->uri_scheme); } action uri_tel_phone_context { parser->uri.known_param(parser->parsed, parser->parsed, uri_tel_phone_context, PTR_TO(mark), LEN(mark, fpc), 0); } action sip_uri_transport_udp { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_transport, PTR_TO(mark), LEN(mark, fpc), transport_udp); } action sip_uri_transport_tcp { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_transport, PTR_TO(mark), LEN(mark, fpc), transport_tcp); } action sip_uri_transport_tls { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_transport, PTR_TO(mark), LEN(mark, fpc), transport_tls); } action sip_uri_transport_sctp { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_transport, PTR_TO(mark), LEN(mark, fpc), transport_sctp); } action sip_uri_transport_ws { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_transport, PTR_TO(mark), LEN(mark, fpc), transport_ws); } action sip_uri_transport_wss { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_transport, PTR_TO(mark), LEN(mark, fpc), transport_wss); } action sip_uri_transport_unknown { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_transport, PTR_TO(mark), LEN(mark, fpc), transport_unknown); } action sip_uri_has_lr { parser->uri.has_param(parser->parsed, parser->parsed, uri_param_lr); } action sip_uri_has_ob { parser->uri.has_param(parser->parsed, parser->parsed, uri_param_ob); } action sip_uri_ovid { parser->uri.known_param(parser->parsed, parser->parsed, uri_param_ovid, PTR_TO(mark), LEN(mark, fpc), 0); } action uri_display_name { if (!parser->uri_display_name_quoted) parser->uri.display_name(parser->parsed, parser->parsed, PTR_TO(mark), LEN(mark, fpc), parser->uri_scheme); else parser->uri.display_name(parser->parsed, parser->parsed, PTR_TO(mark)+1, LEN(mark, fpc)-2, parser->uri_scheme); } # This is for removing double quotes in display name. action uri_display_name_quoted { parser->uri_display_name_quoted=1; } action start_uri { MARK(uri_start, fpc); } action write_uri { parser->uri.full(parser->parsed, parser->parsed, PTR_TO(uri_start), LEN(uri_start, fpc), parser->uri_scheme); } action done { fbreak; } # Condition for when parsing a URI. action parsing_uri { allow_name_addr == 0 } # Condition for when parsing a NameAddr. action parsing_name_addr { allow_name_addr == 1 } include grammar_sip_core "grammar_sip_core.rl"; include grammar_sip_uri "grammar_sip_uri.rl"; include grammar_tel_uri "grammar_tel_uri.rl"; include grammar_absolute_uri "grammar_absolute_uri.rl"; include grammar_name_addr "grammar_name_addr.rl"; header_param_gen_value = token | host | quoted_string; header_param = token ( EQUAL header_param_gen_value )? ; # The given string ends with '\0'. main := ( ( SIP_URI | TEL_URI | absoluteURI ) when parsing_uri | ( ( name_addr | ( addr_spec -- ( "," | "?" | ";" ) ) ) ( SEMI header_param )* ) when parsing_name_addr ) '\0' @done; }%% /** Data **/ %% write data; /** reset **/ void sip_uri_parser_reset(sip_uri_parser *parser) { TRACE(); parser->mark = 0; parser->uri_start = 0; parser->uri_param_key_start = 0; parser->uri_param_value_start = 0; parser->uri_scheme = 0; parser->uri_display_name_quoted = 0; } /** exec **/ int sip_uri_parser_execute(sip_uri_parser *parser, const char *buffer, size_t len, VALUE parsed, int allow_name_addr) { TRACE(); int cs = 0; const char *p, *pe; p = buffer; pe = buffer+len; parser->parsed = parsed; sip_uri_parser_reset(parser); %% write init; %% write exec; sip_uri_parser_reset(parser); /* Error? */ if(len != p-buffer) return 1; return 0; } ================================================ FILE: ext/stud/extconf.rb ================================================ require "mkmf" require "fileutils" require "rbconfig" def log(message) puts "[ext/stud/extconf.rb] #{message}" end def sys(cmd) log "executing system command: #{cmd}" unless ret = xsystem(cmd) raise "[ext/stud/extconf.rb] system command `#{cmd}' failed" end ret end here = File.expand_path(File.dirname(__FILE__)) stud_dir = "#{here}/../../thirdparty/stud/" stud_tarball = "stud.tar.gz" Dir.chdir(stud_dir) do sys("tar -zxf #{stud_tarball}") Dir.chdir("stud") do host_os = RbConfig::CONFIG["host_os"] log "RbConfig::CONFIG['host_os'] returns #{host_os.inspect}" case host_os when /bsd/i log "BSD detected, using `gmake' instead of `make'" sys("gmake") else sys("make") end FileUtils.mv "stud", "../../../bin/oversip_stud" end FileUtils.remove_dir("stud", force = true) end create_makefile("stud") ================================================ FILE: ext/stun/ext_help.h ================================================ #ifndef ext_help_h #define ext_help_h /* Uncomment for enabling TRACE() function. */ /*#define DEBUG*/ #ifdef DEBUG #define TRACE() fprintf(stderr, "TRACE: %s:%d:%s\n", __FILE__, __LINE__, __FUNCTION__) #define LOG(string) fprintf(stderr, "LOG: %s:%d:%s: %s\n", __FILE__, __LINE__, __FUNCTION__, string) #else #define TRACE() #define LOG(string) #endif #endif ================================================ FILE: ext/stun/extconf.rb ================================================ require "mkmf" create_makefile("oversip/stun") ================================================ FILE: ext/stun/stun_ruby.c ================================================ #include #include #include #include "ext_help.h" #define STUN_MESSAGE_MIN_SIZE 20 #define STUN_MAGIC_COOKIE_LEN 4 #define STUN_TRANSACTION_ID_LEN 12 #define STUN_BINDING_SUCCESS_RESPONSE_IPV4_SIZE 32 #define STUN_BINDING_SUCCESS_RESPONSE_IPV6_SIZE 44 static VALUE mOverSIP; static VALUE mStun; /* * Ruby functions. */ /* * RFC 5389. * * 6. STUN Message Structure * * 0 1 2 3 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * |0 0| STUN Message Type | Message Length | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | Magic Cookie | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | | * | Transaction ID (96 bits) | * | | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * */ /* * Expects 3 arguments: * - String containing a STUN Binding Request (MUST not be empty!!). * - String containing the source IP of the request. * - Fxinum containing the source port of the request. * Return value: * - If it's a valid STUN Binding Request, returns a Ruby String representing the * STUN Binding Response. * - If it seems a valid STUN message but not a valid STUN Binding Request, returns _false_. * - Otherwise returns _nil_ (so it could be a SIP message). */ VALUE Stun_parse_request(VALUE self, VALUE rb_stun_request, VALUE rb_source_ip, VALUE rb_source_port) { TRACE(); char *request = NULL; size_t request_len = 0; char *source_ip = NULL; short source_ip_is_ipv6 = 0; uint16_t source_port; char *transaction_id; uint16_t message_length; char *magic_cookie; short is_rfc3489_client = 0; struct in_addr in_addr_ipv4; struct in6_addr in_addr_ipv6; uint16_t xor_port; uint32_t xor_ipv4; unsigned char xor_ipv6[16]; /* The size of our STUN Binding Response is the sum of: * - STUN message header: 20 bytes. * - One attribute (XOR-MAPPED-ADDRESS or MAPPED-ADDRESS). * - Type + Length: 4 bytes. * - XOR-MAPPED-ADDRESS or MAPPED-ADDRESS for IPv4: 4 + 4 = 8 bytes. * - XOR-MAPPED-ADDRESS or MAPPED-ADDRESS for IPv6: 4 + 16 = 20 bytes. * - Size for a response with IPv4: 20 + 4 + 8 = 32 bytes. * - Size for a response with IPv6: 20 + 4 + 20 = 44 bytes. */ char response[STUN_BINDING_SUCCESS_RESPONSE_IPV6_SIZE]; if (TYPE(rb_stun_request) != T_STRING) rb_raise(rb_eTypeError, "First argument must be a String containing the STUN Binding Request"); request = RSTRING_PTR(rb_stun_request); /* First octet of any STUN *request* must be 0. Return false otherwise. */ if (request[0]) { LOG("first octet is not 0, so it's not a STUN request\n"); return Qnil; } /* Any STUN message must contain, at least, 20 bytes. Return false otherwise. */ if ((request_len = RSTRING_LEN(rb_stun_request)) < STUN_MESSAGE_MIN_SIZE) { LOG("ERROR: request length less than 20 bytes, invalid STUN message\n"); return Qfalse; } if (TYPE(rb_source_ip) != T_STRING) rb_raise(rb_eTypeError, "Third argument must be a String containing the source IP"); if (TYPE(rb_source_port) != T_FIXNUM) rb_raise(rb_eTypeError, "Fourth argument must be a Fixnum containing the source port"); /* * RFC 5389 section 6. * * a Binding request has class=0b00 (request) and method=0b000000000001 (Binding) * and is encoded into the first 16 bits as 0x0001. * * So let's check the second byte which must be 0x1. */ if ( request[1] != 0x1 ) { LOG("ERROR: not a valid STUN Binding Request, maybe an STUN Indication (so ignore it)\n"); return Qfalse; } /* * RFC 5389 section 6. * * The magic cookie field MUST contain the fixed value 0x2112A442 in network byte order. * * 0x21 = 33, 0x12 = 18, 0xA4 = -92, 0x42=66. */ if (! (request[4] == 33 && request[5] == 18 && request[6] == -92 && request[7] == 66) ) { LOG("WARN: STUN magic cookie does not match, using backward compatibility with RFC 3489\n"); /* * RFC 5389 section 12.2. * * A STUN server can detect when a given Binding request message was * sent from an RFC 3489 [RFC3489] client by the absence of the correct * value in the magic cookie field. When the server detects an RFC 3489 * client, it SHOULD copy the value seen in the magic cookie field in * the Binding request to the magic cookie field in the Binding response * message, and insert a MAPPED-ADDRESS attribute instead of an * XOR-MAPPED-ADDRESS attribute. * */ is_rfc3489_client = 1; } /* Get the Magic Cookie. */ magic_cookie = ((char *)request)+4; /* Get the Transaction ID. */ transaction_id = ((char *)request)+8; /* * RFC 5389 section 6. * "The message length MUST contain the size, in bytes, of the message * not including the 20-byte STUN header. Since all STUN attributes are * padded to a multiple of 4 bytes, the last 2 bits of this field are * always zero. This provides another way to distinguish STUN packets * from packets of other protocols." * */ message_length = ntohs(*(uint16_t *)(request+2)); /* * Create the STUN Binding Response. */ /* A Binding response has class=0b10 (success response) and method=*0b000000000001, * and is encoded into the first 16 bits as 0x0101. */ response[0] = 1; response[1] = 1; /* Add the received Magic Cookie (for RFC 3489 backward compatibility). */ memcpy(response+4, magic_cookie, STUN_MAGIC_COOKIE_LEN); /* Add the received Transaction Id. */ memcpy(response+8, transaction_id, STUN_TRANSACTION_ID_LEN); /* * Add an attribute XOR-MAPPED-ADDRESS (or MAPPED-ADDRESS if it's a RFC 3489 client). */ /* * STUN Attribute. * * 0 1 2 3 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | Type | Length | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | Value (variable) .... * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * * * XOR-MAPPED-ADDRESS. * * 0 1 2 3 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * |x x x x x x x x| Family | X-Port | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | X-Address (Variable) * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * * * MAPPED-ADDRESS. * * 0 1 2 3 * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * |0 0 0 0 0 0 0 0| Family | Port | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * | | * | Address (32 bits or 128 bits) | * | | * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ * */ source_ip = StringValueCStr(rb_source_ip); /* Check the IP and its type (IPv4 or IPv6). */ switch(inet_pton(AF_INET, source_ip, &in_addr_ipv4)) { /* It's valid IPv4. */ case 1: break; /* Not valid INET family, hummmm. */ case -1: LOG("ERROR: Family AF_INET (IPv4) not supported\n"); return Qfalse; break; /* Let's check with IPv6. */ case 0: switch(inet_pton(AF_INET6, source_ip, &in_addr_ipv6)) { /* It's valid IPv6. */ case 1: source_ip_is_ipv6 = 1; break; /* Not valid INET family, hummmm. */ case -1: LOG("ERROR: Family AF_INET6 (IPv6) not supported\n"); return Qfalse; break; /* The string is neither an IPv4 or IPv6. */ case 0: LOG("ERROR: Unknown Address Family\n"); return Qfalse; break; } } /* Get the port in an integer (two bytes) */ source_port = (uint16_t)(FIX2INT(rb_source_port)); /* It's a RFC 5389 compliant client, so add XOR-MAPPED-ADDRESS. */ if (! is_rfc3489_client) { /* STUN attribute type: 0x0020: XOR-MAPPED-ADDRESS */ response[20] = 0x00; response[21] = 0x20; /* * XOR-MAPPED-ADDRESS fields. */ /* First byte must be 0x00. */ response[24] = 0x00; /* Second byte is the IP Family (0x01:IPv4, 0x02:IPv6). */ if (source_ip_is_ipv6) response[25] = 0x02; else response[25] = 0x01; /* Bytes 3 and 4 are the X-Port. X-Port is computed by taking the mapped port in * host byte order, XOR'ing it with the most significant 16 bits of the magic cookie, * and then the converting the result to network byte order. */ xor_port = htons(source_port ^ *(uint16_t *)(magic_cookie)); memcpy(response+26, &xor_port, 2); /* Next bytes are the IP in network byte order with XOR stuff. */ /* IPv4. */ if (! source_ip_is_ipv6) { /* If the IP address family is IPv4, X-Address is computed by taking the mapped IP * address in host byte order, XOR'ing it with the magic cookie, and converting the * result to network byte order. */ xor_ipv4 = htons((uint32_t)(in_addr_ipv4.s_addr) ^ *(uint32_t *)(magic_cookie)); memcpy(response+28, &xor_ipv4, 4); /* So set the attribute Length to 8. */ response[22] = 0; response[23] = 8; /* So set the STUN Response Message Length to 12 bytes. */ response[2] = 0; response[3] = 12; /* Return the Ruby string containing the response. */ return rb_str_new(response, STUN_BINDING_SUCCESS_RESPONSE_IPV4_SIZE); } /* IPv6. */ else { /* If the IP address family is IPv6, X-Address is computed by taking the * mapped IP address in host byte order, XOR'ing it with the concatenation * of the magic cookie and the 96-bit transaction ID, and converting the result * to network byte order. */ /* NOTE: struct in_addr.s6_addr is an array of 16 char in network byte order (big-endian). */ /* TODO: So do I need to convert in_addr_ipv6.s6_addr to host byte order and later the * whole result to network byte order? */ int i; for(i=0; i<16; i++) xor_ipv6[i] = in_addr_ipv6.s6_addr[i] ^ magic_cookie[i]; memcpy(response+28, xor_ipv6, 16); /* So set the attribute Length to 20. */ response[22] = 0; response[23] = 20; /* So set the STUN Response Message Length to 24 bytes. */ response[2] = 0; response[3] = 24; /* Return the Ruby string containing the response. */ return rb_str_new(response, STUN_BINDING_SUCCESS_RESPONSE_IPV6_SIZE); } } /* It's a RFC 3489 compliant client, so add MAPPED-ADDRESS. */ else { /* STUN attribute type: 0x0001: MAPPED-ADDRESS */ response[20] = 0x00; response[21] = 0x01; /* * MAPPED-ADDRESS fields. */ /* First byte must be 0x00. */ response[24] = 0x00; /* Second byte is the IP Family (0x01:IPv4, 0x02:IPv6). */ if (source_ip_is_ipv6) response[25] = 0x02; else response[25] = 0x01; /* Bytes 3 and 4 are the Port in network byte order. */ source_port = htons(source_port); memcpy(response+26, &source_port, 2); /* Next bytes are the IP in network byte order. */ /* IPv4. */ if (! source_ip_is_ipv6) { memcpy(response+28, &in_addr_ipv4.s_addr, 4); /* So set the attribute Length to 8. */ response[22] = 0; response[23] = 8; /* So set the STUN Response Message Length to 12 bytes. */ response[2] = 0; response[3] = 12; /* Return the Ruby string containing the response. */ return rb_str_new(response, STUN_BINDING_SUCCESS_RESPONSE_IPV4_SIZE); } /* IPv6. */ else { memcpy(response+28, &in_addr_ipv6.s6_addr, 16); /* So set the attribute Length to 20. */ response[22] = 0; response[23] = 20; /* So set the STUN Response Message Length to 24 bytes. */ response[2] = 0; response[3] = 24; /* Return the Ruby string containing the response. */ return rb_str_new(response, STUN_BINDING_SUCCESS_RESPONSE_IPV6_SIZE); } } } void Init_stun() { TRACE(); mOverSIP = rb_define_module("OverSIP"); mStun = rb_define_module_under(mOverSIP, "Stun"); rb_define_module_function(mStun, "parse_request", Stun_parse_request, 3); } ================================================ FILE: ext/utils/compile_ragel_files.sh ================================================ #!/bin/bash which ragel >/dev/null if [ $? -ne 0 ] ; then echo "ERROR: ragel binary not found, cannot compile the Ragel grammar." >&2 exit 1 else ragel -v echo fi set -e RAGEL_FILE=ip_utils echo "DEBUG: compiling Ragel grammar $RAGEL_FILE.rl ..." ragel -G2 -C $RAGEL_FILE.rl echo echo "DEBUG: $RAGEL_FILE.c generated" echo RAGEL_FILE=outbound_utils echo "DEBUG: compiling Ragel grammar $RAGEL_FILE.rl ..." ragel -G2 -C $RAGEL_FILE.rl echo echo "DEBUG: $RAGEL_FILE.c generated" echo RAGEL_FILE=haproxy_protocol echo "DEBUG: compiling Ragel grammar $RAGEL_FILE.rl ..." ragel -G2 -C $RAGEL_FILE.rl echo echo "DEBUG: $RAGEL_FILE.c generated" echo ================================================ FILE: ext/utils/ext_help.h ================================================ #ifndef ext_help_h #define ext_help_h /* Uncomment for enabling TRACE() function. */ /*#define DEBUG*/ #ifdef DEBUG #define TRACE() fprintf(stderr, "TRACE: %s:%d:%s\n", __FILE__, __LINE__, __FUNCTION__) #else #define TRACE() #endif #endif ================================================ FILE: ext/utils/extconf.rb ================================================ require "mkmf" create_makefile("oversip/utils") ================================================ FILE: ext/utils/grammar_ip.rl ================================================ %%{ machine grammar_ip; DIGIT = "0".."9"; HEXDIG = DIGIT | "A"i | "B"i | "C"i | "D"i | "E"i | "F"i; dec_octet = DIGIT | ( 0x31..0x39 DIGIT ) | ( "1" DIGIT{2} ) | ( "2" 0x30..0x34 DIGIT ) | ( "25" 0x30..0x35 ); IPv4address = dec_octet "." dec_octet "." dec_octet "." dec_octet; h16 = HEXDIG{1,4}; ls32 = ( h16 ":" h16 ) | IPv4address; IPv6address = ( ( h16 ":" ){6} ls32 ) | ( "::" ( h16 ":" ){5} ls32 ) | ( h16? "::" ( h16 ":" ){4} ls32 ) | ( ( ( h16 ":" )? h16 )? "::" ( h16 ":" ){3} ls32 ) | ( ( ( h16 ":" ){,2} h16 )? "::" ( h16 ":" ){2} ls32 ) | ( ( ( h16 ":" ){,3} h16 )? "::" h16 ":" ls32 ) | ( ( ( h16 ":" ){,4} h16 )? "::" ls32 ) | ( ( ( h16 ":" ){,5} h16 )? "::" h16 ) | ( ( ( h16 ":" ){,6} h16 )? "::" ); port = ( DIGIT{1,4} | "1".."5" DIGIT{4} | "6" "0".."4" DIGIT{3} | "6" "5" "0".."4" DIGIT{2} | "6" "5" "5" "0".."2" DIGIT | "6" "5" "5" "3" "0".."5" ) - ( "0" | "00" | "000" | "0000" ); }%% ================================================ FILE: ext/utils/haproxy_protocol.c ================================================ #line 1 "haproxy_protocol.rl" #include #include #include "haproxy_protocol.h" /** machine **/ #line 47 "haproxy_protocol.rl" /** Data **/ #line 16 "haproxy_protocol.c" static const int utils_haproxy_protocol_parser_start = 1; static const int utils_haproxy_protocol_parser_first_final = 375; static const int utils_haproxy_protocol_parser_error = 0; static const int utils_haproxy_protocol_parser_en_main = 1; #line 51 "haproxy_protocol.rl" /** exec **/ /* * Expects a string like "PROXY TCP4 192.168.0.1 192.168.0.11 56324 443\r\n". */ struct_haproxy_protocol struct_haproxy_protocol_parser_execute(const char *str, size_t len) { int cs = 0; const char *p, *pe; size_t mark; int finished = 0; struct_haproxy_protocol haproxy_protocol; p = str; pe = str+len; haproxy_protocol.valid = 0; haproxy_protocol.total_len = 0; haproxy_protocol.ip_s = 0; haproxy_protocol.ip_len = 0; haproxy_protocol.port_s = 0; haproxy_protocol.port_len = 0; #line 50 "haproxy_protocol.c" { cs = utils_haproxy_protocol_parser_start; } #line 76 "haproxy_protocol.rl" #line 57 "haproxy_protocol.c" { if ( p == pe ) goto _test_eof; switch ( cs ) { case 1: if ( (*p) == 80 ) goto st2; goto st0; st0: cs = 0; goto _out; st2: if ( ++p == pe ) goto _test_eof2; case 2: if ( (*p) == 82 ) goto st3; goto st0; st3: if ( ++p == pe ) goto _test_eof3; case 3: if ( (*p) == 79 ) goto st4; goto st0; st4: if ( ++p == pe ) goto _test_eof4; case 4: if ( (*p) == 88 ) goto st5; goto st0; st5: if ( ++p == pe ) goto _test_eof5; case 5: if ( (*p) == 89 ) goto st6; goto st0; st6: if ( ++p == pe ) goto _test_eof6; case 6: if ( (*p) == 32 ) goto st7; goto st0; st7: if ( ++p == pe ) goto _test_eof7; case 7: if ( (*p) == 84 ) goto st8; goto st0; st8: if ( ++p == pe ) goto _test_eof8; case 8: if ( (*p) == 67 ) goto st9; goto st0; st9: if ( ++p == pe ) goto _test_eof9; case 9: if ( (*p) == 80 ) goto st10; goto st0; st10: if ( ++p == pe ) goto _test_eof10; case 10: switch( (*p) ) { case 52: goto st11; case 54: goto st11; } goto st0; st11: if ( ++p == pe ) goto _test_eof11; case 11: if ( (*p) == 32 ) goto st12; goto st0; st12: if ( ++p == pe ) goto _test_eof12; case 12: switch( (*p) ) { case 48: goto tr12; case 49: goto tr13; case 50: goto tr14; case 58: goto tr16; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto tr15; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr17; } else goto tr17; goto st0; tr12: #line 19 "haproxy_protocol.rl" { haproxy_protocol.ip_s = (size_t)p; } goto st13; st13: if ( ++p == pe ) goto _test_eof13; case 13: #line 171 "haproxy_protocol.c" switch( (*p) ) { case 46: goto st14; case 58: goto st221; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st218; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st218; } else goto st218; goto st0; st14: if ( ++p == pe ) goto _test_eof14; case 14: switch( (*p) ) { case 48: goto st15; case 49: goto st214; case 50: goto st216; } if ( 51 <= (*p) && (*p) <= 57 ) goto st215; goto st0; st15: if ( ++p == pe ) goto _test_eof15; case 15: if ( (*p) == 46 ) goto st16; goto st0; st16: if ( ++p == pe ) goto _test_eof16; case 16: switch( (*p) ) { case 48: goto st17; case 49: goto st210; case 50: goto st212; } if ( 51 <= (*p) && (*p) <= 57 ) goto st211; goto st0; st17: if ( ++p == pe ) goto _test_eof17; case 17: if ( (*p) == 46 ) goto st18; goto st0; st18: if ( ++p == pe ) goto _test_eof18; case 18: switch( (*p) ) { case 48: goto st19; case 49: goto st206; case 50: goto st208; } if ( 51 <= (*p) && (*p) <= 57 ) goto st207; goto st0; st19: if ( ++p == pe ) goto _test_eof19; case 19: if ( (*p) == 32 ) goto tr35; goto st0; tr35: #line 11 "haproxy_protocol.rl" { haproxy_protocol.ip_type = haproxy_protocol_ip_type_ipv4; } #line 23 "haproxy_protocol.rl" { haproxy_protocol.ip_len = (size_t)p - haproxy_protocol.ip_s; } goto st20; tr281: #line 15 "haproxy_protocol.rl" { haproxy_protocol.ip_type = haproxy_protocol_ip_type_ipv6; } #line 23 "haproxy_protocol.rl" { haproxy_protocol.ip_len = (size_t)p - haproxy_protocol.ip_s; } goto st20; st20: if ( ++p == pe ) goto _test_eof20; case 20: #line 266 "haproxy_protocol.c" switch( (*p) ) { case 48: goto st21; case 49: goto st183; case 50: goto st186; case 58: goto st190; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st189; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st205; } else goto st205; goto st0; st21: if ( ++p == pe ) goto _test_eof21; case 21: switch( (*p) ) { case 46: goto st22; case 58: goto st70; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st67; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st67; } else goto st67; goto st0; st22: if ( ++p == pe ) goto _test_eof22; case 22: switch( (*p) ) { case 48: goto st23; case 49: goto st63; case 50: goto st65; } if ( 51 <= (*p) && (*p) <= 57 ) goto st64; goto st0; st23: if ( ++p == pe ) goto _test_eof23; case 23: if ( (*p) == 46 ) goto st24; goto st0; st24: if ( ++p == pe ) goto _test_eof24; case 24: switch( (*p) ) { case 48: goto st25; case 49: goto st59; case 50: goto st61; } if ( 51 <= (*p) && (*p) <= 57 ) goto st60; goto st0; st25: if ( ++p == pe ) goto _test_eof25; case 25: if ( (*p) == 46 ) goto st26; goto st0; st26: if ( ++p == pe ) goto _test_eof26; case 26: switch( (*p) ) { case 48: goto st27; case 49: goto st55; case 50: goto st57; } if ( 51 <= (*p) && (*p) <= 57 ) goto st56; goto st0; st27: if ( ++p == pe ) goto _test_eof27; case 27: if ( (*p) == 32 ) goto st28; goto st0; st28: if ( ++p == pe ) goto _test_eof28; case 28: switch( (*p) ) { case 48: goto tr60; case 54: goto tr62; } if ( (*p) > 53 ) { if ( 55 <= (*p) && (*p) <= 57 ) goto tr63; } else if ( (*p) >= 49 ) goto tr61; goto st0; tr60: #line 27 "haproxy_protocol.rl" { haproxy_protocol.port_s = (size_t)p; } goto st29; st29: if ( ++p == pe ) goto _test_eof29; case 29: #line 380 "haproxy_protocol.c" if ( (*p) == 48 ) goto st30; if ( 49 <= (*p) && (*p) <= 57 ) goto tr65; goto st0; st30: if ( ++p == pe ) goto _test_eof30; case 30: if ( (*p) == 48 ) goto st31; if ( 49 <= (*p) && (*p) <= 57 ) goto tr67; goto st0; st31: if ( ++p == pe ) goto _test_eof31; case 31: if ( 49 <= (*p) && (*p) <= 57 ) goto tr68; goto st0; tr68: #line 31 "haproxy_protocol.rl" { haproxy_protocol.port_len = (size_t)p - haproxy_protocol.port_s + 1; } goto st32; st32: if ( ++p == pe ) goto _test_eof32; case 32: #line 412 "haproxy_protocol.c" if ( (*p) == 32 ) goto st33; goto st0; st33: if ( ++p == pe ) goto _test_eof33; case 33: switch( (*p) ) { case 48: goto st34; case 54: goto st43; } if ( (*p) > 53 ) { if ( 55 <= (*p) && (*p) <= 57 ) goto st42; } else if ( (*p) >= 49 ) goto st41; goto st0; st34: if ( ++p == pe ) goto _test_eof34; case 34: if ( (*p) == 48 ) goto st35; if ( 49 <= (*p) && (*p) <= 57 ) goto st40; goto st0; st35: if ( ++p == pe ) goto _test_eof35; case 35: if ( (*p) == 48 ) goto st36; if ( 49 <= (*p) && (*p) <= 57 ) goto st39; goto st0; st36: if ( ++p == pe ) goto _test_eof36; case 36: if ( 49 <= (*p) && (*p) <= 57 ) goto st37; goto st0; st37: if ( ++p == pe ) goto _test_eof37; case 37: if ( (*p) == 13 ) goto st38; goto st0; st38: if ( ++p == pe ) goto _test_eof38; case 38: if ( (*p) == 10 ) goto tr80; goto st0; tr80: #line 35 "haproxy_protocol.rl" { finished = 1; } goto st375; st375: if ( ++p == pe ) goto _test_eof375; case 375: #line 479 "haproxy_protocol.c" goto st0; st39: if ( ++p == pe ) goto _test_eof39; case 39: if ( (*p) == 13 ) goto st38; if ( 48 <= (*p) && (*p) <= 57 ) goto st37; goto st0; st40: if ( ++p == pe ) goto _test_eof40; case 40: if ( (*p) == 13 ) goto st38; if ( 48 <= (*p) && (*p) <= 57 ) goto st39; goto st0; st41: if ( ++p == pe ) goto _test_eof41; case 41: if ( (*p) == 13 ) goto st38; if ( 48 <= (*p) && (*p) <= 57 ) goto st42; goto st0; st42: if ( ++p == pe ) goto _test_eof42; case 42: if ( (*p) == 13 ) goto st38; if ( 48 <= (*p) && (*p) <= 57 ) goto st40; goto st0; st43: if ( ++p == pe ) goto _test_eof43; case 43: switch( (*p) ) { case 13: goto st38; case 53: goto st44; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st40; } else if ( (*p) >= 48 ) goto st42; goto st0; st44: if ( ++p == pe ) goto _test_eof44; case 44: switch( (*p) ) { case 13: goto st38; case 53: goto st45; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st39; } else if ( (*p) >= 48 ) goto st40; goto st0; st45: if ( ++p == pe ) goto _test_eof45; case 45: switch( (*p) ) { case 13: goto st38; case 51: goto st46; } if ( (*p) > 50 ) { if ( 52 <= (*p) && (*p) <= 57 ) goto st37; } else if ( (*p) >= 48 ) goto st39; goto st0; st46: if ( ++p == pe ) goto _test_eof46; case 46: if ( (*p) == 13 ) goto st38; if ( 48 <= (*p) && (*p) <= 53 ) goto st37; goto st0; tr67: #line 31 "haproxy_protocol.rl" { haproxy_protocol.port_len = (size_t)p - haproxy_protocol.port_s + 1; } goto st47; st47: if ( ++p == pe ) goto _test_eof47; case 47: #line 578 "haproxy_protocol.c" if ( (*p) == 32 ) goto st33; if ( 48 <= (*p) && (*p) <= 57 ) goto tr68; goto st0; tr65: #line 31 "haproxy_protocol.rl" { haproxy_protocol.port_len = (size_t)p - haproxy_protocol.port_s + 1; } goto st48; st48: if ( ++p == pe ) goto _test_eof48; case 48: #line 594 "haproxy_protocol.c" if ( (*p) == 32 ) goto st33; if ( 48 <= (*p) && (*p) <= 57 ) goto tr67; goto st0; tr61: #line 27 "haproxy_protocol.rl" { haproxy_protocol.port_s = (size_t)p; } #line 31 "haproxy_protocol.rl" { haproxy_protocol.port_len = (size_t)p - haproxy_protocol.port_s + 1; } goto st49; st49: if ( ++p == pe ) goto _test_eof49; case 49: #line 614 "haproxy_protocol.c" if ( (*p) == 32 ) goto st33; if ( 48 <= (*p) && (*p) <= 57 ) goto tr84; goto st0; tr63: #line 27 "haproxy_protocol.rl" { haproxy_protocol.port_s = (size_t)p; } #line 31 "haproxy_protocol.rl" { haproxy_protocol.port_len = (size_t)p - haproxy_protocol.port_s + 1; } goto st50; tr84: #line 31 "haproxy_protocol.rl" { haproxy_protocol.port_len = (size_t)p - haproxy_protocol.port_s + 1; } goto st50; st50: if ( ++p == pe ) goto _test_eof50; case 50: #line 640 "haproxy_protocol.c" if ( (*p) == 32 ) goto st33; if ( 48 <= (*p) && (*p) <= 57 ) goto tr65; goto st0; tr62: #line 27 "haproxy_protocol.rl" { haproxy_protocol.port_s = (size_t)p; } #line 31 "haproxy_protocol.rl" { haproxy_protocol.port_len = (size_t)p - haproxy_protocol.port_s + 1; } goto st51; st51: if ( ++p == pe ) goto _test_eof51; case 51: #line 660 "haproxy_protocol.c" switch( (*p) ) { case 32: goto st33; case 53: goto tr85; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto tr65; } else if ( (*p) >= 48 ) goto tr84; goto st0; tr85: #line 31 "haproxy_protocol.rl" { haproxy_protocol.port_len = (size_t)p - haproxy_protocol.port_s + 1; } goto st52; st52: if ( ++p == pe ) goto _test_eof52; case 52: #line 681 "haproxy_protocol.c" switch( (*p) ) { case 32: goto st33; case 53: goto tr86; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto tr67; } else if ( (*p) >= 48 ) goto tr65; goto st0; tr86: #line 31 "haproxy_protocol.rl" { haproxy_protocol.port_len = (size_t)p - haproxy_protocol.port_s + 1; } goto st53; st53: if ( ++p == pe ) goto _test_eof53; case 53: #line 702 "haproxy_protocol.c" switch( (*p) ) { case 32: goto st33; case 51: goto tr87; } if ( (*p) > 50 ) { if ( 52 <= (*p) && (*p) <= 57 ) goto tr68; } else if ( (*p) >= 48 ) goto tr67; goto st0; tr87: #line 31 "haproxy_protocol.rl" { haproxy_protocol.port_len = (size_t)p - haproxy_protocol.port_s + 1; } goto st54; st54: if ( ++p == pe ) goto _test_eof54; case 54: #line 723 "haproxy_protocol.c" if ( (*p) == 32 ) goto st33; if ( 48 <= (*p) && (*p) <= 53 ) goto tr68; goto st0; st55: if ( ++p == pe ) goto _test_eof55; case 55: if ( (*p) == 32 ) goto st28; if ( 48 <= (*p) && (*p) <= 57 ) goto st56; goto st0; st56: if ( ++p == pe ) goto _test_eof56; case 56: if ( (*p) == 32 ) goto st28; if ( 48 <= (*p) && (*p) <= 57 ) goto st27; goto st0; st57: if ( ++p == pe ) goto _test_eof57; case 57: switch( (*p) ) { case 32: goto st28; case 53: goto st58; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st27; } else if ( (*p) >= 48 ) goto st56; goto st0; st58: if ( ++p == pe ) goto _test_eof58; case 58: if ( (*p) == 32 ) goto st28; if ( 48 <= (*p) && (*p) <= 53 ) goto st27; goto st0; st59: if ( ++p == pe ) goto _test_eof59; case 59: if ( (*p) == 46 ) goto st26; if ( 48 <= (*p) && (*p) <= 57 ) goto st60; goto st0; st60: if ( ++p == pe ) goto _test_eof60; case 60: if ( (*p) == 46 ) goto st26; if ( 48 <= (*p) && (*p) <= 57 ) goto st25; goto st0; st61: if ( ++p == pe ) goto _test_eof61; case 61: switch( (*p) ) { case 46: goto st26; case 53: goto st62; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st25; } else if ( (*p) >= 48 ) goto st60; goto st0; st62: if ( ++p == pe ) goto _test_eof62; case 62: if ( (*p) == 46 ) goto st26; if ( 48 <= (*p) && (*p) <= 53 ) goto st25; goto st0; st63: if ( ++p == pe ) goto _test_eof63; case 63: if ( (*p) == 46 ) goto st24; if ( 48 <= (*p) && (*p) <= 57 ) goto st64; goto st0; st64: if ( ++p == pe ) goto _test_eof64; case 64: if ( (*p) == 46 ) goto st24; if ( 48 <= (*p) && (*p) <= 57 ) goto st23; goto st0; st65: if ( ++p == pe ) goto _test_eof65; case 65: switch( (*p) ) { case 46: goto st24; case 53: goto st66; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st23; } else if ( (*p) >= 48 ) goto st64; goto st0; st66: if ( ++p == pe ) goto _test_eof66; case 66: if ( (*p) == 46 ) goto st24; if ( 48 <= (*p) && (*p) <= 53 ) goto st23; goto st0; st67: if ( ++p == pe ) goto _test_eof67; case 67: if ( (*p) == 58 ) goto st70; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st68; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st68; } else goto st68; goto st0; st68: if ( ++p == pe ) goto _test_eof68; case 68: if ( (*p) == 58 ) goto st70; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st69; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st69; } else goto st69; goto st0; st69: if ( ++p == pe ) goto _test_eof69; case 69: if ( (*p) == 58 ) goto st70; goto st0; st70: if ( ++p == pe ) goto _test_eof70; case 70: if ( (*p) == 58 ) goto st169; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st71; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st71; } else goto st71; goto st0; st71: if ( ++p == pe ) goto _test_eof71; case 71: if ( (*p) == 58 ) goto st75; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st72; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st72; } else goto st72; goto st0; st72: if ( ++p == pe ) goto _test_eof72; case 72: if ( (*p) == 58 ) goto st75; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st73; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st73; } else goto st73; goto st0; st73: if ( ++p == pe ) goto _test_eof73; case 73: if ( (*p) == 58 ) goto st75; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st74; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st74; } else goto st74; goto st0; st74: if ( ++p == pe ) goto _test_eof74; case 74: if ( (*p) == 58 ) goto st75; goto st0; st75: if ( ++p == pe ) goto _test_eof75; case 75: if ( (*p) == 58 ) goto st155; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st76; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st76; } else goto st76; goto st0; st76: if ( ++p == pe ) goto _test_eof76; case 76: if ( (*p) == 58 ) goto st80; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st77; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st77; } else goto st77; goto st0; st77: if ( ++p == pe ) goto _test_eof77; case 77: if ( (*p) == 58 ) goto st80; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st78; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st78; } else goto st78; goto st0; st78: if ( ++p == pe ) goto _test_eof78; case 78: if ( (*p) == 58 ) goto st80; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st79; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st79; } else goto st79; goto st0; st79: if ( ++p == pe ) goto _test_eof79; case 79: if ( (*p) == 58 ) goto st80; goto st0; st80: if ( ++p == pe ) goto _test_eof80; case 80: if ( (*p) == 58 ) goto st141; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st81; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st81; } else goto st81; goto st0; st81: if ( ++p == pe ) goto _test_eof81; case 81: if ( (*p) == 58 ) goto st85; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st82; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st82; } else goto st82; goto st0; st82: if ( ++p == pe ) goto _test_eof82; case 82: if ( (*p) == 58 ) goto st85; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st83; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st83; } else goto st83; goto st0; st83: if ( ++p == pe ) goto _test_eof83; case 83: if ( (*p) == 58 ) goto st85; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st84; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st84; } else goto st84; goto st0; st84: if ( ++p == pe ) goto _test_eof84; case 84: if ( (*p) == 58 ) goto st85; goto st0; st85: if ( ++p == pe ) goto _test_eof85; case 85: if ( (*p) == 58 ) goto st127; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st86; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st86; } else goto st86; goto st0; st86: if ( ++p == pe ) goto _test_eof86; case 86: if ( (*p) == 58 ) goto st90; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st87; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st87; } else goto st87; goto st0; st87: if ( ++p == pe ) goto _test_eof87; case 87: if ( (*p) == 58 ) goto st90; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st88; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st88; } else goto st88; goto st0; st88: if ( ++p == pe ) goto _test_eof88; case 88: if ( (*p) == 58 ) goto st90; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st89; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st89; } else goto st89; goto st0; st89: if ( ++p == pe ) goto _test_eof89; case 89: if ( (*p) == 58 ) goto st90; goto st0; st90: if ( ++p == pe ) goto _test_eof90; case 90: if ( (*p) == 58 ) goto st113; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st91; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st91; } else goto st91; goto st0; st91: if ( ++p == pe ) goto _test_eof91; case 91: if ( (*p) == 58 ) goto st95; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st92; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st92; } else goto st92; goto st0; st92: if ( ++p == pe ) goto _test_eof92; case 92: if ( (*p) == 58 ) goto st95; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st93; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st93; } else goto st93; goto st0; st93: if ( ++p == pe ) goto _test_eof93; case 93: if ( (*p) == 58 ) goto st95; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st94; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st94; } else goto st94; goto st0; st94: if ( ++p == pe ) goto _test_eof94; case 94: if ( (*p) == 58 ) goto st95; goto st0; st95: if ( ++p == pe ) goto _test_eof95; case 95: switch( (*p) ) { case 48: goto st96; case 49: goto st104; case 50: goto st107; case 58: goto st111; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st110; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st112; } else goto st112; goto st0; st96: if ( ++p == pe ) goto _test_eof96; case 96: switch( (*p) ) { case 46: goto st22; case 58: goto st100; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st97; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st97; } else goto st97; goto st0; st97: if ( ++p == pe ) goto _test_eof97; case 97: if ( (*p) == 58 ) goto st100; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st98; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st98; } else goto st98; goto st0; st98: if ( ++p == pe ) goto _test_eof98; case 98: if ( (*p) == 58 ) goto st100; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st99; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st99; } else goto st99; goto st0; st99: if ( ++p == pe ) goto _test_eof99; case 99: if ( (*p) == 58 ) goto st100; goto st0; st100: if ( ++p == pe ) goto _test_eof100; case 100: if ( (*p) == 58 ) goto st27; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st101; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st101; } else goto st101; goto st0; st101: if ( ++p == pe ) goto _test_eof101; case 101: if ( (*p) == 32 ) goto st28; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st102; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st102; } else goto st102; goto st0; st102: if ( ++p == pe ) goto _test_eof102; case 102: if ( (*p) == 32 ) goto st28; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st103; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st103; } else goto st103; goto st0; st103: if ( ++p == pe ) goto _test_eof103; case 103: if ( (*p) == 32 ) goto st28; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st27; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st27; } else goto st27; goto st0; st104: if ( ++p == pe ) goto _test_eof104; case 104: switch( (*p) ) { case 46: goto st22; case 58: goto st100; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st105; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st97; } else goto st97; goto st0; st105: if ( ++p == pe ) goto _test_eof105; case 105: switch( (*p) ) { case 46: goto st22; case 58: goto st100; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st106; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st98; } else goto st98; goto st0; st106: if ( ++p == pe ) goto _test_eof106; case 106: switch( (*p) ) { case 46: goto st22; case 58: goto st100; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st99; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st99; } else goto st99; goto st0; st107: if ( ++p == pe ) goto _test_eof107; case 107: switch( (*p) ) { case 46: goto st22; case 53: goto st108; case 58: goto st100; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st105; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st97; } else if ( (*p) >= 65 ) goto st97; } else goto st109; goto st0; st108: if ( ++p == pe ) goto _test_eof108; case 108: switch( (*p) ) { case 46: goto st22; case 58: goto st100; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st106; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st98; } else if ( (*p) >= 65 ) goto st98; } else goto st98; goto st0; st109: if ( ++p == pe ) goto _test_eof109; case 109: switch( (*p) ) { case 46: goto st22; case 58: goto st100; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st98; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st98; } else goto st98; goto st0; st110: if ( ++p == pe ) goto _test_eof110; case 110: switch( (*p) ) { case 46: goto st22; case 58: goto st100; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st109; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st97; } else goto st97; goto st0; st111: if ( ++p == pe ) goto _test_eof111; case 111: if ( (*p) == 32 ) goto st28; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st101; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st101; } else goto st101; goto st0; st112: if ( ++p == pe ) goto _test_eof112; case 112: if ( (*p) == 58 ) goto st100; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st97; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st97; } else goto st97; goto st0; st113: if ( ++p == pe ) goto _test_eof113; case 113: switch( (*p) ) { case 32: goto st28; case 48: goto st114; case 49: goto st119; case 50: goto st122; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st125; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st126; } else goto st126; goto st0; st114: if ( ++p == pe ) goto _test_eof114; case 114: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st118; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st115; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st115; } else goto st115; goto st0; st115: if ( ++p == pe ) goto _test_eof115; case 115: switch( (*p) ) { case 32: goto st28; case 58: goto st118; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st116; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st116; } else goto st116; goto st0; st116: if ( ++p == pe ) goto _test_eof116; case 116: switch( (*p) ) { case 32: goto st28; case 58: goto st118; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st117; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st117; } else goto st117; goto st0; st117: if ( ++p == pe ) goto _test_eof117; case 117: switch( (*p) ) { case 32: goto st28; case 58: goto st118; } goto st0; st118: if ( ++p == pe ) goto _test_eof118; case 118: if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st101; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st101; } else goto st101; goto st0; st119: if ( ++p == pe ) goto _test_eof119; case 119: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st118; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st120; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st115; } else goto st115; goto st0; st120: if ( ++p == pe ) goto _test_eof120; case 120: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st118; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st121; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st116; } else goto st116; goto st0; st121: if ( ++p == pe ) goto _test_eof121; case 121: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st118; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st117; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st117; } else goto st117; goto st0; st122: if ( ++p == pe ) goto _test_eof122; case 122: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 53: goto st123; case 58: goto st118; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st120; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st115; } else if ( (*p) >= 65 ) goto st115; } else goto st124; goto st0; st123: if ( ++p == pe ) goto _test_eof123; case 123: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st118; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st121; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st116; } else if ( (*p) >= 65 ) goto st116; } else goto st116; goto st0; st124: if ( ++p == pe ) goto _test_eof124; case 124: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st118; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st116; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st116; } else goto st116; goto st0; st125: if ( ++p == pe ) goto _test_eof125; case 125: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st118; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st124; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st115; } else goto st115; goto st0; st126: if ( ++p == pe ) goto _test_eof126; case 126: switch( (*p) ) { case 32: goto st28; case 58: goto st118; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st115; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st115; } else goto st115; goto st0; st127: if ( ++p == pe ) goto _test_eof127; case 127: switch( (*p) ) { case 32: goto st28; case 48: goto st128; case 49: goto st133; case 50: goto st136; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st139; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st140; } else goto st140; goto st0; st128: if ( ++p == pe ) goto _test_eof128; case 128: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st132; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st129; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st129; } else goto st129; goto st0; st129: if ( ++p == pe ) goto _test_eof129; case 129: switch( (*p) ) { case 32: goto st28; case 58: goto st132; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st130; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st130; } else goto st130; goto st0; st130: if ( ++p == pe ) goto _test_eof130; case 130: switch( (*p) ) { case 32: goto st28; case 58: goto st132; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st131; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st131; } else goto st131; goto st0; st131: if ( ++p == pe ) goto _test_eof131; case 131: switch( (*p) ) { case 32: goto st28; case 58: goto st132; } goto st0; st132: if ( ++p == pe ) goto _test_eof132; case 132: switch( (*p) ) { case 48: goto st114; case 49: goto st119; case 50: goto st122; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st125; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st126; } else goto st126; goto st0; st133: if ( ++p == pe ) goto _test_eof133; case 133: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st132; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st134; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st129; } else goto st129; goto st0; st134: if ( ++p == pe ) goto _test_eof134; case 134: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st132; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st135; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st130; } else goto st130; goto st0; st135: if ( ++p == pe ) goto _test_eof135; case 135: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st132; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st131; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st131; } else goto st131; goto st0; st136: if ( ++p == pe ) goto _test_eof136; case 136: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 53: goto st137; case 58: goto st132; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st134; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st129; } else if ( (*p) >= 65 ) goto st129; } else goto st138; goto st0; st137: if ( ++p == pe ) goto _test_eof137; case 137: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st132; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st135; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st130; } else if ( (*p) >= 65 ) goto st130; } else goto st130; goto st0; st138: if ( ++p == pe ) goto _test_eof138; case 138: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st132; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st130; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st130; } else goto st130; goto st0; st139: if ( ++p == pe ) goto _test_eof139; case 139: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st132; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st138; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st129; } else goto st129; goto st0; st140: if ( ++p == pe ) goto _test_eof140; case 140: switch( (*p) ) { case 32: goto st28; case 58: goto st132; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st129; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st129; } else goto st129; goto st0; st141: if ( ++p == pe ) goto _test_eof141; case 141: switch( (*p) ) { case 32: goto st28; case 48: goto st142; case 49: goto st147; case 50: goto st150; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st153; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st154; } else goto st154; goto st0; st142: if ( ++p == pe ) goto _test_eof142; case 142: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st146; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st143; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st143; } else goto st143; goto st0; st143: if ( ++p == pe ) goto _test_eof143; case 143: switch( (*p) ) { case 32: goto st28; case 58: goto st146; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st144; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st144; } else goto st144; goto st0; st144: if ( ++p == pe ) goto _test_eof144; case 144: switch( (*p) ) { case 32: goto st28; case 58: goto st146; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st145; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st145; } else goto st145; goto st0; st145: if ( ++p == pe ) goto _test_eof145; case 145: switch( (*p) ) { case 32: goto st28; case 58: goto st146; } goto st0; st146: if ( ++p == pe ) goto _test_eof146; case 146: switch( (*p) ) { case 48: goto st128; case 49: goto st133; case 50: goto st136; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st139; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st140; } else goto st140; goto st0; st147: if ( ++p == pe ) goto _test_eof147; case 147: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st146; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st148; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st143; } else goto st143; goto st0; st148: if ( ++p == pe ) goto _test_eof148; case 148: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st146; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st149; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st144; } else goto st144; goto st0; st149: if ( ++p == pe ) goto _test_eof149; case 149: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st146; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st145; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st145; } else goto st145; goto st0; st150: if ( ++p == pe ) goto _test_eof150; case 150: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 53: goto st151; case 58: goto st146; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st148; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st143; } else if ( (*p) >= 65 ) goto st143; } else goto st152; goto st0; st151: if ( ++p == pe ) goto _test_eof151; case 151: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st146; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st149; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st144; } else if ( (*p) >= 65 ) goto st144; } else goto st144; goto st0; st152: if ( ++p == pe ) goto _test_eof152; case 152: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st146; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st144; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st144; } else goto st144; goto st0; st153: if ( ++p == pe ) goto _test_eof153; case 153: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st146; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st152; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st143; } else goto st143; goto st0; st154: if ( ++p == pe ) goto _test_eof154; case 154: switch( (*p) ) { case 32: goto st28; case 58: goto st146; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st143; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st143; } else goto st143; goto st0; st155: if ( ++p == pe ) goto _test_eof155; case 155: switch( (*p) ) { case 32: goto st28; case 48: goto st156; case 49: goto st161; case 50: goto st164; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st167; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st168; } else goto st168; goto st0; st156: if ( ++p == pe ) goto _test_eof156; case 156: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st160; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st157; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st157; } else goto st157; goto st0; st157: if ( ++p == pe ) goto _test_eof157; case 157: switch( (*p) ) { case 32: goto st28; case 58: goto st160; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st158; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st158; } else goto st158; goto st0; st158: if ( ++p == pe ) goto _test_eof158; case 158: switch( (*p) ) { case 32: goto st28; case 58: goto st160; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st159; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st159; } else goto st159; goto st0; st159: if ( ++p == pe ) goto _test_eof159; case 159: switch( (*p) ) { case 32: goto st28; case 58: goto st160; } goto st0; st160: if ( ++p == pe ) goto _test_eof160; case 160: switch( (*p) ) { case 48: goto st142; case 49: goto st147; case 50: goto st150; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st153; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st154; } else goto st154; goto st0; st161: if ( ++p == pe ) goto _test_eof161; case 161: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st160; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st162; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st157; } else goto st157; goto st0; st162: if ( ++p == pe ) goto _test_eof162; case 162: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st160; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st163; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st158; } else goto st158; goto st0; st163: if ( ++p == pe ) goto _test_eof163; case 163: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st160; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st159; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st159; } else goto st159; goto st0; st164: if ( ++p == pe ) goto _test_eof164; case 164: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 53: goto st165; case 58: goto st160; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st162; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st157; } else if ( (*p) >= 65 ) goto st157; } else goto st166; goto st0; st165: if ( ++p == pe ) goto _test_eof165; case 165: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st160; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st163; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st158; } else if ( (*p) >= 65 ) goto st158; } else goto st158; goto st0; st166: if ( ++p == pe ) goto _test_eof166; case 166: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st160; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st158; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st158; } else goto st158; goto st0; st167: if ( ++p == pe ) goto _test_eof167; case 167: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st160; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st166; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st157; } else goto st157; goto st0; st168: if ( ++p == pe ) goto _test_eof168; case 168: switch( (*p) ) { case 32: goto st28; case 58: goto st160; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st157; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st157; } else goto st157; goto st0; st169: if ( ++p == pe ) goto _test_eof169; case 169: switch( (*p) ) { case 32: goto st28; case 48: goto st170; case 49: goto st175; case 50: goto st178; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st181; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st182; } else goto st182; goto st0; st170: if ( ++p == pe ) goto _test_eof170; case 170: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st174; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st171; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st171; } else goto st171; goto st0; st171: if ( ++p == pe ) goto _test_eof171; case 171: switch( (*p) ) { case 32: goto st28; case 58: goto st174; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st172; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st172; } else goto st172; goto st0; st172: if ( ++p == pe ) goto _test_eof172; case 172: switch( (*p) ) { case 32: goto st28; case 58: goto st174; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st173; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st173; } else goto st173; goto st0; st173: if ( ++p == pe ) goto _test_eof173; case 173: switch( (*p) ) { case 32: goto st28; case 58: goto st174; } goto st0; st174: if ( ++p == pe ) goto _test_eof174; case 174: switch( (*p) ) { case 48: goto st156; case 49: goto st161; case 50: goto st164; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st167; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st168; } else goto st168; goto st0; st175: if ( ++p == pe ) goto _test_eof175; case 175: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st174; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st176; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st171; } else goto st171; goto st0; st176: if ( ++p == pe ) goto _test_eof176; case 176: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st174; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st177; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st172; } else goto st172; goto st0; st177: if ( ++p == pe ) goto _test_eof177; case 177: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st174; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st173; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st173; } else goto st173; goto st0; st178: if ( ++p == pe ) goto _test_eof178; case 178: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 53: goto st179; case 58: goto st174; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st176; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st171; } else if ( (*p) >= 65 ) goto st171; } else goto st180; goto st0; st179: if ( ++p == pe ) goto _test_eof179; case 179: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st174; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st177; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st172; } else if ( (*p) >= 65 ) goto st172; } else goto st172; goto st0; st180: if ( ++p == pe ) goto _test_eof180; case 180: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st174; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st172; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st172; } else goto st172; goto st0; st181: if ( ++p == pe ) goto _test_eof181; case 181: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st174; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st180; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st171; } else goto st171; goto st0; st182: if ( ++p == pe ) goto _test_eof182; case 182: switch( (*p) ) { case 32: goto st28; case 58: goto st174; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st171; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st171; } else goto st171; goto st0; st183: if ( ++p == pe ) goto _test_eof183; case 183: switch( (*p) ) { case 46: goto st22; case 58: goto st70; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st184; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st67; } else goto st67; goto st0; st184: if ( ++p == pe ) goto _test_eof184; case 184: switch( (*p) ) { case 46: goto st22; case 58: goto st70; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st185; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st68; } else goto st68; goto st0; st185: if ( ++p == pe ) goto _test_eof185; case 185: switch( (*p) ) { case 46: goto st22; case 58: goto st70; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st69; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st69; } else goto st69; goto st0; st186: if ( ++p == pe ) goto _test_eof186; case 186: switch( (*p) ) { case 46: goto st22; case 53: goto st187; case 58: goto st70; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st184; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st67; } else if ( (*p) >= 65 ) goto st67; } else goto st188; goto st0; st187: if ( ++p == pe ) goto _test_eof187; case 187: switch( (*p) ) { case 46: goto st22; case 58: goto st70; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st185; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st68; } else if ( (*p) >= 65 ) goto st68; } else goto st68; goto st0; st188: if ( ++p == pe ) goto _test_eof188; case 188: switch( (*p) ) { case 46: goto st22; case 58: goto st70; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st68; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st68; } else goto st68; goto st0; st189: if ( ++p == pe ) goto _test_eof189; case 189: switch( (*p) ) { case 46: goto st22; case 58: goto st70; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st188; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st67; } else goto st67; goto st0; st190: if ( ++p == pe ) goto _test_eof190; case 190: if ( (*p) == 58 ) goto st191; goto st0; st191: if ( ++p == pe ) goto _test_eof191; case 191: switch( (*p) ) { case 32: goto st28; case 48: goto st192; case 49: goto st197; case 50: goto st200; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st203; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st204; } else goto st204; goto st0; st192: if ( ++p == pe ) goto _test_eof192; case 192: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st196; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st193; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st193; } else goto st193; goto st0; st193: if ( ++p == pe ) goto _test_eof193; case 193: switch( (*p) ) { case 32: goto st28; case 58: goto st196; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st194; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st194; } else goto st194; goto st0; st194: if ( ++p == pe ) goto _test_eof194; case 194: switch( (*p) ) { case 32: goto st28; case 58: goto st196; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st195; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st195; } else goto st195; goto st0; st195: if ( ++p == pe ) goto _test_eof195; case 195: switch( (*p) ) { case 32: goto st28; case 58: goto st196; } goto st0; st196: if ( ++p == pe ) goto _test_eof196; case 196: switch( (*p) ) { case 48: goto st170; case 49: goto st175; case 50: goto st178; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st181; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st182; } else goto st182; goto st0; st197: if ( ++p == pe ) goto _test_eof197; case 197: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st196; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st198; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st193; } else goto st193; goto st0; st198: if ( ++p == pe ) goto _test_eof198; case 198: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st196; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st199; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st194; } else goto st194; goto st0; st199: if ( ++p == pe ) goto _test_eof199; case 199: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st196; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st195; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st195; } else goto st195; goto st0; st200: if ( ++p == pe ) goto _test_eof200; case 200: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 53: goto st201; case 58: goto st196; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st198; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st193; } else if ( (*p) >= 65 ) goto st193; } else goto st202; goto st0; st201: if ( ++p == pe ) goto _test_eof201; case 201: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st196; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st199; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st194; } else if ( (*p) >= 65 ) goto st194; } else goto st194; goto st0; st202: if ( ++p == pe ) goto _test_eof202; case 202: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st196; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st194; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st194; } else goto st194; goto st0; st203: if ( ++p == pe ) goto _test_eof203; case 203: switch( (*p) ) { case 32: goto st28; case 46: goto st22; case 58: goto st196; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st202; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st193; } else goto st193; goto st0; st204: if ( ++p == pe ) goto _test_eof204; case 204: switch( (*p) ) { case 32: goto st28; case 58: goto st196; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st193; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st193; } else goto st193; goto st0; st205: if ( ++p == pe ) goto _test_eof205; case 205: if ( (*p) == 58 ) goto st70; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st67; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st67; } else goto st67; goto st0; st206: if ( ++p == pe ) goto _test_eof206; case 206: if ( (*p) == 32 ) goto tr35; if ( 48 <= (*p) && (*p) <= 57 ) goto st207; goto st0; st207: if ( ++p == pe ) goto _test_eof207; case 207: if ( (*p) == 32 ) goto tr35; if ( 48 <= (*p) && (*p) <= 57 ) goto st19; goto st0; st208: if ( ++p == pe ) goto _test_eof208; case 208: switch( (*p) ) { case 32: goto tr35; case 53: goto st209; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st19; } else if ( (*p) >= 48 ) goto st207; goto st0; st209: if ( ++p == pe ) goto _test_eof209; case 209: if ( (*p) == 32 ) goto tr35; if ( 48 <= (*p) && (*p) <= 53 ) goto st19; goto st0; st210: if ( ++p == pe ) goto _test_eof210; case 210: if ( (*p) == 46 ) goto st18; if ( 48 <= (*p) && (*p) <= 57 ) goto st211; goto st0; st211: if ( ++p == pe ) goto _test_eof211; case 211: if ( (*p) == 46 ) goto st18; if ( 48 <= (*p) && (*p) <= 57 ) goto st17; goto st0; st212: if ( ++p == pe ) goto _test_eof212; case 212: switch( (*p) ) { case 46: goto st18; case 53: goto st213; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st17; } else if ( (*p) >= 48 ) goto st211; goto st0; st213: if ( ++p == pe ) goto _test_eof213; case 213: if ( (*p) == 46 ) goto st18; if ( 48 <= (*p) && (*p) <= 53 ) goto st17; goto st0; st214: if ( ++p == pe ) goto _test_eof214; case 214: if ( (*p) == 46 ) goto st16; if ( 48 <= (*p) && (*p) <= 57 ) goto st215; goto st0; st215: if ( ++p == pe ) goto _test_eof215; case 215: if ( (*p) == 46 ) goto st16; if ( 48 <= (*p) && (*p) <= 57 ) goto st15; goto st0; st216: if ( ++p == pe ) goto _test_eof216; case 216: switch( (*p) ) { case 46: goto st16; case 53: goto st217; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st15; } else if ( (*p) >= 48 ) goto st215; goto st0; st217: if ( ++p == pe ) goto _test_eof217; case 217: if ( (*p) == 46 ) goto st16; if ( 48 <= (*p) && (*p) <= 53 ) goto st15; goto st0; st218: if ( ++p == pe ) goto _test_eof218; case 218: if ( (*p) == 58 ) goto st221; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st219; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st219; } else goto st219; goto st0; st219: if ( ++p == pe ) goto _test_eof219; case 219: if ( (*p) == 58 ) goto st221; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st220; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st220; } else goto st220; goto st0; st220: if ( ++p == pe ) goto _test_eof220; case 220: if ( (*p) == 58 ) goto st221; goto st0; st221: if ( ++p == pe ) goto _test_eof221; case 221: if ( (*p) == 58 ) goto st338; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st222; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st222; } else goto st222; goto st0; st222: if ( ++p == pe ) goto _test_eof222; case 222: if ( (*p) == 58 ) goto st226; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st223; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st223; } else goto st223; goto st0; st223: if ( ++p == pe ) goto _test_eof223; case 223: if ( (*p) == 58 ) goto st226; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st224; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st224; } else goto st224; goto st0; st224: if ( ++p == pe ) goto _test_eof224; case 224: if ( (*p) == 58 ) goto st226; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st225; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st225; } else goto st225; goto st0; st225: if ( ++p == pe ) goto _test_eof225; case 225: if ( (*p) == 58 ) goto st226; goto st0; st226: if ( ++p == pe ) goto _test_eof226; case 226: if ( (*p) == 58 ) goto st324; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st227; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st227; } else goto st227; goto st0; st227: if ( ++p == pe ) goto _test_eof227; case 227: if ( (*p) == 58 ) goto st231; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st228; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st228; } else goto st228; goto st0; st228: if ( ++p == pe ) goto _test_eof228; case 228: if ( (*p) == 58 ) goto st231; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st229; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st229; } else goto st229; goto st0; st229: if ( ++p == pe ) goto _test_eof229; case 229: if ( (*p) == 58 ) goto st231; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st230; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st230; } else goto st230; goto st0; st230: if ( ++p == pe ) goto _test_eof230; case 230: if ( (*p) == 58 ) goto st231; goto st0; st231: if ( ++p == pe ) goto _test_eof231; case 231: if ( (*p) == 58 ) goto st310; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st232; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st232; } else goto st232; goto st0; st232: if ( ++p == pe ) goto _test_eof232; case 232: if ( (*p) == 58 ) goto st236; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st233; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st233; } else goto st233; goto st0; st233: if ( ++p == pe ) goto _test_eof233; case 233: if ( (*p) == 58 ) goto st236; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st234; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st234; } else goto st234; goto st0; st234: if ( ++p == pe ) goto _test_eof234; case 234: if ( (*p) == 58 ) goto st236; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st235; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st235; } else goto st235; goto st0; st235: if ( ++p == pe ) goto _test_eof235; case 235: if ( (*p) == 58 ) goto st236; goto st0; st236: if ( ++p == pe ) goto _test_eof236; case 236: if ( (*p) == 58 ) goto st296; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st237; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st237; } else goto st237; goto st0; st237: if ( ++p == pe ) goto _test_eof237; case 237: if ( (*p) == 58 ) goto st241; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st238; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st238; } else goto st238; goto st0; st238: if ( ++p == pe ) goto _test_eof238; case 238: if ( (*p) == 58 ) goto st241; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st239; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st239; } else goto st239; goto st0; st239: if ( ++p == pe ) goto _test_eof239; case 239: if ( (*p) == 58 ) goto st241; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st240; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st240; } else goto st240; goto st0; st240: if ( ++p == pe ) goto _test_eof240; case 240: if ( (*p) == 58 ) goto st241; goto st0; st241: if ( ++p == pe ) goto _test_eof241; case 241: if ( (*p) == 58 ) goto st282; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st242; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st242; } else goto st242; goto st0; st242: if ( ++p == pe ) goto _test_eof242; case 242: if ( (*p) == 58 ) goto st246; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st243; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st243; } else goto st243; goto st0; st243: if ( ++p == pe ) goto _test_eof243; case 243: if ( (*p) == 58 ) goto st246; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st244; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st244; } else goto st244; goto st0; st244: if ( ++p == pe ) goto _test_eof244; case 244: if ( (*p) == 58 ) goto st246; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st245; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st245; } else goto st245; goto st0; st245: if ( ++p == pe ) goto _test_eof245; case 245: if ( (*p) == 58 ) goto st246; goto st0; st246: if ( ++p == pe ) goto _test_eof246; case 246: switch( (*p) ) { case 48: goto st247; case 49: goto st273; case 50: goto st276; case 58: goto st280; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st279; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st281; } else goto st281; goto st0; st247: if ( ++p == pe ) goto _test_eof247; case 247: switch( (*p) ) { case 46: goto st248; case 58: goto st269; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st266; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st266; } else goto st266; goto st0; st248: if ( ++p == pe ) goto _test_eof248; case 248: switch( (*p) ) { case 48: goto st249; case 49: goto st262; case 50: goto st264; } if ( 51 <= (*p) && (*p) <= 57 ) goto st263; goto st0; st249: if ( ++p == pe ) goto _test_eof249; case 249: if ( (*p) == 46 ) goto st250; goto st0; st250: if ( ++p == pe ) goto _test_eof250; case 250: switch( (*p) ) { case 48: goto st251; case 49: goto st258; case 50: goto st260; } if ( 51 <= (*p) && (*p) <= 57 ) goto st259; goto st0; st251: if ( ++p == pe ) goto _test_eof251; case 251: if ( (*p) == 46 ) goto st252; goto st0; st252: if ( ++p == pe ) goto _test_eof252; case 252: switch( (*p) ) { case 48: goto st253; case 49: goto st254; case 50: goto st256; } if ( 51 <= (*p) && (*p) <= 57 ) goto st255; goto st0; st253: if ( ++p == pe ) goto _test_eof253; case 253: if ( (*p) == 32 ) goto tr281; goto st0; st254: if ( ++p == pe ) goto _test_eof254; case 254: if ( (*p) == 32 ) goto tr281; if ( 48 <= (*p) && (*p) <= 57 ) goto st255; goto st0; st255: if ( ++p == pe ) goto _test_eof255; case 255: if ( (*p) == 32 ) goto tr281; if ( 48 <= (*p) && (*p) <= 57 ) goto st253; goto st0; st256: if ( ++p == pe ) goto _test_eof256; case 256: switch( (*p) ) { case 32: goto tr281; case 53: goto st257; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st253; } else if ( (*p) >= 48 ) goto st255; goto st0; st257: if ( ++p == pe ) goto _test_eof257; case 257: if ( (*p) == 32 ) goto tr281; if ( 48 <= (*p) && (*p) <= 53 ) goto st253; goto st0; st258: if ( ++p == pe ) goto _test_eof258; case 258: if ( (*p) == 46 ) goto st252; if ( 48 <= (*p) && (*p) <= 57 ) goto st259; goto st0; st259: if ( ++p == pe ) goto _test_eof259; case 259: if ( (*p) == 46 ) goto st252; if ( 48 <= (*p) && (*p) <= 57 ) goto st251; goto st0; st260: if ( ++p == pe ) goto _test_eof260; case 260: switch( (*p) ) { case 46: goto st252; case 53: goto st261; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st251; } else if ( (*p) >= 48 ) goto st259; goto st0; st261: if ( ++p == pe ) goto _test_eof261; case 261: if ( (*p) == 46 ) goto st252; if ( 48 <= (*p) && (*p) <= 53 ) goto st251; goto st0; st262: if ( ++p == pe ) goto _test_eof262; case 262: if ( (*p) == 46 ) goto st250; if ( 48 <= (*p) && (*p) <= 57 ) goto st263; goto st0; st263: if ( ++p == pe ) goto _test_eof263; case 263: if ( (*p) == 46 ) goto st250; if ( 48 <= (*p) && (*p) <= 57 ) goto st249; goto st0; st264: if ( ++p == pe ) goto _test_eof264; case 264: switch( (*p) ) { case 46: goto st250; case 53: goto st265; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st249; } else if ( (*p) >= 48 ) goto st263; goto st0; st265: if ( ++p == pe ) goto _test_eof265; case 265: if ( (*p) == 46 ) goto st250; if ( 48 <= (*p) && (*p) <= 53 ) goto st249; goto st0; st266: if ( ++p == pe ) goto _test_eof266; case 266: if ( (*p) == 58 ) goto st269; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st267; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st267; } else goto st267; goto st0; st267: if ( ++p == pe ) goto _test_eof267; case 267: if ( (*p) == 58 ) goto st269; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st268; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st268; } else goto st268; goto st0; st268: if ( ++p == pe ) goto _test_eof268; case 268: if ( (*p) == 58 ) goto st269; goto st0; st269: if ( ++p == pe ) goto _test_eof269; case 269: if ( (*p) == 58 ) goto st253; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st270; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st270; } else goto st270; goto st0; st270: if ( ++p == pe ) goto _test_eof270; case 270: if ( (*p) == 32 ) goto tr281; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st271; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st271; } else goto st271; goto st0; st271: if ( ++p == pe ) goto _test_eof271; case 271: if ( (*p) == 32 ) goto tr281; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st272; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st272; } else goto st272; goto st0; st272: if ( ++p == pe ) goto _test_eof272; case 272: if ( (*p) == 32 ) goto tr281; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st253; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st253; } else goto st253; goto st0; st273: if ( ++p == pe ) goto _test_eof273; case 273: switch( (*p) ) { case 46: goto st248; case 58: goto st269; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st274; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st266; } else goto st266; goto st0; st274: if ( ++p == pe ) goto _test_eof274; case 274: switch( (*p) ) { case 46: goto st248; case 58: goto st269; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st275; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st267; } else goto st267; goto st0; st275: if ( ++p == pe ) goto _test_eof275; case 275: switch( (*p) ) { case 46: goto st248; case 58: goto st269; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st268; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st268; } else goto st268; goto st0; st276: if ( ++p == pe ) goto _test_eof276; case 276: switch( (*p) ) { case 46: goto st248; case 53: goto st277; case 58: goto st269; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st274; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st266; } else if ( (*p) >= 65 ) goto st266; } else goto st278; goto st0; st277: if ( ++p == pe ) goto _test_eof277; case 277: switch( (*p) ) { case 46: goto st248; case 58: goto st269; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st275; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st267; } else if ( (*p) >= 65 ) goto st267; } else goto st267; goto st0; st278: if ( ++p == pe ) goto _test_eof278; case 278: switch( (*p) ) { case 46: goto st248; case 58: goto st269; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st267; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st267; } else goto st267; goto st0; st279: if ( ++p == pe ) goto _test_eof279; case 279: switch( (*p) ) { case 46: goto st248; case 58: goto st269; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st278; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st266; } else goto st266; goto st0; st280: if ( ++p == pe ) goto _test_eof280; case 280: if ( (*p) == 32 ) goto tr281; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st270; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st270; } else goto st270; goto st0; st281: if ( ++p == pe ) goto _test_eof281; case 281: if ( (*p) == 58 ) goto st269; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st266; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st266; } else goto st266; goto st0; st282: if ( ++p == pe ) goto _test_eof282; case 282: switch( (*p) ) { case 32: goto tr281; case 48: goto st283; case 49: goto st288; case 50: goto st291; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st294; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st295; } else goto st295; goto st0; st283: if ( ++p == pe ) goto _test_eof283; case 283: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st287; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st284; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st284; } else goto st284; goto st0; st284: if ( ++p == pe ) goto _test_eof284; case 284: switch( (*p) ) { case 32: goto tr281; case 58: goto st287; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st285; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st285; } else goto st285; goto st0; st285: if ( ++p == pe ) goto _test_eof285; case 285: switch( (*p) ) { case 32: goto tr281; case 58: goto st287; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st286; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st286; } else goto st286; goto st0; st286: if ( ++p == pe ) goto _test_eof286; case 286: switch( (*p) ) { case 32: goto tr281; case 58: goto st287; } goto st0; st287: if ( ++p == pe ) goto _test_eof287; case 287: if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st270; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st270; } else goto st270; goto st0; st288: if ( ++p == pe ) goto _test_eof288; case 288: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st287; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st289; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st284; } else goto st284; goto st0; st289: if ( ++p == pe ) goto _test_eof289; case 289: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st287; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st290; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st285; } else goto st285; goto st0; st290: if ( ++p == pe ) goto _test_eof290; case 290: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st287; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st286; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st286; } else goto st286; goto st0; st291: if ( ++p == pe ) goto _test_eof291; case 291: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 53: goto st292; case 58: goto st287; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st289; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st284; } else if ( (*p) >= 65 ) goto st284; } else goto st293; goto st0; st292: if ( ++p == pe ) goto _test_eof292; case 292: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st287; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st290; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st285; } else if ( (*p) >= 65 ) goto st285; } else goto st285; goto st0; st293: if ( ++p == pe ) goto _test_eof293; case 293: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st287; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st285; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st285; } else goto st285; goto st0; st294: if ( ++p == pe ) goto _test_eof294; case 294: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st287; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st293; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st284; } else goto st284; goto st0; st295: if ( ++p == pe ) goto _test_eof295; case 295: switch( (*p) ) { case 32: goto tr281; case 58: goto st287; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st284; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st284; } else goto st284; goto st0; st296: if ( ++p == pe ) goto _test_eof296; case 296: switch( (*p) ) { case 32: goto tr281; case 48: goto st297; case 49: goto st302; case 50: goto st305; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st308; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st309; } else goto st309; goto st0; st297: if ( ++p == pe ) goto _test_eof297; case 297: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st301; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st298; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st298; } else goto st298; goto st0; st298: if ( ++p == pe ) goto _test_eof298; case 298: switch( (*p) ) { case 32: goto tr281; case 58: goto st301; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st299; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st299; } else goto st299; goto st0; st299: if ( ++p == pe ) goto _test_eof299; case 299: switch( (*p) ) { case 32: goto tr281; case 58: goto st301; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st300; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st300; } else goto st300; goto st0; st300: if ( ++p == pe ) goto _test_eof300; case 300: switch( (*p) ) { case 32: goto tr281; case 58: goto st301; } goto st0; st301: if ( ++p == pe ) goto _test_eof301; case 301: switch( (*p) ) { case 48: goto st283; case 49: goto st288; case 50: goto st291; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st294; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st295; } else goto st295; goto st0; st302: if ( ++p == pe ) goto _test_eof302; case 302: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st301; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st303; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st298; } else goto st298; goto st0; st303: if ( ++p == pe ) goto _test_eof303; case 303: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st301; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st304; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st299; } else goto st299; goto st0; st304: if ( ++p == pe ) goto _test_eof304; case 304: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st301; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st300; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st300; } else goto st300; goto st0; st305: if ( ++p == pe ) goto _test_eof305; case 305: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 53: goto st306; case 58: goto st301; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st303; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st298; } else if ( (*p) >= 65 ) goto st298; } else goto st307; goto st0; st306: if ( ++p == pe ) goto _test_eof306; case 306: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st301; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st304; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st299; } else if ( (*p) >= 65 ) goto st299; } else goto st299; goto st0; st307: if ( ++p == pe ) goto _test_eof307; case 307: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st301; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st299; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st299; } else goto st299; goto st0; st308: if ( ++p == pe ) goto _test_eof308; case 308: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st301; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st307; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st298; } else goto st298; goto st0; st309: if ( ++p == pe ) goto _test_eof309; case 309: switch( (*p) ) { case 32: goto tr281; case 58: goto st301; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st298; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st298; } else goto st298; goto st0; st310: if ( ++p == pe ) goto _test_eof310; case 310: switch( (*p) ) { case 32: goto tr281; case 48: goto st311; case 49: goto st316; case 50: goto st319; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st322; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st323; } else goto st323; goto st0; st311: if ( ++p == pe ) goto _test_eof311; case 311: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st315; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st312; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st312; } else goto st312; goto st0; st312: if ( ++p == pe ) goto _test_eof312; case 312: switch( (*p) ) { case 32: goto tr281; case 58: goto st315; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st313; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st313; } else goto st313; goto st0; st313: if ( ++p == pe ) goto _test_eof313; case 313: switch( (*p) ) { case 32: goto tr281; case 58: goto st315; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st314; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st314; } else goto st314; goto st0; st314: if ( ++p == pe ) goto _test_eof314; case 314: switch( (*p) ) { case 32: goto tr281; case 58: goto st315; } goto st0; st315: if ( ++p == pe ) goto _test_eof315; case 315: switch( (*p) ) { case 48: goto st297; case 49: goto st302; case 50: goto st305; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st308; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st309; } else goto st309; goto st0; st316: if ( ++p == pe ) goto _test_eof316; case 316: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st315; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st317; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st312; } else goto st312; goto st0; st317: if ( ++p == pe ) goto _test_eof317; case 317: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st315; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st318; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st313; } else goto st313; goto st0; st318: if ( ++p == pe ) goto _test_eof318; case 318: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st315; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st314; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st314; } else goto st314; goto st0; st319: if ( ++p == pe ) goto _test_eof319; case 319: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 53: goto st320; case 58: goto st315; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st317; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st312; } else if ( (*p) >= 65 ) goto st312; } else goto st321; goto st0; st320: if ( ++p == pe ) goto _test_eof320; case 320: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st315; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st318; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st313; } else if ( (*p) >= 65 ) goto st313; } else goto st313; goto st0; st321: if ( ++p == pe ) goto _test_eof321; case 321: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st315; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st313; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st313; } else goto st313; goto st0; st322: if ( ++p == pe ) goto _test_eof322; case 322: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st315; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st321; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st312; } else goto st312; goto st0; st323: if ( ++p == pe ) goto _test_eof323; case 323: switch( (*p) ) { case 32: goto tr281; case 58: goto st315; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st312; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st312; } else goto st312; goto st0; st324: if ( ++p == pe ) goto _test_eof324; case 324: switch( (*p) ) { case 32: goto tr281; case 48: goto st325; case 49: goto st330; case 50: goto st333; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st336; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st337; } else goto st337; goto st0; st325: if ( ++p == pe ) goto _test_eof325; case 325: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st329; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st326; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st326; } else goto st326; goto st0; st326: if ( ++p == pe ) goto _test_eof326; case 326: switch( (*p) ) { case 32: goto tr281; case 58: goto st329; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st327; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st327; } else goto st327; goto st0; st327: if ( ++p == pe ) goto _test_eof327; case 327: switch( (*p) ) { case 32: goto tr281; case 58: goto st329; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st328; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st328; } else goto st328; goto st0; st328: if ( ++p == pe ) goto _test_eof328; case 328: switch( (*p) ) { case 32: goto tr281; case 58: goto st329; } goto st0; st329: if ( ++p == pe ) goto _test_eof329; case 329: switch( (*p) ) { case 48: goto st311; case 49: goto st316; case 50: goto st319; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st322; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st323; } else goto st323; goto st0; st330: if ( ++p == pe ) goto _test_eof330; case 330: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st329; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st331; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st326; } else goto st326; goto st0; st331: if ( ++p == pe ) goto _test_eof331; case 331: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st329; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st332; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st327; } else goto st327; goto st0; st332: if ( ++p == pe ) goto _test_eof332; case 332: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st329; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st328; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st328; } else goto st328; goto st0; st333: if ( ++p == pe ) goto _test_eof333; case 333: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 53: goto st334; case 58: goto st329; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st331; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st326; } else if ( (*p) >= 65 ) goto st326; } else goto st335; goto st0; st334: if ( ++p == pe ) goto _test_eof334; case 334: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st329; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st332; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st327; } else if ( (*p) >= 65 ) goto st327; } else goto st327; goto st0; st335: if ( ++p == pe ) goto _test_eof335; case 335: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st329; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st327; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st327; } else goto st327; goto st0; st336: if ( ++p == pe ) goto _test_eof336; case 336: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st329; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st335; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st326; } else goto st326; goto st0; st337: if ( ++p == pe ) goto _test_eof337; case 337: switch( (*p) ) { case 32: goto tr281; case 58: goto st329; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st326; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st326; } else goto st326; goto st0; st338: if ( ++p == pe ) goto _test_eof338; case 338: switch( (*p) ) { case 32: goto tr281; case 48: goto st339; case 49: goto st344; case 50: goto st347; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st350; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st351; } else goto st351; goto st0; st339: if ( ++p == pe ) goto _test_eof339; case 339: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st343; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st340; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st340; } else goto st340; goto st0; st340: if ( ++p == pe ) goto _test_eof340; case 340: switch( (*p) ) { case 32: goto tr281; case 58: goto st343; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st341; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st341; } else goto st341; goto st0; st341: if ( ++p == pe ) goto _test_eof341; case 341: switch( (*p) ) { case 32: goto tr281; case 58: goto st343; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st342; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st342; } else goto st342; goto st0; st342: if ( ++p == pe ) goto _test_eof342; case 342: switch( (*p) ) { case 32: goto tr281; case 58: goto st343; } goto st0; st343: if ( ++p == pe ) goto _test_eof343; case 343: switch( (*p) ) { case 48: goto st325; case 49: goto st330; case 50: goto st333; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st336; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st337; } else goto st337; goto st0; st344: if ( ++p == pe ) goto _test_eof344; case 344: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st343; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st345; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st340; } else goto st340; goto st0; st345: if ( ++p == pe ) goto _test_eof345; case 345: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st343; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st346; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st341; } else goto st341; goto st0; st346: if ( ++p == pe ) goto _test_eof346; case 346: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st343; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st342; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st342; } else goto st342; goto st0; st347: if ( ++p == pe ) goto _test_eof347; case 347: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 53: goto st348; case 58: goto st343; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st345; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st340; } else if ( (*p) >= 65 ) goto st340; } else goto st349; goto st0; st348: if ( ++p == pe ) goto _test_eof348; case 348: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st343; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st346; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st341; } else if ( (*p) >= 65 ) goto st341; } else goto st341; goto st0; st349: if ( ++p == pe ) goto _test_eof349; case 349: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st343; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st341; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st341; } else goto st341; goto st0; st350: if ( ++p == pe ) goto _test_eof350; case 350: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st343; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st349; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st340; } else goto st340; goto st0; st351: if ( ++p == pe ) goto _test_eof351; case 351: switch( (*p) ) { case 32: goto tr281; case 58: goto st343; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st340; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st340; } else goto st340; goto st0; tr13: #line 19 "haproxy_protocol.rl" { haproxy_protocol.ip_s = (size_t)p; } goto st352; st352: if ( ++p == pe ) goto _test_eof352; case 352: #line 5353 "haproxy_protocol.c" switch( (*p) ) { case 46: goto st14; case 58: goto st221; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st353; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st218; } else goto st218; goto st0; st353: if ( ++p == pe ) goto _test_eof353; case 353: switch( (*p) ) { case 46: goto st14; case 58: goto st221; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st354; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st219; } else goto st219; goto st0; st354: if ( ++p == pe ) goto _test_eof354; case 354: switch( (*p) ) { case 46: goto st14; case 58: goto st221; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st220; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st220; } else goto st220; goto st0; tr14: #line 19 "haproxy_protocol.rl" { haproxy_protocol.ip_s = (size_t)p; } goto st355; st355: if ( ++p == pe ) goto _test_eof355; case 355: #line 5411 "haproxy_protocol.c" switch( (*p) ) { case 46: goto st14; case 53: goto st356; case 58: goto st221; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st353; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st218; } else if ( (*p) >= 65 ) goto st218; } else goto st357; goto st0; st356: if ( ++p == pe ) goto _test_eof356; case 356: switch( (*p) ) { case 46: goto st14; case 58: goto st221; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st354; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st219; } else if ( (*p) >= 65 ) goto st219; } else goto st219; goto st0; st357: if ( ++p == pe ) goto _test_eof357; case 357: switch( (*p) ) { case 46: goto st14; case 58: goto st221; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st219; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st219; } else goto st219; goto st0; tr15: #line 19 "haproxy_protocol.rl" { haproxy_protocol.ip_s = (size_t)p; } goto st358; st358: if ( ++p == pe ) goto _test_eof358; case 358: #line 5476 "haproxy_protocol.c" switch( (*p) ) { case 46: goto st14; case 58: goto st221; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st357; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st218; } else goto st218; goto st0; tr16: #line 19 "haproxy_protocol.rl" { haproxy_protocol.ip_s = (size_t)p; } goto st359; st359: if ( ++p == pe ) goto _test_eof359; case 359: #line 5500 "haproxy_protocol.c" if ( (*p) == 58 ) goto st360; goto st0; st360: if ( ++p == pe ) goto _test_eof360; case 360: switch( (*p) ) { case 32: goto tr281; case 48: goto st361; case 49: goto st366; case 50: goto st369; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st372; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st373; } else goto st373; goto st0; st361: if ( ++p == pe ) goto _test_eof361; case 361: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st365; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st362; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st362; } else goto st362; goto st0; st362: if ( ++p == pe ) goto _test_eof362; case 362: switch( (*p) ) { case 32: goto tr281; case 58: goto st365; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st363; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st363; } else goto st363; goto st0; st363: if ( ++p == pe ) goto _test_eof363; case 363: switch( (*p) ) { case 32: goto tr281; case 58: goto st365; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st364; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st364; } else goto st364; goto st0; st364: if ( ++p == pe ) goto _test_eof364; case 364: switch( (*p) ) { case 32: goto tr281; case 58: goto st365; } goto st0; st365: if ( ++p == pe ) goto _test_eof365; case 365: switch( (*p) ) { case 48: goto st339; case 49: goto st344; case 50: goto st347; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st350; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st351; } else goto st351; goto st0; st366: if ( ++p == pe ) goto _test_eof366; case 366: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st365; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st367; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st362; } else goto st362; goto st0; st367: if ( ++p == pe ) goto _test_eof367; case 367: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st365; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st368; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st363; } else goto st363; goto st0; st368: if ( ++p == pe ) goto _test_eof368; case 368: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st365; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st364; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st364; } else goto st364; goto st0; st369: if ( ++p == pe ) goto _test_eof369; case 369: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 53: goto st370; case 58: goto st365; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st367; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st362; } else if ( (*p) >= 65 ) goto st362; } else goto st371; goto st0; st370: if ( ++p == pe ) goto _test_eof370; case 370: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st365; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st368; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st363; } else if ( (*p) >= 65 ) goto st363; } else goto st363; goto st0; st371: if ( ++p == pe ) goto _test_eof371; case 371: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st365; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st363; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st363; } else goto st363; goto st0; st372: if ( ++p == pe ) goto _test_eof372; case 372: switch( (*p) ) { case 32: goto tr281; case 46: goto st248; case 58: goto st365; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st371; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st362; } else goto st362; goto st0; st373: if ( ++p == pe ) goto _test_eof373; case 373: switch( (*p) ) { case 32: goto tr281; case 58: goto st365; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st362; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st362; } else goto st362; goto st0; tr17: #line 19 "haproxy_protocol.rl" { haproxy_protocol.ip_s = (size_t)p; } goto st374; st374: if ( ++p == pe ) goto _test_eof374; case 374: #line 5762 "haproxy_protocol.c" if ( (*p) == 58 ) goto st221; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st218; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st218; } else goto st218; goto st0; } _test_eof2: cs = 2; goto _test_eof; _test_eof3: cs = 3; goto _test_eof; _test_eof4: cs = 4; goto _test_eof; _test_eof5: cs = 5; goto _test_eof; _test_eof6: cs = 6; goto _test_eof; _test_eof7: cs = 7; goto _test_eof; _test_eof8: cs = 8; goto _test_eof; _test_eof9: cs = 9; goto _test_eof; _test_eof10: cs = 10; goto _test_eof; _test_eof11: cs = 11; goto _test_eof; _test_eof12: cs = 12; goto _test_eof; _test_eof13: cs = 13; goto _test_eof; _test_eof14: cs = 14; goto _test_eof; _test_eof15: cs = 15; goto _test_eof; _test_eof16: cs = 16; goto _test_eof; _test_eof17: cs = 17; goto _test_eof; _test_eof18: cs = 18; goto _test_eof; _test_eof19: cs = 19; goto _test_eof; _test_eof20: cs = 20; goto _test_eof; _test_eof21: cs = 21; goto _test_eof; _test_eof22: cs = 22; goto _test_eof; _test_eof23: cs = 23; goto _test_eof; _test_eof24: cs = 24; goto _test_eof; _test_eof25: cs = 25; goto _test_eof; _test_eof26: cs = 26; goto _test_eof; _test_eof27: cs = 27; goto _test_eof; _test_eof28: cs = 28; goto _test_eof; _test_eof29: cs = 29; goto _test_eof; _test_eof30: cs = 30; goto _test_eof; _test_eof31: cs = 31; goto _test_eof; _test_eof32: cs = 32; goto _test_eof; _test_eof33: cs = 33; goto _test_eof; _test_eof34: cs = 34; goto _test_eof; _test_eof35: cs = 35; goto _test_eof; _test_eof36: cs = 36; goto _test_eof; _test_eof37: cs = 37; goto _test_eof; _test_eof38: cs = 38; goto _test_eof; _test_eof375: cs = 375; goto _test_eof; _test_eof39: cs = 39; goto _test_eof; _test_eof40: cs = 40; goto _test_eof; _test_eof41: cs = 41; goto _test_eof; _test_eof42: cs = 42; goto _test_eof; _test_eof43: cs = 43; goto _test_eof; _test_eof44: cs = 44; goto _test_eof; _test_eof45: cs = 45; goto _test_eof; _test_eof46: cs = 46; goto _test_eof; _test_eof47: cs = 47; goto _test_eof; _test_eof48: cs = 48; goto _test_eof; _test_eof49: cs = 49; goto _test_eof; _test_eof50: cs = 50; goto _test_eof; _test_eof51: cs = 51; goto _test_eof; _test_eof52: cs = 52; goto _test_eof; _test_eof53: cs = 53; goto _test_eof; _test_eof54: cs = 54; goto _test_eof; _test_eof55: cs = 55; goto _test_eof; _test_eof56: cs = 56; goto _test_eof; _test_eof57: cs = 57; goto _test_eof; _test_eof58: cs = 58; goto _test_eof; _test_eof59: cs = 59; goto _test_eof; _test_eof60: cs = 60; goto _test_eof; _test_eof61: cs = 61; goto _test_eof; _test_eof62: cs = 62; goto _test_eof; _test_eof63: cs = 63; goto _test_eof; _test_eof64: cs = 64; goto _test_eof; _test_eof65: cs = 65; goto _test_eof; _test_eof66: cs = 66; goto _test_eof; _test_eof67: cs = 67; goto _test_eof; _test_eof68: cs = 68; goto _test_eof; _test_eof69: cs = 69; goto _test_eof; _test_eof70: cs = 70; goto _test_eof; _test_eof71: cs = 71; goto _test_eof; _test_eof72: cs = 72; goto _test_eof; _test_eof73: cs = 73; goto _test_eof; _test_eof74: cs = 74; goto _test_eof; _test_eof75: cs = 75; goto _test_eof; _test_eof76: cs = 76; goto _test_eof; _test_eof77: cs = 77; goto _test_eof; _test_eof78: cs = 78; goto _test_eof; _test_eof79: cs = 79; goto _test_eof; _test_eof80: cs = 80; goto _test_eof; _test_eof81: cs = 81; goto _test_eof; _test_eof82: cs = 82; goto _test_eof; _test_eof83: cs = 83; goto _test_eof; _test_eof84: cs = 84; goto _test_eof; _test_eof85: cs = 85; goto _test_eof; _test_eof86: cs = 86; goto _test_eof; _test_eof87: cs = 87; goto _test_eof; _test_eof88: cs = 88; goto _test_eof; _test_eof89: cs = 89; goto _test_eof; _test_eof90: cs = 90; goto _test_eof; _test_eof91: cs = 91; goto _test_eof; _test_eof92: cs = 92; goto _test_eof; _test_eof93: cs = 93; goto _test_eof; _test_eof94: cs = 94; goto _test_eof; _test_eof95: cs = 95; goto _test_eof; _test_eof96: cs = 96; goto _test_eof; _test_eof97: cs = 97; goto _test_eof; _test_eof98: cs = 98; goto _test_eof; _test_eof99: cs = 99; goto _test_eof; _test_eof100: cs = 100; goto _test_eof; _test_eof101: cs = 101; goto _test_eof; _test_eof102: cs = 102; goto _test_eof; _test_eof103: cs = 103; goto _test_eof; _test_eof104: cs = 104; goto _test_eof; _test_eof105: cs = 105; goto _test_eof; _test_eof106: cs = 106; goto _test_eof; _test_eof107: cs = 107; goto _test_eof; _test_eof108: cs = 108; goto _test_eof; _test_eof109: cs = 109; goto _test_eof; _test_eof110: cs = 110; goto _test_eof; _test_eof111: cs = 111; goto _test_eof; _test_eof112: cs = 112; goto _test_eof; _test_eof113: cs = 113; goto _test_eof; _test_eof114: cs = 114; goto _test_eof; _test_eof115: cs = 115; goto _test_eof; _test_eof116: cs = 116; goto _test_eof; _test_eof117: cs = 117; goto _test_eof; _test_eof118: cs = 118; goto _test_eof; _test_eof119: cs = 119; goto _test_eof; _test_eof120: cs = 120; goto _test_eof; _test_eof121: cs = 121; goto _test_eof; _test_eof122: cs = 122; goto _test_eof; _test_eof123: cs = 123; goto _test_eof; _test_eof124: cs = 124; goto _test_eof; _test_eof125: cs = 125; goto _test_eof; _test_eof126: cs = 126; goto _test_eof; _test_eof127: cs = 127; goto _test_eof; _test_eof128: cs = 128; goto _test_eof; _test_eof129: cs = 129; goto _test_eof; _test_eof130: cs = 130; goto _test_eof; _test_eof131: cs = 131; goto _test_eof; _test_eof132: cs = 132; goto _test_eof; _test_eof133: cs = 133; goto _test_eof; _test_eof134: cs = 134; goto _test_eof; _test_eof135: cs = 135; goto _test_eof; _test_eof136: cs = 136; goto _test_eof; _test_eof137: cs = 137; goto _test_eof; _test_eof138: cs = 138; goto _test_eof; _test_eof139: cs = 139; goto _test_eof; _test_eof140: cs = 140; goto _test_eof; _test_eof141: cs = 141; goto _test_eof; _test_eof142: cs = 142; goto _test_eof; _test_eof143: cs = 143; goto _test_eof; _test_eof144: cs = 144; goto _test_eof; _test_eof145: cs = 145; goto _test_eof; _test_eof146: cs = 146; goto _test_eof; _test_eof147: cs = 147; goto _test_eof; _test_eof148: cs = 148; goto _test_eof; _test_eof149: cs = 149; goto _test_eof; _test_eof150: cs = 150; goto _test_eof; _test_eof151: cs = 151; goto _test_eof; _test_eof152: cs = 152; goto _test_eof; _test_eof153: cs = 153; goto _test_eof; _test_eof154: cs = 154; goto _test_eof; _test_eof155: cs = 155; goto _test_eof; _test_eof156: cs = 156; goto _test_eof; _test_eof157: cs = 157; goto _test_eof; _test_eof158: cs = 158; goto _test_eof; _test_eof159: cs = 159; goto _test_eof; _test_eof160: cs = 160; goto _test_eof; _test_eof161: cs = 161; goto _test_eof; _test_eof162: cs = 162; goto _test_eof; _test_eof163: cs = 163; goto _test_eof; _test_eof164: cs = 164; goto _test_eof; _test_eof165: cs = 165; goto _test_eof; _test_eof166: cs = 166; goto _test_eof; _test_eof167: cs = 167; goto _test_eof; _test_eof168: cs = 168; goto _test_eof; _test_eof169: cs = 169; goto _test_eof; _test_eof170: cs = 170; goto _test_eof; _test_eof171: cs = 171; goto _test_eof; _test_eof172: cs = 172; goto _test_eof; _test_eof173: cs = 173; goto _test_eof; _test_eof174: cs = 174; goto _test_eof; _test_eof175: cs = 175; goto _test_eof; _test_eof176: cs = 176; goto _test_eof; _test_eof177: cs = 177; goto _test_eof; _test_eof178: cs = 178; goto _test_eof; _test_eof179: cs = 179; goto _test_eof; _test_eof180: cs = 180; goto _test_eof; _test_eof181: cs = 181; goto _test_eof; _test_eof182: cs = 182; goto _test_eof; _test_eof183: cs = 183; goto _test_eof; _test_eof184: cs = 184; goto _test_eof; _test_eof185: cs = 185; goto _test_eof; _test_eof186: cs = 186; goto _test_eof; _test_eof187: cs = 187; goto _test_eof; _test_eof188: cs = 188; goto _test_eof; _test_eof189: cs = 189; goto _test_eof; _test_eof190: cs = 190; goto _test_eof; _test_eof191: cs = 191; goto _test_eof; _test_eof192: cs = 192; goto _test_eof; _test_eof193: cs = 193; goto _test_eof; _test_eof194: cs = 194; goto _test_eof; _test_eof195: cs = 195; goto _test_eof; _test_eof196: cs = 196; goto _test_eof; _test_eof197: cs = 197; goto _test_eof; _test_eof198: cs = 198; goto _test_eof; _test_eof199: cs = 199; goto _test_eof; _test_eof200: cs = 200; goto _test_eof; _test_eof201: cs = 201; goto _test_eof; _test_eof202: cs = 202; goto _test_eof; _test_eof203: cs = 203; goto _test_eof; _test_eof204: cs = 204; goto _test_eof; _test_eof205: cs = 205; goto _test_eof; _test_eof206: cs = 206; goto _test_eof; _test_eof207: cs = 207; goto _test_eof; _test_eof208: cs = 208; goto _test_eof; _test_eof209: cs = 209; goto _test_eof; _test_eof210: cs = 210; goto _test_eof; _test_eof211: cs = 211; goto _test_eof; _test_eof212: cs = 212; goto _test_eof; _test_eof213: cs = 213; goto _test_eof; _test_eof214: cs = 214; goto _test_eof; _test_eof215: cs = 215; goto _test_eof; _test_eof216: cs = 216; goto _test_eof; _test_eof217: cs = 217; goto _test_eof; _test_eof218: cs = 218; goto _test_eof; _test_eof219: cs = 219; goto _test_eof; _test_eof220: cs = 220; goto _test_eof; _test_eof221: cs = 221; goto _test_eof; _test_eof222: cs = 222; goto _test_eof; _test_eof223: cs = 223; goto _test_eof; _test_eof224: cs = 224; goto _test_eof; _test_eof225: cs = 225; goto _test_eof; _test_eof226: cs = 226; goto _test_eof; _test_eof227: cs = 227; goto _test_eof; _test_eof228: cs = 228; goto _test_eof; _test_eof229: cs = 229; goto _test_eof; _test_eof230: cs = 230; goto _test_eof; _test_eof231: cs = 231; goto _test_eof; _test_eof232: cs = 232; goto _test_eof; _test_eof233: cs = 233; goto _test_eof; _test_eof234: cs = 234; goto _test_eof; _test_eof235: cs = 235; goto _test_eof; _test_eof236: cs = 236; goto _test_eof; _test_eof237: cs = 237; goto _test_eof; _test_eof238: cs = 238; goto _test_eof; _test_eof239: cs = 239; goto _test_eof; _test_eof240: cs = 240; goto _test_eof; _test_eof241: cs = 241; goto _test_eof; _test_eof242: cs = 242; goto _test_eof; _test_eof243: cs = 243; goto _test_eof; _test_eof244: cs = 244; goto _test_eof; _test_eof245: cs = 245; goto _test_eof; _test_eof246: cs = 246; goto _test_eof; _test_eof247: cs = 247; goto _test_eof; _test_eof248: cs = 248; goto _test_eof; _test_eof249: cs = 249; goto _test_eof; _test_eof250: cs = 250; goto _test_eof; _test_eof251: cs = 251; goto _test_eof; _test_eof252: cs = 252; goto _test_eof; _test_eof253: cs = 253; goto _test_eof; _test_eof254: cs = 254; goto _test_eof; _test_eof255: cs = 255; goto _test_eof; _test_eof256: cs = 256; goto _test_eof; _test_eof257: cs = 257; goto _test_eof; _test_eof258: cs = 258; goto _test_eof; _test_eof259: cs = 259; goto _test_eof; _test_eof260: cs = 260; goto _test_eof; _test_eof261: cs = 261; goto _test_eof; _test_eof262: cs = 262; goto _test_eof; _test_eof263: cs = 263; goto _test_eof; _test_eof264: cs = 264; goto _test_eof; _test_eof265: cs = 265; goto _test_eof; _test_eof266: cs = 266; goto _test_eof; _test_eof267: cs = 267; goto _test_eof; _test_eof268: cs = 268; goto _test_eof; _test_eof269: cs = 269; goto _test_eof; _test_eof270: cs = 270; goto _test_eof; _test_eof271: cs = 271; goto _test_eof; _test_eof272: cs = 272; goto _test_eof; _test_eof273: cs = 273; goto _test_eof; _test_eof274: cs = 274; goto _test_eof; _test_eof275: cs = 275; goto _test_eof; _test_eof276: cs = 276; goto _test_eof; _test_eof277: cs = 277; goto _test_eof; _test_eof278: cs = 278; goto _test_eof; _test_eof279: cs = 279; goto _test_eof; _test_eof280: cs = 280; goto _test_eof; _test_eof281: cs = 281; goto _test_eof; _test_eof282: cs = 282; goto _test_eof; _test_eof283: cs = 283; goto _test_eof; _test_eof284: cs = 284; goto _test_eof; _test_eof285: cs = 285; goto _test_eof; _test_eof286: cs = 286; goto _test_eof; _test_eof287: cs = 287; goto _test_eof; _test_eof288: cs = 288; goto _test_eof; _test_eof289: cs = 289; goto _test_eof; _test_eof290: cs = 290; goto _test_eof; _test_eof291: cs = 291; goto _test_eof; _test_eof292: cs = 292; goto _test_eof; _test_eof293: cs = 293; goto _test_eof; _test_eof294: cs = 294; goto _test_eof; _test_eof295: cs = 295; goto _test_eof; _test_eof296: cs = 296; goto _test_eof; _test_eof297: cs = 297; goto _test_eof; _test_eof298: cs = 298; goto _test_eof; _test_eof299: cs = 299; goto _test_eof; _test_eof300: cs = 300; goto _test_eof; _test_eof301: cs = 301; goto _test_eof; _test_eof302: cs = 302; goto _test_eof; _test_eof303: cs = 303; goto _test_eof; _test_eof304: cs = 304; goto _test_eof; _test_eof305: cs = 305; goto _test_eof; _test_eof306: cs = 306; goto _test_eof; _test_eof307: cs = 307; goto _test_eof; _test_eof308: cs = 308; goto _test_eof; _test_eof309: cs = 309; goto _test_eof; _test_eof310: cs = 310; goto _test_eof; _test_eof311: cs = 311; goto _test_eof; _test_eof312: cs = 312; goto _test_eof; _test_eof313: cs = 313; goto _test_eof; _test_eof314: cs = 314; goto _test_eof; _test_eof315: cs = 315; goto _test_eof; _test_eof316: cs = 316; goto _test_eof; _test_eof317: cs = 317; goto _test_eof; _test_eof318: cs = 318; goto _test_eof; _test_eof319: cs = 319; goto _test_eof; _test_eof320: cs = 320; goto _test_eof; _test_eof321: cs = 321; goto _test_eof; _test_eof322: cs = 322; goto _test_eof; _test_eof323: cs = 323; goto _test_eof; _test_eof324: cs = 324; goto _test_eof; _test_eof325: cs = 325; goto _test_eof; _test_eof326: cs = 326; goto _test_eof; _test_eof327: cs = 327; goto _test_eof; _test_eof328: cs = 328; goto _test_eof; _test_eof329: cs = 329; goto _test_eof; _test_eof330: cs = 330; goto _test_eof; _test_eof331: cs = 331; goto _test_eof; _test_eof332: cs = 332; goto _test_eof; _test_eof333: cs = 333; goto _test_eof; _test_eof334: cs = 334; goto _test_eof; _test_eof335: cs = 335; goto _test_eof; _test_eof336: cs = 336; goto _test_eof; _test_eof337: cs = 337; goto _test_eof; _test_eof338: cs = 338; goto _test_eof; _test_eof339: cs = 339; goto _test_eof; _test_eof340: cs = 340; goto _test_eof; _test_eof341: cs = 341; goto _test_eof; _test_eof342: cs = 342; goto _test_eof; _test_eof343: cs = 343; goto _test_eof; _test_eof344: cs = 344; goto _test_eof; _test_eof345: cs = 345; goto _test_eof; _test_eof346: cs = 346; goto _test_eof; _test_eof347: cs = 347; goto _test_eof; _test_eof348: cs = 348; goto _test_eof; _test_eof349: cs = 349; goto _test_eof; _test_eof350: cs = 350; goto _test_eof; _test_eof351: cs = 351; goto _test_eof; _test_eof352: cs = 352; goto _test_eof; _test_eof353: cs = 353; goto _test_eof; _test_eof354: cs = 354; goto _test_eof; _test_eof355: cs = 355; goto _test_eof; _test_eof356: cs = 356; goto _test_eof; _test_eof357: cs = 357; goto _test_eof; _test_eof358: cs = 358; goto _test_eof; _test_eof359: cs = 359; goto _test_eof; _test_eof360: cs = 360; goto _test_eof; _test_eof361: cs = 361; goto _test_eof; _test_eof362: cs = 362; goto _test_eof; _test_eof363: cs = 363; goto _test_eof; _test_eof364: cs = 364; goto _test_eof; _test_eof365: cs = 365; goto _test_eof; _test_eof366: cs = 366; goto _test_eof; _test_eof367: cs = 367; goto _test_eof; _test_eof368: cs = 368; goto _test_eof; _test_eof369: cs = 369; goto _test_eof; _test_eof370: cs = 370; goto _test_eof; _test_eof371: cs = 371; goto _test_eof; _test_eof372: cs = 372; goto _test_eof; _test_eof373: cs = 373; goto _test_eof; _test_eof374: cs = 374; goto _test_eof; _test_eof: {} _out: {} } #line 77 "haproxy_protocol.rl" if(finished) haproxy_protocol.valid = 1; /* Write the number of read bytes so the HAProxy Protocol line can be removed. */ haproxy_protocol.total_len = (int)(p - str); return haproxy_protocol; } ================================================ FILE: ext/utils/haproxy_protocol.h ================================================ #ifndef haproxy_protocol_h #define haproxy_protocol_h #include enum enum_haproxy_protocol_ip_type { haproxy_protocol_ip_type_ipv4 = 1, haproxy_protocol_ip_type_ipv6 }; typedef struct struct_haproxy_protocol { unsigned short int valid; unsigned short int total_len; enum enum_haproxy_protocol_ip_type ip_type; size_t ip_s; size_t ip_len; size_t port_s; size_t port_len; } struct_haproxy_protocol; struct_haproxy_protocol struct_haproxy_protocol_parser_execute(const char *str, size_t len); #endif ================================================ FILE: ext/utils/haproxy_protocol.rl ================================================ #include #include #include "haproxy_protocol.h" /** machine **/ %%{ machine utils_haproxy_protocol_parser; action is_ipv4 { haproxy_protocol.ip_type = haproxy_protocol_ip_type_ipv4; } action is_ipv6 { haproxy_protocol.ip_type = haproxy_protocol_ip_type_ipv6; } action start_ip { haproxy_protocol.ip_s = (size_t)fpc; } action end_ip { haproxy_protocol.ip_len = (size_t)fpc - haproxy_protocol.ip_s; } action start_port { haproxy_protocol.port_s = (size_t)fpc; } action end_port { haproxy_protocol.port_len = (size_t)fpc - haproxy_protocol.port_s + 1; } action done { finished = 1; } include grammar_ip "grammar_ip.rl"; main := "PROXY TCP" ( "4" | "6" ) " " ( IPv4address %is_ipv4 | IPv6address %is_ipv6 ) >start_ip %end_ip " " ( IPv4address | IPv6address ) " " port >start_port @end_port " " port "\r\n" @done; }%% /** Data **/ %% write data; /** exec **/ /* * Expects a string like "PROXY TCP4 192.168.0.1 192.168.0.11 56324 443\r\n". */ struct_haproxy_protocol struct_haproxy_protocol_parser_execute(const char *str, size_t len) { int cs = 0; const char *p, *pe; size_t mark; int finished = 0; struct_haproxy_protocol haproxy_protocol; p = str; pe = str+len; haproxy_protocol.valid = 0; haproxy_protocol.total_len = 0; haproxy_protocol.ip_s = 0; haproxy_protocol.ip_len = 0; haproxy_protocol.port_s = 0; haproxy_protocol.port_len = 0; %% write init; %% write exec; if(finished) haproxy_protocol.valid = 1; /* Write the number of read bytes so the HAProxy Protocol line can be removed. */ haproxy_protocol.total_len = (int)(p - str); return haproxy_protocol; } ================================================ FILE: ext/utils/ip_utils.c ================================================ #line 1 "ip_utils.rl" #include #include "ip_utils.h" /** machine **/ #line 29 "ip_utils.rl" /** Data **/ #line 15 "ip_utils.c" static const int utils_ip_parser_start = 1; static const int utils_ip_parser_first_final = 237; static const int utils_ip_parser_error = 0; static const int utils_ip_parser_en_main = 1; #line 33 "ip_utils.rl" /** exec **/ enum enum_ip_type utils_ip_parser_execute(const char *str, size_t len) { int cs = 0; const char *p, *pe; enum enum_ip_type ip_type = ip_type_error; p = str; pe = str+len; #line 37 "ip_utils.c" { cs = utils_ip_parser_start; } #line 46 "ip_utils.rl" #line 44 "ip_utils.c" { if ( p == pe ) goto _test_eof; switch ( cs ) { case 1: switch( (*p) ) { case 48: goto st2; case 49: goto st76; case 50: goto st79; case 58: goto st83; case 91: goto st86; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st82; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st85; } else goto st85; goto st0; st0: cs = 0; goto _out; st2: if ( ++p == pe ) goto _test_eof2; case 2: switch( (*p) ) { case 46: goto st3; case 58: goto st19; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st16; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st16; } else goto st16; goto st0; st3: if ( ++p == pe ) goto _test_eof3; case 3: switch( (*p) ) { case 48: goto st4; case 49: goto st12; case 50: goto st14; } if ( 51 <= (*p) && (*p) <= 57 ) goto st13; goto st0; st4: if ( ++p == pe ) goto _test_eof4; case 4: if ( (*p) == 46 ) goto st5; goto st0; st5: if ( ++p == pe ) goto _test_eof5; case 5: switch( (*p) ) { case 48: goto st6; case 49: goto st8; case 50: goto st10; } if ( 51 <= (*p) && (*p) <= 57 ) goto st9; goto st0; st6: if ( ++p == pe ) goto _test_eof6; case 6: if ( (*p) == 46 ) goto st7; goto st0; st7: if ( ++p == pe ) goto _test_eof7; case 7: switch( (*p) ) { case 48: goto tr21; case 49: goto tr22; case 50: goto tr23; } if ( 51 <= (*p) && (*p) <= 57 ) goto tr24; goto st0; tr21: #line 10 "ip_utils.rl" { ip_type = ip_type_ipv4; } goto st237; tr78: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st237; tr180: #line 18 "ip_utils.rl" { ip_type = ip_type_ipv6_reference; } goto st237; st237: if ( ++p == pe ) goto _test_eof237; case 237: #line 159 "ip_utils.c" goto st0; tr22: #line 10 "ip_utils.rl" { ip_type = ip_type_ipv4; } goto st238; st238: if ( ++p == pe ) goto _test_eof238; case 238: #line 171 "ip_utils.c" if ( 48 <= (*p) && (*p) <= 57 ) goto tr24; goto st0; tr24: #line 10 "ip_utils.rl" { ip_type = ip_type_ipv4; } goto st239; st239: if ( ++p == pe ) goto _test_eof239; case 239: #line 185 "ip_utils.c" if ( 48 <= (*p) && (*p) <= 57 ) goto tr21; goto st0; tr23: #line 10 "ip_utils.rl" { ip_type = ip_type_ipv4; } goto st240; st240: if ( ++p == pe ) goto _test_eof240; case 240: #line 199 "ip_utils.c" if ( (*p) == 53 ) goto tr272; if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto tr21; } else if ( (*p) >= 48 ) goto tr24; goto st0; tr272: #line 10 "ip_utils.rl" { ip_type = ip_type_ipv4; } goto st241; st241: if ( ++p == pe ) goto _test_eof241; case 241: #line 218 "ip_utils.c" if ( 48 <= (*p) && (*p) <= 53 ) goto tr21; goto st0; st8: if ( ++p == pe ) goto _test_eof8; case 8: if ( (*p) == 46 ) goto st7; if ( 48 <= (*p) && (*p) <= 57 ) goto st9; goto st0; st9: if ( ++p == pe ) goto _test_eof9; case 9: if ( (*p) == 46 ) goto st7; if ( 48 <= (*p) && (*p) <= 57 ) goto st6; goto st0; st10: if ( ++p == pe ) goto _test_eof10; case 10: switch( (*p) ) { case 46: goto st7; case 53: goto st11; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st6; } else if ( (*p) >= 48 ) goto st9; goto st0; st11: if ( ++p == pe ) goto _test_eof11; case 11: if ( (*p) == 46 ) goto st7; if ( 48 <= (*p) && (*p) <= 53 ) goto st6; goto st0; st12: if ( ++p == pe ) goto _test_eof12; case 12: if ( (*p) == 46 ) goto st5; if ( 48 <= (*p) && (*p) <= 57 ) goto st13; goto st0; st13: if ( ++p == pe ) goto _test_eof13; case 13: if ( (*p) == 46 ) goto st5; if ( 48 <= (*p) && (*p) <= 57 ) goto st4; goto st0; st14: if ( ++p == pe ) goto _test_eof14; case 14: switch( (*p) ) { case 46: goto st5; case 53: goto st15; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st4; } else if ( (*p) >= 48 ) goto st13; goto st0; st15: if ( ++p == pe ) goto _test_eof15; case 15: if ( (*p) == 46 ) goto st5; if ( 48 <= (*p) && (*p) <= 53 ) goto st4; goto st0; st16: if ( ++p == pe ) goto _test_eof16; case 16: if ( (*p) == 58 ) goto st19; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st17; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st17; } else goto st17; goto st0; st17: if ( ++p == pe ) goto _test_eof17; case 17: if ( (*p) == 58 ) goto st19; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st18; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st18; } else goto st18; goto st0; st18: if ( ++p == pe ) goto _test_eof18; case 18: if ( (*p) == 58 ) goto st19; goto st0; st19: if ( ++p == pe ) goto _test_eof19; case 19: if ( (*p) == 58 ) goto tr30; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st20; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st20; } else goto st20; goto st0; st20: if ( ++p == pe ) goto _test_eof20; case 20: if ( (*p) == 58 ) goto st24; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st21; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st21; } else goto st21; goto st0; st21: if ( ++p == pe ) goto _test_eof21; case 21: if ( (*p) == 58 ) goto st24; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st22; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st22; } else goto st22; goto st0; st22: if ( ++p == pe ) goto _test_eof22; case 22: if ( (*p) == 58 ) goto st24; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st23; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st23; } else goto st23; goto st0; st23: if ( ++p == pe ) goto _test_eof23; case 23: if ( (*p) == 58 ) goto st24; goto st0; st24: if ( ++p == pe ) goto _test_eof24; case 24: if ( (*p) == 58 ) goto tr36; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st25; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st25; } else goto st25; goto st0; st25: if ( ++p == pe ) goto _test_eof25; case 25: if ( (*p) == 58 ) goto st29; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st26; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st26; } else goto st26; goto st0; st26: if ( ++p == pe ) goto _test_eof26; case 26: if ( (*p) == 58 ) goto st29; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st27; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st27; } else goto st27; goto st0; st27: if ( ++p == pe ) goto _test_eof27; case 27: if ( (*p) == 58 ) goto st29; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st28; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st28; } else goto st28; goto st0; st28: if ( ++p == pe ) goto _test_eof28; case 28: if ( (*p) == 58 ) goto st29; goto st0; st29: if ( ++p == pe ) goto _test_eof29; case 29: if ( (*p) == 58 ) goto tr42; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st30; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st30; } else goto st30; goto st0; st30: if ( ++p == pe ) goto _test_eof30; case 30: if ( (*p) == 58 ) goto st34; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st31; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st31; } else goto st31; goto st0; st31: if ( ++p == pe ) goto _test_eof31; case 31: if ( (*p) == 58 ) goto st34; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st32; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st32; } else goto st32; goto st0; st32: if ( ++p == pe ) goto _test_eof32; case 32: if ( (*p) == 58 ) goto st34; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st33; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st33; } else goto st33; goto st0; st33: if ( ++p == pe ) goto _test_eof33; case 33: if ( (*p) == 58 ) goto st34; goto st0; st34: if ( ++p == pe ) goto _test_eof34; case 34: if ( (*p) == 58 ) goto tr48; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st35; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st35; } else goto st35; goto st0; st35: if ( ++p == pe ) goto _test_eof35; case 35: if ( (*p) == 58 ) goto st39; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st36; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st36; } else goto st36; goto st0; st36: if ( ++p == pe ) goto _test_eof36; case 36: if ( (*p) == 58 ) goto st39; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st37; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st37; } else goto st37; goto st0; st37: if ( ++p == pe ) goto _test_eof37; case 37: if ( (*p) == 58 ) goto st39; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st38; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st38; } else goto st38; goto st0; st38: if ( ++p == pe ) goto _test_eof38; case 38: if ( (*p) == 58 ) goto st39; goto st0; st39: if ( ++p == pe ) goto _test_eof39; case 39: if ( (*p) == 58 ) goto tr54; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st40; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st40; } else goto st40; goto st0; st40: if ( ++p == pe ) goto _test_eof40; case 40: if ( (*p) == 58 ) goto st44; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st41; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st41; } else goto st41; goto st0; st41: if ( ++p == pe ) goto _test_eof41; case 41: if ( (*p) == 58 ) goto st44; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st42; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st42; } else goto st42; goto st0; st42: if ( ++p == pe ) goto _test_eof42; case 42: if ( (*p) == 58 ) goto st44; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st43; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st43; } else goto st43; goto st0; st43: if ( ++p == pe ) goto _test_eof43; case 43: if ( (*p) == 58 ) goto st44; goto st0; st44: if ( ++p == pe ) goto _test_eof44; case 44: switch( (*p) ) { case 48: goto st45; case 49: goto st63; case 50: goto st66; case 58: goto tr63; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st69; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st70; } else goto st70; goto st0; st45: if ( ++p == pe ) goto _test_eof45; case 45: switch( (*p) ) { case 46: goto st46; case 58: goto st62; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st59; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st59; } else goto st59; goto st0; st46: if ( ++p == pe ) goto _test_eof46; case 46: switch( (*p) ) { case 48: goto st47; case 49: goto st55; case 50: goto st57; } if ( 51 <= (*p) && (*p) <= 57 ) goto st56; goto st0; st47: if ( ++p == pe ) goto _test_eof47; case 47: if ( (*p) == 46 ) goto st48; goto st0; st48: if ( ++p == pe ) goto _test_eof48; case 48: switch( (*p) ) { case 48: goto st49; case 49: goto st51; case 50: goto st53; } if ( 51 <= (*p) && (*p) <= 57 ) goto st52; goto st0; st49: if ( ++p == pe ) goto _test_eof49; case 49: if ( (*p) == 46 ) goto st50; goto st0; st50: if ( ++p == pe ) goto _test_eof50; case 50: switch( (*p) ) { case 48: goto tr78; case 49: goto tr79; case 50: goto tr80; } if ( 51 <= (*p) && (*p) <= 57 ) goto tr81; goto st0; tr79: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st242; st242: if ( ++p == pe ) goto _test_eof242; case 242: #line 772 "ip_utils.c" if ( 48 <= (*p) && (*p) <= 57 ) goto tr81; goto st0; tr81: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st243; st243: if ( ++p == pe ) goto _test_eof243; case 243: #line 786 "ip_utils.c" if ( 48 <= (*p) && (*p) <= 57 ) goto tr78; goto st0; tr80: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st244; st244: if ( ++p == pe ) goto _test_eof244; case 244: #line 800 "ip_utils.c" if ( (*p) == 53 ) goto tr273; if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto tr78; } else if ( (*p) >= 48 ) goto tr81; goto st0; tr273: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st245; st245: if ( ++p == pe ) goto _test_eof245; case 245: #line 819 "ip_utils.c" if ( 48 <= (*p) && (*p) <= 53 ) goto tr78; goto st0; st51: if ( ++p == pe ) goto _test_eof51; case 51: if ( (*p) == 46 ) goto st50; if ( 48 <= (*p) && (*p) <= 57 ) goto st52; goto st0; st52: if ( ++p == pe ) goto _test_eof52; case 52: if ( (*p) == 46 ) goto st50; if ( 48 <= (*p) && (*p) <= 57 ) goto st49; goto st0; st53: if ( ++p == pe ) goto _test_eof53; case 53: switch( (*p) ) { case 46: goto st50; case 53: goto st54; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st49; } else if ( (*p) >= 48 ) goto st52; goto st0; st54: if ( ++p == pe ) goto _test_eof54; case 54: if ( (*p) == 46 ) goto st50; if ( 48 <= (*p) && (*p) <= 53 ) goto st49; goto st0; st55: if ( ++p == pe ) goto _test_eof55; case 55: if ( (*p) == 46 ) goto st48; if ( 48 <= (*p) && (*p) <= 57 ) goto st56; goto st0; st56: if ( ++p == pe ) goto _test_eof56; case 56: if ( (*p) == 46 ) goto st48; if ( 48 <= (*p) && (*p) <= 57 ) goto st47; goto st0; st57: if ( ++p == pe ) goto _test_eof57; case 57: switch( (*p) ) { case 46: goto st48; case 53: goto st58; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st47; } else if ( (*p) >= 48 ) goto st56; goto st0; st58: if ( ++p == pe ) goto _test_eof58; case 58: if ( (*p) == 46 ) goto st48; if ( 48 <= (*p) && (*p) <= 53 ) goto st47; goto st0; st59: if ( ++p == pe ) goto _test_eof59; case 59: if ( (*p) == 58 ) goto st62; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st60; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st60; } else goto st60; goto st0; st60: if ( ++p == pe ) goto _test_eof60; case 60: if ( (*p) == 58 ) goto st62; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st61; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st61; } else goto st61; goto st0; st61: if ( ++p == pe ) goto _test_eof61; case 61: if ( (*p) == 58 ) goto st62; goto st0; st62: if ( ++p == pe ) goto _test_eof62; case 62: if ( (*p) == 58 ) goto tr78; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr86; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr86; } else goto tr86; goto st0; tr86: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st246; st246: if ( ++p == pe ) goto _test_eof246; case 246: #line 967 "ip_utils.c" if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr274; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr274; } else goto tr274; goto st0; tr274: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st247; st247: if ( ++p == pe ) goto _test_eof247; case 247: #line 987 "ip_utils.c" if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr275; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr275; } else goto tr275; goto st0; tr275: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st248; st248: if ( ++p == pe ) goto _test_eof248; case 248: #line 1007 "ip_utils.c" if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr78; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr78; } else goto tr78; goto st0; st63: if ( ++p == pe ) goto _test_eof63; case 63: switch( (*p) ) { case 46: goto st46; case 58: goto st62; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st64; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st59; } else goto st59; goto st0; st64: if ( ++p == pe ) goto _test_eof64; case 64: switch( (*p) ) { case 46: goto st46; case 58: goto st62; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st65; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st60; } else goto st60; goto st0; st65: if ( ++p == pe ) goto _test_eof65; case 65: switch( (*p) ) { case 46: goto st46; case 58: goto st62; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st61; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st61; } else goto st61; goto st0; st66: if ( ++p == pe ) goto _test_eof66; case 66: switch( (*p) ) { case 46: goto st46; case 53: goto st67; case 58: goto st62; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st64; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st59; } else if ( (*p) >= 65 ) goto st59; } else goto st68; goto st0; st67: if ( ++p == pe ) goto _test_eof67; case 67: switch( (*p) ) { case 46: goto st46; case 58: goto st62; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st65; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st60; } else if ( (*p) >= 65 ) goto st60; } else goto st60; goto st0; st68: if ( ++p == pe ) goto _test_eof68; case 68: switch( (*p) ) { case 46: goto st46; case 58: goto st62; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st60; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st60; } else goto st60; goto st0; st69: if ( ++p == pe ) goto _test_eof69; case 69: switch( (*p) ) { case 46: goto st46; case 58: goto st62; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st68; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st59; } else goto st59; goto st0; tr63: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st249; st249: if ( ++p == pe ) goto _test_eof249; case 249: #line 1153 "ip_utils.c" if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr86; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr86; } else goto tr86; goto st0; st70: if ( ++p == pe ) goto _test_eof70; case 70: if ( (*p) == 58 ) goto st62; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st59; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st59; } else goto st59; goto st0; tr54: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st250; st250: if ( ++p == pe ) goto _test_eof250; case 250: #line 1188 "ip_utils.c" switch( (*p) ) { case 48: goto tr91; case 49: goto tr92; case 50: goto tr93; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto tr94; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr95; } else goto tr95; goto st0; tr91: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st251; st251: if ( ++p == pe ) goto _test_eof251; case 251: #line 1213 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st71; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr276; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr276; } else goto tr276; goto st0; tr276: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st252; st252: if ( ++p == pe ) goto _test_eof252; case 252: #line 1237 "ip_utils.c" if ( (*p) == 58 ) goto st71; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr278; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr278; } else goto tr278; goto st0; tr278: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st253; st253: if ( ++p == pe ) goto _test_eof253; case 253: #line 1259 "ip_utils.c" if ( (*p) == 58 ) goto st71; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr279; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr279; } else goto tr279; goto st0; tr279: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st254; st254: if ( ++p == pe ) goto _test_eof254; case 254: #line 1281 "ip_utils.c" if ( (*p) == 58 ) goto st71; goto st0; st71: if ( ++p == pe ) goto _test_eof71; case 71: if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr86; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr86; } else goto tr86; goto st0; tr92: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st255; st255: if ( ++p == pe ) goto _test_eof255; case 255: #line 1308 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st71; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr280; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr276; } else goto tr276; goto st0; tr280: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st256; st256: if ( ++p == pe ) goto _test_eof256; case 256: #line 1332 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st71; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr281; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr278; } else goto tr278; goto st0; tr281: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st257; st257: if ( ++p == pe ) goto _test_eof257; case 257: #line 1356 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st71; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr279; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr279; } else goto tr279; goto st0; tr93: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st258; st258: if ( ++p == pe ) goto _test_eof258; case 258: #line 1380 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 53: goto tr282; case 58: goto st71; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto tr280; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr276; } else if ( (*p) >= 65 ) goto tr276; } else goto tr283; goto st0; tr282: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st259; st259: if ( ++p == pe ) goto _test_eof259; case 259: #line 1408 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st71; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto tr281; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr278; } else if ( (*p) >= 65 ) goto tr278; } else goto tr278; goto st0; tr283: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st260; st260: if ( ++p == pe ) goto _test_eof260; case 260: #line 1435 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st71; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr278; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr278; } else goto tr278; goto st0; tr94: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st261; st261: if ( ++p == pe ) goto _test_eof261; case 261: #line 1459 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st71; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr283; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr276; } else goto tr276; goto st0; tr95: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st262; st262: if ( ++p == pe ) goto _test_eof262; case 262: #line 1483 "ip_utils.c" if ( (*p) == 58 ) goto st71; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr276; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr276; } else goto tr276; goto st0; tr48: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st263; st263: if ( ++p == pe ) goto _test_eof263; case 263: #line 1505 "ip_utils.c" switch( (*p) ) { case 48: goto tr96; case 49: goto tr97; case 50: goto tr98; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto tr99; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr100; } else goto tr100; goto st0; tr96: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st264; st264: if ( ++p == pe ) goto _test_eof264; case 264: #line 1530 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st72; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr284; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr284; } else goto tr284; goto st0; tr284: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st265; st265: if ( ++p == pe ) goto _test_eof265; case 265: #line 1554 "ip_utils.c" if ( (*p) == 58 ) goto st72; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr286; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr286; } else goto tr286; goto st0; tr286: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st266; st266: if ( ++p == pe ) goto _test_eof266; case 266: #line 1576 "ip_utils.c" if ( (*p) == 58 ) goto st72; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr287; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr287; } else goto tr287; goto st0; tr287: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st267; st267: if ( ++p == pe ) goto _test_eof267; case 267: #line 1598 "ip_utils.c" if ( (*p) == 58 ) goto st72; goto st0; st72: if ( ++p == pe ) goto _test_eof72; case 72: switch( (*p) ) { case 48: goto tr91; case 49: goto tr92; case 50: goto tr93; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto tr94; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr95; } else goto tr95; goto st0; tr97: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st268; st268: if ( ++p == pe ) goto _test_eof268; case 268: #line 1630 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st72; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr288; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr284; } else goto tr284; goto st0; tr288: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st269; st269: if ( ++p == pe ) goto _test_eof269; case 269: #line 1654 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st72; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr289; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr286; } else goto tr286; goto st0; tr289: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st270; st270: if ( ++p == pe ) goto _test_eof270; case 270: #line 1678 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st72; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr287; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr287; } else goto tr287; goto st0; tr98: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st271; st271: if ( ++p == pe ) goto _test_eof271; case 271: #line 1702 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 53: goto tr290; case 58: goto st72; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto tr288; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr284; } else if ( (*p) >= 65 ) goto tr284; } else goto tr291; goto st0; tr290: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st272; st272: if ( ++p == pe ) goto _test_eof272; case 272: #line 1730 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st72; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto tr289; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr286; } else if ( (*p) >= 65 ) goto tr286; } else goto tr286; goto st0; tr291: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st273; st273: if ( ++p == pe ) goto _test_eof273; case 273: #line 1757 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st72; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr286; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr286; } else goto tr286; goto st0; tr99: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st274; st274: if ( ++p == pe ) goto _test_eof274; case 274: #line 1781 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st72; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr291; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr284; } else goto tr284; goto st0; tr100: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st275; st275: if ( ++p == pe ) goto _test_eof275; case 275: #line 1805 "ip_utils.c" if ( (*p) == 58 ) goto st72; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr284; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr284; } else goto tr284; goto st0; tr42: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st276; st276: if ( ++p == pe ) goto _test_eof276; case 276: #line 1827 "ip_utils.c" switch( (*p) ) { case 48: goto tr101; case 49: goto tr102; case 50: goto tr103; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto tr104; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr105; } else goto tr105; goto st0; tr101: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st277; st277: if ( ++p == pe ) goto _test_eof277; case 277: #line 1852 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st73; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr292; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr292; } else goto tr292; goto st0; tr292: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st278; st278: if ( ++p == pe ) goto _test_eof278; case 278: #line 1876 "ip_utils.c" if ( (*p) == 58 ) goto st73; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr294; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr294; } else goto tr294; goto st0; tr294: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st279; st279: if ( ++p == pe ) goto _test_eof279; case 279: #line 1898 "ip_utils.c" if ( (*p) == 58 ) goto st73; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr295; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr295; } else goto tr295; goto st0; tr295: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st280; st280: if ( ++p == pe ) goto _test_eof280; case 280: #line 1920 "ip_utils.c" if ( (*p) == 58 ) goto st73; goto st0; st73: if ( ++p == pe ) goto _test_eof73; case 73: switch( (*p) ) { case 48: goto tr96; case 49: goto tr97; case 50: goto tr98; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto tr99; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr100; } else goto tr100; goto st0; tr102: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st281; st281: if ( ++p == pe ) goto _test_eof281; case 281: #line 1952 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st73; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr296; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr292; } else goto tr292; goto st0; tr296: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st282; st282: if ( ++p == pe ) goto _test_eof282; case 282: #line 1976 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st73; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr297; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr294; } else goto tr294; goto st0; tr297: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st283; st283: if ( ++p == pe ) goto _test_eof283; case 283: #line 2000 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st73; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr295; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr295; } else goto tr295; goto st0; tr103: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st284; st284: if ( ++p == pe ) goto _test_eof284; case 284: #line 2024 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 53: goto tr298; case 58: goto st73; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto tr296; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr292; } else if ( (*p) >= 65 ) goto tr292; } else goto tr299; goto st0; tr298: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st285; st285: if ( ++p == pe ) goto _test_eof285; case 285: #line 2052 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st73; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto tr297; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr294; } else if ( (*p) >= 65 ) goto tr294; } else goto tr294; goto st0; tr299: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st286; st286: if ( ++p == pe ) goto _test_eof286; case 286: #line 2079 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st73; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr294; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr294; } else goto tr294; goto st0; tr104: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st287; st287: if ( ++p == pe ) goto _test_eof287; case 287: #line 2103 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st73; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr299; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr292; } else goto tr292; goto st0; tr105: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st288; st288: if ( ++p == pe ) goto _test_eof288; case 288: #line 2127 "ip_utils.c" if ( (*p) == 58 ) goto st73; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr292; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr292; } else goto tr292; goto st0; tr36: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st289; st289: if ( ++p == pe ) goto _test_eof289; case 289: #line 2149 "ip_utils.c" switch( (*p) ) { case 48: goto tr106; case 49: goto tr107; case 50: goto tr108; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto tr109; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr110; } else goto tr110; goto st0; tr106: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st290; st290: if ( ++p == pe ) goto _test_eof290; case 290: #line 2174 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st74; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr300; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr300; } else goto tr300; goto st0; tr300: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st291; st291: if ( ++p == pe ) goto _test_eof291; case 291: #line 2198 "ip_utils.c" if ( (*p) == 58 ) goto st74; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr302; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr302; } else goto tr302; goto st0; tr302: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st292; st292: if ( ++p == pe ) goto _test_eof292; case 292: #line 2220 "ip_utils.c" if ( (*p) == 58 ) goto st74; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr303; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr303; } else goto tr303; goto st0; tr303: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st293; st293: if ( ++p == pe ) goto _test_eof293; case 293: #line 2242 "ip_utils.c" if ( (*p) == 58 ) goto st74; goto st0; st74: if ( ++p == pe ) goto _test_eof74; case 74: switch( (*p) ) { case 48: goto tr101; case 49: goto tr102; case 50: goto tr103; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto tr104; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr105; } else goto tr105; goto st0; tr107: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st294; st294: if ( ++p == pe ) goto _test_eof294; case 294: #line 2274 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st74; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr304; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr300; } else goto tr300; goto st0; tr304: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st295; st295: if ( ++p == pe ) goto _test_eof295; case 295: #line 2298 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st74; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr305; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr302; } else goto tr302; goto st0; tr305: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st296; st296: if ( ++p == pe ) goto _test_eof296; case 296: #line 2322 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st74; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr303; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr303; } else goto tr303; goto st0; tr108: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st297; st297: if ( ++p == pe ) goto _test_eof297; case 297: #line 2346 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 53: goto tr306; case 58: goto st74; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto tr304; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr300; } else if ( (*p) >= 65 ) goto tr300; } else goto tr307; goto st0; tr306: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st298; st298: if ( ++p == pe ) goto _test_eof298; case 298: #line 2374 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st74; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto tr305; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr302; } else if ( (*p) >= 65 ) goto tr302; } else goto tr302; goto st0; tr307: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st299; st299: if ( ++p == pe ) goto _test_eof299; case 299: #line 2401 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st74; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr302; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr302; } else goto tr302; goto st0; tr109: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st300; st300: if ( ++p == pe ) goto _test_eof300; case 300: #line 2425 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st74; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr307; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr300; } else goto tr300; goto st0; tr110: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st301; st301: if ( ++p == pe ) goto _test_eof301; case 301: #line 2449 "ip_utils.c" if ( (*p) == 58 ) goto st74; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr300; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr300; } else goto tr300; goto st0; tr30: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st302; st302: if ( ++p == pe ) goto _test_eof302; case 302: #line 2471 "ip_utils.c" switch( (*p) ) { case 48: goto tr116; case 49: goto tr117; case 50: goto tr118; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto tr119; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr120; } else goto tr120; goto st0; tr116: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st303; st303: if ( ++p == pe ) goto _test_eof303; case 303: #line 2496 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st75; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr308; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr308; } else goto tr308; goto st0; tr308: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st304; st304: if ( ++p == pe ) goto _test_eof304; case 304: #line 2520 "ip_utils.c" if ( (*p) == 58 ) goto st75; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr310; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr310; } else goto tr310; goto st0; tr310: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st305; st305: if ( ++p == pe ) goto _test_eof305; case 305: #line 2542 "ip_utils.c" if ( (*p) == 58 ) goto st75; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr311; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr311; } else goto tr311; goto st0; tr311: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st306; st306: if ( ++p == pe ) goto _test_eof306; case 306: #line 2564 "ip_utils.c" if ( (*p) == 58 ) goto st75; goto st0; st75: if ( ++p == pe ) goto _test_eof75; case 75: switch( (*p) ) { case 48: goto tr106; case 49: goto tr107; case 50: goto tr108; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto tr109; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr110; } else goto tr110; goto st0; tr117: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st307; st307: if ( ++p == pe ) goto _test_eof307; case 307: #line 2596 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st75; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr312; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr308; } else goto tr308; goto st0; tr312: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st308; st308: if ( ++p == pe ) goto _test_eof308; case 308: #line 2620 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st75; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr313; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr310; } else goto tr310; goto st0; tr313: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st309; st309: if ( ++p == pe ) goto _test_eof309; case 309: #line 2644 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st75; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr311; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr311; } else goto tr311; goto st0; tr118: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st310; st310: if ( ++p == pe ) goto _test_eof310; case 310: #line 2668 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 53: goto tr314; case 58: goto st75; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto tr312; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr308; } else if ( (*p) >= 65 ) goto tr308; } else goto tr315; goto st0; tr314: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st311; st311: if ( ++p == pe ) goto _test_eof311; case 311: #line 2696 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st75; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto tr313; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr310; } else if ( (*p) >= 65 ) goto tr310; } else goto tr310; goto st0; tr315: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st312; st312: if ( ++p == pe ) goto _test_eof312; case 312: #line 2723 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st75; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr310; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr310; } else goto tr310; goto st0; tr119: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st313; st313: if ( ++p == pe ) goto _test_eof313; case 313: #line 2747 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st75; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr315; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr308; } else goto tr308; goto st0; tr120: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st314; st314: if ( ++p == pe ) goto _test_eof314; case 314: #line 2771 "ip_utils.c" if ( (*p) == 58 ) goto st75; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr308; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr308; } else goto tr308; goto st0; st76: if ( ++p == pe ) goto _test_eof76; case 76: switch( (*p) ) { case 46: goto st3; case 58: goto st19; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st77; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st16; } else goto st16; goto st0; st77: if ( ++p == pe ) goto _test_eof77; case 77: switch( (*p) ) { case 46: goto st3; case 58: goto st19; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st78; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st17; } else goto st17; goto st0; st78: if ( ++p == pe ) goto _test_eof78; case 78: switch( (*p) ) { case 46: goto st3; case 58: goto st19; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st18; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st18; } else goto st18; goto st0; st79: if ( ++p == pe ) goto _test_eof79; case 79: switch( (*p) ) { case 46: goto st3; case 53: goto st80; case 58: goto st19; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st77; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st16; } else if ( (*p) >= 65 ) goto st16; } else goto st81; goto st0; st80: if ( ++p == pe ) goto _test_eof80; case 80: switch( (*p) ) { case 46: goto st3; case 58: goto st19; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st78; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st17; } else if ( (*p) >= 65 ) goto st17; } else goto st17; goto st0; st81: if ( ++p == pe ) goto _test_eof81; case 81: switch( (*p) ) { case 46: goto st3; case 58: goto st19; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st17; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st17; } else goto st17; goto st0; st82: if ( ++p == pe ) goto _test_eof82; case 82: switch( (*p) ) { case 46: goto st3; case 58: goto st19; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st81; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st16; } else goto st16; goto st0; st83: if ( ++p == pe ) goto _test_eof83; case 83: if ( (*p) == 58 ) goto tr115; goto st0; tr115: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st315; st315: if ( ++p == pe ) goto _test_eof315; case 315: #line 2926 "ip_utils.c" switch( (*p) ) { case 48: goto tr316; case 49: goto tr317; case 50: goto tr318; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto tr319; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr320; } else goto tr320; goto st0; tr316: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st316; st316: if ( ++p == pe ) goto _test_eof316; case 316: #line 2951 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st84; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr321; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr321; } else goto tr321; goto st0; tr321: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st317; st317: if ( ++p == pe ) goto _test_eof317; case 317: #line 2975 "ip_utils.c" if ( (*p) == 58 ) goto st84; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr323; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr323; } else goto tr323; goto st0; tr323: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st318; st318: if ( ++p == pe ) goto _test_eof318; case 318: #line 2997 "ip_utils.c" if ( (*p) == 58 ) goto st84; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr324; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr324; } else goto tr324; goto st0; tr324: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st319; st319: if ( ++p == pe ) goto _test_eof319; case 319: #line 3019 "ip_utils.c" if ( (*p) == 58 ) goto st84; goto st0; st84: if ( ++p == pe ) goto _test_eof84; case 84: switch( (*p) ) { case 48: goto tr116; case 49: goto tr117; case 50: goto tr118; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto tr119; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr120; } else goto tr120; goto st0; tr317: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st320; st320: if ( ++p == pe ) goto _test_eof320; case 320: #line 3051 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st84; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr325; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr321; } else goto tr321; goto st0; tr325: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st321; st321: if ( ++p == pe ) goto _test_eof321; case 321: #line 3075 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st84; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr326; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr323; } else goto tr323; goto st0; tr326: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st322; st322: if ( ++p == pe ) goto _test_eof322; case 322: #line 3099 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st84; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr324; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr324; } else goto tr324; goto st0; tr318: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st323; st323: if ( ++p == pe ) goto _test_eof323; case 323: #line 3123 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 53: goto tr327; case 58: goto st84; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto tr325; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr321; } else if ( (*p) >= 65 ) goto tr321; } else goto tr328; goto st0; tr327: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st324; st324: if ( ++p == pe ) goto _test_eof324; case 324: #line 3151 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st84; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto tr326; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr323; } else if ( (*p) >= 65 ) goto tr323; } else goto tr323; goto st0; tr328: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st325; st325: if ( ++p == pe ) goto _test_eof325; case 325: #line 3178 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st84; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr323; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr323; } else goto tr323; goto st0; tr319: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st326; st326: if ( ++p == pe ) goto _test_eof326; case 326: #line 3202 "ip_utils.c" switch( (*p) ) { case 46: goto st46; case 58: goto st84; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr328; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr321; } else goto tr321; goto st0; tr320: #line 14 "ip_utils.rl" { ip_type = ip_type_ipv6; } goto st327; st327: if ( ++p == pe ) goto _test_eof327; case 327: #line 3226 "ip_utils.c" if ( (*p) == 58 ) goto st84; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto tr321; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr321; } else goto tr321; goto st0; st85: if ( ++p == pe ) goto _test_eof85; case 85: if ( (*p) == 58 ) goto st19; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st16; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st16; } else goto st16; goto st0; st86: if ( ++p == pe ) goto _test_eof86; case 86: if ( (*p) == 58 ) goto st222; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st87; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st87; } else goto st87; goto st0; st87: if ( ++p == pe ) goto _test_eof87; case 87: if ( (*p) == 58 ) goto st91; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st88; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st88; } else goto st88; goto st0; st88: if ( ++p == pe ) goto _test_eof88; case 88: if ( (*p) == 58 ) goto st91; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st89; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st89; } else goto st89; goto st0; st89: if ( ++p == pe ) goto _test_eof89; case 89: if ( (*p) == 58 ) goto st91; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st90; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st90; } else goto st90; goto st0; st90: if ( ++p == pe ) goto _test_eof90; case 90: if ( (*p) == 58 ) goto st91; goto st0; st91: if ( ++p == pe ) goto _test_eof91; case 91: if ( (*p) == 58 ) goto st208; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st92; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st92; } else goto st92; goto st0; st92: if ( ++p == pe ) goto _test_eof92; case 92: if ( (*p) == 58 ) goto st96; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st93; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st93; } else goto st93; goto st0; st93: if ( ++p == pe ) goto _test_eof93; case 93: if ( (*p) == 58 ) goto st96; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st94; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st94; } else goto st94; goto st0; st94: if ( ++p == pe ) goto _test_eof94; case 94: if ( (*p) == 58 ) goto st96; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st95; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st95; } else goto st95; goto st0; st95: if ( ++p == pe ) goto _test_eof95; case 95: if ( (*p) == 58 ) goto st96; goto st0; st96: if ( ++p == pe ) goto _test_eof96; case 96: if ( (*p) == 58 ) goto st194; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st97; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st97; } else goto st97; goto st0; st97: if ( ++p == pe ) goto _test_eof97; case 97: if ( (*p) == 58 ) goto st101; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st98; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st98; } else goto st98; goto st0; st98: if ( ++p == pe ) goto _test_eof98; case 98: if ( (*p) == 58 ) goto st101; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st99; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st99; } else goto st99; goto st0; st99: if ( ++p == pe ) goto _test_eof99; case 99: if ( (*p) == 58 ) goto st101; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st100; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st100; } else goto st100; goto st0; st100: if ( ++p == pe ) goto _test_eof100; case 100: if ( (*p) == 58 ) goto st101; goto st0; st101: if ( ++p == pe ) goto _test_eof101; case 101: if ( (*p) == 58 ) goto st180; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st102; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st102; } else goto st102; goto st0; st102: if ( ++p == pe ) goto _test_eof102; case 102: if ( (*p) == 58 ) goto st106; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st103; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st103; } else goto st103; goto st0; st103: if ( ++p == pe ) goto _test_eof103; case 103: if ( (*p) == 58 ) goto st106; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st104; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st104; } else goto st104; goto st0; st104: if ( ++p == pe ) goto _test_eof104; case 104: if ( (*p) == 58 ) goto st106; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st105; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st105; } else goto st105; goto st0; st105: if ( ++p == pe ) goto _test_eof105; case 105: if ( (*p) == 58 ) goto st106; goto st0; st106: if ( ++p == pe ) goto _test_eof106; case 106: if ( (*p) == 58 ) goto st166; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st107; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st107; } else goto st107; goto st0; st107: if ( ++p == pe ) goto _test_eof107; case 107: if ( (*p) == 58 ) goto st111; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st108; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st108; } else goto st108; goto st0; st108: if ( ++p == pe ) goto _test_eof108; case 108: if ( (*p) == 58 ) goto st111; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st109; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st109; } else goto st109; goto st0; st109: if ( ++p == pe ) goto _test_eof109; case 109: if ( (*p) == 58 ) goto st111; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st110; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st110; } else goto st110; goto st0; st110: if ( ++p == pe ) goto _test_eof110; case 110: if ( (*p) == 58 ) goto st111; goto st0; st111: if ( ++p == pe ) goto _test_eof111; case 111: if ( (*p) == 58 ) goto st152; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st112; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st112; } else goto st112; goto st0; st112: if ( ++p == pe ) goto _test_eof112; case 112: if ( (*p) == 58 ) goto st116; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st113; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st113; } else goto st113; goto st0; st113: if ( ++p == pe ) goto _test_eof113; case 113: if ( (*p) == 58 ) goto st116; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st114; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st114; } else goto st114; goto st0; st114: if ( ++p == pe ) goto _test_eof114; case 114: if ( (*p) == 58 ) goto st116; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st115; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st115; } else goto st115; goto st0; st115: if ( ++p == pe ) goto _test_eof115; case 115: if ( (*p) == 58 ) goto st116; goto st0; st116: if ( ++p == pe ) goto _test_eof116; case 116: switch( (*p) ) { case 48: goto st117; case 49: goto st143; case 50: goto st146; case 58: goto st150; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st149; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st151; } else goto st151; goto st0; st117: if ( ++p == pe ) goto _test_eof117; case 117: switch( (*p) ) { case 46: goto st118; case 58: goto st139; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st136; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st136; } else goto st136; goto st0; st118: if ( ++p == pe ) goto _test_eof118; case 118: switch( (*p) ) { case 48: goto st119; case 49: goto st132; case 50: goto st134; } if ( 51 <= (*p) && (*p) <= 57 ) goto st133; goto st0; st119: if ( ++p == pe ) goto _test_eof119; case 119: if ( (*p) == 46 ) goto st120; goto st0; st120: if ( ++p == pe ) goto _test_eof120; case 120: switch( (*p) ) { case 48: goto st121; case 49: goto st128; case 50: goto st130; } if ( 51 <= (*p) && (*p) <= 57 ) goto st129; goto st0; st121: if ( ++p == pe ) goto _test_eof121; case 121: if ( (*p) == 46 ) goto st122; goto st0; st122: if ( ++p == pe ) goto _test_eof122; case 122: switch( (*p) ) { case 48: goto st123; case 49: goto st124; case 50: goto st126; } if ( 51 <= (*p) && (*p) <= 57 ) goto st125; goto st0; st123: if ( ++p == pe ) goto _test_eof123; case 123: if ( (*p) == 93 ) goto tr180; goto st0; st124: if ( ++p == pe ) goto _test_eof124; case 124: if ( (*p) == 93 ) goto tr180; if ( 48 <= (*p) && (*p) <= 57 ) goto st125; goto st0; st125: if ( ++p == pe ) goto _test_eof125; case 125: if ( (*p) == 93 ) goto tr180; if ( 48 <= (*p) && (*p) <= 57 ) goto st123; goto st0; st126: if ( ++p == pe ) goto _test_eof126; case 126: switch( (*p) ) { case 53: goto st127; case 93: goto tr180; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st123; } else if ( (*p) >= 48 ) goto st125; goto st0; st127: if ( ++p == pe ) goto _test_eof127; case 127: if ( (*p) == 93 ) goto tr180; if ( 48 <= (*p) && (*p) <= 53 ) goto st123; goto st0; st128: if ( ++p == pe ) goto _test_eof128; case 128: if ( (*p) == 46 ) goto st122; if ( 48 <= (*p) && (*p) <= 57 ) goto st129; goto st0; st129: if ( ++p == pe ) goto _test_eof129; case 129: if ( (*p) == 46 ) goto st122; if ( 48 <= (*p) && (*p) <= 57 ) goto st121; goto st0; st130: if ( ++p == pe ) goto _test_eof130; case 130: switch( (*p) ) { case 46: goto st122; case 53: goto st131; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st121; } else if ( (*p) >= 48 ) goto st129; goto st0; st131: if ( ++p == pe ) goto _test_eof131; case 131: if ( (*p) == 46 ) goto st122; if ( 48 <= (*p) && (*p) <= 53 ) goto st121; goto st0; st132: if ( ++p == pe ) goto _test_eof132; case 132: if ( (*p) == 46 ) goto st120; if ( 48 <= (*p) && (*p) <= 57 ) goto st133; goto st0; st133: if ( ++p == pe ) goto _test_eof133; case 133: if ( (*p) == 46 ) goto st120; if ( 48 <= (*p) && (*p) <= 57 ) goto st119; goto st0; st134: if ( ++p == pe ) goto _test_eof134; case 134: switch( (*p) ) { case 46: goto st120; case 53: goto st135; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st119; } else if ( (*p) >= 48 ) goto st133; goto st0; st135: if ( ++p == pe ) goto _test_eof135; case 135: if ( (*p) == 46 ) goto st120; if ( 48 <= (*p) && (*p) <= 53 ) goto st119; goto st0; st136: if ( ++p == pe ) goto _test_eof136; case 136: if ( (*p) == 58 ) goto st139; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st137; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st137; } else goto st137; goto st0; st137: if ( ++p == pe ) goto _test_eof137; case 137: if ( (*p) == 58 ) goto st139; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st138; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st138; } else goto st138; goto st0; st138: if ( ++p == pe ) goto _test_eof138; case 138: if ( (*p) == 58 ) goto st139; goto st0; st139: if ( ++p == pe ) goto _test_eof139; case 139: if ( (*p) == 58 ) goto st123; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st140; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st140; } else goto st140; goto st0; st140: if ( ++p == pe ) goto _test_eof140; case 140: if ( (*p) == 93 ) goto tr180; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st141; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st141; } else goto st141; goto st0; st141: if ( ++p == pe ) goto _test_eof141; case 141: if ( (*p) == 93 ) goto tr180; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st142; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st142; } else goto st142; goto st0; st142: if ( ++p == pe ) goto _test_eof142; case 142: if ( (*p) == 93 ) goto tr180; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st123; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st123; } else goto st123; goto st0; st143: if ( ++p == pe ) goto _test_eof143; case 143: switch( (*p) ) { case 46: goto st118; case 58: goto st139; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st144; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st136; } else goto st136; goto st0; st144: if ( ++p == pe ) goto _test_eof144; case 144: switch( (*p) ) { case 46: goto st118; case 58: goto st139; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st145; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st137; } else goto st137; goto st0; st145: if ( ++p == pe ) goto _test_eof145; case 145: switch( (*p) ) { case 46: goto st118; case 58: goto st139; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st138; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st138; } else goto st138; goto st0; st146: if ( ++p == pe ) goto _test_eof146; case 146: switch( (*p) ) { case 46: goto st118; case 53: goto st147; case 58: goto st139; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st144; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st136; } else if ( (*p) >= 65 ) goto st136; } else goto st148; goto st0; st147: if ( ++p == pe ) goto _test_eof147; case 147: switch( (*p) ) { case 46: goto st118; case 58: goto st139; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st145; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st137; } else if ( (*p) >= 65 ) goto st137; } else goto st137; goto st0; st148: if ( ++p == pe ) goto _test_eof148; case 148: switch( (*p) ) { case 46: goto st118; case 58: goto st139; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st137; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st137; } else goto st137; goto st0; st149: if ( ++p == pe ) goto _test_eof149; case 149: switch( (*p) ) { case 46: goto st118; case 58: goto st139; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st148; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st136; } else goto st136; goto st0; st150: if ( ++p == pe ) goto _test_eof150; case 150: if ( (*p) == 93 ) goto tr180; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st140; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st140; } else goto st140; goto st0; st151: if ( ++p == pe ) goto _test_eof151; case 151: if ( (*p) == 58 ) goto st139; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st136; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st136; } else goto st136; goto st0; st152: if ( ++p == pe ) goto _test_eof152; case 152: switch( (*p) ) { case 48: goto st153; case 49: goto st158; case 50: goto st161; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st164; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st165; } else goto st165; goto st0; st153: if ( ++p == pe ) goto _test_eof153; case 153: switch( (*p) ) { case 46: goto st118; case 58: goto st157; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st154; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st154; } else goto st154; goto st0; st154: if ( ++p == pe ) goto _test_eof154; case 154: switch( (*p) ) { case 58: goto st157; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st155; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st155; } else goto st155; goto st0; st155: if ( ++p == pe ) goto _test_eof155; case 155: switch( (*p) ) { case 58: goto st157; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st156; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st156; } else goto st156; goto st0; st156: if ( ++p == pe ) goto _test_eof156; case 156: switch( (*p) ) { case 58: goto st157; case 93: goto tr180; } goto st0; st157: if ( ++p == pe ) goto _test_eof157; case 157: if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st140; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st140; } else goto st140; goto st0; st158: if ( ++p == pe ) goto _test_eof158; case 158: switch( (*p) ) { case 46: goto st118; case 58: goto st157; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st159; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st154; } else goto st154; goto st0; st159: if ( ++p == pe ) goto _test_eof159; case 159: switch( (*p) ) { case 46: goto st118; case 58: goto st157; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st160; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st155; } else goto st155; goto st0; st160: if ( ++p == pe ) goto _test_eof160; case 160: switch( (*p) ) { case 46: goto st118; case 58: goto st157; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st156; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st156; } else goto st156; goto st0; st161: if ( ++p == pe ) goto _test_eof161; case 161: switch( (*p) ) { case 46: goto st118; case 53: goto st162; case 58: goto st157; case 93: goto tr180; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st159; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st154; } else if ( (*p) >= 65 ) goto st154; } else goto st163; goto st0; st162: if ( ++p == pe ) goto _test_eof162; case 162: switch( (*p) ) { case 46: goto st118; case 58: goto st157; case 93: goto tr180; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st160; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st155; } else if ( (*p) >= 65 ) goto st155; } else goto st155; goto st0; st163: if ( ++p == pe ) goto _test_eof163; case 163: switch( (*p) ) { case 46: goto st118; case 58: goto st157; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st155; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st155; } else goto st155; goto st0; st164: if ( ++p == pe ) goto _test_eof164; case 164: switch( (*p) ) { case 46: goto st118; case 58: goto st157; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st163; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st154; } else goto st154; goto st0; st165: if ( ++p == pe ) goto _test_eof165; case 165: switch( (*p) ) { case 58: goto st157; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st154; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st154; } else goto st154; goto st0; st166: if ( ++p == pe ) goto _test_eof166; case 166: switch( (*p) ) { case 48: goto st167; case 49: goto st172; case 50: goto st175; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st178; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st179; } else goto st179; goto st0; st167: if ( ++p == pe ) goto _test_eof167; case 167: switch( (*p) ) { case 46: goto st118; case 58: goto st171; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st168; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st168; } else goto st168; goto st0; st168: if ( ++p == pe ) goto _test_eof168; case 168: switch( (*p) ) { case 58: goto st171; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st169; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st169; } else goto st169; goto st0; st169: if ( ++p == pe ) goto _test_eof169; case 169: switch( (*p) ) { case 58: goto st171; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st170; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st170; } else goto st170; goto st0; st170: if ( ++p == pe ) goto _test_eof170; case 170: switch( (*p) ) { case 58: goto st171; case 93: goto tr180; } goto st0; st171: if ( ++p == pe ) goto _test_eof171; case 171: switch( (*p) ) { case 48: goto st153; case 49: goto st158; case 50: goto st161; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st164; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st165; } else goto st165; goto st0; st172: if ( ++p == pe ) goto _test_eof172; case 172: switch( (*p) ) { case 46: goto st118; case 58: goto st171; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st173; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st168; } else goto st168; goto st0; st173: if ( ++p == pe ) goto _test_eof173; case 173: switch( (*p) ) { case 46: goto st118; case 58: goto st171; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st174; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st169; } else goto st169; goto st0; st174: if ( ++p == pe ) goto _test_eof174; case 174: switch( (*p) ) { case 46: goto st118; case 58: goto st171; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st170; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st170; } else goto st170; goto st0; st175: if ( ++p == pe ) goto _test_eof175; case 175: switch( (*p) ) { case 46: goto st118; case 53: goto st176; case 58: goto st171; case 93: goto tr180; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st173; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st168; } else if ( (*p) >= 65 ) goto st168; } else goto st177; goto st0; st176: if ( ++p == pe ) goto _test_eof176; case 176: switch( (*p) ) { case 46: goto st118; case 58: goto st171; case 93: goto tr180; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st174; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st169; } else if ( (*p) >= 65 ) goto st169; } else goto st169; goto st0; st177: if ( ++p == pe ) goto _test_eof177; case 177: switch( (*p) ) { case 46: goto st118; case 58: goto st171; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st169; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st169; } else goto st169; goto st0; st178: if ( ++p == pe ) goto _test_eof178; case 178: switch( (*p) ) { case 46: goto st118; case 58: goto st171; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st177; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st168; } else goto st168; goto st0; st179: if ( ++p == pe ) goto _test_eof179; case 179: switch( (*p) ) { case 58: goto st171; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st168; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st168; } else goto st168; goto st0; st180: if ( ++p == pe ) goto _test_eof180; case 180: switch( (*p) ) { case 48: goto st181; case 49: goto st186; case 50: goto st189; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st192; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st193; } else goto st193; goto st0; st181: if ( ++p == pe ) goto _test_eof181; case 181: switch( (*p) ) { case 46: goto st118; case 58: goto st185; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st182; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st182; } else goto st182; goto st0; st182: if ( ++p == pe ) goto _test_eof182; case 182: switch( (*p) ) { case 58: goto st185; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st183; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st183; } else goto st183; goto st0; st183: if ( ++p == pe ) goto _test_eof183; case 183: switch( (*p) ) { case 58: goto st185; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st184; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st184; } else goto st184; goto st0; st184: if ( ++p == pe ) goto _test_eof184; case 184: switch( (*p) ) { case 58: goto st185; case 93: goto tr180; } goto st0; st185: if ( ++p == pe ) goto _test_eof185; case 185: switch( (*p) ) { case 48: goto st167; case 49: goto st172; case 50: goto st175; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st178; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st179; } else goto st179; goto st0; st186: if ( ++p == pe ) goto _test_eof186; case 186: switch( (*p) ) { case 46: goto st118; case 58: goto st185; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st187; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st182; } else goto st182; goto st0; st187: if ( ++p == pe ) goto _test_eof187; case 187: switch( (*p) ) { case 46: goto st118; case 58: goto st185; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st188; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st183; } else goto st183; goto st0; st188: if ( ++p == pe ) goto _test_eof188; case 188: switch( (*p) ) { case 46: goto st118; case 58: goto st185; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st184; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st184; } else goto st184; goto st0; st189: if ( ++p == pe ) goto _test_eof189; case 189: switch( (*p) ) { case 46: goto st118; case 53: goto st190; case 58: goto st185; case 93: goto tr180; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st187; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st182; } else if ( (*p) >= 65 ) goto st182; } else goto st191; goto st0; st190: if ( ++p == pe ) goto _test_eof190; case 190: switch( (*p) ) { case 46: goto st118; case 58: goto st185; case 93: goto tr180; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st188; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st183; } else if ( (*p) >= 65 ) goto st183; } else goto st183; goto st0; st191: if ( ++p == pe ) goto _test_eof191; case 191: switch( (*p) ) { case 46: goto st118; case 58: goto st185; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st183; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st183; } else goto st183; goto st0; st192: if ( ++p == pe ) goto _test_eof192; case 192: switch( (*p) ) { case 46: goto st118; case 58: goto st185; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st191; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st182; } else goto st182; goto st0; st193: if ( ++p == pe ) goto _test_eof193; case 193: switch( (*p) ) { case 58: goto st185; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st182; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st182; } else goto st182; goto st0; st194: if ( ++p == pe ) goto _test_eof194; case 194: switch( (*p) ) { case 48: goto st195; case 49: goto st200; case 50: goto st203; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st206; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st207; } else goto st207; goto st0; st195: if ( ++p == pe ) goto _test_eof195; case 195: switch( (*p) ) { case 46: goto st118; case 58: goto st199; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st196; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st196; } else goto st196; goto st0; st196: if ( ++p == pe ) goto _test_eof196; case 196: switch( (*p) ) { case 58: goto st199; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st197; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st197; } else goto st197; goto st0; st197: if ( ++p == pe ) goto _test_eof197; case 197: switch( (*p) ) { case 58: goto st199; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st198; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st198; } else goto st198; goto st0; st198: if ( ++p == pe ) goto _test_eof198; case 198: switch( (*p) ) { case 58: goto st199; case 93: goto tr180; } goto st0; st199: if ( ++p == pe ) goto _test_eof199; case 199: switch( (*p) ) { case 48: goto st181; case 49: goto st186; case 50: goto st189; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st192; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st193; } else goto st193; goto st0; st200: if ( ++p == pe ) goto _test_eof200; case 200: switch( (*p) ) { case 46: goto st118; case 58: goto st199; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st201; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st196; } else goto st196; goto st0; st201: if ( ++p == pe ) goto _test_eof201; case 201: switch( (*p) ) { case 46: goto st118; case 58: goto st199; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st202; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st197; } else goto st197; goto st0; st202: if ( ++p == pe ) goto _test_eof202; case 202: switch( (*p) ) { case 46: goto st118; case 58: goto st199; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st198; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st198; } else goto st198; goto st0; st203: if ( ++p == pe ) goto _test_eof203; case 203: switch( (*p) ) { case 46: goto st118; case 53: goto st204; case 58: goto st199; case 93: goto tr180; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st201; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st196; } else if ( (*p) >= 65 ) goto st196; } else goto st205; goto st0; st204: if ( ++p == pe ) goto _test_eof204; case 204: switch( (*p) ) { case 46: goto st118; case 58: goto st199; case 93: goto tr180; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st202; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st197; } else if ( (*p) >= 65 ) goto st197; } else goto st197; goto st0; st205: if ( ++p == pe ) goto _test_eof205; case 205: switch( (*p) ) { case 46: goto st118; case 58: goto st199; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st197; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st197; } else goto st197; goto st0; st206: if ( ++p == pe ) goto _test_eof206; case 206: switch( (*p) ) { case 46: goto st118; case 58: goto st199; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st205; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st196; } else goto st196; goto st0; st207: if ( ++p == pe ) goto _test_eof207; case 207: switch( (*p) ) { case 58: goto st199; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st196; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st196; } else goto st196; goto st0; st208: if ( ++p == pe ) goto _test_eof208; case 208: switch( (*p) ) { case 48: goto st209; case 49: goto st214; case 50: goto st217; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st220; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st221; } else goto st221; goto st0; st209: if ( ++p == pe ) goto _test_eof209; case 209: switch( (*p) ) { case 46: goto st118; case 58: goto st213; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st210; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st210; } else goto st210; goto st0; st210: if ( ++p == pe ) goto _test_eof210; case 210: switch( (*p) ) { case 58: goto st213; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st211; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st211; } else goto st211; goto st0; st211: if ( ++p == pe ) goto _test_eof211; case 211: switch( (*p) ) { case 58: goto st213; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st212; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st212; } else goto st212; goto st0; st212: if ( ++p == pe ) goto _test_eof212; case 212: switch( (*p) ) { case 58: goto st213; case 93: goto tr180; } goto st0; st213: if ( ++p == pe ) goto _test_eof213; case 213: switch( (*p) ) { case 48: goto st195; case 49: goto st200; case 50: goto st203; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st206; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st207; } else goto st207; goto st0; st214: if ( ++p == pe ) goto _test_eof214; case 214: switch( (*p) ) { case 46: goto st118; case 58: goto st213; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st215; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st210; } else goto st210; goto st0; st215: if ( ++p == pe ) goto _test_eof215; case 215: switch( (*p) ) { case 46: goto st118; case 58: goto st213; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st216; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st211; } else goto st211; goto st0; st216: if ( ++p == pe ) goto _test_eof216; case 216: switch( (*p) ) { case 46: goto st118; case 58: goto st213; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st212; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st212; } else goto st212; goto st0; st217: if ( ++p == pe ) goto _test_eof217; case 217: switch( (*p) ) { case 46: goto st118; case 53: goto st218; case 58: goto st213; case 93: goto tr180; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st215; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st210; } else if ( (*p) >= 65 ) goto st210; } else goto st219; goto st0; st218: if ( ++p == pe ) goto _test_eof218; case 218: switch( (*p) ) { case 46: goto st118; case 58: goto st213; case 93: goto tr180; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st216; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st211; } else if ( (*p) >= 65 ) goto st211; } else goto st211; goto st0; st219: if ( ++p == pe ) goto _test_eof219; case 219: switch( (*p) ) { case 46: goto st118; case 58: goto st213; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st211; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st211; } else goto st211; goto st0; st220: if ( ++p == pe ) goto _test_eof220; case 220: switch( (*p) ) { case 46: goto st118; case 58: goto st213; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st219; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st210; } else goto st210; goto st0; st221: if ( ++p == pe ) goto _test_eof221; case 221: switch( (*p) ) { case 58: goto st213; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st210; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st210; } else goto st210; goto st0; st222: if ( ++p == pe ) goto _test_eof222; case 222: if ( (*p) == 58 ) goto st223; goto st0; st223: if ( ++p == pe ) goto _test_eof223; case 223: switch( (*p) ) { case 48: goto st224; case 49: goto st229; case 50: goto st232; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st235; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st236; } else goto st236; goto st0; st224: if ( ++p == pe ) goto _test_eof224; case 224: switch( (*p) ) { case 46: goto st118; case 58: goto st228; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st225; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st225; } else goto st225; goto st0; st225: if ( ++p == pe ) goto _test_eof225; case 225: switch( (*p) ) { case 58: goto st228; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st226; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st226; } else goto st226; goto st0; st226: if ( ++p == pe ) goto _test_eof226; case 226: switch( (*p) ) { case 58: goto st228; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st227; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st227; } else goto st227; goto st0; st227: if ( ++p == pe ) goto _test_eof227; case 227: switch( (*p) ) { case 58: goto st228; case 93: goto tr180; } goto st0; st228: if ( ++p == pe ) goto _test_eof228; case 228: switch( (*p) ) { case 48: goto st209; case 49: goto st214; case 50: goto st217; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st220; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st221; } else goto st221; goto st0; st229: if ( ++p == pe ) goto _test_eof229; case 229: switch( (*p) ) { case 46: goto st118; case 58: goto st228; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st230; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st225; } else goto st225; goto st0; st230: if ( ++p == pe ) goto _test_eof230; case 230: switch( (*p) ) { case 46: goto st118; case 58: goto st228; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st231; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st226; } else goto st226; goto st0; st231: if ( ++p == pe ) goto _test_eof231; case 231: switch( (*p) ) { case 46: goto st118; case 58: goto st228; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st227; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st227; } else goto st227; goto st0; st232: if ( ++p == pe ) goto _test_eof232; case 232: switch( (*p) ) { case 46: goto st118; case 53: goto st233; case 58: goto st228; case 93: goto tr180; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st230; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st225; } else if ( (*p) >= 65 ) goto st225; } else goto st234; goto st0; st233: if ( ++p == pe ) goto _test_eof233; case 233: switch( (*p) ) { case 46: goto st118; case 58: goto st228; case 93: goto tr180; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st231; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st226; } else if ( (*p) >= 65 ) goto st226; } else goto st226; goto st0; st234: if ( ++p == pe ) goto _test_eof234; case 234: switch( (*p) ) { case 46: goto st118; case 58: goto st228; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st226; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st226; } else goto st226; goto st0; st235: if ( ++p == pe ) goto _test_eof235; case 235: switch( (*p) ) { case 46: goto st118; case 58: goto st228; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st234; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st225; } else goto st225; goto st0; st236: if ( ++p == pe ) goto _test_eof236; case 236: switch( (*p) ) { case 58: goto st228; case 93: goto tr180; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st225; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st225; } else goto st225; goto st0; } _test_eof2: cs = 2; goto _test_eof; _test_eof3: cs = 3; goto _test_eof; _test_eof4: cs = 4; goto _test_eof; _test_eof5: cs = 5; goto _test_eof; _test_eof6: cs = 6; goto _test_eof; _test_eof7: cs = 7; goto _test_eof; _test_eof237: cs = 237; goto _test_eof; _test_eof238: cs = 238; goto _test_eof; _test_eof239: cs = 239; goto _test_eof; _test_eof240: cs = 240; goto _test_eof; _test_eof241: cs = 241; goto _test_eof; _test_eof8: cs = 8; goto _test_eof; _test_eof9: cs = 9; goto _test_eof; _test_eof10: cs = 10; goto _test_eof; _test_eof11: cs = 11; goto _test_eof; _test_eof12: cs = 12; goto _test_eof; _test_eof13: cs = 13; goto _test_eof; _test_eof14: cs = 14; goto _test_eof; _test_eof15: cs = 15; goto _test_eof; _test_eof16: cs = 16; goto _test_eof; _test_eof17: cs = 17; goto _test_eof; _test_eof18: cs = 18; goto _test_eof; _test_eof19: cs = 19; goto _test_eof; _test_eof20: cs = 20; goto _test_eof; _test_eof21: cs = 21; goto _test_eof; _test_eof22: cs = 22; goto _test_eof; _test_eof23: cs = 23; goto _test_eof; _test_eof24: cs = 24; goto _test_eof; _test_eof25: cs = 25; goto _test_eof; _test_eof26: cs = 26; goto _test_eof; _test_eof27: cs = 27; goto _test_eof; _test_eof28: cs = 28; goto _test_eof; _test_eof29: cs = 29; goto _test_eof; _test_eof30: cs = 30; goto _test_eof; _test_eof31: cs = 31; goto _test_eof; _test_eof32: cs = 32; goto _test_eof; _test_eof33: cs = 33; goto _test_eof; _test_eof34: cs = 34; goto _test_eof; _test_eof35: cs = 35; goto _test_eof; _test_eof36: cs = 36; goto _test_eof; _test_eof37: cs = 37; goto _test_eof; _test_eof38: cs = 38; goto _test_eof; _test_eof39: cs = 39; goto _test_eof; _test_eof40: cs = 40; goto _test_eof; _test_eof41: cs = 41; goto _test_eof; _test_eof42: cs = 42; goto _test_eof; _test_eof43: cs = 43; goto _test_eof; _test_eof44: cs = 44; goto _test_eof; _test_eof45: cs = 45; goto _test_eof; _test_eof46: cs = 46; goto _test_eof; _test_eof47: cs = 47; goto _test_eof; _test_eof48: cs = 48; goto _test_eof; _test_eof49: cs = 49; goto _test_eof; _test_eof50: cs = 50; goto _test_eof; _test_eof242: cs = 242; goto _test_eof; _test_eof243: cs = 243; goto _test_eof; _test_eof244: cs = 244; goto _test_eof; _test_eof245: cs = 245; goto _test_eof; _test_eof51: cs = 51; goto _test_eof; _test_eof52: cs = 52; goto _test_eof; _test_eof53: cs = 53; goto _test_eof; _test_eof54: cs = 54; goto _test_eof; _test_eof55: cs = 55; goto _test_eof; _test_eof56: cs = 56; goto _test_eof; _test_eof57: cs = 57; goto _test_eof; _test_eof58: cs = 58; goto _test_eof; _test_eof59: cs = 59; goto _test_eof; _test_eof60: cs = 60; goto _test_eof; _test_eof61: cs = 61; goto _test_eof; _test_eof62: cs = 62; goto _test_eof; _test_eof246: cs = 246; goto _test_eof; _test_eof247: cs = 247; goto _test_eof; _test_eof248: cs = 248; goto _test_eof; _test_eof63: cs = 63; goto _test_eof; _test_eof64: cs = 64; goto _test_eof; _test_eof65: cs = 65; goto _test_eof; _test_eof66: cs = 66; goto _test_eof; _test_eof67: cs = 67; goto _test_eof; _test_eof68: cs = 68; goto _test_eof; _test_eof69: cs = 69; goto _test_eof; _test_eof249: cs = 249; goto _test_eof; _test_eof70: cs = 70; goto _test_eof; _test_eof250: cs = 250; goto _test_eof; _test_eof251: cs = 251; goto _test_eof; _test_eof252: cs = 252; goto _test_eof; _test_eof253: cs = 253; goto _test_eof; _test_eof254: cs = 254; goto _test_eof; _test_eof71: cs = 71; goto _test_eof; _test_eof255: cs = 255; goto _test_eof; _test_eof256: cs = 256; goto _test_eof; _test_eof257: cs = 257; goto _test_eof; _test_eof258: cs = 258; goto _test_eof; _test_eof259: cs = 259; goto _test_eof; _test_eof260: cs = 260; goto _test_eof; _test_eof261: cs = 261; goto _test_eof; _test_eof262: cs = 262; goto _test_eof; _test_eof263: cs = 263; goto _test_eof; _test_eof264: cs = 264; goto _test_eof; _test_eof265: cs = 265; goto _test_eof; _test_eof266: cs = 266; goto _test_eof; _test_eof267: cs = 267; goto _test_eof; _test_eof72: cs = 72; goto _test_eof; _test_eof268: cs = 268; goto _test_eof; _test_eof269: cs = 269; goto _test_eof; _test_eof270: cs = 270; goto _test_eof; _test_eof271: cs = 271; goto _test_eof; _test_eof272: cs = 272; goto _test_eof; _test_eof273: cs = 273; goto _test_eof; _test_eof274: cs = 274; goto _test_eof; _test_eof275: cs = 275; goto _test_eof; _test_eof276: cs = 276; goto _test_eof; _test_eof277: cs = 277; goto _test_eof; _test_eof278: cs = 278; goto _test_eof; _test_eof279: cs = 279; goto _test_eof; _test_eof280: cs = 280; goto _test_eof; _test_eof73: cs = 73; goto _test_eof; _test_eof281: cs = 281; goto _test_eof; _test_eof282: cs = 282; goto _test_eof; _test_eof283: cs = 283; goto _test_eof; _test_eof284: cs = 284; goto _test_eof; _test_eof285: cs = 285; goto _test_eof; _test_eof286: cs = 286; goto _test_eof; _test_eof287: cs = 287; goto _test_eof; _test_eof288: cs = 288; goto _test_eof; _test_eof289: cs = 289; goto _test_eof; _test_eof290: cs = 290; goto _test_eof; _test_eof291: cs = 291; goto _test_eof; _test_eof292: cs = 292; goto _test_eof; _test_eof293: cs = 293; goto _test_eof; _test_eof74: cs = 74; goto _test_eof; _test_eof294: cs = 294; goto _test_eof; _test_eof295: cs = 295; goto _test_eof; _test_eof296: cs = 296; goto _test_eof; _test_eof297: cs = 297; goto _test_eof; _test_eof298: cs = 298; goto _test_eof; _test_eof299: cs = 299; goto _test_eof; _test_eof300: cs = 300; goto _test_eof; _test_eof301: cs = 301; goto _test_eof; _test_eof302: cs = 302; goto _test_eof; _test_eof303: cs = 303; goto _test_eof; _test_eof304: cs = 304; goto _test_eof; _test_eof305: cs = 305; goto _test_eof; _test_eof306: cs = 306; goto _test_eof; _test_eof75: cs = 75; goto _test_eof; _test_eof307: cs = 307; goto _test_eof; _test_eof308: cs = 308; goto _test_eof; _test_eof309: cs = 309; goto _test_eof; _test_eof310: cs = 310; goto _test_eof; _test_eof311: cs = 311; goto _test_eof; _test_eof312: cs = 312; goto _test_eof; _test_eof313: cs = 313; goto _test_eof; _test_eof314: cs = 314; goto _test_eof; _test_eof76: cs = 76; goto _test_eof; _test_eof77: cs = 77; goto _test_eof; _test_eof78: cs = 78; goto _test_eof; _test_eof79: cs = 79; goto _test_eof; _test_eof80: cs = 80; goto _test_eof; _test_eof81: cs = 81; goto _test_eof; _test_eof82: cs = 82; goto _test_eof; _test_eof83: cs = 83; goto _test_eof; _test_eof315: cs = 315; goto _test_eof; _test_eof316: cs = 316; goto _test_eof; _test_eof317: cs = 317; goto _test_eof; _test_eof318: cs = 318; goto _test_eof; _test_eof319: cs = 319; goto _test_eof; _test_eof84: cs = 84; goto _test_eof; _test_eof320: cs = 320; goto _test_eof; _test_eof321: cs = 321; goto _test_eof; _test_eof322: cs = 322; goto _test_eof; _test_eof323: cs = 323; goto _test_eof; _test_eof324: cs = 324; goto _test_eof; _test_eof325: cs = 325; goto _test_eof; _test_eof326: cs = 326; goto _test_eof; _test_eof327: cs = 327; goto _test_eof; _test_eof85: cs = 85; goto _test_eof; _test_eof86: cs = 86; goto _test_eof; _test_eof87: cs = 87; goto _test_eof; _test_eof88: cs = 88; goto _test_eof; _test_eof89: cs = 89; goto _test_eof; _test_eof90: cs = 90; goto _test_eof; _test_eof91: cs = 91; goto _test_eof; _test_eof92: cs = 92; goto _test_eof; _test_eof93: cs = 93; goto _test_eof; _test_eof94: cs = 94; goto _test_eof; _test_eof95: cs = 95; goto _test_eof; _test_eof96: cs = 96; goto _test_eof; _test_eof97: cs = 97; goto _test_eof; _test_eof98: cs = 98; goto _test_eof; _test_eof99: cs = 99; goto _test_eof; _test_eof100: cs = 100; goto _test_eof; _test_eof101: cs = 101; goto _test_eof; _test_eof102: cs = 102; goto _test_eof; _test_eof103: cs = 103; goto _test_eof; _test_eof104: cs = 104; goto _test_eof; _test_eof105: cs = 105; goto _test_eof; _test_eof106: cs = 106; goto _test_eof; _test_eof107: cs = 107; goto _test_eof; _test_eof108: cs = 108; goto _test_eof; _test_eof109: cs = 109; goto _test_eof; _test_eof110: cs = 110; goto _test_eof; _test_eof111: cs = 111; goto _test_eof; _test_eof112: cs = 112; goto _test_eof; _test_eof113: cs = 113; goto _test_eof; _test_eof114: cs = 114; goto _test_eof; _test_eof115: cs = 115; goto _test_eof; _test_eof116: cs = 116; goto _test_eof; _test_eof117: cs = 117; goto _test_eof; _test_eof118: cs = 118; goto _test_eof; _test_eof119: cs = 119; goto _test_eof; _test_eof120: cs = 120; goto _test_eof; _test_eof121: cs = 121; goto _test_eof; _test_eof122: cs = 122; goto _test_eof; _test_eof123: cs = 123; goto _test_eof; _test_eof124: cs = 124; goto _test_eof; _test_eof125: cs = 125; goto _test_eof; _test_eof126: cs = 126; goto _test_eof; _test_eof127: cs = 127; goto _test_eof; _test_eof128: cs = 128; goto _test_eof; _test_eof129: cs = 129; goto _test_eof; _test_eof130: cs = 130; goto _test_eof; _test_eof131: cs = 131; goto _test_eof; _test_eof132: cs = 132; goto _test_eof; _test_eof133: cs = 133; goto _test_eof; _test_eof134: cs = 134; goto _test_eof; _test_eof135: cs = 135; goto _test_eof; _test_eof136: cs = 136; goto _test_eof; _test_eof137: cs = 137; goto _test_eof; _test_eof138: cs = 138; goto _test_eof; _test_eof139: cs = 139; goto _test_eof; _test_eof140: cs = 140; goto _test_eof; _test_eof141: cs = 141; goto _test_eof; _test_eof142: cs = 142; goto _test_eof; _test_eof143: cs = 143; goto _test_eof; _test_eof144: cs = 144; goto _test_eof; _test_eof145: cs = 145; goto _test_eof; _test_eof146: cs = 146; goto _test_eof; _test_eof147: cs = 147; goto _test_eof; _test_eof148: cs = 148; goto _test_eof; _test_eof149: cs = 149; goto _test_eof; _test_eof150: cs = 150; goto _test_eof; _test_eof151: cs = 151; goto _test_eof; _test_eof152: cs = 152; goto _test_eof; _test_eof153: cs = 153; goto _test_eof; _test_eof154: cs = 154; goto _test_eof; _test_eof155: cs = 155; goto _test_eof; _test_eof156: cs = 156; goto _test_eof; _test_eof157: cs = 157; goto _test_eof; _test_eof158: cs = 158; goto _test_eof; _test_eof159: cs = 159; goto _test_eof; _test_eof160: cs = 160; goto _test_eof; _test_eof161: cs = 161; goto _test_eof; _test_eof162: cs = 162; goto _test_eof; _test_eof163: cs = 163; goto _test_eof; _test_eof164: cs = 164; goto _test_eof; _test_eof165: cs = 165; goto _test_eof; _test_eof166: cs = 166; goto _test_eof; _test_eof167: cs = 167; goto _test_eof; _test_eof168: cs = 168; goto _test_eof; _test_eof169: cs = 169; goto _test_eof; _test_eof170: cs = 170; goto _test_eof; _test_eof171: cs = 171; goto _test_eof; _test_eof172: cs = 172; goto _test_eof; _test_eof173: cs = 173; goto _test_eof; _test_eof174: cs = 174; goto _test_eof; _test_eof175: cs = 175; goto _test_eof; _test_eof176: cs = 176; goto _test_eof; _test_eof177: cs = 177; goto _test_eof; _test_eof178: cs = 178; goto _test_eof; _test_eof179: cs = 179; goto _test_eof; _test_eof180: cs = 180; goto _test_eof; _test_eof181: cs = 181; goto _test_eof; _test_eof182: cs = 182; goto _test_eof; _test_eof183: cs = 183; goto _test_eof; _test_eof184: cs = 184; goto _test_eof; _test_eof185: cs = 185; goto _test_eof; _test_eof186: cs = 186; goto _test_eof; _test_eof187: cs = 187; goto _test_eof; _test_eof188: cs = 188; goto _test_eof; _test_eof189: cs = 189; goto _test_eof; _test_eof190: cs = 190; goto _test_eof; _test_eof191: cs = 191; goto _test_eof; _test_eof192: cs = 192; goto _test_eof; _test_eof193: cs = 193; goto _test_eof; _test_eof194: cs = 194; goto _test_eof; _test_eof195: cs = 195; goto _test_eof; _test_eof196: cs = 196; goto _test_eof; _test_eof197: cs = 197; goto _test_eof; _test_eof198: cs = 198; goto _test_eof; _test_eof199: cs = 199; goto _test_eof; _test_eof200: cs = 200; goto _test_eof; _test_eof201: cs = 201; goto _test_eof; _test_eof202: cs = 202; goto _test_eof; _test_eof203: cs = 203; goto _test_eof; _test_eof204: cs = 204; goto _test_eof; _test_eof205: cs = 205; goto _test_eof; _test_eof206: cs = 206; goto _test_eof; _test_eof207: cs = 207; goto _test_eof; _test_eof208: cs = 208; goto _test_eof; _test_eof209: cs = 209; goto _test_eof; _test_eof210: cs = 210; goto _test_eof; _test_eof211: cs = 211; goto _test_eof; _test_eof212: cs = 212; goto _test_eof; _test_eof213: cs = 213; goto _test_eof; _test_eof214: cs = 214; goto _test_eof; _test_eof215: cs = 215; goto _test_eof; _test_eof216: cs = 216; goto _test_eof; _test_eof217: cs = 217; goto _test_eof; _test_eof218: cs = 218; goto _test_eof; _test_eof219: cs = 219; goto _test_eof; _test_eof220: cs = 220; goto _test_eof; _test_eof221: cs = 221; goto _test_eof; _test_eof222: cs = 222; goto _test_eof; _test_eof223: cs = 223; goto _test_eof; _test_eof224: cs = 224; goto _test_eof; _test_eof225: cs = 225; goto _test_eof; _test_eof226: cs = 226; goto _test_eof; _test_eof227: cs = 227; goto _test_eof; _test_eof228: cs = 228; goto _test_eof; _test_eof229: cs = 229; goto _test_eof; _test_eof230: cs = 230; goto _test_eof; _test_eof231: cs = 231; goto _test_eof; _test_eof232: cs = 232; goto _test_eof; _test_eof233: cs = 233; goto _test_eof; _test_eof234: cs = 234; goto _test_eof; _test_eof235: cs = 235; goto _test_eof; _test_eof236: cs = 236; goto _test_eof; _test_eof: {} _out: {} } #line 47 "ip_utils.rl" if(len != p-str) return ip_type_error; else return ip_type; } ================================================ FILE: ext/utils/ip_utils.h ================================================ #ifndef ip_utils_h #define ip_utils_h #include #include #include #include #include // inet_pton() enum enum_ip_type { ip_type_ipv4 = 1, ip_type_ipv6, ip_type_ipv6_reference, ip_type_error }; enum enum_ip_type utils_ip_parser_execute(const char *str, size_t len); /*! \brief Return 1 if both pure IP's are equal, 0 otherwise. */ static int utils_compare_pure_ips(char *ip1, size_t len1, enum enum_ip_type ip1_type, char *ip2, size_t len2, enum enum_ip_type ip2_type) { struct in_addr in_addr1, in_addr2; struct in6_addr in6_addr1, in6_addr2; char _ip1[INET6_ADDRSTRLEN+1], _ip2[INET6_ADDRSTRLEN+1]; /* Not same IP type, return false. */ if (ip1_type != ip2_type) return 0; memcpy(_ip1, ip1, len1); _ip1[len1] = '\0'; memcpy(_ip2, ip2, len2); _ip2[len2] = '\0'; switch(ip1_type) { /* Comparing IPv4 with IPv4. */ case(ip_type_ipv4): if (inet_pton(AF_INET, _ip1, &in_addr1) == 0) return 0; if (inet_pton(AF_INET, _ip2, &in_addr2) == 0) return 0; if (in_addr1.s_addr == in_addr2.s_addr) return 1; else return 0; break; /* Comparing IPv6 with IPv6. */ case(ip_type_ipv6): if (inet_pton(AF_INET6, _ip1, &in6_addr1) != 1) return 0; if (inet_pton(AF_INET6, _ip2, &in6_addr2) != 1) return 0; if (memcmp(in6_addr1.s6_addr, in6_addr2.s6_addr, sizeof(in6_addr1.s6_addr)) == 0) return 1; else return 0; break; default: return 0; break; } } #endif ================================================ FILE: ext/utils/ip_utils.rl ================================================ #include #include "ip_utils.h" /** machine **/ %%{ machine utils_ip_parser; action is_ipv4 { ip_type = ip_type_ipv4; } action is_ipv6 { ip_type = ip_type_ipv6; } action is_ipv6_reference { ip_type = ip_type_ipv6_reference; } include grammar_ip "grammar_ip.rl"; IPv6reference = "[" IPv6address "]"; main := IPv4address @is_ipv4 | IPv6address @is_ipv6 | IPv6reference @is_ipv6_reference; }%% /** Data **/ %% write data; /** exec **/ enum enum_ip_type utils_ip_parser_execute(const char *str, size_t len) { int cs = 0; const char *p, *pe; enum enum_ip_type ip_type = ip_type_error; p = str; pe = str+len; %% write init; %% write exec; if(len != p-str) return ip_type_error; else return ip_type; } ================================================ FILE: ext/utils/outbound_utils.c ================================================ #line 1 "outbound_utils.rl" #include #include #include "outbound_utils.h" /** machine **/ #line 39 "outbound_utils.rl" /** Data **/ #line 16 "outbound_utils.c" static const int utils_outbound_udp_flow_token_parser_start = 1; static const int utils_outbound_udp_flow_token_parser_first_final = 182; static const int utils_outbound_udp_flow_token_parser_error = 0; static const int utils_outbound_udp_flow_token_parser_en_main = 1; #line 43 "outbound_utils.rl" /** exec **/ /* * Expects a string like "1.2.3.4_5060" or "1af:43::ab_9090" (no "_" at the beginning). */ struct_outbound_udp_flow_token outbound_udp_flow_token_parser_execute(const char *str, size_t len) { int cs = 0; const char *p, *pe; size_t mark; int finished = 0; struct_outbound_udp_flow_token outbound_udp_flow_token; p = str; pe = str+len; outbound_udp_flow_token.valid = 0; outbound_udp_flow_token.ip_s = 0; outbound_udp_flow_token.ip_len = 0; outbound_udp_flow_token.port_s = 0; outbound_udp_flow_token.port_len = 0; #line 49 "outbound_utils.c" { cs = utils_outbound_udp_flow_token_parser_start; } #line 67 "outbound_utils.rl" #line 56 "outbound_utils.c" { if ( p == pe ) goto _test_eof; switch ( cs ) { case 1: switch( (*p) ) { case 48: goto tr0; case 49: goto tr2; case 50: goto tr3; case 58: goto tr5; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto tr4; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto tr6; } else goto tr6; goto st0; st0: cs = 0; goto _out; tr0: #line 19 "outbound_utils.rl" { outbound_udp_flow_token.ip_s = (size_t)p; } goto st2; st2: if ( ++p == pe ) goto _test_eof2; case 2: #line 91 "outbound_utils.c" switch( (*p) ) { case 46: goto st3; case 58: goto st28; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st25; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st25; } else goto st25; goto st0; st3: if ( ++p == pe ) goto _test_eof3; case 3: switch( (*p) ) { case 48: goto st4; case 49: goto st21; case 50: goto st23; } if ( 51 <= (*p) && (*p) <= 57 ) goto st22; goto st0; st4: if ( ++p == pe ) goto _test_eof4; case 4: if ( (*p) == 46 ) goto st5; goto st0; st5: if ( ++p == pe ) goto _test_eof5; case 5: switch( (*p) ) { case 48: goto st6; case 49: goto st17; case 50: goto st19; } if ( 51 <= (*p) && (*p) <= 57 ) goto st18; goto st0; st6: if ( ++p == pe ) goto _test_eof6; case 6: if ( (*p) == 46 ) goto st7; goto st0; st7: if ( ++p == pe ) goto _test_eof7; case 7: switch( (*p) ) { case 48: goto st8; case 49: goto st13; case 50: goto st15; } if ( 51 <= (*p) && (*p) <= 57 ) goto st14; goto st0; st8: if ( ++p == pe ) goto _test_eof8; case 8: if ( (*p) == 95 ) goto tr24; goto st0; tr24: #line 11 "outbound_utils.rl" { outbound_udp_flow_token.ip_type = outbound_udp_flow_token_ip_type_ipv4; } #line 23 "outbound_utils.rl" { outbound_udp_flow_token.ip_len = (size_t)p - outbound_udp_flow_token.ip_s; } goto st9; tr92: #line 15 "outbound_utils.rl" { outbound_udp_flow_token.ip_type = outbound_udp_flow_token_ip_type_ipv6; } #line 23 "outbound_utils.rl" { outbound_udp_flow_token.ip_len = (size_t)p - outbound_udp_flow_token.ip_s; } goto st9; st9: if ( ++p == pe ) goto _test_eof9; case 9: #line 186 "outbound_utils.c" switch( (*p) ) { case 48: goto tr25; case 54: goto tr27; } if ( (*p) > 53 ) { if ( 55 <= (*p) && (*p) <= 57 ) goto tr28; } else if ( (*p) >= 49 ) goto tr26; goto st0; tr25: #line 27 "outbound_utils.rl" { outbound_udp_flow_token.port_s = (size_t)p; } goto st10; st10: if ( ++p == pe ) goto _test_eof10; case 10: #line 207 "outbound_utils.c" if ( (*p) == 48 ) goto st11; if ( 49 <= (*p) && (*p) <= 57 ) goto tr30; goto st0; st11: if ( ++p == pe ) goto _test_eof11; case 11: if ( (*p) == 48 ) goto st12; if ( 49 <= (*p) && (*p) <= 57 ) goto tr32; goto st0; st12: if ( ++p == pe ) goto _test_eof12; case 12: if ( 49 <= (*p) && (*p) <= 57 ) goto tr33; goto st0; tr33: #line 31 "outbound_utils.rl" { outbound_udp_flow_token.port_len = (size_t)p - outbound_udp_flow_token.port_s + 1; finished = 1; } goto st182; st182: if ( ++p == pe ) goto _test_eof182; case 182: #line 240 "outbound_utils.c" goto st0; tr32: #line 31 "outbound_utils.rl" { outbound_udp_flow_token.port_len = (size_t)p - outbound_udp_flow_token.port_s + 1; finished = 1; } goto st183; st183: if ( ++p == pe ) goto _test_eof183; case 183: #line 253 "outbound_utils.c" if ( 48 <= (*p) && (*p) <= 57 ) goto tr33; goto st0; tr30: #line 31 "outbound_utils.rl" { outbound_udp_flow_token.port_len = (size_t)p - outbound_udp_flow_token.port_s + 1; finished = 1; } goto st184; st184: if ( ++p == pe ) goto _test_eof184; case 184: #line 268 "outbound_utils.c" if ( 48 <= (*p) && (*p) <= 57 ) goto tr32; goto st0; tr26: #line 27 "outbound_utils.rl" { outbound_udp_flow_token.port_s = (size_t)p; } #line 31 "outbound_utils.rl" { outbound_udp_flow_token.port_len = (size_t)p - outbound_udp_flow_token.port_s + 1; finished = 1; } goto st185; st185: if ( ++p == pe ) goto _test_eof185; case 185: #line 287 "outbound_utils.c" if ( 48 <= (*p) && (*p) <= 57 ) goto tr188; goto st0; tr28: #line 27 "outbound_utils.rl" { outbound_udp_flow_token.port_s = (size_t)p; } #line 31 "outbound_utils.rl" { outbound_udp_flow_token.port_len = (size_t)p - outbound_udp_flow_token.port_s + 1; finished = 1; } goto st186; tr188: #line 31 "outbound_utils.rl" { outbound_udp_flow_token.port_len = (size_t)p - outbound_udp_flow_token.port_s + 1; finished = 1; } goto st186; st186: if ( ++p == pe ) goto _test_eof186; case 186: #line 313 "outbound_utils.c" if ( 48 <= (*p) && (*p) <= 57 ) goto tr30; goto st0; tr27: #line 27 "outbound_utils.rl" { outbound_udp_flow_token.port_s = (size_t)p; } #line 31 "outbound_utils.rl" { outbound_udp_flow_token.port_len = (size_t)p - outbound_udp_flow_token.port_s + 1; finished = 1; } goto st187; st187: if ( ++p == pe ) goto _test_eof187; case 187: #line 332 "outbound_utils.c" if ( (*p) == 53 ) goto tr189; if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto tr30; } else if ( (*p) >= 48 ) goto tr188; goto st0; tr189: #line 31 "outbound_utils.rl" { outbound_udp_flow_token.port_len = (size_t)p - outbound_udp_flow_token.port_s + 1; finished = 1; } goto st188; st188: if ( ++p == pe ) goto _test_eof188; case 188: #line 352 "outbound_utils.c" if ( (*p) == 53 ) goto tr190; if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto tr32; } else if ( (*p) >= 48 ) goto tr30; goto st0; tr190: #line 31 "outbound_utils.rl" { outbound_udp_flow_token.port_len = (size_t)p - outbound_udp_flow_token.port_s + 1; finished = 1; } goto st189; st189: if ( ++p == pe ) goto _test_eof189; case 189: #line 372 "outbound_utils.c" if ( (*p) == 51 ) goto tr191; if ( (*p) > 50 ) { if ( 52 <= (*p) && (*p) <= 57 ) goto tr33; } else if ( (*p) >= 48 ) goto tr32; goto st0; tr191: #line 31 "outbound_utils.rl" { outbound_udp_flow_token.port_len = (size_t)p - outbound_udp_flow_token.port_s + 1; finished = 1; } goto st190; st190: if ( ++p == pe ) goto _test_eof190; case 190: #line 392 "outbound_utils.c" if ( 48 <= (*p) && (*p) <= 53 ) goto tr33; goto st0; st13: if ( ++p == pe ) goto _test_eof13; case 13: if ( (*p) == 95 ) goto tr24; if ( 48 <= (*p) && (*p) <= 57 ) goto st14; goto st0; st14: if ( ++p == pe ) goto _test_eof14; case 14: if ( (*p) == 95 ) goto tr24; if ( 48 <= (*p) && (*p) <= 57 ) goto st8; goto st0; st15: if ( ++p == pe ) goto _test_eof15; case 15: switch( (*p) ) { case 53: goto st16; case 95: goto tr24; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st8; } else if ( (*p) >= 48 ) goto st14; goto st0; st16: if ( ++p == pe ) goto _test_eof16; case 16: if ( (*p) == 95 ) goto tr24; if ( 48 <= (*p) && (*p) <= 53 ) goto st8; goto st0; st17: if ( ++p == pe ) goto _test_eof17; case 17: if ( (*p) == 46 ) goto st7; if ( 48 <= (*p) && (*p) <= 57 ) goto st18; goto st0; st18: if ( ++p == pe ) goto _test_eof18; case 18: if ( (*p) == 46 ) goto st7; if ( 48 <= (*p) && (*p) <= 57 ) goto st6; goto st0; st19: if ( ++p == pe ) goto _test_eof19; case 19: switch( (*p) ) { case 46: goto st7; case 53: goto st20; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st6; } else if ( (*p) >= 48 ) goto st18; goto st0; st20: if ( ++p == pe ) goto _test_eof20; case 20: if ( (*p) == 46 ) goto st7; if ( 48 <= (*p) && (*p) <= 53 ) goto st6; goto st0; st21: if ( ++p == pe ) goto _test_eof21; case 21: if ( (*p) == 46 ) goto st5; if ( 48 <= (*p) && (*p) <= 57 ) goto st22; goto st0; st22: if ( ++p == pe ) goto _test_eof22; case 22: if ( (*p) == 46 ) goto st5; if ( 48 <= (*p) && (*p) <= 57 ) goto st4; goto st0; st23: if ( ++p == pe ) goto _test_eof23; case 23: switch( (*p) ) { case 46: goto st5; case 53: goto st24; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st4; } else if ( (*p) >= 48 ) goto st22; goto st0; st24: if ( ++p == pe ) goto _test_eof24; case 24: if ( (*p) == 46 ) goto st5; if ( 48 <= (*p) && (*p) <= 53 ) goto st4; goto st0; st25: if ( ++p == pe ) goto _test_eof25; case 25: if ( (*p) == 58 ) goto st28; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st26; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st26; } else goto st26; goto st0; st26: if ( ++p == pe ) goto _test_eof26; case 26: if ( (*p) == 58 ) goto st28; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st27; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st27; } else goto st27; goto st0; st27: if ( ++p == pe ) goto _test_eof27; case 27: if ( (*p) == 58 ) goto st28; goto st0; st28: if ( ++p == pe ) goto _test_eof28; case 28: if ( (*p) == 58 ) goto st145; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st29; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st29; } else goto st29; goto st0; st29: if ( ++p == pe ) goto _test_eof29; case 29: if ( (*p) == 58 ) goto st33; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st30; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st30; } else goto st30; goto st0; st30: if ( ++p == pe ) goto _test_eof30; case 30: if ( (*p) == 58 ) goto st33; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st31; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st31; } else goto st31; goto st0; st31: if ( ++p == pe ) goto _test_eof31; case 31: if ( (*p) == 58 ) goto st33; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st32; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st32; } else goto st32; goto st0; st32: if ( ++p == pe ) goto _test_eof32; case 32: if ( (*p) == 58 ) goto st33; goto st0; st33: if ( ++p == pe ) goto _test_eof33; case 33: if ( (*p) == 58 ) goto st131; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st34; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st34; } else goto st34; goto st0; st34: if ( ++p == pe ) goto _test_eof34; case 34: if ( (*p) == 58 ) goto st38; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st35; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st35; } else goto st35; goto st0; st35: if ( ++p == pe ) goto _test_eof35; case 35: if ( (*p) == 58 ) goto st38; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st36; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st36; } else goto st36; goto st0; st36: if ( ++p == pe ) goto _test_eof36; case 36: if ( (*p) == 58 ) goto st38; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st37; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st37; } else goto st37; goto st0; st37: if ( ++p == pe ) goto _test_eof37; case 37: if ( (*p) == 58 ) goto st38; goto st0; st38: if ( ++p == pe ) goto _test_eof38; case 38: if ( (*p) == 58 ) goto st117; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st39; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st39; } else goto st39; goto st0; st39: if ( ++p == pe ) goto _test_eof39; case 39: if ( (*p) == 58 ) goto st43; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st40; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st40; } else goto st40; goto st0; st40: if ( ++p == pe ) goto _test_eof40; case 40: if ( (*p) == 58 ) goto st43; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st41; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st41; } else goto st41; goto st0; st41: if ( ++p == pe ) goto _test_eof41; case 41: if ( (*p) == 58 ) goto st43; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st42; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st42; } else goto st42; goto st0; st42: if ( ++p == pe ) goto _test_eof42; case 42: if ( (*p) == 58 ) goto st43; goto st0; st43: if ( ++p == pe ) goto _test_eof43; case 43: if ( (*p) == 58 ) goto st103; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st44; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st44; } else goto st44; goto st0; st44: if ( ++p == pe ) goto _test_eof44; case 44: if ( (*p) == 58 ) goto st48; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st45; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st45; } else goto st45; goto st0; st45: if ( ++p == pe ) goto _test_eof45; case 45: if ( (*p) == 58 ) goto st48; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st46; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st46; } else goto st46; goto st0; st46: if ( ++p == pe ) goto _test_eof46; case 46: if ( (*p) == 58 ) goto st48; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st47; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st47; } else goto st47; goto st0; st47: if ( ++p == pe ) goto _test_eof47; case 47: if ( (*p) == 58 ) goto st48; goto st0; st48: if ( ++p == pe ) goto _test_eof48; case 48: if ( (*p) == 58 ) goto st89; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st49; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st49; } else goto st49; goto st0; st49: if ( ++p == pe ) goto _test_eof49; case 49: if ( (*p) == 58 ) goto st53; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st50; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st50; } else goto st50; goto st0; st50: if ( ++p == pe ) goto _test_eof50; case 50: if ( (*p) == 58 ) goto st53; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st51; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st51; } else goto st51; goto st0; st51: if ( ++p == pe ) goto _test_eof51; case 51: if ( (*p) == 58 ) goto st53; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st52; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st52; } else goto st52; goto st0; st52: if ( ++p == pe ) goto _test_eof52; case 52: if ( (*p) == 58 ) goto st53; goto st0; st53: if ( ++p == pe ) goto _test_eof53; case 53: switch( (*p) ) { case 48: goto st54; case 49: goto st80; case 50: goto st83; case 58: goto st87; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st86; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st88; } else goto st88; goto st0; st54: if ( ++p == pe ) goto _test_eof54; case 54: switch( (*p) ) { case 46: goto st55; case 58: goto st76; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st73; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st73; } else goto st73; goto st0; st55: if ( ++p == pe ) goto _test_eof55; case 55: switch( (*p) ) { case 48: goto st56; case 49: goto st69; case 50: goto st71; } if ( 51 <= (*p) && (*p) <= 57 ) goto st70; goto st0; st56: if ( ++p == pe ) goto _test_eof56; case 56: if ( (*p) == 46 ) goto st57; goto st0; st57: if ( ++p == pe ) goto _test_eof57; case 57: switch( (*p) ) { case 48: goto st58; case 49: goto st65; case 50: goto st67; } if ( 51 <= (*p) && (*p) <= 57 ) goto st66; goto st0; st58: if ( ++p == pe ) goto _test_eof58; case 58: if ( (*p) == 46 ) goto st59; goto st0; st59: if ( ++p == pe ) goto _test_eof59; case 59: switch( (*p) ) { case 48: goto st60; case 49: goto st61; case 50: goto st63; } if ( 51 <= (*p) && (*p) <= 57 ) goto st62; goto st0; st60: if ( ++p == pe ) goto _test_eof60; case 60: if ( (*p) == 95 ) goto tr92; goto st0; st61: if ( ++p == pe ) goto _test_eof61; case 61: if ( (*p) == 95 ) goto tr92; if ( 48 <= (*p) && (*p) <= 57 ) goto st62; goto st0; st62: if ( ++p == pe ) goto _test_eof62; case 62: if ( (*p) == 95 ) goto tr92; if ( 48 <= (*p) && (*p) <= 57 ) goto st60; goto st0; st63: if ( ++p == pe ) goto _test_eof63; case 63: switch( (*p) ) { case 53: goto st64; case 95: goto tr92; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st60; } else if ( (*p) >= 48 ) goto st62; goto st0; st64: if ( ++p == pe ) goto _test_eof64; case 64: if ( (*p) == 95 ) goto tr92; if ( 48 <= (*p) && (*p) <= 53 ) goto st60; goto st0; st65: if ( ++p == pe ) goto _test_eof65; case 65: if ( (*p) == 46 ) goto st59; if ( 48 <= (*p) && (*p) <= 57 ) goto st66; goto st0; st66: if ( ++p == pe ) goto _test_eof66; case 66: if ( (*p) == 46 ) goto st59; if ( 48 <= (*p) && (*p) <= 57 ) goto st58; goto st0; st67: if ( ++p == pe ) goto _test_eof67; case 67: switch( (*p) ) { case 46: goto st59; case 53: goto st68; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st58; } else if ( (*p) >= 48 ) goto st66; goto st0; st68: if ( ++p == pe ) goto _test_eof68; case 68: if ( (*p) == 46 ) goto st59; if ( 48 <= (*p) && (*p) <= 53 ) goto st58; goto st0; st69: if ( ++p == pe ) goto _test_eof69; case 69: if ( (*p) == 46 ) goto st57; if ( 48 <= (*p) && (*p) <= 57 ) goto st70; goto st0; st70: if ( ++p == pe ) goto _test_eof70; case 70: if ( (*p) == 46 ) goto st57; if ( 48 <= (*p) && (*p) <= 57 ) goto st56; goto st0; st71: if ( ++p == pe ) goto _test_eof71; case 71: switch( (*p) ) { case 46: goto st57; case 53: goto st72; } if ( (*p) > 52 ) { if ( 54 <= (*p) && (*p) <= 57 ) goto st56; } else if ( (*p) >= 48 ) goto st70; goto st0; st72: if ( ++p == pe ) goto _test_eof72; case 72: if ( (*p) == 46 ) goto st57; if ( 48 <= (*p) && (*p) <= 53 ) goto st56; goto st0; st73: if ( ++p == pe ) goto _test_eof73; case 73: if ( (*p) == 58 ) goto st76; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st74; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st74; } else goto st74; goto st0; st74: if ( ++p == pe ) goto _test_eof74; case 74: if ( (*p) == 58 ) goto st76; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st75; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st75; } else goto st75; goto st0; st75: if ( ++p == pe ) goto _test_eof75; case 75: if ( (*p) == 58 ) goto st76; goto st0; st76: if ( ++p == pe ) goto _test_eof76; case 76: if ( (*p) == 58 ) goto st60; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st77; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st77; } else goto st77; goto st0; st77: if ( ++p == pe ) goto _test_eof77; case 77: if ( (*p) == 95 ) goto tr92; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st78; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st78; } else goto st78; goto st0; st78: if ( ++p == pe ) goto _test_eof78; case 78: if ( (*p) == 95 ) goto tr92; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st79; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st79; } else goto st79; goto st0; st79: if ( ++p == pe ) goto _test_eof79; case 79: if ( (*p) == 95 ) goto tr92; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st60; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st60; } else goto st60; goto st0; st80: if ( ++p == pe ) goto _test_eof80; case 80: switch( (*p) ) { case 46: goto st55; case 58: goto st76; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st81; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st73; } else goto st73; goto st0; st81: if ( ++p == pe ) goto _test_eof81; case 81: switch( (*p) ) { case 46: goto st55; case 58: goto st76; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st82; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st74; } else goto st74; goto st0; st82: if ( ++p == pe ) goto _test_eof82; case 82: switch( (*p) ) { case 46: goto st55; case 58: goto st76; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st75; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st75; } else goto st75; goto st0; st83: if ( ++p == pe ) goto _test_eof83; case 83: switch( (*p) ) { case 46: goto st55; case 53: goto st84; case 58: goto st76; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st81; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st73; } else if ( (*p) >= 65 ) goto st73; } else goto st85; goto st0; st84: if ( ++p == pe ) goto _test_eof84; case 84: switch( (*p) ) { case 46: goto st55; case 58: goto st76; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st82; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st74; } else if ( (*p) >= 65 ) goto st74; } else goto st74; goto st0; st85: if ( ++p == pe ) goto _test_eof85; case 85: switch( (*p) ) { case 46: goto st55; case 58: goto st76; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st74; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st74; } else goto st74; goto st0; st86: if ( ++p == pe ) goto _test_eof86; case 86: switch( (*p) ) { case 46: goto st55; case 58: goto st76; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st85; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st73; } else goto st73; goto st0; st87: if ( ++p == pe ) goto _test_eof87; case 87: if ( (*p) == 95 ) goto tr92; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st77; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st77; } else goto st77; goto st0; st88: if ( ++p == pe ) goto _test_eof88; case 88: if ( (*p) == 58 ) goto st76; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st73; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st73; } else goto st73; goto st0; st89: if ( ++p == pe ) goto _test_eof89; case 89: switch( (*p) ) { case 48: goto st90; case 49: goto st95; case 50: goto st98; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st101; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st102; } else goto st102; goto st0; st90: if ( ++p == pe ) goto _test_eof90; case 90: switch( (*p) ) { case 46: goto st55; case 58: goto st94; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st91; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st91; } else goto st91; goto st0; st91: if ( ++p == pe ) goto _test_eof91; case 91: switch( (*p) ) { case 58: goto st94; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st92; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st92; } else goto st92; goto st0; st92: if ( ++p == pe ) goto _test_eof92; case 92: switch( (*p) ) { case 58: goto st94; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st93; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st93; } else goto st93; goto st0; st93: if ( ++p == pe ) goto _test_eof93; case 93: switch( (*p) ) { case 58: goto st94; case 95: goto tr92; } goto st0; st94: if ( ++p == pe ) goto _test_eof94; case 94: if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st77; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st77; } else goto st77; goto st0; st95: if ( ++p == pe ) goto _test_eof95; case 95: switch( (*p) ) { case 46: goto st55; case 58: goto st94; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st96; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st91; } else goto st91; goto st0; st96: if ( ++p == pe ) goto _test_eof96; case 96: switch( (*p) ) { case 46: goto st55; case 58: goto st94; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st97; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st92; } else goto st92; goto st0; st97: if ( ++p == pe ) goto _test_eof97; case 97: switch( (*p) ) { case 46: goto st55; case 58: goto st94; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st93; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st93; } else goto st93; goto st0; st98: if ( ++p == pe ) goto _test_eof98; case 98: switch( (*p) ) { case 46: goto st55; case 53: goto st99; case 58: goto st94; case 95: goto tr92; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st96; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st91; } else if ( (*p) >= 65 ) goto st91; } else goto st100; goto st0; st99: if ( ++p == pe ) goto _test_eof99; case 99: switch( (*p) ) { case 46: goto st55; case 58: goto st94; case 95: goto tr92; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st97; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st92; } else if ( (*p) >= 65 ) goto st92; } else goto st92; goto st0; st100: if ( ++p == pe ) goto _test_eof100; case 100: switch( (*p) ) { case 46: goto st55; case 58: goto st94; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st92; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st92; } else goto st92; goto st0; st101: if ( ++p == pe ) goto _test_eof101; case 101: switch( (*p) ) { case 46: goto st55; case 58: goto st94; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st100; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st91; } else goto st91; goto st0; st102: if ( ++p == pe ) goto _test_eof102; case 102: switch( (*p) ) { case 58: goto st94; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st91; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st91; } else goto st91; goto st0; st103: if ( ++p == pe ) goto _test_eof103; case 103: switch( (*p) ) { case 48: goto st104; case 49: goto st109; case 50: goto st112; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st115; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st116; } else goto st116; goto st0; st104: if ( ++p == pe ) goto _test_eof104; case 104: switch( (*p) ) { case 46: goto st55; case 58: goto st108; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st105; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st105; } else goto st105; goto st0; st105: if ( ++p == pe ) goto _test_eof105; case 105: switch( (*p) ) { case 58: goto st108; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st106; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st106; } else goto st106; goto st0; st106: if ( ++p == pe ) goto _test_eof106; case 106: switch( (*p) ) { case 58: goto st108; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st107; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st107; } else goto st107; goto st0; st107: if ( ++p == pe ) goto _test_eof107; case 107: switch( (*p) ) { case 58: goto st108; case 95: goto tr92; } goto st0; st108: if ( ++p == pe ) goto _test_eof108; case 108: switch( (*p) ) { case 48: goto st90; case 49: goto st95; case 50: goto st98; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st101; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st102; } else goto st102; goto st0; st109: if ( ++p == pe ) goto _test_eof109; case 109: switch( (*p) ) { case 46: goto st55; case 58: goto st108; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st110; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st105; } else goto st105; goto st0; st110: if ( ++p == pe ) goto _test_eof110; case 110: switch( (*p) ) { case 46: goto st55; case 58: goto st108; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st111; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st106; } else goto st106; goto st0; st111: if ( ++p == pe ) goto _test_eof111; case 111: switch( (*p) ) { case 46: goto st55; case 58: goto st108; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st107; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st107; } else goto st107; goto st0; st112: if ( ++p == pe ) goto _test_eof112; case 112: switch( (*p) ) { case 46: goto st55; case 53: goto st113; case 58: goto st108; case 95: goto tr92; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st110; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st105; } else if ( (*p) >= 65 ) goto st105; } else goto st114; goto st0; st113: if ( ++p == pe ) goto _test_eof113; case 113: switch( (*p) ) { case 46: goto st55; case 58: goto st108; case 95: goto tr92; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st111; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st106; } else if ( (*p) >= 65 ) goto st106; } else goto st106; goto st0; st114: if ( ++p == pe ) goto _test_eof114; case 114: switch( (*p) ) { case 46: goto st55; case 58: goto st108; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st106; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st106; } else goto st106; goto st0; st115: if ( ++p == pe ) goto _test_eof115; case 115: switch( (*p) ) { case 46: goto st55; case 58: goto st108; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st114; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st105; } else goto st105; goto st0; st116: if ( ++p == pe ) goto _test_eof116; case 116: switch( (*p) ) { case 58: goto st108; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st105; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st105; } else goto st105; goto st0; st117: if ( ++p == pe ) goto _test_eof117; case 117: switch( (*p) ) { case 48: goto st118; case 49: goto st123; case 50: goto st126; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st129; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st130; } else goto st130; goto st0; st118: if ( ++p == pe ) goto _test_eof118; case 118: switch( (*p) ) { case 46: goto st55; case 58: goto st122; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st119; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st119; } else goto st119; goto st0; st119: if ( ++p == pe ) goto _test_eof119; case 119: switch( (*p) ) { case 58: goto st122; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st120; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st120; } else goto st120; goto st0; st120: if ( ++p == pe ) goto _test_eof120; case 120: switch( (*p) ) { case 58: goto st122; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st121; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st121; } else goto st121; goto st0; st121: if ( ++p == pe ) goto _test_eof121; case 121: switch( (*p) ) { case 58: goto st122; case 95: goto tr92; } goto st0; st122: if ( ++p == pe ) goto _test_eof122; case 122: switch( (*p) ) { case 48: goto st104; case 49: goto st109; case 50: goto st112; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st115; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st116; } else goto st116; goto st0; st123: if ( ++p == pe ) goto _test_eof123; case 123: switch( (*p) ) { case 46: goto st55; case 58: goto st122; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st124; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st119; } else goto st119; goto st0; st124: if ( ++p == pe ) goto _test_eof124; case 124: switch( (*p) ) { case 46: goto st55; case 58: goto st122; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st125; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st120; } else goto st120; goto st0; st125: if ( ++p == pe ) goto _test_eof125; case 125: switch( (*p) ) { case 46: goto st55; case 58: goto st122; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st121; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st121; } else goto st121; goto st0; st126: if ( ++p == pe ) goto _test_eof126; case 126: switch( (*p) ) { case 46: goto st55; case 53: goto st127; case 58: goto st122; case 95: goto tr92; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st124; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st119; } else if ( (*p) >= 65 ) goto st119; } else goto st128; goto st0; st127: if ( ++p == pe ) goto _test_eof127; case 127: switch( (*p) ) { case 46: goto st55; case 58: goto st122; case 95: goto tr92; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st125; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st120; } else if ( (*p) >= 65 ) goto st120; } else goto st120; goto st0; st128: if ( ++p == pe ) goto _test_eof128; case 128: switch( (*p) ) { case 46: goto st55; case 58: goto st122; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st120; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st120; } else goto st120; goto st0; st129: if ( ++p == pe ) goto _test_eof129; case 129: switch( (*p) ) { case 46: goto st55; case 58: goto st122; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st128; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st119; } else goto st119; goto st0; st130: if ( ++p == pe ) goto _test_eof130; case 130: switch( (*p) ) { case 58: goto st122; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st119; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st119; } else goto st119; goto st0; st131: if ( ++p == pe ) goto _test_eof131; case 131: switch( (*p) ) { case 48: goto st132; case 49: goto st137; case 50: goto st140; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st143; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st144; } else goto st144; goto st0; st132: if ( ++p == pe ) goto _test_eof132; case 132: switch( (*p) ) { case 46: goto st55; case 58: goto st136; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st133; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st133; } else goto st133; goto st0; st133: if ( ++p == pe ) goto _test_eof133; case 133: switch( (*p) ) { case 58: goto st136; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st134; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st134; } else goto st134; goto st0; st134: if ( ++p == pe ) goto _test_eof134; case 134: switch( (*p) ) { case 58: goto st136; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st135; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st135; } else goto st135; goto st0; st135: if ( ++p == pe ) goto _test_eof135; case 135: switch( (*p) ) { case 58: goto st136; case 95: goto tr92; } goto st0; st136: if ( ++p == pe ) goto _test_eof136; case 136: switch( (*p) ) { case 48: goto st118; case 49: goto st123; case 50: goto st126; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st129; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st130; } else goto st130; goto st0; st137: if ( ++p == pe ) goto _test_eof137; case 137: switch( (*p) ) { case 46: goto st55; case 58: goto st136; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st138; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st133; } else goto st133; goto st0; st138: if ( ++p == pe ) goto _test_eof138; case 138: switch( (*p) ) { case 46: goto st55; case 58: goto st136; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st139; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st134; } else goto st134; goto st0; st139: if ( ++p == pe ) goto _test_eof139; case 139: switch( (*p) ) { case 46: goto st55; case 58: goto st136; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st135; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st135; } else goto st135; goto st0; st140: if ( ++p == pe ) goto _test_eof140; case 140: switch( (*p) ) { case 46: goto st55; case 53: goto st141; case 58: goto st136; case 95: goto tr92; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st138; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st133; } else if ( (*p) >= 65 ) goto st133; } else goto st142; goto st0; st141: if ( ++p == pe ) goto _test_eof141; case 141: switch( (*p) ) { case 46: goto st55; case 58: goto st136; case 95: goto tr92; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st139; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st134; } else if ( (*p) >= 65 ) goto st134; } else goto st134; goto st0; st142: if ( ++p == pe ) goto _test_eof142; case 142: switch( (*p) ) { case 46: goto st55; case 58: goto st136; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st134; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st134; } else goto st134; goto st0; st143: if ( ++p == pe ) goto _test_eof143; case 143: switch( (*p) ) { case 46: goto st55; case 58: goto st136; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st142; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st133; } else goto st133; goto st0; st144: if ( ++p == pe ) goto _test_eof144; case 144: switch( (*p) ) { case 58: goto st136; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st133; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st133; } else goto st133; goto st0; st145: if ( ++p == pe ) goto _test_eof145; case 145: switch( (*p) ) { case 48: goto st146; case 49: goto st151; case 50: goto st154; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st157; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st158; } else goto st158; goto st0; st146: if ( ++p == pe ) goto _test_eof146; case 146: switch( (*p) ) { case 46: goto st55; case 58: goto st150; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st147; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st147; } else goto st147; goto st0; st147: if ( ++p == pe ) goto _test_eof147; case 147: switch( (*p) ) { case 58: goto st150; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st148; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st148; } else goto st148; goto st0; st148: if ( ++p == pe ) goto _test_eof148; case 148: switch( (*p) ) { case 58: goto st150; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st149; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st149; } else goto st149; goto st0; st149: if ( ++p == pe ) goto _test_eof149; case 149: switch( (*p) ) { case 58: goto st150; case 95: goto tr92; } goto st0; st150: if ( ++p == pe ) goto _test_eof150; case 150: switch( (*p) ) { case 48: goto st132; case 49: goto st137; case 50: goto st140; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st143; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st144; } else goto st144; goto st0; st151: if ( ++p == pe ) goto _test_eof151; case 151: switch( (*p) ) { case 46: goto st55; case 58: goto st150; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st152; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st147; } else goto st147; goto st0; st152: if ( ++p == pe ) goto _test_eof152; case 152: switch( (*p) ) { case 46: goto st55; case 58: goto st150; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st153; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st148; } else goto st148; goto st0; st153: if ( ++p == pe ) goto _test_eof153; case 153: switch( (*p) ) { case 46: goto st55; case 58: goto st150; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st149; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st149; } else goto st149; goto st0; st154: if ( ++p == pe ) goto _test_eof154; case 154: switch( (*p) ) { case 46: goto st55; case 53: goto st155; case 58: goto st150; case 95: goto tr92; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st152; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st147; } else if ( (*p) >= 65 ) goto st147; } else goto st156; goto st0; st155: if ( ++p == pe ) goto _test_eof155; case 155: switch( (*p) ) { case 46: goto st55; case 58: goto st150; case 95: goto tr92; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st153; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st148; } else if ( (*p) >= 65 ) goto st148; } else goto st148; goto st0; st156: if ( ++p == pe ) goto _test_eof156; case 156: switch( (*p) ) { case 46: goto st55; case 58: goto st150; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st148; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st148; } else goto st148; goto st0; st157: if ( ++p == pe ) goto _test_eof157; case 157: switch( (*p) ) { case 46: goto st55; case 58: goto st150; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st156; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st147; } else goto st147; goto st0; st158: if ( ++p == pe ) goto _test_eof158; case 158: switch( (*p) ) { case 58: goto st150; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st147; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st147; } else goto st147; goto st0; tr2: #line 19 "outbound_utils.rl" { outbound_udp_flow_token.ip_s = (size_t)p; } goto st159; st159: if ( ++p == pe ) goto _test_eof159; case 159: #line 2605 "outbound_utils.c" switch( (*p) ) { case 46: goto st3; case 58: goto st28; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st160; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st25; } else goto st25; goto st0; st160: if ( ++p == pe ) goto _test_eof160; case 160: switch( (*p) ) { case 46: goto st3; case 58: goto st28; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st161; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st26; } else goto st26; goto st0; st161: if ( ++p == pe ) goto _test_eof161; case 161: switch( (*p) ) { case 46: goto st3; case 58: goto st28; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st27; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st27; } else goto st27; goto st0; tr3: #line 19 "outbound_utils.rl" { outbound_udp_flow_token.ip_s = (size_t)p; } goto st162; st162: if ( ++p == pe ) goto _test_eof162; case 162: #line 2663 "outbound_utils.c" switch( (*p) ) { case 46: goto st3; case 53: goto st163; case 58: goto st28; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st160; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st25; } else if ( (*p) >= 65 ) goto st25; } else goto st164; goto st0; st163: if ( ++p == pe ) goto _test_eof163; case 163: switch( (*p) ) { case 46: goto st3; case 58: goto st28; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st161; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st26; } else if ( (*p) >= 65 ) goto st26; } else goto st26; goto st0; st164: if ( ++p == pe ) goto _test_eof164; case 164: switch( (*p) ) { case 46: goto st3; case 58: goto st28; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st26; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st26; } else goto st26; goto st0; tr4: #line 19 "outbound_utils.rl" { outbound_udp_flow_token.ip_s = (size_t)p; } goto st165; st165: if ( ++p == pe ) goto _test_eof165; case 165: #line 2728 "outbound_utils.c" switch( (*p) ) { case 46: goto st3; case 58: goto st28; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st164; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st25; } else goto st25; goto st0; tr5: #line 19 "outbound_utils.rl" { outbound_udp_flow_token.ip_s = (size_t)p; } goto st166; st166: if ( ++p == pe ) goto _test_eof166; case 166: #line 2752 "outbound_utils.c" if ( (*p) == 58 ) goto st167; goto st0; st167: if ( ++p == pe ) goto _test_eof167; case 167: switch( (*p) ) { case 48: goto st168; case 49: goto st173; case 50: goto st176; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st179; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st180; } else goto st180; goto st0; st168: if ( ++p == pe ) goto _test_eof168; case 168: switch( (*p) ) { case 46: goto st55; case 58: goto st172; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st169; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st169; } else goto st169; goto st0; st169: if ( ++p == pe ) goto _test_eof169; case 169: switch( (*p) ) { case 58: goto st172; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st170; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st170; } else goto st170; goto st0; st170: if ( ++p == pe ) goto _test_eof170; case 170: switch( (*p) ) { case 58: goto st172; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st171; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st171; } else goto st171; goto st0; st171: if ( ++p == pe ) goto _test_eof171; case 171: switch( (*p) ) { case 58: goto st172; case 95: goto tr92; } goto st0; st172: if ( ++p == pe ) goto _test_eof172; case 172: switch( (*p) ) { case 48: goto st146; case 49: goto st151; case 50: goto st154; } if ( (*p) < 65 ) { if ( 51 <= (*p) && (*p) <= 57 ) goto st157; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st158; } else goto st158; goto st0; st173: if ( ++p == pe ) goto _test_eof173; case 173: switch( (*p) ) { case 46: goto st55; case 58: goto st172; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st174; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st169; } else goto st169; goto st0; st174: if ( ++p == pe ) goto _test_eof174; case 174: switch( (*p) ) { case 46: goto st55; case 58: goto st172; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st175; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st170; } else goto st170; goto st0; st175: if ( ++p == pe ) goto _test_eof175; case 175: switch( (*p) ) { case 46: goto st55; case 58: goto st172; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st171; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st171; } else goto st171; goto st0; st176: if ( ++p == pe ) goto _test_eof176; case 176: switch( (*p) ) { case 46: goto st55; case 53: goto st177; case 58: goto st172; case 95: goto tr92; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 52 ) goto st174; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st169; } else if ( (*p) >= 65 ) goto st169; } else goto st178; goto st0; st177: if ( ++p == pe ) goto _test_eof177; case 177: switch( (*p) ) { case 46: goto st55; case 58: goto st172; case 95: goto tr92; } if ( (*p) < 54 ) { if ( 48 <= (*p) && (*p) <= 53 ) goto st175; } else if ( (*p) > 57 ) { if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st170; } else if ( (*p) >= 65 ) goto st170; } else goto st170; goto st0; st178: if ( ++p == pe ) goto _test_eof178; case 178: switch( (*p) ) { case 46: goto st55; case 58: goto st172; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st170; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st170; } else goto st170; goto st0; st179: if ( ++p == pe ) goto _test_eof179; case 179: switch( (*p) ) { case 46: goto st55; case 58: goto st172; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st178; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st169; } else goto st169; goto st0; st180: if ( ++p == pe ) goto _test_eof180; case 180: switch( (*p) ) { case 58: goto st172; case 95: goto tr92; } if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st169; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st169; } else goto st169; goto st0; tr6: #line 19 "outbound_utils.rl" { outbound_udp_flow_token.ip_s = (size_t)p; } goto st181; st181: if ( ++p == pe ) goto _test_eof181; case 181: #line 3014 "outbound_utils.c" if ( (*p) == 58 ) goto st28; if ( (*p) < 65 ) { if ( 48 <= (*p) && (*p) <= 57 ) goto st25; } else if ( (*p) > 70 ) { if ( 97 <= (*p) && (*p) <= 102 ) goto st25; } else goto st25; goto st0; } _test_eof2: cs = 2; goto _test_eof; _test_eof3: cs = 3; goto _test_eof; _test_eof4: cs = 4; goto _test_eof; _test_eof5: cs = 5; goto _test_eof; _test_eof6: cs = 6; goto _test_eof; _test_eof7: cs = 7; goto _test_eof; _test_eof8: cs = 8; goto _test_eof; _test_eof9: cs = 9; goto _test_eof; _test_eof10: cs = 10; goto _test_eof; _test_eof11: cs = 11; goto _test_eof; _test_eof12: cs = 12; goto _test_eof; _test_eof182: cs = 182; goto _test_eof; _test_eof183: cs = 183; goto _test_eof; _test_eof184: cs = 184; goto _test_eof; _test_eof185: cs = 185; goto _test_eof; _test_eof186: cs = 186; goto _test_eof; _test_eof187: cs = 187; goto _test_eof; _test_eof188: cs = 188; goto _test_eof; _test_eof189: cs = 189; goto _test_eof; _test_eof190: cs = 190; goto _test_eof; _test_eof13: cs = 13; goto _test_eof; _test_eof14: cs = 14; goto _test_eof; _test_eof15: cs = 15; goto _test_eof; _test_eof16: cs = 16; goto _test_eof; _test_eof17: cs = 17; goto _test_eof; _test_eof18: cs = 18; goto _test_eof; _test_eof19: cs = 19; goto _test_eof; _test_eof20: cs = 20; goto _test_eof; _test_eof21: cs = 21; goto _test_eof; _test_eof22: cs = 22; goto _test_eof; _test_eof23: cs = 23; goto _test_eof; _test_eof24: cs = 24; goto _test_eof; _test_eof25: cs = 25; goto _test_eof; _test_eof26: cs = 26; goto _test_eof; _test_eof27: cs = 27; goto _test_eof; _test_eof28: cs = 28; goto _test_eof; _test_eof29: cs = 29; goto _test_eof; _test_eof30: cs = 30; goto _test_eof; _test_eof31: cs = 31; goto _test_eof; _test_eof32: cs = 32; goto _test_eof; _test_eof33: cs = 33; goto _test_eof; _test_eof34: cs = 34; goto _test_eof; _test_eof35: cs = 35; goto _test_eof; _test_eof36: cs = 36; goto _test_eof; _test_eof37: cs = 37; goto _test_eof; _test_eof38: cs = 38; goto _test_eof; _test_eof39: cs = 39; goto _test_eof; _test_eof40: cs = 40; goto _test_eof; _test_eof41: cs = 41; goto _test_eof; _test_eof42: cs = 42; goto _test_eof; _test_eof43: cs = 43; goto _test_eof; _test_eof44: cs = 44; goto _test_eof; _test_eof45: cs = 45; goto _test_eof; _test_eof46: cs = 46; goto _test_eof; _test_eof47: cs = 47; goto _test_eof; _test_eof48: cs = 48; goto _test_eof; _test_eof49: cs = 49; goto _test_eof; _test_eof50: cs = 50; goto _test_eof; _test_eof51: cs = 51; goto _test_eof; _test_eof52: cs = 52; goto _test_eof; _test_eof53: cs = 53; goto _test_eof; _test_eof54: cs = 54; goto _test_eof; _test_eof55: cs = 55; goto _test_eof; _test_eof56: cs = 56; goto _test_eof; _test_eof57: cs = 57; goto _test_eof; _test_eof58: cs = 58; goto _test_eof; _test_eof59: cs = 59; goto _test_eof; _test_eof60: cs = 60; goto _test_eof; _test_eof61: cs = 61; goto _test_eof; _test_eof62: cs = 62; goto _test_eof; _test_eof63: cs = 63; goto _test_eof; _test_eof64: cs = 64; goto _test_eof; _test_eof65: cs = 65; goto _test_eof; _test_eof66: cs = 66; goto _test_eof; _test_eof67: cs = 67; goto _test_eof; _test_eof68: cs = 68; goto _test_eof; _test_eof69: cs = 69; goto _test_eof; _test_eof70: cs = 70; goto _test_eof; _test_eof71: cs = 71; goto _test_eof; _test_eof72: cs = 72; goto _test_eof; _test_eof73: cs = 73; goto _test_eof; _test_eof74: cs = 74; goto _test_eof; _test_eof75: cs = 75; goto _test_eof; _test_eof76: cs = 76; goto _test_eof; _test_eof77: cs = 77; goto _test_eof; _test_eof78: cs = 78; goto _test_eof; _test_eof79: cs = 79; goto _test_eof; _test_eof80: cs = 80; goto _test_eof; _test_eof81: cs = 81; goto _test_eof; _test_eof82: cs = 82; goto _test_eof; _test_eof83: cs = 83; goto _test_eof; _test_eof84: cs = 84; goto _test_eof; _test_eof85: cs = 85; goto _test_eof; _test_eof86: cs = 86; goto _test_eof; _test_eof87: cs = 87; goto _test_eof; _test_eof88: cs = 88; goto _test_eof; _test_eof89: cs = 89; goto _test_eof; _test_eof90: cs = 90; goto _test_eof; _test_eof91: cs = 91; goto _test_eof; _test_eof92: cs = 92; goto _test_eof; _test_eof93: cs = 93; goto _test_eof; _test_eof94: cs = 94; goto _test_eof; _test_eof95: cs = 95; goto _test_eof; _test_eof96: cs = 96; goto _test_eof; _test_eof97: cs = 97; goto _test_eof; _test_eof98: cs = 98; goto _test_eof; _test_eof99: cs = 99; goto _test_eof; _test_eof100: cs = 100; goto _test_eof; _test_eof101: cs = 101; goto _test_eof; _test_eof102: cs = 102; goto _test_eof; _test_eof103: cs = 103; goto _test_eof; _test_eof104: cs = 104; goto _test_eof; _test_eof105: cs = 105; goto _test_eof; _test_eof106: cs = 106; goto _test_eof; _test_eof107: cs = 107; goto _test_eof; _test_eof108: cs = 108; goto _test_eof; _test_eof109: cs = 109; goto _test_eof; _test_eof110: cs = 110; goto _test_eof; _test_eof111: cs = 111; goto _test_eof; _test_eof112: cs = 112; goto _test_eof; _test_eof113: cs = 113; goto _test_eof; _test_eof114: cs = 114; goto _test_eof; _test_eof115: cs = 115; goto _test_eof; _test_eof116: cs = 116; goto _test_eof; _test_eof117: cs = 117; goto _test_eof; _test_eof118: cs = 118; goto _test_eof; _test_eof119: cs = 119; goto _test_eof; _test_eof120: cs = 120; goto _test_eof; _test_eof121: cs = 121; goto _test_eof; _test_eof122: cs = 122; goto _test_eof; _test_eof123: cs = 123; goto _test_eof; _test_eof124: cs = 124; goto _test_eof; _test_eof125: cs = 125; goto _test_eof; _test_eof126: cs = 126; goto _test_eof; _test_eof127: cs = 127; goto _test_eof; _test_eof128: cs = 128; goto _test_eof; _test_eof129: cs = 129; goto _test_eof; _test_eof130: cs = 130; goto _test_eof; _test_eof131: cs = 131; goto _test_eof; _test_eof132: cs = 132; goto _test_eof; _test_eof133: cs = 133; goto _test_eof; _test_eof134: cs = 134; goto _test_eof; _test_eof135: cs = 135; goto _test_eof; _test_eof136: cs = 136; goto _test_eof; _test_eof137: cs = 137; goto _test_eof; _test_eof138: cs = 138; goto _test_eof; _test_eof139: cs = 139; goto _test_eof; _test_eof140: cs = 140; goto _test_eof; _test_eof141: cs = 141; goto _test_eof; _test_eof142: cs = 142; goto _test_eof; _test_eof143: cs = 143; goto _test_eof; _test_eof144: cs = 144; goto _test_eof; _test_eof145: cs = 145; goto _test_eof; _test_eof146: cs = 146; goto _test_eof; _test_eof147: cs = 147; goto _test_eof; _test_eof148: cs = 148; goto _test_eof; _test_eof149: cs = 149; goto _test_eof; _test_eof150: cs = 150; goto _test_eof; _test_eof151: cs = 151; goto _test_eof; _test_eof152: cs = 152; goto _test_eof; _test_eof153: cs = 153; goto _test_eof; _test_eof154: cs = 154; goto _test_eof; _test_eof155: cs = 155; goto _test_eof; _test_eof156: cs = 156; goto _test_eof; _test_eof157: cs = 157; goto _test_eof; _test_eof158: cs = 158; goto _test_eof; _test_eof159: cs = 159; goto _test_eof; _test_eof160: cs = 160; goto _test_eof; _test_eof161: cs = 161; goto _test_eof; _test_eof162: cs = 162; goto _test_eof; _test_eof163: cs = 163; goto _test_eof; _test_eof164: cs = 164; goto _test_eof; _test_eof165: cs = 165; goto _test_eof; _test_eof166: cs = 166; goto _test_eof; _test_eof167: cs = 167; goto _test_eof; _test_eof168: cs = 168; goto _test_eof; _test_eof169: cs = 169; goto _test_eof; _test_eof170: cs = 170; goto _test_eof; _test_eof171: cs = 171; goto _test_eof; _test_eof172: cs = 172; goto _test_eof; _test_eof173: cs = 173; goto _test_eof; _test_eof174: cs = 174; goto _test_eof; _test_eof175: cs = 175; goto _test_eof; _test_eof176: cs = 176; goto _test_eof; _test_eof177: cs = 177; goto _test_eof; _test_eof178: cs = 178; goto _test_eof; _test_eof179: cs = 179; goto _test_eof; _test_eof180: cs = 180; goto _test_eof; _test_eof181: cs = 181; goto _test_eof; _test_eof: {} _out: {} } #line 68 "outbound_utils.rl" if(finished && len == p-str) outbound_udp_flow_token.valid = 1; return outbound_udp_flow_token; } ================================================ FILE: ext/utils/outbound_utils.h ================================================ #ifndef outbound_utils_h #define outbound_utils_h #include enum enum_outbound_udp_flow_token_ip_type { outbound_udp_flow_token_ip_type_ipv4 = 1, outbound_udp_flow_token_ip_type_ipv6 }; typedef struct struct_outbound_udp_flow_token { unsigned short int valid; enum enum_outbound_udp_flow_token_ip_type ip_type; size_t ip_s; size_t ip_len; size_t port_s; size_t port_len; } struct_outbound_udp_flow_token; struct_outbound_udp_flow_token outbound_udp_flow_token_parser_execute(const char *str, size_t len); #endif ================================================ FILE: ext/utils/outbound_utils.rl ================================================ #include #include #include "outbound_utils.h" /** machine **/ %%{ machine utils_outbound_udp_flow_token_parser; action is_ipv4 { outbound_udp_flow_token.ip_type = outbound_udp_flow_token_ip_type_ipv4; } action is_ipv6 { outbound_udp_flow_token.ip_type = outbound_udp_flow_token_ip_type_ipv6; } action start_ip { outbound_udp_flow_token.ip_s = (size_t)fpc; } action end_ip { outbound_udp_flow_token.ip_len = (size_t)fpc - outbound_udp_flow_token.ip_s; } action start_port { outbound_udp_flow_token.port_s = (size_t)fpc; } action end_port { outbound_udp_flow_token.port_len = (size_t)fpc - outbound_udp_flow_token.port_s + 1; finished = 1; } include grammar_ip "grammar_ip.rl"; main := ( IPv4address %is_ipv4 | IPv6address %is_ipv6 ) >start_ip %end_ip "_" port >start_port @end_port; }%% /** Data **/ %% write data; /** exec **/ /* * Expects a string like "1.2.3.4_5060" or "1af:43::ab_9090" (no "_" at the beginning). */ struct_outbound_udp_flow_token outbound_udp_flow_token_parser_execute(const char *str, size_t len) { int cs = 0; const char *p, *pe; size_t mark; int finished = 0; struct_outbound_udp_flow_token outbound_udp_flow_token; p = str; pe = str+len; outbound_udp_flow_token.valid = 0; outbound_udp_flow_token.ip_s = 0; outbound_udp_flow_token.ip_len = 0; outbound_udp_flow_token.port_s = 0; outbound_udp_flow_token.port_len = 0; %% write init; %% write exec; if(finished && len == p-str) outbound_udp_flow_token.valid = 1; return outbound_udp_flow_token; } ================================================ FILE: ext/utils/utils_ruby.c ================================================ #include #include "ext_help.h" #include "ip_utils.h" #include "utils_ruby.h" #include "../common/c_util.h" static VALUE mOverSIP; static VALUE mUtils; static VALUE symbol_ipv4; static VALUE symbol_ipv6; static VALUE symbol_ipv6_reference; /* * Ruby functions. */ VALUE Utils_is_ip(VALUE self, VALUE string) { TRACE(); char *str; long len; if (TYPE(string) != T_STRING) rb_raise(rb_eTypeError, "Argument must be a String"); str = RSTRING_PTR(string); len = RSTRING_LEN(string); if (utils_ip_parser_execute(str, len) != ip_type_error) return Qtrue; else return Qfalse; } VALUE Utils_is_pure_ip(VALUE self, VALUE string) { TRACE(); char *str; long len; if (TYPE(string) != T_STRING) rb_raise(rb_eTypeError, "Argument must be a String"); str = RSTRING_PTR(string); len = RSTRING_LEN(string); switch(utils_ip_parser_execute(str, len)) { case(ip_type_ipv4): return Qtrue; break; case(ip_type_ipv6): return Qtrue; break; default: return Qfalse; break; } } VALUE Utils_ip_type(VALUE self, VALUE string) { TRACE(); char *str; long len; if (TYPE(string) != T_STRING) rb_raise(rb_eTypeError, "Argument must be a String"); str = RSTRING_PTR(string); len = RSTRING_LEN(string); switch(utils_ip_parser_execute(str, len)) { case(ip_type_ipv4): return symbol_ipv4; break; case(ip_type_ipv6): return symbol_ipv6; break; case(ip_type_ipv6_reference): return symbol_ipv6_reference; break; default: return Qfalse; break; } } /* * Returns true if both IP's are equal (binary comparison). * Returns false if both IP's are not equal. * Returns nil if at least one of the IP's is not valid IPv4, IPv6 or IPv6 reference. * This function also allows comparing an IPv6 with an IPv6 reference. */ VALUE Utils_compare_ips(VALUE self, VALUE string1, VALUE string2) { TRACE(); char *str1, *str2; long len1, len2; enum enum_ip_type ip1_type, ip2_type; if (TYPE(string1) != T_STRING || TYPE(string2) != T_STRING) rb_raise(rb_eTypeError, "Arguments must be two String"); str1 = RSTRING_PTR(string1); len1 = RSTRING_LEN(string1); str2 = RSTRING_PTR(string2); len2 = RSTRING_LEN(string2); switch(ip1_type = utils_ip_parser_execute(str1, len1)) { case(ip_type_error): return Qnil; break; case(ip_type_ipv6_reference): str1 += 1; len1 -= 2; ip1_type = ip_type_ipv6; break; default: break; } switch(ip2_type = utils_ip_parser_execute(str2, len2)) { case(ip_type_error): return Qnil; break; case(ip_type_ipv6_reference): str2 += 1; len2 -= 2; ip2_type = ip_type_ipv6; break; default: break; } if (utils_compare_pure_ips(str1, len1, ip1_type, str2, len2, ip2_type)) return Qtrue; else return Qfalse; } /* * Returns true if both IP's are equal (binary comparison). * Returns false if both IP's are not equal. * Returns nil if at least one of the IP's is not valid IPv4 or IPv6. * This function does not allow comparing an IPv6 with an IPv6 reference. */ VALUE Utils_compare_pure_ips(VALUE self, VALUE string1, VALUE string2) { TRACE(); char *str1, *str2; long len1, len2; enum enum_ip_type ip1_type, ip2_type; if (TYPE(string1) != T_STRING || TYPE(string2) != T_STRING) rb_raise(rb_eTypeError, "Arguments must be two String"); str1 = RSTRING_PTR(string1); len1 = RSTRING_LEN(string1); str2 = RSTRING_PTR(string2); len2 = RSTRING_LEN(string2); switch(ip1_type = utils_ip_parser_execute(str1, len1)) { case(ip_type_error): return Qnil; break; case(ip_type_ipv6_reference): return Qnil; break; default: break; } switch(ip2_type = utils_ip_parser_execute(str2, len2)) { case(ip_type_error): return Qnil; break; case(ip_type_ipv6_reference): return Qnil; break; default: break; } if (utils_compare_pure_ips(str1, len1, ip1_type, str2, len2, ip2_type)) return Qtrue; else return Qfalse; } /* * Returns the normalized printable string of the given IPv6. * - First argument is a string to normalize. It must be a valid IPv6 or * IPv6 reference. If not, the method returns false. * - Second argument is optional. If true, returned value is a pure IPv6 even * if the first argument is a IPv6 reference. */ VALUE Utils_normalize_ipv6(int argc, VALUE *argv, VALUE self) { TRACE(); VALUE string; int force_pure_ipv6 = 0; if (argc == 0 || argc > 2) rb_raise(rb_eTypeError, "Wrong number of arguments (pass one or two)"); string = argv[0]; if (TYPE(string) != T_STRING) rb_raise(rb_eTypeError, "First argument must be a String"); if (argc == 2 && TYPE(argv[1]) != T_NIL && TYPE(argv[1]) != T_FALSE) force_pure_ipv6 = 1; return utils_normalize_ipv6(string, force_pure_ipv6); } /* * Returns the normalized printable string of the given IPv4 or IPv6. * - First argument is a string to normalize. It must be a valid IPv4, IPv6 or * IPv6 reference. If not, the method returns the string itself. * - Second argument is the type of host (:ipv4, :ipv6, :ipv6_reference or :domain). * - Third argument is optional. If true, returned value is a pure IPv6 even * if the first argument is a IPv6 reference. * * TODO: Not in use and seems really ugly! */ VALUE Utils_normalize_host(int argc, VALUE *argv, VALUE self) { TRACE(); VALUE host, ip_type; int force_pure_ipv6 = 0; if (argc == 0 || argc > 3) rb_raise(rb_eTypeError, "Wrong number of arguments (pass one, two or three)"); host = argv[0]; if (TYPE(host) != T_STRING) rb_raise(rb_eTypeError, "First argument must be a String"); ip_type = argv[1]; if (TYPE(ip_type) != T_SYMBOL) rb_raise(rb_eTypeError, "Second argument must be a Symbol (:ipv4, :ipv6 or :domain)"); if (argc == 3 && TYPE(argv[2]) != T_NIL && TYPE(argv[2]) != T_FALSE) force_pure_ipv6 = 1; if (ip_type == symbol_ipv6 || ip_type == symbol_ipv6_reference) return utils_normalize_ipv6(host, force_pure_ipv6); else return host; } /* * If the given argument is a IPV6 reference it returns a new string with the pure IPv6. * In any other case, return the given argument. * * TODO: Not documented in the API (seems ugly). */ VALUE Utils_to_pure_ip(VALUE self, VALUE string) { TRACE(); char *str; str = StringValueCStr(string); if (str[0] == '[') return rb_str_new(RSTRING_PTR(string)+1, RSTRING_LEN(string)-2); else return string; } /* * TODO: We lack a simple "normalice_host(ip)" method that parses the given ip and so on... */ /* * Expects a string like "1.2.3.4_5060" or "1af:43::ab_9090" and returns * an Array as follows: * [ ip_type, ip, port ] * where: * - ip_type is :ipv4 or :ipv6, * - ip is a String, * - port is a Fixnum * If the string is invalid it returns false. */ VALUE Utils_parser_outbound_udp_flow_token(VALUE self, VALUE string) { TRACE(); char *str = NULL; long len = 0; struct_outbound_udp_flow_token outbound_udp_flow_token; VALUE ip_type, ip, port; if (TYPE(string) != T_STRING) rb_raise(rb_eTypeError, "Argument must be a String"); str = RSTRING_PTR(string); len = RSTRING_LEN(string); outbound_udp_flow_token = outbound_udp_flow_token_parser_execute(str, len); if (outbound_udp_flow_token.valid == 0) return Qfalse; else { if (outbound_udp_flow_token.ip_type == outbound_udp_flow_token_ip_type_ipv4) ip_type = symbol_ipv4; else ip_type = symbol_ipv6; ip = rb_str_new((char *)outbound_udp_flow_token.ip_s, outbound_udp_flow_token.ip_len); port = INT2FIX(str_to_int((char *)outbound_udp_flow_token.port_s, outbound_udp_flow_token.port_len)); return rb_ary_new3(3, ip_type, ip, port); } } /* * Expects a string like "PROXY TCP4 192.168.0.1 192.168.0.11 56324 443\r\n" and returns * an Array as follows: * [ num_bytes, ip_type, ip, port ] * where: * - num_bytes is the length of the HAProxy Protocol line (to be removed), a Fixnum. * - ip_type is :ipv4 or :ipv6, * - ip is a String, * - port is a Fixnum * If the string is invalid it returns false. */ VALUE Utils_parser_haproxy_protocol(VALUE self, VALUE string) { TRACE(); char *str = NULL; long len = 0; struct_haproxy_protocol haproxy_protocol; VALUE num_bytes, ip_type, ip, port; if (TYPE(string) != T_STRING) rb_raise(rb_eTypeError, "Argument must be a String"); str = RSTRING_PTR(string); len = RSTRING_LEN(string); haproxy_protocol = struct_haproxy_protocol_parser_execute(str, len); if (haproxy_protocol.valid == 0) return Qfalse; else { if (haproxy_protocol.ip_type == haproxy_protocol_ip_type_ipv4) ip_type = symbol_ipv4; else ip_type = symbol_ipv6; ip = rb_str_new((char *)haproxy_protocol.ip_s, haproxy_protocol.ip_len); port = INT2FIX(str_to_int((char *)haproxy_protocol.port_s, haproxy_protocol.port_len)); num_bytes = INT2FIX(haproxy_protocol.total_len); return rb_ary_new3(4, num_bytes, ip_type, ip, port); } } void Init_utils() { TRACE(); mOverSIP = rb_define_module("OverSIP"); mUtils = rb_define_module_under(mOverSIP, "Utils"); rb_define_module_function(mUtils, "ip?", Utils_is_ip, 1); rb_define_module_function(mUtils, "pure_ip?", Utils_is_pure_ip, 1); rb_define_module_function(mUtils, "ip_type", Utils_ip_type, 1); rb_define_module_function(mUtils, "compare_ips", Utils_compare_ips, 2); rb_define_module_function(mUtils, "compare_pure_ips", Utils_compare_pure_ips, 2); rb_define_module_function(mUtils, "normalize_ipv6", Utils_normalize_ipv6, -1); rb_define_module_function(mUtils, "normalize_host", Utils_normalize_host, -1); rb_define_module_function(mUtils, "to_pure_ip", Utils_to_pure_ip, 1); rb_define_module_function(mUtils, "parse_outbound_udp_flow_token", Utils_parser_outbound_udp_flow_token, 1); rb_define_module_function(mUtils, "parse_haproxy_protocol", Utils_parser_haproxy_protocol, 1); symbol_ipv4 = ID2SYM(rb_intern("ipv4")); symbol_ipv6 = ID2SYM(rb_intern("ipv6")); symbol_ipv6_reference = ID2SYM(rb_intern("ipv6_reference")); } ================================================ FILE: ext/utils/utils_ruby.h ================================================ /* * This file is not used by Ruby OverSIP::Utils module itself, its aim is to * be included by other OverSIP Ruby C extensions. */ #ifndef utils_ruby_h #define utils_ruby_h #include "ip_utils.h" #include "outbound_utils.h" #include "haproxy_protocol.h" #include // inet_ntop() /* Export the Ruby C functions so other C libraries within OverSIP can use them. */ VALUE Utils_is_ip(VALUE self, VALUE string); VALUE Utils_is_pure_ip(VALUE self, VALUE string); VALUE Utils_ip_type(VALUE self, VALUE string); VALUE Utils_compare_ips(VALUE self, VALUE string1, VALUE string2); VALUE Utils_compare_pure_ips(VALUE self, VALUE string1, VALUE string2); VALUE Utils_normalize_ipv6(int argc, VALUE *argv, VALUE self); VALUE Utils_normalize_host(int argc, VALUE *argv, VALUE self); VALUE Utils_to_pure_ip(VALUE self, VALUE string); VALUE Utils_parser_outbound_udp_flow_token(VALUE self, VALUE string); VALUE Utils_parser_haproxy_protocol(VALUE self, VALUE string); VALUE utils_normalize_ipv6(VALUE string, int force_pure_ipv6) { struct in6_addr addr; char normalized_ipv6[INET6_ADDRSTRLEN + 1]; char normalized_ipv6_reference[INET6_ADDRSTRLEN + 3]; char *str, str2[INET6_ADDRSTRLEN + 3], *str_pointer; int is_ipv6_reference = 0; str = StringValueCStr(string); if (str[0] != '[') { str_pointer = str; } else { is_ipv6_reference = 1; memcpy(str2, str + 1, strlen(str) - 2); str2[strlen(str) - 2] = '\0'; str_pointer = str2; } switch(inet_pton(AF_INET6, str_pointer, &addr)) { /* Not a valid IPv6. */ case 0: return Qfalse; break; /* Some error ocurred. */ case -1: return Qnil; break; default: break; } if (inet_ntop(AF_INET6, &addr, normalized_ipv6, INET6_ADDRSTRLEN)) if (is_ipv6_reference && !force_pure_ipv6) { memcpy(normalized_ipv6_reference, "[", 1); memcpy(normalized_ipv6_reference + 1, normalized_ipv6, strlen(normalized_ipv6)); memcpy(normalized_ipv6_reference + strlen(normalized_ipv6) + 1, "]\0", 2); return rb_str_new_cstr(normalized_ipv6_reference); } else return rb_str_new_cstr(normalized_ipv6); /* Some error ocurred. */ else return Qnil; } #endif ================================================ FILE: ext/websocket_framing_utils/ext_help.h ================================================ #ifndef ext_help_h #define ext_help_h #define RAISE_NOT_NULL(T) if(T == NULL) rb_raise(rb_eArgError, "NULL found for " # T " when shouldn't be."); #define DATA_GET(from,type,name) Data_Get_Struct(from,type,name); RAISE_NOT_NULL(name); #define REQUIRE_TYPE(V, T) if(TYPE(V) != T) rb_raise(rb_eTypeError, "Wrong argument type for " # V " required " # T); /* Uncomment for enabling TRACE() function. */ /*#define DEBUG*/ #ifdef DEBUG #define TRACE() fprintf(stderr, "TRACE: %s:%d:%s\n", __FILE__, __LINE__, __FUNCTION__) #else #define TRACE() #endif #endif ================================================ FILE: ext/websocket_framing_utils/extconf.rb ================================================ require "mkmf" create_makefile("oversip/websocket/ws_framing_utils") ================================================ FILE: ext/websocket_framing_utils/ws_framing_utils.h ================================================ #ifndef ws_framing_utils_h #define ws_framing_utils_h #include /* Extracted from http://bjoern.hoehrmann.de/utf-8/decoder/dfa/ */ #define UTF8_ACCEPT 0 #define UTF8_REJECT 1 #define UTF8D_SIZE 400 static const uint8_t utf8d[] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 00..1f */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 20..3f */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 40..5f */ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* 60..7f */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9, /* 80..9f */ 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, /* a0..bf */ 8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2, /* c0..df */ 0xa,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x3,0x4,0x3,0x3, /* e0..ef */ 0xb,0x6,0x6,0x6,0x5,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8,0x8, /* f0..ff */ 0x0,0x1,0x2,0x3,0x5,0x8,0x7,0x1,0x1,0x1,0x4,0x6,0x1,0x1,0x1,0x1, /* s0..s0 */ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,1,1,1,1,1, /* s1..s2 */ 1,2,1,1,1,1,1,2,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1, /* s3..s4 */ 1,2,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,1,1,3,1,3,1,1,1,1,1,1, /* s5..s6 */ 1,3,1,1,1,1,1,3,1,3,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1 /* s7..s8 */ }; static inline uint32_t utf8_decode(uint32_t* state, uint32_t* codep, uint32_t byte) { uint32_t type = utf8d[byte]; *codep = (*state != UTF8_ACCEPT) ? (byte & 0x3fu) | (*codep << 6) : (0xff >> type) & (byte); *state = utf8d[256 + *state*16 + type]; return *state; } typedef struct utf8_validator { uint32_t codepoint; uint32_t state; } utf8_validator; #endif ================================================ FILE: ext/websocket_framing_utils/ws_framing_utils_ruby.c ================================================ #include #include "ws_framing_utils.h" #include "ext_help.h" static VALUE mOverSIP; static VALUE mWebSocket; static VALUE mFramingUtils; static VALUE cUtf8Validator; /* * Ruby functions. */ VALUE WsFramingUtils_unmask(VALUE self, VALUE payload, VALUE mask) { char *payload_str, *mask_str; long payload_len; /* mask length is always 4 bytes. */ char *unmasked_payload_str; VALUE rb_unmasked_payload; int i; if (TYPE(payload) != T_STRING) rb_raise(rb_eTypeError, "Argument must be a String"); if (TYPE(mask) != T_STRING) rb_raise(rb_eTypeError, "Argument must be a String"); if (RSTRING_LEN(mask) != 4) rb_raise(rb_eTypeError, "mask size must be 4 bytes"); payload_str = RSTRING_PTR(payload); payload_len = RSTRING_LEN(payload); mask_str = RSTRING_PTR(mask); /* NOTE: In Ruby C extensions always use: * pointer = ALLOC_N(type, n) * which means: pointer = (type*)xmalloc(sizeof(type)*(n)) * and: * xfree() */ unmasked_payload_str = ALLOC_N(char, payload_len); for(i=0; i < payload_len; i++) unmasked_payload_str[i] = payload_str[i] ^ mask_str[i % 4]; rb_unmasked_payload = rb_str_new(unmasked_payload_str, payload_len); xfree(unmasked_payload_str); return(rb_unmasked_payload); } static void Utf8Validator_free(void *validator) { TRACE(); if(validator) { xfree(validator); } } VALUE Utf8Validator_alloc(VALUE klass) { TRACE(); VALUE obj; utf8_validator *validator = ALLOC(utf8_validator); validator->state = UTF8_ACCEPT; obj = Data_Wrap_Struct(klass, NULL, Utf8Validator_free, validator); return obj; } VALUE Utf8Validator_reset(VALUE self) { TRACE(); utf8_validator *validator = NULL; DATA_GET(self, utf8_validator, validator); validator->state = UTF8_ACCEPT; return Qnil; } /* * Returns: * - true: Valid UTF-8 string. * - nil: Valid but not terminated UTF-8 string. * - false: Invalid UTF-8 string. */ VALUE Utf8Validator_validate(VALUE self, VALUE string) { TRACE(); utf8_validator *validator = NULL; uint8_t *str = NULL; int i; REQUIRE_TYPE(string, T_STRING); str = (uint8_t *)RSTRING_PTR(string); DATA_GET(self, utf8_validator, validator); for(i=0; i < RSTRING_LEN(string); i++) if (utf8_decode(&validator->state, &validator->codepoint, str[i]) == UTF8_REJECT) return Qfalse; switch(validator->state) { case UTF8_ACCEPT: return Qtrue; break; default: return Qnil; break; } } void Init_ws_framing_utils() { mOverSIP = rb_define_module("OverSIP"); mWebSocket = rb_define_module_under(mOverSIP, "WebSocket"); mFramingUtils = rb_define_module_under(mWebSocket, "FramingUtils"); cUtf8Validator = rb_define_class_under(mFramingUtils, "Utf8Validator", rb_cObject); rb_define_module_function(mFramingUtils, "unmask", WsFramingUtils_unmask,2); rb_define_alloc_func(cUtf8Validator, Utf8Validator_alloc); rb_define_method(cUtf8Validator, "reset", Utf8Validator_reset,0); rb_define_method(cUtf8Validator, "validate", Utf8Validator_validate,1); } ================================================ FILE: ext/websocket_http_parser/compile_ragel_files.sh ================================================ #!/bin/bash which ragel >/dev/null if [ $? -ne 0 ] ; then echo "ERROR: ragel binary not found, cannot compile the Ragel grammar." >&2 exit 1 else ragel -v echo fi set -e RAGEL_FILE=ws_http_parser echo "DEBUG: compiling Ragel grammar $RAGEL_FILE.rl ..." ragel -T0 -C $RAGEL_FILE.rl echo echo "DEBUG: $RAGEL_FILE.c generated" echo ================================================ FILE: ext/websocket_http_parser/ext_help.h ================================================ #ifndef ext_help_h #define ext_help_h #define RAISE_NOT_NULL(T) if(T == NULL) rb_raise(rb_eArgError, "NULL found for " # T " when shouldn't be."); #define DATA_GET(from,type,name) Data_Get_Struct(from,type,name); RAISE_NOT_NULL(name); #define REQUIRE_TYPE(V, T) if(TYPE(V) != T) rb_raise(rb_eTypeError, "Wrong argument type for " # V " required " # T); /* Uncomment for enabling TRACE() function. */ /*#define DEBUG*/ #ifdef DEBUG #define TRACE() fprintf(stderr, "TRACE: %s:%d:%s\n", __FILE__, __LINE__, __FUNCTION__) #else #define TRACE() #endif #endif ================================================ FILE: ext/websocket_http_parser/extconf.rb ================================================ require "mkmf" create_makefile("oversip/websocket/ws_http_parser") ================================================ FILE: ext/websocket_http_parser/grammar_ws_http_core.rl ================================================ %%{ machine grammar_ws_http_core; CRLF = "\r\n"; CTL = (cntrl | 127); DIGIT = "0".."9"; ALPHA = "a".."z" | "A".."Z"; HEXDIG = DIGIT | "A"i | "B"i | "C"i | "D"i | "E"i | "F"i; DQUOTE = "\""; SP = " "; HTAB = "\t"; WSP = SP | HTAB; LWS = ( WSP* CRLF )? WSP+; SWS = LWS?; OCTET = 0x00..0xff; VCHAR = 0x21..0x7e; HCOLON = ( SP | HTAB )* ":" SWS; SEMI = SWS ";" SWS; EQUAL = SWS "=" SWS; SLASH = SWS "/" SWS; COLON = SWS ":" SWS; COMMA = SWS "," SWS; RAQUOT = ">" SWS; LAQUOT = SWS "<"; UTF8_CONT = 0x80..0xbf; #UTF8_NONASCII = ( 0xc0..0xdf UTF8_CONT ) | ( 0xe0..0xef UTF8_CONT{2} ) | ( 0xf0..0xf7 UTF8_CONT{3} ) | # ( 0xf8..0xfb UTF8_CONT{4} ) | ( 0xfc..0xfd UTF8_CONT{5} ); # NOTE: Workaround to relax grammar: # https://lists.cs.columbia.edu/pipermail/sip-implementors/2010-December/026127.html UTF8_NONASCII = 0x80..0xff; # NOTE: Added by me (doesn't include space neither tabulator). PRINTABLE_ASCII = 0x21..0x7e; TEXT_UTF8char = PRINTABLE_ASCII | UTF8_NONASCII; alphanum = ALPHA | DIGIT; safe = ("$" | "-" | "_" | "."); extra = ("!" | "*" | "'" | "(" | ")" | ","); reserved = (";" | "/" | "?" | ":" | "@" | "&" | "=" | "+"); sorta_safe = ("\"" | "<" | ">"); unsafe = (CTL | " " | "#" | "%" | sorta_safe); national = any -- (alpha | digit | reserved | extra | safe | unsafe); unreserved = (alpha | digit | safe | extra | national); escape = ("%" xdigit xdigit); uchar = (unreserved | escape | sorta_safe); pchar = (uchar | ":" | "@" | "&" | "=" | "+"); tspecials = ("(" | ")" | "<" | ">" | "@" | "," | ";" | ":" | "\\" | "\"" | "/" | "[" | "]" | "?" | "=" | "{" | "}" | " " | "\t"); token = ( alphanum | "-" | "." | "!" | "%" | "*" | "_" | "+" | "`" | "'" | "~" )+; word = ( alphanum | "-" | "." | "!" | "%" | "*" | "_" | "+" | "`" | "'" | "~" | "(" | ")" | "<" | ">" | ":" | "\\" | DQUOTE | "/" | "[" | "]" | "?" | "{" | "}" )+; ctext = 0x21..0x27 | 0x2a..0x5b | 0x5d..0x7e | UTF8_NONASCII | LWS; quoted_pair = "\\" ( 0x00..0x09 | 0x0b..0x0c | 0x0e..0x7f ); qdtext = LWS | "!" | 0x23..0x5b | 0x5d..0x7e | UTF8_NONASCII; quoted_string = DQUOTE ( qdtext | quoted_pair )* DQUOTE; domainlabel = alphanum | ( alphanum ( alphanum | "-" | "_" )* alphanum ); toplabel = ALPHA | ( ALPHA ( alphanum | "-" | "_" )* alphanum ); hostname = ( domainlabel "." )* toplabel "."?; dec_octet = DIGIT | ( 0x31..0x39 DIGIT ) | ( "1" DIGIT{2} ) | ( "2" 0x30..0x34 DIGIT ) | ( "25" 0x30..0x35 ); IPv4address = dec_octet "." dec_octet "." dec_octet "." dec_octet; h16 = HEXDIG{1,4}; ls32 = ( h16 ":" h16 ) | IPv4address; IPv6address = ( ( h16 ":" ){6} ls32 ) | ( "::" ( h16 ":" ){5} ls32 ) | ( h16? "::" ( h16 ":" ){4} ls32 ) | ( ( ( h16 ":" )? h16 )? "::" ( h16 ":" ){3} ls32 ) | ( ( ( h16 ":" ){,2} h16 )? "::" ( h16 ":" ){2} ls32 ) | ( ( ( h16 ":" ){,3} h16 )? "::" h16 ":" ls32 ) | ( ( ( h16 ":" ){,4} h16 )? "::" ls32 ) | ( ( ( h16 ":" ){,5} h16 )? "::" h16 ) | ( ( ( h16 ":" ){,6} h16 )? "::" ); IPv6reference = "[" IPv6address "]"; host = hostname | IPv4address | IPv6reference; port = ( DIGIT{1,4} | "1".."5" DIGIT{4} | "6" "0".."4" DIGIT{3} | "6" "5" "0".."4" DIGIT{2} | "6" "5" "5" "0".."2" DIGIT | "6" "5" "5" "3" "0".."5" ) - ( "0" | "00" | "000" | "0000" ); hostport = host ( ":" port )?; userinfo = ((unreserved | escape | ";" | ":" | "&" | "=" | "+")+ "@")*; }%% ================================================ FILE: ext/websocket_http_parser/grammar_ws_http_headers.rl ================================================ %%{ machine grammar_ws_http_headers; DefinedHeader = "Content-Length"i | "Host"i | "Connection"i | "Upgrade"i | # NOTE: After draft-ietf-hybi-thewebsocketprotocol-13, "Sec-WebSocket-Origin" # becomes just "Origin" (as in HTTP). "Origin"i | "Sec-WebSocket-Origin"i | "Sec-WebSocket-Version"i | "Sec-WebSocket-Key"i | "Sec-WebSocket-Protocol"i; generic_hdr_name = ( token - DefinedHeader ) >write_hdr_value >start_hdr_field %write_hdr_field; generic_hdr_value = ( TEXT_UTF8char | UTF8_CONT | LWS )* >start_hdr_value %store_hdr_value; GenericHeader = generic_hdr_name HCOLON generic_hdr_value; ### Content-Length content_length_value = DIGIT{1,9} >mark %content_length; Content_Length = "Content-Length"i >write_hdr_value >start_hdr_field %write_hdr_field HCOLON content_length_value >start_hdr_value %store_hdr_value; ### Host host_value = host >mark %host ( ":" port >mark %port )?; Host = "Host"i >write_hdr_value >start_hdr_field %write_hdr_field HCOLON host_value >start_hdr_value %store_hdr_value; ### Connection connection_value = token >mark %hdr_connection_value; Connection = ( "Connection"i ) >write_hdr_value >start_hdr_field %write_hdr_field HCOLON ( connection_value >start_hdr_value ( COMMA connection_value )* ) %store_hdr_value; ### Upgrade upgrade_value = token >mark %hdr_upgrade; Upgrade = "Upgrade"i >write_hdr_value >start_hdr_field %write_hdr_field HCOLON upgrade_value >start_hdr_value %store_hdr_value; ### Origin origin_value = PRINTABLE_ASCII+ >mark %hdr_origin; Origin = ( "Origin"i | "Sec-WebSocket-Origin"i ) >write_hdr_value >start_hdr_field %write_hdr_field HCOLON origin_value >start_hdr_value %store_hdr_value; ### Sec-WebSocket-Version sec_websocket_version_value = DIGIT{1,3} >mark %hdr_sec_websocket_version; Sec_WebSocket_Version = "Sec-WebSocket-Version"i >write_hdr_value >start_hdr_field %write_hdr_field HCOLON sec_websocket_version_value >start_hdr_value %store_hdr_value; ### Sec-WebSocket-Key sec_websocket_key_value = PRINTABLE_ASCII{1,50} >mark %hdr_sec_websocket_key; Sec_WebSocket_Key = "Sec-WebSocket-Key"i >write_hdr_value >start_hdr_field %write_hdr_field HCOLON sec_websocket_key_value >start_hdr_value %store_hdr_value; ### Sec-WebSocket-Protocol sec_websocket_protocol_value = token >mark %hdr_sec_websocket_protocol_value; Sec_WebSocket_Protocol = ( "Sec-WebSocket-Protocol"i ) >write_hdr_value >start_hdr_field %write_hdr_field HCOLON ( sec_websocket_protocol_value >start_hdr_value ( COMMA sec_websocket_protocol_value )* ) %store_hdr_value; Header = GenericHeader | Content_Length | Host | Connection | Upgrade | Origin | Sec_WebSocket_Version | Sec_WebSocket_Key | Sec_WebSocket_Protocol; }%% ================================================ FILE: ext/websocket_http_parser/grammar_ws_http_request.rl ================================================ %%{ machine grammar_ws_http_request; include grammar_ws_http_core "grammar_ws_http_core.rl"; include grammar_ws_http_headers "grammar_ws_http_headers.rl"; path = pchar+ ( "/" pchar* )*; query = ( uchar | reserved )*; rel_path = path? %request_path ("?" %start_query query %query)?; absolute_path = "/"+ rel_path; Fragment = ( uchar | reserved )* >start_fragment %fragment; Request_URI = (absolute_path ("#" Fragment)?) >mark %request_uri; Method = ( "GET" %method_GET | "POST" %method_POST | "OPTIONS" %method_OPTIONS | token ) >mark %method_unknown; HTTP_Version = "HTTP"i "/" DIGIT{1,2} "." DIGIT{1,2}; Request_Line = Method %req_method SP Request_URI SP HTTP_Version >mark %http_version; Request = Request_Line :> CRLF ( Header CRLF )* CRLF >write_hdr_value @done; main := Request; }%% ================================================ FILE: ext/websocket_http_parser/ws_http_parser.c ================================================ #line 1 "ws_http_parser.rl" #include "ws_http_parser.h" #include "ext_help.h" #include #include #include #include #include #define MARK(M, FPC) (parser->M = (FPC) - buffer) #define LEN(AT, FPC) (FPC - buffer - parser->AT) #define PTR_TO(F) (buffer + parser->F) /** machine **/ #line 138 "ws_http_parser.rl" /** Data **/ #line 25 "ws_http_parser.c" static const char _ws_http_request_parser_actions[] = { 0, 1, 0, 1, 2, 1, 3, 1, 4, 1, 5, 1, 12, 1, 13, 1, 14, 1, 15, 1, 17, 1, 18, 1, 21, 1, 26, 1, 27, 2, 3, 0, 2, 3, 4, 2, 5, 1, 2, 9, 10, 2, 12, 11, 2, 13, 14, 2, 14, 11, 2, 16, 11, 2, 18, 4, 2, 19, 4, 2, 20, 4, 2, 21, 4, 2, 22, 4, 2, 23, 4, 2, 24, 4, 2, 25, 4, 2, 26, 4, 3, 6, 9, 10, 3, 7, 9, 10, 3, 8, 9, 10, 3, 13, 14, 11, 3, 15, 16, 11 }; static const short _ws_http_request_parser_key_offsets[] = { 0, 0, 17, 32, 33, 41, 43, 45, 47, 49, 50, 52, 55, 57, 60, 61, 86, 87, 104, 107, 113, 119, 120, 147, 166, 185, 206, 225, 244, 263, 282, 301, 320, 337, 340, 357, 358, 360, 376, 392, 396, 397, 399, 402, 419, 420, 422, 438, 439, 466, 485, 504, 523, 540, 543, 556, 557, 559, 571, 580, 588, 597, 603, 614, 622, 630, 636, 639, 642, 644, 645, 648, 651, 654, 657, 663, 669, 675, 678, 687, 696, 705, 714, 723, 734, 745, 756, 770, 783, 792, 801, 813, 824, 833, 842, 854, 865, 874, 883, 895, 906, 913, 920, 927, 934, 935, 942, 949, 956, 963, 964, 971, 978, 985, 992, 993, 1000, 1007, 1014, 1021, 1022, 1029, 1036, 1043, 1050, 1051, 1058, 1065, 1072, 1079, 1080, 1090, 1098, 1103, 1104, 1109, 1110, 1115, 1116, 1118, 1121, 1124, 1130, 1133, 1136, 1139, 1145, 1148, 1151, 1154, 1160, 1163, 1170, 1177, 1178, 1185, 1192, 1199, 1206, 1214, 1222, 1230, 1241, 1251, 1259, 1267, 1274, 1281, 1291, 1300, 1308, 1316, 1318, 1324, 1333, 1342, 1351, 1363, 1374, 1383, 1392, 1400, 1410, 1419, 1427, 1435, 1437, 1446, 1455, 1464, 1473, 1485, 1496, 1505, 1514, 1522, 1532, 1541, 1549, 1557, 1559, 1568, 1577, 1586, 1595, 1607, 1618, 1627, 1636, 1644, 1654, 1663, 1671, 1679, 1681, 1690, 1699, 1708, 1717, 1729, 1740, 1749, 1758, 1766, 1776, 1785, 1793, 1801, 1803, 1812, 1821, 1830, 1839, 1851, 1862, 1871, 1880, 1888, 1889, 1899, 1908, 1916, 1924, 1926, 1935, 1944, 1953, 1962, 1974, 1985, 1994, 2003, 2011, 2030, 2049, 2068, 2087, 2106, 2123, 2126, 2131, 2132, 2134, 2138, 2141, 2160, 2179, 2196, 2215, 2234, 2253, 2272, 2291, 2310, 2329, 2348, 2367, 2384, 2409, 2428, 2447, 2464, 2467, 2472, 2473, 2475, 2479, 2482, 2485, 2488, 2491, 2494, 2497, 2500, 2503, 2506, 2509, 2512, 2515, 2518, 2521, 2524, 2527, 2530, 2533, 2536, 2539, 2542, 2545, 2548, 2551, 2554, 2557, 2560, 2563, 2566, 2569, 2572, 2575, 2578, 2581, 2584, 2587, 2590, 2593, 2596, 2599, 2602, 2605, 2608, 2611, 2614, 2617, 2620, 2623, 2626, 2627, 2646, 2665, 2684, 2703, 2722, 2741, 2760, 2777, 2780, 2797, 2798, 2800, 2816, 2832, 2836, 2837, 2839, 2842, 2859, 2860, 2862, 2878, 2879, 2906, 2925, 2944, 2963, 2982, 3001, 3020, 3037, 3040, 3057, 3058, 3060, 3076, 3091, 3110, 3129, 3148, 3167, 3186, 3205, 3222, 3225, 3230, 3231, 3233, 3237, 3240, 3243, 3244, 3263, 3282, 3301, 3318, 3337, 3356, 3375, 3394, 3413, 3432, 3449, 3452, 3457, 3458, 3460, 3464, 3467, 3470, 3473, 3476, 3479, 3482, 3485, 3488, 3489, 3490, 3517, 3523, 3524, 3525, 3531, 3537, 3543, 3549, 3555, 3561, 3567, 3573, 3579, 3585, 3601, 3617, 3632, 3648, 3664, 3680, 3696, 3712, 3728, 3743, 3759, 3775, 3791, 3806 }; static const char _ws_http_request_parser_trans_keys[] = { 33, 37, 39, 71, 79, 80, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 47, 32, 35, 37, 59, 63, 127, 0, 31, 72, 104, 84, 116, 84, 116, 80, 112, 47, 48, 57, 46, 48, 57, 48, 57, 13, 48, 57, 10, 13, 33, 37, 39, 67, 72, 79, 83, 85, 99, 104, 111, 115, 117, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 127, 0, 31, 13, 127, 0, 8, 10, 31, 10, 9, 13, 32, 33, 37, 39, 67, 72, 79, 83, 85, 99, 104, 111, 115, 117, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 78, 110, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 78, 84, 110, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 67, 99, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 78, 110, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 10, 9, 32, 9, 32, 44, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 72, 79, 83, 85, 99, 104, 111, 115, 117, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 83, 115, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 10, 9, 32, 9, 32, 48, 49, 50, 91, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 57, 65, 90, 97, 122, 13, 45, 46, 58, 95, 48, 57, 65, 90, 97, 122, 45, 95, 48, 57, 65, 90, 97, 122, 13, 58, 48, 57, 65, 90, 97, 122, 48, 54, 49, 53, 55, 57, 48, 49, 57, 48, 49, 57, 49, 57, 13, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 53, 48, 52, 54, 57, 13, 53, 48, 52, 54, 57, 13, 51, 48, 50, 52, 57, 13, 48, 53, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 48, 49, 50, 51, 57, 65, 90, 97, 122, 13, 45, 46, 58, 95, 48, 57, 65, 90, 97, 122, 13, 45, 46, 58, 95, 48, 57, 65, 90, 97, 122, 13, 45, 46, 58, 95, 48, 57, 65, 90, 97, 122, 13, 45, 46, 53, 58, 95, 48, 52, 54, 57, 65, 90, 97, 122, 13, 45, 46, 58, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 95, 48, 57, 65, 90, 97, 122, 45, 46, 53, 95, 48, 52, 54, 57, 65, 90, 97, 122, 45, 46, 95, 48, 53, 54, 57, 65, 90, 97, 122, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 58, 51, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 46, 48, 49, 50, 51, 57, 93, 13, 58, 93, 48, 57, 93, 48, 57, 53, 93, 48, 52, 54, 57, 93, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 46, 48, 57, 46, 48, 57, 46, 53, 48, 52, 54, 57, 46, 48, 53, 58, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 58, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 53, 58, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 46, 58, 48, 57, 65, 70, 97, 102, 93, 48, 57, 65, 70, 97, 102, 58, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 48, 49, 50, 93, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 49, 50, 51, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 53, 58, 93, 48, 52, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 53, 54, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 46, 58, 93, 48, 57, 65, 70, 97, 102, 58, 93, 48, 57, 65, 70, 97, 102, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 71, 103, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 78, 110, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 126, 10, 9, 32, 9, 32, 33, 126, 13, 33, 126, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 67, 99, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 45, 46, 58, 126, 42, 43, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 87, 119, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 66, 98, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 83, 115, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 67, 99, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 75, 107, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 45, 46, 58, 126, 42, 43, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 75, 79, 80, 86, 107, 111, 112, 118, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 89, 121, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 126, 10, 9, 32, 9, 32, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 33, 126, 13, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 67, 99, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 76, 108, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 33, 37, 39, 44, 126, 42, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 44, 10, 9, 32, 9, 32, 44, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 13, 32, 33, 37, 39, 67, 72, 79, 83, 85, 99, 104, 111, 115, 117, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 80, 112, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 71, 103, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 65, 97, 126, 42, 43, 45, 46, 48, 57, 66, 90, 95, 122, 9, 32, 33, 37, 39, 58, 68, 100, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 10, 9, 32, 9, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 13, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 82, 114, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 83, 115, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 73, 105, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 79, 111, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 78, 110, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 48, 57, 10, 9, 32, 9, 32, 48, 57, 13, 48, 57, 13, 48, 57, 13, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 78, 110, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 45, 46, 58, 126, 42, 43, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 76, 108, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 69, 101, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 78, 110, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 71, 103, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 84, 116, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 72, 104, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 33, 37, 39, 58, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 32, 58, 9, 13, 32, 48, 57, 10, 9, 32, 9, 32, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 48, 57, 13, 10, 9, 13, 32, 33, 37, 39, 67, 72, 79, 83, 85, 99, 104, 111, 115, 117, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 9, 13, 32, 127, 0, 31, 13, 46, 32, 35, 37, 127, 0, 31, 32, 35, 37, 127, 0, 31, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 35, 37, 127, 0, 31, 32, 35, 37, 127, 0, 31, 48, 57, 65, 70, 97, 102, 48, 57, 65, 70, 97, 102, 32, 33, 37, 39, 69, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 84, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 80, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 84, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 73, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 79, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 78, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 83, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 79, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 83, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 84, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 32, 33, 37, 39, 126, 42, 43, 45, 46, 48, 57, 65, 90, 95, 122, 0 }; static const char _ws_http_request_parser_single_lengths[] = { 0, 7, 5, 1, 6, 2, 2, 2, 2, 1, 0, 1, 0, 1, 1, 15, 1, 7, 3, 4, 2, 1, 17, 9, 9, 11, 9, 9, 9, 9, 9, 9, 7, 3, 7, 1, 2, 6, 8, 4, 1, 2, 3, 7, 1, 2, 6, 1, 17, 9, 9, 9, 7, 3, 7, 1, 2, 6, 3, 2, 3, 0, 5, 2, 2, 2, 1, 1, 0, 1, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 5, 5, 5, 6, 5, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 4, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 3, 1, 3, 1, 3, 1, 2, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 3, 2, 2, 2, 1, 1, 4, 3, 2, 2, 2, 0, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 1, 4, 3, 2, 2, 2, 3, 3, 3, 3, 4, 3, 3, 3, 2, 9, 9, 9, 9, 9, 7, 3, 3, 1, 2, 2, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 15, 9, 9, 7, 3, 3, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 7, 3, 7, 1, 2, 6, 8, 4, 1, 2, 3, 7, 1, 2, 6, 1, 17, 9, 9, 9, 9, 9, 9, 7, 3, 7, 1, 2, 6, 5, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 2, 2, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 7, 3, 3, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 4, 1, 1, 4, 4, 0, 0, 0, 0, 4, 4, 0, 0, 6, 6, 5, 6, 6, 6, 6, 6, 6, 5, 6, 6, 6, 5, 0 }; static const char _ws_http_request_parser_range_lengths[] = { 0, 5, 5, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 5, 0, 5, 0, 1, 2, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 0, 5, 4, 0, 0, 0, 0, 5, 0, 0, 5, 0, 5, 5, 5, 5, 5, 0, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 2, 1, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 1, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 4, 4, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 1, 0, 1, 0, 1, 0, 0, 1, 1, 2, 1, 1, 1, 2, 1, 1, 1, 2, 1, 3, 3, 0, 3, 3, 3, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 0, 3, 3, 3, 3, 0, 3, 3, 3, 3, 4, 4, 3, 3, 3, 5, 5, 5, 5, 5, 5, 0, 1, 0, 0, 1, 1, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 0, 5, 4, 0, 0, 0, 0, 5, 0, 0, 5, 0, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 1, 0, 0, 1, 1, 1, 0, 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 5, 1, 0, 0, 1, 1, 3, 3, 3, 3, 1, 1, 3, 3, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0 }; static const short _ws_http_request_parser_index_offsets[] = { 0, 0, 13, 24, 26, 34, 37, 40, 43, 46, 48, 50, 53, 55, 58, 60, 81, 83, 96, 100, 106, 111, 113, 136, 151, 166, 183, 198, 213, 228, 243, 258, 273, 286, 290, 303, 305, 308, 320, 333, 338, 340, 343, 347, 360, 362, 365, 377, 379, 402, 417, 432, 447, 460, 464, 475, 477, 480, 490, 497, 503, 510, 514, 523, 529, 535, 540, 543, 546, 548, 550, 553, 556, 559, 562, 567, 572, 577, 580, 587, 594, 601, 608, 615, 624, 633, 642, 653, 663, 670, 677, 686, 694, 701, 708, 717, 725, 732, 739, 748, 756, 761, 766, 771, 776, 778, 783, 788, 793, 798, 800, 805, 810, 815, 820, 822, 827, 832, 837, 842, 844, 849, 854, 859, 864, 866, 871, 876, 881, 886, 888, 896, 902, 907, 909, 914, 916, 921, 923, 926, 929, 932, 937, 940, 943, 946, 951, 954, 957, 960, 965, 968, 973, 978, 980, 985, 990, 995, 1000, 1006, 1012, 1018, 1026, 1033, 1039, 1045, 1050, 1055, 1063, 1070, 1076, 1082, 1085, 1089, 1096, 1103, 1110, 1119, 1127, 1134, 1141, 1147, 1155, 1162, 1168, 1174, 1177, 1184, 1191, 1198, 1205, 1214, 1222, 1229, 1236, 1242, 1250, 1257, 1263, 1269, 1272, 1279, 1286, 1293, 1300, 1309, 1317, 1324, 1331, 1337, 1345, 1352, 1358, 1364, 1367, 1374, 1381, 1388, 1395, 1404, 1412, 1419, 1426, 1432, 1440, 1447, 1453, 1459, 1462, 1469, 1476, 1483, 1490, 1499, 1507, 1514, 1521, 1527, 1529, 1537, 1544, 1550, 1556, 1559, 1566, 1573, 1580, 1587, 1596, 1604, 1611, 1618, 1624, 1639, 1654, 1669, 1684, 1699, 1712, 1716, 1721, 1723, 1726, 1730, 1733, 1748, 1763, 1777, 1792, 1807, 1822, 1837, 1852, 1867, 1882, 1897, 1912, 1926, 1947, 1962, 1977, 1990, 1994, 1999, 2001, 2004, 2008, 2011, 2014, 2017, 2020, 2023, 2026, 2029, 2032, 2035, 2038, 2041, 2044, 2047, 2050, 2053, 2056, 2059, 2062, 2065, 2068, 2071, 2074, 2077, 2080, 2083, 2086, 2089, 2092, 2095, 2098, 2101, 2104, 2107, 2110, 2113, 2116, 2119, 2122, 2125, 2128, 2131, 2134, 2137, 2140, 2143, 2146, 2149, 2152, 2155, 2157, 2172, 2187, 2202, 2217, 2232, 2247, 2262, 2275, 2279, 2292, 2294, 2297, 2309, 2322, 2327, 2329, 2332, 2336, 2349, 2351, 2354, 2366, 2368, 2391, 2406, 2421, 2436, 2451, 2466, 2481, 2494, 2498, 2511, 2513, 2516, 2528, 2539, 2554, 2569, 2584, 2599, 2614, 2629, 2642, 2646, 2651, 2653, 2656, 2660, 2663, 2666, 2668, 2683, 2698, 2713, 2727, 2742, 2757, 2772, 2787, 2802, 2817, 2830, 2834, 2839, 2841, 2844, 2848, 2851, 2854, 2857, 2860, 2863, 2866, 2869, 2872, 2874, 2876, 2899, 2905, 2907, 2909, 2915, 2921, 2925, 2929, 2933, 2937, 2943, 2949, 2953, 2957, 2969, 2981, 2992, 3004, 3016, 3028, 3040, 3052, 3064, 3075, 3087, 3099, 3111, 3122 }; static const short _ws_http_request_parser_indicies[] = { 0, 0, 0, 2, 3, 4, 0, 0, 0, 0, 0, 0, 1, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 7, 1, 9, 10, 11, 1, 12, 1, 1, 8, 13, 13, 1, 14, 14, 1, 15, 15, 1, 16, 16, 1, 17, 1, 18, 1, 19, 20, 1, 21, 1, 22, 23, 1, 24, 1, 25, 26, 26, 26, 27, 28, 29, 30, 31, 27, 28, 29, 30, 31, 26, 26, 26, 26, 26, 26, 1, 32, 1, 33, 33, 34, 34, 34, 35, 34, 34, 34, 34, 34, 34, 1, 36, 36, 37, 1, 39, 40, 39, 1, 1, 38, 42, 1, 1, 1, 41, 43, 1, 41, 25, 41, 26, 26, 26, 27, 28, 29, 30, 31, 27, 28, 29, 30, 31, 26, 26, 26, 26, 26, 26, 1, 33, 33, 34, 34, 34, 35, 44, 44, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 45, 45, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 46, 47, 46, 47, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 48, 48, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 49, 49, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 50, 50, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 51, 51, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 52, 52, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 53, 53, 34, 34, 34, 34, 34, 34, 1, 54, 54, 34, 34, 34, 55, 34, 34, 34, 34, 34, 34, 1, 56, 56, 57, 1, 57, 58, 57, 59, 59, 59, 59, 59, 59, 59, 59, 59, 1, 60, 1, 61, 61, 1, 61, 61, 59, 59, 59, 59, 59, 59, 59, 59, 59, 1, 62, 63, 62, 64, 64, 64, 65, 64, 64, 64, 64, 64, 1, 66, 67, 66, 68, 1, 69, 1, 70, 70, 1, 70, 70, 68, 1, 68, 71, 68, 72, 72, 72, 72, 72, 72, 72, 72, 72, 1, 73, 1, 74, 74, 1, 74, 74, 72, 72, 72, 72, 72, 72, 72, 72, 72, 1, 75, 1, 70, 25, 70, 26, 26, 26, 27, 28, 29, 30, 31, 27, 28, 29, 30, 31, 26, 26, 26, 26, 26, 26, 1, 33, 33, 34, 34, 34, 35, 76, 76, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 77, 77, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 78, 78, 34, 34, 34, 34, 34, 34, 1, 79, 79, 34, 34, 34, 80, 34, 34, 34, 34, 34, 34, 1, 81, 81, 82, 1, 82, 83, 82, 84, 85, 86, 89, 87, 88, 88, 1, 90, 1, 91, 91, 1, 91, 91, 84, 85, 86, 89, 87, 88, 88, 1, 92, 93, 92, 94, 94, 94, 1, 92, 92, 94, 94, 94, 1, 92, 95, 92, 94, 94, 94, 1, 94, 96, 96, 1, 97, 98, 99, 100, 98, 96, 96, 96, 1, 98, 98, 96, 96, 96, 1, 97, 100, 94, 96, 96, 1, 101, 103, 102, 104, 1, 105, 106, 1, 107, 108, 1, 109, 1, 110, 1, 110, 109, 1, 110, 108, 1, 110, 111, 1, 110, 106, 1, 110, 112, 111, 106, 1, 110, 113, 106, 108, 1, 110, 114, 108, 109, 1, 110, 109, 1, 115, 116, 117, 118, 96, 96, 1, 92, 119, 92, 94, 94, 94, 1, 120, 121, 122, 123, 96, 96, 1, 92, 124, 92, 94, 94, 94, 1, 125, 126, 127, 128, 96, 96, 1, 97, 92, 95, 100, 92, 94, 94, 94, 1, 97, 92, 95, 100, 92, 128, 94, 94, 1, 97, 92, 95, 100, 92, 125, 94, 94, 1, 97, 92, 95, 129, 100, 92, 128, 125, 94, 94, 1, 97, 92, 95, 100, 92, 125, 94, 94, 94, 1, 92, 124, 92, 123, 94, 94, 1, 92, 124, 92, 120, 94, 94, 1, 92, 124, 130, 92, 123, 120, 94, 94, 1, 92, 124, 92, 120, 94, 94, 94, 1, 92, 119, 92, 118, 94, 94, 1, 92, 119, 92, 115, 94, 94, 1, 92, 119, 131, 92, 118, 115, 94, 94, 1, 92, 119, 92, 115, 94, 94, 94, 1, 92, 93, 92, 132, 94, 94, 1, 92, 93, 92, 133, 94, 94, 1, 92, 93, 134, 92, 132, 133, 94, 94, 1, 92, 93, 92, 133, 94, 94, 94, 1, 136, 135, 135, 135, 1, 138, 137, 137, 137, 1, 138, 139, 139, 139, 1, 138, 140, 140, 140, 1, 138, 1, 142, 141, 141, 141, 1, 144, 143, 143, 143, 1, 144, 145, 145, 145, 1, 144, 146, 146, 146, 1, 144, 1, 148, 147, 147, 147, 1, 150, 149, 149, 149, 1, 150, 151, 151, 151, 1, 150, 152, 152, 152, 1, 150, 1, 154, 153, 153, 153, 1, 156, 155, 155, 155, 1, 156, 157, 157, 157, 1, 156, 158, 158, 158, 1, 156, 1, 160, 159, 159, 159, 1, 162, 161, 161, 161, 1, 162, 163, 163, 163, 1, 162, 164, 164, 164, 1, 162, 1, 166, 165, 165, 165, 1, 168, 167, 167, 167, 1, 168, 169, 169, 169, 1, 168, 170, 170, 170, 1, 168, 1, 171, 172, 173, 175, 174, 176, 176, 1, 177, 179, 178, 178, 178, 1, 180, 181, 182, 183, 1, 184, 1, 185, 186, 187, 188, 1, 189, 1, 190, 191, 192, 193, 1, 194, 1, 97, 100, 1, 194, 193, 1, 194, 190, 1, 195, 194, 193, 190, 1, 194, 190, 1, 189, 188, 1, 189, 185, 1, 189, 196, 188, 185, 1, 189, 185, 1, 184, 183, 1, 184, 180, 1, 184, 197, 183, 180, 1, 184, 180, 1, 179, 198, 198, 198, 1, 179, 199, 199, 199, 1, 179, 1, 190, 200, 200, 200, 1, 194, 201, 201, 201, 1, 194, 202, 202, 202, 1, 194, 190, 190, 190, 1, 177, 179, 203, 178, 178, 1, 177, 179, 204, 198, 198, 1, 177, 179, 199, 199, 199, 1, 177, 205, 179, 203, 206, 178, 178, 1, 177, 179, 204, 198, 198, 198, 1, 177, 179, 198, 198, 198, 1, 177, 179, 206, 178, 178, 1, 194, 200, 200, 200, 1, 179, 178, 178, 178, 1, 207, 208, 209, 194, 210, 211, 211, 1, 177, 213, 194, 212, 212, 212, 1, 213, 194, 214, 214, 214, 1, 213, 194, 215, 215, 215, 1, 213, 194, 1, 200, 200, 200, 1, 177, 213, 194, 216, 212, 212, 1, 177, 213, 194, 217, 214, 214, 1, 177, 213, 194, 215, 215, 215, 1, 177, 218, 213, 194, 216, 219, 212, 212, 1, 177, 213, 194, 217, 214, 214, 214, 1, 177, 213, 194, 214, 214, 214, 1, 177, 213, 194, 219, 212, 212, 1, 213, 194, 212, 212, 212, 1, 220, 221, 222, 194, 223, 224, 224, 1, 177, 226, 194, 225, 225, 225, 1, 226, 194, 227, 227, 227, 1, 226, 194, 228, 228, 228, 1, 226, 194, 1, 207, 208, 209, 210, 211, 211, 1, 177, 226, 194, 229, 225, 225, 1, 177, 226, 194, 230, 227, 227, 1, 177, 226, 194, 228, 228, 228, 1, 177, 231, 226, 194, 229, 232, 225, 225, 1, 177, 226, 194, 230, 227, 227, 227, 1, 177, 226, 194, 227, 227, 227, 1, 177, 226, 194, 232, 225, 225, 1, 226, 194, 225, 225, 225, 1, 233, 234, 235, 194, 236, 237, 237, 1, 177, 239, 194, 238, 238, 238, 1, 239, 194, 240, 240, 240, 1, 239, 194, 241, 241, 241, 1, 239, 194, 1, 220, 221, 222, 223, 224, 224, 1, 177, 239, 194, 242, 238, 238, 1, 177, 239, 194, 243, 240, 240, 1, 177, 239, 194, 241, 241, 241, 1, 177, 244, 239, 194, 242, 245, 238, 238, 1, 177, 239, 194, 243, 240, 240, 240, 1, 177, 239, 194, 240, 240, 240, 1, 177, 239, 194, 245, 238, 238, 1, 239, 194, 238, 238, 238, 1, 246, 247, 248, 194, 249, 250, 250, 1, 177, 252, 194, 251, 251, 251, 1, 252, 194, 253, 253, 253, 1, 252, 194, 254, 254, 254, 1, 252, 194, 1, 233, 234, 235, 236, 237, 237, 1, 177, 252, 194, 255, 251, 251, 1, 177, 252, 194, 256, 253, 253, 1, 177, 252, 194, 254, 254, 254, 1, 177, 257, 252, 194, 255, 258, 251, 251, 1, 177, 252, 194, 256, 253, 253, 253, 1, 177, 252, 194, 253, 253, 253, 1, 177, 252, 194, 258, 251, 251, 1, 252, 194, 251, 251, 251, 1, 259, 260, 261, 194, 262, 263, 263, 1, 177, 265, 194, 264, 264, 264, 1, 265, 194, 266, 266, 266, 1, 265, 194, 267, 267, 267, 1, 265, 194, 1, 246, 247, 248, 249, 250, 250, 1, 177, 265, 194, 268, 264, 264, 1, 177, 265, 194, 269, 266, 266, 1, 177, 265, 194, 267, 267, 267, 1, 177, 270, 265, 194, 268, 271, 264, 264, 1, 177, 265, 194, 269, 266, 266, 266, 1, 177, 265, 194, 266, 266, 266, 1, 177, 265, 194, 271, 264, 264, 1, 265, 194, 264, 264, 264, 1, 272, 1, 273, 274, 275, 194, 276, 277, 277, 1, 177, 279, 194, 278, 278, 278, 1, 279, 194, 280, 280, 280, 1, 279, 194, 281, 281, 281, 1, 279, 194, 1, 259, 260, 261, 262, 263, 263, 1, 177, 279, 194, 282, 278, 278, 1, 177, 279, 194, 283, 280, 280, 1, 177, 279, 194, 281, 281, 281, 1, 177, 284, 279, 194, 282, 285, 278, 278, 1, 177, 279, 194, 283, 280, 280, 280, 1, 177, 279, 194, 280, 280, 280, 1, 177, 279, 194, 285, 278, 278, 1, 279, 194, 278, 278, 278, 1, 33, 33, 34, 34, 34, 35, 286, 286, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 287, 287, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 288, 288, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 289, 289, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 290, 290, 34, 34, 34, 34, 34, 34, 1, 291, 291, 34, 34, 34, 292, 34, 34, 34, 34, 34, 34, 1, 293, 293, 294, 1, 294, 295, 294, 296, 1, 297, 1, 298, 298, 1, 298, 298, 296, 1, 299, 300, 1, 33, 33, 34, 34, 34, 35, 301, 301, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 302, 302, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 303, 34, 35, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 304, 304, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 305, 305, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 306, 306, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 307, 307, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 308, 308, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 309, 309, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 310, 310, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 311, 311, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 312, 312, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 313, 34, 35, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 314, 315, 316, 317, 314, 315, 316, 317, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 318, 318, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 319, 319, 34, 34, 34, 34, 34, 34, 1, 320, 320, 34, 34, 34, 321, 34, 34, 34, 34, 34, 34, 1, 322, 322, 323, 1, 323, 324, 323, 325, 1, 326, 1, 327, 327, 1, 327, 327, 325, 1, 328, 329, 1, 328, 330, 1, 328, 331, 1, 328, 332, 1, 328, 333, 1, 328, 334, 1, 328, 335, 1, 328, 336, 1, 328, 337, 1, 328, 338, 1, 328, 339, 1, 328, 340, 1, 328, 341, 1, 328, 342, 1, 328, 343, 1, 328, 344, 1, 328, 345, 1, 328, 346, 1, 328, 347, 1, 328, 348, 1, 328, 349, 1, 328, 350, 1, 328, 351, 1, 328, 352, 1, 328, 353, 1, 328, 354, 1, 328, 355, 1, 328, 356, 1, 328, 357, 1, 328, 358, 1, 328, 359, 1, 328, 360, 1, 328, 361, 1, 328, 362, 1, 328, 363, 1, 328, 364, 1, 328, 365, 1, 328, 366, 1, 328, 367, 1, 328, 368, 1, 328, 369, 1, 328, 370, 1, 328, 371, 1, 328, 372, 1, 328, 373, 1, 328, 374, 1, 328, 375, 1, 328, 376, 1, 328, 377, 1, 328, 1, 33, 33, 34, 34, 34, 35, 378, 378, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 379, 379, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 380, 380, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 381, 381, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 382, 382, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 383, 383, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 384, 384, 34, 34, 34, 34, 34, 34, 1, 385, 385, 34, 34, 34, 386, 34, 34, 34, 34, 34, 34, 1, 387, 387, 388, 1, 388, 389, 388, 390, 390, 390, 390, 390, 390, 390, 390, 390, 1, 391, 1, 392, 392, 1, 392, 392, 390, 390, 390, 390, 390, 390, 390, 390, 390, 1, 393, 394, 393, 395, 395, 395, 396, 395, 395, 395, 395, 395, 1, 397, 398, 397, 399, 1, 400, 1, 401, 401, 1, 401, 401, 399, 1, 399, 402, 399, 403, 403, 403, 403, 403, 403, 403, 403, 403, 1, 404, 1, 405, 405, 1, 405, 405, 403, 403, 403, 403, 403, 403, 403, 403, 403, 1, 406, 1, 401, 25, 401, 26, 26, 26, 27, 28, 29, 30, 31, 27, 28, 29, 30, 31, 26, 26, 26, 26, 26, 26, 1, 33, 33, 34, 34, 34, 35, 407, 407, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 408, 408, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 409, 409, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 410, 410, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 411, 411, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 412, 412, 34, 34, 34, 34, 34, 34, 1, 413, 413, 34, 34, 34, 414, 34, 34, 34, 34, 34, 34, 1, 415, 415, 416, 1, 416, 417, 416, 418, 418, 418, 418, 418, 418, 418, 418, 418, 1, 419, 1, 420, 420, 1, 420, 420, 418, 418, 418, 418, 418, 418, 418, 418, 418, 1, 421, 422, 422, 422, 422, 422, 422, 422, 422, 422, 1, 33, 33, 34, 34, 34, 35, 423, 423, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 424, 424, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 425, 425, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 426, 426, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 427, 427, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 428, 428, 34, 34, 34, 34, 34, 34, 1, 429, 429, 34, 34, 34, 430, 34, 34, 34, 34, 34, 34, 1, 431, 431, 432, 1, 432, 433, 432, 434, 1, 435, 1, 436, 436, 1, 436, 436, 434, 1, 437, 438, 1, 437, 439, 1, 437, 1, 33, 33, 34, 34, 34, 35, 440, 440, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 441, 441, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 442, 442, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 443, 34, 35, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 444, 444, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 445, 445, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 446, 446, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 447, 447, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 448, 448, 34, 34, 34, 34, 34, 34, 1, 33, 33, 34, 34, 34, 35, 449, 449, 34, 34, 34, 34, 34, 34, 1, 450, 450, 34, 34, 34, 451, 34, 34, 34, 34, 34, 34, 1, 452, 452, 453, 1, 453, 454, 453, 455, 1, 456, 1, 457, 457, 1, 457, 457, 455, 1, 458, 459, 1, 458, 460, 1, 458, 461, 1, 458, 462, 1, 458, 463, 1, 458, 464, 1, 458, 465, 1, 458, 466, 1, 458, 1, 467, 1, 468, 25, 468, 26, 26, 26, 27, 28, 29, 30, 31, 27, 28, 29, 30, 31, 26, 26, 26, 26, 26, 26, 1, 469, 470, 469, 1, 1, 38, 22, 1, 19, 1, 472, 1, 473, 1, 1, 471, 475, 1, 476, 1, 1, 474, 477, 477, 477, 1, 474, 474, 474, 1, 478, 478, 478, 1, 8, 8, 8, 1, 480, 481, 482, 1, 1, 479, 484, 485, 486, 1, 1, 483, 487, 487, 487, 1, 483, 483, 483, 1, 5, 6, 6, 6, 488, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 489, 6, 6, 6, 6, 6, 6, 1, 490, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 491, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 492, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 493, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 494, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 495, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 496, 6, 6, 6, 6, 6, 6, 1, 497, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 498, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 499, 6, 6, 6, 6, 6, 6, 1, 5, 6, 6, 6, 500, 6, 6, 6, 6, 6, 6, 1, 501, 6, 6, 6, 6, 6, 6, 6, 6, 6, 1, 1, 0 }; static const short _ws_http_request_parser_trans_targs[] = { 2, 0, 428, 431, 438, 3, 2, 4, 4, 5, 418, 422, 424, 6, 7, 8, 9, 10, 11, 12, 417, 13, 14, 416, 15, 16, 17, 23, 49, 252, 264, 360, 442, 18, 17, 19, 18, 19, 20, 19, 413, 20, 21, 22, 24, 25, 26, 388, 27, 28, 29, 30, 31, 32, 33, 34, 33, 34, 35, 38, 36, 37, 39, 47, 38, 43, 39, 40, 43, 41, 42, 44, 38, 45, 46, 48, 50, 51, 52, 53, 54, 53, 54, 55, 58, 96, 98, 97, 62, 100, 56, 57, 59, 78, 60, 61, 62, 14, 63, 64, 65, 66, 72, 74, 73, 67, 71, 68, 70, 69, 14, 73, 75, 76, 77, 79, 92, 94, 93, 80, 81, 88, 90, 89, 82, 83, 84, 86, 85, 87, 91, 95, 97, 58, 99, 101, 237, 102, 105, 103, 104, 106, 223, 107, 110, 108, 109, 111, 209, 112, 115, 113, 114, 116, 195, 117, 120, 118, 119, 121, 181, 122, 125, 123, 124, 126, 167, 127, 130, 128, 129, 131, 158, 161, 164, 165, 166, 132, 151, 154, 133, 147, 149, 148, 134, 135, 143, 145, 144, 136, 137, 139, 141, 140, 138, 142, 146, 150, 152, 153, 155, 156, 157, 159, 160, 162, 163, 168, 173, 176, 179, 180, 169, 172, 170, 171, 174, 175, 177, 178, 182, 187, 190, 193, 194, 183, 186, 184, 185, 188, 189, 191, 192, 196, 201, 204, 207, 208, 197, 200, 198, 199, 202, 203, 205, 206, 210, 215, 218, 221, 222, 211, 214, 212, 213, 216, 217, 219, 220, 224, 229, 232, 235, 236, 225, 228, 226, 227, 230, 231, 233, 234, 238, 239, 244, 247, 250, 251, 240, 243, 241, 242, 245, 246, 248, 249, 253, 254, 255, 256, 257, 258, 259, 258, 259, 260, 263, 261, 262, 14, 263, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 252, 336, 373, 279, 280, 281, 282, 281, 282, 283, 286, 284, 285, 14, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 337, 338, 339, 340, 341, 342, 343, 344, 345, 344, 345, 346, 349, 347, 348, 350, 358, 349, 354, 350, 351, 354, 352, 353, 355, 349, 356, 357, 359, 361, 362, 363, 364, 365, 366, 367, 368, 367, 368, 369, 372, 370, 371, 14, 372, 374, 375, 376, 377, 378, 379, 380, 381, 380, 381, 382, 385, 383, 384, 14, 386, 387, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 399, 400, 401, 404, 402, 403, 14, 405, 406, 407, 408, 409, 410, 411, 412, 414, 415, 415, 21, 419, 5, 420, 419, 5, 420, 421, 423, 425, 5, 418, 426, 425, 5, 418, 426, 427, 429, 430, 3, 432, 433, 434, 435, 436, 437, 3, 439, 440, 441, 3 }; static const char _ws_http_request_parser_trans_actions[] = { 1, 0, 1, 1, 1, 38, 0, 1, 0, 41, 11, 0, 11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 9, 35, 35, 35, 35, 35, 35, 27, 3, 0, 3, 0, 0, 5, 5, 32, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 0, 0, 23, 62, 0, 23, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 29, 29, 29, 29, 29, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 21, 1, 1, 1, 1, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 0, 0, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 0, 0, 25, 77, 0, 25, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 0, 0, 65, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 29, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 32, 17, 96, 17, 0, 50, 0, 0, 0, 13, 92, 44, 13, 0, 47, 15, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 88, 0, 0, 0, 84 }; static const int ws_http_request_parser_start = 1; static const int ws_http_request_parser_first_final = 442; static const int ws_http_request_parser_error = 0; static const int ws_http_request_parser_en_main = 1; #line 142 "ws_http_parser.rl" int ws_http_request_parser_init(ws_http_request_parser *parser) { int cs = 0; #line 1296 "ws_http_parser.c" { cs = ws_http_request_parser_start; } #line 147 "ws_http_parser.rl" parser->cs = cs; parser->nread = 0; parser->error_start = NULL; parser->error_len = 0; parser->error_pos = 0; parser->mark = 0; parser->hdr_field_start = 0; parser->hdr_field_len = 0; parser->hdr_value_start = 0; parser->hdr_value_len = 0; parser->query_start = 0; parser->fragment_start = 0; parser->method = 0; parser->uri_scheme = 0; parser->data = NULL; return(1); } /** exec **/ size_t ws_http_request_parser_execute(ws_http_request_parser *parser, const char *buffer, size_t len, size_t off) { const char *p, *pe; int cs = parser->cs; assert(off <= len && "offset past end of buffer"); p = buffer+off; pe = buffer+len; assert(*pe == '\0' && "pointer does not end on NULL"); assert(pe - p == len - off && "pointers aren't same distance"); #line 1340 "ws_http_parser.c" { int _klen; unsigned int _trans; const char *_acts; unsigned int _nacts; const char *_keys; if ( p == pe ) goto _test_eof; if ( cs == 0 ) goto _out; _resume: _keys = _ws_http_request_parser_trans_keys + _ws_http_request_parser_key_offsets[cs]; _trans = _ws_http_request_parser_index_offsets[cs]; _klen = _ws_http_request_parser_single_lengths[cs]; if ( _klen > 0 ) { const char *_lower = _keys; const char *_mid; const char *_upper = _keys + _klen - 1; while (1) { if ( _upper < _lower ) break; _mid = _lower + ((_upper-_lower) >> 1); if ( (*p) < *_mid ) _upper = _mid - 1; else if ( (*p) > *_mid ) _lower = _mid + 1; else { _trans += (unsigned int)(_mid - _keys); goto _match; } } _keys += _klen; _trans += _klen; } _klen = _ws_http_request_parser_range_lengths[cs]; if ( _klen > 0 ) { const char *_lower = _keys; const char *_mid; const char *_upper = _keys + (_klen<<1) - 2; while (1) { if ( _upper < _lower ) break; _mid = _lower + (((_upper-_lower) >> 1) & ~1); if ( (*p) < _mid[0] ) _upper = _mid - 2; else if ( (*p) > _mid[1] ) _lower = _mid + 2; else { _trans += (unsigned int)((_mid - _keys)>>1); goto _match; } } _trans += _klen; } _match: _trans = _ws_http_request_parser_indicies[_trans]; cs = _ws_http_request_parser_trans_targs[_trans]; if ( _ws_http_request_parser_trans_actions[_trans] == 0 ) goto _again; _acts = _ws_http_request_parser_actions + _ws_http_request_parser_trans_actions[_trans]; _nacts = (unsigned int) *_acts++; while ( _nacts-- > 0 ) { switch ( *_acts++ ) { case 0: #line 20 "ws_http_parser.rl" { MARK(mark, p); } break; case 1: #line 22 "ws_http_parser.rl" { MARK(hdr_field_start, p); } break; case 2: #line 26 "ws_http_parser.rl" { parser->hdr_field_len = LEN(hdr_field_start, p); } break; case 3: #line 30 "ws_http_parser.rl" { MARK(hdr_value_start, p); } break; case 4: #line 32 "ws_http_parser.rl" { parser->hdr_value_len = LEN(hdr_value_start, p); } break; case 5: #line 36 "ws_http_parser.rl" { if (parser->hdr_value_start) { parser->header(parser->data, PTR_TO(hdr_field_start), parser->hdr_field_len, PTR_TO(hdr_value_start), parser->hdr_value_len); } } break; case 6: #line 42 "ws_http_parser.rl" { parser->method = method_GET; } break; case 7: #line 43 "ws_http_parser.rl" { parser->method = method_POST; } break; case 8: #line 44 "ws_http_parser.rl" { parser->method = method_OPTIONS; } break; case 9: #line 45 "ws_http_parser.rl" { if (!parser->method) { parser->method = method_unknown; } } break; case 10: #line 51 "ws_http_parser.rl" { parser->request.method(parser->data, PTR_TO(mark), LEN(mark, p), parser->method); } break; case 11: #line 55 "ws_http_parser.rl" { parser->request.request_uri(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 12: #line 59 "ws_http_parser.rl" { parser->request.request_path(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 13: #line 63 "ws_http_parser.rl" { MARK(query_start, p); } break; case 14: #line 67 "ws_http_parser.rl" { parser->request.query(parser->data, PTR_TO(query_start), LEN(query_start, p)); } break; case 15: #line 71 "ws_http_parser.rl" { MARK(fragment_start, p); } break; case 16: #line 75 "ws_http_parser.rl" { parser->request.fragment(parser->data, PTR_TO(fragment_start), LEN(fragment_start, p)); } break; case 17: #line 95 "ws_http_parser.rl" { parser->request.http_version(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 18: #line 99 "ws_http_parser.rl" { parser->request.host(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 19: #line 103 "ws_http_parser.rl" { parser->request.port(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 20: #line 107 "ws_http_parser.rl" { parser->request.content_length(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 21: #line 111 "ws_http_parser.rl" { parser->request.hdr_connection_value(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 22: #line 115 "ws_http_parser.rl" { parser->request.hdr_upgrade(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 23: #line 119 "ws_http_parser.rl" { parser->request.hdr_origin(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 24: #line 123 "ws_http_parser.rl" { parser->request.hdr_sec_websocket_version(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 25: #line 127 "ws_http_parser.rl" { parser->request.hdr_sec_websocket_key(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 26: #line 131 "ws_http_parser.rl" { parser->request.hdr_sec_websocket_protocol_value(parser->data, PTR_TO(mark), LEN(mark, p)); } break; case 27: #line 135 "ws_http_parser.rl" { {p++; goto _out; } } break; #line 1574 "ws_http_parser.c" } } _again: if ( cs == 0 ) goto _out; if ( ++p != pe ) goto _resume; _test_eof: {} _out: {} } #line 185 "ws_http_parser.rl" parser->cs = cs; parser->nread += p - (buffer + off); assert(p <= pe && "buffer overflow after parsing execute"); assert(parser->nread <= len && "nread longer than length"); assert(parser->mark < len && "mark is after buffer end"); assert(parser->hdr_field_start < len && "field starts after buffer end"); assert(parser->hdr_field_len <= len && "field has length longer than whole buffer"); assert(parser->hdr_value_start < len && "value starts after buffer end"); assert(parser->hdr_value_len <= len && "value has length longer than whole buffer"); if (ws_http_request_parser_has_error(parser)) { parser->error_start = (char *)buffer; parser->error_len = pe - buffer; parser->error_pos = p - buffer; /* DOC: * buffer is the start of the parsed data. * p is last position of the parsing. * pe is first position after data ends. */ } return(parser->nread); } int ws_http_request_parser_finish(ws_http_request_parser *parser) { int cs = parser->cs; parser->cs = cs; if (ws_http_request_parser_has_error(parser)) return -1; else if (ws_http_request_parser_is_finished(parser)) return 1; else return 0; } int ws_http_request_parser_has_error(ws_http_request_parser *parser) { return parser->cs == ws_http_request_parser_error; } int ws_http_request_parser_is_finished(ws_http_request_parser *parser) { return parser->cs == ws_http_request_parser_first_final; } ================================================ FILE: ext/websocket_http_parser/ws_http_parser.h ================================================ #ifndef ws_http_parser_h #define ws_http_parser_h #include #if defined(_WIN32) #include #endif enum method { method_GET = 1, method_POST, method_OPTIONS, method_unknown }; enum uri_scheme { uri_scheme_http = 1, uri_scheme_https, uri_scheme_unknown }; typedef void (*msg_method_cb)(void *data, const char *at, size_t length, enum method method); typedef void (*uri_scheme_cb)(void *data, const char *at, size_t length, enum uri_scheme); typedef void (*msg_element_cb)(void *data, const char *at, size_t length); typedef void (*header_cb)(void *data, const char *hdr_field, size_t hdr_field_len, const char *hdr_value, size_t hdr_value_len); typedef struct struct_request { msg_method_cb method; uri_scheme_cb uri_scheme; msg_element_cb request_uri; msg_element_cb request_path; msg_element_cb query; msg_element_cb fragment; msg_element_cb http_version; msg_element_cb host; msg_element_cb port; msg_element_cb content_length; msg_element_cb hdr_connection_value; msg_element_cb hdr_upgrade; msg_element_cb hdr_origin; msg_element_cb hdr_sec_websocket_version; msg_element_cb hdr_sec_websocket_key; msg_element_cb hdr_sec_websocket_protocol_value; } struct_request; typedef struct ws_http_request_parser { /* Parser stuf. */ int cs; size_t nread; char * error_start; size_t error_len; int error_pos; size_t mark; size_t hdr_field_start; size_t hdr_field_len; size_t hdr_value_start; size_t hdr_value_len; size_t query_start; size_t fragment_start; /* Request method. */ enum method method; /* URI scheme type. */ enum uri_scheme uri_scheme; header_cb header; struct_request request; /* OverSIP::WebSocket::Request instance. */ void * data; } ws_http_request_parser; int ws_http_request_parser_init(ws_http_request_parser *parser); int ws_http_request_parser_finish(ws_http_request_parser *parser); size_t ws_http_request_parser_execute(ws_http_request_parser *parser, const char *buffer, size_t len, size_t off); int ws_http_request_parser_has_error(ws_http_request_parser *parser); int ws_http_request_parser_is_finished(ws_http_request_parser *parser); #define ws_http_request_parser_nread(parser) (parser)->nread #endif ================================================ FILE: ext/websocket_http_parser/ws_http_parser.rl ================================================ #include "ws_http_parser.h" #include "ext_help.h" #include #include #include #include #include #define MARK(M, FPC) (parser->M = (FPC) - buffer) #define LEN(AT, FPC) (FPC - buffer - parser->AT) #define PTR_TO(F) (buffer + parser->F) /** machine **/ %%{ machine ws_http_request_parser; action mark { MARK(mark, fpc); } action start_hdr_field { MARK(hdr_field_start, fpc); } action write_hdr_field { parser->hdr_field_len = LEN(hdr_field_start, fpc); } action start_hdr_value { MARK(hdr_value_start, fpc); } action store_hdr_value { parser->hdr_value_len = LEN(hdr_value_start, fpc); } action write_hdr_value { if (parser->hdr_value_start) { parser->header(parser->data, PTR_TO(hdr_field_start), parser->hdr_field_len, PTR_TO(hdr_value_start), parser->hdr_value_len); } } action method_GET { parser->method = method_GET; } action method_POST { parser->method = method_POST; } action method_OPTIONS { parser->method = method_OPTIONS; } action method_unknown { if (!parser->method) { parser->method = method_unknown; } } action req_method { parser->request.method(parser->data, PTR_TO(mark), LEN(mark, fpc), parser->method); } action request_uri { parser->request.request_uri(parser->data, PTR_TO(mark), LEN(mark, fpc)); } action request_path { parser->request.request_path(parser->data, PTR_TO(mark), LEN(mark, fpc)); } action start_query { MARK(query_start, fpc); } action query { parser->request.query(parser->data, PTR_TO(query_start), LEN(query_start, fpc)); } action start_fragment { MARK(fragment_start, fpc); } action fragment { parser->request.fragment(parser->data, PTR_TO(fragment_start), LEN(fragment_start, fpc)); } action uri_is_http { parser->uri_scheme = uri_scheme_http; } action uri_is_https { parser->uri_scheme = uri_scheme_https; } action uri_is_unknown { parser->uri_scheme = uri_scheme_unknown; } action uri_scheme { parser->request.uri_scheme(parser->data, PTR_TO(mark), LEN(mark, fpc), parser->uri_scheme); } action http_version { parser->request.http_version(parser->data, PTR_TO(mark), LEN(mark, fpc)); } action host { parser->request.host(parser->data, PTR_TO(mark), LEN(mark, fpc)); } action port { parser->request.port(parser->data, PTR_TO(mark), LEN(mark, fpc)); } action content_length { parser->request.content_length(parser->data, PTR_TO(mark), LEN(mark, fpc)); } action hdr_connection_value { parser->request.hdr_connection_value(parser->data, PTR_TO(mark), LEN(mark, fpc)); } action hdr_upgrade { parser->request.hdr_upgrade(parser->data, PTR_TO(mark), LEN(mark, fpc)); } action hdr_origin { parser->request.hdr_origin(parser->data, PTR_TO(mark), LEN(mark, fpc)); } action hdr_sec_websocket_version { parser->request.hdr_sec_websocket_version(parser->data, PTR_TO(mark), LEN(mark, fpc)); } action hdr_sec_websocket_key { parser->request.hdr_sec_websocket_key(parser->data, PTR_TO(mark), LEN(mark, fpc)); } action hdr_sec_websocket_protocol_value { parser->request.hdr_sec_websocket_protocol_value(parser->data, PTR_TO(mark), LEN(mark, fpc)); } action done { fbreak; } include grammar_ws_http_request "grammar_ws_http_request.rl"; }%% /** Data **/ %% write data; int ws_http_request_parser_init(ws_http_request_parser *parser) { int cs = 0; %% write init; parser->cs = cs; parser->nread = 0; parser->error_start = NULL; parser->error_len = 0; parser->error_pos = 0; parser->mark = 0; parser->hdr_field_start = 0; parser->hdr_field_len = 0; parser->hdr_value_start = 0; parser->hdr_value_len = 0; parser->query_start = 0; parser->fragment_start = 0; parser->method = 0; parser->uri_scheme = 0; parser->data = NULL; return(1); } /** exec **/ size_t ws_http_request_parser_execute(ws_http_request_parser *parser, const char *buffer, size_t len, size_t off) { const char *p, *pe; int cs = parser->cs; assert(off <= len && "offset past end of buffer"); p = buffer+off; pe = buffer+len; assert(*pe == '\0' && "pointer does not end on NULL"); assert(pe - p == len - off && "pointers aren't same distance"); %% write exec; parser->cs = cs; parser->nread += p - (buffer + off); assert(p <= pe && "buffer overflow after parsing execute"); assert(parser->nread <= len && "nread longer than length"); assert(parser->mark < len && "mark is after buffer end"); assert(parser->hdr_field_start < len && "field starts after buffer end"); assert(parser->hdr_field_len <= len && "field has length longer than whole buffer"); assert(parser->hdr_value_start < len && "value starts after buffer end"); assert(parser->hdr_value_len <= len && "value has length longer than whole buffer"); if (ws_http_request_parser_has_error(parser)) { parser->error_start = (char *)buffer; parser->error_len = pe - buffer; parser->error_pos = p - buffer; /* DOC: * buffer is the start of the parsed data. * p is last position of the parsing. * pe is first position after data ends. */ } return(parser->nread); } int ws_http_request_parser_finish(ws_http_request_parser *parser) { int cs = parser->cs; parser->cs = cs; if (ws_http_request_parser_has_error(parser)) return -1; else if (ws_http_request_parser_is_finished(parser)) return 1; else return 0; } int ws_http_request_parser_has_error(ws_http_request_parser *parser) { return parser->cs == ws_http_request_parser_error; } int ws_http_request_parser_is_finished(ws_http_request_parser *parser) { return parser->cs == ws_http_request_parser_first_final; } ================================================ FILE: ext/websocket_http_parser/ws_http_parser_ruby.c ================================================ #include #include "ext_help.h" #include "ws_http_parser.h" #include "../utils/utils_ruby.h" #include "../common/c_util.h" #include "../common/ruby_c_util.h" static VALUE headerize(const char*, size_t); static VALUE mOverSIP; static VALUE eOverSIPError; static VALUE mWebSocket; static VALUE cHttpRequestParser; static VALUE eHttpRequestParserError; static ID id_http_method; static ID id_is_unknown_method; static ID id_http_version; static ID id_uri_scheme; static ID id_uri; static ID id_uri_path; static ID id_uri_query; static ID id_uri_fragment; static ID id_host; static ID id_port; static ID id_content_length; static ID id_hdr_connection; static ID id_hdr_upgrade; static ID id_hdr_sec_websocket_version; static ID id_hdr_sec_websocket_key; static ID id_hdr_sec_websocket_protocol; static ID id_hdr_origin; static VALUE symbol_GET; static VALUE symbol_POST; static VALUE symbol_OPTIONS; static VALUE symbol_http; static VALUE symbol_https; static void header(void *data, const char *hdr_field, size_t hdr_field_len, const char *hdr_value, size_t hdr_value_len) { TRACE(); char *ch, *end; VALUE parsed = (VALUE)data; VALUE v, f, el; /* Header name. */ f = headerize(hdr_field, hdr_field_len); /* Header value. */ v = RB_STR_UTF8_NEW(hdr_value, hdr_value_len); /* Here we have the header name capitalized in variable f. */ el = rb_hash_lookup(parsed, f); switch(TYPE(el)) { case T_ARRAY: rb_ary_push(el, v); break; default: rb_hash_aset(parsed, f, rb_ary_new3(1, v)); break; } } static void req_method(void *data, const char *at, size_t length, enum method method) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; switch(method) { /* If the method is known store it as a symbol (i.e. :GET). */ case method_GET: rb_ivar_set(parsed, id_http_method, symbol_GET); break; case method_POST: rb_ivar_set(parsed, id_http_method, symbol_POST); break; case method_OPTIONS: rb_ivar_set(parsed, id_http_method, symbol_OPTIONS); break; /* If the method is unknown store it as a string (i.e. "CHICKEN") and set the attribute @is_unknown_method to true. */ case method_unknown: v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_http_method, v); rb_ivar_set(parsed, id_is_unknown_method, Qtrue); break; } } static void req_uri_scheme(void *data, const char *at, size_t length, enum uri_scheme scheme) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; switch(scheme) { case uri_scheme_http: v = symbol_http; break; case uri_scheme_https: v = symbol_https; break; case uri_scheme_unknown: v = my_rb_str_downcase(at, length); break; } rb_ivar_set(parsed, id_uri_scheme, v); } static void req_request_uri(void *data, const char *at, size_t length) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_uri, v); } static void req_request_path(void *data, const char *at, size_t length) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_uri_path, v); } static void req_query(void *data, const char *at, size_t length) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_uri_query, v); } static void req_fragment(void *data, const char *at, size_t length) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_uri_fragment, v); } static void req_http_version(void *data, const char *at, size_t length) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; v = RB_STR_UTF8_NEW(at, length); rb_ivar_set(parsed, id_http_version, v); } static void req_host(void *data, const char *at, size_t length) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; /* If it's a domain and ends with ".", remove it. */ if (at[length-1] == '.') length--; v = my_rb_str_downcase(at, length); rb_ivar_set(parsed, id_host, v); } static void req_port(void *data, const char *at, size_t length) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; v = INT2FIX(str_to_int(at, length)); rb_ivar_set(parsed, id_port, v); } static void req_content_length(void *data, const char *at, size_t length) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; v = LONG2FIX(strtol(at,NULL,0)); rb_ivar_set(parsed, id_content_length, v); } static void req_hdr_connection_value(void *data, const char *at, size_t length) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; VALUE array; v = my_rb_str_downcase(at, length); array = rb_ivar_get(parsed, id_hdr_connection); switch(TYPE(array)) { case T_ARRAY: rb_ary_push(array, v); break; default: rb_ivar_set(parsed, id_hdr_connection, rb_ary_new3(1, v)); break; } } static void req_hdr_upgrade(void *data, const char *at, size_t length) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; v = my_rb_str_downcase(at, length); rb_ivar_set(parsed, id_hdr_upgrade, v); } static void req_hdr_sec_websocket_version(void *data, const char *at, size_t length) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; v = INT2FIX(str_to_int(at, length)); rb_ivar_set(parsed, id_hdr_sec_websocket_version, v); } static void req_hdr_sec_websocket_key(void *data, const char *at, size_t length) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; v = rb_str_new(at, length); rb_ivar_set(parsed, id_hdr_sec_websocket_key, v); } static void req_hdr_sec_websocket_protocol_value(void *data, const char *at, size_t length) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; VALUE array; v = rb_str_new(at, length); array = rb_ivar_get(parsed, id_hdr_sec_websocket_protocol); switch(TYPE(array)) { case T_ARRAY: rb_ary_push(array, v); break; default: rb_ivar_set(parsed, id_hdr_sec_websocket_protocol, rb_ary_new3(1, v)); break; } } static void req_hdr_origin(void *data, const char *at, size_t length) { TRACE(); VALUE parsed = (VALUE)data; VALUE v; v = my_rb_str_downcase(at, length); rb_ivar_set(parsed, id_hdr_origin, v); } /*************** Custom C funcions (helpers) ****************/ /* * Normalizes it (by capitalizing the first letter and each letter * under a "-" or "_" symbol). */ static VALUE headerize(const char* hname, size_t hname_len) { TRACE(); VALUE headerized; char* str; int i; headerized = rb_str_new(hname, hname_len); str = RSTRING_PTR(headerized); if (*str >= 'a' && *str <= 'z') *str &= ~0x20; for(i = 1; i < hname_len; i++) { if (str[i-1] == '-' || str[i-1] == '_') { if (str[i] >= 'a' && str[i] <= 'z') str[i] &= ~0x20; } else { if (str[i] >= 'A' && str[i] <= 'Z') str[i] += 32; } } return(headerized); } /*************** Ruby functions ****************/ static void HttpRequestParser_free(void *parser) { TRACE(); if(parser) { /* NOTE: Use always xfree() rather than free(): * http://www.mail-archive.com/libxml-devel@rubyforge.org/msg00242.html */ xfree(parser); } } VALUE HttpRequestParser_alloc(VALUE klass) { TRACE(); VALUE obj; /* NOTE: Use always ALLOC/ALLOC_N rather than malloc(). * ALLOC uses xmalloc: * ALLOC(type) (type*)xmalloc(sizeof(type)) * ALLOC_N(type, n) (type*)xmalloc(sizeof(type)*(n)) */ ws_http_request_parser *parser = ALLOC(ws_http_request_parser); parser->header = header; parser->request.method = req_method; parser->request.uri_scheme = req_uri_scheme; parser->request.request_uri = req_request_uri; parser->request.request_path = req_request_path; parser->request.query = req_query; parser->request.fragment = req_fragment; parser->request.http_version = req_http_version; parser->request.host = req_host; parser->request.port = req_port; parser->request.content_length = req_content_length; parser->request.hdr_connection_value = req_hdr_connection_value; parser->request.hdr_upgrade = req_hdr_upgrade; parser->request.hdr_sec_websocket_version = req_hdr_sec_websocket_version; parser->request.hdr_sec_websocket_key = req_hdr_sec_websocket_key; parser->request.hdr_sec_websocket_protocol_value = req_hdr_sec_websocket_protocol_value; parser->request.hdr_origin = req_hdr_origin; ws_http_request_parser_init(parser); obj = Data_Wrap_Struct(klass, NULL, HttpRequestParser_free, parser); return obj; } /** * call-seq: * parser.new -> parser * * Creates a new parser. */ VALUE HttpRequestParser_init(VALUE self) { TRACE(); ws_http_request_parser *parser = NULL; DATA_GET(self, ws_http_request_parser, parser); ws_http_request_parser_init(parser); return self; } /** * call-seq: * parser.reset -> nil * * Resets the parser to it's initial state so that you can reuse it * rather than making new ones. */ VALUE HttpRequestParser_reset(VALUE self) { TRACE(); ws_http_request_parser *parser = NULL; DATA_GET(self, ws_http_request_parser, parser); ws_http_request_parser_init(parser); return Qnil; } /** * call-seq: * parser.finish -> true/false * * Finishes a parser early which could put in a "good" or bad state. * You should call reset after finish it or bad things will happen. */ VALUE HttpRequestParser_finish(VALUE self) { TRACE(); ws_http_request_parser *parser = NULL; DATA_GET(self, ws_http_request_parser, parser); ws_http_request_parser_finish(parser); return ws_http_request_parser_is_finished(parser) ? Qtrue : Qfalse; } VALUE HttpRequestParser_execute(VALUE self, VALUE req_hash, VALUE buffer, VALUE start) { TRACE(); ws_http_request_parser *parser = NULL; int from = 0; char *dptr = NULL; long dlen = 0; REQUIRE_TYPE(req_hash, T_HASH); REQUIRE_TYPE(buffer, T_STRING); REQUIRE_TYPE(start, T_FIXNUM); DATA_GET(self, ws_http_request_parser, parser); from = FIX2INT(start); dptr = RSTRING_PTR(buffer); dlen = RSTRING_LEN(buffer); /* This should never occur or there is an error in the parser. */ if(from >= dlen) rb_raise(eHttpRequestParserError, "requested start is after buffer end."); parser->data = (void *)req_hash; ws_http_request_parser_execute(parser, dptr, dlen, from); if(ws_http_request_parser_has_error(parser)) return Qfalse; else return INT2FIX(ws_http_request_parser_nread(parser)); } /** * call-seq: * parser.error? -> true/false * * Tells you whether the parser is in an error state. */ VALUE HttpRequestParser_has_error(VALUE self) { TRACE(); ws_http_request_parser *parser = NULL; DATA_GET(self, ws_http_request_parser, parser); return ws_http_request_parser_has_error(parser) ? Qtrue : Qfalse; } /** * call-seq: * parser.error -> String * * Returns a String showing the error by enclosing the exact wrong char between {{{ }}}. */ VALUE HttpRequestParser_error(VALUE self) { TRACE(); ws_http_request_parser *parser = NULL; DATA_GET(self, ws_http_request_parser, parser); if(ws_http_request_parser_has_error(parser)) { char *parsing_error_str; int parsing_error_str_len; int i; int j; VALUE rb_error_str; /* Duplicate error string length so '\r' and '\n' are displayed as CR and LF. Let 6 chars more for allocating {{{ and }}}. */ parsing_error_str = ALLOC_N(char, 2*parser->error_len + 6); parsing_error_str_len=0; for(i=0, j=0; i < parser->error_len; i++) { if (i != parser->error_pos) { if (parser->error_start[i] == '\r') { parsing_error_str[j++] = '\\'; parsing_error_str[j++] = 'r'; parsing_error_str_len += 2; } else if (parser->error_start[i] == '\n') { parsing_error_str[j++] = '\\'; parsing_error_str[j++] = 'n'; parsing_error_str_len += 2; } else { parsing_error_str[j++] = parser->error_start[i]; parsing_error_str_len++; } } else { parsing_error_str[j++] = '{'; parsing_error_str[j++] = '{'; parsing_error_str[j++] = '{'; if (parser->error_start[i] == '\r') { parsing_error_str[j++] = '\\'; parsing_error_str[j++] = 'r'; parsing_error_str_len += 2; } else if (parser->error_start[i] == '\n') { parsing_error_str[j++] = '\\'; parsing_error_str[j++] = 'n'; parsing_error_str_len += 2; } else { parsing_error_str[j++] = parser->error_start[i]; parsing_error_str_len++; } parsing_error_str[j++] = '}'; parsing_error_str[j++] = '}'; parsing_error_str[j++] = '}'; parsing_error_str_len += 6; } } rb_error_str = rb_str_new(parsing_error_str, parsing_error_str_len); xfree(parsing_error_str); return rb_error_str; } else return Qnil; } /** * call-seq: * parser.finished? -> true/false * * Tells you whether the parser is finished or not and in a good state. */ VALUE HttpRequestParser_is_finished(VALUE self) { TRACE(); ws_http_request_parser *parser = NULL; DATA_GET(self, ws_http_request_parser, parser); return ws_http_request_parser_is_finished(parser) ? Qtrue : Qfalse; } /** * call-seq: * parser.nread -> Integer * * Returns the amount of data processed so far during this processing cycle. It is * set to 0 on initialize or reset calls and is incremented each time execute is called. */ VALUE HttpRequestParser_nread(VALUE self) { TRACE(); ws_http_request_parser *parser = NULL; DATA_GET(self, ws_http_request_parser, parser); return INT2FIX(parser->nread); } void Init_ws_http_parser() { mOverSIP = rb_define_module("OverSIP"); eOverSIPError = rb_define_class_under(mOverSIP, "Error", rb_eStandardError); mWebSocket = rb_define_module_under(mOverSIP, "WebSocket"); cHttpRequestParser = rb_define_class_under(mWebSocket, "HttpRequestParser", rb_cObject); eHttpRequestParserError = rb_define_class_under(mWebSocket, "HttpRequestParserError", eOverSIPError); rb_define_alloc_func(cHttpRequestParser, HttpRequestParser_alloc); rb_define_method(cHttpRequestParser, "initialize", HttpRequestParser_init,0); rb_define_method(cHttpRequestParser, "reset", HttpRequestParser_reset,0); rb_define_method(cHttpRequestParser, "finish", HttpRequestParser_finish,0); rb_define_method(cHttpRequestParser, "execute", HttpRequestParser_execute,3); rb_define_method(cHttpRequestParser, "error?", HttpRequestParser_has_error,0); rb_define_method(cHttpRequestParser, "error", HttpRequestParser_error,0); rb_define_method(cHttpRequestParser, "finished?", HttpRequestParser_is_finished,0); rb_define_method(cHttpRequestParser, "nread", HttpRequestParser_nread,0); id_http_method = rb_intern("@http_method"); id_is_unknown_method = rb_intern("is_unknown_method"); id_http_version = rb_intern("@http_version"); id_uri_scheme = rb_intern("@uri_scheme"); id_uri = rb_intern("@uri"); id_uri_path = rb_intern("@uri_path"); id_uri_query = rb_intern("@uri_query"); id_uri_fragment = rb_intern("@uri_fragment"); id_host = rb_intern("@host"); id_port = rb_intern("@port"); id_content_length = rb_intern("@content_length"); id_hdr_connection = rb_intern("@hdr_connection"); id_hdr_upgrade = rb_intern("@hdr_upgrade"); id_hdr_sec_websocket_version = rb_intern("@hdr_sec_websocket_version"); id_hdr_sec_websocket_key = rb_intern("@hdr_sec_websocket_key"); id_hdr_sec_websocket_protocol = rb_intern("@hdr_sec_websocket_protocol"); id_hdr_origin = rb_intern("@hdr_origin"); symbol_GET = ID2SYM(rb_intern("GET")); symbol_POST = ID2SYM(rb_intern("POST")); symbol_OPTIONS = ID2SYM(rb_intern("OPTIONS")); symbol_http = ID2SYM(rb_intern("http")); symbol_https = ID2SYM(rb_intern("https")); } ================================================ FILE: lib/oversip/config.rb ================================================ module OverSIP module Config # Pre-declaration of Validators module (defined in other file). module Config::Validators ; end extend ::OverSIP::Logger extend ::OverSIP::Config::Validators DEFAULT_CONFIG_DIR = "/etc/oversip" DEFAULT_TLS_DIR = "tls" DEFAULT_TLS_CA_DIR = "tls/ca" DEFAULT_CONFIG_FILE = "oversip.conf" PROXIES_FILE = "proxies.conf" SERVER_FILE = "server.rb" def self.log_id @log_id ||= "Config" end @configuration = { :core => { :nameservers => nil, :syslog_facility => "user", :syslog_level => "info" }, :sip => { :sip_udp => true, :sip_tcp => true, :sip_tls => false, :enable_ipv4 => true, :listen_ipv4 => nil, :advertised_ipv4 => nil, :enable_ipv6 => true, :listen_ipv6 => nil, :advertised_ipv6 => nil, :listen_port => 5060, :listen_port_tls => 5061, :use_tls_tunnel => false, :listen_port_tls_tunnel => 5062, :callback_on_client_tls_handshake => true, :local_domains => nil, :tcp_keepalive_interval => nil, :record_route_hostname_tls_ipv4 => nil, :record_route_hostname_tls_ipv6 => nil }, :websocket => { :sip_ws => false, :sip_wss => false, :enable_ipv4 => true, :listen_ipv4 => nil, :advertised_ipv4 => nil, :enable_ipv6 => true, :listen_ipv6 => nil, :advertised_ipv6 => nil, :listen_port => 10080, :listen_port_tls => 10443, :use_tls_tunnel => false, :listen_port_tls_tunnel => 10444, :callback_on_client_tls_handshake => true, :max_ws_message_size => 65536, :max_ws_frame_size => 65536, :ws_keepalive_interval => nil }, :tls => { :public_cert => nil, :private_cert => nil, :ca_dir => nil } } CONFIG_VALIDATIONS = { :core => { :nameservers => [ :ipv4, :multi_value ], :syslog_facility => [ [ :choices, %w{ kern user daemon local0 local1 local2 local3 local4 local5 local6 local7 } ] ], :syslog_level => [ [ :choices, %w{ debug info notice warn error crit } ] ], }, :sip => { :sip_udp => :boolean, :sip_tcp => :boolean, :sip_tls => :boolean, :enable_ipv4 => :boolean, :listen_ipv4 => :ipv4, :advertised_ipv4 => :ipv4, :enable_ipv6 => :boolean, :listen_ipv6 => :ipv6, :advertised_ipv6 => :ipv6, :listen_port => :port, :listen_port_tls => :port, :use_tls_tunnel => :boolean, :listen_port_tls_tunnel => :port, :callback_on_client_tls_handshake => :boolean, :local_domains => [ :domain, :multi_value ], :tcp_keepalive_interval => [ :fixnum, [ :greater_equal_than, 180 ] ], :record_route_hostname_tls_ipv4 => :domain, :record_route_hostname_tls_ipv6 => :domain, }, :websocket => { :sip_ws => :boolean, :sip_wss => :boolean, :enable_ipv4 => :boolean, :listen_ipv4 => :ipv4, :advertised_ipv4 => :ipv4, :enable_ipv6 => :boolean, :listen_ipv6 => :ipv6, :advertised_ipv6 => :ipv6, :listen_port => :port, :listen_port_tls => :port, :use_tls_tunnel => :boolean, :listen_port_tls_tunnel => :port, :callback_on_client_tls_handshake => :boolean, :max_ws_message_size => [ :fixnum, [ :minor_than, 1048576 ] ], :max_ws_frame_size => [ :fixnum, [ :minor_than, 1048576 ] ], :ws_keepalive_interval => [ :fixnum, [ :greater_equal_than, 180 ] ] }, :tls => { :public_cert => [ :readable_file, :tls_pem_chain ], :private_cert => [ :readable_file, :tls_pem_private ], :ca_dir => :readable_dir } } def self.load config_dir=nil, config_file=nil @config_dir = (::File.expand_path(config_dir) if config_dir) || DEFAULT_CONFIG_DIR @config_file = ::File.join(@config_dir, config_file || DEFAULT_CONFIG_FILE) @proxies_file = ::File.join(@config_dir, PROXIES_FILE) @server_file = ::File.join(@config_dir, SERVER_FILE) # Load the oversip.conf YAML file. begin conf_yaml = ::YAML.load_file @config_file rescue ::Exception => e log_system_crit "error loading Main Configuration file '#{@config_file}':" ::OverSIP::Launcher.fatal e end # Load the proxies.conf YAML file. begin proxies_yaml = ::YAML.load_file @proxies_file rescue ::Exception => e log_system_crit "error loading Proxies Configuration file '#{@proxies_file}':" ::OverSIP::Launcher.fatal e end # Load the server.rb file. begin require @server_file rescue ::Exception => e log_system_crit "error loading Server file '#{@server_file}':" ::OverSIP::Launcher.fatal e end # Process the oversip.conf file. begin pre_check(conf_yaml) CONFIG_VALIDATIONS.each_key do |section| CONFIG_VALIDATIONS[section].each do |parameter, validations| values = conf_yaml[section.to_s][parameter.to_s] rescue nil validations = [ validations ] unless validations.is_a?(Array) if values == nil if validations.include? :required ::OverSIP::Launcher.fatal "#{section}[#{parameter}] requires a value" end next end if values.is_a? ::Array unless validations.include? :multi_value ::OverSIP::Launcher.fatal "#{section}[#{parameter}] does not allow multiple values" end if validations.include? :non_empty and values.empty? ::OverSIP::Launcher.fatal "#{section}[#{parameter}] does not allow empty values" end end values = ( values.is_a?(::Array) ? values : [ values ] ) values.each do |value| validations.each do |validation| if validation.is_a? ::Symbol args = [] elsif validation.is_a? ::Array args = validation[1..-1] validation = validation[0] end next if [:required, :multi_value, :non_empty].include? validation unless send validation, value, *args ::OverSIP::Launcher.fatal "#{section}[#{parameter}] has invalid value '#{humanize_value value}' (does not satisfy '#{validation}' validation requirement)" end end @configuration[section][parameter] = ( validations.include?(:multi_value) ? values : values[0] ) end end # CONFIG_VALIDATIONS[section].each end # CONFIG_VALIDATIONS.each_key post_process post_check rescue ::OverSIP::ConfigurationError => e ::OverSIP::Launcher.fatal "configuration error: #{e.message}" rescue => e ::OverSIP::Launcher.fatal e end ::OverSIP.configuration = @configuration # Process the proxies.conf file. begin ::OverSIP::ProxiesConfig.load proxies_yaml rescue ::OverSIP::ConfigurationError => e ::OverSIP::Launcher.fatal "error loading Proxies Configuration file '#{@proxies_file}': #{e.message}" rescue ::Exception => e log_system_crit "error loading Proxies Configuration file '#{@proxies_file}':" ::OverSIP::Launcher.fatal e end end def self.pre_check conf_yaml # If TLS files/directories are given as relative path, convert them into absolute paths. tls_public_cert = conf_yaml["tls"]["public_cert"] rescue nil tls_private_cert = conf_yaml["tls"]["private_cert"] rescue nil tls_ca_dir = conf_yaml["tls"]["ca_dir"] rescue nil if tls_public_cert.is_a?(::String) and tls_public_cert[0] != "/" conf_yaml["tls"]["public_cert"] = ::File.join(@config_dir, DEFAULT_TLS_DIR, tls_public_cert) end if tls_private_cert.is_a?(::String) and tls_private_cert[0] != "/" conf_yaml["tls"]["private_cert"] = ::File.join(@config_dir, DEFAULT_TLS_DIR, tls_private_cert) end if tls_ca_dir.is_a?(::String) and tls_ca_dir[0] != "/" conf_yaml["tls"]["ca_dir"] = ::File.join(@config_dir, DEFAULT_TLS_DIR, tls_ca_dir) end end def self.post_process if @configuration[:tls][:public_cert] and @configuration[:tls][:private_cert] @use_tls = true # Generate a full PEM file containing both the public and private certificate (for Stud). full_cert = ::Tempfile.new("oversip_full_cert_") full_cert.puts ::File.read(@configuration[:tls][:public_cert]) full_cert.puts ::File.read(@configuration[:tls][:private_cert]) @configuration[:tls][:full_cert] = full_cert.path full_cert.close else @configuration[:sip][:sip_tls] = false @configuration[:websocket][:sip_wss] = false end if @configuration[:sip][:sip_udp] or @configuration[:sip][:sip_tcp] @use_sip_udp_or_tcp = true else @configuration[:sip][:listen_port] = nil end if @configuration[:sip][:sip_tls] and @use_tls @use_sip_tls = true else @configuration[:sip][:listen_port_tls] = nil end unless @use_sip_udp_or_tcp or @use_sip_tls @configuration[:sip][:listen_ipv4] = nil @configuration[:sip][:listen_ipv6] = nil @configuration[:sip][:enable_ipv4] = nil @configuration[:sip][:enable_ipv6] = nil end unless @configuration[:sip][:enable_ipv4] @configuration[:sip][:listen_ipv4] = nil @configuration[:sip][:advertised_ipv4] = nil @configuration[:sip][:record_route_hostname_tls_ipv4] = nil end unless @configuration[:sip][:enable_ipv6] @configuration[:sip][:listen_ipv6] = nil @configuration[:sip][:advertised_ipv6] = nil @configuration[:sip][:record_route_hostname_tls_ipv6] = nil end if @configuration[:websocket][:sip_ws] @use_sip_ws = true else @configuration[:websocket][:listen_port] = nil end if @configuration[:websocket][:sip_wss] and @use_tls @use_sip_wss = true else @configuration[:websocket][:listen_port_tls] = nil end unless @use_sip_ws or @use_sip_wss @configuration[:websocket][:listen_ipv4] = nil @configuration[:websocket][:listen_ipv6] = nil @configuration[:websocket][:enable_ipv4] = nil @configuration[:websocket][:enable_ipv6] = nil end unless @configuration[:websocket][:enable_ipv4] @configuration[:websocket][:listen_ipv4] = nil @configuration[:websocket][:advertised_ipv4] = nil end unless @configuration[:websocket][:enable_ipv6] @configuration[:websocket][:listen_ipv6] = nil @configuration[:websocket][:advertised_ipv6] = nil end if ( @use_sip_udp_or_tcp or @use_sip_tls ) and @configuration[:sip][:listen_ipv4] == nil and @configuration[:sip][:enable_ipv4] unless (@configuration[:sip][:listen_ipv4] = discover_local_ip(:ipv4)) # log_system_notice "disabling IPv4 for SIP" @configuration[:sip][:listen_ipv4] = nil @configuration[:sip][:enable_ipv4] = false end end if ( @use_sip_udp_or_tcp or @use_sip_tls ) and @configuration[:sip][:listen_ipv6] == nil and @configuration[:sip][:enable_ipv6] unless (@configuration[:sip][:listen_ipv6] = discover_local_ip(:ipv6)) # log_system_notice "disabling IPv6 for SIP" @configuration[:sip][:listen_ipv6] = nil @configuration[:sip][:enable_ipv6] = false end end if ( @use_sip_ws or @use_sip_wss ) and @configuration[:websocket][:listen_ipv4] == nil and @configuration[:websocket][:enable_ipv4] unless (@configuration[:websocket][:listen_ipv4] = discover_local_ip(:ipv4)) # log_system_notice "disabling IPv4 for WebSocket" @configuration[:websocket][:listen_ipv4] = nil @configuration[:websocket][:enable_ipv4] = false end end if ( @use_sip_ws or @use_sip_wss ) and @configuration[:websocket][:listen_ipv6] == nil and @configuration[:websocket][:enable_ipv6] unless (@configuration[:websocket][:listen_ipv6] = discover_local_ip(:ipv6)) # log_system_notice "disabling IPv6 for WebSocket" @configuration[:websocket][:listen_ipv6] = nil @configuration[:websocket][:enable_ipv6] = false end end if @configuration[:sip][:local_domains] if @configuration[:sip][:local_domains].is_a? ::String @configuration[:sip][:local_domains] = [ @configuration[:sip][:local_domains].downcase ] end @configuration[:sip][:local_domains].each {|local_domain| local_domain.downcase!} end end # def self.post_process def self.post_check binds = { :udp => [], :tcp => [] } if @configuration[:sip][:enable_ipv4] ipv4 = @configuration[:sip][:listen_ipv4] if @configuration[:sip][:sip_udp] binds[:udp] << [ ipv4, @configuration[:sip][:listen_port] ] end if @configuration[:sip][:sip_tcp] binds[:tcp] << [ ipv4, @configuration[:sip][:listen_port] ] end if @configuration[:sip][:sip_tls] unless @configuration[:sip][:use_tls_tunnel] binds[:tcp] << [ ipv4, @configuration[:sip][:listen_port_tls] ] else binds[:tcp] << [ "127.0.0.1", @configuration[:sip][:listen_port_tls_tunnel] ] end end end if @configuration[:sip][:enable_ipv6] ipv6 = @configuration[:sip][:listen_ipv6] if @configuration[:sip][:sip_udp] binds[:udp] << [ ipv6, @configuration[:sip][:listen_port] ] end if @configuration[:sip][:sip_tcp] binds[:tcp] << [ ipv6, @configuration[:sip][:listen_port] ] end if @configuration[:sip][:sip_tls] unless @configuration[:sip][:use_tls_tunnel] binds[:tcp] << [ ipv6, @configuration[:sip][:listen_port_tls] ] else binds[:tcp] << [ "::1", @configuration[:sip][:listen_port_tls_tunnel] ] end end end if @configuration[:websocket][:enable_ipv4] ipv4 = @configuration[:websocket][:listen_ipv4] if @configuration[:websocket][:sip_ws] binds[:tcp] << [ ipv4, @configuration[:websocket][:listen_port] ] end if @configuration[:websocket][:sip_wss] unless @configuration[:sip][:use_tls_tunnel] binds[:tcp] << [ ipv4, @configuration[:websocket][:listen_port_tls] ] else binds[:tcp] << [ "127.0.0.1", @configuration[:websocket][:listen_port_tls_tunnel] ] end end end if @configuration[:websocket][:enable_ipv6] ipv6 = @configuration[:websocket][:listen_ipv6] if @configuration[:websocket][:sip_ws] binds[:tcp] << [ ipv6, @configuration[:websocket][:listen_port] ] end if @configuration[:websocket][:sip_wss] unless @configuration[:sip][:use_tls_tunnel] binds[:tcp] << [ ipv6, @configuration[:websocket][:listen_port_tls] ] else binds[:tcp] << [ "::1", @configuration[:websocket][:listen_port_tls_tunnel] ] end end end unless @configuration[:sip][:use_tls_tunnel] @configuration[:sip][:listen_port_tls_tunnel] = nil end unless @configuration[:websocket][:use_tls_tunnel] @configuration[:websocket][:listen_port_tls_tunnel] = nil end [:udp, :tcp].each do |transport| transport_str = transport.to_s.upcase binds[transport].each do |ip, port| begin unless (ip_type = ::OverSIP::Utils.ip_type(ip)) raise ::OverSIP::ConfigurationError, "given IP '#{ip}' is not IPv4 nor IPv6" end case transport when :udp case ip_type when :ipv4 socket = ::UDPSocket.new ::Socket::AF_INET when :ipv6 socket = ::UDPSocket.new ::Socket::AF_INET6 end socket.bind ip, port when :tcp socket = ::TCPServer.open ip, port end socket.close rescue ::Errno::EADDRNOTAVAIL raise ::OverSIP::ConfigurationError, "cannot bind in #{transport_str} IP '#{ip}', address not available" rescue ::Errno::EADDRINUSE raise ::OverSIP::ConfigurationError, "#{transport_str} IP '#{ip}' and port #{port} already in use" rescue ::Errno::EACCES raise ::OverSIP::ConfigurationError, "no permission to bind in #{transport_str} IP '#{ip}' and port #{port}" rescue => e raise e.class, "error binding in #{transport_str} IP '#{ip}' and port #{port} (#{e.class}: #{e.message})" end end end end # def self.post_check def self.print colorize=true color = ::Term::ANSIColor if colorize puts @configuration.each_key do |section| if colorize puts " #{color.bold(section.to_s)}:" else puts " #{section.to_s}:" end @configuration[section].each do |parameter, value| humanized_value = humanize_value value color_value = case value when ::TrueClass colorize ? color.bold(color.green(humanized_value)) : humanized_value when ::FalseClass colorize ? color.bold(color.red(humanized_value)) : humanized_value when ::NilClass humanized_value when ::String, ::Symbol colorize ? color.yellow(humanized_value) : humanized_value when ::Array colorize ? color.yellow(humanized_value) : humanized_value when ::Fixnum, ::Float colorize ? color.bold(color.blue(humanized_value)) : humanized_value else humanized_value end printf(" %-32s: %s\n", parameter, color_value) end puts end end def self.humanize_value value case value when ::TrueClass ; "yes" when ::FalseClass ; "no" when ::NilClass ; "null" when ::String ; value when ::Symbol ; value.to_s when ::Array ; value.join(", ") when ::Fixnum, ::Float ; value.to_s else ; value.to_s end end def self.discover_local_ip(type) begin if type == :ipv4 socket = ::UDPSocket.new ::Socket::AF_INET socket.connect("1.2.3.4", 1) ip = socket.local_address.ip_address socket.close socket = ::UDPSocket.new ::Socket::AF_INET elsif type == :ipv6 socket = ::UDPSocket.new ::Socket::AF_INET6 socket.connect("2001::1", 1) ip = socket.local_address.ip_address socket.close socket = ::UDPSocket.new ::Socket::AF_INET6 end # Test whether the IP is in fact bindeable (not true for link-scope IPv6 addresses). begin socket.bind ip, 0 rescue => e # log_system_debug "cannot bind in autodiscovered local #{type == :ipv4 ? "IPv4" : "IPv6"} '#{ip}': #{e.message} (#{e.class})" return false ensure socket.close end # Valid IP, return it. return ip rescue => e # log_system_debug "cannot autodiscover local #{type == :ipv4 ? "IPv4" : "IPv6"}: #{e.message} (#{e.class})" return false end end def self.system_reload log_system_notice "reloading OverSIP..." # Load and process the proxies.conf file. begin proxies_yaml = ::YAML.load_file @proxies_file ::OverSIP::ProxiesConfig.load proxies_yaml, reload=true log_system_notice "Proxies Configuration file '#{@proxies_file}' reloaded" rescue ::OverSIP::ConfigurationError => e log_system_crit "error reloading Proxies Configuration file '#{@proxies_file}': #{e.message}" rescue ::Exception => e log_system_crit "error reloading Proxies Configuration file '#{@proxies_file}':" log_system_crit e end # Load the server.rb file. begin ::Kernel.load @server_file log_system_notice "Server file '#{@server_file}' reloaded" rescue ::Exception => e log_system_crit "error reloading Server file '#{@server_file}':" log_system_crit e end end end end ================================================ FILE: lib/oversip/config_validators.rb ================================================ require "openssl" module OverSIP module Config module Validators extend ::OverSIP::Logger DOMAIN_REGEXP = /^(([0-9a-zA-Z\-_])+\.)*([0-9a-zA-Z\-_])+$/ TLS_PEM_CHAIN_REGEXP = /-{5}BEGIN CERTIFICATE-{5}\n.*?-{5}END CERTIFICATE-{5}\n/m def boolean value value == true or value == false end def string value value.is_a? ::String end def fixnum value value.is_a? ::Fixnum end def port value fixnum(value) and value.between?(1,65536) end def ipv4 value return false unless value.is_a? ::String ::OverSIP::Utils.ip_type(value) == :ipv4 and value != "0.0.0.0" end def ipv6 value return false unless value.is_a? ::String ::OverSIP::Utils.ip_type(value) == :ipv6 and ::OverSIP::Utils.normalize_ipv6(value) != "::" end def ipv4_any value return false unless value.is_a? ::String ::OverSIP::Utils.ip_type(value) == :ipv4 end def ipv6_any value return false unless value.is_a? ::String ::OverSIP::Utils.ip_type(value) == :ipv6 end def domain value value =~ DOMAIN_REGEXP end def choices value, choices choices.include? value end def greater_than value, minimum value > minimum rescue false end def greater_equal_than value, minimum value >= minimum rescue false end def minor_than value, maximum value < maximum rescue false end def minor_equal_than value, maximum value <= maximum rescue false end def readable_file file ::File.file?(file) and ::File.readable?(file) end def readable_dir dir ::File.directory?(dir) and ::File.readable?(dir) end def tls_pem_chain file chain = ::File.read file pems = chain.scan(TLS_PEM_CHAIN_REGEXP).flatten pem_found = nil begin pems.each do |pem| ::OpenSSL::X509::Certificate.new pem pem_found = true end rescue => e log_system_error "#{e.class}: #{e.message}" return false end if pem_found return true else log_system_error "no valid X509 PEM found in the file" return false end end def tls_pem_private file pem = ::File.read file key_classes = [::OpenSSL::PKey::RSA, ::OpenSSL::PKey::DSA] begin key_class = key_classes.shift key_class.new pem return true rescue => e retry if key_classes.any? log_system_error e.message end return false end end # module Validators end # module Config end ================================================ FILE: lib/oversip/default_server.rb ================================================ module OverSIP module SystemEvents extend ::OverSIP::Logger def self.on_initialize end def self.on_started end def self.on_user_reload end def self.on_terminated error end end module SipEvents extend ::OverSIP::Logger def self.on_request request end def self.on_client_tls_handshake connection, pems end def self.on_server_tls_handshake connection, pems end end module WebSocketEvents extend ::OverSIP::Logger def self.on_connection connection, http_request end def self.on_disconnection connection, client_closed end def self.on_client_tls_handshake connection, pems end end end ================================================ FILE: lib/oversip/errors.rb ================================================ module OverSIP class Error < ::StandardError ; end class ConfigurationError < Error ; end class RuntimeError < Error ; end class ParsingError < RuntimeError ; end end ================================================ FILE: lib/oversip/fiber_pool.rb ================================================ # NOTE: Extracted from https://github.com/schmurfy/fiber_pool. module OverSIP class FiberPool # Prepare a list of fibers that are able to run different blocks of code # every time. Once a fiber is done with its block, it attempts to fetch # another one from the queue. def initialize count = 100 @fibers,@busy_fibers,@queue = [],{},[] count.times do |i| add_fiber() end end def add_fiber fiber = ::Fiber.new do |block| loop do block.call unless @queue.empty? block = @queue.shift else @busy_fibers.delete ::Fiber.current.object_id @fibers.unshift ::Fiber.current block = ::Fiber.yield end end end @fibers << fiber fiber end private :add_fiber # If there is an available fiber use it, otherwise, leave it to linger # in a queue. def spawn &block # resurrect dead fibers @busy_fibers.values.reject(&:alive?).each do |f| @busy_fibers.delete f.object_id add_fiber() end if (fiber = @fibers.shift) @busy_fibers[fiber.object_id] = fiber fiber.resume block else @queue << block end fiber end end # class FiberPool end ================================================ FILE: lib/oversip/launcher.rb ================================================ module OverSIP::Launcher extend ::OverSIP::Logger READY_PIPE_TIMEOUT = 16 @log_id = "launcher" def self.daemonize! options @log_id = "launcher (daemonize)" $stdin.reopen("/dev/null") # grandparent (launcher) : Reads pipe, exits when master is ready. # \_ parent : Exits immediately ASAP. # \_ master : Writes to pipe when ready. rd, wr = IO.pipe grandparent = $$ if fork wr.close # Grandparent does not write in the ready_pipe. else rd.close # Parent (so also future master) does not read from the ready_pipe. ::Process.setsid exit if fork # Parent dies now. end # I'm grandparent (launcher) process. if grandparent == $$ # Master process will inmediatelly write in the ready_pipe its PID so we get # its PID. pid = nil begin ::Timeout.timeout(READY_PIPE_TIMEOUT/2) do pid = rd.gets("\n").to_i rescue nil end rescue ::Timeout::Error fatal "master process didn't notify its PID within #{READY_PIPE_TIMEOUT/2} seconds" end unless pid fatal "master process failed to start" end # This will block until OverSIP::Launcher.run ends succesfully (so master process # writes "ok" in the ready_pipe) or until the pipe is closes without writting into it # (so the master process has died). # It can also occur that master process blocks forever and never writes into the # ready pipe neither closes it. In this case a timeout is raised and master process # is killed. master_ok = nil begin ::Timeout::timeout(READY_PIPE_TIMEOUT/2) do master_ok = (rd.read(2) rescue nil) end rescue ::Timeout::Error log_system_crit "master process is not ready within #{READY_PIPE_TIMEOUT/2} seconds, killing it..." begin ::Process.kill(:TERM, pid) 10.times do |i| sleep 0.05 ::Process.wait(pid, ::Process::WNOHANG) rescue nil ::Process.kill(0, pid) rescue break end ::Process.kill(0, pid) ::Process.kill(:KILL, pid) rescue nil rescue ::Errno::ESRCH end fatal "master process killed" end unless master_ok == "ok" fatal "master process failed to start" end # Grandparent can die now with honor. exit 0 # I'm master process. else options[:ready_pipe] = wr end end def self.run options @log_id = "launcher (run)" configuration = ::OverSIP.configuration # Store the master process PID. ::OverSIP.pid = $$ begin # Inmediatelly write into the ready_pipe so grandparent process reads it # and knowns which PID we have. ready_pipe = options.delete(:ready_pipe) ready_pipe.write($$.to_s + "\n") if ready_pipe # Init modules. ::OverSIP::TLS.module_init ::OverSIP::SIP.module_init ::OverSIP::SIP::RFC3263.module_init ::OverSIP::WebSocket.module_init ::OverSIP::WebSocket::WsFraming.class_init ::OverSIP::WebSocket::WsSipApp.class_init @log_id = "launcher (master)" ::EM.run do ::OverSIP.is_ready = false ::OverSIP.status = :loading ::OverSIP.root_fiber = ::Fiber.current log_system_notice "using Ruby #{RUBY_VERSION}p#{RUBY_PATCHLEVEL} (#{RUBY_RELEASE_DATE} revision #{RUBY_REVISION}) [#{RUBY_PLATFORM}]" log_system_notice "using EventMachine #{::EM::VERSION}" log_system_notice "starting event reactor..." # Run SIP and WebSocket servers. run_servers options # Run DNS resolver. ::OverSIP::SIP::RFC3263.run # Change process permissions if requested. set_user_group(options[:user], options[:group]) # Create PID file. create_pid_file(options[:pid_file]) trap_signals # Ensure the code in the next SystemEvents and SystemCallbacks are run serially. ::Fiber.new do # Run OverSIP::SystemEvents.on_initialize. log_system_debug "calling OverSIP::SystemEvents.on_initialize() method..." begin ::OverSIP::SystemEvents.on_initialize rescue ::Exception => e log_system_crit "error calling OverSIP::SystemEvents.on_initialize():" fatal e end # Run all the OverSIP::SystemCallbacks.on_started_callbacks. log_system_debug "executing OverSIP::SystemCallbacks.on_started_callbacks..." ::OverSIP::SystemCallbacks.on_started_callbacks.each do |cb| begin cb.call rescue ::Exception => e log_system_crit "error executing a callback in OverSIP::SystemCallbacks.on_started_callbacks:" fatal e end end # Run OverSIP::SystemEvents.on_started within a fiber. log_system_debug "calling OverSIP::SystemEvents.on_started() method..." begin ::OverSIP::SystemEvents.on_started rescue ::Exception => e log_system_crit "error calling OverSIP::SystemEvents.on_started():" fatal e end log_system_notice "#{::OverSIP::PROGRAM_NAME} #{::OverSIP::VERSION} running in background" # Write "ok" into the ready_pipe so grandparent process (launcher) # exits with status 0. if ready_pipe ready_pipe.write("ok") ready_pipe.close rescue nil ready_pipe = nil end # Stop writting into standard output/error. $stdout.reopen("/dev/null") $stderr.reopen("/dev/null") ::OverSIP.daemonized = true # So update the logger to stop writting into stdout. ::OverSIP::Logger.load_methods # Set the EventMachine error handler. ::EM.error_handler do |e| log_system_error "error raised during event loop and rescued by EM.error_handler:" log_system_error e end ::OverSIP.is_ready = true ::OverSIP.status = :running end.resume end # ::EM.run rescue => e fatal e end end # def self.run def self.fatal msg log_system_crit msg log_system_crit "exiting with error status" terminate error=true, fatal=true end def self.create_pid_file path # Check that the PID file is accesible. begin assert_file_is_writable_readable_deletable(path) rescue ::OverSIP::Error => e fatal "cannot create PID file: #{e.message}" end # If the PID file exists (it shouldn't) check if it's stale. if wpid = valid_pid?(path) and wpid != $$ fatal "already running on PID #{wpid} (or '#{path}' is stale)" end # Delete the PID file if it exists. ::File.unlink(path) rescue nil # Create the PID file. ::File.open(path, "w", 0644) do |f| f.syswrite("#$$\n") end ::OverSIP.pid_file = path end def self.assert_file_is_writable_readable_deletable path # File already exists. if ::File.exist?(path) if not ::File.file?(path) raise ::OverSIP::Error, "'#{path}' exits and is not a regular file" elsif not ::File.readable?(path) raise ::OverSIP::Error, "'#{path}' is not readable" elsif not ::File.writable?(path) raise ::OverSIP::Error, "'#{path}' is not writable" end end # Check if the parent directory is writeable. if not ::File.writable? ::File.dirname(path) raise ::OverSIP::Error, "directory '#{::File.dirname(path)}' is not writable" end end # Returns a PID if a given path contains a non-stale PID file, # false otherwise. def self.valid_pid? path begin wpid = ::File.read(path).to_i wpid <= 0 and return false # If the process exists return its PID. ::Process.kill(0, wpid) return wpid # If the process exists but we don't have permissions over it, return its PID. rescue ::Errno::EPERM return wpid # If the PID file (path) doesn't exist or the process is not running return false. rescue ::Errno::ENOENT, ::Errno::ESRCH return false end end def self.run_servers options configuration = ::OverSIP.configuration if configuration[:sip][:sip_udp] # SIP UDP IPv4 server. if configuration[:sip][:enable_ipv4] ::OverSIP::SIP::Launcher.run true, :ipv4, configuration[:sip][:listen_ipv4], configuration[:sip][:listen_port], :udp end # SIP IPv6 UDP server. if configuration[:sip][:enable_ipv6] ::OverSIP::SIP::Launcher.run true, :ipv6, configuration[:sip][:listen_ipv6], configuration[:sip][:listen_port], :udp end end if configuration[:sip][:sip_tcp] # SIP IPv4 TCP server. if configuration[:sip][:enable_ipv4] ::OverSIP::SIP::Launcher.run true, :ipv4, configuration[:sip][:listen_ipv4], configuration[:sip][:listen_port], :tcp end # SIP IPv6 TCP server. if configuration[:sip][:enable_ipv6] ::OverSIP::SIP::Launcher.run true, :ipv6, configuration[:sip][:listen_ipv6], configuration[:sip][:listen_port], :tcp end end if configuration[:sip][:sip_tls] unless configuration[:sip][:use_tls_tunnel] # SIP IPv4 TLS server (native). if configuration[:sip][:enable_ipv4] ::OverSIP::SIP::Launcher.run true, :ipv4, configuration[:sip][:listen_ipv4], configuration[:sip][:listen_port_tls], :tls end # SIP IPv6 TLS server (native). if configuration[:sip][:enable_ipv6] ::OverSIP::SIP::Launcher.run true, :ipv6, configuration[:sip][:listen_ipv6], configuration[:sip][:listen_port_tls], :tls end else # SIP IPv4 TLS server (Stud). if configuration[:sip][:enable_ipv4] ::OverSIP::SIP::Launcher.run true, :ipv4, "127.0.0.1", configuration[:sip][:listen_port_tls_tunnel], :tls_tunnel, configuration[:sip][:listen_ipv4], configuration[:sip][:listen_port_tls] ::OverSIP::SIP::Launcher.run false, :ipv4, configuration[:sip][:listen_ipv4], configuration[:sip][:listen_port_tls], :tls # Spawn a Stud process. spawn_stud_process options, configuration[:sip][:listen_ipv4], configuration[:sip][:listen_port_tls], "127.0.0.1", configuration[:sip][:listen_port_tls_tunnel], ssl = false end # SIP IPv6 TLS server (Stud). if configuration[:sip][:enable_ipv6] ::OverSIP::SIP::Launcher.run true, :ipv6, "::1", configuration[:sip][:listen_port_tls_tunnel], :tls_tunnel, configuration[:sip][:listen_ipv6], configuration[:sip][:listen_port_tls] ::OverSIP::SIP::Launcher.run false, :ipv6, configuration[:sip][:listen_ipv6], configuration[:sip][:listen_port_tls], :tls # Spawn a Stud process. spawn_stud_process options, configuration[:sip][:listen_ipv6], configuration[:sip][:listen_port_tls], "::1", configuration[:sip][:listen_port_tls_tunnel], ssl = false end end end if configuration[:websocket][:sip_ws] # WebSocket IPv4 TCP SIP server. if configuration[:websocket][:enable_ipv4] ::OverSIP::WebSocket::Launcher.run true, :ipv4, configuration[:websocket][:listen_ipv4], configuration[:websocket][:listen_port], :ws end # WebSocket IPv6 TCP SIP server. if configuration[:websocket][:enable_ipv6] ::OverSIP::WebSocket::Launcher.run true, :ipv6, configuration[:websocket][:listen_ipv6], configuration[:websocket][:listen_port], :ws end end if configuration[:websocket][:sip_wss] unless configuration[:websocket][:use_tls_tunnel] # WebSocket IPv4 TLS SIP server (native). if configuration[:websocket][:enable_ipv4] ::OverSIP::WebSocket::Launcher.run true, :ipv4, configuration[:websocket][:listen_ipv4], configuration[:websocket][:listen_port_tls], :wss end # WebSocket IPv6 TLS SIP server (native). if configuration[:websocket][:enable_ipv6] ::OverSIP::WebSocket::Launcher.run true, :ipv6, configuration[:websocket][:listen_ipv6], configuration[:websocket][:listen_port_tls], :wss end else # WebSocket IPv4 TLS SIP server (Stud). if configuration[:websocket][:enable_ipv4] ::OverSIP::WebSocket::Launcher.run true, :ipv4, "127.0.0.1", configuration[:websocket][:listen_port_tls_tunnel], :wss_tunnel, configuration[:websocket][:listen_ipv4], configuration[:websocket][:listen_port_tls] ::OverSIP::WebSocket::Launcher.run false, :ipv4, configuration[:websocket][:listen_ipv4], configuration[:websocket][:listen_port_tls], :wss # Spawn a Stud process. spawn_stud_process options, configuration[:websocket][:listen_ipv4], configuration[:websocket][:listen_port_tls], "127.0.0.1", configuration[:websocket][:listen_port_tls_tunnel], ssl = true end # WebSocket IPv6 TLS SIP server (Stud). if configuration[:sip][:enable_ipv6] ::OverSIP::WebSocket::Launcher.run true, :ipv6, "::1", configuration[:websocket][:listen_port_tls_tunnel], :wss_tunnel, configuration[:websocket][:listen_ipv6], configuration[:websocket][:listen_port_tls] ::OverSIP::WebSocket::Launcher.run false, :ipv6, configuration[:websocket][:listen_ipv6], configuration[:websocket][:listen_port_tls], :wss # Spawn a Stud process. spawn_stud_process options, configuration[:websocket][:listen_ipv6], configuration[:websocket][:listen_port_tls], "::1", configuration[:websocket][:listen_port_tls_tunnel], ssl = true end end end end def self.trap_signals # This should never occur (unless some not trapped signal is received # and causes Ruby to exit, or maybe the user called "exit()" within its # custom code). at_exit do if $!.is_a? ::SystemExit log_system_notice "exiting due to SystemExit..." terminate error=false else log_system_crit "exiting due to an unknown cause ($! = #{$!.inspect})..." terminate error=true end end # Signals that cause OverSIP to terminate. exit_signals = [:TERM, :QUIT] exit_signals.each do |signal| trap signal do log_system_notice "#{signal} signal received, exiting..." terminate error=false end end # Signals that must be ignored. ignore_signals = [:ALRM, :INT, :PIPE, :POLL, :PROF, :USR2, :WINCH] ignore_signals.each do |signal| begin trap signal do log_system_notice "#{signal.to_s.upcase} signal received, ignored" end rescue ::ArgumentError log_system_debug "cannot trap signal #{signal.to_s.upcase}, it could not exist in this system, ignoring it" end end # Ruby 2.0 does not allow trapping VTALRM signal. For other cases ignore it. begin trap :VTALRM do end rescue ::ArgumentError end # Signal HUP reloads OverSIP system configuration. trap :HUP do # Ignore another HUP signal until this code is finished. original_trap_proc = trap(:HUP){} log_system_notice "HUP signal received, reloading configuration files..." ::OverSIP::Config.system_reload # Run all the OverSIP::SystemCallbacks.on_reload_callbacks. log_system_info "executing OverSIP::SystemCallbacks.on_reload_callbacks..." ::Fiber.new do ::OverSIP::SystemCallbacks.on_reload_callbacks.each do |cb| begin cb.call rescue ::Exception => e log_system_crit "error executing a callback in OverSIP::SystemCallbacks.on_reload_callbacks:" log_system_crit e end end # Reset the signal handler. trap :HUP, original_trap_proc end.resume end # Signal USR1 reloads custom code provided by the user. trap :USR1 do # Ignore another HUP signal until this code is finished. original_trap_proc = trap(:USR1){} log_system_notice "USR1 signal received, calling OverSIP::SystemEvents.on_user_reload() method..." # Run OverSIP::SystemEvents.on_user_reload. ::Fiber.new do begin ::OverSIP::SystemEvents.on_user_reload rescue ::Exception => e log_system_crit "error calling OverSIP::SystemEvents.on_user_reload():" log_system_crit e end # Reset the signal handler. trap :USR1, original_trap_proc end.resume end end def self.terminate error=false, fatal=false ::OverSIP.is_ready = false ::OverSIP.status = :terminating # Trap TERM/QUIT signals (we are already exiting). trap(:TERM) {} trap(:QUIT) {} ::Fiber.new do unless fatal # Run OverSIP::SystemEvents.on_terminated. log_system_info "calling OverSIP::SystemEvents.on_terminated() method..." begin ::OverSIP::SystemEvents.on_terminated error rescue ::Exception => e log_system_crit "error calling OverSIP::SystemEvents.on_terminated():" log_system_crit e end # Run all the SystemCallbacks.on_terminated_callbacks in reverse order. log_system_info "executing OverSIP::SystemCallbacks.on_terminated_callbacks..." ::OverSIP::SystemCallbacks.on_terminated_callbacks.reverse.each do |cb| begin cb.call error rescue ::Exception => e log_system_crit "error executing a callback in OverSIP::SystemCallbacks.on_terminated_callbacks:" log_system_crit e end end end unless error log_system_info "exiting, thank you for tasting #{::OverSIP::PROGRAM_NAME}" end # Kill Stud processes and delete its temporal file with the full certificate. kill_stud_processes ::File.delete ::OverSIP.configuration[:tls][:full_cert] rescue nil delete_pid_file # Exit by preventing any exception. exit!( error ? false : true ) end.resume end def self.delete_pid_file return false unless ::OverSIP.pid ::File.delete(::OverSIP.pid_file) rescue nil end def self.set_user_group user, group uid = ::Etc.getpwnam(user).uid if user gid = ::Etc.getgrnam(group).gid if group if uid or gid if gid and ::Process.egid != gid ::Process.initgroups(user, gid) if user ::Process::GID.change_privilege(gid) end if uid ::Process.euid != uid and ::Process::UID.change_privilege(uid) end end end def self.spawn_stud_process options, listen_ip, listen_port, bg_ip, bg_port, ssl=false stud_user_group = "" stud_user_group << "-u #{options[:user]}" if options[:user] stud_user_group << " -g #{options[:group]}" if options[:group] ssl_option = ( ssl ? "--ssl" : "" ) bin_dir = ::File.join(::File.absolute_path(::File.dirname(__FILE__)), "../../bin/") stdout_file = "/tmp/stud.#{listen_ip}:#{listen_port}.out" stderr_file = "/tmp/stud.#{listen_ip}:#{listen_port}.err" ::Dir.chdir(bin_dir) do pid = ::POSIX::Spawn.spawn "./oversip_stud #{stud_user_group} #{ssl_option} -f '#{listen_ip},#{listen_port}' -b '#{bg_ip},#{bg_port}' -n 2 -s --daemon --write-proxy #{::OverSIP.configuration[:tls][:full_cert]}", :out => stdout_file, :err => stderr_file ::Process.waitpid(pid) end # Get the PID of the daemonized stud process. stdout = ::File.read stdout_file pid = nil stdout.each_line do |line| pid = line.split(" ")[4] if pid pid = pid.gsub(/\./,"").to_i break if pid > 0 end end ::File.delete stdout_file rescue nil unless pid stderr = ::File.read stderr_file ::File.delete stderr_file rescue nil log_system_crit "error spawning stud server for listening on #{listen_ip} : #{listen_port}:" fatal stderr end ::File.delete stderr_file rescue nil ::OverSIP.stud_pids ||= [] ::OverSIP.stud_pids << pid log_system_info "spawned stud server (PID #{pid}) listening on #{listen_ip} : #{listen_port}" end def self.kill_stud_processes return false unless ::OverSIP.pid return false unless ::OverSIP.stud_pids ::OverSIP.stud_pids.each do |pid| begin log_system_info "killing stud server with PID #{pid}..." ::Process.kill(:TERM, pid) 10.times do |i| sleep 0.05 ::Process.wait(pid, ::Process::WNOHANG) rescue nil ::Process.kill(0, pid) rescue break end ::Process.kill(0, pid) ::Process.kill(:KILL, pid) rescue nil rescue ::Errno::ESRCH end end end end ================================================ FILE: lib/oversip/logger.rb ================================================ module OverSIP # Logging client module. Any class desiring to log messages must include (or extend) this module. # In order to identify itself in the logs, the class can define log_id() method or set @log_id # attribute. module Logger def self.load_methods ::Syslog.close if ::Syslog.opened? syslog_options = ::Syslog::LOG_PID | ::Syslog::LOG_NDELAY syslog_facility = ::OverSIP::Syslog::SYSLOG_FACILITY_MAPPING[::OverSIP.configuration[:core][:syslog_facility]] rescue ::Syslog::LOG_DAEMON ::Syslog.open(::OverSIP.master_name, syslog_options, syslog_facility) begin @@threshold = ::OverSIP::Syslog::SYSLOG_SEVERITY_MAPPING[::OverSIP.configuration[:core][:syslog_level]] rescue @@threshold = 0 # debug. end $oversip_debug = ( @@threshold == 0 ? true : false ) ::OverSIP::Syslog::SYSLOG_SEVERITY_MAPPING.each do |level_str, level_value| method_str = " def log_system_#{level_str}(msg) " method_str << " return false if @@threshold > #{level_value} ::OverSIP::Syslog.log #{level_value}, msg, log_id, false " if not ::OverSIP.daemonized? if %w{debug info notice}.include? level_str method_str << " puts ::OverSIP::Logger.fg_system_msg2str('#{level_str}', msg, log_id) " else method_str << " $stderr.puts ::OverSIP::Logger.fg_system_msg2str('#{level_str}', msg, log_id) " end end method_str << "end" self.module_eval method_str # User logs. method_str = " def log_#{level_str}(msg) return false if @@threshold > #{level_value} ::OverSIP::Syslog.log #{level_value}, msg, log_id, true end " self.module_eval method_str end # .each end def self.fg_system_msg2str(level_str, msg, log_id) case msg when ::String "#{level_str.upcase}: <#{log_id}> " << msg when ::Exception "#{level_str.upcase}: <#{log_id}> #{msg.message} (#{msg.class })\n#{(msg.backtrace || [])[0..3].join("\n")}" else "#{level_str.upcase}: <#{log_id}> " << msg.inspect end end # Default logging identifier is the class name. If log_id() method is redefined by the # class including this module, or it sets @log_id, then such a value takes preference. def log_id @log_id ||= (self.is_a?(::Module) ? self.name.split("::").last : self.class.name) end end # module Logger end ================================================ FILE: lib/oversip/modules/outbound_mangling.rb ================================================ module OverSIP::Modules module OutboundMangling extend ::OverSIP::Logger @log_id = "OutboundMangling module" def self.add_outbound_to_contact proxy unless proxy.is_a? ::OverSIP::SIP::Proxy raise ::OverSIP::RuntimeError, "proxy must be a OverSIP::SIP::Proxy instance" end proxy.on_target do |target| request = proxy.request # Just act in case the request has a single Contact, its connection uses Outbound # and no ;ov-ob param exists in Contact URI. if request.contact and request.connection_outbound_flow_token and not request.contact.has_param? "ov-ob" log_system_debug "performing Contact mangling (adding ;ov-ob Outbound param) for #{request.log_id}" if $oversip_debug request.contact.set_param "ov-ob", request.connection_outbound_flow_token proxy.on_success_response do |response| if (contacts = response.headers["Contact"]) log_system_debug "reverting original Contact value (removing ;ov-ob Outbound param) from response" if $oversip_debug contacts.each { |contact| contact.gsub! /;ov-ob=[_\-0-9A-Za-z]+/, "" } end end end end end def self.extract_outbound_from_ruri request # Do nothing if the request already contains a Route header with the Outbound flow token (so # the registrar *does* support Path). unless request.incoming_outbound_requested? if (ov_ob = request.ruri.del_param("ov-ob")) log_system_debug "incoming Outbound flow token extracted from ;ov-ob param in RURI for #{request.log_id}" if $oversip_debug request.route_outbound_flow_token = ov_ob request.incoming_outbound_requested = true return true else return false end else # If the request already contains a proper Outbound Route header, then at least try to remove # the ;ov-ob param from the RURI. request.ruri.del_param("ov-ob") return false end end end # module OutboundMangling end ================================================ FILE: lib/oversip/modules/user_assertion.rb ================================================ module OverSIP::Modules module UserAssertion extend ::OverSIP::Logger @log_id = "UserAssertion module" def self.assert_connection message case message when ::OverSIP::SIP::Request request = message when ::OverSIP::SIP::Response request = message.request else raise ::OverSIP::RuntimeError, "message must be a OverSIP::SIP::Request or OverSIP::SIP::Response" end # Don't do this stuf for UDP or for outbound connections. return false unless request.connection.class.reliable_transport_listener? # Return if already set. return request.cvars[:asserted_user] if request.cvars[:asserted_user] # Don't do this stuf in case of P-Preferred-Identity header is present. return false if request.headers["P-Preferred-Identity"] log_system_debug "user #{request.from.uri} asserted to connection" if $oversip_debug # Store the request From URI as "asserted_user" for this connection. request.cvars[:asserted_user] = request.from.uri end def self.revoke_assertion message case message when ::OverSIP::SIP::Request request = message when ::OverSIP::SIP::Response request = message.request else raise ::OverSIP::RuntimeError, "message must be a OverSIP::SIP::Request or OverSIP::SIP::Response" end request.cvars.delete :asserted_user true end def self.add_pai request # Add P-Asserted-Identity if the user has previously been asserted but JUST # in case it matches request From URI ! # NOTE: If the connection is not asserted (it's null) then it will not match this # comparisson, so OK. if request.cvars[:asserted_user] == request.from.uri # Don't add P-Asserted-Identity if the request contains P-Preferred-Identity header. unless request.headers["P-Preferred-Identity"] log_system_debug "user asserted, adding P-Asserted-Identity for #{request.log_id}" if $oversip_debug request.set_header "P-Asserted-Identity", "<" << request.cvars[:asserted_user] << ">" return true else # Remove posible P-Asserted-Identity header! log_system_debug "user asserted but P-Preferred-Identity header present, P-Asserted-Identity not added for #{request.log_id}" if $oversip_debug request.headers.delete "P-Asserted-Identity" return nil end # Otherwise ensure the request has no spoofed P-Asserted-Identity headers! else request.headers.delete "P-Asserted-Identity" return false end end end # module UserAssertion end ================================================ FILE: lib/oversip/proxies_config.rb ================================================ module OverSIP module ProxiesConfig extend ::OverSIP::Logger extend ::OverSIP::Config::Validators def self.log_id @log_id ||= "ProxiesConfig" end @proxy_configuration = { :do_record_routing => true, :record_route_all => false, :use_dns => true, :use_dns_cache => true, :dns_cache_time => 300, :use_blacklist => true, :blacklist_time => 10, :use_naptr => true, :use_srv => true, :transport_preference => ["tls", "tcp", "udp"], :force_transport_preference => false, :ip_type_preference => ["ipv6", "ipv4"], :dns_failover_on_503 => true, :timer_B => 32, :timer_C => 120, :timer_F => 32, :callback_on_server_tls_handshake => true } PROXY_CONFIG_VALIDATIONS = { :do_record_routing => :boolean, :record_route_all => :boolean, :use_dns => :boolean, :use_dns_cache => :boolean, :dns_cache_time => [ :fixnum, [ :greater_equal_than, 300 ] ], :use_blacklist => :boolean, :blacklist_time => [ :fixnum, [ :greater_equal_than, 2 ], [ :minor_equal_than, 600 ] ], :use_naptr => :boolean, :use_srv => :boolean, :transport_preference => [ [ :choices, %w{tls tcp udp}], :multi_value, :non_empty ], :force_transport_preference => :boolean, :ip_type_preference => [ [ :choices, %w{ipv4 ipv6}], :multi_value, :non_empty ], :dns_failover_on_503 => :boolean, :timer_B => [ :fixnum, [ :greater_equal_than, 2 ], [ :minor_equal_than, 64 ] ], :timer_C => [ :fixnum, [ :greater_equal_than, 8 ], [ :minor_equal_than, 180 ] ], :timer_F => [ :fixnum, [ :greater_equal_than, 2 ], [ :minor_equal_than, 64 ] ], :callback_on_server_tls_handshake => :boolean } def self.load proxies_yaml, reload=false begin unless proxies_yaml.is_a? ::Hash raise "invalid proxies configuration file, it is not a collection" end proxies = {} proxies_yaml.each do |proxy, conf| unless proxy.is_a? ::String raise "proxy name is not a string (#{proxy.inspect})" end proxies[proxy.to_sym] = @proxy_configuration.dup proxies[proxy.to_sym].each do |parameter, default_value| proxies[proxy.to_sym][parameter] = case default_value when ::TrueClass, ::FalseClass, ::NilClass, ::Fixnum default_value else default_value.clone end end PROXY_CONFIG_VALIDATIONS.each do |parameter, validations| values = proxies_yaml[proxy][parameter.to_s] validations = [ validations ] unless validations.is_a?(::Array) if values == nil if validations.include? :required raise "#{proxy}[#{parameter}] requires a value" end next end if values.is_a? ::Array unless validations.include? :multi_value raise "#{proxy}[#{parameter}] does not allow multiple values" end if validations.include? :non_empty and values.empty? raise "#{proxy}[#{parameter}] does not allow empty values" end end values = ( values.is_a?(::Array) ? values : [ values ] ) values.each do |value| validations.each do |validation| if validation.is_a? ::Symbol args = [] elsif validation.is_a? ::Array args = validation[1..-1] validation = validation[0] end next if [:required, :multi_value, :non_empty].include? validation unless send validation, value, *args raise "#{proxy}[#{parameter}] has invalid value '#{::OverSIP::Config.humanize_value value}' (does not satisfy '#{validation}' validation requirement)" end end proxies[proxy.to_sym][parameter] = ( validations.include?(:multi_value) ? values : values[0] ) end end # PROXY_CONFIG_VALIDATIONS[section].each end # proxies_yaml.each rescue ::Exception => e unless reload ::OverSIP::Launcher.fatal e.message else raise ::OverSIP::ConfigurationError, e.message end end @proxies = proxies post_process ::OverSIP.proxies = @proxies end def self.post_process @proxies.each_key do |proxy| # Add a string parameter with the proxy name itself. @proxies[proxy][:name] = proxy.to_s # If use_srv is not set then ensure use_naptr is also not set. @proxies[proxy][:use_naptr] = false unless @proxies[proxy][:use_srv] # Convert transport values into Symbols. @proxies[proxy][:transport_preference] = @proxies[proxy][:transport_preference].map do |transport| transport.to_sym end # Ensure there are not duplicate transports. @proxies[proxy][:transport_preference].uniq! # Remove transports that are not supported. @proxies[proxy][:transport_preference].delete :tls unless ::OverSIP.configuration[:sip][:sip_tls] @proxies[proxy][:transport_preference].delete :tcp unless ::OverSIP.configuration[:sip][:sip_tcp] @proxies[proxy][:transport_preference].delete :udp unless ::OverSIP.configuration[:sip][:sip_udp] # Convert IP type values into Symbols. @proxies[proxy][:ip_type_preference] = @proxies[proxy][:ip_type_preference].map do |ip_type| ip_type.to_sym end # Ensure there are not duplicate IP types. @proxies[proxy][:ip_type_preference].uniq! # Remove IP types that are not supported. @proxies[proxy][:ip_type_preference].delete :ipv4 unless ::OverSIP.configuration[:sip][:listen_ipv4] @proxies[proxy][:ip_type_preference].delete :ipv6 unless ::OverSIP.configuration[:sip][:listen_ipv6] # Add new parameters for fast access. @proxies[proxy][:has_sip_ipv4] = @proxies[proxy][:ip_type_preference].include?(:ipv4) @proxies[proxy][:has_sip_ipv6] = @proxies[proxy][:ip_type_preference].include?(:ipv6) @proxies[proxy][:has_sip_udp] = @proxies[proxy][:transport_preference].include?(:udp) @proxies[proxy][:has_sip_tcp] = @proxies[proxy][:transport_preference].include?(:tcp) @proxies[proxy][:has_sip_tls] = @proxies[proxy][:transport_preference].include?(:tls) # Add a hash for the DNS cache. @proxies[proxy][:dns_cache] = {} # Add a hash for the blacklist. @proxies[proxy][:blacklist] = {} # Only allow record routing for all requsts if record routing is enabled @proxies[proxy][:record_route_all] = false unless @proxies[proxy][:do_record_routing] end end end end ================================================ FILE: lib/oversip/ruby_ext/eventmachine.rb ================================================ module EventMachine # Fast method for setting an outgoing TCP connection. def self.oversip_connect_tcp_server bind_addr, server, port, klass, *args s = bind_connect_server bind_addr, 0, server, port c = klass.new s, *args @conns[s] = c block_given? and yield c c end class Connection # We require Ruby 1.9 so don't check String#bytesize method. def send_data data ::EventMachine::send_data @signature, data, data.bytesize end def send_datagram data, address, port ::EventMachine::send_datagram @signature, data, data.bytesize, address, port end # Rewrite close_connection so it set an internal attribute (which can be # inspected when unbind() callback is called). alias _em_close_connection close_connection def close_connection after_writing=false @local_closed = true _em_close_connection after_writing end def close_connection_after_writing close_connection true end end end ================================================ FILE: lib/oversip/sip/client.rb ================================================ module OverSIP::SIP class Client include ::OverSIP::Logger attr_reader :request, :current_target def initialize proxy_profile=:default_proxy unless (@conf = ::OverSIP.proxies[proxy_profile.to_sym]) raise ::OverSIP::RuntimeError, "proxy profile '#{proxy_profile}' is not defined" end @on_provisional_response_cbs = [] @on_success_response_cbs = [] @on_failure_response_cbs = [] @on_canceled_cbs = [] @on_invite_timeout_cbs = [] @on_error_cbs = [] @on_target_cbs = [] end def on_provisional_response &block @on_provisional_response_cbs << block end def on_success_response &block @on_success_response_cbs << block end def on_failure_response &block @on_failure_response_cbs << block end def on_canceled &block @on_canceled_cbs << block end def on_invite_timeout &block @on_invite_timeout_cbs << block end def on_error &block @on_error_cbs << block end def on_target &block @on_target_cbs << block end def clear_on_provisional_response @on_provisional_response_cbs.clear end def clear_on_success_response @on_success_response_cbs.clear end def clear_on_failure_response @on_failure_response_cbs.clear end def clear_on_canceled @on_canceled_cbs.clear end def clear_on_invite_timeout @on_invite_timeout_cbs.clear end def clear_on_error @on_error_cbs.clear end def clear_on_target @on_target_cbs.clear end def clear_callbacks @on_provisional_response_cbs.clear @on_success_response_cbs.clear @on_failure_response_cbs.clear @on_canceled_cbs.clear @on_invite_timeout_cbs.clear @on_error_cbs.clear @on_target_cbs.clear end # By calling this method the request routing is aborted, no more DNS targets are tryed, # a local 403 response is generated and on_error() callback is called with status 403. def abort_routing @aborted = true end # Manually insert the last target into the blacklist. Optionally a timeout value can be given # (otherwise the proxy blacklist_time is used). The timeout must be between 2 and 600 seconds. # Also the SIP code and reason can be passed. def add_target_to_blacklist timeout=nil, status_code=403, reason_phrase="Destination Blacklisted" return false unless @current_target if timeout timeout = timeout.to_i if timeout < 2 or timeout > 600 raise ::OverSIP::RuntimeError, "timeout must be between a and 600 seconds" end else timeout = @conf[:blacklist_time] end blacklist_entry = @current_target.to_s @conf[:blacklist][blacklist_entry] = [status_code, reason_phrase, nil, :destination_blacklisted] ::EM.add_timer(timeout) { @conf[:blacklist].delete blacklist_entry } end ### Methods called by the client transaction. def client_timeout # Store the target and error in the blacklist. if @conf[:use_blacklist] blacklist_entry = @current_target.to_s @conf[:blacklist][blacklist_entry] = [408, "Client Timeout", nil, :client_timeout] ::EM.add_timer(@conf[:blacklist_time]) { @conf[:blacklist].delete blacklist_entry } end try_next_target 408, "Client Timeout", nil, :client_timeout end def connection_failed # Store the target and error in the blacklist. if @conf[:use_blacklist] blacklist_entry = @current_target.to_s @conf[:blacklist][blacklist_entry] = [500, "Connection Error", nil, :connection_error] ::EM.add_timer(@conf[:blacklist_time]) { @conf[:blacklist].delete blacklist_entry } end try_next_target 500, "Connection Error", nil, :connection_error end def tls_validation_failed # Store the target and error in the blacklist. if @conf[:use_blacklist] blacklist_entry = @current_target.to_s @conf[:blacklist][blacklist_entry] = [500, "TLS Validation Failed", nil, :tls_validation_failed] ::EM.add_timer(@conf[:blacklist_time]) { @conf[:blacklist].delete blacklist_entry } end try_next_target 500, "TLS Validation Failed", nil, :tls_validation_failed end # Timer C for INVITE. def invite_timeout run_on_invite_timeout_cbs end private def run_on_provisional_response_cbs response @on_provisional_response_cbs.each do |cb| begin cb.call response rescue => e log_system_error "error executing on_provisional_response callback:" log_system_error e end end end def run_on_success_response_cbs response @on_success_response_cbs.each do |cb| begin cb.call response rescue => e log_system_error "error executing on_success_response callback:" log_system_error e end end end def run_on_failure_response_cbs response @on_failure_response_cbs.each do |cb| begin cb.call response rescue => e log_system_error "error executing on_failure_response callback:" log_system_error e end end end def run_on_canceled_cbs @on_canceled_cbs.each do |cb| begin cb.call rescue => e log_system_error "error executing on_canceled callback:" log_system_error e end end end def run_on_invite_timeout_cbs @on_invite_timeout_cbs.each do |cb| begin cb.call rescue => e log_system_error "error executing on_invite_timeout callback:" log_system_error e end end end def run_on_error_cbs status, reason, code @on_error_cbs.each do |cb| begin cb.call status, reason, code rescue => e log_system_error "error executing on_error callback:" log_system_error e end end end def run_on_target_cbs target @on_target_cbs.each do |cb| begin cb.call target rescue => e log_system_error "error executing on_target callback:" log_system_error e end end end def add_routing_headers end # Check the given URI into the DNS cache. # - If the cache is not enabled it returns nil. # - If present it returns true. # - If not it returns dns_cache_key (String). def check_dns_cache dst_scheme, dst_host, dst_host_type, dst_port, dst_transport if dst_host_type == :domain and @conf[:use_dns_cache] dns_cache_key = "#{dst_scheme}|#{dst_host}|#{dst_port}|#{dst_transport}" if (result = @conf[:dns_cache][dns_cache_key]) log_system_debug "destination found in the DNS cache" if $oversip_debug if result.is_a? ::Symbol rfc3263_failed result else rfc3263_succeeded result end return true else return dns_cache_key end else return nil end end def do_dns dns_cache_key, id, dst_scheme, dst_host, dst_host_type, dst_port, dst_transport # Perform RFC 3261 procedures. dns_query = ::OverSIP::SIP::RFC3263::Query.new @conf, id, dst_scheme, dst_host, dst_host_type, dst_port, dst_transport case result = dns_query.resolve # Async result so DNS took place. when nil # Async success. dns_query.callback do |result| # Store the result in the DNS cache. if dns_cache_key @conf[:dns_cache][dns_cache_key] = result ::EM.add_timer(@conf[:dns_cache_time]) { @conf[:dns_cache].delete dns_cache_key } end rfc3263_succeeded result end # Async error. dns_query.errback do |result| # Store the result in the DNS cache. if dns_cache_key @conf[:dns_cache][dns_cache_key] = result ::EM.add_timer(@conf[:dns_cache_time]) { @conf[:dns_cache].delete dns_cache_key } end rfc3263_failed result end # Instant error. when ::Symbol # Store the result in the DNS cache. if dns_cache_key @conf[:dns_cache][dns_cache_key] = result ::EM.add_timer(@conf[:dns_cache_time]) { @conf[:dns_cache].delete dns_cache_key } end rfc3263_failed result # Instant success so it's not a domain (no DNS performed). else rfc3263_succeeded result end end def rfc3263_succeeded result # After RFC 3263 (DNS) resolution we get N targets. @num_target = 0 @target = @targets = nil # Avoid conflicts if same Proxy is used for serial forking to a new destination. case result when RFC3263::Target @target = result # Single Target. when RFC3263::SrvTargets log_system_debug "DNS result has multiple values, randomizing" if $oversip_debug @targets = result.randomize # Array of Targets. # This can contain Target and SrvTargets entries. when RFC3263::MultiTargets log_system_debug "DNS result has multiple values, randomizing" if $oversip_debug @targets = result.flatten # Array of Targets. end try_next_target end # rfc3263_succeeded def try_next_target status=nil, reason=nil, full_response=nil, code=nil # Single target. if @target and @num_target == 0 @current_target = @target @num_target = 1 log_system_debug "trying single target: #{@current_target}" if $oversip_debug use_target @current_target # Multiple targets (so @targets is set). elsif @targets and @num_target < @targets.size @current_target = @targets[@num_target] @num_target += 1 log_system_debug "trying target #{@num_target} of #{@targets.size}: #{@current_target}" if $oversip_debug use_target @current_target # No more targets. else no_more_targets status, reason, full_response, code end end # try_next_target def use_target target # Lookup the target in the blacklist. if @conf[:blacklist].any? and (blacklist_entry = @conf[:blacklist][target.to_s]) log_system_notice "destination found in the blacklist" if $oversip_debug try_next_target blacklist_entry[0], blacklist_entry[1], blacklist_entry[2], blacklist_entry[3] return end # Call the on_target() callback if set by the user. run_on_target_cbs target # If the user has called to proxy.abort_routing() then stop next targets # and call to on_error() callback. if @aborted log_system_notice "routing aborted for target #{target}" @aborted = @target = @targets = nil try_next_target 403, "Destination Aborted", nil, :destination_aborted return end @client_transaction = (::OverSIP::SIP::ClientTransaction.get_class @request).new self, @request, @conf, target.transport, target.ip, target.ip_type, target.port add_routing_headers @client_transaction.send_request end def no_more_targets status, reason, full_response, code end def rfc3263_failed error case error when :rfc3263_domain_not_found log_system_debug "no resolution" if $oversip_debug status = 404 reason = "No DNS Resolution" code = :no_dns_resolution when :rfc3263_unsupported_scheme log_system_debug "unsupported URI scheme" if $oversip_debug status = 416 reason = "Unsupported URI scheme" code = :unsupported_uri_scheme when :rfc3263_unsupported_transport log_system_debug "unsupported transport" if $oversip_debug status = 478 reason = "Unsupported Transport" code = :unsupported_transport when :rfc3263_no_ipv4 log_system_debug "destination requires unsupported IPv4" if $oversip_debug status = 478 reason = "Destination Requires Unsupported IPv4" code = :no_ipv4 when :rfc3263_no_ipv6 log_system_debug "destination requires unsupported IPv6" if $oversip_debug status = 478 reason = "Destination Requires Unsupported IPv6" code = :no_ipv6 when :rfc3263_no_dns log_system_debug "destination requires unsupported DNS query" if $oversip_debug status = 478 reason = "Destination Requires Unsupported DNS Query" code = :no_dns end do_dns_fail status, reason, code end # def rfc3263_failed def do_dns_fail status, reason, code run_on_error_cbs status, reason, code end end # class Client end ================================================ FILE: lib/oversip/sip/client_transaction.rb ================================================ module OverSIP::SIP class ClientTransaction include ::OverSIP::Logger def self.get_class request case request.sip_method when :INVITE ; ::OverSIP::SIP::InviteClientTransaction when :ACK ; ::OverSIP::SIP::Ack2xxForwarder else ; ::OverSIP::SIP::NonInviteClientTransaction end end attr_reader :core, :request, :state, :connection # In case _transport_ is a String, it's an Outbound flow token. def initialize core, request, transaction_conf, transport, ip=nil, ip_type=nil, port=nil @core = core @request = request @transaction_conf = transaction_conf || {} @transaction_id = ::SecureRandom.hex(4) << @request.antiloop_id # A client transaction for using an existing Outbound connection. if transport.is_a? ::String @connection, @ip, @port = ::OverSIP::SIP::TransportManager.get_outbound_connection transport if @connection @server_klass = @connection.class @transport = @server_klass.transport end # A client transaction based on procedures of RFC 3263. The connection could exist (so reuse it) # or not (so try to create it). else @transport = transport @ip = ip @ip_type = ip_type @port = port @server_klass = case @transport when :udp case @ip_type when :ipv4 ; ::OverSIP::SIP::IPv4UdpServer when :ipv6 ; ::OverSIP::SIP::IPv6UdpServer end when :tcp case @ip_type when :ipv4 ; ::OverSIP::SIP::IPv4TcpServer when :ipv6 ; ::OverSIP::SIP::IPv6TcpServer end when :tls case @ip_type when :ipv4 ; ::OverSIP::SIP::IPv4TlsServer when :ipv6 ; ::OverSIP::SIP::IPv6TlsServer end end @connection = ::OverSIP::SIP::TransportManager.get_connection @server_klass, @ip, @port, self, transaction_conf[:callback_on_server_tls_handshake] end # Ensure the request has Content-Length. Add it otherwise. # NOTE: Don't do this for UAcRequest instances! if @request.is_a? ::OverSIP::SIP::Request if @request.body @request.headers["Content-Length"] = [ @request.body.bytesize.to_s ] else @request.headers["Content-Length"] = HDR_ARRAY_CONTENT_LENGTH_0 end end end # def initialize end # class ClientTransaction class InviteClientTransaction < ClientTransaction def initialize core, request, transaction_conf, transport, ip=nil, ip_type=nil, port=nil super @log_id = "ICT #{@transaction_id}" # Can be :calling, :proceeding, :completed, :accepted or :terminated. @state = :calling end def send_request @client_transactions = @server_klass.invite_client_transactions # Store the new client transaction. @client_transactions[@transaction_id] = self @top_via = "#{@server_klass.via_core};branch=z9hG4bK#{@transaction_id};rport" @request.insert_header "Via", @top_via case @request.in_rr # Add a second Record-Route just in case there is transport change. when :rr unless @request.connection.is_a?(@server_klass) @out_rr = :rr @request.insert_header "Record-Route", @server_klass.record_route end # When there is outgoing Outbound always add a second Record-Route header. when :outgoing_outbound_rr @out_rr = :rr @request.insert_header "Record-Route", @server_klass.record_route # When there is incoming Outbound always add a second Record-Route header containing the flow token. when :incoming_outbound_rr @out_rr = :rr @request.insert_header "Record-Route", "= 300 case @state when :calling, :proceeding @state = :completed @timer_A.cancel if @timer_A @timer_B.cancel @timer_C.cancel if @transport == :udp start_timer_D else terminate_transaction end send_ack(response) @core.receive_response(response) return true when :completed send_ack(response) return false when :accepted log_system_notice "received a [3456]XX response while in accepted state, ignoring it" return false end # 2XX final response. else case @state when :calling, :proceeding @state = :accepted @timer_A.cancel if @timer_A @timer_B.cancel @timer_C.cancel start_timer_M @core.receive_response(response) return true when :accepted @core.receive_response(response) return true when :completed ### NOTE: It could be accepted and bypassed to the UAC, but makes no sense. log_system_notice "received 2XX response while in completed state, ignoring it" return false end end end def connection_failed # This avoid the case in which the TCP connection timeout raises after the transaction timeout. # Neither we react if the transaction has been canceled and the CANCEL cannot be sent due to # TCP disconnection. return unless @state == :calling or not @cancel @timer_A.cancel if @timer_A @timer_B.cancel @timer_C.cancel terminate_transaction @core.connection_failed end def tls_validation_failed return unless @state == :calling or not @cancel @timer_A.cancel if @timer_A @timer_B.cancel @timer_C.cancel terminate_transaction @core.tls_validation_failed end def send_ack response unless @ack @ack = "ACK #{@request.ruri} SIP/2.0\r\n" @ack << "Via: #{@top_via}\r\n" @request.hdr_route.each do |route| @ack << "Route: " << route << CRLF end if @request.hdr_route @ack << "From: " << @request.hdr_from << CRLF @ack << "To: " << @request.hdr_to unless @request.to_tag @ack << ";tag=#{response.to_tag}" if response.to_tag end @ack << CRLF @ack << "Call-ID: " << @request.call_id << CRLF @ack << "CSeq: " << @request.cseq.to_s << " ACK\r\n" @ack << "Content-Length: 0\r\n" @ack << HDR_USER_AGENT << CRLF @ack << CRLF end log_system_debug "sending ACK for [3456]XX response" if $oversip_debug @connection.send_sip_msg @ack, @ip, @port end # It receives the received CANCEL request as parameter so it can check the existence of # Reason header and act according (RFC 3326). # This method is also called (without argument) when Timer C expires (INVITE). def do_cancel cancel=nil return if @cancel @cancel = "CANCEL #{@request.ruri} SIP/2.0\r\n" @cancel << "Via: #{@top_via}\r\n" @request.hdr_route.each do |route| @cancel << "Route: " << route << CRLF end if @request.hdr_route # RFC 3326. Copy Reason headers if present in the received CANCEL. cancel.header_all("Reason").each do |reason| @cancel << "Reason: " << reason << CRLF end if cancel @cancel << "From: " << @request.hdr_from << CRLF @cancel << "To: " << @request.hdr_to << CRLF @cancel << "Call-ID: " << @request.call_id << CRLF @cancel << "CSeq: " << @request.cseq.to_s << " CANCEL\r\n" @cancel << "Content-Length: 0\r\n" @cancel << HDR_USER_AGENT << CRLF @cancel << CRLF # Just send the ACK inmediately if the branch has replied a 1XX response. send_cancel if @state == :proceeding end def send_cancel log_system_debug "sending CANCEL" if $oversip_debug @connection.send_sip_msg @cancel, @ip, @port start_timer_E_cancel if @transport == :udp start_timer_F_cancel end def start_timer_E_cancel @timer_E_cancel_interval = TIMER_E @timer_E_cancel = ::EM::PeriodicTimer.new(@timer_E_cancel_interval) do log_system_debug "timer E expires, retransmitting CANCEL" if $oversip_debug retransmit_cancel @timer_E_cancel_interval = @timer_E_cancel.interval = [2*@timer_E_cancel_interval, T2].min end end def start_timer_F_cancel @timer_F_cancel = ::EM::Timer.new(@transaction_conf[:timer_F] || TIMER_F) do unless @state == :terminated log_system_debug "timer F expires, CANCEL timeout, transaction terminated" if $oversip_debug @timer_E_cancel.cancel if @timer_E_cancel terminate_transaction end end end def retransmit_cancel @connection.send_sip_msg @cancel, @ip, @port end def receive_response_to_cancel(response) unless @state == :terminated log_system_debug "our CANCEL got a #{response.status_code} response, transaction terminated" if $oversip_debug @timer_E_cancel.cancel if @timer_E_cancel @timer_F_cancel.cancel # We MUST ensure that we end the client transaction, so after sending a CANCEL and get a response # for it, ensure the transaction is terminated after a while. ::EM.add_timer(4) { terminate_transaction } end end end # class InviteClientTransaction class NonInviteClientTransaction < ClientTransaction def initialize core, request, transaction_conf, transport, ip=nil, ip_type=nil, port=nil super @log_id = "NICT #{@transaction_id}" # Can be :trying, :proceeding, :completed or :terminated. @state = :trying end def send_request @client_transactions = @server_klass.non_invite_client_transactions # Store the new client transaction. @client_transactions[@transaction_id] = self @top_via = "#{@server_klass.via_core};branch=z9hG4bK#{@transaction_id};rport" @request.insert_header "Via", @top_via case @request.in_rr # Add a second Record-Route just in case there is transport change. when :rr unless @request.connection.is_a?(@server_klass) @out_rr = :rr @request.insert_header "Record-Route", @server_klass.record_route end # When there is outgoing Outbound always add a second Record-Route header. when :outgoing_outbound_rr @out_rr = :rr @request.insert_header "Record-Route", @server_klass.record_route # When there is incoming Outbound always add a second Record-Route header containing the flow token. when :incoming_outbound_rr @out_rr = :rr @request.insert_header "Record-Route", "= 200 case @state when :trying, :proceeding @state = :completed @timer_F.cancel @timer_E.cancel if @timer_E if @transport == :udp start_timer_K else terminate_transaction end @core.receive_response(response) return true else log_system_notice "received a final response #{response.status_code} while in #{@state} state" return false end end end def connection_failed @timer_F.cancel @timer_E.cancel if @timer_E terminate_transaction @core.connection_failed end def tls_validation_failed @timer_F.cancel @timer_E.cancel if @timer_E terminate_transaction @core.tls_validation_failed end end # class NonInviteClientTransaction class Ack2xxForwarder < ClientTransaction def initialize core, request, transaction_conf, transport, ip=nil, ip_type=nil, port=nil super @log_id = "ICT #{@transaction_id}" end def send_request @request.insert_header "Via", "#{@server_klass.via_core};branch=z9hG4bK#{@transaction_id}" @connection.send_sip_msg @request.to_s, @ip, @port end def connection_failed # Do nothing. end def tls_validation_failed # Do nothing. end end # class Ack2xxForwarder end ================================================ FILE: lib/oversip/sip/constants.rb ================================================ module OverSIP::SIP CRLF = "\r\n" DOUBLE_CRLF = "\r\n\r\n" # DOC: http://www.iana.org/assignments/sip-parameters REASON_PHRASE = { 100 => "Trying", 180 => "Ringing", 181 => "Call Is Being Forwarded", 182 => "Queued", 183 => "Session Progress", 199 => "Early Dialog Terminated", # draft-ietf-sipcore-199 200 => "OK", 202 => "Accepted", # RFC 3265 204 => "No Notification", #RFC 5839 300 => "Multiple Choices", 301 => "Moved Permanently", 302 => "Moved Temporarily", 305 => "Use Proxy", 380 => "Alternative Service", 400 => "Bad Request", 401 => "Unauthorized", 402 => "Payment Required", 403 => "Forbidden", 404 => "Not Found", 405 => "Method Not Allowed", 406 => "Not Acceptable", 407 => "Proxy Authentication Required", 408 => "Request Timeout", 410 => "Gone", 412 => "Conditional Request Failed", # RFC 3903 413 => "Request Entity Too Large", 414 => "Request-URI Too Long", 415 => "Unsupported Media Type", 416 => "Unsupported URI Scheme", 417 => "Unknown Resource-Priority", # RFC 4412 420 => "Bad Extension", 421 => "Extension Required", 422 => "Session Interval Too Small", # RFC 4028 423 => "Interval Too Brief", 424 => "Bad Location Information", # RFC 6442 428 => "Use Identity Header", # RFC 4474 429 => "Provide Referrer Identity", # RFC 3892 430 => "Flow Failed", # RFC 5626 433 => "Anonymity Disallowed", # RFC 5079 436 => "Bad Identity-Info", # RFC 4474 437 => "Unsupported Certificate", # RFC 4744 438 => "Invalid Identity Header", # RFC 4744 439 => "First Hop Lacks Outbound Support", # RFC 5626 440 => "Max-Breadth Exceeded", # RFC 5393 469 => "Bad Info Package", # draft-ietf-sipcore-info-events 470 => "Consent Needed", # RF C5360 478 => "Unresolvable Destination", # Custom code copied from Kamailio. 480 => "Temporarily Unavailable", 481 => "Call/Transaction Does Not Exist", 482 => "Loop Detected", 483 => "Too Many Hops", 484 => "Address Incomplete", 485 => "Ambiguous", 486 => "Busy Here", 487 => "Request Terminated", 488 => "Not Acceptable Here", 489 => "Bad Event", # RFC 3265 491 => "Request Pending", 493 => "Undecipherable", 494 => "Security Agreement Required", # RFC 3329 500 => "Server Internal Error", 501 => "Not Implemented", 502 => "Bad Gateway", 503 => "Service Unavailable", 504 => "Server Time-out", 505 => "Version Not Supported", 513 => "Message Too Large", 580 => "Precondition Failure", # RFC 3312 600 => "Busy Everywhere", 603 => "Decline", 604 => "Does Not Exist Anywhere", 606 => "Not Acceptable" } REASON_PHRASE_NOT_SET = "Reason Phrase Not Set" HDR_SERVER = "Server: #{::OverSIP::PROGRAM_NAME}/#{::OverSIP::VERSION}".freeze HDR_USER_AGENT = "User-Agent: #{::OverSIP::PROGRAM_NAME}/#{::OverSIP::VERSION}".freeze HDR_ARRAY_CONTENT_LENGTH_0 = [ "0" ].freeze end ================================================ FILE: lib/oversip/sip/core.rb ================================================ module OverSIP::SIP # This module is included by OverSIP::SIP::Request class. module Core # Create a server transaction for the incoming request. def create_transaction return false if @server_transaction case @sip_method when :INVITE ::OverSIP::SIP::InviteServerTransaction.new self return true when :ACK return nil when :CANCEL return nil else ::OverSIP::SIP::NonInviteServerTransaction.new self return true end end def check_max_forwards max_forwards if @max_forwards unless @max_forwards.zero? @new_max_forwards = ( @max_forwards > max_forwards ? max_forwards : @max_forwards - 1 ) return true else log_system_notice "Max-Forwards is 0 => 483" reply 483 return false end else @new_max_forwards = max_forwards return true end end def loose_route num_removes = 0 has_preloaded_route_with_ob_param = false # Remove all the Route's pointing to the proxy until a Route not pointing to us is found. if @routes @routes.each do |route| if ::OverSIP::SIP::Tags.check_value_for_route_ovid(route.ovid_param) num_removes += 1 else if local_uri? route has_preloaded_route_with_ob_param = true if route.ob_param? num_removes += 1 else break end end end end ### Outbound stuf. RFC 5626 section 5.3. # Outgoing initial request asking for Outbound. Just valid when: # - It's an initial request. # - The request comes via UDP or comes via TCP/TLS/WS/WSS but through a connection # opened by the peer (and not by OverSIP). # - Single Via (so there is no a proxy in front of us). # - It's an INVITE, REGISTER, SUBSCRIBE or REFER request. # - Has a preloaded top Route with ;ob param pointing to us, or has Contact with ;ob, or # it's a REGISTER with ;+sip.instance.. # if ( initial? and @connection.class.outbound_listener? and ( @force_outgoing_outbound or ( @num_vias == 1 and outbound_aware? and ( ( has_preloaded_route_with_ob_param or (@contact and @contact.ob_param?) ) or ( @sip_method == :REGISTER and contact_reg_id? ) ) ) ) ) @outgoing_outbound_requested = true log_system_debug "applying outgoing Outbound support" if $oversip_debug else @outgoing_outbound_requested = false end # Incoming initial request or in-dialog incoming/outgoing request. Must only perform # Outbound for the incoming case and just when: # - All the Route headers point to us. # - There are 1 or 2 Route headers. # - The latest Route has a flow token and a valid ;ovid param (so has been generated # previously by us). # NOTE: But don't check its value so it still would work in case of server reboot. # - It's an incoming Outbound request (so flow token in the Route does not match the # flow token of the incoming connection). if ( (num_removes == 1 or num_removes == 2) and @routes.size == num_removes and (outbound_route = @routes.last) and outbound_route.ovid_param and (@route_outbound_flow_token = outbound_route.user) and @route_outbound_flow_token != @connection_outbound_flow_token ) @incoming_outbound_requested = true log_system_debug "destination is an incoming Outbound connection" if $oversip_debug end # If there are not Route headers return false. return false unless @routes # Remove the Route values pointintg to us. unless num_removes == 0 @headers["Route"].shift num_removes @routes.shift num_removes end @routes.empty? and @routes = nil # Return true if it is an in-dialog request and the top Route pointed to us. # False otherwise as we shouldn't receive an in-dialog request with a top Route non # pointing to us. if in_dialog? return ( num_removes > 0 ? true : false ) # Return true if it was an initial request and more Route headers remain after inspection. elsif @routes return true # Return false if it was an initial request and all its Route headers pointed to the proxy. else return false end end # Checks whether the RURI points to a local domain or address. # Typically, prior to using this method the user has verified the return value of loose_route() # in case it's an initial request (if it's _true_ then the request has pre-loaded Route). def destination_myself? return true if @destination_myself return false if @destination_myself == false if local_uri? @ruri return @destination_myself = true else return @destination_myself = false end end def fix_nat # Force rport usage for UDP clients. @via_rport = @source_port # Force outgoing Outbound. if initial? and @num_vias == 1 and outbound_aware? @force_outgoing_outbound = true end end def outgoing_outbound_requested? return true if @outgoing_outbound_requested return false if @outgoing_outbound_requested == false # It could be an initial request so we must provide Outbound support if # forced via request.fix_nat() or if the request properly indicates it, even # when route.loose_route() is not called. if ( initial? and @connection.class.outbound_listener? and ( @force_outgoing_outbound or ( @num_vias == 1 and outbound_aware? and ( ( @contact and @contact.ob_param? ) or ( @sip_method == :REGISTER and contact_reg_id? ) ) ) ) ) log_system_debug "applying outgoing Outbound support" if $oversip_debug @outgoing_outbound_requested = true else @outgoing_outbound_requested = false end end def incoming_outbound_requested? ; @incoming_outbound_requested end def connection_outbound_flow_token @connection_outbound_flow_token ||= if @transport == :udp # NOTE: Add "_" so later we can figure that this is for UDP. # NOTE: Replace "=" with "-" so it can be added as a SIP URI param (needed i.e. # for the OutboundMangling module). "_" << ::Base64.strict_encode64("#{@source_ip}_#{@source_port}").gsub(/=/,"-") else @connection.outbound_flow_token end end private def local_uri? uri return false unless uri.scheme == :sip or uri.scheme == :sips # NOTE: uri.host has been normalized during parsing in case it's an IPv6 and it's # an :ipv6_reference. ( uri.port and ::OverSIP::SIP.local_aliases["#{uri.host}:#{uri.port}"] ) or ( not uri.port and ::OverSIP::SIP.local_aliases[uri.host] ) end end # module Core end ================================================ FILE: lib/oversip/sip/launcher.rb ================================================ module OverSIP::SIP module Launcher extend ::OverSIP::Logger IP_TYPE = { :ipv4 => "IPv4", :ipv6 => "IPv6" } @log_id = "SIP launcher" def self.run enabled, ip_type, ip, port, transport, virtual_ip=nil, virtual_port=nil uri_ip = case ip_type when :ipv4 ; ip when :ipv6 ; "[#{ip}]" end if virtual_ip uri_virtual_ip = case ip_type when :ipv4 ; virtual_ip when :ipv6 ; "[#{virtual_ip}]" end end klass = case transport when :udp case ip_type when :ipv4 ; ::OverSIP::SIP::IPv4UdpServer when :ipv6 ; ::OverSIP::SIP::IPv6UdpServer end when :tcp case ip_type when :ipv4 ; ::OverSIP::SIP::IPv4TcpServer when :ipv6 ; ::OverSIP::SIP::IPv6TcpServer end when :tls case ip_type when :ipv4 ; ::OverSIP::SIP::IPv4TlsServer when :ipv6 ; ::OverSIP::SIP::IPv6TlsServer end when :tls_tunnel case ip_type when :ipv4 ; ::OverSIP::SIP::IPv4TlsTunnelServer when :ipv6 ; ::OverSIP::SIP::IPv6TlsTunnelServer end end klass.ip = virtual_ip || ip klass.port = virtual_port || port case when klass == ::OverSIP::SIP::IPv4UdpServer if ::OverSIP.configuration[:sip][:advertised_ipv4] used_uri_host = ::OverSIP.configuration[:sip][:advertised_ipv4] else used_uri_host = uri_ip end klass.via_core = "SIP/2.0/UDP #{used_uri_host}:#{port}" klass.record_route = "" klass.outbound_record_route_fragment = "@#{used_uri_host}:#{port};transport=udp;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid}>" klass.outbound_path_fragment = "@#{used_uri_host}:#{port};transport=udp;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid};ob>" if enabled ::EM::open_datagram_socket(ip, port, klass) do |conn| klass.connections = conn end end when klass == ::OverSIP::SIP::IPv6UdpServer if ::OverSIP.configuration[:sip][:advertised_ipv6] used_uri_host = "[#{::OverSIP.configuration[:sip][:advertised_ipv6]}]" else used_uri_host = uri_ip end klass.via_core = "SIP/2.0/UDP #{used_uri_host}:#{port}" klass.record_route = "" klass.outbound_record_route_fragment = "@#{used_uri_host}:#{port};transport=udp;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid}>" klass.outbound_path_fragment = "@#{used_uri_host}:#{port};transport=udp;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid};ob>" if enabled ::EM::open_datagram_socket(ip, port, klass) do |conn| klass.connections = conn end end when klass == ::OverSIP::SIP::IPv4TcpServer if ::OverSIP.configuration[:sip][:advertised_ipv4] used_uri_host = ::OverSIP.configuration[:sip][:advertised_ipv4] else used_uri_host = uri_ip end klass.via_core = "SIP/2.0/TCP #{used_uri_host}:#{port}" klass.record_route = "" klass.outbound_record_route_fragment = "@#{used_uri_host}:#{port};transport=tcp;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid}>" klass.outbound_path_fragment = "@#{used_uri_host}:#{port};transport=tcp;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid};ob>" if enabled ::EM.start_server(ip, port, klass) do |conn| conn.post_connection conn.set_comm_inactivity_timeout 7200 end end when klass == ::OverSIP::SIP::IPv6TcpServer if ::OverSIP.configuration[:sip][:advertised_ipv6] used_uri_host = "[#{::OverSIP.configuration[:sip][:advertised_ipv6]}]" else used_uri_host = uri_ip end klass.via_core = "SIP/2.0/TCP #{used_uri_host}:#{port}" klass.record_route = "" klass.outbound_record_route_fragment = "@#{used_uri_host}:#{port};transport=tcp;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid}>" klass.outbound_path_fragment = "@#{used_uri_host}:#{port};transport=tcp;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid};ob>" if enabled ::EM.start_server(ip, port, klass) do |conn| conn.post_connection conn.set_comm_inactivity_timeout 7200 end end when klass == ::OverSIP::SIP::IPv4TlsServer if ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv4] used_uri_host = ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv4] elsif ::OverSIP.configuration[:sip][:advertised_ipv4] used_uri_host = ::OverSIP.configuration[:sip][:advertised_ipv4] else used_uri_host = uri_ip end klass.via_core = "SIP/2.0/TLS #{used_uri_host}:#{port}" klass.record_route = "" klass.outbound_record_route_fragment = "@#{used_uri_host}:#{port};transport=tls;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid}>" klass.outbound_path_fragment = "@#{used_uri_host}:#{port};transport=tls;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid};ob>" if enabled ::EM.start_server(ip, port, klass) do |conn| conn.post_connection conn.set_comm_inactivity_timeout 7200 end end when klass == ::OverSIP::SIP::IPv6TlsServer if ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv6] used_uri_host = ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv6] elsif ::OverSIP.configuration[:sip][:advertised_ipv6] used_uri_host = "[#{::OverSIP.configuration[:sip][:advertised_ipv6]}]" else used_uri_host = uri_ip end klass.via_core = "SIP/2.0/TLS #{used_uri_host}:#{port}" klass.record_route = "" klass.outbound_record_route_fragment = "@#{used_uri_host}:#{port};transport=tls;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid}>" klass.outbound_path_fragment = "@#{used_uri_host}:#{port};transport=tls;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid};ob>" if enabled ::EM.start_server(ip, port, klass) do |conn| conn.post_connection conn.set_comm_inactivity_timeout 7200 end end when klass == ::OverSIP::SIP::IPv4TlsTunnelServer if ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv4] used_uri_host = ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv4] elsif ::OverSIP.configuration[:sip][:advertised_ipv4] used_uri_host = ::OverSIP.configuration[:sip][:advertised_ipv4] else used_uri_host = uri_virtual_ip end klass.via_core = "SIP/2.0/TLS #{used_uri_host}:#{virtual_port}" klass.record_route = "" klass.outbound_record_route_fragment = "@#{used_uri_host}:#{virtual_port};transport=tls;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid}>" klass.outbound_path_fragment = "@#{used_uri_host}:#{virtual_port};transport=tls;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid};ob>" if enabled ::EM.start_server(ip, port, klass) do |conn| conn.post_connection conn.set_comm_inactivity_timeout 7200 end end when klass == ::OverSIP::SIP::IPv6TlsTunnelServer if ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv6] used_uri_host = ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv6] elsif ::OverSIP.configuration[:sip][:advertised_ipv6] used_uri_host = "[#{::OverSIP.configuration[:sip][:advertised_ipv6]}]" else used_uri_host = uri_virtual_ip end klass.via_core = "SIP/2.0/TLS #{used_uri_host}:#{virtual_port}" klass.record_route = "" klass.outbound_record_route_fragment = "@#{used_uri_host}:#{virtual_port};transport=tls;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid}>" klass.outbound_path_fragment = "@#{used_uri_host}:#{virtual_port};transport=tls;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid};ob>" if enabled ::EM.start_server(ip, port, klass) do |conn| conn.post_connection conn.set_comm_inactivity_timeout 7200 end end end # case transport_str = case transport when :tls_tunnel ; "TLS-Tunnel" else ; transport.to_s.upcase end if enabled log_system_info "SIP #{transport_str} server listening on #{IP_TYPE[ip_type]} #{uri_ip}:#{port}" end end # def self.run end end ================================================ FILE: lib/oversip/sip/listeners/connection.rb ================================================ module OverSIP::SIP class Connection < ::EM::Connection include ::OverSIP::Logger include ::OverSIP::SIP::MessageProcessor class << self attr_accessor :ip_type, :ip, :port, :transport, :via_core, :record_route, :outbound_record_route_fragment, :outbound_path_fragment, :connections, :invite_server_transactions, :non_invite_server_transactions, :invite_client_transactions, :non_invite_client_transactions def reliable_transport_listener? @is_reliable_transport_listener end def outbound_listener? @is_outbound_listener end end attr_reader :cvars def initialize @parser = ::OverSIP::SIP::MessageParser.new @buffer = ::IO::Buffer.new @state = :init @cvars = {} end def receive_senderror error, data log_system_error "Socket sending error: #{error.inspect}, #{data.inspect}" end def transport self.class.transport end def open? ! error? end # close() method causes @local_closed = true. alias close close_connection_after_writing end end ================================================ FILE: lib/oversip/sip/listeners/ipv4_tcp_client.rb ================================================ module OverSIP::SIP class IPv4TcpClient < TcpClient @ip_type = :ipv4 @transport = :tcp @server_class = ::OverSIP::SIP::IPv4TcpServer @connections = @server_class.connections @invite_server_transactions = @server_class.invite_server_transactions @non_invite_server_transactions = @server_class.non_invite_server_transactions @invite_client_transactions = @server_class.invite_client_transactions @non_invite_client_transactions = @server_class.non_invite_client_transactions LOG_ID = "SIP TCP IPv4 client" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/sip/listeners/ipv4_tcp_server.rb ================================================ module OverSIP::SIP class IPv4TcpServer < TcpServer @ip_type = :ipv4 @transport = :tcp @connections = {} @invite_server_transactions = {} @non_invite_server_transactions = {} @invite_client_transactions = {} @non_invite_client_transactions = {} @is_reliable_transport_listener = true @is_outbound_listener = true LOG_ID = "SIP TCP IPv4 server" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/sip/listeners/ipv4_tls_client.rb ================================================ module OverSIP::SIP class IPv4TlsClient < TlsClient @ip_type = :ipv4 @transport = :tls @server_class = ::OverSIP::SIP::IPv4TlsServer @connections = @server_class.connections @invite_server_transactions = @server_class.invite_server_transactions @non_invite_server_transactions = @server_class.non_invite_server_transactions @invite_client_transactions = @server_class.invite_client_transactions @non_invite_client_transactions = @server_class.non_invite_client_transactions LOG_ID = "SIP TLS IPv4 client" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/sip/listeners/ipv4_tls_server.rb ================================================ module OverSIP::SIP class IPv4TlsServer < TlsServer @ip_type = :ipv4 @transport = :tls @connections = {} @invite_server_transactions = {} @non_invite_server_transactions = {} @invite_client_transactions = {} @non_invite_client_transactions = {} @is_reliable_transport_listener = true @is_outbound_listener = true LOG_ID = "SIP TLS IPv4 server" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/sip/listeners/ipv4_tls_tunnel_server.rb ================================================ module OverSIP::SIP class IPv4TlsTunnelServer < TlsTunnelServer @ip_type = :ipv4 @transport = :tls @connections = {} @invite_server_transactions = {} @non_invite_server_transactions = {} @invite_client_transactions = {} @non_invite_client_transactions = {} @is_reliable_transport_listener = true @is_outbound_listener = true LOG_ID = "SIP TLS-Tunnel IPv4 server" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/sip/listeners/ipv4_udp_server.rb ================================================ module OverSIP::SIP class IPv4UdpServer < UdpConnection @ip_type = :ipv4 @transport = :udp @connections = nil # To be set after creating the unique server instance. @invite_server_transactions = {} @non_invite_server_transactions = {} @invite_client_transactions = {} @non_invite_client_transactions = {} @is_outbound_listener = true LOG_ID = "SIP UDP IPv4 server" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/sip/listeners/ipv6_tcp_client.rb ================================================ module OverSIP::SIP class IPv6TcpClient < TcpClient @ip_type = :ipv6 @transport = :tcp @server_class = ::OverSIP::SIP::IPv6TcpServer @connections = @server_class.connections @invite_server_transactions = @server_class.invite_server_transactions @non_invite_server_transactions = @server_class.non_invite_server_transactions @invite_client_transactions = @server_class.invite_client_transactions @non_invite_client_transactions = @server_class.non_invite_client_transactions LOG_ID = "SIP TCP IPv6 client" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/sip/listeners/ipv6_tcp_server.rb ================================================ module OverSIP::SIP class IPv6TcpServer < TcpServer @ip_type = :ipv6 @transport = :tcp @connections = {} @invite_server_transactions = {} @non_invite_server_transactions = {} @invite_client_transactions = {} @non_invite_client_transactions = {} @is_reliable_transport_listener = true @is_outbound_listener = true LOG_ID = "SIP TCP IPv6 server" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/sip/listeners/ipv6_tls_client.rb ================================================ module OverSIP::SIP class IPv6TlsClient < TlsClient @ip_type = :ipv6 @transport = :tls @server_class = ::OverSIP::SIP::IPv6TlsServer @connections = @server_class.connections @invite_server_transactions = @server_class.invite_server_transactions @non_invite_server_transactions = @server_class.non_invite_server_transactions @invite_client_transactions = @server_class.invite_client_transactions @non_invite_client_transactions = @server_class.non_invite_client_transactions LOG_ID = "SIP TLS IPv6 client" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/sip/listeners/ipv6_tls_server.rb ================================================ module OverSIP::SIP class IPv6TlsServer < TlsServer @ip_type = :ipv6 @transport = :tls @connections = {} @invite_server_transactions = {} @non_invite_server_transactions = {} @invite_client_transactions = {} @non_invite_client_transactions = {} @is_reliable_transport_listener = true @is_outbound_listener = true LOG_ID = "SIP TLS IPv6 server" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/sip/listeners/ipv6_tls_tunnel_server.rb ================================================ module OverSIP::SIP class IPv6TlsTunnelServer < TlsTunnelServer @ip_type = :ipv6 @transport = :tls @connections = {} @invite_server_transactions = {} @non_invite_server_transactions = {} @invite_client_transactions = {} @non_invite_client_transactions = {} @is_reliable_transport_listener = true @is_outbound_listener = true LOG_ID = "SIP TLS-Tunnel IPv6 server" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/sip/listeners/ipv6_udp_server.rb ================================================ module OverSIP::SIP class IPv6UdpServer < UdpConnection @ip_type = :ipv6 @transport = :udp @connections = nil # To be set after creating the unique server instance. @invite_server_transactions = {} @non_invite_server_transactions = {} @invite_client_transactions = {} @non_invite_client_transactions = {} @is_outbound_listener = true LOG_ID = "SIP UDP IPv6 server" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/sip/listeners/tcp_client.rb ================================================ module OverSIP::SIP class TcpClient < TcpConnection class << self attr_reader :server_class end attr_reader :connected attr_reader :pending_client_transactions def initialize ip, port # NOTE: The parent class implementing "initialize" method is Connection, and allows no arguments. # If we call just "super" from here it will fail since "ip" and "port" will be passed as # arguments. So we must use "super()" and we are done (no arguments are passed to parent). super() @remote_ip = ip @remote_port = port @connection_id = ::OverSIP::SIP::TransportManager.add_connection self, self.class, self.class.ip_type, @remote_ip, @remote_port @connected = false @pending_client_transactions = [] ### TODO: make it configurable. set_pending_connect_timeout 2.0 end def connection_completed log_system_info "TCP connection opened to " << remote_desc @connected = true @pending_client_transactions.clear end def remote_desc @remote_desc ||= case self.class.ip_type when :ipv4 ; "#{@remote_ip}:#{@remote_port.to_s}" when :ipv6 ; "[#{@remote_ip}]:#{@remote_port.to_s}" end end def unbind cause=nil @state = :ignore # Remove the connection. self.class.connections.delete @connection_id @local_closed = true if cause == ::Errno::ETIMEDOUT if @connected log_msg = "connection to #{remote_desc} " log_msg << ( @local_closed ? "locally closed" : "remotely closed" ) log_msg << " (cause: #{cause.inspect})" if cause log_system_debug log_msg if $oversip_debug # If the TCP client connection has failed (remote server rejected the connection) then # inform to all the pending client transactions. else log_system_notice "connection to #{remote_desc} failed" if $oversip_debug @pending_client_transactions.each do |client_transaction| client_transaction.connection_failed end @pending_client_transactions.clear end unless $! @connected = false end # For the case in which OverSIP receives a SIP request from a connection open by OverSIP. def record_route @record_route and return @record_route server_class = self.class.server_class local_port, local_ip = ::Socket.unpack_sockaddr_in(get_sockname) case when server_class == ::OverSIP::SIP::IPv4TcpServer uri_ip = local_ip when server_class == ::OverSIP::SIP::IPv6TcpServer uri_ip = "[#{local_ip}]" when server_class == ::OverSIP::SIP::IPv4TlsServer uri_ip = local_ip when server_class == ::OverSIP::SIP::IPv6TlsServer uri_ip = "[#{local_ip}]" end @record_route = "" end end end ================================================ FILE: lib/oversip/sip/listeners/tcp_connection.rb ================================================ module OverSIP::SIP class TcpConnection < Connection # Max size (bytes) of the buffered data when receiving message headers # (avoid DoS attacks). HEADERS_MAX_SIZE = 16384 def remote_ip_type @remote_ip_type || self.class.ip_type end def remote_ip @remote_ip end def remote_port @remote_port end def receive_data data @state == :ignore and return @buffer << data @state == :waiting_for_on_client_tls_handshake and return process_received_data end def process_received_data @state == :ignore and return while (case @state when :init @parser.reset @parser_nbytes = 0 @state = :headers when :headers parse_headers # TODO: Add a timer for the case in which an attacker sends us slow headers that never end: # http://ha.ckers.org/slowloris/. when :body get_body when :finished if @msg.request? process_request else process_response end # Set state to :init. @state = :init # Return true to continue processing possible remaining data. true when :ignore false end) end # while end def parse_headers return false if @buffer.empty? # Parse the currently buffered data. If parsing fails @parser_nbytes gets nil value. unless @parser_nbytes = @parser.execute(@buffer.to_str, @parser_nbytes) # The parsed data is invalid, however some data could be parsed so @parsed.parsed # can be: # - SIP::Request # - SIP::Response # - nil (the message is so wrong that cannot be neither a request or response). if wrong_message = @parser.parsed log_system_warn "parsing error for #{MSG_TYPE[wrong_message.class]}: \"#{@parser.error}\"" else log_system_warn "parsing error: \"#{@parser.error}\"" end close_connection_after_writing @state = :ignore return false end # Avoid flood attacks in TCP (very long headers). if @parser_nbytes > HEADERS_MAX_SIZE log_system_warn "DoS attack detected: headers size exceedes #{HEADERS_MAX_SIZE} bytes, closing connection with #{remote_desc}" close_connection # After closing client connection some data can still arrrive to "receive_data()" # (explained in EM documentation). By setting @state = :ignore we ensure such # remaining data is not processed. @state = :ignore return false end # If the parsing has not finished, it is correct in TCP so return false and wait for more data under :headers state. return false unless @parser.finished? # At this point we've got a SIP::Request, SIP::Response or :outbound_keepalive symbol. @msg = @parser.parsed # Clear parsed data from the buffer. @buffer.read(@parser_nbytes) # Received data is a Outbound keealive. if @msg == :outbound_keepalive log_system_debug "Outbound keepalive received, replying single CRLF" if $oversip_debug # Reply a single CRLF over the same connection. send_data CRLF # If TCP then go back to :init state so possible remaining data would be processed. @state = :init return true end @parser.post_parsing # Here we have received the entire headers of a SIP request or response. Fill some # attributes. @msg.connection = self @msg.transport = self.class.transport @msg.source_ip = @remote_ip @msg.source_port = @remote_port @msg.source_ip_type = @remote_ip_type || self.class.ip_type unless valid_message? @parser close_connection_after_writing @state = :ignore return false end add_via_received_rport if @msg.request? unless check_via_branch close_connection_after_writing @state = :ignore return false end # Examine Content-Length header. # In SIP over TCP Content-Length header is mandatory. if (@body_length = @msg.content_length) # There is body (or should be). if @body_length > 0 @state = :body # Return true to continue in get_body() method. return true # No body. else # Set :finished state and return true to process the parsed message. @state = :finished return true end # No Content-Length, invalid message! else # Log it and reply a 400 Bad Request (if it's a request). # Close the connection, set :ignore state and return false to leave # receive_data(). if @msg.request? unless @msg.sip_method == :ACK log_system_warn "request body size doesn't match Content-Length => 400" @msg.reply 400, "Body size doesn't match Content-Length" else log_system_warn "ACK body size doesn't match Content-Length, ignoring it" end else log_system_warn "response has not Content-Length header, ignoring it" end close_connection_after_writing @state = :ignore return false end end # parse_headers def get_body # Return false until the buffer gets all the body. return false if @buffer.size < @body_length ### TODO: Creo que es mejor forzarlo a BINARY y no a UTF-8. Aunque IOBuffer ya lo saca siempre en BINARY. # ¿Por qué lo forcé a UTF-8? # RESPUESTA: Si no lo hago y resulta que el body no es UTF-8 válido, al añadir el body a los headers (que # se generan como un string en UTF-8 (aunque contengan símbolos no UTF-8) fallaría. O todo UTF-8 (aunque # tenga símbolos inválidos) o todo BINARY. @msg.body = @buffer.read(@body_length).force_encoding(::Encoding::UTF_8) @state = :finished return true end # Parameters ip and port are just included because they are needed in UDP, so the API remains equal. def send_sip_msg msg, ip=nil, port=nil if self.error? log_system_notice "SIP message could not be sent, connection is closed" return false end send_data msg true end end end ================================================ FILE: lib/oversip/sip/listeners/tcp_server.rb ================================================ module OverSIP::SIP class TcpServer < TcpConnection attr_reader :outbound_flow_token def post_connection begin @remote_port, @remote_ip = ::Socket.unpack_sockaddr_in(get_peername) rescue => e log_system_error "error obtaining remote IP/port (#{e.class}: #{e.message}), closing connection" close_connection @state = :ignore return end @connection_id = ::OverSIP::SIP::TransportManager.add_connection self, self.class, self.class.ip_type, @remote_ip, @remote_port # Create an Outbound (RFC 5626) flow token for this connection. @outbound_flow_token = ::OverSIP::SIP::TransportManager.add_outbound_connection self ### Testing TCP keepalive. # https://github.com/bklang/eventmachine/commit/74c65a56c733bc1b6f092e32a9f0d722501ade46 # http://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/ if ::OverSIP::SIP.tcp_keepalive_interval set_sock_opt Socket::SOL_SOCKET, Socket::SO_KEEPALIVE, true set_sock_opt Socket::SOL_TCP, Socket::TCP_KEEPIDLE, ::OverSIP::SIP.tcp_keepalive_interval # First TCP ping. set_sock_opt Socket::SOL_TCP, Socket::TCP_KEEPINTVL, ::OverSIP::SIP.tcp_keepalive_interval # Interval between TCP pings. end log_system_debug("connection opened from " << remote_desc) if $oversip_debug end def remote_desc force=nil if force @remote_desc = case @remote_ip_type when :ipv4 ; "#{@remote_ip}:#{@remote_port.to_s}" when :ipv6 ; "[#{@remote_ip}]:#{@remote_port.to_s}" end else @remote_desc ||= case self.class.ip_type when :ipv4 ; "#{@remote_ip}:#{@remote_port.to_s}" when :ipv6 ; "[#{@remote_ip}]:#{@remote_port.to_s}" end end end def unbind cause=nil @state = :ignore # Remove the connection. self.class.connections.delete @connection_id # Remove the Outbound token flow. ::OverSIP::SIP::TransportManager.delete_outbound_connection @outbound_flow_token @local_closed = true if cause == ::Errno::ETIMEDOUT if $oversip_debug log_msg = "connection from #{remote_desc} " log_msg << ( @local_closed ? "locally closed" : "remotely closed" ) log_msg << " (cause: #{cause.inspect})" if cause log_system_debug log_msg end unless $! end end end ================================================ FILE: lib/oversip/sip/listeners/tls_client.rb ================================================ module OverSIP::SIP class TlsClient < TcpClient TLS_HANDSHAKE_MAX_TIME = 4 attr_writer :callback_on_server_tls_handshake def initialize ip, port super @pending_messages = [] end def connection_completed @server_pems = [] @server_last_pem = false start_tls({ :verify_peer => @callback_on_server_tls_handshake, :cert_chain_file => ::OverSIP.tls_public_cert, :private_key_file => ::OverSIP.tls_private_cert, :ssl_version => %w(tlsv1 tlsv1_1 tlsv1_2) }) # If the remote server does never send us a TLS certificate # after the TCP connection we would leak by storing more and # more messages in @pending_messages array. @timer_tls_handshake = ::EM::Timer.new(TLS_HANDSHAKE_MAX_TIME) do unless @connected log_system_notice "TLS handshake not performed within #{TLS_HANDSHAKE_MAX_TIME} seconds, closing the connection" close_connection end end end # Called for every certificate provided by the peer. # This is just called in case @callback_on_server_tls_handshake is true. def ssl_verify_peer pem # TODO: Dirty workaround for bug https://github.com/eventmachine/eventmachine/issues/194. return true if @server_last_pem == pem @server_last_pem = pem @server_pems << pem log_system_debug "received certificate num #{@server_pems.size} from server" if $oversip_debug # Validation must be done in ssl_handshake_completed after receiving all the certs, so return true. return true end # This is called after all the calls to ssl_verify_peer(). def ssl_handshake_completed log_system_debug("TLS connection established to " << remote_desc) if $oversip_debug # @connected in TlsClient means "TLS connection" rather than # just "TCP connection". @connected = true @timer_tls_handshake.cancel if @timer_tls_handshake # Run OverSIP::SipEvents.on_server_tls_handshake. ::Fiber.new do if @callback_on_server_tls_handshake log_system_debug "running OverSIP::SipEvents.on_server_tls_handshake()..." if $oversip_debug begin ::OverSIP::SipEvents.on_server_tls_handshake self, @server_pems rescue ::Exception => e log_system_error "error calling OverSIP::SipEvents.on_server_tls_handshake():" log_system_error e close_connection end # If the user or peer has closed the connection in the on_server_tls_handshake() callback # then notify pending transactions. if @local_closed or error? log_system_debug "connection closed, aborting" if $oversip_debug @pending_client_transactions.each do |client_transaction| client_transaction.tls_validation_failed end @pending_client_transactions.clear @pending_messages.clear @state = :ignore end end @pending_client_transactions.clear @pending_messages.each do |msg| send_data msg end @pending_messages.clear end.resume end def unbind cause=nil super @timer_tls_handshake.cancel if @timer_tls_handshake @pending_messages.clear end # In TLS client, we must wait until ssl_handshake_completed is # completed before sending data. If not, data will be sent in # plain TCP. # http://dev.sipdoc.net/issues/457 def send_sip_msg msg, ip=nil, port=nil if self.error? log_system_notice "SIP message could not be sent, connection is closed" return false end if @connected send_data msg else log_system_debug "TLS handshake not completed yet, waiting before sending the message" if $oversip_debug @pending_messages << msg end true end end end ================================================ FILE: lib/oversip/sip/listeners/tls_server.rb ================================================ module OverSIP::SIP class TlsServer < TcpServer TLS_HANDSHAKE_MAX_TIME = 4 def post_init @client_pems = [] @client_last_pem = false start_tls({ :verify_peer => true, :cert_chain_file => ::OverSIP.tls_public_cert, :private_key_file => ::OverSIP.tls_private_cert, :ssl_version => %w(tlsv1 tlsv1_1 tlsv1_2) }) # If the remote client does never send us a TLS certificate # after the TCP connection we would leak by storing more and # more messages in @pending_messages array. @timer_tls_handshake = ::EM::Timer.new(TLS_HANDSHAKE_MAX_TIME) do unless @connected log_system_notice "TLS handshake not performed within #{TLS_HANDSHAKE_MAX_TIME} seconds, closing the connection" close_connection end end end def ssl_verify_peer pem # TODO: Dirty workaround for bug https://github.com/eventmachine/eventmachine/issues/194. return true if @client_last_pem == pem @client_last_pem = pem @client_pems << pem log_system_debug "received certificate num #{@client_pems.size} from client" if $oversip_debug # Validation must be done in ssl_handshake_completed after receiving all the certs, so return true. return true end def ssl_handshake_completed log_system_info "TLS connection established from " << remote_desc # @connected in TlsServer means "TLS connection" rather than # just "TCP connection". @connected = true @timer_tls_handshake.cancel if @timer_tls_handshake if ::OverSIP::SIP.callback_on_client_tls_handshake # Set the state to :waiting_for_on_client_tls_handshake so data received after TLS handshake but before # user callback validation is just stored. @state = :waiting_for_on_client_tls_handshake # Run OverSIP::SipEvents.on_client_tls_handshake. ::Fiber.new do begin log_system_debug "running OverSIP::SipEvents.on_client_tls_handshake()..." if $oversip_debug ::OverSIP::SipEvents.on_client_tls_handshake self, @client_pems # If the user of the peer has not closed the connection then continue. unless @local_closed or error? @state = :init # Call process_received_data() to process possible data received in the meanwhile. process_received_data else log_system_debug "connection closed, aborting" if $oversip_debug end rescue ::Exception => e log_system_error "error calling OverSIP::SipEvents.on_client_tls_handshake():" log_system_error e close_connection end end.resume end end def unbind cause=nil @timer_tls_handshake.cancel if @timer_tls_handshake super end end end ================================================ FILE: lib/oversip/sip/listeners/tls_tunnel_connection.rb ================================================ module OverSIP::SIP class TlsTunnelConnection < TcpConnection # Max size (bytes) of the buffered data when receiving message headers # (avoid DoS attacks). HEADERS_MAX_SIZE = 16384 def process_received_data @state == :ignore and return while (case @state when :init @parser.reset @parser_nbytes = 0 # If it's a TCP connection from the TLS tunnel then parse the HAProxy Protocol line # if it's not yet done. unless @haproxy_protocol_parsed @state = :haproxy_protocol else @state = :headers end when :haproxy_protocol parse_haproxy_protocol when :headers parse_headers when :body get_body when :finished if @msg.request? process_request else process_response end # Set state to :init. @state = :init # Return true to continue processing possible remaining data. true when :ignore false end) end # while end def parse_haproxy_protocol if (haproxy_protocol_data = ::OverSIP::Utils.parse_haproxy_protocol(@buffer.to_str)) @haproxy_protocol_parsed = true # Update connection information. @remote_ip_type = haproxy_protocol_data[1] @remote_ip = haproxy_protocol_data[2] @remote_port = haproxy_protocol_data[3] # Add the connection with the client's source data. Note that we pass a TlsServer as class, but # the server instance is a TcpServer. @connection_id = case @remote_ip_type when :ipv4 ::OverSIP::SIP::TransportManager.add_connection self, ::OverSIP::SIP::IPv4TlsServer, :ipv4, @remote_ip, @remote_port when :ipv6 ::OverSIP::SIP::TransportManager.add_connection self, ::OverSIP::SIP::IPv6TlsServer, :ipv6, @remote_ip, @remote_port end # Update log information. remote_desc true # Remove the HAProxy Protocol line from the received data. @buffer.read haproxy_protocol_data[0] @state = :headers else log_system_error "HAProxy Protocol parsing error, closing connection" close_connection_after_writing @state = :ignore return false end end end end ================================================ FILE: lib/oversip/sip/listeners/tls_tunnel_server.rb ================================================ module OverSIP::SIP class TlsTunnelServer < TlsTunnelConnection attr_reader :outbound_flow_token def post_connection begin # Temporal @remote_ip and @remote_port until the HAProxy protocol line is parsed. @remote_port, @remote_ip = ::Socket.unpack_sockaddr_in(get_peername) rescue => e log_system_error "error obtaining remote IP/port (#{e.class}: #{e.message}), closing connection" close_connection @state = :ignore return end # Create an Outbound (RFC 5626) flow token for this connection. @outbound_flow_token = ::OverSIP::SIP::TransportManager.add_outbound_connection self log_system_debug ("connection from the TLS tunnel " << remote_desc) if $oversip_debug end def remote_desc force=nil if force @remote_desc = case @remote_ip_type when :ipv4 ; "#{@remote_ip}:#{@remote_port.to_s}" when :ipv6 ; "[#{@remote_ip}]:#{@remote_port.to_s}" end else @remote_desc ||= case self.class.ip_type when :ipv4 ; "#{@remote_ip}:#{@remote_port.to_s}" when :ipv6 ; "[#{@remote_ip}]:#{@remote_port.to_s}" end end end def unbind cause=nil @state = :ignore # Remove the connection. self.class.connections.delete @connection_id if @connection_id # Remove the Outbound token flow. ::OverSIP::SIP::TransportManager.delete_outbound_connection @outbound_flow_token @local_closed = true if cause == ::Errno::ETIMEDOUT if $oversip_debug log_msg = "connection from the TLS tunnel #{remote_desc} " log_msg << ( @local_closed ? "locally closed" : "remotely closed" ) log_msg << " (cause: #{cause.inspect})" if cause log_system_debug log_msg end unless $! end end end ================================================ FILE: lib/oversip/sip/listeners/udp_connection.rb ================================================ module OverSIP::SIP class UdpConnection < Connection def receive_data data @buffer << data while (case @state when :init @parser.reset @parser_nbytes = 0 @state = :message when :message parse_message when :finished if @msg.request? process_request else process_response end @state = :init false end) end # while end def parse_message return false if @buffer.empty? buffer_str = @buffer.to_str # Quikly ignore single CRLF (widely used by SIP UDP clients as keep-alive). if buffer_str == CRLF @buffer.clear @state = :init return false end begin source_port, source_ip = ::Socket.unpack_sockaddr_in(get_peername) rescue => e log_system_crit "error obtaining remote IP/port (#{e.class}: #{e.message})" @buffer.clear @state = :init return false end case stun_res = ::OverSIP::Stun.parse_request(buffer_str, source_ip, source_port) # Not a STUN request so continue with SIP parsing. when nil # An invalid STUN request, log it and drop it. when false log_system_debug "invalid STUN message received (not a valid STUN Binding Request)" if $oversip_debug @buffer.clear @state = :init return false # A valid STUN Binding Request so we get a response to be sent. when ::String log_system_debug "STUN Binding Request received, replying to it" if $oversip_debug send_data stun_res @buffer.clear @state = :init return false end # Parse the currently buffered data. If parsing fails @parser_nbytes gets nil value. unless @parser_nbytes = @parser.execute(buffer_str, @parser_nbytes) # The parsed data is invalid, however some data could be parsed so @parsed.parsed # can be: # - SIP::Request # - SIP::Response # - nil (the message is so wrong that cannot be neither a request or response). if wrong_message = @parser.parsed log_system_warn "parsing error for #{MSG_TYPE[wrong_message.class]}: \"#{@parser.error}\"" else log_system_warn "parsing error: \"#{@parser.error}\"" end @buffer.clear @state = :init return false end unless @parser.finished? # The parsing has not finished. # If UDP it's invalid as per RFC 3261 a UDP datagram MUST contain an entire # SIP request or response. Note we also allow double CRLF in UDP. If just a # single CRLF arrives ignore it and clear the buffer. # Maybe the parser has gone enought data to determine if the unfinished # message is a SIP request or response, log it if so. # If not, then @parser.parsed returns nil and nothing is logged. unfinished_msg = @parser.parsed log_system_warn "ignoring not finished #{MSG_TYPE[unfinished_msg.class]} via UDP" if unfinished_msg.is_a? ::OverSIP::SIP::Request or unfinished_msg.is_a? ::OverSIP::SIP::Response # Clear the buffer, set :init state and wait for new messages. @buffer.clear @state = :init return false end # At this point we've got a SIP::Request, SIP::Response or :outbound_keepalive symbol. @msg = @parser.parsed # Clear parsed data from the buffer. @buffer.read(@parser_nbytes) # Received data is a Outbound keealive (also allowed in UDP however). Reply single CRLF. if @msg == :outbound_keepalive log_system_debug "Outbound keepalive received, replying single CRLF" if $oversip_debug # Reply a single CRLF over the same connection. send_data CRLF # If UDP there could be invalid data after double CRLF CRLF, just ignore it # and clear the buffer. Set :init state and return false so we leave receive_data() # method. @buffer.clear @state = :init return false end @parser.post_parsing # Here we have received the entire headers of a SIP request or response. Fill some # attributes. @msg.connection = self @msg.transport = :udp @msg.source_ip = source_ip @msg.source_port = source_port @msg.source_ip_type = self.class.ip_type unless valid_message? @parser @buffer.clear @state = :init return false end add_via_received_rport if @msg.request? unless check_via_branch @buffer.clear @state = :init return false end # Examine Content-Length header. # There is Content-Length header. if cl = @msg.content_length and cl > 0 # Body size is correct. Read it and clear the buffer. # Set :finished state and return true so message will be processed. if cl == @buffer.size @msg.body = @buffer.read.force_encoding(::Encoding::UTF_8) @buffer.clear @state = :finished return true # In UDP the remaining data after headers must be the entire body # and fill exactly Content-Length bytes. If not it's invalid. Reply # 400 and clear the buffer. else if @msg.request? unless @msg.sip_method == :ACK log_system_warn "request body size doesn't match Content-Length => 400" @msg.reply 400, "Body size doesn't match Content-Length" else log_system_warn "ACK body size doesn't match Content-Length, ignoring it" end else log_system_warn "response body size doesn't match Content-Length, ignoring it" end @buffer.clear @state = :init return false end # No Content-Length header or 0 value. However it could occur that the datagram # contains remaining unuseful data, in this case reply 400. If not # set :finished state and return true so message will be processed. else # Ensure there is no more data in the buffer. If it's ok set :finished # state and return true so message will be processed. if @buffer.size.zero? @state = :finished return true # Non valid remaining data in the UDP datagram. Reply 400. else if @msg.request? log_system_warn "request contains body but Content-Length is zero or not present => 400" @msg.reply 400, "request contains body but Content-Length is zero or not present" else log_system_warn "response contains body but Content-Length is zero or not present, ignoring it" end @buffer.clear @state = :init return false end end end # parse_headers def send_sip_msg msg, ip, port send_datagram msg, ip, port true end def unbind cause=nil unless $! log_system_crit "UDP socket closed!!! cause: #{cause.inspect}" end end end end ================================================ FILE: lib/oversip/sip/listeners.rb ================================================ # OverSIP files require "oversip/sip/listeners/connection" require "oversip/sip/listeners/udp_connection" require "oversip/sip/listeners/tcp_connection" require "oversip/sip/listeners/tls_tunnel_connection" require "oversip/sip/listeners/tcp_server" require "oversip/sip/listeners/tls_server" require "oversip/sip/listeners/tls_tunnel_server" require "oversip/sip/listeners/tcp_client" require "oversip/sip/listeners/tls_client" require "oversip/sip/listeners/ipv4_udp_server" require "oversip/sip/listeners/ipv6_udp_server" require "oversip/sip/listeners/ipv4_tcp_server" require "oversip/sip/listeners/ipv6_tcp_server" require "oversip/sip/listeners/ipv4_tls_server" require "oversip/sip/listeners/ipv6_tls_server" require "oversip/sip/listeners/ipv4_tls_tunnel_server" require "oversip/sip/listeners/ipv6_tls_tunnel_server" require "oversip/sip/listeners/ipv4_tcp_client" require "oversip/sip/listeners/ipv6_tcp_client" require "oversip/sip/listeners/ipv4_tls_client" require "oversip/sip/listeners/ipv6_tls_client" ================================================ FILE: lib/oversip/sip/message.rb ================================================ module OverSIP::SIP class Message include ::OverSIP::Logger DIALOG_FORMING_METHODS = { :INVITE=>true, :SUBSCRIBE=>true, :REFER=>true } RECORD_ROUTING_AWARE_METHODS = { :INVITE=>true, :REGISTER=>true, :SUBSCRIBE=>true, :REFER=>true } OUTBOUND_AWARE_METHODS = { :INVITE=>true, :REGISTER=>true, :SUBSCRIBE=>true, :REFER=>true } EMPTY_ARRAY = [].freeze # SIP related attributes. attr_accessor :transport attr_accessor :source_ip attr_accessor :source_ip_type attr_accessor :source_port attr_accessor :connection # SIP message attributes. attr_reader :sip_method attr_reader :sip_version attr_reader :headers attr_reader :via_sent_by_host attr_reader :via_sent_by_port attr_reader :via_branch attr_accessor :via_branch_id # It's the branch value without "z9hG4bK". attr_reader :via_branch_rfc3261 attr_reader :via_received attr_reader :via_has_rport attr_accessor :via_rport # Value not parsed. attr_reader :via_has_alias attr_reader :via_core_value attr_reader :via_params attr_reader :num_vias attr_reader :call_id attr_reader :cseq attr_reader :max_forwards attr_reader :content_length attr_reader :routes attr_reader :require attr_reader :supported attr_reader :proxy_require attr_accessor :body attr_accessor :from # NameAddr instance. attr_reader :from_tag attr_accessor :to # NameAddr instance. attr_reader :to_tag attr_reader :contact # NameAddr instance (when it has a single value). attr_reader :contact_params attr_reader :hdr_via # Array attr_reader :hdr_from # String attr_reader :hdr_to # String attr_reader :hdr_route # Array # Other attributes. attr_accessor :tvars # Transaction variables (a hash). def udp? ; @transport == :udp end def tcp? ; @transport == :tcp end def tls? ; @transport == :tls end def ws? ; @transport == :ws end def wss? ; @transport == :wss end def websocket? ; @transport == :ws || @transport == :wss end def unknown_method? ; @is_unknown_method end def via_rport? ; @via_has_rport end def via_alias? ; @via_has_alias end def contact_reg_id? ; @contact_has_reg_id end def dialog_forming? DIALOG_FORMING_METHODS[@sip_method] end def record_routing_aware? RECORD_ROUTING_AWARE_METHODS[@sip_method] end def outbound_aware? OUTBOUND_AWARE_METHODS[@sip_method] end # Returns true if a header with the given header _name_ exists, false otherwise. def has_header? name @headers[MessageParser.headerize(name)] && true end # Returns the first value of the given header _name_, nil if it doesn't exist. def header_top name ( hdr = @headers[MessageParser.headerize(name)] ) ? hdr[0] : nil end alias :header :header_top # Returns an array with all the values of the given header _name_, an empty array # if it doesn't exist. def header_all name ( hdr = @headers[MessageParser.headerize(name)] ) ? hdr : EMPTY_ARRAY end # Replaces the header of given _name_ with a the given _value_. # _value_ can be a single value or an array. def set_header name, value @headers[MessageParser.headerize(name)] = case value when ::Array value else [ value.to_s ] end end # Completely deletes the header with given _name_. # Returns an array containing all the header values, nil otherwise. def delete_header name @headers.delete MessageParser.headerize(name) end # Removes the first value of a given header _name_. # Returns the extracted value, nil otherwise. def delete_header_top name if hdr = @headers[k=MessageParser.headerize(name)] hdr.size > 1 ? hdr.shift : @headers.delete(k)[0] end end # Inserts the given _value_ in the first position of header _name_. # _value_ must be a string. def insert_header name, value if hdr = @headers[k=MessageParser.headerize(name)] hdr.unshift value.to_s else #@headers[k] = [ value.to_s ] # NOTE: If the header name doesn't already exist in the mesage, insert # the new header in the first position of the Hash. @headers = { k => [ value.to_s ] }.merge! @headers end end # Append the given _value_ in the last position of header _name_. # _value_ must be a string. def append_header name, value if hdr = @headers[k=MessageParser.headerize(name)] hdr.push value.to_s else @headers[k] = [ value.to_s ] end end # Replaces the top value of the given header _name_ with the # string given as argument _value_. def replace_header_top name, value if hdr = @headers[k=MessageParser.headerize(name)] hdr[0] = value.to_s else @headers[k] = [ value.to_s ] end end # Close the connection from which the SIP request/response has been # received. def close_connection return false if @transport == :udp @connection.close true end end # class Message end ================================================ FILE: lib/oversip/sip/message_processor.rb ================================================ module OverSIP::SIP module MessageProcessor # Constants for efficiency. MSG_TYPE = { ::OverSIP::SIP::Request => "SIP request", ::OverSIP::SIP::Response => "SIP response", :outbound_keepalive => "Outbound keepalive" } def valid_message? parser if header = parser.missing_core_header? log_system_notice "ignoring #{MSG_TYPE[@msg.class]} missing #{header} header" return false elsif header = parser.duplicated_core_header? log_system_notice "ignoring #{MSG_TYPE[@msg.class]} with duplicated #{header} header" return false end return true end private :valid_message? # Via ;received and ;rport stuff. def add_via_received_rport # - If ;rport is present ;received MUST also be set (RFC 3581). # - If not add ;received according to RFC 3261 rules. if @msg.via_rport? via_received = @msg.source_ip @msg.via_rport = @msg.source_port else via_received = (::OverSIP::Utils.compare_ips(@msg.via_sent_by_host, @msg.source_ip) ? nil : @msg.source_ip) end if via_received via_params = ";branch=" << @msg.via_branch if @msg.via_branch via_params << ";received=" << via_received if via_received via_params << ";rport=" << @msg.via_rport.to_s if @msg.via_rport via_params << ";alias" if @msg.via_alias? if @msg.via_params @msg.via_params.each { |k,v| via_params << ( v ? ";#{k}=#{v}" : ";#{k}" ) } end @msg.hdr_via[0] = "#{@msg.via_core_value}#{via_params}" end end private :add_via_received_rport # Reject the message in case it doesn't contain a Via branch compliant with RFC 3261 def check_via_branch if @msg.via_branch_rfc3261 @msg.via_branch_id = @msg.via_branch[7..-1] # The branch without "z9hG4bK". return true end if @msg.is_a? Request unless @msg.sip_method == :ACK log_system_notice "request doesn't contain a RFC 3261 Via branch => 400" @msg.reply 400, "Via branch non RFC 3261 compliant" else log_system_notice "ACK doesn't contain a RFC 3261 Via branch, ignoring it" end else log_system_notice "response doesn't contain a RFC 3261 Via branch, ignoring it" end false end private :check_via_branch def process_request # Run the user provided OverSIP::SipEvents.on_request() callback (unless the request # it's a retransmission, a CANCEL or an ACK for a final non-2XX response). unless check_transaction # Check OverSIP status. unless ::OverSIP.status == :running case ::OverSIP.status when :loading @msg.reply 500, "Server Still Loading", [ "Retry-After: 5" ] when :terminating @msg.reply 500, "Server is Being Stopped" end return end # Create the antiloop identifier for this request. @msg.antiloop_id = ::OverSIP::SIP::Tags.create_antiloop_id(@msg) # Check loops. if @msg.antiloop_id == @msg.via_branch_id[-32..-1] @msg.reply 482, "Loop Detected" return end # Initialize some attributes for the request. @msg.tvars = {} @msg.cvars = @msg.connection.cvars # Run OverSIP::SipEvents.on_request within a fiber. ::Fiber.new do begin ::OverSIP::SipEvents.on_request @msg rescue ::Exception => e log_system_error "error calling OverSIP::SipEvents.on_request() => 500:" log_system_error e @msg.reply 500, "Internal Error", ["Content-Type: text/plain"], "#{e.class}: #{e.message}" end end.resume end end private :process_request # Process a received response. def process_response case @msg.sip_method when :INVITE if client_transaction = @msg.connection.class.invite_client_transactions[@msg.via_branch_id] client_transaction.receive_response(@msg) return end when :ACK when :CANCEL if client_transaction = @msg.connection.class.invite_client_transactions[@msg.via_branch_id] client_transaction.receive_response_to_cancel(@msg) return end else if client_transaction = @msg.connection.class.non_invite_client_transactions[@msg.via_branch_id] client_transaction.receive_response(@msg) return end end log_system_debug "ignoring a response non matching a client transaction (#{@msg.sip_method} #{@msg.status_code})" if $oversip_debug end private :process_response # Check transaction. def check_transaction case @msg.sip_method when :INVITE if server_transaction = @msg.connection.class.invite_server_transactions[@msg.via_branch_id] # If the retranmission arrives via a different connection (for TCP/TLS/WS/WSS) then use # the new one. if @msg.connection == server_transaction.request.connection log_system_debug "INVITE retransmission received" if $oversip_debug else log_system_debug "INVITE retransmission received via other connection, updating server transaction" if $oversip_debug server_transaction.request.connection = @msg.connection end server_transaction.retransmit_last_response return true end when :ACK # If there is associated INVITE transaction (so it has been rejected) # pass ACK to the transaction. if server_transaction = @msg.connection.class.invite_server_transactions[@msg.via_branch_id] server_transaction.receive_ack return true # Absorb ACK for statelessly generated final responses by us. elsif ::OverSIP::SIP::Tags.check_totag_for_sl_reply(@msg.to_tag) log_system_debug "absorving ACK for a stateless final response" if $oversip_debug return true else log_system_debug "passing ACK to the core" if $oversip_debug return false end when :CANCEL if server_transaction = @msg.connection.class.invite_server_transactions[@msg.via_branch_id] case state = server_transaction.state when :proceeding log_system_debug "CANCEL matches an INVITE server transaction in proceeding state => 200" if $oversip_debug @msg.reply 200, "Cancelled" server_transaction.receive_cancel(@msg) else log_system_debug "CANCEL matches an INVITE server transaction in #{state} state => 200" if $oversip_debug @msg.reply 200, "Cancelled" end else log_system_debug "CANCEL does not match an INVITE server transaction => 481" if $oversip_debug @msg.reply 481 end return true else if server_transaction = @msg.connection.class.non_invite_server_transactions[@msg.via_branch_id] # If the retranmission arrives via a different connection (for TCP/TLS) then use # the new one. if @msg.connection == server_transaction.request.connection log_system_debug "#{server_transaction.request.sip_method} retransmission received" if $oversip_debug else log_system_debug "#{server_transaction.request.sip_method} retransmission received via other connection, updating server transaction" if $oversip_debug server_transaction.request.connection = @msg.connection end server_transaction.retransmit_last_response return true end end end # def check_transaction private :check_transaction end end ================================================ FILE: lib/oversip/sip/name_addr.rb ================================================ module OverSIP::SIP class NameAddr < OverSIP::SIP::Uri attr_reader :display_name def self.parse value name_addr = ::OverSIP::SIP::MessageParser.parse_uri value, true raise ::OverSIP::ParsingError, "invalid NameAddr #{value.inspect}" unless name_addr.is_a? (::OverSIP::SIP::NameAddr) name_addr end def initialize display_name=nil, scheme=:sip, user=nil, host=nil, port=nil @display_name = display_name @scheme = scheme.to_sym @user = user @host = host @host_type = ::OverSIP::Utils.ip_type(host) || :domain if host @port = port @name_addr_modified = true @uri_modified = true end def display_name= value @display_name = value @name_addr_modified = true end def to_s return @name_addr if @name_addr and not @name_addr_modified and not @uri_modified @name_addr = "" ( @name_addr << '"' << @display_name << '" ' ) if @display_name @name_addr << "<" << uri << ">" @name_addr_modified = false @name_addr end alias :inspect :to_s def modified? @uri_modified or @name_addr_modified end end end ================================================ FILE: lib/oversip/sip/proxy.rb ================================================ module OverSIP::SIP class Proxy < Client # If a SIP response is given then this method may offer other features such as replying 199. def drop_response response=nil @drop_response = true # RFC 6228 (199 response). # http://tools.ietf.org/html/rfc6228#section-6 if response and response.status_code >= 300 and @request.sip_method == :INVITE and @request.supported and @request.supported.include?("199") @request.send :reply_199, response end end def route request, dst_host=nil, dst_port=nil, dst_transport=nil unless (@request = request).is_a? ::OverSIP::SIP::Request raise ::OverSIP::RuntimeError, "request must be a OverSIP::SIP::Request instance" end @log_id = "Proxy #{@conf[:name]} #{@request.via_branch_id}" # Create the server transaction if it doesn't exist yet. @server_transaction = @request.server_transaction or case @request.sip_method # Here it can arrive an INVITE, ACK-for-2XX and any method but CANCEL. when :INVITE InviteServerTransaction.new @request when :ACK else NonInviteServerTransaction.new @request end @request.server_transaction ||= @server_transaction # Set this core layer to the server transaction. @request.server_transaction.core = self if @request.server_transaction # NOTE: Routing can be based on incoming request for an Outbound (RFC 5626) connection # or based on normal RFC 3263 procedures. # If it's an incoming Outbound connection get the associated connection (but if dst_host is # set then don't honor the Outbound connection). if @request.incoming_outbound_requested? and not dst_host @client_transaction = (::OverSIP::SIP::ClientTransaction.get_class @request).new self, @request, @conf, @request.route_outbound_flow_token if @client_transaction.connection add_routing_headers @client_transaction.send_request else unless @request.sip_method == :ACK log_system_debug "flow failed" if $oversip_debug run_on_error_cbs 430, "Flow Failed", :flow_failed unless @drop_response @request.reply 430, "Flow Failed" else @drop_response = false end else log_system_debug "flow failed for received ACK" if $oversip_debug end end return end # If it's not an incoming Outbound connection (or explicit destination is set), # let's perform RFC 3263 procedures. # Check the request destination. # If a destination is given use it. If not route based on request headers. # Force the destination. if dst_host dst_scheme = :sip dst_host_type = ::OverSIP::Utils.ip_type(dst_host) || :domain # Or use top Route header. elsif @request.routes top_route = @request.routes[0] dst_scheme = top_route.scheme dst_host = top_route.host dst_host_type = top_route.host_type dst_port = top_route.port dst_transport = top_route.transport_param # Or use the Request URI. else dst_scheme = @request.ruri.scheme dst_host = @request.ruri.host dst_host_type = @request.ruri.host_type dst_port = @request.ruri.port dst_transport = @request.ruri.transport_param end # If the destination uri_host is an IPv6 reference, convert it to real IPv6. if dst_host_type == :ipv6_reference dst_host = ::OverSIP::Utils.normalize_ipv6(dst_host, true) dst_host_type = :ipv6 end # Loockup in the DNS cache of this proxy. result = check_dns_cache dst_scheme, dst_host, dst_host_type, dst_port, dst_transport case result when true return else # It can be String or nil, so use it as dns_cache_key param. # Perform RFC 3263 procedures. do_dns result, @request.via_branch_id, dst_scheme, dst_host, dst_host_type, dst_port, dst_transport end end # def route def receive_response response log_system_debug "received response #{response.status_code}" if $oversip_debug response.delete_header_top "Via" if @request.server_transaction.valid_response? response.status_code if response.status_code < 200 && ! @canceled run_on_provisional_response_cbs response elsif response.status_code >= 200 && response.status_code <= 299 run_on_success_response_cbs response elsif response.status_code >= 300 && ! @canceled if response.status_code == 503 if @conf[:dns_failover_on_503] try_next_target nil, nil, response return else # If the response is 503 convert it into 500 (RFC 3261 16.7). response.status_code = 500 run_on_failure_response_cbs response end else run_on_failure_response_cbs response end end end unless @drop_response @request.reply_full response else @drop_response = false end end # Since we don't implement parallel forking, directly send our CANCEL downstream. def receive_cancel cancel log_system_debug "server transaction canceled, cancelling pending client transaction" if $oversip_debug @canceled = true run_on_canceled_cbs @client_transaction.do_cancel cancel end # Timer C for INVITE (method called by the client transaction). def invite_timeout run_on_invite_timeout_cbs unless @drop_response @request.reply 408, "INVITE Timeout" end @drop_response = true # Ignore the possible 487 got from the callee. end private def add_routing_headers # Don't add routing headers again if we are in DNS failover within the same Proxy instance. # But we must run this method if it's an incoming request asking for Outbound usage (in this # case @num_target is nil so the method continues). return if @num_target and @num_target > 1 add_rr_path = false # NOTE: As per RFC 6665 the proxy MUST add Record-Route to in-dialog NOTIFY's. if (@request.initial? and @request.record_routing_aware?) or @request.sip_method == :NOTIFY or @conf[:record_route_all] do_record_routing = @conf[:do_record_routing] # Request has no previous RR/Path and current proxy performs record-routing. # So add RR/Path. if ! @request.in_rr && do_record_routing add_rr_path = true # Request has previous RR/Path and current proxy does not perform record-routing. # So don't add RR/Path and remove the existing one. elsif @request.in_rr && ! do_record_routing case @request.in_rr when :rr, :outgoing_outbound_rr, :incoming_outbound_rr, :both_outbound_rr @request.delete_header_top "Record-Route" when :path, :outgoing_outbound_path, :incoming_outbound_path, :both_outbound_path @request.delete_header_top "Path" end @request.in_rr = nil # Remaining cases are: # - Request has previous RR/Path and current proxy performs record-routing. # - Request has no previous RR/Path and current proxy does not perform record-routing. # So don't add RR/Path. end end unless @request.proxied # Indicate that this request has been proxied (at least once). @request.proxied = true # Set the Max-Forwards header. @request.headers["Max-Forwards"] = [ @request.new_max_forwards.to_s ] if @request.new_max_forwards end # Add Record-Route or Path header. if add_rr_path case @request.sip_method # Path header (RFC 3327) for REGISTER. when :REGISTER if @request.outgoing_outbound_requested? if @request.incoming_outbound_requested? @request.in_rr = :both_outbound_path else @request.in_rr = :outgoing_outbound_path end @request.insert_header "Path", "true, :wss=>true } attr_accessor :server_transaction attr_reader :ruri attr_reader :new_max_forwards attr_accessor :antiloop_id attr_accessor :route_outbound_flow_token attr_writer :outgoing_outbound_requested, :incoming_outbound_requested attr_accessor :proxied # If true it means that this request has been already proxied. attr_reader :from_was_modified, :to_was_modified # Set to true if the From / To has been modified prior to routing the request. # Used for internal purposes when doing proxy and adding the first Record-Route # or Path. attr_accessor :in_rr attr_accessor :cvars # Connection variables (a hash). def log_id @log_id ||= "SIP Request #{@via_branch_id}" end def request? ; true end def response? ; false end def initial? ; ! @to_tag end def in_dialog? ; @to_tag end def secure? SECURE_TRANSPORTS[@transport] || false end def reply status_code, reason_phrase=nil, extra_headers=[], body=nil if @sip_method == :ACK log_system_error "attemtp to reply to an ACK aborted" return false end return false unless @server_transaction.receive_response(status_code) if @server_transaction reason_phrase ||= REASON_PHRASE[status_code] || REASON_PHRASE_NOT_SET if status_code > 100 @internal_to_tag ||= @to_tag || ( @server_transaction ? ::SecureRandom.hex(6) : ::OverSIP::SIP::Tags.totag_for_sl_reply ) end response = "SIP/2.0 #{status_code} #{reason_phrase}\r\n" @hdr_via.each do |hdr| response << "Via: " << hdr << CRLF end response << "From: " << @hdr_from << CRLF response << "To: " << @hdr_to response << ";tag=#{@internal_to_tag}" if @internal_to_tag response << CRLF response << "Call-ID: " << @call_id << CRLF response << "CSeq: " << @cseq.to_s << " " << @sip_method.to_s << CRLF response << "Content-Length: #{body ? body.bytesize : "0"}\r\n" extra_headers.each do |header| response << header.to_s << CRLF end if extra_headers response << HDR_SERVER << CRLF response << CRLF response << body if body @server_transaction.last_response = response if @server_transaction log_system_debug "replying #{status_code} \"#{reason_phrase}\"" if $oversip_debug send_response(response) true end def reply_full response return false unless @server_transaction.receive_response(response.status_code) if @server_transaction # Ensure the response has Content-Length. Add it otherwise. if response.body response.headers["Content-Length"] = [ response.body.bytesize.to_s ] else response.headers["Content-Length"] = HDR_ARRAY_CONTENT_LENGTH_0 end response_leg_a = response.to_s @server_transaction.last_response = response_leg_a if @server_transaction log_system_debug "forwarding response #{response.status_code} \"#{response.reason_phrase}\"" if $oversip_debug send_response(response_leg_a) true end # RFC 6228 (199 response). def reply_199 response # Store the previous internal To-tag (if set). internal_to_tag = @internal_to_tag # Set it with the To-tag of the response for which a 199 must eb generated. @internal_to_tag = response.to_tag # Send the 199 response. reply 199, "Early Dialog Terminated", [ "Reason: SIP ;cause=#{response.status_code} ;text=\"#{response.reason_phrase}\"" ] # Restore the previous internal To-tag. @internal_to_tag = internal_to_tag true end private :reply_199 def ruri= ruri case ruri when ::OverSIP::SIP::Uri, ::OverSIP::SIP::NameAddr @ruri = ruri when ::String @ruri = OverSIP::SIP::Uri.parse ruri else raise ::OverSIP::RuntimeError, "invalid URI #{ruri.inspect}" end end def send_response(response) unless (case @transport when :udp @connection.send_sip_msg response, @source_ip, @via_rport || @via_sent_by_port || 5060 else @connection.send_sip_msg response end ) log_system_notice "error sending the SIP response" end end def to_s msg = "#{@sip_method.to_s} #{@ruri.uri} SIP/2.0\r\n" # Update From/To/Contact headers if modified. if @from.modified? @headers["From"] = [ @from.to_s << (@from_tag ? ";tag=#{@from_tag}" : "") ] @from_was_modified = true end if @to.modified? @headers["To"] = [ @to.to_s << (@to_tag ? ";tag=#{@to_tag}" : "") ] @to_was_modified = true end if @contact and @contact.modified? @headers["Contact"] = [ @contact.to_s << (@contact_params ? @contact_params : "") ] end @headers.each do |name, values| values.each do |value| msg << name << ": #{value}\r\n" end end msg << CRLF msg << @body if @body msg end end # class Request end ================================================ FILE: lib/oversip/sip/response.rb ================================================ module OverSIP::SIP class Response < Message attr_accessor :status_code attr_accessor :reason_phrase attr_accessor :request # The associated request. def request? ; false end def response? ; true end def to_s msg = "SIP/2.0 #{@status_code} #{@reason_phrase}\r\n" # Revert changes to From/To headers if modified during the request processing. @headers["From"] = [ request.hdr_from ] if request.from_was_modified if request.to_was_modified hdr_to = @to_tag ? "#{request.hdr_to};tag=#{@to_tag}" : request.hdr_to @headers["To"] = [ hdr_to ] end @headers.each do |name, values| values.each do |value| msg << name << ": #{value}\r\n" end end msg << CRLF msg << @body if @body msg end end # class Response end ================================================ FILE: lib/oversip/sip/rfc3263.rb ================================================ module OverSIP::SIP module RFC3263 Target = ::Struct.new(:transport, :ip, :ip_type, :port) class Target def to_s if self[2] == :ipv4 "#{self[0]}:#{self[1]}:#{self[3]}" else "#{self[0]}:[#{self[1]}]:#{self[3]}" end end end # This is the object returned by Query#resolve. class SrvTargets < ::Array # Returns a SrvRandomizedTargets instance. def randomize ordered_targets = SrvRandomizedTargets.allocate self.each do |entries| if entries.size == 1 entries[0].targets.each {|e| ordered_targets << e} else randomize_entries(entries.select {|e| e.weight > 0}, ordered_targets) entries.select {|e| e.weight.zero?}.shuffle.each {|e| ordered_targets << e[1]} end end return ordered_targets end def randomize_entries(entries, ordered_targets) total_weight = 0 entries.each {|e| total_weight += e[0]} rnd = rand(total_weight) i=0 entries.each do |entry| if rnd < entry.weight entry.targets.each {|v| ordered_targets << v} entries.delete_at i break else rnd -= entry.weight i += 1 end end randomize_entries(entries, ordered_targets) unless entries.size.zero? end private :randomize_entries end # class SrvTargets SrvWeightTarget = ::Struct.new(:weight, :targets) # This is the object the method SrvTargets#randomize returns. class SrvRandomizedTargets < ::Array ; end class MultiTargets < ::Array attr_accessor :has_srv_weight_targets def flatten return self unless @has_srv_weight_targets targets = [] self.each do |entry| if entry.is_a? RFC3263::Target targets << entry # If not, it's a SrvTargets. else targets.concat entry.randomize end end targets end end # Some constans for efficience. UDP = "udp" TCP = "tcp" TLS = "tls" SIP =" sip" SIPS = "sips" SIP_D2U = "SIP+D2U" SIP_D2T = "SIP+D2T" SIPS_D2T = "SIPS+D2T" TRANSPORT_TO_SERVICE = { :tls=>SIPS_D2T, :tcp=>SIP_D2T, :udp=>SIP_D2U } def self.module_init nameservers = ::OverSIP.configuration[:core][:nameservers] ::EM::Udns.nameservers = nameservers if nameservers @@resolver = ::EM::Udns::Resolver.new ::OverSIP::SIP::RFC3263::Query.class_init end def self.run ::EM::Udns.run @@resolver end def self.resolver @@resolver end class Query include ::OverSIP::Logger def self.class_init @@fiber_pool = ::OverSIP::FiberPool.new 50 end def initialize dns_conf, id, uri_scheme, uri_host, uri_host_type, uri_port=nil, uri_transport=nil @id = id @uri_scheme = uri_scheme @uri_host = uri_host @uri_host_type = uri_host_type @uri_port = uri_port @uri_transport = uri_transport @log_id ||= ("RFC3263" << " " << @id) @use_dns = dns_conf[:use_dns] @transport_preference = dns_conf[:transport_preference] @has_sip_ipv4 = dns_conf[:has_sip_ipv4] @has_sip_ipv6 = dns_conf[:has_sip_ipv6] @has_sip_udp = dns_conf[:has_sip_udp] @has_sip_tcp = dns_conf[:has_sip_tcp] @has_sip_tls = dns_conf[:has_sip_tls] # Just initialize these attributes if URI host is a domain. if uri_host_type == :domain @ip_type_preference = dns_conf[:ip_type_preference] @force_transport_preference = dns_conf[:force_transport_preference] @use_naptr = dns_conf[:use_naptr] @use_srv = dns_conf[:use_srv] end end def callback &block @on_success_block = block end def errback &block @on_error_block = block end # This method can return: # - Target: in case host is a IP. # - SrvTargets: in case SRV took place. Then the client must use SrvTargets#randomize # and get a SrvRandomizedTargets (an Array of Target entries). # - MultiTargets: so each element can be one of the above elements. # - nil: result will be retrieved via callback/errback. # - Symbol: there is some error (domain does not exist, no records, IP is IPv6 # but we don't support it, invalid transport...). def resolve if not @use_dns and @uri_host_type == :domain return :rfc3263_no_dns end case @uri_scheme when :sip when :sips # If URI scheme is :sips and we don't support TLS then reject it. return :rfc3263_unsupported_scheme unless @has_sip_tls else return :rfc3263_unsupported_scheme end dns_transport = nil dns_port = @uri_port # dns_transport means the transport type taken from the destination SIP URI. # If @uri_scheme is :sips and no @uri_transport is given (or it's :tcp), then # dns_transport is :tls. # So dns_transport can be :udp, :tcp or :tls, while @uri_transport should not be # :tls (according to RFC 3261) in case scheme is :sips, and maybe :udp, :tcp, :sctp # or whatever token. In case scheme is :sip then @uri_transport can be :tls so # dns_transport would be :tls. ### First select @transport. # If it's a domain with no port nor ;transport, then # transport will be inspected later with NAPTR. if not @uri_transport and ( @uri_host_type != :domain or @uri_port ) case @uri_scheme when :sip if @has_sip_udp dns_transport = :udp # In case we don't support UDP then use TCP (why not? local policy). elsif @has_sip_tcp dns_transport = :tcp else return :rfc3263_unsupported_transport end when :sips dns_transport = :tls end end # If the URI has ;transport param, then set dns_transport. if @uri_transport case @uri_transport when :udp return :rfc3263_unsupported_transport unless @has_sip_udp if @uri_scheme == :sip dns_transport = :udp # "sips" is not possible in UDP. else return :rfc3263_unsupported_transport end when :tcp case (dns_transport = ( @uri_scheme == :sips ? :tls : :tcp )) when :tcp ; return :rfc3263_unsupported_transport unless @has_sip_tcp when :tls ; return :rfc3263_unsupported_transport unless @has_sip_tls end when :tls return :rfc3263_unsupported_transport unless @has_sip_tls dns_transport = :tls else return :rfc3263_unsupported_transport end end # If URI host is an IP, no DNS query must be done (so no Ruby Fiber must be created). unless @uri_host_type == :domain if @uri_host_type == :ipv4 and not @has_sip_ipv4 return :rfc3263_no_ipv4 elsif @uri_host_type == :ipv6 and not @has_sip_ipv6 return :rfc3263_no_ipv6 end dns_port ||= 5061 if dns_transport == :tls dns_port ||= case @uri_scheme when :sip ; 5060 when :sips ; 5061 end return Target.new(dns_transport, @uri_host, @uri_host_type, dns_port) end # URI host is domain so at least a DNS query must be performed. # Let's create/use a Fiber then. @@fiber_pool.spawn do # If URI port is specified perform DNS A/AAAA (then transport has been # already set above). if @uri_port if (targets = resolve_A_AAAA(dns_transport, @uri_host, dns_port)) if targets.size == 1 @on_success_block && @on_success_block.call(targets[0]) else @on_success_block && @on_success_block.call(targets) end else @on_error_block && @on_error_block.call(:rfc3263_domain_not_found) end # If the URI has no port but has ;transport param, then DNS SRV takes place. elsif @uri_transport if @use_srv if (targets = resolve_SRV(@uri_host, @uri_scheme, dns_transport)) if targets.size == 1 @on_success_block && @on_success_block.call(targets[0]) else @on_success_block && @on_success_block.call(targets) end else @on_error_block && @on_error_block.call(:rfc3263_domain_not_found) end # If @use_srv is false then perform A/AAAA queries. else log_system_debug "SRV is disabled, performing A/AAAA queries" if $oversip_debug port = 5061 if dns_transport == :tls port ||= case @uri_scheme when :sip ; 5060 when :sips ; 5061 end if (targets = resolve_A_AAAA(dns_transport, @uri_host, port)) if targets.size == 1 @on_success_block && @on_success_block.call(targets[0]) else @on_success_block && @on_success_block.call(targets) end else @on_error_block && @on_error_block.call(:rfc3263_domain_not_found) end end # If not, the URI has no port neither ;transport param. NAPTR is required. else # If @use_naptr is false then NAPTR must not be performed. if ! @use_naptr if @use_srv log_system_debug "NAPTR is disabled, performing SRV queries" if $oversip_debug continue_with_SRV # If @use_srv is false then perform A/AAAA queries. else log_system_debug "NAPTR and SRV are disabled, performing A/AAAA queries" if $oversip_debug case @uri_scheme when :sip if @has_sip_udp dns_transport = :udp port = 5060 # In case we don't support UDP then use TCP (why not? local policy). elsif @has_sip_tcp dns_transport = :tcp port = 5060 else @on_error_block && @on_error_block.call(:rfc3263_unsupported_transport) end when :sips dns_transport = :tls port = 5061 end if (targets = resolve_A_AAAA(dns_transport, @uri_host, port)) if targets.size == 1 @on_success_block && @on_success_block.call(targets[0]) else @on_success_block && @on_success_block.call(targets) end else @on_error_block && @on_error_block.call(:rfc3263_domain_not_found) end end # There are NAPTR records so inspect them (note that there still could be no valid SIP NAPTR records # so SRV should take place). elsif (naptrs = sync_resolve_NAPTR(@uri_host)) # If URI scheme is :sips just SIPS+D2T must be searched. naptrs.select! do |naptr| naptr.flags.downcase == "s" and ( (@has_sip_tls and naptr.service.upcase == SIPS_D2T) or (@uri_scheme == :sip and @has_sip_tcp and naptr.service.upcase == SIP_D2T) or (@uri_scheme == :sip and @has_sip_udp and naptr.service.upcase == SIP_D2U) ) end # There are NAPTR records, but not for SIP (or not for SIPS+D2T in case the URI scheme is :sips). # So perform SRV queries. if naptrs.empty? log_system_debug "cannot get valid NAPTR SIP records, performing SRV queries" if $oversip_debug continue_with_SRV # There are NAPTR records for SIP. else # @force_transport_preference is false so let's use NAPTR preferences. unless @force_transport_preference # Order based on RR order and preference (just a bit). ordered_naptrs = naptrs.sort { |x,y| (x.order <=> y.order).nonzero? or y.preference <=> x.preference } # @force_transport_preference is true so let's use @transport_preference for ordering the records. else ordered_naptrs = [] @transport_preference.each do |transport| service = TRANSPORT_TO_SERVICE[transport] ordered_naptrs.concat(naptrs.select { |naptr| naptr.service.upcase == service }) end end srv_targets = MultiTargets.allocate ordered_naptrs.each do |naptr| naptr_transport = case naptr.service.upcase when SIPS_D2T ; :tls when SIP_D2T ; :tcp when SIP_D2U ; :udp end if (result = resolve_SRV(naptr.replacement, nil, nil, naptr_transport)) case result when RFC3263::SrvTargets srv_targets << result srv_targets.has_srv_weight_targets = true # A RFC3263::MultiTargets or an array of RFC3263::Target. when RFC3263::MultiTargets, ::Array srv_targets.concat result end end end if srv_targets.size == 1 @on_success_block && @on_success_block.call(srv_targets[0]) else @on_success_block && @on_success_block.call(srv_targets) end end # There are not NAPTR records, so try SRV records in preference order. else log_system_debug "no NAPTR records, performing SRV queries" if $oversip_debug continue_with_SRV end end end # @@fiber_pool.spawn nil end def continue_with_SRV srv_targets = MultiTargets.allocate @transport_preference.each do |transport| next if @uri_scheme == :sips and (transport == :udp or transport == :tcp) if (result = resolve_SRV(@uri_host, @uri_scheme, transport, transport)) case result when RFC3263::SrvTargets srv_targets << result srv_targets.has_srv_weight_targets = true # A RFC3263::MultiTargets or an array of RFC3263::Target. when RFC3263::MultiTargets, ::Array srv_targets.concat result end end end if srv_targets.size == 1 @on_success_block && @on_success_block.call(srv_targets[0]) elsif srv_targets.size > 1 @on_success_block && @on_success_block.call(srv_targets) # If not, make A/AAAA query. else log_system_debug "no valid SRV targets, performing A/AAAA queries" if $oversip_debug case @uri_scheme when :sip transport = :udp if @has_sip_udp transport ||= :tcp if @has_sip_tcp unless transport @on_error_block && @on_error_block.call(:rfc3263_unsupported_transport) return end port = 5060 when :sips transport = :tls port = 5061 end if targets = resolve_A_AAAA(transport, @uri_host, port) if targets.size == 1 @on_success_block && @on_success_block.call(targets[0]) else @on_success_block && @on_success_block.call(targets) end else @on_error_block && @on_error_block.call(:rfc3263_domain_not_found) end end end private :continue_with_SRV def resolve_A_AAAA transport, domain, port ips = {} # DNS A. if @has_sip_ipv4 ips[:ipv4] = sync_resolve_A(domain) end # DNS AAAA. if @has_sip_ipv6 ips[:ipv6] = sync_resolve_AAAA(domain) end targets = MultiTargets.allocate @ip_type_preference.each do |ip_type| ips[ip_type].each do |ip| targets << RFC3263::Target.new(transport, ip, ip_type, port) end if ips[ip_type] end return case targets.size when 0 ; nil else ; targets end end private :resolve_A_AAAA def resolve_SRV domain, scheme=nil, transport=nil, naptr_transport=nil # If there is not SRV records, perform A/AAAA query for the URI host. unless srvs = sync_resolve_SRV(domain, scheme, transport) # If the query comes from the NAPTR section don't do A/AAAA. return nil if naptr_transport port = 5061 if transport == :tls port ||= case scheme when :sip ; 5060 when :sips ; 5061 end return resolve_A_AAAA(transport, domain, port) # There are SRV records, so perform A/AAAA queries for every record. else srv_targets = SrvTargets.allocate srvs.each do |srv| srv_targets[srv.priority] ||= [] if targets = resolve_A_AAAA(naptr_transport || transport, srv.domain, srv.port) srv_targets[srv.priority] << SrvWeightTarget.new(srv.weight, targets) end end # Remove multiple array entries with null value and return nil if got SRV RR have # domain with no A/AAAA resolution. srv_targets.select! {|e| e and e.size > 0} return nil if srv_targets.empty? if srv_targets.size == 1 and srv_targets[0].size == 1 return srv_targets[0][0].targets else return srv_targets end end end private :resolve_SRV def sync_resolve_NAPTR domain f = Fiber.current query = RFC3263.resolver.submit_NAPTR domain query.callback do |result| log_system_debug "DNS NAPTR succeeded for '#{domain}'" if $oversip_debug f.resume result end query.errback do |result| log_system_debug "DNS NAPTR error resolving '#{domain}': #{result}" if $oversip_debug f.resume nil end Fiber.yield end private :sync_resolve_NAPTR def sync_resolve_SRV domain, service=nil, protocol=nil f = Fiber.current if service == :sip and protocol == :tls service = SIPS elsif service service = service.to_s end protocol = case protocol when :udp ; UDP when :tcp, :tls ; TCP end query = RFC3263.resolver.submit_SRV domain, service, protocol query.callback do |result| if service log_system_debug "DNS SRV succeeded for domain '#{domain}', service '#{service}' and protocol '#{protocol}'" if $oversip_debug else log_system_debug "DNS SRV succeeded for '#{domain}'" if $oversip_debug end f.resume result end query.errback do |result| if service log_system_debug "DNS SRV error resolving domain '#{domain}', service '#{service}' and protocol '#{protocol}': #{result}" if $oversip_debug else log_system_debug "DNS SRV error resolving '#{domain}': #{result}" if $oversip_debug end f.resume nil end Fiber.yield end private :sync_resolve_SRV def sync_resolve_A domain f = Fiber.current query = RFC3263.resolver.submit_A domain query.callback do |result| log_system_debug "DNS A succeeded for domain '#{domain}'" if $oversip_debug f.resume result end query.errback do |result| log_system_debug "DNS A error resolving domain '#{domain}': #{result}" if $oversip_debug f.resume nil end Fiber.yield end private :sync_resolve_A def sync_resolve_AAAA domain f = Fiber.current query = RFC3263.resolver.submit_AAAA domain query.callback do |result| log_system_debug "DNS AAAA succeeded for domain '#{domain}'" if $oversip_debug f.resume result end query.errback do |result| log_system_debug "DNS AAAA error resolving domain '#{domain}': #{result}" if $oversip_debug f.resume nil end Fiber.yield end private :sync_resolve_AAAA end # class Query end # module RFC3263 end ================================================ FILE: lib/oversip/sip/server_transaction.rb ================================================ module OverSIP::SIP class ServerTransaction include ::OverSIP::Logger attr_reader :request attr_accessor :last_response, :core attr_reader :state def initialize request @request = request @request.server_transaction = self @transaction_id = request.via_branch_id end def retransmit_last_response @request.send_response @last_response if @last_response end end # class ServerTransaction class InviteServerTransaction < ServerTransaction def initialize request super @request.connection.class.invite_server_transactions[@transaction_id] = self @log_id = "IST #{@transaction_id}" # Can be :proceeding, :completed, :confirmed, :accepted or :terminated. @state = :proceeding # NOTE: This is a timer of INVITE client transactions, but we also need it here to avoid # that an INVITE server transaction never ends. start_timer_C2 @request.reply 100 end def start_timer_G @timer_G_interval = TIMER_G @timer_G = ::EM::PeriodicTimer.new(@timer_G_interval) do log_system_debug "timer G expires, retransmitting last response" if $oversip_debug retransmit_last_response @timer_G_interval = @timer_G.interval = [2*@timer_G_interval, T2].min end end def start_timer_H @timer_H = ::EM::Timer.new(TIMER_H) do log_system_debug "timer H expires and no ACK received, transaction terminated" if $oversip_debug terminate_transaction @timer_G.cancel if @timer_G end end def start_timer_I ::EM.add_timer(TIMER_I_UDP) do log_system_debug "timer I expires, transaction terminated" if $oversip_debug terminate_transaction end end # RFC 6026. def start_timer_L ::EM.add_timer(TIMER_L) do log_system_debug "timer L expires, transaction terminated" if $oversip_debug terminate_transaction end end # Timer to delete the transaction if final response is never sent by the TU. def start_timer_C2 @timer_C2 = ::EM::Timer.new(TIMER_C2) do log_system_debug "no final response within #{TIMER_C2} seconds, transaction terminated" if $oversip_debug terminate_transaction end end # This method is called by SipReactor#check_transaction upon receipt of an ACK # matching an INVITE transaction (so it has been rejected with [3456]XX). def receive_ack case @state when :proceeding log_system_debug "ACK received during proceeding state, ignoring it" if $oversip_debug when :completed log_system_debug "ACK received during completed state, now confirmed" if $oversip_debug @state = :confirmed @timer_G.cancel if @timer_G @timer_H.cancel if @request.transport == :udp start_timer_I else terminate_transaction end else log_system_debug "ACK received during #{@state} state, ignoring it" if $oversip_debug end end # This method is called by SipReactor#check_transaction upon receipt of an CANCEL # matching an INVITE transaction. def receive_cancel cancel @core.receive_cancel(cancel) if @core end # Terminate current transaction and delete from the list of transactions. def terminate_transaction @state = :terminated @request.connection.class.invite_server_transactions.delete(@transaction_id) end def receive_response status_code # Provisional response if status_code < 200 case @state when :proceeding return true else log_system_notice "attempt to send a provisional response while in #{@state} state" return false end # 2XX final response. elsif status_code >= 200 and status_code < 300 case @state when :proceeding @state = :accepted @timer_C2.cancel start_timer_L return true when :accepted return true else log_system_notice "attempt to send a final 2XX response while in #{@state} state" return false end # [3456]XX final response. else case @state when :proceeding @state = :completed @timer_C2.cancel start_timer_G if @request.transport == :udp start_timer_H return true else log_system_notice "attempt to send a final #{status_code} response while in #{@state} state" return false end end end def valid_response? status_code # Provisional response if status_code < 200 case @state when :proceeding return true else return false end # 2XX final response. elsif status_code >= 200 and status_code < 300 case @state when :proceeding return true when :accepted return true else return false end # [3456]XX final response. else case @state when :proceeding return true else return false end end end end # class InviteServerTransaction class NonInviteServerTransaction < ServerTransaction def initialize request super @request.connection.class.non_invite_server_transactions[@transaction_id] = self @log_id = "NIST #{@transaction_id}" # Can be :trying, :proceeding, :completed or :terminated. @state = :trying start_timer_INT1 end # RFC 4320 - Section 4.1. def start_timer_INT1 @timer_INT1 = ::EM::Timer.new(INT1) do unless @last_response log_system_debug "no final response within #{INT1} seconds => 100" if $oversip_debug @request.reply 100, "I'm alive" end start_timer_INT2 end end # RFC 4320 - Section 4.2. def start_timer_INT2 @timer_INT2 = ::EM::Timer.new(INT2) do log_system_debug "no final response within #{INT1+INT2} seconds, transaction terminated" if $oversip_debug terminate_transaction end end def start_timer_J ::EM.add_timer(TIMER_J_UDP) do log_system_debug "timer J expires, transaction terminated" if $oversip_debug terminate_transaction end end # Terminate current transaction and delete from the list of transactions. def terminate_transaction @state = :terminated @request.connection.class.non_invite_server_transactions.delete(@transaction_id) end def receive_response(status_code) # Provisional response if status_code < 200 case @state when :trying @state = :proceeding return true when :proceeding return true when :completed, :terminated log_system_notice "attempt to send a provisional response while in #{@state} state" return false end # Final response. else case @state when :trying, :proceeding @timer_INT1.cancel @timer_INT2.cancel if @timer_INT2 @state = :completed if @request.transport == :udp start_timer_J else terminate_transaction end return true when :completed, :terminated log_system_notice "attempt to send a final response while in #{@state} state" return false end end end def valid_response? status_code # Provisional response if status_code < 200 case @state when :trying return true when :proceeding return true when :completed, :terminated return false end # Final response. else case @state when :trying, :proceeding return true when :completed, :terminated return false end end end end # class NonInviteServerTransaction end ================================================ FILE: lib/oversip/sip/sip.rb ================================================ module OverSIP::SIP def self.module_init conf = ::OverSIP.configuration @local_ipv4 = conf[:sip][:listen_ipv4] @local_ipv6 = conf[:sip][:listen_ipv6] @tcp_keepalive_interval = conf[:sip][:tcp_keepalive_interval] @local_aliases = {} sip_local_domains = conf[:sip][:local_domains] || [] sip_local_ips = [] sip_local_ips << conf[:sip][:listen_ipv4] if conf[:sip][:enable_ipv4] sip_local_ips << "[#{OverSIP::Utils.normalize_ipv6(conf[:sip][:listen_ipv6])}]" if conf[:sip][:enable_ipv6] sip_local_ports = [ conf[:sip][:listen_port], conf[:sip][:listen_port_tls] ].compact sip_local_domains.each do |domain| @local_aliases[domain] = true sip_local_ports.each do |port| @local_aliases["#{domain}:#{port}"] = true end end sip_local_ips.each do |ip| sip_local_ports.each do |port| @local_aliases["#{ip}:#{port}"] = true end end sip_local_ips.each do |ip| @local_aliases[ip] = true if conf[:sip][:listen_port] == 5060 or conf[:sip][:listen_port_tls] == 5061 end ws_local_domains = conf[:sip][:local_domains] || [] ws_local_ips = [] ws_local_ips << conf[:websocket][:listen_ipv4] if conf[:websocket][:enable_ipv4] ws_local_ips << "[#{OverSIP::Utils.normalize_ipv6(conf[:websocket][:listen_ipv6])}]" if conf[:websocket][:enable_ipv6] ws_local_ports = [ conf[:websocket][:listen_port], conf[:websocket][:listen_port_tls] ].compact ws_local_domains.each do |domain| @local_aliases[domain] = true ws_local_ports.each do |port| @local_aliases["#{domain}:#{port}"] = true end end ws_local_ips.each do |ip| ws_local_ports.each do |port| @local_aliases["#{ip}:#{port}"] = true end end ws_local_ips.each do |ip| @local_aliases[ip] = true if conf[:websocket][:listen_port] == 80 or conf[:websocket][:listen_port_tls] == 443 end @callback_on_client_tls_handshake = conf[:sip][:callback_on_client_tls_handshake] end def self.local_aliases @local_aliases end def self.tcp_keepalive_interval @tcp_keepalive_interval end def self.local_ipv4 @local_ipv4 end def self.local_ipv6 @local_ipv6 end def self.callback_on_client_tls_handshake @callback_on_client_tls_handshake end end ================================================ FILE: lib/oversip/sip/tags.rb ================================================ module OverSIP::SIP module Tags PREFIX_FOR_TOTAG_SL_REPLIED = ::SecureRandom.hex(4) + "." REGEX_PREFIX_FOR_TOTAG_SL_REPLIED = /^#{PREFIX_FOR_TOTAG_SL_REPLIED}/ ROUTE_OVID_VALUE = ::SecureRandom.hex(4) ROUTE_OVID_VALUE_HASH = ROUTE_OVID_VALUE.hash ANTILOOP_CONST = ::SecureRandom.hex(1) def self.totag_for_sl_reply PREFIX_FOR_TOTAG_SL_REPLIED + ::SecureRandom.hex(4) end def self.check_totag_for_sl_reply totag return nil unless totag totag =~ REGEX_PREFIX_FOR_TOTAG_SL_REPLIED end def self.value_for_route_ovid ROUTE_OVID_VALUE end def self.check_value_for_route_ovid value return nil unless value value.hash == ROUTE_OVID_VALUE_HASH end def self.create_antiloop_id request # It produces a 32 chars string. ::Digest::MD5.hexdigest "#{ANTILOOP_CONST}#{request.ruri.to_s}#{request.call_id}#{request.routes[0].uri if request.routes}" end end end ================================================ FILE: lib/oversip/sip/timers.rb ================================================ module OverSIP::SIP ### SIP timer values. # # RTT Estimate (RFC 3261 17.1.2.1). T1 = 0.5 # The maximum retransmit interval for non-INVITE requests and INVITE # responses (RFC 3261 17.1.2.2). T2 = 4 # Maximum duration a message will remain in the network (RFC 3261 17.1.2.2). T4 = 5 # INVITE request retransmit interval, for UDP only (RFC 3261 17.1.1.2). TIMER_A = T1 # initially T1. # INVITE transaction timeout timer (RFC 3261 17.1.1.2). TIMER_B = 64*T1 # Proxy INVITE transaction timeout (RFC 3261 16.6 bullet 11). TIMER_C = 180 # > 3min. # NOTE: This is a custom timer we use for INVITE server transactions in order to avoid they never end. TIMER_C2 = TIMER_C + 2 # Wait time for response retransmits (RFC 3261 17.1.1.2). TIMER_D_UDP = 32 # > 32s for UDP. TIMER_D_TCP = 0 # 0s for TCP/SCTP. # Non-INVITE request retransmit interval, UDP only (RFC 3261 17.1.2.2). TIMER_E = T1 # initially T1 # Non-INVITE transaction timeout timer. TIMER_F = 64*T1 # INVITE response retransmit interval (RFC 3261 17.2.1). TIMER_G = T1 # initially T1. # Wait time for ACK receipt (RFC 3261 17.2.1). TIMER_H = 64*T1 # Wait time for ACK retransmits (RFC 3261 17.2.1). TIMER_I_UDP = T4 # T4 for UDP. TIMER_I_TCP = 0 # 0s for TCP/SCTP. # Wait time for non-INVITE requests (RFC 3261 17.2.2). TIMER_J_UDP = 64*T1 # 64*T1 for UDP. TIMER_J_TCP = 0 # 0s for TCP/SCTP. # Wait time for response retransmits (RFC 3261 17.1.2.2). TIMER_K_UDP = T4 # T4 for UDP. TIMER_K_TCP = 0 # 0s for TCP/SCTP. # Wait time for accepted INVITE request retransmits (RFC 6026 17.2.1). TIMER_L = 64*T1 # Wait time for retransmission of 2xx to INVITE or additional 2xx from # other branches of a forked INVITE (RFC 6026 17.1.1). TIMER_M = 64*T1 ### Custom values. # # Interval waiting in a non INVITE server transaction before sending 100 # (RFC 4320 - Section 4.1). INT1 = T2 + 1 # Interval waiting in a non INVITE server transaction before assuming # timeout (RFC 4320 - Section 4.2). INT2 = TIMER_F - INT1 end ================================================ FILE: lib/oversip/sip/transport_manager.rb ================================================ module OverSIP::SIP module TransportManager extend ::OverSIP::Logger @log_id = "TransportManager" @outbound_connections = {} # Get an existing connection or create a new one (TCP/TLS). # For UDP it always returns the single UDP reactor instance. # client_transaction is passed when creating a new clien transaction. In case the # outgoing connection is a TCP/TLS client connection and it's not connected yet, # the client transaction is stored in the @pending_client_transactions of the client # connection. # This method always returns a connection object, never nil or false. def self.get_connection klass, ip, port, client_transaction=nil, callback_on_server_tls_handshake=false # A normal connection (so we arrive here after RFC 3263 procedures). case klass.transport # In UDP there is a single connection (the UDP server unique instance). when :udp conn = klass.connections # In TCP/TLS first check if there is an existing connection to the given destination. # If not create a new one. when :tcp case klass.ip_type when :ipv4 conn = klass.connections["#{ip}_#{port}"] || ::EM.oversip_connect_tcp_server(::OverSIP::SIP.local_ipv4, ip, port, ::OverSIP::SIP::IPv4TcpClient, ip, port) if conn.is_a? ::OverSIP::SIP::IPv4TcpClient and not conn.connected conn.pending_client_transactions << client_transaction end when :ipv6 conn = klass.connections["#{::OverSIP::Utils.normalize_ipv6 ip}_#{port}"] || ::EM.oversip_connect_tcp_server(::OverSIP::SIP.local_ipv6, ip, port, ::OverSIP::SIP::IPv6TcpClient, ip, port) if conn.is_a? ::OverSIP::SIP::IPv6TcpClient and not conn.connected conn.pending_client_transactions << client_transaction end end when :tls case klass.ip_type when :ipv4 conn = klass.connections["#{ip}_#{port}"] || ::EM.oversip_connect_tcp_server(::OverSIP::SIP.local_ipv4, ip, port, ::OverSIP::SIP::IPv4TlsClient, ip, port) if conn.is_a? ::OverSIP::SIP::IPv4TlsClient and not conn.connected conn.callback_on_server_tls_handshake = callback_on_server_tls_handshake conn.pending_client_transactions << client_transaction end when :ipv6 conn = klass.connections["#{::OverSIP::Utils.normalize_ipv6 ip}_#{port}"] || ::EM.oversip_connect_tcp_server(::OverSIP::SIP.local_ipv6, ip, port, ::OverSIP::SIP::IPv6TlsClient, ip, port) if conn.is_a? ::OverSIP::SIP::IPv6TlsClient and not conn.connected conn.callback_on_server_tls_handshake = callback_on_server_tls_handshake conn.pending_client_transactions << client_transaction end end end # NOTE: Should never happen. unless conn ::OverSIP::Launcher.fatal "no connection retrieved from TransportManager.get_connection(), FIXME, it should never occur!!!" end # Return the created/retrieved connection instance. conn end def self.add_connection server, server_class, ip_type, ip, port connection_id = case ip_type when :ipv4 "#{ip}_#{port}" when :ipv6 "#{::OverSIP::Utils.normalize_ipv6 ip}_#{port}" end server_class.connections[connection_id] = server # Return the connection_id. connection_id end # Return a SIP server instance. It could return nil (if the requested connection no longer # exists) or false (if it's a tampered flow token). def self.get_outbound_connection flow_token # If the token flow has been generated for UDP it is "_" followed by the Base64 # encoded representation of "IP_port", so getbyte(0) would return 95. if flow_token.getbyte(0) == 95 # NOTE: Doing Base64.decode64 automatically removes the leading "_". # NOTE: Previously when the Outbound flow token was generated, "=" was replaced with "-" so it becomes # valid for a SIP URI param (needed i.e. for the OutboundMangling module). ip_type, ip, port = ::OverSIP::Utils.parse_outbound_udp_flow_token(::Base64.decode64 flow_token.gsub(/-/,"=")) case ip_type when :ipv4 return [ ::OverSIP::SIP::IPv4UdpServer.connections, ip, port ] when :ipv6 return [ ::OverSIP::SIP::IPv6UdpServer.connections, ip, port ] else log_system_notice "udp flow token does not contain valid IP and port encoded value" return false end # If not, the flow token has been generated for a TCP/TLS/WS/WSS connection so let's lookup # it into the Outbound connection collection and return nil for IP and port. else @outbound_connections[flow_token] end end def self.add_outbound_connection connection outbound_flow_token = ::SecureRandom.hex(5) @outbound_connections[outbound_flow_token] = connection outbound_flow_token end def self.delete_outbound_connection outbound_flow_token @outbound_connections.delete outbound_flow_token end end # module TransportManager end ================================================ FILE: lib/oversip/sip/uac.rb ================================================ module OverSIP::SIP class Uac < Client def route request, dst_host=nil, dst_port=nil, dst_transport=nil unless (@request = request).is_a? ::OverSIP::SIP::UacRequest or @request.is_a? ::OverSIP::SIP::Request raise ::OverSIP::RuntimeError, "request must be a OverSIP::SIP::UacRequest or OverSIP::SIP::Request instance" end # The destination of the request is taken from: # - dst_xxx fields if given. # - The request.ruri (which is an OverSIP::SIP::Uri or OverSIP::SIP::NameAddr). # Otherwise raise an exception. @log_id = "UAC (proxy #{@conf[:name]})" # Force the destination. if dst_host dst_scheme = :sip dst_host_type = ::OverSIP::Utils.ip_type(dst_host) || :domain # Or use the Request URI. else dst_scheme = request.ruri.scheme dst_host = request.ruri.host dst_host_type = request.ruri.host_type dst_port = request.ruri.port dst_transport = request.ruri.transport_param end # If the destination uri_host is an IPv6 reference, convert it to real IPv6. if dst_host_type == :ipv6_reference dst_host = ::OverSIP::Utils.normalize_ipv6(dst_host, true) dst_host_type = :ipv6 end # Loockup in the DNS cache of this proxy. result = check_dns_cache dst_scheme, dst_host, dst_host_type, dst_port, dst_transport case result when true return else # It can be String or nil, so use it as dns_cache_key param. # Perform RFC 3263 procedures. do_dns result, @request.via_branch_id, dst_scheme, dst_host, dst_host_type, dst_port, dst_transport end end # def route def receive_response response log_system_debug "received response #{response.status_code}" if $oversip_debug if response.status_code < 200 run_on_provisional_response_cbs response elsif response.status_code >= 200 && response.status_code <= 299 run_on_success_response_cbs response elsif response.status_code >= 300 if response.status_code == 503 if @conf[:dns_failover_on_503] try_next_target nil, nil, response return else run_on_failure_response_cbs response end else run_on_failure_response_cbs response end end end private def no_more_targets status, reason, full_response, code # If we have received a [3456]XX response from downstream then run @on_failure_response_cbs. if full_response run_on_failure_response_cbs full_response # If not, generate the response according to the given status and reason. else run_on_error_cbs status, reason, code end end end # class Uac end ================================================ FILE: lib/oversip/sip/uac_request.rb ================================================ module OverSIP::SIP class UacRequest DEFAULT_MAX_FORWARDS = "20" DEFAULT_FROM = "\"OverSIP #{::OverSIP::VERSION}\" " attr_reader :sip_method, :ruri, :from, :from_tag, :to, :body, :call_id, :cseq attr_reader :antiloop_id, :via_branch_id attr_reader :routes # Always nil (needed for OverSIP::SIP::Tags.create_antiloop_id(). attr_accessor :tvars # Transaction variables (a hash). def initialize data, extra_headers=[], body=nil unless (@sip_method = data[:sip_method]) raise ::OverSIP::RuntimeError, "no data[:sip_method] given" end unless (ruri = data[:ruri]) raise ::OverSIP::RuntimeError, "no data[:ruri] given" end case ruri when ::OverSIP::SIP::Uri, ::OverSIP::SIP::NameAddr @ruri = ruri when ::String @ruri = OverSIP::SIP::Uri.parse ruri else raise ::OverSIP::RuntimeError, "invalid URI #{ruri.inspect}" end @from = data[:from] || DEFAULT_FROM @from_tag = data[:from_tag] || ::SecureRandom.hex(4) @to = data[:to] || @ruri @call_id = data[:call_id] || ::SecureRandom.hex(8) @cseq = data[:cseq] || rand(1000) @max_forwards = data[:max_forwards] || DEFAULT_MAX_FORWARDS @headers = {} @extra_headers = extra_headers @body = body @antiloop_id = ::OverSIP::SIP::Tags.create_antiloop_id(self) @via_branch_id = ::SecureRandom.hex(4) end def insert_header name, value @headers[name] = value.to_s end def delete_header_top name @headers.delete name end def to_s msg = "#{@sip_method.to_s} #{@ruri.uri} SIP/2.0\r\n" @headers.each do |name, value| msg << name << ": #{value}\r\n" end msg << "From: #{@from.to_s};tag=#{@from_tag}\r\n" msg << "To: #{@to.to_s}\r\n" msg << "Call-ID: #{@call_id}\r\n" msg << "CSeq: #{@cseq.to_s} #{@sip_method.to_s}\r\n" msg << "Content-Length: #{@body ? @body.bytesize : "0"}\r\n" msg << "Max-Forwards: #{@max_forwards.to_s}\r\n" msg << HDR_USER_AGENT << CRLF @extra_headers.each do |header| msg << header << CRLF end msg << CRLF msg << @body if @body msg end end # class Request end ================================================ FILE: lib/oversip/sip/uri.rb ================================================ module OverSIP::SIP class Uri attr_reader :scheme, :user, :host, :host_type, :port, :params, :transport_param, :phone_context_param, :ovid_param, :headers def self.parse value uri = ::OverSIP::SIP::MessageParser.parse_uri value, false raise ::OverSIP::ParsingError, "invalid URI #{value.inspect}" unless uri.is_a? (::OverSIP::SIP::Uri) uri end def initialize scheme=:sip, user=nil, host=nil, port=nil @scheme = scheme.to_sym @user = user @host = host @host_type = ::OverSIP::Utils.ip_type(host) || :domain if host @port = port @uri_modified = true end def sip? @scheme == :sip or @scheme == :sips end def tel? @scheme == :tel end def scheme= value return nil if unknown_scheme? @scheme = value @uri_modified = true end def unknown_scheme? not @scheme.is_a? Symbol end def user= value return nil if unknown_scheme? @user = value @uri_modified = true end alias :number :user alias :number= :user= def host= value return nil if unknown_scheme? @host = value @host_type = ::OverSIP::Utils.ip_type(value) || :domain @uri_modified = true end alias :domain :host alias :domain= :host= def host_type= value return nil if unknown_scheme? @host_type = value end def port= value return nil if unknown_scheme? @port = value @uri_modified = true end def params @params ||= {} end def has_param? k return nil if unknown_scheme? params.include? k.to_s.downcase end def get_param k return nil if unknown_scheme? params[k.to_s.downcase] end def set_param k, v return nil if unknown_scheme? @params ||= {} @params[k.downcase] = v @uri_modified = true end def del_param k return nil if unknown_scheme? return false unless @params if @params.include?(k=k.downcase) @uri_modified = true return @params.delete(k) end false end def clear_params return nil if unknown_scheme? return false unless @params @params.clear @transport_param = nil @phone_context_param = nil @uri_modified = true true end def transport_param= value return nil unless @scheme == :sip or @scheme == :sips if value @transport_param = value.to_sym set_param "transport", value.to_s else @transport_param = nil del_param "transport" end end def phone_context_param= value return nil unless @scheme == :tel if value @phone_context_param = value.to_sym set_param "phone-context", value.to_s else @phone_context_param = nil del_param "phone-context" end end def lr_param? @lr_param ? true : false end def ob_param? @ob_param ? true : false end def headers= value return nil if unknown_scheme? @headers = value @uri_modified = true end def uri return @uri unless @uri_modified case @scheme when :sip, :sips @uri = @scheme.to_s << ":" ( @uri << ::EscapeUtils.escape_uri(@user) << "@" ) if @user @uri << @host ( @uri << ":" << @port.to_s ) if @port @params.each do |k,v| @uri << ";" << k ( @uri << "=" << v.to_s ) if v end if @params @uri << @headers if @headers when :tel @uri = "tel:" @uri << @user @params.each do |k,v| @uri << ";" << k ( @uri << "=" << v.to_s ) if v end if @params end @uri_modified = false @uri end alias :to_s :uri alias :inspect :uri # Returns a String with the AoR of the URI: # - SIP URI: sip:user@domain. # - TEL URI: tel:number # - Others: nil # def aor case @scheme when :sip, :sips aor = "sip:" ( aor << ::EscapeUtils.escape_uri(@user) << "@" ) if @user aor << @host when :tel aor = "tel:" aor << @user end aor end def modified? @uri_modified end end # class Uri end ================================================ FILE: lib/oversip/syslog.rb ================================================ module OverSIP module Syslog SYSLOG_FACILITY_MAPPING = { "kern" => ::Syslog::LOG_KERN, "user" => ::Syslog::LOG_USER, "daemon" => ::Syslog::LOG_DAEMON, "local0" => ::Syslog::LOG_LOCAL0, "local1" => ::Syslog::LOG_LOCAL1, "local2" => ::Syslog::LOG_LOCAL2, "local3" => ::Syslog::LOG_LOCAL3, "local4" => ::Syslog::LOG_LOCAL4, "local5" => ::Syslog::LOG_LOCAL5, "local6" => ::Syslog::LOG_LOCAL6, "local7" => ::Syslog::LOG_LOCAL7 } SYSLOG_SEVERITY_MAPPING = { "debug" => 0, "info" => 1, "notice" => 2, "warn" => 3, "error" => 4, "crit" => 5, "alert" => 6, "emerg" => 7 } def self.log level_value, msg, log_id, user user = user ? " [user] " : " " msg = case msg when ::String "<#{log_id}>#{user}#{msg}" when ::Exception "<#{log_id}>#{user}#{msg.message} (#{msg.class })\n#{(msg.backtrace || [])[0..3].join("\n")}" else "<#{log_id}>#{user}#{msg.inspect}" end msg = msg.gsub(/%/,"%%").gsub(/\x00/,"") case level_value when 0 ::Syslog.debug sprintf("%7s %s", "DEBUG:", msg) when 1 ::Syslog.info sprintf("%7s %s", "INFO:", msg) when 2 ::Syslog.notice sprintf("%7s %s", "NOTICE:", msg) when 3 ::Syslog.warning sprintf("%7s %s", "WARN:", msg) when 4 ::Syslog.err sprintf("%7s %s", "ERROR:", msg) when 5 ::Syslog.crit sprintf("%7s %s", "CRIT:", msg) when 6 ::Syslog.alert sprintf("%7s %s", "ALERT:", msg) when 7 ::Syslog.emerg sprintf("%7s %s", "EMERG:", msg) else # Shouldn't occur. ::Syslog.err sprintf("%7s %s", "UNKNOWN:", msg) end end end end ================================================ FILE: lib/oversip/system_callbacks.rb ================================================ module OverSIP # This module is intended for 3rd party modules that need custom code to be # executed when OverSIP is started, reloaded or terminated. # module SystemCallbacks extend ::OverSIP::Logger @log_id = "SystemCallbacks" class << self attr_reader :on_started_callbacks attr_reader :on_terminated_callbacks attr_reader :on_reload_callbacks end @on_started_callbacks = [] @on_terminated_callbacks = [] @on_reload_callbacks = [] def self.on_started pr=nil, &bl block = pr || bl raise ::ArgumentError, "no block given" unless block.is_a? ::Proc @on_started_callbacks << block end def self.on_terminated pr=nil, &bl block = pr || bl raise ::ArgumentError, "no block given" unless block.is_a? ::Proc @on_terminated_callbacks << block end def self.on_reload pr=nil, &bl block = pr || bl raise ::ArgumentError, "no block given" unless block.is_a? ::Proc @on_reload_callbacks << block end end end ================================================ FILE: lib/oversip/tls.rb ================================================ module OverSIP module TLS extend ::OverSIP::Logger TLS_PEM_CHAIN_REGEXP = /-{5}BEGIN CERTIFICATE-{5}\n.*?-{5}END CERTIFICATE-{5}\n/m @log_id = "TLS" def self.module_init configuration = ::OverSIP.configuration if configuration[:tls][:public_cert] and configuration[:tls][:private_cert] log_system_info "TLS enabled" ::OverSIP.tls_public_cert = configuration[:tls][:public_cert] ::OverSIP.tls_private_cert = configuration[:tls][:private_cert] else log_system_info "TLS disabled" return end if (ca_dir = configuration[:tls][:ca_dir]) @store = ::OpenSSL::X509::Store.new num_certs_added = 0 ::Dir.chdir ca_dir ca_files = ::Dir["*"] ca_files.select! { |ca_file| ::File.file?(ca_file) and ::File.readable?(ca_file) } ca_files.each do |ca_file| log_system_info "inspecting CA file '#{ca_file}'..." ca_file_content = ::File.read(ca_file) unless ca_file_content.valid_encoding? log_system_error "ignoring '#{ca_file}', invalid symbols found" next end pems = ca_file_content.scan(TLS_PEM_CHAIN_REGEXP).flatten num_pems = pems.size if num_pems == 0 log_system_warn "'#{ca_file}': no public certificates found" next end log_system_info "'#{ca_file}': #{num_pems} public certificates found" now = ::Time.now certs = [] pems.each do |pem| begin certs << ::OpenSSL::X509::Certificate.new(pem) rescue => e log_system_error "ignoring invalid X509 certificate: #{e.message} (#{e.class})" num_pems -= 1 end end certs.reject! { |cert| cert.not_after < now } if certs.size != num_pems log_system_info "'#{ca_file}': ignoring #{num_pems - certs.size} expired certificates" end certs.each do |cert| begin @store.add_cert cert num_certs_added += 1 # This occurs when a certificate is repeated. rescue ::OpenSSL::X509::StoreError => e log_system_warn "'#{ca_file}': ignoring certificate: #{e.message} (#{e.class})" end end end if num_certs_added == 0 log_system_notice "zero public certificates found in '#{ca_dir}' directory, disabling TLS validation" @store = nil end log_system_info "#{num_certs_added} public certificates available for TLS validation" end end # def self.module_init # Return an array with the result of the TLS certificate validation as follows: # cert, validated, tls_error, tls_error_string # where: # - cert: the ::OpenSSL::X509::Certificate instance of the first PEM provided by # the peer, nil otherwise. # - validated: true if the given certificate(s) have been validated, false otherwise # and nil if no certificate is provided by peer or no CA's were configured # for TLS validation. # - tls_error: OpenSSL validation error code (Fixnum) in case of validation error. # - tls_error_string: OpenSSL validation error string in case of validation error. def self.validate pems return nil, nil, nil, "no CAs provided, validation disabled" unless @store return nil, false, nil, "no certificate provided by peer" unless pems.any? pem = pems.pop intermediate_pems = pems begin cert = ::OpenSSL::X509::Certificate.new pem if intermediate_pems and intermediate_pems.any? intermediate_certs = [] intermediate_pems.each do |pem| intermediate_certs << ::OpenSSL::X509::Certificate.new(pem) end else intermediate_certs = nil end if @store.verify cert, intermediate_certs return cert, true else return cert, false, @store.error, @store.error_string end rescue => e log_system_error "exception validating a certificate: #{e.class}: #{e.message}" return nil, false, e.class, e.message end end # def self.validate def self.get_sip_identities cert return [] unless cert verify_subjectAltName_DNS = true verify_CN = true subjectAltName_URI_sip_entries = [] subjectAltName_DNS_entries = [] sip_identities = {} cert.extensions.each do |ext| next if ext.oid != "subjectAltName" verify_CN = false ext.value.split(/,\s+/).each do |name| if /^URI:sip:([^@]*)/i =~ name verify_subjectAltName_DNS = false subjectAltName_URI_sip_entries << $1.downcase elsif verify_subjectAltName_DNS && /^DNS:(.*)/i =~ name subjectAltName_DNS_entries << $1.downcase end end end unless verify_CN unless verify_subjectAltName_DNS subjectAltName_URI_sip_entries.each {|domain| sip_identities[domain] = true} else subjectAltName_DNS_entries.each {|domain| sip_identities[domain] = true} end else cert.subject.to_a.each do |oid, value| if oid == "CN" sip_identities[value.downcase] = true break end end end # Return an array with the SIP identities (domains) in the certificate. return sip_identities.keys end end end ================================================ FILE: lib/oversip/utils.rb ================================================ module OverSIP module Utils # It ensures that two identical byte secuences are matched regardless # they have different encoding. # For example in Ruby the following returns false: # "iñaki".force_encoding(::Encoding::BINARY) == "iñaki" def self.string_compare string1, string2 string1.to_s.force_encoding(::Encoding::BINARY) == string2.to_s.force_encoding(::Encoding::BINARY) end # This avoid "invalid byte sequence in UTF-8" when the directly doing: # string =~ /EXPRESSION/ # and string has invalid UTF-8 bytes secuence. # Also avoids "incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)" # NOTE: expression argument must be a String or a Regexp. def self.regexp_compare string, expression string = string.to_s.force_encoding(::Encoding::BINARY) if expression.is_a? ::Regexp expression = /#{expression.source.force_encoding(::Encoding::BINARY)}/ else expression = /#{expression.to_s.force_encoding(::Encoding::BINARY)}/ end string =~ expression end end end ================================================ FILE: lib/oversip/version.rb ================================================ # -*- encoding: utf-8 -*- module OverSIP module Version MAJOR = 2 MINOR = 0 TINY = 4 DEVEL = nil # Set to nil for stable releases. end PROGRAM_NAME = "OverSIP" VERSION = [Version::MAJOR, Version::MINOR, Version::TINY].join(".") VERSION << ".#{Version::DEVEL}" if Version::DEVEL AUTHOR = "Inaki Baz Castillo" AUTHOR_EMAIL = "ibc@aliax.net" HOMEPAGE = "http://oversip.net" year = "2012-2014" DESCRIPTION = "#{PROGRAM_NAME} #{VERSION}\n#{HOMEPAGE}\n#{year}, #{AUTHOR} <#{AUTHOR_EMAIL}>" end ================================================ FILE: lib/oversip/websocket/constants.rb ================================================ module OverSIP::WebSocket CRLF = "\r\n" REASON_PHRASE = { 100 => "Continue", 101 => "Switching Protocols", 200 => "OK", 201 => "Created", 202 => "Accepted", 203 => "Non-Authoritative Information", 204 => "No Content", 205 => "Reset Content", 206 => "Partial Content", 300 => "Multiple Choices", 301 => "Moved Permanently", 302 => "Found", 303 => "See Other", 304 => "Not Modified", 305 => "Use Proxy", 307 => "Temporary Redirect", 400 => "Bad Request", 401 => "Unauthorized", 402 => "Payment Required", 403 => "Forbidden", 404 => "Not Found", 405 => "Method Not Allowed", 406 => "Not Acceptable", 407 => "Proxy Authentication Required", 408 => "Request Timeout", 409 => "Conflict", 410 => "Gone", 411 => "Length Required", 412 => "Precondition Failed", 413 => "Request Entity Too Large", 414 => "Request-URI Too Long", 415 => "Unsupported Media Type", 416 => "Requested Range Not Satisfiable", 417 => "Expectation Failed", 426 => "Upgrade Required", # RFC 2817 500 => "Server Internal Error", 501 => "Not Implemented", 502 => "Bad Gateway", 503 => "Service Unavailable", 504 => "Gateway Time-out", 505 => "HTTP Version Not Supported" } REASON_PHRASE_NOT_SET = "Reason Phrase Not Set" HDR_SERVER = "Server: #{::OverSIP::PROGRAM_NAME}/#{::OverSIP::VERSION}".freeze WS_SIP_PROTOCOL = "sip" end ================================================ FILE: lib/oversip/websocket/http_request.rb ================================================ module OverSIP::WebSocket class HttpRequest < ::Hash include ::OverSIP::Logger attr_accessor :connection # HTTP request attributes. attr_reader :http_method attr_reader :http_version attr_reader :uri_scheme attr_reader :uri attr_reader :uri_path attr_reader :uri_query attr_reader :uri_fragment attr_reader :host attr_reader :port attr_reader :content_length attr_reader :hdr_connection attr_reader :hdr_upgrade attr_reader :hdr_origin attr_reader :hdr_sec_websocket_version attr_reader :hdr_sec_websocket_key attr_reader :hdr_sec_websocket_protocol LOG_ID = "HTTP WS Request" def log_id LOG_ID end def unknown_method? ; @is_unknown_method end def reply status_code, reason_phrase=nil, extra_headers={} reason_phrase ||= REASON_PHRASE[status_code] || REASON_PHRASE_NOT_SET extra_headers ||= {} response = "#{@http_version} #{status_code} #{reason_phrase}\r\n" extra_headers.each {|header| response << header << "\r\n"} response << HDR_SERVER << "\r\n\r\n" log_system_debug "replying #{status_code} \"#{reason_phrase}\"" if $oversip_debug if @connection.error? log_system_warn "cannot send response, connection is closed" return false end @connection.send_data response return true end end end ================================================ FILE: lib/oversip/websocket/launcher.rb ================================================ module OverSIP::WebSocket module Launcher extend ::OverSIP::Logger IP_TYPE = { :ipv4 => "IPv4", :ipv6 => "IPv6" } @log_id = "WebSocket launcher" def self.run enabled, ip_type, ip, port, transport, virtual_ip=nil, virtual_port=nil uri_ip = case ip_type when :ipv4 ; ip when :ipv6 ; "[#{ip}]" end if virtual_ip uri_virtual_ip = case ip_type when :ipv4 ; virtual_ip when :ipv6 ; "[#{virtual_ip}]" end end klass = case transport when :ws case ip_type when :ipv4 ; ::OverSIP::WebSocket::IPv4WsServer when :ipv6 ; ::OverSIP::WebSocket::IPv6WsServer end when :wss case ip_type when :ipv4 ; ::OverSIP::WebSocket::IPv4WssServer when :ipv6 ; ::OverSIP::WebSocket::IPv6WssServer end when :wss_tunnel case ip_type when :ipv4 ; ::OverSIP::WebSocket::IPv4WssTunnelServer when :ipv6 ; ::OverSIP::WebSocket::IPv6WssTunnelServer end end klass.ip = virtual_ip || ip klass.port = virtual_port || port case when klass == ::OverSIP::WebSocket::IPv4WsServer if ::OverSIP.configuration[:websocket][:advertised_ipv4] used_uri_host = ::OverSIP.configuration[:websocket][:advertised_ipv4] else used_uri_host = uri_ip end klass.via_core = "SIP/2.0/WS #{used_uri_host}:#{port}" klass.record_route = "" klass.outbound_record_route_fragment = "@#{used_uri_host}:#{port};transport=ws;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid}>" klass.outbound_path_fragment = "@#{used_uri_host}:#{port};transport=ws;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid};ob>" if enabled ::EM.start_server(ip, port, klass) do |conn| conn.post_connection conn.set_comm_inactivity_timeout 7200 end end when klass == ::OverSIP::WebSocket::IPv6WsServer if ::OverSIP.configuration[:websocket][:advertised_ipv6] used_uri_host = "[#{::OverSIP.configuration[:websocket][:advertised_ipv6]}]" else used_uri_host = uri_ip end klass.via_core = "SIP/2.0/WS #{used_uri_host}:#{port}" klass.record_route = "" klass.outbound_record_route_fragment = "@#{used_uri_host}:#{port};transport=ws;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid}>" klass.outbound_path_fragment = "@#{used_uri_host}:#{port};transport=ws;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid};ob>" if enabled ::EM.start_server(ip, port, klass) do |conn| conn.post_connection conn.set_comm_inactivity_timeout 7200 end end when klass == ::OverSIP::WebSocket::IPv4WssServer if ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv4] used_uri_host = ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv4] elsif ::OverSIP.configuration[:websocket][:advertised_ipv4] used_uri_host = ::OverSIP.configuration[:websocket][:advertised_ipv4] else used_uri_host = uri_ip end klass.via_core = "SIP/2.0/WS #{used_uri_host}:#{port}" klass.record_route = "" klass.outbound_record_route_fragment = "@#{used_uri_host}:#{port};transport=ws;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid}>" klass.outbound_path_fragment = "@#{used_uri_host}:#{port};transport=ws;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid};ob>" if enabled ::EM.start_server(ip, port, klass) do |conn| conn.post_connection conn.set_comm_inactivity_timeout 7200 end end when klass == ::OverSIP::WebSocket::IPv6WssServer if ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv6] used_uri_host = ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv6] elsif ::OverSIP.configuration[:websocket][:advertised_ipv6] used_uri_host = "[#{::OverSIP.configuration[:websocket][:advertised_ipv6]}]" else used_uri_host = uri_ip end klass.via_core = "SIP/2.0/WS #{used_uri_host}:#{port}" klass.record_route = "" klass.outbound_record_route_fragment = "@#{used_uri_host}:#{port};transport=ws;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid}>" klass.outbound_path_fragment = "@#{used_uri_host}:#{port};transport=ws;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid};ob>" if enabled ::EM.start_server(ip, port, klass) do |conn| conn.post_connection conn.set_comm_inactivity_timeout 7200 end end when klass == ::OverSIP::WebSocket::IPv4WssTunnelServer if ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv4] used_uri_host = ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv4] elsif ::OverSIP.configuration[:websocket][:advertised_ipv4] used_uri_host = ::OverSIP.configuration[:websocket][:advertised_ipv4] else used_uri_host = uri_virtual_ip end klass.via_core = "SIP/2.0/WSS #{used_uri_host}:#{virtual_port}" klass.record_route = "" klass.outbound_record_route_fragment = "@#{used_uri_host}:#{virtual_port};transport=wss;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid}>" klass.outbound_path_fragment = "@#{used_uri_host}:#{virtual_port};transport=wss;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid};ob>" if enabled ::EM.start_server(ip, port, klass) do |conn| conn.post_connection conn.set_comm_inactivity_timeout 7200 end end when klass == ::OverSIP::WebSocket::IPv6WssTunnelServer if ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv6] used_uri_host = ::OverSIP.configuration[:sip][:record_route_hostname_tls_ipv6] elsif ::OverSIP.configuration[:websocket][:advertised_ipv6] used_uri_host = "[#{::OverSIP.configuration[:websocket][:advertised_ipv6]}]" else used_uri_host = uri_virtual_ip end klass.via_core = "SIP/2.0/WSS #{used_uri_host}:#{virtual_port}" klass.record_route = "" klass.outbound_record_route_fragment = "@#{used_uri_host}:#{virtual_port};transport=wss;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid}>" klass.outbound_path_fragment = "@#{used_uri_host}:#{virtual_port};transport=wss;lr;ovid=#{OverSIP::SIP::Tags.value_for_route_ovid};ob>" if enabled ::EM.start_server(ip, port, klass) do |conn| conn.post_connection conn.set_comm_inactivity_timeout 7200 end end end # case transport_str = case transport when :tls_tunnel ; "TLS-Tunnel" else ; transport.to_s.upcase end if enabled log_system_info "WebSocket #{transport_str} server listening on #{IP_TYPE[ip_type]} #{uri_ip}:#{port} provides '#{::OverSIP::WebSocket::WS_SIP_PROTOCOL}' WS subprotocol" end end # def self.run end end ================================================ FILE: lib/oversip/websocket/listeners/connection.rb ================================================ module OverSIP::WebSocket class Connection < ::EM::Connection include ::OverSIP::Logger include ::OverSIP::SIP::MessageProcessor class << self attr_accessor :ip_type, :ip, :port, :transport, :via_core, :record_route, :outbound_record_route_fragment, :outbound_path_fragment, :connections, :invite_server_transactions, :non_invite_server_transactions, :invite_client_transactions, :non_invite_client_transactions def reliable_transport_listener? @is_reliable_transport_listener end def outbound_listener? @is_outbound_listener end end attr_reader :cvars def initialize @buffer = ::IO::Buffer.new @state = :init @cvars = {} end def open? ! error? end def close status=nil, reason=nil # When in WebSocket protocol send a close control frame before closing # the connection. if @state == :websocket @ws_framing.send_close_frame status, reason end close_connection_after_writing @state = :ignore end end end ================================================ FILE: lib/oversip/websocket/listeners/ipv4_ws_server.rb ================================================ module OverSIP::WebSocket class IPv4WsServer < WsServer @ip_type = :ipv4 @transport = :ws @connections = {} @invite_server_transactions = {} @non_invite_server_transactions = {} @invite_client_transactions = {} @non_invite_client_transactions = {} @is_reliable_transport_listener = true @is_outbound_listener = true LOG_ID = "SIP WS IPv4 server" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/websocket/listeners/ipv4_wss_server.rb ================================================ module OverSIP::WebSocket class IPv4WssServer < WssServer @ip_type = :ipv4 @transport = :wss @connections = {} @invite_server_transactions = {} @non_invite_server_transactions = {} @invite_client_transactions = {} @non_invite_client_transactions = {} @is_reliable_transport_listener = true @is_outbound_listener = true LOG_ID = "SIP WSS IPv4 server" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/websocket/listeners/ipv4_wss_tunnel_server.rb ================================================ module OverSIP::WebSocket class IPv4WssTunnelServer < WssTunnelServer @ip_type = :ipv4 @transport = :wss @connections = {} @invite_server_transactions = {} @non_invite_server_transactions = {} @invite_client_transactions = {} @non_invite_client_transactions = {} @is_reliable_transport_listener = true @is_outbound_listener = true LOG_ID = "SIP WSS-Tunnel IPv4 server" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/websocket/listeners/ipv6_ws_server.rb ================================================ module OverSIP::WebSocket class IPv6WsServer < WsServer @ip_type = :ipv6 @transport = :ws @connections = {} @invite_server_transactions = {} @non_invite_server_transactions = {} @invite_client_transactions = {} @non_invite_client_transactions = {} @is_reliable_transport_listener = true @is_outbound_listener = true LOG_ID = "SIP WS IPv6 server" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/websocket/listeners/ipv6_wss_server.rb ================================================ module OverSIP::WebSocket class IPv6WssServer < WssServer @ip_type = :ipv6 @transport = :wss @connections = {} @invite_server_transactions = {} @non_invite_server_transactions = {} @invite_client_transactions = {} @non_invite_client_transactions = {} @is_reliable_transport_listener = true @is_outbound_listener = true LOG_ID = "SIP WSS IPv6 server" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/websocket/listeners/ipv6_wss_tunnel_server.rb ================================================ module OverSIP::WebSocket class IPv6WssTunnelServer < WssTunnelServer @ip_type = :ipv6 @transport = :wss @connections = {} @invite_server_transactions = {} @non_invite_server_transactions = {} @invite_client_transactions = {} @non_invite_client_transactions = {} @is_reliable_transport_listener = true @is_outbound_listener = true LOG_ID = "SIP WSS-Tunnel IPv6 server" def log_id LOG_ID end end end ================================================ FILE: lib/oversip/websocket/listeners/ws_server.rb ================================================ module OverSIP::WebSocket class WsServer < Connection # Max size (bytes) of the buffered data when receiving HTTP headers # (avoid DoS attacks). HEADERS_MAX_SIZE = 2048 WS_MAGIC_GUID_04 = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11".freeze WS_VERSIONS = { 7=>true, 8=>true, 13=>true } HDR_SUPPORTED_WEBSOCKET_VERSIONS = [ "X-Supported-WebSocket-Versions: #{WS_VERSIONS.keys.join(", ")}" ] attr_reader :outbound_flow_token attr_writer :ws_established, :client_closed def remote_ip_type @remote_ip_type || self.class.ip_type end def remote_ip @remote_ip end def remote_port @remote_port end def transport self.class.transport end def post_connection begin @remote_port, @remote_ip = ::Socket.unpack_sockaddr_in(get_peername) rescue => e log_system_error "error obtaining remote IP/port (#{e.class}: #{e.message}), closing connection" close_connection @state = :ignore return end @connection_id = ::OverSIP::SIP::TransportManager.add_connection self, self.class, self.class.ip_type, @remote_ip, @remote_port # Create an Outbound (RFC 5626) flow token for this connection. @outbound_flow_token = ::OverSIP::SIP::TransportManager.add_outbound_connection self log_system_debug("connection opened from " << remote_desc) if $oversip_debug end def remote_desc force=nil if force @remote_desc = case @remote_ip_type when :ipv4 ; "#{@remote_ip}:#{@remote_port.to_s}" when :ipv6 ; "[#{@remote_ip}]:#{@remote_port.to_s}" end else @remote_desc ||= case self.class.ip_type when :ipv4 ; "#{@remote_ip}:#{@remote_port.to_s}" when :ipv6 ; "[#{@remote_ip}]:#{@remote_port.to_s}" end end end def unbind cause=nil @state = :ignore # Remove the connection. self.class.connections.delete @connection_id # Remove the Outbound token flow. ::OverSIP::SIP::TransportManager.delete_outbound_connection @outbound_flow_token @local_closed = true if cause == ::Errno::ETIMEDOUT @local_closed = false if @client_closed if $oversip_debug log_msg = "connection from #{remote_desc} " log_msg << ( @local_closed ? "locally closed" : "remotely closed" ) log_msg << " (cause: #{cause.inspect})" if cause log_system_debug log_msg end unless $! if @ws_established # Run OverSIP::WebSocketEvents.on_disconnection ::Fiber.new do begin ::OverSIP::WebSocketEvents.on_disconnection self, !@local_closed rescue ::Exception => e log_system_error "error calling OverSIP::WebSocketEvents.on_disconnection():" log_system_error e end end.resume end unless $! end def receive_data data @state == :ignore and return @buffer << data @state == :waiting_for_on_client_tls_handshake and return @state == :waiting_for_on_connection and return process_received_data end def process_received_data @state == :ignore and return while (case @state when :init @http_parser = ::OverSIP::WebSocket::HttpRequestParser.new @http_request = ::OverSIP::WebSocket::HttpRequest.new @http_parser_nbytes = 0 @bytes_remaining = 0 @state = :http_headers when :http_headers parse_http_headers when :check_http_request check_http_request when :on_connection_callback do_on_connection_callback false when :accept_ws_handshake accept_ws_handshake when :websocket @ws_established = true @ws_framing.receive_data false when :ignore false end) end # while end def parse_http_headers return false if @buffer.empty? # Parse the currently buffered data. If parsing fails @http_parser_nbytes gets nil value. unless @http_parser_nbytes = @http_parser.execute(@http_request, @buffer.to_str, @http_parser_nbytes) log_system_warn "parsing error: \"#{@http_parser.error}\"" close_connection_after_writing @state = :ignore return false end # Avoid flood attacks in TCP (very long headers). if @http_parser_nbytes > HEADERS_MAX_SIZE log_system_warn "DoS attack detected: headers size exceedes #{HEADERS_MAX_SIZE} bytes, closing connection with #{remote_desc}" close_connection @state = :ignore return false end return false unless @http_parser.finished? # Clear parsed data from the buffer. @buffer.read(@http_parser_nbytes) @http_request.connection = self @state = :check_http_request true end # parse_headers def check_http_request # Check OverSIP status. unless ::OverSIP.status == :running case ::OverSIP.status when :loading http_reject 500, "Server Still Loading", [ "Retry-After: 5" ] when :terminating http_reject 500, "Server is Being Stopped" end return false end # HTTP method must be GET. if @http_request.http_method != :GET log_system_notice "rejecting HTTP #{@http_request.http_method} request => 405" http_reject 405 return false end # "Sec-WebSocket-Version" must be 8. unless WS_VERSIONS[@http_request.hdr_sec_websocket_version] if @http_request.hdr_sec_websocket_version log_system_notice "WebSocket version #{@http_request.hdr_sec_websocket_version} not implemented => 426" else log_system_notice "WebSocket version header not present => 426" end http_reject 426, nil, HDR_SUPPORTED_WEBSOCKET_VERSIONS return false end # Connection header must include "upgrade". unless @http_request.hdr_connection and @http_request.hdr_connection.include? "upgrade" log_system_notice "Connection header must include \"upgrade\" => 400" http_reject 400, "Connection header must include \"upgrade\"" return false end # "Upgrade: websocket" is required. unless @http_request.hdr_upgrade == "websocket" log_system_notice "Upgrade header must be \"websocket\" => 400" http_reject 400, "Upgrade header must be \"websocket\"" return false end # Sec-WebSocket-Key is required. unless @http_request.hdr_sec_websocket_key log_system_notice "Sec-WebSocket-Key header not present => 400" http_reject 400, "Sec-WebSocket-Key header not present" return false end # Check Sec-WebSocket-Protocol. if @http_request.hdr_sec_websocket_protocol if @http_request.hdr_sec_websocket_protocol.include? WS_SIP_PROTOCOL @websocket_protocol_negotiated = true else log_system_notice "Sec-WebSocket-Protocol does not contain a supported protocol but #{@http_request.hdr_sec_websocket_protocol} => 501" http_reject 501, "No Suitable WebSocket Protocol" return false end end @state = :on_connection_callback true end def do_on_connection_callback # Set the state to :waiting_for_on_connection so data received before # user callback validation is just stored. @state = :waiting_for_on_connection # Run OverSIP::WebSocketEvents.on_connection. ::Fiber.new do begin log_system_debug "running OverSIP::WebSocketEvents.on_connection()..." if $oversip_debug ::OverSIP::WebSocketEvents.on_connection self, @http_request # If the user of the peer has not closed the connection then continue. unless @local_closed or error? @state = :accept_ws_handshake # Call process_received_data() to process possible data received in the meanwhile. process_received_data else log_system_debug "connection closed during OverSIP::WebSocketEvents.on_connection(), aborting" if $oversip_debug end rescue ::Exception => e log_system_error "error calling OverSIP::WebSocketEvents.on_connection() => 500:" log_system_error e http_reject 500 end end.resume end def accept_ws_handshake sec_websocket_accept = Digest::SHA1::base64digest @http_request.hdr_sec_websocket_key + WS_MAGIC_GUID_04 extra_headers = [ "Upgrade: websocket", "Connection: Upgrade", "Sec-WebSocket-Accept: #{sec_websocket_accept}" ] if @websocket_protocol_negotiated extra_headers << "Sec-WebSocket-Protocol: #{WS_SIP_PROTOCOL}" end if @websocket_extensions extra_headers << "Sec-WebSocket-Extensions: #{@websocket_extensions.to_s}" end @http_request.reply 101, nil, extra_headers # Set the WS framing layer and WS application layer. @ws_framing = ::OverSIP::WebSocket::WsFraming.new self, @buffer ws_sip_app = ::OverSIP::WebSocket::WsSipApp.new self, @ws_framing @ws_framing.ws_app = ws_sip_app @state = :websocket true end def http_reject status_code=403, reason_phrase=nil, extra_headers=nil @http_request.reply(status_code, reason_phrase, extra_headers) close_connection_after_writing @state = :ignore end # Parameters ip and port are just included because they are needed in UDP, so the API remains equal. def send_sip_msg msg, ip=nil, port=nil if self.error? log_system_notice "SIP message could not be sent, connection is closed" return false end # If the SIP message is fully valid UTF-8 send a WS text frame. if msg.force_encoding(::Encoding::UTF_8).valid_encoding? @ws_framing.send_text_frame msg # If not, send a WS binary frame. else @ws_framing.send_binary_frame msg end true end end end ================================================ FILE: lib/oversip/websocket/listeners/wss_server.rb ================================================ module OverSIP::WebSocket class WssServer < WsServer TLS_HANDSHAKE_MAX_TIME = 4 def post_init @client_pems = [] @client_last_pem = false start_tls({ :verify_peer => true, :cert_chain_file => ::OverSIP.tls_public_cert, :private_key_file => ::OverSIP.tls_private_cert, :ssl_version => %w(sslv2) # USE SSL instead of TLS. TODO: yes? }) # If the remote client does never send us a TLS certificate # after the TCP connection we would leak by storing more and # more messages in @pending_messages array. @timer_tls_handshake = ::EM::Timer.new(TLS_HANDSHAKE_MAX_TIME) do unless @connected log_system_notice "TLS handshake not performed within #{TLS_HANDSHAKE_MAX_TIME} seconds, closing the connection" close_connection end end end def ssl_verify_peer pem # TODO: Dirty workaround for bug https://github.com/eventmachine/eventmachine/issues/194. return true if @client_last_pem == pem @client_last_pem = pem @client_pems << pem log_system_debug "received certificate num #{@client_pems.size} from client" if $oversip_debug # Validation must be done in ssl_handshake_completed after receiving all the certs, so return true. return true end def ssl_handshake_completed log_system_debug ("TLS connection established from " << remote_desc) if $oversip_debug # @connected in WssServer means "TLS connection" rather than # just "TCP connection". @connected = true @timer_tls_handshake.cancel if @timer_tls_handshake if ::OverSIP::WebSocket.callback_on_client_tls_handshake # Set the state to :waiting_for_on_client_tls_handshake so data received after TLS handshake but before # user callback validation is just stored. @state = :waiting_for_on_client_tls_handshake # Run OverSIP::WebSocketEvents.on_client_tls_handshake. ::Fiber.new do begin log_system_debug "running OverSIP::SipWebSocketEvents.on_client_tls_handshake()..." if $oversip_debug ::OverSIP::WebSocketEvents.on_client_tls_handshake self, @client_pems # If the user of the peer has not closed the connection then continue. unless @local_closed or error? @state = :init # Call process_received_data() to process possible data received in the meanwhile. process_received_data else log_system_debug "connection closed during OverSIP::SipWebSocketEvents.on_client_tls_handshake(), aborting" if $oversip_debug end rescue ::Exception => e log_system_error "error calling OverSIP::WebSocketEvents.on_client_tls_handshake():" log_system_error e close_connection end end.resume end end def unbind cause=nil @timer_tls_handshake.cancel if @timer_tls_handshake super end end end ================================================ FILE: lib/oversip/websocket/listeners/wss_tunnel_server.rb ================================================ module OverSIP::WebSocket class WssTunnelServer < WsServer def post_connection begin # Temporal @remote_ip and @remote_port until the HAProxy protocol line is parsed. @remote_port, @remote_ip = ::Socket.unpack_sockaddr_in(get_peername) rescue => e log_system_error "error obtaining remote IP/port (#{e.class}: #{e.message}), closing connection" close_connection @state = :ignore return end # Create an Outbound (RFC 5626) flow token for this connection. @outbound_flow_token = ::OverSIP::SIP::TransportManager.add_outbound_connection self log_system_debug ("connection from the TLS tunnel " << remote_desc) if $oversip_debug end def unbind cause=nil @state = :ignore # Remove the connection. self.class.connections.delete @connection_id if @connection_id # Remove the Outbound token flow. ::OverSIP::SIP::TransportManager.delete_outbound_connection @outbound_flow_token @local_closed = true if cause == ::Errno::ETIMEDOUT @local_closed = false if @client_closed if $oversip_debug log_msg = "connection from the TLS tunnel #{remote_desc} " log_msg << ( @local_closed ? "locally closed" : "remotely closed" ) log_msg << " (cause: #{cause.inspect})" if cause log_system_debug log_msg end unless $! if @ws_established # Run OverSIP::WebSocketEvents.on_disconnection ::Fiber.new do begin ::OverSIP::WebSocketEvents.on_disconnection self, !@local_closed rescue ::Exception => e log_system_error "error calling OverSIP::WebSocketEvents.on_disconnection():" log_system_error e end end.resume end unless $! end def process_received_data @state == :ignore and return while (case @state when :init @http_parser = ::OverSIP::WebSocket::HttpRequestParser.new @http_request = ::OverSIP::WebSocket::HttpRequest.new @http_parser.reset @http_parser_nbytes = 0 @bytes_remaining = 0 # If it's a TCP connection from the TLS proxy then parse the HAProxy Protocol line # if it's not yet done. unless @haproxy_protocol_parsed @state = :haproxy_protocol else @state = :http_headers end when :haproxy_protocol parse_haproxy_protocol when :http_headers parse_http_headers when :check_http_request check_http_request when :on_connection_callback do_on_connection_callback false when :accept_ws_handshake accept_ws_handshake when :websocket @ws_established = true return false if @buffer.size.zero? @ws_framing.receive_data false when :ignore false end) end # while end def parse_haproxy_protocol if (haproxy_protocol_data = ::OverSIP::Utils.parse_haproxy_protocol(@buffer.to_str)) @haproxy_protocol_parsed = true # Update connection information. @remote_ip_type = haproxy_protocol_data[1] @remote_ip = haproxy_protocol_data[2] @remote_port = haproxy_protocol_data[3] # Update log information. remote_desc true # Remove the HAProxy Protocol line from the received data. @buffer.read haproxy_protocol_data[0] @state = :http_headers # If parsing fails then the TLS proxy has sent us a wrong HAProxy Protocol line ¿? else log_system_error "HAProxy Protocol parsing error, closing connection" close_connection_after_writing @state = :ignore return false end end end end ================================================ FILE: lib/oversip/websocket/listeners.rb ================================================ # OverSIP files require "oversip/websocket/listeners/connection" require "oversip/websocket/listeners/ws_server" require "oversip/websocket/listeners/wss_server" require "oversip/websocket/listeners/wss_tunnel_server" require "oversip/websocket/listeners/ipv4_ws_server" require "oversip/websocket/listeners/ipv6_ws_server" require "oversip/websocket/listeners/ipv4_wss_server" require "oversip/websocket/listeners/ipv6_wss_server" require "oversip/websocket/listeners/ipv4_wss_tunnel_server" require "oversip/websocket/listeners/ipv6_wss_tunnel_server" ================================================ FILE: lib/oversip/websocket/websocket.rb ================================================ module OverSIP::WebSocket def self.module_init conf = ::OverSIP.configuration @callback_on_client_tls_handshake = conf[:websocket][:callback_on_client_tls_handshake] end def self.callback_on_client_tls_handshake @callback_on_client_tls_handshake end end ================================================ FILE: lib/oversip/websocket/ws_framing.rb ================================================ module OverSIP::WebSocket class WsFraming include ::OverSIP::Logger OPCODE = { 0 => :continuation, 1 => :text, 2 => :binary, 8 => :close, 9 => :ping, 10 => :pong } keepalive_ping_frame = "".encode ::Encoding::BINARY keepalive_ping_frame << 137 keepalive_ping_frame << "keep-alive".bytesize keepalive_ping_frame << "keep-alive".encode(::Encoding::BINARY) KEEPALIVE_PING_FRAME = keepalive_ping_frame def self.class_init @@max_frame_size = ::OverSIP.configuration[:websocket][:max_ws_frame_size] end attr_writer :ws_app LOG_ID = "WsFraming" def log_id LOG_ID end def initialize connection, buffer @connection = connection @buffer = buffer @utf8_validator = ::OverSIP::WebSocket::FramingUtils::Utf8Validator.allocate @state = :init end def do_keep_alive interval @keep_alive_timer = ::EM::PeriodicTimer.new(interval) do unless @connection.error? # Ensure it. log_system_debug "sending keep-alive ping frame" if $oversip_debug @connection.send_data KEEPALIVE_PING_FRAME else @keep_alive_timer.cancel end end end def receive_data while (case @state when :init return false if @buffer.size < 2 byte1 = @buffer.read(1).getbyte(0) byte2 = @buffer.read(1).getbyte(0) # FIN is the bit 0. @fin = (byte1 & 0b10000000) == 0b10000000 # RSV1-3 are bits 1-3. @rsv1 = (byte1 & 0b01000000) == 0b01000000 @rsv2 = (byte1 & 0b00100000) == 0b00100000 @rsv3 = (byte1 & 0b00010000) == 0b00010000 if @rsv1 or @rsv2 or @rsv3 log_system_notice "frame has RSV bits set, clossing the connection" @connection.close 1002, "RSV bit set not supported" return false end # opcode are bits 4-7. @opcode = byte1 & 0b00001111 unless (@sym_opcode = OPCODE[@opcode]) @connection.close 1002, "unknown opcode=#{@opcode}" return false end # MASK is bit 8. @mask = (byte2 & 0b10000000) == 0b10000000 unless @mask @connection.close 1002, "MASK bit not set" return false end # payload_len are bits 9-15. length = byte2 & 0b01111111 case length # Length defined by 8 bytes. when 127 @state = :payload_length_8_bytes # Length defined by 2 bytes. when 126 @state = :payload_length_2_bytes # Length defined by already received 7 bits. else @payload_length = length @state = :masking_key end @payload = nil true when :payload_length_2_bytes return false if @buffer.size < 2 # Get the payload length and remove first two bytes fro # the buffer at the same time. @payload_length = @buffer.read(2).unpack('n').first @state = :masking_key true when :payload_length_8_bytes return false if @buffer.size < 8 # Get the payload length. # NOTE: Just take the last 4 bytes (4 GB frame is enough!!!), # Check that first 4 bytes are 0000. If not then the frame is bigger # than 4 GB and must be rejected! if @buffer.read(4).unpack('N').first != 0 log_system_notice "frame size bigger than 4 GB, rejected" @connection.close 1008 return false end @payload_length = @buffer.read(4).unpack('N').first @state = :masking_key true when :masking_key return false if @buffer.size < 4 # Get the masking key (4 bytes) and remove first 4 bytes # from the buffer. @masking_key = @buffer.read(4) @state = :check_frame true when :check_frame # All control frames MUST have a payload length of 125 bytes or # less and MUST NOT be fragmented. if control_frame? and @payload_length > 125 log_system_notice "received invalid control frame (payload_length > 125), sending close frame" @connection.close 1002 return false end if control_frame? and not @fin log_system_notice "received invalid control frame (FIN=0), sending close frame" @connection.close 1002, "forbidden FIN=0 in control frame" return false end # A continuation frame can only arrive if previously a text/binary frame # arrived with FIN=0. if continuation_frame? and not @msg_sym_opcode log_system_notice "invalid continuation frame received (no previous unfinished message), sending close frame" @connection.close 1002, "invalid continuation frame received" return false end # If a previous frame had FIN=0 and opcode=text/binary, then it cannot arrive # a new frame with opcode=text/binary. if @msg_sym_opcode and text_or_binary_frame? log_system_notice "invalid text/binary frame received (expecting a continuation frame), sending close frame" @connection.close 1002, "expected a continuation frame" return false end # Check max frame size. if @payload_length > @@max_frame_size @connection.close 1009, "frame too big" return false end @state = :payload_data true when :payload_data return false if @buffer.size < @payload_length unless @payload_length.zero? # NOTE: @payload will always be Encoding::BINARY @payload = ::OverSIP::WebSocket::FramingUtils.unmask @buffer.read(@payload_length), @masking_key end # NOTE: @payload could be nil. @state = :process_frame true when :process_frame # Set it here as it could be changed later in this block. @state = :init case @sym_opcode when :text log_system_debug "received text frame: FIN=#{@fin}, RSV1-3=#{@rsv1}/#{@rsv2}/#{@rsv3}, payload_length=#{@payload_length}" if $oversip_debug # Store the opcode of the first frame (if there is more frames for same message # they will have opcode=continuation). @msg_sym_opcode = @sym_opcode # Reset the UTF8 validator. @utf8_validator.reset if @payload if (valid_utf8 = @utf8_validator.validate(@payload)) == false log_system_notice "received single text frame contains invalid UTF-8, closing the connection" @connection.close 1007, "single text frame contains invalid UTF-8" return false end if @fin and not valid_utf8 log_system_notice "received single text frame contains incomplete UTF-8, closing the connection" @connection.close 1007, "single text frame contains incomplete UTF-8" return false end # If @ws_app.receive_payload_data returns false it means that total # message size is too big. unless @ws_app.receive_payload_data @payload @connection.close 1009, "message too big" return false end end # If message is finished tell it to the WS application. if @fin @ws_app.message_done @msg_sym_opcode @msg_sym_opcode = nil end when :binary log_system_debug "received binary frame: FIN=#{@fin}, RSV1-3=#{@rsv1}/#{@rsv2}/#{@rsv3}, payload_length=#{@payload_length}" if $oversip_debug # Store the opcode of the first frame (if there is more frames for same message # they will have opcode=continuation). @msg_sym_opcode = @sym_opcode if @payload # If @ws_app.receive_payload_data returns false it means that total # message size is too big. unless @ws_app.receive_payload_data @payload @connection.close 1009, "message too big" return false end end # If message is finished tell it to the WS application. if @fin @ws_app.message_done @msg_sym_opcode @msg_sym_opcode = nil end when :continuation log_system_debug "received continuation frame: FIN=#{@fin}, RSV1-3=#{@rsv1}/#{@rsv2}/#{@rsv3}, payload_length=#{@payload_length}" if $oversip_debug if @payload if @msg_sym_opcode == :text if (valid_utf8 = @utf8_validator.validate(@payload)) == false log_system_notice "received continuation text frame contains invalid UTF-8, closing the connection" @connection.close 1007, "continuation text frame contains invalid UTF-8" return false end if @fin and not valid_utf8 log_system_notice "received continuation final text frame contains incomplete UTF-8, closing the connection" @connection.close 1007, "continuation final text frame contains incomplete UTF-8" return false end end return false unless @ws_app.receive_payload_data @payload end # If message is finished tell it to the WS application. if @fin @ws_app.message_done @msg_sym_opcode @msg_sym_opcode = nil end when :close if @payload_length >= 2 status = "" status << @payload.getbyte(0) << @payload.getbyte(1) status = status.unpack('n').first if (reason = @payload[2..-1]) # Reset the UTF8 validator. @utf8_validator.reset # The UTF-8 validator returns: # - true: Valid UTF-8 string. # - nil: Valid but not terminated UTF-8 string. # - false: Invalid UTF-8 string. # So it must be true for the close frame reason. unless @utf8_validator.validate(reason) log_system_notice "received close frame with invalid UTF-8 data in the reason: status=#{status.inspect}" @connection.close 1007, "close frame reason contains incomplete UTF-8" return false end end else status = nil end case status when 1002 log_system_notice "received close frame due to WS protocol error: status=1002, reason=#{reason.inspect}" when 1003 log_system_notice "received close frame due to sent data type: status=1003, reason=#{reason.inspect}" when 1007 log_system_notice "received close frame due to non valid UTF-8 data sent: status=1007, reason=#{reason.inspect}" when 1009 log_system_notice "received close frame due to too big message sent: status=1009, reason=#{reason.inspect}" when 1010 log_system_notice "received close frame due to extensions negotiation failure: status=1010, reason=#{reason.inspect}" else log_system_debug "received close frame: status=#{status.inspect}, reason=#{reason.inspect}" if $oversip_debug end @connection.client_closed = true @connection.close nil, nil return false when :ping log_system_debug "received ping frame: payload_length=#{@payload_length}" if $oversip_debug send_pong_frame @payload when :pong log_system_debug "received pong frame: payload_length=#{@payload_length}" if $oversip_debug end true end) end # while end # receive_data def control_frame? @opcode > 2 end def text_or_binary_frame? @opcode == 1 or @opcode == 2 end def continuation_frame? @opcode == 0 end # NOTE: A WS message is always set in a single WS frame. def send_text_frame message log_system_debug "sending text frame: payload_length=#{message.bytesize}" if $oversip_debug frame = "".encode ::Encoding::BINARY # byte1 = OPCODE_TO_INT[:text] | 0b10000000 => 129 # # - FIN bit set. # - RSV1-3 bits not set. # - opcode = 1 frame << 129 length = message.bytesize if length <= 125 frame << length # since rsv4 is 0 elsif length < 65536 # write 2 byte length frame << 126 frame << [length].pack('n') else # write 8 byte length frame << 127 frame << [length >> 32, length & 0xFFFFFFFF].pack("NN") end if message.encoding == ::Encoding::BINARY frame << message else frame << message.force_encoding(::Encoding::BINARY) end @connection.send_data frame true end def send_binary_frame message log_system_debug "sending binary frame: payload_length=#{message.bytesize}" if $oversip_debug frame = "".encode ::Encoding::BINARY # byte1 = OPCODE_TO_INT[:binary] | 0b10000000 => 130 # # - FIN bit set. # - RSV1-3 bits not set. # - opcode = 2 frame << 130 length = message.bytesize if length <= 125 frame << length # since rsv4 is 0 elsif length < 65536 # write 2 byte length frame << 126 frame << [length].pack('n') else # write 8 byte length frame << 127 frame << [length >> 32, length & 0xFFFFFFFF].pack("NN") end if message.encoding == ::Encoding::BINARY frame << message else frame << message.force_encoding(::Encoding::BINARY) end @connection.send_data frame true end def send_ping_frame data=nil if data log_system_debug "sending ping frame: payload_length=#{data.bytesize}" if $oversip_debug else log_system_debug "sending ping frame: payload_length=0" if $oversip_debug end frame = "".encode ::Encoding::BINARY # byte1 = OPCODE_TO_INT[:ping] | 0b10000000 => 137 # # - FIN bit set. # - RSV1-3 bits not set. # - opcode = 9 frame << 137 length = ( data ? data.bytesize : 0 ) frame << length if data if data.encoding == ::Encoding::BINARY frame << data else frame << data.force_encoding(::Encoding::BINARY) end end @connection.send_data frame true end def send_pong_frame data=nil if data log_system_debug "sending pong frame: payload_length=#{data.bytesize}" if $oversip_debug else log_system_debug "sending pong frame: payload_length=0" if $oversip_debug end frame = "".encode ::Encoding::BINARY # byte1 = OPCODE_TO_INT[:pong] | 0b10000000 => 138 # # - FIN bit set. # - RSV1-3 bits not set. # - opcode = 10 frame << 138 length = ( data ? data.bytesize : 0 ) frame << length if data if data.encoding == ::Encoding::BINARY frame << data else frame << data.force_encoding(::Encoding::BINARY) end end @connection.send_data frame true end def send_close_frame status=nil, reason=nil, in_reply_to_close=nil @keep_alive_timer.cancel if @keep_alive_timer unless in_reply_to_close log_system_debug "sending close frame: status=#{status.inspect}, reason=#{reason.inspect}" if $oversip_debug else log_system_debug "sending reply close frame: status=#{status.inspect}, reason=#{reason.inspect}" if $oversip_debug end @buffer.clear frame = "".encode ::Encoding::BINARY # byte1 = OPCODE_TO_INT[:close] | 0b10000000 => 136 # # - FIN bit set. # - RSV1-3 bits not set. # - opcode = 8 frame << 136 if status length = ( reason ? 2 + reason.bytesize : 2 ) else length = 0 end frame << length # since rsv4 is 0 if status frame << [status].pack('n') if reason if reason.encoding == ::Encoding::BINARY frame << reason else frame << reason.force_encoding(::Encoding::BINARY) end end end @connection.send_data frame true end end end ================================================ FILE: lib/oversip/websocket/ws_sip_app.rb ================================================ module OverSIP::WebSocket class WsSipApp include ::OverSIP::Logger include ::OverSIP::SIP::MessageProcessor def self.class_init @@max_message_size = ::OverSIP.configuration[:websocket][:max_ws_message_size] @@ws_keepalive_interval = ::OverSIP.configuration[:websocket][:ws_keepalive_interval] end LOG_ID = "WsSipApp" def log_id LOG_ID end def initialize connection, ws_framing @connection = connection @ws_framing = ws_framing @ws_message = ::IO::Buffer.new # Mantain WebSocket keepalive. @ws_framing.do_keep_alive @@ws_keepalive_interval if @@ws_keepalive_interval # WebSocket is message boundary so we just need a SIP parser instance. @@parser ||= ::OverSIP::SIP::MessageParser.new @parser = @@parser end def receive_payload_data payload_data # payload_data is always Encoding::BINARY so also @ws_message.to_str. @ws_message << payload_data # Check max message size. return false if @ws_message.size > @@max_message_size true end def message_done type log_system_debug "received WS message: type=#{type}, length=#{@ws_message.size}" if $oversip_debug # Better to encode it as BINARY (to later extract the body). process_sip_message @ws_message.to_str.force_encoding ::Encoding::BINARY @ws_message.clear true end def process_sip_message ws_message # Just a single SIP message allowed per WS message. @parser.reset unless parser_nbytes = @parser.execute(ws_message, 0) if wrong_message = @parser.parsed log_system_warn "SIP parsing error for #{MSG_TYPE[wrong_message.class]}: \"#{@parser.error}\"" else log_system_warn "SIP parsing error: \"#{@parser.error}\"" end @connection.close 4000, "SIP message parsing error" return end unless @parser.finished? log_system_warn "SIP parsing error: message not completed" @connection.close 4001, "SIP message incomplete" return end # At this point we've got a SIP::Request, SIP::Response or :outbound_keepalive symbol. @msg = @parser.parsed # Received data is a SIP Outbound keealive (double CRLF). Reply with single CRLF. if @msg == :outbound_keepalive log_system_debug "Outbound keepalive received, replying single CRLF" if $oversip_debug @ws_framing.send_text_frame(CRLF) return end @parser.post_parsing @msg.connection = @connection @msg.transport = @connection.class.transport @msg.source_ip = @connection.remote_ip @msg.source_port = @connection.remote_port @msg.source_ip_type = @connection.remote_ip_type return unless valid_message? @parser # TODO: Make it configurable: #add_via_received_rport if @msg.request? return unless check_via_branch # Get the body. if parser_nbytes != ws_message.bytesize @msg.body = ws_message[parser_nbytes..-1].force_encoding(::Encoding::UTF_8) if @msg.content_length and @msg.content_length != @msg.body.bytesize log_system_warn "SIP message body size (#{@msg.body.bytesize}) does not match Content-Length (#{@msg.content_length.inspect}), ignoring message" @connection.close 4002, "SIP message body size does not match Content-Length" return end end if @msg.request? process_request else process_response end end end end ================================================ FILE: lib/oversip.rb ================================================ # # OverSIP # Copyright (c) 2012-2014 Iñaki Baz Castillo # MIT License # # Ruby built-in libraries. require "rbconfig" require "etc" require "fileutils" require "socket" require "timeout" require "yaml" require "tempfile" require "base64" require "digest/md5" require "digest/sha1" require "securerandom" require "fiber" require "openssl" # Ruby external gems. require "syslog" gem "eventmachine", "~> 1.2.0" require "eventmachine" gem "iobuffer", "= 1.1.2" require "iobuffer" gem "em-udns", "= 0.3.6" require "em-udns" gem "escape_utils", "= 1.0.1" require "escape_utils" gem "term-ansicolor", "= 1.3.2" require "term/ansicolor" gem "posix-spawn", "= 0.3.9" require "posix-spawn" gem "em-synchrony", "= 1.0.3" require "em-synchrony" # OverSIP files. require "oversip/version.rb" require "oversip/syslog.rb" require "oversip/logger.rb" require "oversip/config.rb" require "oversip/config_validators.rb" require "oversip/proxies_config.rb" require "oversip/errors.rb" require "oversip/launcher.rb" require "oversip/utils.#{RbConfig::CONFIG["DLEXT"]}" require "oversip/utils.rb" require "oversip/default_server.rb" require "oversip/system_callbacks.rb" require "oversip/sip/sip.rb" require "oversip/sip/sip_parser.#{RbConfig::CONFIG["DLEXT"]}" require "oversip/sip/constants.rb" require "oversip/sip/core.rb" require "oversip/sip/message.rb" require "oversip/sip/request.rb" require "oversip/sip/response.rb" require "oversip/sip/uri.rb" require "oversip/sip/name_addr.rb" require "oversip/sip/message_processor.rb" require "oversip/sip/listeners.rb" require "oversip/sip/launcher.rb" require "oversip/sip/server_transaction.rb" require "oversip/sip/client_transaction.rb" require "oversip/sip/transport_manager.rb" require "oversip/sip/timers.rb" require "oversip/sip/tags.rb" require "oversip/sip/rfc3263.rb" require "oversip/sip/client.rb" require "oversip/sip/proxy.rb" require "oversip/sip/uac.rb" require "oversip/sip/uac_request.rb" require "oversip/websocket/websocket.rb" require "oversip/websocket/ws_http_parser.#{RbConfig::CONFIG["DLEXT"]}" require "oversip/websocket/constants.rb" require "oversip/websocket/http_request.rb" require "oversip/websocket/listeners.rb" require "oversip/websocket/launcher.rb" require "oversip/websocket/ws_framing_utils.#{RbConfig::CONFIG["DLEXT"]}" require "oversip/websocket/ws_framing.rb" require "oversip/websocket/ws_sip_app.rb" require "oversip/fiber_pool.rb" require "oversip/tls.rb" require "oversip/stun.#{RbConfig::CONFIG["DLEXT"]}" require "oversip/modules/user_assertion.rb" require "oversip/modules/outbound_mangling.rb" require "oversip/ruby_ext/eventmachine.rb" module OverSIP class << self attr_accessor :pid_file, :master_name, :pid, :daemonized, :configuration, :proxies, :tls_public_cert, :tls_private_cert, :stud_pids, :is_ready, # true, false :status, # :loading, :running, :terminating :root_fiber def daemonized? @daemonized end end # Pre-declare internal modules. module SIP ; end module WebSocket ; end module Modules ; end # Allow OverSIP::M::MODULE_NAME usage. M = Modules end ================================================ FILE: oversip.gemspec ================================================ require "./lib/oversip/version" ::Gem::Specification.new do |spec| spec.name = "oversip" spec.version = ::OverSIP::VERSION spec.licenses = ["MIT"] spec.date = ::Time.now spec.authors = [::OverSIP::AUTHOR] spec.email = [::OverSIP::AUTHOR_EMAIL] spec.homepage = ::OverSIP::HOMEPAGE spec.summary = "OverSIP (the SIP framework you dreamed about)" spec.description = <<-_END_ OverSIP is an async SIP proxy/server programmable in Ruby language. Some features of OverSIP are: - SIP transports: UDP, TCP, TLS and WebSocket. - Full IPv4 and IPv6 support. - RFC 3263: SIP DNS mechanism (NAPTR, SRV, A, AAAA) for failover and load balancing based on DNS. - RFC 5626: OverSIP is a perfect Outbound Edge Proxy, including an integrated STUN server. - Fully programmable in Ruby language (make SIP easy). - Fast and efficient: OverSIP core is coded in C language. OverSIP is build on top of EventMachine async library which follows the Reactor Design Pattern, allowing thousands of concurrent connections and requests in a never-blocking fashion. _END_ spec.required_ruby_version = ">= 1.9.3" spec.add_dependency "eventmachine", "~> 1.2.0", ">= 1.2.0.1" spec.add_dependency "iobuffer", "= 1.1.2" spec.add_dependency "em-udns", "= 0.3.6" spec.add_dependency "escape_utils", "= 1.0.1" spec.add_dependency "term-ansicolor", "= 1.3.2" spec.add_dependency "tins", "= 1.6.0" # For term-ansicolor: Last version that supports Ruby 1.9 spec.add_dependency "posix-spawn", "= 0.3.9" spec.add_dependency "em-synchrony", "= 1.0.3" spec.add_development_dependency "rake", "~> 10.3", ">= 10.3.2" spec.files = ::Dir.glob %w{ lib/oversip.rb lib/oversip/*.rb lib/oversip/ruby_ext/*.rb lib/oversip/sip/*.rb lib/oversip/sip/listeners/*.rb lib/oversip/sip/grammar/*.rb lib/oversip/websocket/*.rb lib/oversip/websocket/listeners/*.rb lib/oversip/modules/*.rb ext/common/*.h ext/sip_parser/extconf.rb ext/sip_parser/*.h ext/sip_parser/*.c ext/stun/extconf.rb ext/stun/*.h ext/stun/*.c ext/utils/extconf.rb ext/utils/*.h ext/utils/*.c ext/websocket_http_parser/extconf.rb ext/websocket_http_parser/*.h ext/websocket_http_parser/*.c ext/websocket_framing_utils/extconf.rb ext/websocket_framing_utils/*.h ext/websocket_framing_utils/*.c ext/stud/extconf.rb thirdparty/stud/stud.tar.gz etc/* etc/tls/* etc/tls/ca/* etc/tls/utils/* Rakefile README.md AUTHORS LICENSE } spec.extensions = %w{ ext/sip_parser/extconf.rb ext/stun/extconf.rb ext/utils/extconf.rb ext/websocket_http_parser/extconf.rb ext/websocket_framing_utils/extconf.rb ext/stud/extconf.rb } spec.executables = ["oversip"] spec.test_files = ::Dir.glob %w{ test/oversip_test_helper.rb test/test_*.rb } spec.has_rdoc = false end ================================================ FILE: test/oversip_test_helper.rb ================================================ require "test/unit" require "oversip" class OverSIPTest < Test::Unit::TestCase def assert_true(object, message="") assert_equal(true, object, message) end def assert_false(object, message="") assert_equal(false, object, message) end def assert_equal_options(options, element) assert options.include?(element) end end ================================================ FILE: test/test_http_parser.rb ================================================ # coding: utf-8 require "oversip_test_helper" class TestHttpParser < OverSIPTest def parse data parser = OverSIP::WebSocket::HttpRequestParser.new buffer = IO::Buffer.new request = OverSIP::WebSocket::HttpRequest.new buffer << data unless bytes_parsed = parser.execute(request, buffer.to_str, 0) raise "ERROR: parsing error: \"#{parser.error}\"" end if parser.finished? buffer.read bytes_parsed if request.content_length and ! request.content_length.zero? request.body = buffer.read request.content_length end if buffer.size != 0 raise "ERROR: buffer is not empty after parsing" end else raise "ERROR: parsed NOT finished!" end [parser, request] end private :parse def test_parse_http_get parser, request = parse <<-END GET /chat?qwe=QWE&asd=#fragment HTTP/1.1\r Host: server.example.Com.\r Upgrade: WebSocket\r Connection: keep-Alive , Upgrade\r Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==\r Sec-WebSocket-protocol: foo , chat.lalala.com\r Sec-WebSocket-protocol: xmpp.nonaino.org\r Origin: http://example.Com\r Sec-WebSocket-Version: 13\r noNaino-lALA : qwe\r NOnaino-lala: asd\r \r END assert_equal request.http_method, :GET assert_equal request.http_version, "HTTP/1.1" assert_equal "/chat?qwe=QWE&asd=#fragment", request.uri assert_equal "/chat", request.uri_path assert_equal "qwe=QWE&asd=", request.uri_query assert_equal "fragment", request.uri_fragment assert_equal request.uri_scheme, nil assert_equal "server.example.com", request.host assert_nil request.port assert_nil request.content_length assert request.hdr_connection.include?("upgrade") assert_equal "websocket", request.hdr_upgrade assert_equal 13, request.hdr_sec_websocket_version assert_equal "dGhlIHNhbXBsZSBub25jZQ==", request.hdr_sec_websocket_key assert_equal "http://example.com", request.hdr_origin assert_equal ["foo", "chat.lalala.com", "xmpp.nonaino.org"], request.hdr_sec_websocket_protocol assert_equal ["qwe", "asd"], request["Nonaino-Lala"] end end ================================================ FILE: test/test_name_addr.rb ================================================ # coding: utf-8 require "oversip_test_helper" class TestNameAddr < OverSIPTest def test_name_addr full_name_addr = '"Iñaki Baz Castillo" ' aor = "sip:i%C3%B1aki@aliax.net" name_addr = ::OverSIP::SIP::NameAddr.new "Iñaki Baz Castillo", :sips, "iñaki", "aliax.net", 5060 name_addr.transport_param = :tcp name_addr.set_param "FOO", "123" name_addr.set_param "baz", nil name_addr.headers = "?X-Header-1=qwe&X-Header-2=asd" assert_true name_addr.sip? assert_false name_addr.tel? assert_false name_addr.unknown_scheme? assert_equal "iñaki", name_addr.user assert_equal "123", name_addr.get_param("Foo") assert_equal aor, name_addr.aor assert_equal full_name_addr, name_addr.to_s end end ================================================ FILE: test/test_name_addr_parser.rb ================================================ # coding: utf-8 require "oversip_test_helper" class TestNameAddrParser < OverSIPTest def test_parse_name_addr name_addr_str = '"Iñaki" ' aor = "sip:i%C3%B1aki@aliax.net" name_addr = ::OverSIP::SIP::NameAddr.parse name_addr_str assert_equal ::OverSIP::SIP::NameAddr, name_addr.class assert_equal "Iñaki", name_addr.display_name assert_true name_addr.sip? assert_false name_addr.unknown_scheme? assert_equal "iñaki", name_addr.user assert_equal "123", name_addr.get_param("Foo") assert_equal aor, name_addr.aor assert_equal name_addr_str, name_addr.to_s end end ================================================ FILE: test/test_sip_message_parser.rb ================================================ # coding: utf-8 require "oversip_test_helper" class TestSipMessageParser < OverSIPTest def parse data parser = OverSIP::SIP::MessageParser.new buffer = IO::Buffer.new buffer << data unless bytes_parsed = parser.execute(buffer.to_str, 0) raise "ERROR: parsing error for class #{parser.parsed.class}: \"#{parser.error}\"" end msg = parser.parsed if parser.finished? buffer.read bytes_parsed if msg.content_length and ! msg.content_length.zero? msg.body = buffer.read msg.content_length end if buffer.size != 0 raise "ERROR: buffer is not empty after parsing" end else raise "ERROR: parsed NOT finished! (msg.class = #{msg.class})" end parser.post_parsing [parser, msg] end private :parse def test_parse_sip_invite parser, msg = parse <<-END INVITE sip:sips%3Auser%40example.com@example.NET.;transport=tcp;FOO=baz?Subject=lalala SIP/2.0\r via: SIP/2.0/UDP host5.example.net;branch=z9hG4bKkdjuw ; Rport\r v: SIP/2.0/TCP 1.2.3.4;branch=z9hG4bKkdjuw\r To: \r from: ;\r tag=938\r Route: ,\r "Server Ñ€áéíóú" \r Max-Forwards: 87\r _i: esc01.239409asdfakjkn23onasd0-3234\r CSeq: 234234 INVITE\r C: application/sdp\r Require: AAA, Bbb\r Require: ccc\r Proxy-Require: AAA, Bbb\r Proxy-Require: ccc\r Supported: AAA, Bbb\r k: ccc\r Contact:\r ;p1=foo;P2=BAR;+sip-instance=qweqwe;reg-id=1\r Content-Length: 150\r \r v=0\r o=mhandley 29739 7272939 IN IP4 192.0.2.1\r s=-\r c=IN IP4 192.0.2.1\r t=0 0\r m=audio 49217 RTP/AVP 0 12\r m=video 3227 RTP/AVP 31\r a=rtpmap:31 LPC\r END assert_equal msg.class, OverSIP::SIP::Request assert_equal msg.sip_method, :INVITE assert_equal msg.sip_version, "SIP/2.0" assert_true msg.initial? assert_false parser.duplicated_core_header? assert_equal parser.missing_core_header?, "Call-ID" assert_equal msg.num_vias, 2 assert_equal msg.via_sent_by_host, "host5.example.net" assert_nil msg.via_sent_by_port assert_nil msg.via_received assert_true msg.via_rport? assert_equal msg.via_core_value, "SIP/2.0/UDP host5.example.net" assert_nil msg.via_params assert_equal ["SIP/2.0/UDP host5.example.net;branch=z9hG4bKkdjuw ; Rport", "SIP/2.0/TCP 1.2.3.4;branch=z9hG4bKkdjuw"], msg.hdr_via assert_equal msg.cseq, 234234 assert_equal msg.max_forwards, 87 assert_equal msg.content_length, 150 assert_equal msg.body.bytesize, 150 assert_equal "sip:sips%3auser%40example.com@example.net.;transport=tcp;foo=baz?subject=lalala", msg.ruri.uri.downcase assert_equal :sip, msg.ruri.scheme assert_equal "sips:user@example.com", msg.ruri.user assert_equal "example.net", msg.ruri.host assert_equal :domain, msg.ruri.host_type assert_nil msg.ruri.port assert_equal({"transport" => "tcp", "foo" => "baz"}, msg.ruri.params) assert_equal "?Subject=lalala", msg.ruri.headers assert_equal :tcp, msg.ruri.transport_param assert_nil msg.ruri.phone_context_param assert_equal :sips, msg.from.scheme assert_equal "I have spaces", msg.from.user assert OverSIP::Utils.compare_ips("[2001:123:ab::123]", msg.from.host) assert_equal :ipv6_reference, msg.from.host_type assert_equal 9999, msg.from.port assert_equal({}, msg.from.params) assert_equal "938", msg.from_tag assert_equal :tel, msg.to.scheme assert_equal "+34944994422", msg.to.user assert_nil msg.to.host assert_nil msg.to.port assert_equal({"lalala" => "lololo"}, msg.to.params) assert_nil msg.to_tag assert_equal :sip, msg.contact.scheme assert_equal "caller", msg.contact.user assert_equal "host5.example.net", msg.contact.host assert_equal :domain, msg.contact.host_type assert_nil msg.contact.port assert_true msg.contact.ob_param? assert_equal({"%6c%72" => nil, "n%61me" => "v%61lue%25%34%31", "ob" => nil}, msg.contact.params) assert_equal ";p1=foo;P2=BAR;+sip-instance=qweqwe;reg-id=1", msg.contact_params assert_true msg.contact_reg_id? assert_equal 2, msg.routes.size assert_nil msg.routes.first.display_name assert_equal :sip, msg.routes.first.scheme assert_equal "qweqwe/.+asdasd", msg.routes.first.user assert OverSIP::Utils.compare_ips("1.2.3.4", msg.routes.first.host) assert_equal "1.2.3.4", msg.routes.first.host assert_equal :ipv4, msg.routes.first.host_type assert_equal 7777, msg.routes.first.port assert_true msg.routes.first.lr_param? assert_equal "Server Ñ€áéíóú", msg.routes[1].display_name assert_equal :sip, msg.routes[1].scheme assert_nil msg.routes[1].user assert OverSIP::Utils.compare_ips("[1::a0f]", msg.routes[1].host) assert_equal :ipv6_reference, msg.routes[1].host_type assert_equal 6666, msg.routes[1].port assert_true msg.routes[1].lr_param? assert_equal ["aaa", "bbb", "ccc"], msg.require assert_equal ["aaa", "bbb", "ccc"], msg.proxy_require assert_equal ["aaa", "bbb", "ccc"], msg.supported # Change the full RURI and test again. msg.ruri = ::OverSIP::SIP::Uri.new :sips, "iñaki", "aliax.net", 7070 assert_equal :sips, msg.ruri.scheme assert_equal "iñaki", msg.ruri.user assert_equal "aliax.net", msg.ruri.host assert_equal :domain, msg.ruri.host_type assert_equal 7070, msg.ruri.port assert_equal({}, msg.ruri.params) assert_nil msg.ruri.headers assert_nil msg.ruri.transport_param assert_nil msg.ruri.phone_context_param assert_equal "sips:i%C3%B1aki@aliax.net:7070", msg.ruri.to_s end end ================================================ FILE: test/test_sip_uri_parser.rb ================================================ # coding: utf-8 require "oversip_test_helper" class TestSipUriParser < OverSIPTest def test_parse_sip_uri uri_str = "sips:i%C3%B1aki@aliax.net:5060;transport=tcp;foo=123;baz?X-Header-1=qwe&X-Header-2=asd" aor = "sip:i%C3%B1aki@aliax.net" uri = ::OverSIP::SIP::Uri.parse uri_str assert_equal ::OverSIP::SIP::Uri, uri.class assert_true uri.sip? assert_false uri.unknown_scheme? assert_equal "iñaki", uri.user assert_true uri.has_param? "FOO" assert_false uri.has_param? "LALALA" assert_equal "123", uri.get_param("Foo") assert_equal aor, uri.aor assert_equal uri_str, uri.to_s end def test_parse_tel_uri uri_str = "tel:944991212;foo=bar;phone-context=+34" aor = "tel:944991212" uri = ::OverSIP::SIP::Uri.parse uri_str assert_equal ::OverSIP::SIP::Uri, uri.class assert_true uri.tel? assert_false uri.unknown_scheme? assert_equal "944991212", uri.number assert_true uri.has_param? "FOO" assert_false uri.has_param? "LALALA" assert_equal "bar", uri.get_param("Foo") assert_equal aor, uri.aor assert_equal uri_str, uri.to_s end def test_parse_http_uri uri_str = "http://oversip.net/authors/" aor = nil uri = ::OverSIP::SIP::Uri.parse uri_str assert_equal ::OverSIP::SIP::Uri, uri.class assert_false uri.sip? assert_false uri.tel? assert_true uri.unknown_scheme? assert_nil uri.has_param? "FOO" assert_nil uri.aor assert_equal uri_str, uri.to_s end end ================================================ FILE: test/test_uri.rb ================================================ # coding: utf-8 require "oversip_test_helper" class TestUri < OverSIPTest def test_sip_uri full_uri = "sips:i%C3%B1aki@aliax.net:5060;transport=tcp;foo=123;baz?X-Header-1=qwe&X-Header-2=asd" aor = "sip:i%C3%B1aki@aliax.net" uri = ::OverSIP::SIP::Uri.new :sips, "iñaki", "aliax.net", 5060 uri.transport_param = :tcp uri.set_param "FOO", "123" uri.set_param "baz", nil uri.headers = "?X-Header-1=qwe&X-Header-2=asd" assert_true uri.sip? assert_false uri.tel? assert_false uri.unknown_scheme? assert_equal "iñaki", uri.user assert_equal "123", uri.get_param("Foo") assert_equal aor, uri.aor assert_equal full_uri, uri.to_s uri.clear_params assert_equal({}, uri.params) assert_equal "sips:i%C3%B1aki@aliax.net:5060?X-Header-1=qwe&X-Header-2=asd", uri.to_s end def test_tel_uri full_uri = "tel:944991212;foo=bar;phone-context=+34" aor = "tel:944991212" uri = ::OverSIP::SIP::Uri.new :tel, "944991212" uri.set_param "FOO", "bar" uri.phone_context_param = "+34" assert_false uri.sip? assert_true uri.tel? assert_false uri.unknown_scheme? assert_equal "944991212", uri.number assert_equal "bar", uri.get_param("Foo") assert_equal aor, uri.aor assert_equal full_uri, uri.to_s uri.clear_params assert_equal({}, uri.params) assert_equal aor, uri.to_s end def test_http_uri full_uri = "http://oversip.net/authors/" aor = nil uri = ::OverSIP::SIP::Uri.allocate uri.instance_variable_set :@uri, full_uri assert_false uri.sip? assert_false uri.tel? assert_true uri.unknown_scheme? assert_nil uri.aor assert_equal full_uri, uri.to_s assert_nil uri.clear_params end end ================================================ FILE: thirdparty/stud/NOTES ================================================ - stud's original Makefile has been modified for adding /usr/include/libev into the library path (workaround for CentOS): See: https://github.com/versatica/OverSIP/issues/23#issuecomment-9649288