Переглянути джерело

Remove pandaapp completely

rdb 12 роки тому
батько
коміт
574199c94d
38 змінених файлів з 0 додано та 8675 видалено
  1. 0 59
      pandaapp/Package.pp
  2. 0 4
      pandaapp/Sources.pp
  3. 0 4
      pandaapp/src/Sources.pp
  4. 0 1
      pandaapp/src/configfiles/Sources.pp
  5. 0 1
      pandaapp/src/configfiles/pandaapp.init
  6. 0 19
      pandaapp/src/httpbackup/Sources.pp
  7. 0 59
      pandaapp/src/httpbackup/backupCatalog.I
  8. 0 195
      pandaapp/src/httpbackup/backupCatalog.cxx
  9. 0 74
      pandaapp/src/httpbackup/backupCatalog.h
  10. 0 519
      pandaapp/src/httpbackup/httpBackup.cxx
  11. 0 84
      pandaapp/src/httpbackup/httpBackup.h
  12. 0 38
      pandaapp/src/indexify/Sources.pp
  13. 0 3357
      pandaapp/src/indexify/default_font.cxx
  14. 0 22
      pandaapp/src/indexify/default_font.h
  15. 0 297
      pandaapp/src/indexify/default_index_icons.cxx
  16. 0 36
      pandaapp/src/indexify/default_index_icons.h
  17. 0 264
      pandaapp/src/indexify/fontSamples.cxx
  18. 0 59
      pandaapp/src/indexify/fontSamples.h
  19. 0 918
      pandaapp/src/indexify/indexImage.cxx
  20. 0 96
      pandaapp/src/indexify/indexImage.h
  21. 0 296
      pandaapp/src/indexify/indexParameters.cxx
  22. 0 154
      pandaapp/src/indexify/indexParameters.h
  23. 0 738
      pandaapp/src/indexify/indexify.cxx
  24. 0 66
      pandaapp/src/indexify/indexify.h
  25. BIN
      pandaapp/src/indexify/left.png
  26. BIN
      pandaapp/src/indexify/movie.png
  27. BIN
      pandaapp/src/indexify/music_big.jpg
  28. 0 182
      pandaapp/src/indexify/photo.cxx
  29. 0 67
      pandaapp/src/indexify/photo.h
  30. BIN
      pandaapp/src/indexify/right.png
  31. 0 878
      pandaapp/src/indexify/rollDirectory.cxx
  32. 0 112
      pandaapp/src/indexify/rollDirectory.h
  33. BIN
      pandaapp/src/indexify/sound.png
  34. BIN
      pandaapp/src/indexify/up.png
  35. 0 10
      pandaapp/src/pandaappbase/Sources.pp
  36. 0 15
      pandaapp/src/pandaappbase/pandaappbase.cxx
  37. 0 25
      pandaapp/src/pandaappbase/pandaappbase.h
  38. 0 26
      pandaapp/src/pandaappbase/pandaappsymbols.h

+ 0 - 59
pandaapp/Package.pp

@@ -1,59 +0,0 @@
-//
-// Package.pp
-//
-// This file defines certain configuration variables that are to be
-// written into the various make scripts.  It is processed by ppremake
-// (along with the Sources.pp files in each of the various
-// directories) to generate build scripts appropriate to each
-// environment.
-//
-// This is the package-specific file, which should be at the top of
-// every source hierarchy.  It generally gets the ball rolling, and is
-// responsible for explicitly including all of the relevent Config.pp
-// files.
-
-
-
-// What is the name and version of this source tree?
-#if $[eq $[PACKAGE],]
-  #define PACKAGE pandaapp
-  #define VERSION 0.80
-#endif
-
-
-// Where should we find the PANDATOOL source directory?
-#if $[or $[CTPROJS],$[PANDATOOL]]
-  // If we are presently attached, use the environment variable.
-  #define PANDATOOL_SOURCE $[PANDATOOL]
-  #if $[eq $[PANDATOOL],]
-    #error You seem to be attached to some trees, but not PANDATOOL!
-  #endif
-#else
-  // Otherwise, if we are not attached, we guess that the source is a
-  // sibling directory to this source root.
-  #define PANDATOOL_SOURCE $[standardize $[TOPDIR]/../pandatool]
-#endif
-
-// Where should we install PANDAAPP?
-#if $[PANDAAPP_INSTALL]
-  #define PANDAAPP_INSTALL $[unixfilename $[PANDAAPP_INSTALL]]
-#elif $[CTPROJS]
-  #define PANDAAPP_INSTALL $[PANDAAPP]/built
-  #if $[eq $[PANDAAPP],]
-    #error You seem to be attached to some trees, but not PANDAAPP!
-  #endif
-#else
-  #defer PANDAAPP_INSTALL $[unixfilename $[INSTALL_DIR]]
-#endif
-
-// Also get the PANDATOOL Package file and everything that includes.
-#if $[not $[isfile $[PANDATOOL_SOURCE]/Package.pp]]
-  #printvar PANDATOOL 
-  #error PANDATOOL source directory not found from pandaapp!  Are you attached properly?
-#endif
-
-#include $[PANDATOOL_SOURCE]/Package.pp
-
-// Define the inter-tree dependencies.
-#define NEEDS_TREES pandatool $[NEEDS_TREES]
-#define DEPENDABLE_HEADER_DIRS $[DEPENDABLE_HEADER_DIRS] $[PANDATOOL_INSTALL]/include

+ 0 - 4
pandaapp/Sources.pp

@@ -1,4 +0,0 @@
-// This is the toplevel directory.  It contains configure.in and other
-// stuff.
-
-#define DIR_TYPE toplevel

+ 0 - 4
pandaapp/src/Sources.pp

@@ -1,4 +0,0 @@
-// This is a group directory: a directory level above a number of
-// source subdirectories.
-
-#define DIR_TYPE group

+ 0 - 1
pandaapp/src/configfiles/Sources.pp

@@ -1 +0,0 @@
-#define INSTALL_CONFIG pandaapp.init

+ 0 - 1
pandaapp/src/configfiles/pandaapp.init

@@ -1 +0,0 @@
-ATTACH pandatool

+ 0 - 19
pandaapp/src/httpbackup/Sources.pp

@@ -1,19 +0,0 @@
-#define BUILD_DIRECTORY $[HAVE_OPENSSL]
-
-#begin bin_target
-  #define TARGET httpbackup
-  #define LOCAL_LIBS pandaappbase
-  #define USE_PACKAGES ssl
-
-  #define OTHER_LIBS \
-    progbase pandatoolbase \
-    express:c downloader:c pandaexpress:m \
-    panda:m dtool:m dtoolconfig:m \
-    pystub
-
-  #define SOURCES \
-    backupCatalog.I backupCatalog.cxx backupCatalog.h \
-    httpBackup.cxx httpBackup.h
-
-#end bin_target
-

+ 0 - 59
pandaapp/src/httpbackup/backupCatalog.I

@@ -1,59 +0,0 @@
-// Filename: backupCatalog.I
-// Created by:  drose (29Jan03)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-
-////////////////////////////////////////////////////////////////////
-//     Function: BackupCatalog::Entry::Constructor
-//       Access: Public
-//  Description: 
-////////////////////////////////////////////////////////////////////
-INLINE BackupCatalog::Entry::
-Entry() {
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: BackupCatalog::Entry::operator <
-//       Access: Public
-//  Description: 
-////////////////////////////////////////////////////////////////////
-INLINE bool BackupCatalog::Entry::
-operator < (const BackupCatalog::Entry &other) const {
-  return get_date() < other.get_date();
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: BackupCatalog::Entry::get_date
-//       Access: Public
-//  Description: Returns the date associated with the entry.  This is
-//               the last-modified date provided by the server, if we
-//               have such a thing; or the downloaded date if that's
-//               all we have.
-////////////////////////////////////////////////////////////////////
-INLINE const HTTPDate &BackupCatalog::Entry::
-get_date() const {
-  return _document_spec.has_date() ? _document_spec.get_date() : _download_date;
-}
-
-
-INLINE istream &
-operator >> (istream &in, BackupCatalog::Entry &entry) {
-  entry.input(in);
-  return in;
-}
-
-INLINE ostream &
-operator << (ostream &out, const BackupCatalog::Entry &entry) {
-  entry.output(out);
-  return out;
-}

+ 0 - 195
pandaapp/src/httpbackup/backupCatalog.cxx

@@ -1,195 +0,0 @@
-// Filename: backupCatalog.cxx
-// Created by:  drose (29Jan03)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#include "backupCatalog.h"
-#include "indirectLess.h"
-#include <algorithm>
-
-// These are the characters that are not escaped when we write a
-// filename out to the catalog.  Really, the only reason we use
-// URLSpec::quote() to protect the filenames is to escape spaces.
-static const char * const acceptable_chars = "~/:";
-
-////////////////////////////////////////////////////////////////////
-//     Function: BackupCatalog::Constructor
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-BackupCatalog::
-BackupCatalog() {
-  _dirty = false;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: BackupCatalog::Destructor
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-BackupCatalog::
-~BackupCatalog() {
-  clear();
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: BackupCatalog::read
-//       Access: Public
-//  Description: Reads the catalog from the named file.  Returns true
-//               on success, false on failure.  On a false return, the
-//               catalog may have been partially read in.
-////////////////////////////////////////////////////////////////////
-bool BackupCatalog::
-read(const Filename &filename) {
-  clear();
-
-  ifstream file;
-  if (!filename.open_read(file)) {
-    nout << "Unable to read: " << filename << "\n";
-    return false;
-  }
-
-  Entry *entry = new Entry;
-  file >> (*entry);
-  while (!file.fail() && !file.eof()) {
-    _table[entry->_document_name].push_back(entry);
-    _filenames.insert(entry->_filename);
-    entry = new Entry;
-    file >> (*entry);
-  }
-
-  // Delete the last Entry that we didn't use.
-  delete entry;
-
-  if (!file.eof()) {
-    // Oops, we had an error on one of the entries.
-    return false;
-  }
-
-  // Now sort all of the entries by date.
-  Table::iterator ti;
-  for (ti = _table.begin(); ti != _table.end(); ++ti) {
-    Entries &entries = (*ti).second;
-    sort(entries.begin(), entries.end(), IndirectLess<Entry>());
-  }
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: BackupCatalog::write
-//       Access: Public
-//  Description: Rewrites the catalog to the named file.  Returns true
-//               on success, false on failure.
-////////////////////////////////////////////////////////////////////
-bool BackupCatalog::
-write(const Filename &filename) {
-  ofstream file;
-  if (!filename.open_write(file)) {
-    nout << "Unable to write: " << filename << "\n";
-    return false;
-  }
-
-  Table::const_iterator ti;
-  for (ti = _table.begin(); ti != _table.end(); ++ti) {
-    const Entries &entries = (*ti).second;
-    Entries::const_iterator ei;
-    for (ei = entries.begin(); ei != entries.end(); ++ei) {
-      (*ei)->write(file);
-      file << "\n";
-    }
-  }
-
-  if (file) {
-    _dirty = false;
-    return true;
-  }
-
-  return false;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: BackupCatalog::clear
-//       Access: Public
-//  Description: Completely empties the contents of the catalog.
-////////////////////////////////////////////////////////////////////
-void BackupCatalog::
-clear() {
-  Table::iterator ti;
-  for (ti = _table.begin(); ti != _table.end(); ++ti) {
-    Entries &entries = (*ti).second;
-    Entries::iterator ei;
-    for (ei = entries.begin(); ei != entries.end(); ++ei) {
-      delete (*ei);
-    }
-  }
-  _dirty = false;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: BackupCatalog::Entry::delete_file
-//       Access: Public
-//  Description: Deletes the file named by the entry, echoing the
-//               indicated reason to nout.
-////////////////////////////////////////////////////////////////////
-void BackupCatalog::Entry::
-delete_file(const Filename &dirname, const string &reason) {
-  Filename pathname(dirname, _filename);
-  if (pathname.exists()) {
-    nout << "Deleting " << _filename << " (" << reason << ").\n";
-    if (!pathname.unlink()) {
-      nout << "unable to delete.\n";
-    }
-
-  } else {
-    nout << "Tried to delete " << _filename << " but it's already gone!\n";
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: BackupCatalog::Entry::input
-//       Access: Public
-//  Description: Can be used to read in the catalog entry from a
-//               stream generated by either output() or write().
-////////////////////////////////////////////////////////////////////
-void BackupCatalog::Entry::
-input(istream &in) {
-  in >> _document_name >> _filename >> _document_spec >> _download_date;
-  _document_name = URLSpec::unquote(_document_name);
-  _filename = URLSpec::unquote(_filename);
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: BackupCatalog::Entry::output
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-void BackupCatalog::Entry::
-output(ostream &out) const {
-  out << URLSpec::quote(_document_name, acceptable_chars) << " " 
-      << URLSpec::quote(_filename, acceptable_chars) << " " 
-      << _document_spec << " " 
-      << _download_date;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: BackupCatalog::Entry::write
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-void BackupCatalog::Entry::
-write(ostream &out) const {
-  out << URLSpec::quote(_document_name, acceptable_chars) << " " 
-      << URLSpec::quote(_filename, acceptable_chars) << "\n";
-  _document_spec.write(out, 2);
-  out << "  " << _download_date << "\n";
-}

+ 0 - 74
pandaapp/src/httpbackup/backupCatalog.h

@@ -1,74 +0,0 @@
-// Filename: backupCatalog.h
-// Created by:  drose (29Jan03)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#ifndef BACKUPCATALOG_H
-#define BACKUPCATALOG_H
-
-#include "pandaappbase.h"
-
-#include "documentSpec.h"
-#include "filename.h"
-#include "pvector.h"
-#include "pmap.h"
-#include "pset.h"
-
-////////////////////////////////////////////////////////////////////
-//       Class : BackupCatalog
-// Description : This is the list of previous versions of this file
-//               (and possibly other files) stored in the "catalog", a
-//               text file within the download directory.
-////////////////////////////////////////////////////////////////////
-class BackupCatalog {
-public:
-  BackupCatalog();
-  ~BackupCatalog();
-
-  bool read(const Filename &filename);
-  bool write(const Filename &filename);
-  void clear();
-
-  class Entry {
-  public:
-    INLINE Entry();
-    INLINE bool operator < (const Entry &other) const;
-    INLINE const HTTPDate &get_date() const;
-
-    void delete_file(const Filename &dirname, const string &reason);
-    void input(istream &in);
-    void output(ostream &out) const;
-    void write(ostream &out) const;
-
-    string _document_name;
-    string _filename;
-    DocumentSpec _document_spec;
-    HTTPDate _download_date;
-  };
-
-  typedef pvector<Entry *> Entries;
-  typedef pmap<string, Entries> Table;
-  Table _table;
-  
-  typedef pset<string> Filenames;
-  Filenames _filenames;
-
-  bool _dirty;
-};
-
-INLINE istream &operator >> (istream &in, BackupCatalog::Entry &entry);
-INLINE ostream &operator << (ostream &out, const BackupCatalog::Entry &entry);
-
-#include "backupCatalog.I"
-
-#endif
-

+ 0 - 519
pandaapp/src/httpbackup/httpBackup.cxx

@@ -1,519 +0,0 @@
-// Filename: httpBackup.cxx
-// Created by:  drose (29Jan03)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#include "httpBackup.h"
-#include "httpChannel.h"
-
-
-static const int seconds_per_day = 60 * 60 * 24;
-
-////////////////////////////////////////////////////////////////////
-//     Function: HTTPBackup::Constructor
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-HTTPBackup::
-HTTPBackup() {
-  clear_runlines();
-  add_runline("[opts] url");
-  add_runline("-check <days> url");
-
-  set_program_description
-    ("This program is designed to run periodically as a "
-     "background task, e.g. via a cron job.  It fetches the "
-     "latest copy of a document from an HTTP server and "
-     "stores it, along with an optional number of previous "
-     "versions, in a local directory so that it may be "
-     "backed up to tape.\n\n"
-     
-     "If the copy on disk is already the same as the latest "
-     "copy available on the HTTP server, this program generally "
-     "does nothing (although it may delete old versions if they "
-     "have expired past the maximum age specified on the command "
-     "line).");
-
-  add_option
-    ("p", "url", 0,
-     "Specifies the URL of the HTTP proxy server(s), if one is required.  "
-     "Multiple servers may be specified by separating them with semicolons; "
-     "they will be tried in the order listed.",
-     &HTTPBackup::dispatch_string, &_got_proxy, &_proxy);
-
-  add_option
-    ("a", "", 0,
-     "If this option is specified, the document is always downloaded every "
-     "time httpbackup runs, even if the document does not appear to have "
-     "been changed since last time.",
-     &HTTPBackup::dispatch_none, &_always_download, NULL);
-
-  add_option
-    ("d", "dirname", 0,
-     "Specifies the name of the directory in which to store the backup "
-     "versions of the document.  The default is '.', the current "
-     "directory.",
-     &HTTPBackup::dispatch_filename, NULL, &_dirname);
-
-  add_option
-    ("c", "filename", 0,
-     "Specifies the name of the catalog file that httpbackup uses to "
-     "record the HTTP entity tags, etc., downloaded from previous "
-     "versions.  If a relative filename is given, it is relative to "
-     "the directory specified by -d.  The default is 'Catalog'.",
-     &HTTPBackup::dispatch_filename, NULL, &_catalog_name);
-
-  add_option
-    ("n", "filename", 0,
-     "Specifies the name of the document that is being retrieved.  This "
-     "name is written to the catalog file to identify entries for this "
-     "document, and is used to generate the filename to store the "
-     "backup versions.  The default if this is omitted or empty is to use "
-     "the basename of the URL.",
-     &HTTPBackup::dispatch_string, NULL, &_document_name);
-
-  add_option
-    ("s", "string", 0,
-     "Specifies how the date is appended onto the filename (see -n) for "
-     "each version of the file.  This string should contain the sequence "
-     "of characters from strftime() that correspond to the desired date "
-     "format to append to the filename.  The default is '.%Y-%m-%d.%H-%M', "
-     "or the year, month, day, hour, and minute.  (The date is always "
-     "represented in GMT, according to HTTP convention.)",
-     &HTTPBackup::dispatch_string, NULL, &_version_append);
-
-  add_option
-    ("maxage", "days", 0,
-     "Specifies the maximum age, in days, to keep an old version of the "
-     "file around.  If unspecified, the default is no limit.  This may "
-     "be a floating-point number.",
-     &HTTPBackup::dispatch_double, &_got_max_keep_days, &_max_keep_days);
-
-  add_option
-    ("minage", "days", 0,
-     "Specifies the minimum age, in days, an old version of the file must "
-     "have before it is automatically deleted due to exceeding -maxver.  "
-     "The default is 0.  This may be a floating-point number.",
-     &HTTPBackup::dispatch_double, NULL, &_min_keep_days);
-
-  add_option
-    ("maxver", "count", 0,
-     "Specifies the maximum number of old versions of the file to keep "
-     "around.  If unspecified, the default is no limit.",
-     &HTTPBackup::dispatch_int, &_got_max_keep_versions, &_max_keep_versions);
-
-  add_option
-    ("minver", "count", 0,
-     "Specifies the minimum number of old versions to keep after "
-     "deleting versions older than -maxage.  The default is 1.",
-     &HTTPBackup::dispatch_int, NULL, &_min_keep_versions);
-
-  add_option
-    ("check", "days", 0,
-     "Instead of downloading any document, check the date of the most recent "
-     "document downloaded.  Returns success if that date is no more than the "
-     "indicated number of days old (which may be a floating-point number), "
-     "or failure otherwise.",
-     &HTTPBackup::dispatch_double, &_got_check_days, &_check_days);
-
-  _dirname = ".";
-  _catalog_name = "Catalog";
-  _version_append = ".%Y-%m-%d.%H-%M";
-  _max_keep_days = 0.0;
-  _min_keep_days = 0.0;
-  _max_keep_versions = 0;
-  _min_keep_versions = 1;
-}
-
-
-////////////////////////////////////////////////////////////////////
-//     Function: HTTPBackup::handle_args
-//       Access: Protected, Virtual
-//  Description: Does something with the additional arguments on the
-//               command line (after all the -options have been
-//               parsed).  Returns true if the arguments are good,
-//               false otherwise.
-////////////////////////////////////////////////////////////////////
-bool HTTPBackup::
-handle_args(ProgramBase::Args &args) {
-  if (_got_check_days && !_document_name.empty() && args.empty()) {
-    // If -check and -n are both specified, we don't really need to
-    // specify an URL.  Accept it if we don't.
-    return true;
-  }
-
-  if (args.size() != 1) {
-    nout << 
-      "You must specify the URL of the document to download "
-      "on the command line.\n\n";
-    return false;
-  }
-
-  _url = URLSpec(args[0]);
-  if (!(_url.has_server() && _url.has_path())) {
-    nout 
-      << "Invalid URL specification: " << args[0] << "\n";
-    return false;
-  }
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: HTTPBackup::post_command_line
-//       Access: Protected, Virtual
-//  Description: This is called after the command line has been
-//               completely processed, and it gives the program a
-//               chance to do some last-minute processing and
-//               validation of the options and arguments.  It should
-//               return true if everything is fine, false if there is
-//               an error.
-////////////////////////////////////////////////////////////////////
-bool HTTPBackup::
-post_command_line() {
-  if (_got_proxy) {
-    _http.set_proxy_spec(_proxy);
-  }
-
-  if (!_catalog_name.is_fully_qualified()) {
-    _catalog_name = Filename(_dirname, _catalog_name);
-  }
-
-  if (_document_name.empty()) {
-    Filename pathname = _url.get_path();
-    _document_name = pathname.get_basename();
-  }
-
-  if (_min_keep_days < 0.0) {
-    nout << "Invalid -minage " << _min_keep_days << "\n";
-    return false;
-  }
-
-  if (_min_keep_versions < 0) {
-    nout << "Invalid -minver " << _min_keep_versions << "\n";
-    return false;
-  }
-
-  if (_got_max_keep_days) {
-    if (_max_keep_days < _min_keep_days) {
-      nout
-        << "-maxage " << _max_keep_days << " is less than -minage "
-        << _min_keep_days << "\n";
-      return false;
-    }
-  }
-
-  if (_got_max_keep_versions) {
-    if (_max_keep_versions < _min_keep_versions) {
-      nout
-        << "-maxver " << _max_keep_versions << " is less than -minver "
-        << _min_keep_versions << "\n";
-      return false;
-    }
-  }
-
-  _now = HTTPDate::now();
-  if (_got_max_keep_days) {
-    _max_keep_date = _now - (time_t)(_max_keep_days * seconds_per_day);
-  }
-  _min_keep_date = _now - (time_t)(_min_keep_days * seconds_per_day);
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: HTTPBackup::dispatch_url
-//       Access: Protected, Static
-//  Description: Dispatch function for a URL parameter.
-////////////////////////////////////////////////////////////////////
-bool HTTPBackup::
-dispatch_url(const string &opt, const string &arg, void *var) {
-  URLSpec *up = (URLSpec *)var;
-  URLSpec new_url(arg);
-  (*up) = new_url;
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: HTTPBackup::run
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-void HTTPBackup::
-run() {
-  // Output the current date and time in GMT, for logging.
-  nout << _now.get_string() << "\n";
-
-  // First, read in the catalog.
-  _catalog_name.set_text();
-  if (!_catalog_name.exists()) {
-    nout << _catalog_name << " does not yet exist.\n";
-  } else {
-    if (!_catalog.read(_catalog_name)) {
-      nout << "Unable to read " << _catalog_name << ".\n";
-      exit(1);
-    }
-  }
-
-  if (_got_check_days) {
-    // We're only checking the date of the latest download.
-    BackupCatalog::Entries &entries = _catalog._table[_document_name];
-    if (entries.empty()) {
-      nout << "No previous downloads for " << _document_name << ".\n";
-      exit(1);
-    }
-    BackupCatalog::Entry *latest = entries[entries.size() - 1];
-    int diff_secs = _now - latest->get_date();
-    double diff_days = (double)diff_secs / (double)seconds_per_day;
-    nout << "Most recent at " << latest->get_date().get_string()
-         << ", " << diff_days << " days old.\n";
-    if (diff_days <= _check_days) {
-      nout << "OK.\n";
-    } else {
-      nout << "Too old!\n";
-      exit(1);
-    }
-    
-  } else {
-    // Try to do the download.
-
-    // Now try to fetch the document.
-    if (!fetch_latest()) {
-      nout << "Errors while processing latest.\n";
-      exit(1);
-    }
-    
-    if (!cleanup_old()) {
-      nout << "Errors while cleaning up old versions.\n";
-      // We don't bother to exit the program in this case.
-    }
-    
-    if (_catalog._dirty) {
-      // Now write out the modified catalog.
-      nout << "Writing " << _catalog_name << "\n";
-      _catalog_name.make_dir();
-      if (!_catalog.write(_catalog_name)) {
-        nout << "Unable to rewrite " << _catalog_name << ".\n";
-        exit(1);
-      }
-    }
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: HTTPBackup::fetch_latest
-//       Access: Private
-//  Description: Tries to get the latest version of the document from
-//               the server, if there is one available.  Returns true
-//               on success (even if the most recent document hasn't
-//               changed), or false if there was some error.
-////////////////////////////////////////////////////////////////////
-bool HTTPBackup::
-fetch_latest() {
-  // Check the most recent version of this document.
-  BackupCatalog::Entries &entries = _catalog._table[_document_name];
-
-  DocumentSpec document_spec(_url);
-  if (!entries.empty()) {
-    BackupCatalog::Entry *latest = entries[entries.size() - 1];
-    document_spec = latest->_document_spec;
-    document_spec.set_url(_url);
-    if (!document_spec.has_date()) {
-      // If we didn't get a last-modified date, use the download date
-      // instead.
-      document_spec.set_date(latest->get_date());
-    }
-    if (!_always_download) {
-      document_spec.set_request_mode(DocumentSpec::RM_newer);
-    }
-  }
-
-  // Since the purpose of this program is to check to see if a more
-  // recent document is available, we probably always want any proxies
-  // in the way to revalidate their cache.
-  document_spec.set_cache_control(DocumentSpec::CC_revalidate);
- 
-  if (document_spec.get_request_mode() == DocumentSpec::RM_newer &&
-      document_spec.has_date()) {
-    nout << "Checking for newer than "<< document_spec.get_date().get_string()
-         << ".\n";
-  }
-  nout << "Fetching " << document_spec.get_url() << "\n";
-
-  PT(HTTPChannel) channel = _http.make_channel(true);
-  if (_always_download) {
-    channel->get_document(document_spec);
-  } else {
-    // Start out by asking for the header first, so we can verify the
-    // document has changed before we try to download it again.
-    channel->get_header(document_spec);
-  }
-
-  if (!channel->is_valid()) {
-    if (channel->get_status_code() == 304) {
-      nout << "Document has not been modified.\n";
-      // This is considered a success condition.
-      return true;
-    }
-    nout << "Error fetching document: " << channel->get_status_code()
-         << " " << channel->get_status_string() << "\n";
-    return false;
-  }
-
-  // The document is available.
-  if (!_always_download) {
-    if (!entries.empty()) {
-      // Has it been modified?  We need to check again because the
-      // If-None-Match fields, etc. might have been ignored (e.g. by a
-      // proxy).
-      if (document_spec == channel->get_document_spec()) {
-        nout
-          << "Document has not been modified (server ignored conditional request).\n";
-        return true;
-      }
-    }
-
-    // Ok, the document really is ready.  Go ahead and download it.
-    if (!channel->get_document(document_spec)) {
-      nout << "Unable to request document.\n";
-      return false;
-    }
-  }
-
-  // We've started to download the document.  Create an entry for it.
-  BackupCatalog::Entry *entry = new BackupCatalog::Entry;
-  entry->_document_name = _document_name;
-  entry->_document_spec = channel->get_document_spec();
-  entry->_download_date = _now;
-
-  // Generate a filename based on the last-modified date or the
-  // download date.
-  time_t time = entry->get_date().get_time();
-  struct tm *tp = gmtime(&time);
-
-  static const int buffer_size = 512;
-  char buffer[buffer_size];
-  if (strftime(buffer, buffer_size, _version_append.c_str(), tp) == 0) {
-    buffer[0] = '\0';
-  }
-
-  string filename = _document_name + string(buffer);
-  
-  // Check the filename for uniqueness, just for good measure.
-  check_unique(filename);
-
-  entry->_filename = filename;
-
-  // Download to the indicated filename.
-  Filename pathname(_dirname, filename);
-  nout << "Downloading to " << pathname << "\n";
-  pathname.make_dir();
-  if (!channel->download_to_file(pathname)) {
-    nout << "Error while downloading.\n";
-    delete entry;
-    return false;
-  }
-
-  // The file is successfully downloaded; save the entry.
-  entries.push_back(entry);
-  _catalog._dirty = true;
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: HTTPBackup::cleanup_old
-//       Access: Private
-//  Description: Removes old versions that are no longer needed.
-////////////////////////////////////////////////////////////////////
-bool HTTPBackup::
-cleanup_old() {
-  BackupCatalog::Entries &entries = _catalog._table[_document_name];
-
-  if (_got_max_keep_versions && 
-      (int)entries.size() > _max_keep_versions) {
-    // Too many versions; delete the oldest ones, except those newer
-    // than min_keep_date.
-    int num_delete = entries.size() - _max_keep_versions;
-    while (num_delete > 0 && entries[num_delete - 1]->get_date() > _min_keep_date) {
-      num_delete--;
-    }
-
-    for (int i = 0; i < num_delete; i++) {
-      entries[i]->delete_file(_dirname, "too many old versions");
-      delete entries[i];
-    }
-    entries.erase(entries.begin(), entries.begin() + num_delete);
-    _catalog._dirty = true;
-  }
-
-  if (_got_max_keep_days && 
-      (int)entries.size() > _min_keep_versions && 
-      entries[0]->get_date() < _max_keep_date) {
-    // The oldest version is too old; delete all the oldest ones,
-    // but keep at least min_keep_versions of them around.
-    int num_delete = 1;
-    while (num_delete < (int)entries.size() - _min_keep_versions &&
-           entries[num_delete]->get_date() < _max_keep_date) {
-      num_delete++;
-    }
-
-    for (int i = 0; i < num_delete; i++) {
-      entries[i]->delete_file(_dirname, "too old");
-      delete entries[i];
-    }
-    entries.erase(entries.begin(), entries.begin() + num_delete);
-    _catalog._dirty = true;
-  }
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: HTTPBackup::check_unique
-//       Access: Private
-//  Description: Ensures that the given filename is unique among all
-//               files in the catalog.
-////////////////////////////////////////////////////////////////////
-void HTTPBackup::
-check_unique(string &filename) {
-  bool inserted = _catalog._filenames.insert(filename).second;
-
-  if (!inserted) {
-    // Conflict; append one or more letters to the filename until it
-    // is unique.
-    unsigned int uniquifier = 1;
-    string orig_filename = filename;
-    orig_filename += '.';
-
-    while (!inserted) {
-      filename = orig_filename;
-      
-      unsigned int count = uniquifier;
-      while (count > 0) {
-        char ch = (char)((count % 26) + 'a');
-        filename += ch;
-        count /= 26;
-      }
-      
-      uniquifier++;
-      inserted = _catalog._filenames.insert(filename).second;
-    }
-  }
-}
-
-int
-main(int argc, char *argv[]) {
-  HTTPBackup prog;
-  prog.parse_command_line(argc, argv);
-  prog.run();
-  return 0;
-}

+ 0 - 84
pandaapp/src/httpbackup/httpBackup.h

@@ -1,84 +0,0 @@
-// Filename: httpBackup.h
-// Created by:  drose (29Jan03)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#ifndef HTTPBACKUP_H
-#define HTTPBACKUP_H
-
-#include "pandaappbase.h"
-#include "programBase.h"
-#include "backupCatalog.h"
-
-#include "httpClient.h"
-#include "urlSpec.h"
-
-////////////////////////////////////////////////////////////////////
-//       Class : HTTPBackup
-// Description : This program is designed to run periodically as a
-//               background task, e.g. via a cron job.  It fetches the
-//               latest copy of a document from an HTTP server and
-//               stores it, along with an optional number of previous
-//               versions, in a local directory so that it may be
-//               backed up to tape.
-//
-//               If the copy on disk is already the same as the latest
-//               copy available on the HTTP server, this program does
-//               nothing.
-////////////////////////////////////////////////////////////////////
-class HTTPBackup : public ProgramBase {
-public:
-  HTTPBackup();
-
-protected:
-  virtual bool handle_args(Args &args);
-  virtual bool post_command_line();
-
-  static bool dispatch_url(const string &opt, const string &arg, void *var);
-
-public:
-  void run();
-
-private:
-  bool fetch_latest();
-  bool cleanup_old();
-  void check_unique(string &filename);
-
-private:
-  string _proxy;
-  bool _got_proxy;
-
-  URLSpec _url;
-  Filename _dirname;
-  Filename _catalog_name;
-  string _document_name;
-  string _version_append;
-  bool _always_download;
-
-  double _max_keep_days;
-  bool _got_max_keep_days;
-  double _min_keep_days;
-  int _max_keep_versions;
-  bool _got_max_keep_versions;
-  int _min_keep_versions;
-  double _check_days;
-  bool _got_check_days;
-
-  HTTPDate _max_keep_date;
-  HTTPDate _min_keep_date;
-  HTTPDate _now;
-
-  HTTPClient _http;
-  BackupCatalog _catalog;
-};
-
-#endif

+ 0 - 38
pandaapp/src/indexify/Sources.pp

@@ -1,38 +0,0 @@
-#define BUILD_DIRECTORY $[HAVE_FREETYPE]
-
-#define OTHER_LIBS \
-    progbase pandatoolbase \
-    dtoolutil:c dtool:m prc:c dtoolbase:c dtoolconfig:m \
-    express:c pandaexpress:m \
-    putil:c pipeline:c linmath:c pnmimage:c mathutil:c pnmtext:c \
-    pnmimagetypes:c event:c panda:m \
-    pystub
-
-#define UNIX_SYS_LIBS dl
-
-#begin bin_target
-  #define USE_PACKAGES freetype
-
-  #define TARGET indexify
-
-  #define SOURCES \
-    default_index_icons.cxx default_index_icons.h \
-    default_font.cxx default_font.h \
-    indexImage.cxx indexImage.h \
-    indexParameters.cxx indexParameters.h \
-    indexify.cxx indexify.h \
-    photo.cxx photo.h \
-    rollDirectory.cxx rollDirectory.h
-
-#end bin_target
-
-#begin bin_target
-  #define USE_PACKAGES freetype
-
-  #define TARGET font-samples
-
-  #define SOURCES \
-    default_font.cxx default_font.h \
-    fontSamples.cxx fontSamples.h
-
-#end bin_target

+ 0 - 3357
pandaapp/src/indexify/default_font.cxx

@@ -1,3357 +0,0 @@
-// Filename: default_font.cxx
-// Created by:  drose (04Apr02)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#include "default_font.h"
-
-// This file was generated from uhvr8ac.pfb, a PostScript Type1 font
-// installed along with TeX (and it was probably converted there from
-// some other format).  It defines the font "Nimbus Sans L Regular
-// Condensed", a nice simple sans-serif font.
-
-// This is used as a standard fallback font when no font file is
-// specified by the user.
-
-const unsigned char default_font[] = {
-  0x80, 0x01, 0x6e, 0x06, 0x00, 0x00, 0x25, 0x21, 0x50, 0x53, 0x2d, 
-  0x41, 0x64, 0x6f, 0x62, 0x65, 0x46, 0x6f, 0x6e, 0x74, 0x2d, 0x31, 
-  0x2e, 0x30, 0x3a, 0x20, 0x4e, 0x69, 0x6d, 0x62, 0x75, 0x73, 0x53, 
-  0x61, 0x6e, 0x4c, 0x2d, 0x52, 0x65, 0x67, 0x75, 0x43, 0x6f, 0x6e, 
-  0x64, 0x20, 0x31, 0x2e, 0x30, 0x35, 0x0a, 0x25, 0x25, 0x43, 0x72, 
-  0x65, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x65, 0x3a, 
-  0x20, 0x57, 0x65, 0x64, 0x20, 0x44, 0x65, 0x63, 0x20, 0x32, 0x32, 
-  0x20, 0x31, 0x39, 0x39, 0x39, 0x0a, 0x25, 0x20, 0x43, 0x6f, 0x70, 
-  0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x55, 0x52, 0x57, 
-  0x29, 0x2b, 0x2b, 0x2c, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 
-  0x68, 0x74, 0x20, 0x31, 0x39, 0x39, 0x39, 0x20, 0x62, 0x79, 0x20, 
-  0x28, 0x55, 0x52, 0x57, 0x29, 0x2b, 0x2b, 0x20, 0x44, 0x65, 0x73, 
-  0x69, 0x67, 0x6e, 0x20, 0x26, 0x20, 0x44, 0x65, 0x76, 0x65, 0x6c, 
-  0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x0a, 0x25, 0x20, 0x28, 0x55, 
-  0x52, 0x57, 0x29, 0x2b, 0x2b, 0x2c, 0x43, 0x6f, 0x70, 0x79, 0x72, 
-  0x69, 0x67, 0x68, 0x74, 0x20, 0x31, 0x39, 0x39, 0x39, 0x20, 0x62, 
-  0x79, 0x20, 0x28, 0x55, 0x52, 0x57, 0x29, 0x2b, 0x2b, 0x20, 0x44, 
-  0x65, 0x73, 0x69, 0x67, 0x6e, 0x20, 0x26, 0x20, 0x44, 0x65, 0x76, 
-  0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x0a, 0x25, 0x20, 
-  0x53, 0x65, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 
-  0x65, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x28, 0x41, 
-  0x6c, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x20, 0x46, 0x72, 0x65, 0x65, 
-  0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x4c, 0x69, 0x63, 
-  0x65, 0x6e, 0x73, 0x65, 0x29, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6c, 
-  0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x64, 
-  0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x25, 0x20, 0x41, 
-  0x73, 0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 
-  0x20, 0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 
-  0x20, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 
-  0x20, 0x69, 0x73, 0x20, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 
-  0x20, 0x74, 0x6f, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 
-  0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x0a, 
-  0x25, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x69, 
-  0x6e, 0x20, 0x61, 0x20, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x63, 0x72, 
-  0x69, 0x70, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x50, 0x44, 0x46, 0x20, 
-  0x66, 0x69, 0x6c, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 
-  0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 
-  0x61, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, 
-  0x74, 0x68, 0x61, 0x74, 0x0a, 0x25, 0x20, 0x63, 0x6f, 0x6e, 0x74, 
-  0x61, 0x69, 0x6e, 0x73, 0x20, 0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 
-  0x6f, 0x20, 0x62, 0x65, 0x20, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 
-  0x79, 0x65, 0x64, 0x20, 0x6f, 0x72, 0x20, 0x70, 0x72, 0x69, 0x6e, 
-  0x74, 0x65, 0x64, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 
-  0x68, 0x69, 0x73, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x2c, 0x20, 0x72, 
-  0x65, 0x67, 0x61, 0x72, 0x64, 0x6c, 0x65, 0x73, 0x73, 0x0a, 0x25, 
-  0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 
-  0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x6f, 0x72, 0x20, 
-  0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x61, 0x70, 0x70, 
-  0x6c, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 
-  0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, 
-  0x69, 0x74, 0x73, 0x65, 0x6c, 0x66, 0x2e, 0x0a, 0x31, 0x32, 0x20, 
-  0x64, 0x69, 0x63, 0x74, 0x20, 0x62, 0x65, 0x67, 0x69, 0x6e, 0x0a, 
-  0x2f, 0x46, 0x6f, 0x6e, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x20, 0x31, 
-  0x30, 0x20, 0x64, 0x69, 0x63, 0x74, 0x20, 0x64, 0x75, 0x70, 0x20, 
-  0x62, 0x65, 0x67, 0x69, 0x6e, 0x0a, 0x2f, 0x76, 0x65, 0x72, 0x73, 
-  0x69, 0x6f, 0x6e, 0x20, 0x28, 0x31, 0x2e, 0x30, 0x35, 0x29, 0x20, 
-  0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x64, 0x65, 
-  0x66, 0x0a, 0x2f, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x20, 0x28, 
-  0x28, 0x55, 0x52, 0x57, 0x29, 0x2b, 0x2b, 0x2c, 0x43, 0x6f, 0x70, 
-  0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x31, 0x39, 0x39, 0x39, 
-  0x20, 0x62, 0x79, 0x20, 0x28, 0x55, 0x52, 0x57, 0x29, 0x2b, 0x2b, 
-  0x20, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6e, 0x20, 0x26, 0x20, 0x44, 
-  0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 
-  0x20, 0x53, 0x65, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 
-  0x6c, 0x65, 0x20, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x43, 0x20, 0x28, 
-  0x41, 0x6c, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x20, 0x46, 0x72, 0x65, 
-  0x65, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x4c, 0x69, 
-  0x63, 0x65, 0x6e, 0x73, 0x65, 0x29, 0x20, 0x66, 0x6f, 0x72, 0x20, 
-  0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x20, 0x63, 0x6f, 0x6e, 
-  0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x20, 0x41, 0x73, 
-  0x20, 0x61, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x20, 
-  0x65, 0x78, 0x63, 0x65, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 
-  0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 
-  0x69, 0x73, 0x20, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x20, 
-  0x74, 0x6f, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 
-  0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x6f, 0x6e, 0x74, 0x20, 0x70, 
-  0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x69, 0x6e, 0x20, 0x61, 
-  0x20, 0x50, 0x6f, 0x73, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 
-  0x20, 0x6f, 0x72, 0x20, 0x50, 0x44, 0x46, 0x20, 0x66, 0x69, 0x6c, 
-  0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x73, 
-  0x69, 0x73, 0x74, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x64, 
-  0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x68, 0x61, 
-  0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x73, 0x20, 
-  0x74, 0x65, 0x78, 0x74, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x65, 0x20, 
-  0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x20, 0x6f, 
-  0x72, 0x20, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x65, 0x64, 0x20, 0x75, 
-  0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 
-  0x6f, 0x6e, 0x74, 0x2c, 0x20, 0x72, 0x65, 0x67, 0x61, 0x72, 0x64, 
-  0x6c, 0x65, 0x73, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 
-  0x20, 0x63, 0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 
-  0x20, 0x6f, 0x72, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 
-  0x20, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x74, 
-  0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x6f, 0x63, 0x75, 0x6d, 
-  0x65, 0x6e, 0x74, 0x20, 0x69, 0x74, 0x73, 0x65, 0x6c, 0x66, 0x2e, 
-  0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 
-  0x64, 0x65, 0x66, 0x0a, 0x2f, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 
-  0x67, 0x68, 0x74, 0x20, 0x28, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 
-  0x67, 0x68, 0x74, 0x20, 0x28, 0x55, 0x52, 0x57, 0x29, 0x2b, 0x2b, 
-  0x2c, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 
-  0x31, 0x39, 0x39, 0x39, 0x20, 0x62, 0x79, 0x20, 0x28, 0x55, 0x52, 
-  0x57, 0x29, 0x2b, 0x2b, 0x20, 0x44, 0x65, 0x73, 0x69, 0x67, 0x6e, 
-  0x20, 0x26, 0x20, 0x44, 0x65, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x6d, 
-  0x65, 0x6e, 0x74, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 
-  0x6c, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0a, 0x2f, 0x46, 0x75, 0x6c, 
-  0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x28, 0x4e, 0x69, 0x6d, 0x62, 
-  0x75, 0x73, 0x20, 0x53, 0x61, 0x6e, 0x73, 0x20, 0x4c, 0x20, 0x52, 
-  0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 0x20, 0x43, 0x6f, 0x6e, 0x64, 
-  0x65, 0x6e, 0x73, 0x65, 0x64, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 
-  0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0a, 0x2f, 0x46, 
-  0x61, 0x6d, 0x69, 0x6c, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x28, 
-  0x4e, 0x69, 0x6d, 0x62, 0x75, 0x73, 0x20, 0x53, 0x61, 0x6e, 0x73, 
-  0x20, 0x4c, 0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 
-  0x79, 0x20, 0x64, 0x65, 0x66, 0x0a, 0x2f, 0x57, 0x65, 0x69, 0x67, 
-  0x68, 0x74, 0x20, 0x28, 0x52, 0x65, 0x67, 0x75, 0x6c, 0x61, 0x72, 
-  0x29, 0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 
-  0x64, 0x65, 0x66, 0x0a, 0x2f, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x63, 
-  0x41, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x30, 0x2e, 0x30, 0x20, 0x64, 
-  0x65, 0x66, 0x0a, 0x2f, 0x69, 0x73, 0x46, 0x69, 0x78, 0x65, 0x64, 
-  0x50, 0x69, 0x74, 0x63, 0x68, 0x20, 0x66, 0x61, 0x6c, 0x73, 0x65, 
-  0x20, 0x64, 0x65, 0x66, 0x0a, 0x2f, 0x55, 0x6e, 0x64, 0x65, 0x72, 
-  0x6c, 0x69, 0x6e, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 
-  0x6e, 0x20, 0x2d, 0x31, 0x30, 0x30, 0x20, 0x64, 0x65, 0x66, 0x0a, 
-  0x2f, 0x55, 0x6e, 0x64, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x65, 0x54, 
-  0x68, 0x69, 0x63, 0x6b, 0x6e, 0x65, 0x73, 0x73, 0x20, 0x35, 0x30, 
-  0x20, 0x64, 0x65, 0x66, 0x0a, 0x65, 0x6e, 0x64, 0x20, 0x72, 0x65, 
-  0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0a, 
-  0x2f, 0x46, 0x6f, 0x6e, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x20, 0x2f, 
-  0x4e, 0x69, 0x6d, 0x62, 0x75, 0x73, 0x53, 0x61, 0x6e, 0x4c, 0x2d, 
-  0x52, 0x65, 0x67, 0x75, 0x43, 0x6f, 0x6e, 0x64, 0x20, 0x64, 0x65, 
-  0x66, 0x0a, 0x2f, 0x50, 0x61, 0x69, 0x6e, 0x74, 0x54, 0x79, 0x70, 
-  0x65, 0x20, 0x30, 0x20, 0x64, 0x65, 0x66, 0x0a, 0x2f, 0x57, 0x4d, 
-  0x6f, 0x64, 0x65, 0x20, 0x30, 0x20, 0x64, 0x65, 0x66, 0x0a, 0x2f, 
-  0x46, 0x6f, 0x6e, 0x74, 0x42, 0x42, 0x6f, 0x78, 0x20, 0x7b, 0x2d, 
-  0x31, 0x33, 0x36, 0x20, 0x2d, 0x32, 0x38, 0x32, 0x20, 0x38, 0x32, 
-  0x30, 0x20, 0x39, 0x35, 0x31, 0x7d, 0x20, 0x72, 0x65, 0x61, 0x64, 
-  0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x64, 0x65, 0x66, 0x0a, 0x2f, 0x46, 
-  0x6f, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x20, 0x31, 0x20, 0x64, 
-  0x65, 0x66, 0x0a, 0x2f, 0x46, 0x6f, 0x6e, 0x74, 0x4d, 0x61, 0x74, 
-  0x72, 0x69, 0x78, 0x20, 0x5b, 0x30, 0x2e, 0x30, 0x30, 0x31, 0x20, 
-  0x30, 0x2e, 0x30, 0x20, 0x30, 0x2e, 0x30, 0x20, 0x30, 0x2e, 0x30, 
-  0x30, 0x31, 0x20, 0x30, 0x2e, 0x30, 0x20, 0x30, 0x2e, 0x30, 0x5d, 
-  0x20, 0x72, 0x65, 0x61, 0x64, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x64, 
-  0x65, 0x66, 0x0a, 0x2f, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 
-  0x67, 0x20, 0x53, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x45, 
-  0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x64, 0x65, 0x66, 
-  0x0a, 0x2f, 0x55, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x49, 0x44, 0x20, 
-  0x35, 0x30, 0x32, 0x30, 0x39, 0x31, 0x33, 0x20, 0x64, 0x65, 0x66, 
-  0x0a, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x64, 0x69, 0x63, 
-  0x74, 0x20, 0x65, 0x6e, 0x64, 0x0a, 0x63, 0x75, 0x72, 0x72, 0x65, 
-  0x6e, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x65, 0x65, 0x78, 0x65, 
-  0x63, 0x0d, 0x80, 0x02, 0x71, 0x86, 0x00, 0x00, 0xe9, 0x8d, 0x09, 
-  0xd7, 0x60, 0xa3, 0xc2, 0x2c, 0xf1, 0x19, 0xf9, 0xdc, 0x69, 0x9a, 
-  0x22, 0xc3, 0x5b, 0x5b, 0x35, 0xed, 0x6a, 0xa2, 0x35, 0x93, 0xc7, 
-  0x6d, 0x54, 0xca, 0xbb, 0x5e, 0x94, 0x2b, 0xf7, 0xd6, 0xdd, 0x84, 
-  0xf1, 0x66, 0x4b, 0x89, 0x69, 0x9c, 0x74, 0xb4, 0x72, 0xde, 0x9f, 
-  0x8e, 0x6d, 0xf9, 0x25, 0xf6, 0xc4, 0xf2, 0x04, 0xe9, 0xf1, 0xc6, 
-  0x39, 0xb4, 0xdb, 0xa9, 0x88, 0xed, 0x2a, 0xc4, 0x19, 0xff, 0x2b, 
-  0x2b, 0xde, 0x60, 0x5b, 0x8e, 0xe3, 0x26, 0x4e, 0xdd, 0x66, 0x41, 
-  0x2d, 0x4f, 0x21, 0xc6, 0x4a, 0xc5, 0x22, 0xbd, 0xfc, 0x7c, 0x55, 
-  0x02, 0xf9, 0xc3, 0xf3, 0xe5, 0x59, 0x2b, 0x3b, 0x20, 0x93, 0xd3, 
-  0x3c, 0x9b, 0xfa, 0xed, 0xd2, 0xd4, 0x9e, 0x89, 0xaa, 0xba, 0xa8, 
-  0x32, 0xe2, 0x3f, 0x06, 0x2e, 0x91, 0xa2, 0x50, 0x32, 0x51, 0x9d, 
-  0x18, 0x68, 0x81, 0x6e, 0x44, 0xb4, 0xe0, 0x74, 0x77, 0x95, 0x00, 
-  0x3d, 0x79, 0x30, 0x29, 0x9d, 0x6e, 0x1e, 0x2a, 0x5b, 0xfe, 0x0d, 
-  0x59, 0x5d, 0xc9, 0x7e, 0x14, 0x09, 0x89, 0xce, 0x81, 0xd8, 0xd7, 
-  0xf8, 0x52, 0xff, 0x9c, 0xdc, 0x7a, 0x1b, 0x1b, 0x59, 0x8c, 0x69, 
-  0x13, 0x1d, 0xee, 0x00, 0x5b, 0x41, 0x58, 0x05, 0xa1, 0x6d, 0x8a, 
-  0x12, 0x3e, 0x6f, 0x2c, 0x76, 0xad, 0xd0, 0x4b, 0x32, 0x5a, 0xf1, 
-  0x71, 0xa3, 0xdf, 0x24, 0x79, 0x62, 0x05, 0x93, 0xda, 0x38, 0x3f, 
-  0xcf, 0xe4, 0x56, 0xc9, 0x84, 0x6e, 0xb7, 0xe9, 0x29, 0x63, 0xe2, 
-  0xb2, 0xe8, 0xdc, 0x46, 0x91, 0x2c, 0xa8, 0x16, 0xd0, 0xbe, 0x13, 
-  0x2d, 0x78, 0xa5, 0x48, 0x29, 0xcc, 0xc2, 0x9b, 0xfa, 0xfb, 0x6a, 
-  0x63, 0xf8, 0xe5, 0x4b, 0x92, 0xb5, 0x07, 0x0f, 0xf3, 0xd8, 0x08, 
-  0x01, 0xdb, 0xec, 0x65, 0x8c, 0xd4, 0x56, 0xa3, 0x52, 0xef, 0xcf, 
-  0x47, 0xb4, 0x29, 0x38, 0xb8, 0x28, 0x9b, 0xa0, 0xd1, 0xe9, 0x68, 
-  0x67, 0x5a, 0x94, 0x55, 0x9c, 0x00, 0xc4, 0x42, 0x46, 0x5c, 0x93, 
-  0x07, 0xd6, 0x5a, 0xa1, 0xa6, 0xbe, 0x3d, 0x3b, 0x6a, 0xbc, 0xe4, 
-  0x37, 0x8f, 0x9d, 0xb4, 0xb1, 0xc5, 0xb1, 0xf6, 0xda, 0xfa, 0x20, 
-  0x63, 0x39, 0x0f, 0x53, 0xcf, 0xbf, 0x87, 0x4f, 0x0f, 0x1d, 0x8a, 
-  0x3b, 0xf8, 0x04, 0x46, 0x05, 0x80, 0x73, 0x83, 0x4d, 0x7c, 0x65, 
-  0x15, 0x15, 0xe6, 0x7d, 0xc6, 0x8d, 0x86, 0xe9, 0xfe, 0xb8, 0x5e, 
-  0xcf, 0x97, 0xca, 0x99, 0xc0, 0xac, 0x62, 0x2c, 0x27, 0x73, 0xcd, 
-  0x3d, 0x1f, 0xfd, 0x4f, 0x30, 0x02, 0x98, 0x77, 0x80, 0xaf, 0xc8, 
-  0x85, 0xcd, 0xbb, 0xb2, 0xb1, 0x5d, 0x2f, 0x97, 0x4d, 0x08, 0xb1, 
-  0x51, 0x11, 0x6f, 0x00, 0x9f, 0xab, 0xfa, 0x99, 0x40, 0x4a, 0x5e, 
-  0x06, 0xa7, 0x68, 0xf0, 0x32, 0x5e, 0x6b, 0x4c, 0x3b, 0xd3, 0x6c, 
-  0xdc, 0x48, 0x90, 0x00, 0xfd, 0x9d, 0xa3, 0x0e, 0x21, 0xb8, 0xe7, 
-  0x07, 0xa0, 0x9a, 0x5f, 0x6c, 0x4a, 0xa7, 0x0e, 0x01, 0x91, 0x63, 
-  0xda, 0xcc, 0x09, 0xfb, 0x4e, 0x15, 0x32, 0x04, 0xe0, 0xb7, 0xb4, 
-  0x56, 0x98, 0xbc, 0xbc, 0x6f, 0x90, 0xb0, 0xf7, 0x6a, 0x30, 0xd5, 
-  0xab, 0x7a, 0x96, 0xaf, 0x34, 0x70, 0xf5, 0x41, 0x0f, 0x70, 0x93, 
-  0x52, 0x9c, 0xef, 0x4b, 0xb8, 0x53, 0x5a, 0xdf, 0xc7, 0x88, 0x89, 
-  0xa1, 0xe6, 0x34, 0x8f, 0x0f, 0x4e, 0xde, 0xc3, 0xce, 0x72, 0x9c, 
-  0x0b, 0xb2, 0x06, 0x59, 0xaf, 0x1c, 0x65, 0x0d, 0x32, 0x0b, 0xca, 
-  0xa4, 0xe9, 0x06, 0x56, 0x52, 0x81, 0x10, 0x22, 0x58, 0xe8, 0xc0, 
-  0x96, 0x46, 0x21, 0x3d, 0xca, 0xef, 0x7a, 0x79, 0x5b, 0xb5, 0xad, 
-  0x52, 0xee, 0xfa, 0x4a, 0xcf, 0xa7, 0xd9, 0xce, 0xc0, 0x8e, 0x76, 
-  0x9a, 0x2f, 0x1f, 0x0c, 0xc6, 0xec, 0x25, 0xd4, 0x22, 0xdb, 0x7e, 
-  0xfb, 0xa7, 0xaf, 0xd7, 0x17, 0x61, 0x44, 0xca, 0xb3, 0x23, 0x8a, 
-  0xfb, 0x98, 0xa6, 0xf7, 0x38, 0x9d, 0xf3, 0xe7, 0x35, 0x87, 0x73, 
-  0x27, 0xa3, 0x0e, 0x0e, 0x4a, 0x53, 0xed, 0xc6, 0x4c, 0xe5, 0x4f, 
-  0x00, 0x56, 0xe8, 0x61, 0xd2, 0x9d, 0x93, 0x37, 0x1b, 0x57, 0x10, 
-  0xa8, 0x19, 0x68, 0x7b, 0x0d, 0xe2, 0xe0, 0x5e, 0xcf, 0x30, 0x77, 
-  0xbf, 0x4e, 0x73, 0xb1, 0x7f, 0x8e, 0xc0, 0x15, 0x53, 0xf5, 0x17, 
-  0x85, 0xdb, 0x07, 0x36, 0x79, 0xea, 0x4b, 0x9f, 0xdd, 0x29, 0xd8, 
-  0x43, 0x32, 0x92, 0xaa, 0x30, 0xcc, 0xc5, 0xa6, 0x65, 0x9e, 0x2c, 
-  0xbd, 0x6d, 0x77, 0x92, 0xde, 0x21, 0x2c, 0x8e, 0xea, 0x0f, 0xa6, 
-  0xb4, 0xfe, 0x74, 0x9a, 0xb0, 0x9d, 0x5f, 0xfa, 0x49, 0x75, 0x24, 
-  0x19, 0x58, 0xc4, 0x3e, 0xd6, 0x79, 0xe4, 0x9b, 0x64, 0xcf, 0xeb, 
-  0x26, 0x50, 0x05, 0xbb, 0xa5, 0xc6, 0xb3, 0x96, 0xca, 0xb8, 0xe5, 
-  0x6c, 0x31, 0xc1, 0xa7, 0xe1, 0xb5, 0x1a, 0xeb, 0xa7, 0xae, 0x9b, 
-  0x6d, 0xbf, 0x00, 0x2c, 0x6e, 0x0b, 0x7c, 0xdc, 0x48, 0x5f, 0xee, 
-  0xf1, 0x32, 0x7e, 0x56, 0xab, 0xa5, 0x10, 0xbb, 0x29, 0x3d, 0x09, 
-  0x70, 0x5a, 0x04, 0x69, 0xbc, 0xd7, 0x3a, 0xa5, 0xb3, 0x08, 0x4d, 
-  0x80, 0x52, 0x25, 0x10, 0x31, 0x3d, 0xec, 0xaf, 0x57, 0x90, 0xc9, 
-  0xe7, 0x30, 0xb0, 0x3e, 0xdf, 0xde, 0x97, 0x54, 0x0c, 0x3e, 0x20, 
-  0x78, 0x23, 0x86, 0xf1, 0x51, 0x86, 0xd0, 0xa3, 0xbb, 0x6f, 0x66, 
-  0x28, 0x35, 0x84, 0xe2, 0xc0, 0xb2, 0x06, 0x54, 0x89, 0x78, 0x50, 
-  0x9d, 0xb2, 0x36, 0xc3, 0x2e, 0x66, 0x4e, 0xb3, 0x76, 0x6c, 0xe1, 
-  0xcf, 0xff, 0xb2, 0x73, 0xd8, 0xb6, 0xdb, 0xa5, 0xfc, 0xf2, 0x69, 
-  0x9e, 0x8a, 0xc7, 0xcc, 0x6c, 0x72, 0x77, 0x4c, 0x05, 0x60, 0x43, 
-  0xb8, 0x5d, 0x3b, 0xb2, 0x49, 0x82, 0xa8, 0xf7, 0x08, 0xad, 0x89, 
-  0x17, 0xbe, 0x02, 0x9a, 0x1e, 0x84, 0xab, 0xd1, 0x13, 0x20, 0x28, 
-  0x12, 0xf5, 0x68, 0x51, 0x80, 0xaf, 0xe3, 0x83, 0xc5, 0x19, 0x40, 
-  0xce, 0xac, 0xc3, 0xff, 0x8b, 0x0e, 0x51, 0x87, 0xd3, 0xdc, 0x3d, 
-  0x1b, 0xad, 0x50, 0xcd, 0xf3, 0x58, 0x71, 0xee, 0x14, 0x0e, 0xf9, 
-  0x76, 0x36, 0xc3, 0xf7, 0x27, 0x90, 0x4a, 0xf4, 0xca, 0x52, 0xca, 
-  0x26, 0xd1, 0x6b, 0xe5, 0x2f, 0xe6, 0x88, 0x8f, 0x46, 0x77, 0x90, 
-  0x4e, 0x38, 0xd3, 0x26, 0x8f, 0x84, 0xae, 0xed, 0x6a, 0xfb, 0x7b, 
-  0x01, 0x5b, 0xce, 0x4c, 0x34, 0xae, 0xf8, 0xee, 0x9b, 0x0c, 0x01, 
-  0x37, 0x4c, 0x52, 0xb3, 0xba, 0x49, 0x38, 0xc6, 0xe8, 0x5a, 0x88, 
-  0xa5, 0xa6, 0x11, 0xcb, 0xf4, 0x7c, 0xae, 0x9d, 0xf1, 0xdc, 0x35, 
-  0xfc, 0x64, 0x9d, 0x76, 0xc6, 0xc9, 0x9b, 0x12, 0xb4, 0xcd, 0x0e, 
-  0xfc, 0x69, 0xbc, 0x36, 0xef, 0xbd, 0xaf, 0x4e, 0x62, 0x12, 0x06, 
-  0x12, 0xba, 0xe8, 0x43, 0x38, 0xa3, 0x38, 0x52, 0x76, 0x5f, 0x26, 
-  0xec, 0xdf, 0xbe, 0x33, 0x2e, 0x0b, 0xae, 0xd3, 0x76, 0x32, 0xac, 
-  0x5b, 0x57, 0x94, 0x1e, 0xec, 0xab, 0x3b, 0x75, 0x5f, 0xc5, 0x82, 
-  0x20, 0xc3, 0x9d, 0xcd, 0x82, 0x84, 0xc4, 0x5b, 0x65, 0x6c, 0xf9, 
-  0x81, 0xef, 0x14, 0x84, 0x10, 0xd8, 0xe5, 0x0c, 0x0f, 0x97, 0x18, 
-  0x06, 0x25, 0xc3, 0x0a, 0x5f, 0xb8, 0x3f, 0xcb, 0xd1, 0x3a, 0x37, 
-  0x3d, 0x96, 0xc0, 0xcf, 0x7a, 0x57, 0x06, 0x6e, 0x5f, 0x85, 0x01, 
-  0x4e, 0xd7, 0x97, 0x5f, 0xd6, 0x9a, 0xfc, 0xaf, 0x65, 0x86, 0xa7, 
-  0x0f, 0x10, 0x61, 0x7c, 0xce, 0xc3, 0xfe, 0xa7, 0x3e, 0x34, 0x4c, 
-  0x26, 0x4f, 0x7f, 0x73, 0xc7, 0xc2, 0x09, 0xa5, 0x56, 0xa3, 0xfe, 
-  0xe9, 0xe0, 0xdd, 0xc4, 0x93, 0x17, 0x6d, 0x84, 0xf9, 0x8e, 0x6c, 
-  0xcc, 0x20, 0x03, 0xe4, 0x75, 0x29, 0x44, 0x06, 0x11, 0x88, 0x8d, 
-  0xcb, 0xd4, 0x55, 0x65, 0x56, 0x33, 0xf0, 0x29, 0x6b, 0x33, 0x26, 
-  0xf3, 0xfa, 0xd2, 0xbe, 0x38, 0x7f, 0x0b, 0xbf, 0xe1, 0x95, 0x7a, 
-  0xf0, 0xb9, 0x68, 0xda, 0x0e, 0x4a, 0x3e, 0x56, 0x29, 0x1d, 0x11, 
-  0xd0, 0x2f, 0x4c, 0x22, 0x84, 0x84, 0x0e, 0x6d, 0x6d, 0x6c, 0xab, 
-  0x0a, 0x90, 0xa6, 0x89, 0x9c, 0xa0, 0x89, 0x2b, 0xfc, 0x5c, 0xca, 
-  0x77, 0x5e, 0xea, 0x0d, 0x9e, 0x24, 0x94, 0x70, 0x70, 0x6a, 0x15, 
-  0xea, 0x93, 0xf5, 0xfa, 0x78, 0x80, 0xd3, 0xe4, 0xc2, 0x13, 0xbb, 
-  0xac, 0xce, 0x69, 0x77, 0x5d, 0xa6, 0xc1, 0x68, 0x7f, 0x15, 0xc4, 
-  0xc8, 0x69, 0x57, 0x01, 0x8d, 0x42, 0x8d, 0x98, 0xce, 0x71, 0xa3, 
-  0x05, 0xac, 0xfe, 0x87, 0x53, 0xac, 0x95, 0xb6, 0x5c, 0x30, 0x05, 
-  0x47, 0x93, 0xb8, 0x2e, 0xf4, 0x30, 0x38, 0x0d, 0x8b, 0x96, 0xe8, 
-  0x26, 0xba, 0x74, 0x1f, 0x3c, 0x57, 0x58, 0xff, 0x30, 0x2c, 0x10, 
-  0x13, 0x5c, 0x3a, 0x48, 0x1c, 0xc1, 0x2c, 0x32, 0x08, 0xb9, 0xff, 
-  0x93, 0x4a, 0xd3, 0x97, 0x7b, 0x3c, 0x4d, 0x61, 0xdb, 0x5e, 0xf5, 
-  0x1a, 0x50, 0x35, 0x09, 0x6b, 0xcd, 0x45, 0x9e, 0x57, 0x23, 0xc1, 
-  0x52, 0x54, 0xd4, 0x9b, 0x01, 0xca, 0x7b, 0xb5, 0xe4, 0x9b, 0x70, 
-  0xa7, 0x92, 0x18, 0xe8, 0xc4, 0xaa, 0xdd, 0x40, 0x77, 0x06, 0xd0, 
-  0x3e, 0x96, 0x79, 0x9c, 0xa8, 0x60, 0x6f, 0x48, 0x0d, 0xcd, 0x7d, 
-  0xe4, 0x06, 0xd3, 0xa4, 0x3b, 0xf3, 0x37, 0x8e, 0x79, 0x46, 0xd7, 
-  0xd7, 0xac, 0xdb, 0x28, 0xd4, 0xeb, 0x74, 0x44, 0x14, 0xbc, 0xa5, 
-  0x64, 0xbe, 0xaa, 0x12, 0x3e, 0x5c, 0xf7, 0xc5, 0x6d, 0xb4, 0xa4, 
-  0x83, 0xd8, 0x76, 0x72, 0x53, 0x30, 0xbc, 0x45, 0xfe, 0x74, 0x95, 
-  0x2b, 0x53, 0xa0, 0x63, 0x8f, 0x22, 0xe3, 0xfb, 0x38, 0x84, 0x6b, 
-  0xc6, 0xc7, 0xff, 0x68, 0xfb, 0xd0, 0x4e, 0x18, 0xa9, 0x6a, 0xb8, 
-  0x7b, 0x21, 0x86, 0xb6, 0xab, 0xdd, 0x86, 0xc9, 0x8f, 0x9c, 0xd0, 
-  0x10, 0x14, 0x42, 0xc9, 0xa9, 0x00, 0xf2, 0x21, 0x1a, 0xda, 0xdf, 
-  0x11, 0x35, 0xce, 0x36, 0xc7, 0xe2, 0x02, 0x8a, 0x6d, 0xa8, 0x69, 
-  0xdd, 0xe0, 0x46, 0xb8, 0xe8, 0x74, 0x8a, 0x42, 0xaf, 0xc2, 0x1a, 
-  0x4c, 0xcf, 0x87, 0x49, 0x60, 0x82, 0x48, 0xe9, 0x64, 0xfc, 0xa1, 
-  0x92, 0x09, 0x10, 0xb0, 0xa7, 0xa1, 0x54, 0xd9, 0x57, 0x7e, 0xb6, 
-  0x27, 0xa2, 0xe3, 0x7e, 0x21, 0x2d, 0x4a, 0x16, 0x11, 0xca, 0xa7, 
-  0x87, 0xec, 0x82, 0xd8, 0xd2, 0xce, 0xb7, 0x7c, 0xea, 0x11, 0x5c, 
-  0xe3, 0xa6, 0xcf, 0x8a, 0xe7, 0x23, 0x99, 0x56, 0xa2, 0xf3, 0x85, 
-  0xa8, 0x4b, 0xb6, 0x4b, 0x27, 0x28, 0x27, 0xb0, 0xcf, 0xa3, 0x84, 
-  0x78, 0xb7, 0x48, 0x5b, 0xe9, 0xc8, 0x6a, 0x19, 0xac, 0xd4, 0x28, 
-  0xa2, 0x62, 0xae, 0x0e, 0x74, 0x4a, 0xe5, 0xd6, 0x7b, 0x3b, 0xff, 
-  0xa3, 0xb9, 0xb6, 0x43, 0xf2, 0x50, 0x96, 0x5c, 0x97, 0xb7, 0x28, 
-  0x84, 0xb5, 0x19, 0xa4, 0x5a, 0x6a, 0xe6, 0xa2, 0x10, 0xd1, 0x41, 
-  0xf1, 0x4c, 0x95, 0xe9, 0x4e, 0x62, 0xe8, 0x27, 0x4d, 0x0b, 0x1c, 
-  0x69, 0x88, 0xf9, 0x63, 0xbb, 0x0d, 0x75, 0x31, 0x5b, 0xe4, 0x6c, 
-  0xfc, 0x8d, 0x7d, 0x71, 0xd7, 0x3f, 0x8f, 0x59, 0xef, 0xc0, 0xdc, 
-  0x03, 0xcd, 0x92, 0x93, 0xa5, 0xdd, 0x58, 0x1a, 0x34, 0x88, 0x65, 
-  0xa4, 0xf0, 0xdf, 0x69, 0x98, 0x1e, 0x94, 0x92, 0xde, 0x50, 0xea, 
-  0xcb, 0x42, 0xa5, 0x46, 0x9d, 0x30, 0x2b, 0x99, 0xae, 0xab, 0x30, 
-  0x4f, 0xc4, 0xd0, 0x14, 0x0a, 0xe1, 0x7d, 0xe9, 0x62, 0x63, 0xa6, 
-  0x38, 0x79, 0x68, 0x0b, 0xd9, 0x2b, 0x43, 0x5d, 0xeb, 0x3c, 0x8c, 
-  0x4f, 0xca, 0xe5, 0x28, 0xe0, 0x4c, 0x35, 0xe0, 0xb3, 0x0f, 0xcd, 
-  0xe4, 0x1c, 0xe1, 0x06, 0xce, 0x7a, 0x22, 0xff, 0x0b, 0xf5, 0xd3, 
-  0xd1, 0x2d, 0x9b, 0x8b, 0xba, 0xd5, 0x04, 0xad, 0x15, 0x5d, 0x3b, 
-  0x19, 0xed, 0x31, 0x0a, 0xd8, 0xa0, 0x3e, 0x74, 0xdc, 0xc4, 0xff, 
-  0x29, 0xff, 0x94, 0x7f, 0xe9, 0xbb, 0x99, 0x8e, 0x65, 0x28, 0xaa, 
-  0xc0, 0x2f, 0x1d, 0x70, 0x26, 0x51, 0xaf, 0x32, 0x5f, 0x21, 0x95, 
-  0x4f, 0xd0, 0x6c, 0x6c, 0x2e, 0x8f, 0x53, 0xbf, 0xd7, 0xef, 0x3a, 
-  0x5d, 0x9d, 0x7f, 0x43, 0xcc, 0x5f, 0xd8, 0x6d, 0x1f, 0xaf, 0x8b, 
-  0x78, 0xc8, 0xdf, 0x66, 0x25, 0xfc, 0x2e, 0x3a, 0xf3, 0x4f, 0xf5, 
-  0x8f, 0xcc, 0xad, 0x40, 0x8f, 0xcf, 0x4e, 0x1d, 0x90, 0xfa, 0x68, 
-  0x90, 0xa6, 0x20, 0xdd, 0x86, 0x3b, 0x27, 0x26, 0x6b, 0x4f, 0x63, 
-  0xc4, 0x03, 0x5b, 0x98, 0x55, 0x2c, 0xa0, 0x73, 0xad, 0xdd, 0x3e, 
-  0x64, 0x33, 0x4b, 0xcb, 0x40, 0x12, 0x96, 0xd4, 0xe1, 0xc0, 0xaa, 
-  0xea, 0xcb, 0xeb, 0x98, 0x04, 0x1b, 0x19, 0x7f, 0xac, 0x84, 0x67, 
-  0x74, 0xfd, 0xe2, 0x0a, 0x1e, 0x41, 0xc8, 0xc9, 0x40, 0x23, 0x96, 
-  0x32, 0x19, 0x15, 0x39, 0xa3, 0x30, 0x54, 0x4b, 0x8d, 0x1a, 0x63, 
-  0x28, 0x6b, 0x2f, 0x15, 0xf0, 0x23, 0x5a, 0xf8, 0x94, 0x88, 0x32, 
-  0x41, 0x7d, 0x74, 0xe4, 0xd4, 0x18, 0x31, 0x27, 0x92, 0xc4, 0xc0, 
-  0x11, 0x46, 0x4f, 0xce, 0xbf, 0x55, 0xeb, 0x34, 0x6f, 0x51, 0xc5, 
-  0x15, 0x3d, 0x72, 0xb4, 0x19, 0x53, 0x60, 0x5c, 0x0a, 0x0b, 0x7b, 
-  0x6b, 0x52, 0x63, 0xcc, 0xcb, 0x83, 0xab, 0x64, 0x11, 0x1b, 0xe3, 
-  0xc1, 0xb6, 0xd3, 0xda, 0x1c, 0x8c, 0xc2, 0x24, 0xe7, 0xe0, 0xff, 
-  0x26, 0x6f, 0x35, 0xe7, 0x4c, 0x00, 0xcc, 0x48, 0x31, 0x2d, 0xae, 
-  0x25, 0x9b, 0x08, 0x4f, 0xc4, 0xcb, 0xf4, 0x40, 0x2a, 0xc6, 0x04, 
-  0xd0, 0xe1, 0x87, 0x44, 0xe9, 0xe5, 0x6f, 0x2d, 0x7e, 0xed, 0x55, 
-  0x3e, 0x8b, 0xc4, 0x24, 0x98, 0xeb, 0x45, 0x02, 0xa6, 0x14, 0x35, 
-  0x7b, 0x84, 0x3f, 0x05, 0x8a, 0xae, 0x3e, 0xe0, 0x89, 0x90, 0x06, 
-  0xd1, 0x83, 0x84, 0x3c, 0x73, 0x3c, 0x74, 0x28, 0x23, 0x31, 0xee, 
-  0x30, 0x2f, 0x0c, 0xbc, 0x39, 0x16, 0xfd, 0x27, 0x94, 0x19, 0x73, 
-  0x46, 0xb0, 0xee, 0xfb, 0x9a, 0x19, 0x69, 0x70, 0x3b, 0x37, 0xb1, 
-  0x6f, 0x27, 0xa4, 0x00, 0xa2, 0x9b, 0xef, 0x5b, 0x2c, 0xa0, 0xeb, 
-  0x1b, 0x0e, 0xbc, 0xb7, 0x43, 0xac, 0xa6, 0x07, 0xdf, 0xb7, 0xca, 
-  0x62, 0xea, 0xc1, 0x82, 0xb1, 0xff, 0xc5, 0x71, 0xb9, 0x96, 0x4b, 
-  0x73, 0xbf, 0xf3, 0x5c, 0x32, 0x00, 0x17, 0xd0, 0x8b, 0x47, 0x92, 
-  0x0d, 0x86, 0x41, 0x96, 0xe8, 0x9f, 0x6f, 0x91, 0x50, 0x85, 0x49, 
-  0xb2, 0xb1, 0x89, 0xce, 0x32, 0x19, 0xfd, 0x53, 0x82, 0x7c, 0x84, 
-  0x05, 0x0f, 0xac, 0x62, 0x68, 0xd0, 0xc4, 0x89, 0x5e, 0x03, 0x33, 
-  0xef, 0x93, 0x9e, 0xf2, 0xed, 0x50, 0x55, 0x77, 0xb8, 0x5b, 0x10, 
-  0xb7, 0x64, 0x45, 0x67, 0xff, 0x29, 0xa7, 0xab, 0x80, 0x94, 0xfa, 
-  0x7e, 0x0d, 0x03, 0x3e, 0x33, 0x72, 0x87, 0x69, 0x56, 0x24, 0x2c, 
-  0x3c, 0x8d, 0xa0, 0xdc, 0x9f, 0xa9, 0xba, 0xd3, 0x0b, 0x23, 0xc5, 
-  0x44, 0xe5, 0xc0, 0xd4, 0xbd, 0xde, 0x22, 0xcd, 0xa4, 0x91, 0x71, 
-  0xa4, 0xec, 0x1f, 0x2b, 0x57, 0x4b, 0x88, 0x62, 0xb8, 0x75, 0x9d, 
-  0x5a, 0x35, 0x5e, 0x21, 0x33, 0x1c, 0xdb, 0xdf, 0xae, 0x62, 0xf7, 
-  0x6c, 0x02, 0xb7, 0xf8, 0x4d, 0x5b, 0x81, 0x52, 0xb9, 0x91, 0x7a, 
-  0x24, 0xd5, 0x68, 0xc1, 0xca, 0x87, 0x17, 0xe9, 0x5b, 0x75, 0x97, 
-  0xad, 0x7c, 0x2c, 0x16, 0x92, 0x9c, 0x4a, 0x1f, 0xad, 0x61, 0x83, 
-  0xad, 0x1d, 0xd3, 0xab, 0x90, 0x06, 0x84, 0x7a, 0xfe, 0x8a, 0x99, 
-  0xcc, 0x31, 0x9d, 0x8b, 0xf4, 0xcc, 0xf3, 0xb4, 0xde, 0x10, 0x9c, 
-  0x3e, 0x06, 0x91, 0x5e, 0xc4, 0x49, 0x9d, 0x90, 0x75, 0x11, 0x21, 
-  0x26, 0xa0, 0x4f, 0x00, 0x9e, 0x95, 0xfb, 0x0e, 0x25, 0x66, 0xce, 
-  0xfc, 0x28, 0xe7, 0x7e, 0x72, 0x68, 0x8a, 0x81, 0xa2, 0x73, 0x1b, 
-  0xa0, 0x88, 0x3b, 0xe7, 0x90, 0x05, 0xfb, 0xd4, 0xdb, 0x3d, 0x23, 
-  0x4a, 0x76, 0x39, 0x81, 0x41, 0x3b, 0x16, 0x49, 0x2e, 0xc6, 0x28, 
-  0xdb, 0xe6, 0x21, 0xa0, 0x8b, 0xbf, 0x3f, 0x70, 0x99, 0x2a, 0x55, 
-  0x7d, 0x56, 0xa5, 0x4f, 0xd3, 0x54, 0x6f, 0xa8, 0xda, 0x01, 0xec, 
-  0xd4, 0xa5, 0x14, 0x62, 0x6c, 0x26, 0xf0, 0x52, 0xe2, 0x53, 0xc8, 
-  0xa4, 0x06, 0x8b, 0x33, 0xbf, 0x19, 0x28, 0x47, 0x30, 0xba, 0xec, 
-  0x36, 0xe2, 0x56, 0x1f, 0xca, 0xb8, 0xf1, 0x1c, 0x2d, 0x1b, 0x9d, 
-  0x7b, 0x65, 0x76, 0x71, 0x04, 0x81, 0xce, 0xca, 0x3a, 0x8f, 0x82, 
-  0xc6, 0x43, 0xa6, 0x1a, 0xe3, 0x82, 0x29, 0xfb, 0xe2, 0x65, 0x2a, 
-  0xac, 0xa4, 0xe9, 0x4a, 0x33, 0x67, 0x17, 0x06, 0x27, 0xc9, 0x77, 
-  0xe3, 0xa0, 0xa4, 0x69, 0xa7, 0x8f, 0xdc, 0x06, 0x81, 0x0d, 0x5e, 
-  0xa8, 0xe4, 0xbb, 0xcf, 0xc2, 0x6a, 0x6d, 0xc4, 0x0a, 0xac, 0x28, 
-  0x58, 0x38, 0x84, 0xbd, 0x61, 0xa7, 0x04, 0xa1, 0x2c, 0x0c, 0x1a, 
-  0x72, 0xfa, 0x37, 0x11, 0xb3, 0xc4, 0xe1, 0x99, 0xad, 0xb3, 0x8d, 
-  0x44, 0xd0, 0x5b, 0x53, 0xec, 0xa4, 0xc7, 0xc8, 0x4a, 0x54, 0x81, 
-  0xfc, 0xd0, 0xd5, 0xe6, 0x10, 0x78, 0x5f, 0xe4, 0x0b, 0x59, 0xa1, 
-  0xd7, 0x3b, 0x29, 0x4f, 0xa0, 0x12, 0xc1, 0xb3, 0xed, 0xbf, 0x9b, 
-  0x51, 0x43, 0x36, 0xc5, 0x7e, 0xff, 0xf3, 0x5a, 0x1c, 0xd9, 0x19, 
-  0xd6, 0x23, 0x9d, 0x58, 0x5d, 0xa8, 0x32, 0x25, 0xa1, 0xe3, 0x3a, 
-  0xb1, 0xe2, 0xb7, 0x27, 0xf9, 0x02, 0x42, 0xa6, 0xee, 0xf2, 0x96, 
-  0x1e, 0x67, 0x9d, 0x7f, 0x6e, 0x06, 0x48, 0x84, 0x4c, 0xa2, 0xd4, 
-  0x40, 0xe3, 0xc3, 0xb9, 0xad, 0x9b, 0x8a, 0xb9, 0x09, 0x43, 0x0d, 
-  0x4c, 0xef, 0x8e, 0x68, 0x0c, 0xf9, 0x36, 0x60, 0xbd, 0xbb, 0x48, 
-  0x9f, 0x35, 0x00, 0x9c, 0x9c, 0x48, 0x7f, 0x3a, 0x86, 0xc5, 0xab, 
-  0x84, 0xdb, 0xa1, 0x49, 0xe2, 0x82, 0x1c, 0x07, 0x71, 0xcc, 0xc1, 
-  0x6d, 0xc2, 0x73, 0xd4, 0xa0, 0x18, 0x41, 0x7e, 0x36, 0x92, 0x5c, 
-  0x80, 0x2b, 0xfe, 0xf5, 0x66, 0x83, 0x4d, 0x99, 0x51, 0x8c, 0xd2, 
-  0x6e, 0xa7, 0x1d, 0x80, 0xb9, 0x0f, 0x95, 0xb7, 0x1c, 0xef, 0xb4, 
-  0x33, 0x81, 0xd4, 0x30, 0x4d, 0x34, 0xa2, 0xb0, 0xcc, 0x5e, 0x7e, 
-  0x81, 0xaa, 0x4b, 0xfa, 0xe2, 0xa4, 0x5a, 0x3e, 0x75, 0x2d, 0xf7, 
-  0x6d, 0xa9, 0x9b, 0xa1, 0xe1, 0xcc, 0x97, 0x50, 0xdb, 0xb3, 0x5a, 
-  0x93, 0x96, 0x62, 0x96, 0x6c, 0xa2, 0xb5, 0x3d, 0xb3, 0x1f, 0x06, 
-  0x59, 0xa0, 0x33, 0x8f, 0xbe, 0x5a, 0xee, 0x01, 0x29, 0x0e, 0xa0, 
-  0x38, 0x04, 0x2d, 0xc2, 0xd8, 0x7e, 0x2c, 0x0e, 0xd2, 0x07, 0xc1, 
-  0x1c, 0x8d, 0x8d, 0x99, 0xb6, 0xf3, 0xe2, 0x11, 0xe7, 0x60, 0xc8, 
-  0x9a, 0x6b, 0xc6, 0x50, 0x82, 0xa7, 0xdf, 0xde, 0xa5, 0x32, 0x62, 
-  0x9a, 0xc9, 0x78, 0xb7, 0x5b, 0xd5, 0x66, 0x10, 0x4e, 0x12, 0xab, 
-  0x79, 0x2e, 0x72, 0x77, 0xd5, 0x60, 0x27, 0x62, 0x98, 0x24, 0x2d, 
-  0xdc, 0x09, 0x24, 0x66, 0x3c, 0x65, 0xec, 0x66, 0x7c, 0x23, 0xf2, 
-  0x3f, 0x52, 0x7d, 0xa1, 0xd5, 0x85, 0x57, 0x12, 0x7e, 0xc1, 0x7a, 
-  0x72, 0x20, 0xfd, 0x0e, 0x0e, 0x33, 0x95, 0xfc, 0x7f, 0x5e, 0xb8, 
-  0xcb, 0x76, 0x05, 0x57, 0xea, 0x42, 0xba, 0x2d, 0x56, 0xe3, 0x35, 
-  0x2b, 0xd2, 0xc4, 0x7b, 0xf4, 0xff, 0xff, 0xbd, 0x11, 0x66, 0xd8, 
-  0xed, 0x27, 0xfa, 0x12, 0x15, 0x63, 0xb4, 0xc0, 0xc4, 0x42, 0x69, 
-  0xfd, 0x4e, 0x9f, 0x6f, 0x57, 0x7f, 0x85, 0xef, 0xef, 0x71, 0xa6, 
-  0x82, 0x29, 0x36, 0x27, 0x5a, 0xaf, 0x52, 0xf2, 0x54, 0xe8, 0x9c, 
-  0xf6, 0x68, 0xd0, 0xe0, 0xa1, 0xdd, 0x93, 0xe4, 0x37, 0x21, 0x10, 
-  0x52, 0x60, 0xcf, 0x2c, 0xda, 0xee, 0xef, 0x1b, 0x64, 0x27, 0xc9, 
-  0x94, 0x3e, 0x87, 0xf5, 0x1b, 0x41, 0x34, 0x4c, 0x3e, 0x4a, 0x4e, 
-  0x35, 0x46, 0x20, 0x37, 0x36, 0x15, 0xb0, 0xa6, 0x0c, 0x38, 0xfb, 
-  0x50, 0x1a, 0xe1, 0x0b, 0xe8, 0xec, 0x1a, 0x9a, 0x84, 0xa3, 0xa7, 
-  0x6e, 0x4b, 0x83, 0x87, 0x6b, 0xdd, 0x11, 0xa8, 0xcb, 0x27, 0x57, 
-  0x8d, 0x1a, 0x9c, 0x93, 0x24, 0xa3, 0xd1, 0x9a, 0x2c, 0xe9, 0xf0, 
-  0xde, 0xc2, 0x6c, 0x4f, 0x91, 0x38, 0x92, 0x36, 0x06, 0xc2, 0xdd, 
-  0x6b, 0x00, 0x69, 0xfa, 0x2e, 0x2b, 0xa9, 0x86, 0xe4, 0xa3, 0xd0, 
-  0xf9, 0x51, 0xa9, 0x35, 0x46, 0x31, 0x2b, 0x1d, 0x70, 0x0e, 0x13, 
-  0x02, 0x72, 0xe8, 0x01, 0x35, 0xb2, 0x92, 0x6b, 0x98, 0x4a, 0xe0, 
-  0xaa, 0x69, 0xa3, 0x36, 0x9c, 0x1e, 0x51, 0x34, 0xc2, 0x84, 0x09, 
-  0x2c, 0x89, 0x89, 0x25, 0xa9, 0xe3, 0x94, 0xdb, 0x10, 0xe5, 0x07, 
-  0xc8, 0x32, 0x4f, 0x29, 0x4f, 0xf4, 0x02, 0x19, 0x6a, 0x4c, 0x73, 
-  0x5a, 0xeb, 0x7a, 0x76, 0x06, 0x79, 0x82, 0xba, 0x61, 0x36, 0xb7, 
-  0x0f, 0x8e, 0xcd, 0x17, 0x51, 0xea, 0xda, 0xe7, 0xab, 0xff, 0x19, 
-  0xf1, 0xe5, 0x9d, 0x64, 0x3c, 0xd3, 0xc2, 0x3b, 0x45, 0xd5, 0xfc, 
-  0xc1, 0x0f, 0x14, 0xf2, 0xd5, 0xda, 0x8c, 0xf4, 0x6d, 0x5d, 0x04, 
-  0xbf, 0xe0, 0xe3, 0xfc, 0x5a, 0xf8, 0xe8, 0x6b, 0x2e, 0x07, 0xc4, 
-  0x03, 0xca, 0xbe, 0x1e, 0xb7, 0x0f, 0x31, 0xf4, 0x72, 0x16, 0x6b, 
-  0x21, 0x56, 0xbc, 0x9d, 0xa1, 0x94, 0xb8, 0x95, 0x5c, 0xfa, 0x91, 
-  0xf9, 0x7f, 0xf3, 0x0a, 0xef, 0x73, 0xab, 0x8b, 0xea, 0x72, 0x22, 
-  0x0b, 0x06, 0xfc, 0x97, 0xda, 0x56, 0x98, 0xd5, 0xb4, 0xbc, 0x5a, 
-  0xd4, 0x4f, 0x88, 0x03, 0x68, 0x7f, 0x3d, 0xac, 0xea, 0xd5, 0x9a, 
-  0x3d, 0x8e, 0x43, 0x8f, 0x0f, 0xbe, 0x78, 0x30, 0x4b, 0x76, 0xc5, 
-  0x01, 0x2d, 0xbc, 0x1f, 0xba, 0x98, 0x28, 0xf0, 0xd3, 0x4b, 0x4a, 
-  0x1d, 0x8a, 0x15, 0xb5, 0xb0, 0x0b, 0x58, 0x73, 0xd0, 0x4b, 0x67, 
-  0x2f, 0x4a, 0xe0, 0x18, 0x22, 0xa9, 0x1c, 0x8e, 0x2a, 0x6a, 0xac, 
-  0x44, 0x1e, 0xa3, 0x36, 0x45, 0x6c, 0xcb, 0x55, 0x8f, 0xaa, 0x22, 
-  0x8d, 0x1d, 0x16, 0x50, 0xe5, 0x6b, 0xa8, 0x8d, 0x8f, 0xeb, 0x5a, 
-  0xdb, 0x05, 0x32, 0x0a, 0xed, 0xad, 0x39, 0xac, 0xfe, 0xce, 0xf5, 
-  0xa9, 0x07, 0x42, 0xbb, 0xcb, 0xf5, 0xfc, 0xd6, 0xc2, 0xe3, 0x8e, 
-  0xf7, 0xd7, 0xc0, 0x21, 0x69, 0xe5, 0x91, 0x4f, 0xe1, 0xdf, 0x55, 
-  0xa3, 0x20, 0xea, 0x3e, 0xa8, 0x65, 0x04, 0x2f, 0x5c, 0xe0, 0x27, 
-  0x85, 0x66, 0x79, 0x21, 0xae, 0x6d, 0x16, 0x17, 0xf8, 0x13, 0xa2, 
-  0x08, 0xdd, 0xc6, 0x90, 0x25, 0x6d, 0x20, 0x85, 0xb4, 0x7f, 0x61, 
-  0x55, 0x3b, 0xaf, 0x71, 0xc8, 0xed, 0x83, 0xa3, 0x15, 0x5e, 0xdd, 
-  0xf6, 0x24, 0xaa, 0x55, 0x1a, 0xa6, 0x38, 0x40, 0x8f, 0x61, 0x5a, 
-  0xc9, 0xcf, 0x77, 0xf9, 0xbe, 0x66, 0x91, 0xb7, 0x9c, 0xe6, 0x93, 
-  0xea, 0xf1, 0x25, 0x72, 0x68, 0x48, 0x0d, 0xcd, 0x7d, 0xe4, 0x06, 
-  0xd3, 0xa4, 0x44, 0x9c, 0xc5, 0x2b, 0x20, 0x40, 0x23, 0x44, 0x3a, 
-  0x9d, 0xdf, 0x71, 0x2e, 0xba, 0x9a, 0x6f, 0x1e, 0xcb, 0x30, 0x1e, 
-  0x43, 0xf2, 0x9b, 0x60, 0x0c, 0x85, 0x2f, 0x7d, 0xb5, 0x55, 0x2d, 
-  0x02, 0x52, 0xf9, 0x8a, 0x02, 0x91, 0xb5, 0x92, 0x95, 0xf8, 0x3e, 
-  0x95, 0x84, 0xef, 0x01, 0x02, 0x57, 0xd9, 0xc9, 0xbe, 0xb3, 0x36, 
-  0x54, 0x9d, 0x88, 0xb0, 0x96, 0x95, 0x1a, 0x91, 0xd5, 0x22, 0xaa, 
-  0xb0, 0x4f, 0x5f, 0x1c, 0xf2, 0x5a, 0xad, 0x1b, 0x52, 0x12, 0x86, 
-  0x7b, 0xe2, 0xfa, 0xd1, 0xa3, 0x83, 0x8e, 0xaa, 0x47, 0x39, 0x36, 
-  0xb1, 0x75, 0x4d, 0xa9, 0xbb, 0xe1, 0xad, 0xa0, 0x5d, 0x89, 0xfa, 
-  0xb1, 0xb4, 0x9e, 0x59, 0x46, 0xfe, 0x99, 0xf0, 0x8d, 0xc0, 0x9f, 
-  0xf7, 0x4e, 0x16, 0x46, 0x35, 0xf2, 0x3c, 0xe9, 0x96, 0xf0, 0x67, 
-  0xef, 0xb2, 0xff, 0x9a, 0xdd, 0xbc, 0x57, 0xde, 0xd8, 0xbc, 0x38, 
-  0x12, 0x36, 0xc4, 0x7e, 0x45, 0xc2, 0x87, 0x75, 0x1a, 0xbe, 0x5e, 
-  0x60, 0x6c, 0x07, 0x9d, 0x70, 0x69, 0x1d, 0xd9, 0x68, 0x3b, 0x71, 
-  0x76, 0x31, 0x69, 0xff, 0x56, 0xc2, 0x3a, 0x74, 0x53, 0xd9, 0x32, 
-  0xae, 0x04, 0xba, 0x8c, 0x19, 0xc5, 0x08, 0x22, 0xae, 0x41, 0x94, 
-  0xf9, 0x20, 0x98, 0x6c, 0x6c, 0x0f, 0x4b, 0x45, 0x29, 0xaf, 0x40, 
-  0x0f, 0xe7, 0x79, 0xdb, 0xea, 0x3b, 0x40, 0x9a, 0xd2, 0x06, 0x86, 
-  0x41, 0x8e, 0xfb, 0xcd, 0x8b, 0x54, 0x7e, 0xcf, 0x89, 0x55, 0x40, 
-  0xec, 0xd1, 0x84, 0x77, 0x5c, 0xd1, 0x7f, 0xd2, 0x08, 0x4f, 0xea, 
-  0x43, 0x87, 0xc2, 0x8b, 0x06, 0x84, 0x7d, 0x5e, 0x19, 0x51, 0xd9, 
-  0xe6, 0x85, 0x46, 0xd7, 0xa3, 0xdf, 0x9e, 0x24, 0x00, 0x6a, 0x4f, 
-  0xcb, 0x9f, 0xd8, 0x4f, 0x76, 0xb8, 0xc3, 0xe9, 0xa6, 0xcc, 0x52, 
-  0x0f, 0xf3, 0xc4, 0x5b, 0xaa, 0xe4, 0x36, 0x1e, 0x29, 0xc3, 0x20, 
-  0xcf, 0x15, 0x64, 0x95, 0x17, 0x49, 0x37, 0x4d, 0xfa, 0x07, 0x49, 
-  0x96, 0x45, 0x6c, 0x14, 0xa3, 0xeb, 0x97, 0x62, 0x17, 0xf2, 0x99, 
-  0xa2, 0x00, 0x35, 0x75, 0xab, 0x90, 0x6c, 0x33, 0x6a, 0x7c, 0xe1, 
-  0x55, 0x96, 0x4a, 0x98, 0xb9, 0xde, 0x49, 0x76, 0xd3, 0xc6, 0x5b, 
-  0xe6, 0xff, 0x58, 0xfc, 0xfc, 0x0e, 0xc8, 0x83, 0x9c, 0xd9, 0x93, 
-  0x9c, 0x6b, 0x4f, 0x83, 0xd4, 0x68, 0xce, 0xb6, 0x71, 0xfe, 0x5a, 
-  0x9d, 0x69, 0xee, 0xde, 0x25, 0xa0, 0xc5, 0x8c, 0x9b, 0x30, 0x5b, 
-  0x18, 0x46, 0xbb, 0x86, 0xd3, 0x3c, 0xd6, 0x6d, 0x06, 0x9c, 0x44, 
-  0x0b, 0x40, 0x61, 0x1f, 0x3d, 0xb8, 0x08, 0x65, 0x33, 0x05, 0x56, 
-  0xe9, 0xe7, 0x58, 0x2f, 0xa3, 0x8f, 0x7f, 0x38, 0x8e, 0x84, 0x8d, 
-  0x9c, 0xd1, 0xde, 0xa3, 0xcf, 0x75, 0x12, 0x0e, 0x14, 0x3a, 0xa4, 
-  0xbc, 0x88, 0x22, 0xf5, 0xaf, 0xc9, 0x38, 0x49, 0x4e, 0x09, 0x92, 
-  0xcf, 0x23, 0xf6, 0x17, 0xd4, 0x0d, 0xa3, 0x8d, 0x3c, 0xa8, 0xc9, 
-  0x27, 0xa8, 0x83, 0xb7, 0x7d, 0xad, 0xc3, 0xa9, 0x0f, 0x91, 0xf3, 
-  0x56, 0x61, 0x58, 0x10, 0x1b, 0x23, 0x91, 0x8e, 0xf9, 0x3c, 0xe8, 
-  0xc1, 0xe4, 0x0a, 0x37, 0x7c, 0x47, 0x3d, 0x6d, 0xc5, 0x61, 0xe6, 
-  0x6e, 0x95, 0xdd, 0x1a, 0xa7, 0x1e, 0x80, 0x83, 0x42, 0x92, 0x21, 
-  0xf5, 0xd5, 0x00, 0x0c, 0x1e, 0x37, 0x2d, 0xe3, 0x9f, 0xf5, 0xc9, 
-  0x97, 0x7d, 0x82, 0x0e, 0x70, 0xcf, 0xbd, 0x83, 0x8b, 0x94, 0x22, 
-  0x83, 0x52, 0x05, 0xf5, 0xfe, 0x1b, 0xa3, 0x24, 0xd2, 0x53, 0xec, 
-  0x52, 0x08, 0xe6, 0x89, 0x51, 0xde, 0xf8, 0x85, 0xb5, 0x9e, 0x01, 
-  0x83, 0x87, 0x5c, 0x61, 0x58, 0x08, 0xf6, 0x0c, 0x7e, 0x49, 0x66, 
-  0xb4, 0xfa, 0xeb, 0xf4, 0xd9, 0xf5, 0x9a, 0xa5, 0xdb, 0xfe, 0x87, 
-  0x56, 0x8e, 0x40, 0xb0, 0x72, 0xa8, 0xe2, 0x49, 0x3d, 0x8b, 0x65, 
-  0x2a, 0x04, 0xf0, 0x6f, 0x1a, 0xce, 0x9c, 0x2b, 0x85, 0x68, 0xcb, 
-  0x7f, 0x2b, 0x49, 0xaf, 0x32, 0x77, 0x32, 0xe6, 0x55, 0xd4, 0x1f, 
-  0xc4, 0xb4, 0x1f, 0xa9, 0xcb, 0xb8, 0x95, 0xbd, 0x60, 0xf7, 0xd3, 
-  0xec, 0xa6, 0x0c, 0x08, 0x78, 0xb2, 0x71, 0x93, 0x47, 0x6d, 0xa2, 
-  0x21, 0xb9, 0xa0, 0x2f, 0xe3, 0xc0, 0xea, 0x21, 0x12, 0x5f, 0x40, 
-  0x93, 0xbe, 0xf5, 0xcf, 0xd0, 0x93, 0xf6, 0xdd, 0x30, 0xf1, 0xf1, 
-  0xd2, 0x03, 0x07, 0x38, 0x0c, 0xd8, 0x6d, 0x0f, 0xae, 0x5b, 0x3a, 
-  0x06, 0x49, 0xbb, 0x26, 0x6c, 0x0a, 0xeb, 0xaf, 0xb0, 0x27, 0x89, 
-  0xd2, 0x63, 0x73, 0xda, 0xba, 0xdf, 0xcc, 0xf2, 0xbb, 0xe2, 0x89, 
-  0x27, 0xfc, 0x98, 0xb3, 0xbf, 0x62, 0x25, 0xee, 0x01, 0xff, 0x9c, 
-  0xfa, 0xc9, 0x2b, 0x4c, 0x43, 0xda, 0x45, 0x5f, 0x66, 0x1c, 0x13, 
-  0xf2, 0x58, 0x34, 0x3e, 0xc1, 0x8c, 0xf8, 0x53, 0x67, 0x36, 0xf4, 
-  0xa7, 0x9d, 0xaa, 0xc5, 0xfd, 0xb8, 0x93, 0xf9, 0xd9, 0x27, 0x61, 
-  0xa5, 0x39, 0x6b, 0x67, 0xe8, 0x2a, 0xad, 0x74, 0xfe, 0x46, 0xa0, 
-  0xdc, 0xe6, 0x7c, 0x5a, 0xc0, 0xfc, 0x00, 0xcf, 0x3e, 0x00, 0xba, 
-  0xc7, 0xf2, 0xdb, 0xb4, 0x8e, 0x42, 0x4a, 0x0b, 0xe2, 0xba, 0xd2, 
-  0x1d, 0x5e, 0x27, 0x30, 0x6c, 0xf7, 0x87, 0x7e, 0xb7, 0xdd, 0x23, 
-  0xdc, 0xa2, 0x19, 0x57, 0x42, 0xd5, 0xae, 0xe9, 0x02, 0x2a, 0x24, 
-  0xf8, 0x4f, 0x3b, 0x69, 0x90, 0x7b, 0xcd, 0xaf, 0x29, 0x53, 0xe0, 
-  0x98, 0xe0, 0x25, 0xa1, 0x61, 0x89, 0x22, 0xfb, 0xc0, 0xc8, 0x69, 
-  0x80, 0x8c, 0x4d, 0x7f, 0xd2, 0xf5, 0xed, 0xea, 0x14, 0xb7, 0xf6, 
-  0x06, 0x00, 0x98, 0x3a, 0xb0, 0xa2, 0xfb, 0xaf, 0xe2, 0x29, 0x0e, 
-  0x8a, 0xa0, 0xb0, 0xa7, 0x33, 0xa2, 0xc7, 0xbc, 0x1d, 0xfb, 0xa8, 
-  0x81, 0x61, 0x1d, 0x0b, 0x58, 0xa1, 0x52, 0x0d, 0xdc, 0x0e, 0x29, 
-  0x44, 0xa9, 0xc5, 0xfd, 0xc5, 0xf8, 0x84, 0x42, 0xb3, 0xb1, 0x2a, 
-  0x01, 0x7b, 0x1a, 0x07, 0xde, 0x35, 0x61, 0x8e, 0x45, 0xbd, 0x79, 
-  0x7b, 0x7c, 0x3c, 0x74, 0x55, 0xe1, 0x2d, 0x8a, 0x89, 0xad, 0xeb, 
-  0x14, 0xc9, 0xf4, 0x88, 0xcb, 0xde, 0x81, 0xf0, 0x1e, 0x0c, 0xbb, 
-  0x7e, 0xbe, 0xbf, 0x06, 0xe4, 0xc9, 0x64, 0xd8, 0x5b, 0x43, 0x80, 
-  0x1f, 0x8b, 0xe0, 0x38, 0x20, 0xa1, 0xa7, 0xce, 0x46, 0x7a, 0x1a, 
-  0xe7, 0x27, 0x91, 0xaf, 0xa1, 0xdf, 0xf4, 0xb2, 0xa1, 0x32, 0x49, 
-  0xf1, 0x4b, 0xed, 0x32, 0xed, 0x24, 0x63, 0x0b, 0xa4, 0x36, 0xcc, 
-  0xa2, 0xad, 0x3b, 0xcd, 0x08, 0x18, 0x7e, 0x96, 0x41, 0x18, 0x8c, 
-  0x75, 0x98, 0xdf, 0xac, 0x59, 0x5e, 0x9a, 0x2a, 0xcb, 0x8f, 0xd9, 
-  0x87, 0x63, 0x0f, 0x1d, 0x44, 0x14, 0xac, 0xd7, 0x0d, 0x7e, 0xed, 
-  0x1f, 0x1c, 0x2f, 0xf2, 0xf5, 0xc2, 0xa1, 0x1b, 0x31, 0x7d, 0x1b, 
-  0x8b, 0x01, 0xea, 0x03, 0x93, 0x3f, 0x8a, 0xb8, 0x07, 0x72, 0x54, 
-  0xad, 0xb3, 0xbf, 0x69, 0x4c, 0x6c, 0x59, 0xc1, 0x6d, 0x89, 0x48, 
-  0x65, 0x9e, 0xd4, 0x25, 0xfc, 0xeb, 0xf7, 0xe5, 0x1c, 0x6e, 0xfb, 
-  0x0b, 0xfd, 0x90, 0xd4, 0x76, 0x6b, 0x27, 0xc3, 0xd9, 0x4b, 0x4b, 
-  0x9a, 0x19, 0x53, 0xc0, 0xf0, 0xdf, 0xdf, 0x48, 0x0c, 0xe6, 0xd5, 
-  0xb5, 0xc1, 0x37, 0x88, 0x0b, 0x43, 0x2f, 0xcd, 0x46, 0xa4, 0x77, 
-  0x64, 0x35, 0x8d, 0x7a, 0xd2, 0x27, 0x24, 0xb7, 0xa2, 0xae, 0xd3, 
-  0xa0, 0x91, 0x12, 0xbc, 0x30, 0xf5, 0xfe, 0x30, 0xc2, 0x00, 0x52, 
-  0xcd, 0xb8, 0x38, 0xb2, 0xa5, 0x72, 0xca, 0x35, 0xe6, 0x29, 0x25, 
-  0xcc, 0x12, 0xf6, 0xbb, 0xea, 0x0d, 0xd4, 0x67, 0xd1, 0x35, 0x53, 
-  0x22, 0x32, 0xfe, 0x5f, 0x49, 0x34, 0xdb, 0x4b, 0xfb, 0x13, 0x14, 
-  0x0f, 0x77, 0x2a, 0x78, 0x1c, 0xcf, 0x5f, 0x3e, 0x1b, 0x7a, 0x61, 
-  0xd0, 0x0c, 0x41, 0x14, 0xf3, 0x76, 0x41, 0x54, 0xd7, 0x60, 0xca, 
-  0x4d, 0x00, 0x2d, 0x08, 0xc8, 0x54, 0x43, 0xd3, 0x4f, 0x23, 0x8d, 
-  0x3c, 0xa7, 0x0d, 0x19, 0x55, 0x1a, 0x8b, 0x29, 0xcc, 0xfe, 0x98, 
-  0x9e, 0x47, 0x3d, 0xfc, 0x22, 0xd4, 0xe3, 0xd4, 0xfa, 0xb8, 0xcf, 
-  0x81, 0x4c, 0xc9, 0xa1, 0x9a, 0x06, 0xae, 0x4f, 0x4e, 0x8d, 0x07, 
-  0x06, 0x53, 0x3a, 0xe6, 0xc9, 0xa7, 0x3e, 0x81, 0xe0, 0xdf, 0x2b, 
-  0xb0, 0xc8, 0xfe, 0x22, 0xcc, 0x93, 0x6f, 0xa2, 0xde, 0xc4, 0x4d, 
-  0x0f, 0x00, 0x90, 0xe4, 0x01, 0x87, 0xea, 0x77, 0x5c, 0xc2, 0x90, 
-  0xee, 0x65, 0x85, 0x96, 0xff, 0xf2, 0xfe, 0x5d, 0x5d, 0xd1, 0xc3, 
-  0xe4, 0x39, 0x54, 0xf9, 0xdb, 0xc6, 0x5b, 0xe8, 0x01, 0x50, 0x45, 
-  0x24, 0xcd, 0xc4, 0xdf, 0xd9, 0x12, 0x51, 0x64, 0x33, 0xf1, 0xf2, 
-  0x26, 0x13, 0x74, 0x40, 0x90, 0x95, 0x66, 0x39, 0x85, 0xcb, 0xeb, 
-  0x26, 0xad, 0x63, 0x05, 0xa2, 0xf2, 0x19, 0xf8, 0x74, 0x12, 0xd2, 
-  0xed, 0x67, 0x89, 0xbe, 0x6c, 0xe5, 0x58, 0xbc, 0xea, 0xb2, 0xef, 
-  0x68, 0x26, 0x56, 0x65, 0x98, 0xdc, 0x89, 0x20, 0x94, 0x91, 0x86, 
-  0x62, 0x99, 0xad, 0x2f, 0x00, 0xde, 0x6e, 0x9e, 0xce, 0x75, 0xe7, 
-  0x98, 0x1c, 0x6b, 0xfe, 0x69, 0x78, 0x3b, 0xdb, 0x0b, 0x97, 0x25, 
-  0x1c, 0x58, 0xc2, 0xdf, 0x3a, 0x17, 0x3c, 0x97, 0xa9, 0x8d, 0xf6, 
-  0xe3, 0xe9, 0xbe, 0xcd, 0x2a, 0x39, 0x70, 0xa8, 0xbc, 0xaa, 0x09, 
-  0xc0, 0xdb, 0x23, 0xbc, 0x7d, 0xa4, 0x41, 0xed, 0x1b, 0x5d, 0x45, 
-  0x70, 0x31, 0x19, 0x1e, 0xc7, 0x7b, 0xb1, 0xd2, 0xb1, 0xa5, 0x74, 
-  0xc0, 0x4f, 0x00, 0x0b, 0x74, 0xc8, 0xf1, 0xbb, 0xdb, 0x0d, 0xe9, 
-  0xac, 0x98, 0xd5, 0x87, 0x8c, 0x4e, 0x45, 0xbb, 0xb5, 0xa6, 0x47, 
-  0xe6, 0xb8, 0xdc, 0xe6, 0x51, 0x11, 0x8d, 0x4f, 0x24, 0x36, 0x5f, 
-  0xb5, 0x7e, 0x53, 0xe2, 0xf3, 0x6e, 0xa0, 0x06, 0xe1, 0xe6, 0x0b, 
-  0x8d, 0x76, 0x16, 0xa0, 0x62, 0xe0, 0x86, 0xaf, 0x7a, 0x5c, 0xb0, 
-  0x51, 0xd5, 0xc7, 0x27, 0xc7, 0x2c, 0xec, 0x3a, 0xab, 0x2d, 0x6c, 
-  0x3c, 0x35, 0x48, 0x77, 0xec, 0x10, 0x8d, 0x7f, 0x4d, 0xf2, 0x20, 
-  0xce, 0x02, 0x82, 0xa4, 0xcd, 0x40, 0xc3, 0xb8, 0xda, 0xcb, 0xe8, 
-  0xbe, 0x59, 0x2e, 0x1f, 0xc3, 0x06, 0x89, 0x9a, 0xf4, 0x1c, 0x7e, 
-  0x65, 0x12, 0xf2, 0x75, 0xd2, 0x4d, 0x08, 0x9e, 0xef, 0x4f, 0xe1, 
-  0x46, 0x2f, 0x5e, 0x5e, 0xd5, 0xc4, 0x5a, 0xff, 0x2a, 0x3a, 0xdd, 
-  0xb1, 0x11, 0x79, 0x07, 0x1b, 0x0f, 0x5d, 0x11, 0x53, 0x17, 0xe9, 
-  0x23, 0x81, 0x63, 0x71, 0x32, 0x90, 0xd9, 0xba, 0x50, 0xd2, 0x09, 
-  0xe9, 0x5d, 0xdb, 0x23, 0x2f, 0xaf, 0xe2, 0x84, 0xbd, 0x3e, 0x60, 
-  0x99, 0xb3, 0x05, 0xf4, 0x6a, 0xd1, 0x71, 0x0f, 0xe1, 0x87, 0x28, 
-  0x4c, 0x2f, 0x64, 0xde, 0x93, 0x10, 0xb5, 0x54, 0xab, 0xed, 0x5b, 
-  0xd3, 0x5e, 0xdc, 0x8c, 0x3a, 0x9a, 0xc4, 0xaf, 0x84, 0xe8, 0x42, 
-  0x2c, 0x22, 0x0c, 0x7e, 0x52, 0x58, 0x51, 0xd1, 0xb2, 0xef, 0x26, 
-  0xf8, 0x36, 0xdf, 0x73, 0xb0, 0x31, 0xe5, 0x97, 0xfa, 0xc9, 0x0d, 
-  0x2c, 0xb7, 0xf2, 0x0a, 0x7d, 0x1e, 0xfe, 0x25, 0x90, 0xfe, 0x31, 
-  0x2f, 0xf2, 0x6e, 0x97, 0x96, 0x21, 0xe1, 0xb4, 0x11, 0xf8, 0xb0, 
-  0x28, 0x39, 0xff, 0xf2, 0xc6, 0x3c, 0x0b, 0x75, 0x4a, 0xa7, 0x55, 
-  0xb2, 0x53, 0x32, 0xc4, 0xf2, 0xaf, 0xc4, 0xcf, 0xc0, 0x30, 0xe9, 
-  0x79, 0x1f, 0x4a, 0xf7, 0x77, 0x6d, 0xf7, 0x25, 0xbc, 0xa1, 0x2a, 
-  0x97, 0x3f, 0x02, 0xec, 0x98, 0xfc, 0x9b, 0x83, 0xc9, 0xad, 0x60, 
-  0xe4, 0x57, 0x0f, 0xdf, 0x98, 0x2b, 0x14, 0x7d, 0x22, 0x9a, 0x40, 
-  0x76, 0xbb, 0xaf, 0x30, 0xb3, 0x6b, 0x22, 0x48, 0x2c, 0xf9, 0x6f, 
-  0x86, 0x74, 0x5f, 0xa4, 0xb9, 0x1c, 0xe3, 0xc8, 0xec, 0x8a, 0xf5, 
-  0x5d, 0x58, 0x1f, 0x5f, 0x61, 0xb2, 0x99, 0x55, 0xf1, 0x18, 0x59, 
-  0x01, 0xa6, 0xfb, 0x55, 0x11, 0xb1, 0xdb, 0x54, 0xc6, 0xff, 0xf9, 
-  0xda, 0x1e, 0xb9, 0xd2, 0xaf, 0xef, 0x58, 0x66, 0x48, 0x63, 0x19, 
-  0xe5, 0xaf, 0xc8, 0xed, 0x80, 0x94, 0xbe, 0x2c, 0xdc, 0x44, 0xea, 
-  0x04, 0x64, 0x94, 0x56, 0xf2, 0x82, 0xef, 0x53, 0x95, 0x89, 0x86, 
-  0xf3, 0x24, 0xbc, 0x66, 0xbc, 0x47, 0x7f, 0xc0, 0x80, 0x2a, 0x1e, 
-  0x95, 0x22, 0x40, 0x76, 0x17, 0xf5, 0x3a, 0x74, 0xe2, 0xd3, 0xc6, 
-  0xba, 0x46, 0xd8, 0xa4, 0x7c, 0x42, 0x20, 0x2d, 0xce, 0x9a, 0xb3, 
-  0x64, 0x9c, 0xf1, 0xac, 0x50, 0xaa, 0x81, 0xfa, 0x29, 0xef, 0xe2, 
-  0x41, 0x81, 0xdc, 0x36, 0xc9, 0xc9, 0x99, 0x78, 0x35, 0xff, 0x4e, 
-  0xb2, 0x59, 0xa7, 0xb1, 0x9d, 0xc0, 0x91, 0xd0, 0x88, 0x34, 0x09, 
-  0x16, 0xf1, 0xe3, 0x8c, 0x42, 0x63, 0x78, 0x05, 0x0d, 0xbe, 0x72, 
-  0xf1, 0x62, 0x73, 0x85, 0xab, 0xa8, 0xa9, 0xa1, 0x44, 0x7f, 0x8c, 
-  0xc8, 0x8b, 0xd9, 0x8a, 0xf4, 0xda, 0x85, 0x26, 0x19, 0x2e, 0xdf, 
-  0xdf, 0xc2, 0x77, 0x8f, 0x1d, 0x8e, 0x62, 0x2d, 0xe7, 0xc4, 0xb1, 
-  0xbe, 0x16, 0xac, 0x61, 0x78, 0xa1, 0x35, 0x8a, 0xc7, 0xea, 0x84, 
-  0x8b, 0x10, 0xe4, 0xf4, 0x79, 0x08, 0x04, 0x0b, 0x90, 0x20, 0x27, 
-  0xaf, 0xb5, 0xda, 0x0d, 0x04, 0xdc, 0xb7, 0x1b, 0x07, 0x96, 0xba, 
-  0x17, 0x99, 0xd3, 0x5f, 0x8a, 0xb2, 0x40, 0x80, 0x34, 0x39, 0x52, 
-  0xf3, 0xf1, 0x8b, 0x17, 0xf2, 0x41, 0xf3, 0x42, 0xf5, 0x5f, 0x61, 
-  0xcc, 0x54, 0xea, 0xb1, 0x8a, 0x0e, 0xcb, 0x0b, 0x8a, 0x9e, 0xdf, 
-  0x38, 0x96, 0x27, 0xff, 0x4b, 0xc3, 0xd6, 0x66, 0x38, 0x62, 0x6a, 
-  0xbc, 0x69, 0xa0, 0x90, 0x87, 0x0f, 0xa1, 0xca, 0x88, 0x0d, 0x9d, 
-  0x11, 0x42, 0x3d, 0x33, 0x9c, 0xe4, 0xb4, 0x64, 0x80, 0x49, 0x56, 
-  0x9d, 0x03, 0x4b, 0x6d, 0xae, 0x75, 0x56, 0xe3, 0x38, 0x05, 0x88, 
-  0x5b, 0xca, 0x6e, 0xa1, 0x99, 0x33, 0x86, 0x9d, 0xaf, 0x19, 0xe4, 
-  0x3d, 0xea, 0x5f, 0xb0, 0x4e, 0x1b, 0x46, 0xf9, 0x58, 0x8a, 0xed, 
-  0xa1, 0x74, 0xca, 0x00, 0x1b, 0x31, 0x21, 0x36, 0x7b, 0x30, 0x36, 
-  0x64, 0x5f, 0x16, 0x0a, 0x38, 0xe2, 0x50, 0xd5, 0xf6, 0x06, 0x7f, 
-  0x47, 0x35, 0x8c, 0x07, 0x4a, 0x25, 0x3f, 0xb2, 0xae, 0x3d, 0x37, 
-  0xee, 0xbc, 0xbe, 0xfc, 0x62, 0x7f, 0x39, 0x6e, 0x04, 0xc5, 0x39, 
-  0x7a, 0x98, 0x50, 0x05, 0xd9, 0xe6, 0xcd, 0xe4, 0xf4, 0x70, 0x9e, 
-  0xc1, 0xd0, 0xec, 0xa9, 0x73, 0xf8, 0x30, 0xc8, 0xd8, 0x58, 0x57, 
-  0x94, 0x94, 0x72, 0xa4, 0x1c, 0xdd, 0x66, 0xa1, 0xf4, 0xb8, 0x5c, 
-  0x04, 0xd8, 0xbb, 0xb1, 0x73, 0x84, 0xc7, 0x95, 0x2a, 0xc7, 0xeb, 
-  0xbf, 0x49, 0xb0, 0xbc, 0xc3, 0x4b, 0xf0, 0xdc, 0x26, 0xb6, 0x72, 
-  0x2b, 0x2a, 0x64, 0x8f, 0x9f, 0xc0, 0x97, 0x17, 0x34, 0xb3, 0xd6, 
-  0xdc, 0xf6, 0x0d, 0x35, 0x17, 0x3e, 0xb8, 0x3f, 0xd2, 0x23, 0xec, 
-  0x33, 0x6a, 0x9c, 0x77, 0x3a, 0x62, 0x2c, 0x26, 0x54, 0xc7, 0x82, 
-  0x04, 0x1f, 0x12, 0x1b, 0xe8, 0x66, 0xda, 0x15, 0x5c, 0x0c, 0x57, 
-  0xd6, 0x04, 0x49, 0xb7, 0xfb, 0x66, 0x85, 0xfb, 0x34, 0xb7, 0xde, 
-  0x4f, 0x59, 0x5e, 0x66, 0x05, 0xff, 0x7e, 0x80, 0x93, 0xb2, 0x87, 
-  0x5b, 0xe6, 0x94, 0xe8, 0x00, 0x3f, 0x50, 0x7e, 0x1a, 0xb8, 0x4c, 
-  0x55, 0xd7, 0x44, 0x0d, 0xc3, 0xa8, 0xc5, 0xe0, 0xb4, 0x0c, 0x8e, 
-  0xa4, 0xe7, 0x41, 0x26, 0xac, 0x21, 0x9e, 0x04, 0xc0, 0x0b, 0xba, 
-  0xd7, 0x7c, 0x89, 0xf7, 0x10, 0xc7, 0x72, 0x82, 0xc5, 0xef, 0xc8, 
-  0x3e, 0xf7, 0x7f, 0xff, 0x54, 0xfe, 0x3e, 0xea, 0xc9, 0xf8, 0xd1, 
-  0x95, 0xd0, 0x10, 0x5b, 0xd0, 0x52, 0xd2, 0x1e, 0x90, 0xc0, 0xb1, 
-  0x12, 0xa1, 0xdf, 0x16, 0xb9, 0xc8, 0xcf, 0xf1, 0xc8, 0xf1, 0xbb, 
-  0x03, 0x56, 0x8a, 0xf4, 0x4e, 0x2e, 0xe4, 0xd4, 0x0a, 0x34, 0x18, 
-  0x63, 0xf5, 0x18, 0xee, 0x6b, 0x93, 0x9c, 0xbc, 0xca, 0xb1, 0xb4, 
-  0x9d, 0xa2, 0x89, 0x5a, 0xac, 0x1a, 0x47, 0xb8, 0x8c, 0xb2, 0x3e, 
-  0xbf, 0xed, 0xa4, 0xed, 0xf1, 0x65, 0x99, 0x7a, 0x23, 0x18, 0xde, 
-  0x8b, 0x1b, 0x9e, 0xdb, 0xf5, 0x37, 0x6c, 0x65, 0xfb, 0xbb, 0x09, 
-  0x49, 0x6c, 0xf8, 0x9a, 0xbd, 0xf6, 0x42, 0xae, 0xd2, 0x55, 0xda, 
-  0x42, 0xb5, 0xd6, 0x5d, 0xfc, 0x09, 0xc4, 0x2d, 0x87, 0xf2, 0x50, 
-  0xaf, 0x9c, 0xfb, 0xc1, 0x9a, 0x8e, 0x8d, 0x40, 0x8d, 0xb4, 0xb3, 
-  0x42, 0xb1, 0x48, 0xaa, 0x93, 0xa8, 0x44, 0x82, 0x75, 0xf7, 0x51, 
-  0xe2, 0x22, 0x42, 0xea, 0x1f, 0xd4, 0x7a, 0xbc, 0xd6, 0x8b, 0x1a, 
-  0x0e, 0x73, 0x36, 0x0c, 0xbf, 0x06, 0x2e, 0xd1, 0x9e, 0x19, 0x5a, 
-  0x11, 0x8e, 0x57, 0xcc, 0x97, 0xd2, 0x0b, 0x3c, 0x70, 0xca, 0x1a, 
-  0x22, 0xc3, 0x64, 0x19, 0xd2, 0x86, 0xf3, 0x64, 0x0b, 0xcb, 0xc4, 
-  0xa5, 0xfb, 0xb4, 0xca, 0x5e, 0xbf, 0x4e, 0x7d, 0x52, 0x2c, 0xdd, 
-  0x9b, 0x82, 0xb2, 0xaf, 0x31, 0x98, 0xc8, 0x89, 0xd6, 0xbb, 0x32, 
-  0x56, 0xed, 0x35, 0x1f, 0x7b, 0x64, 0x4b, 0x80, 0x4e, 0xc4, 0x22, 
-  0xeb, 0xa8, 0xd6, 0x8d, 0x18, 0x7e, 0x7f, 0x07, 0x31, 0xd8, 0xae, 
-  0x65, 0xf9, 0xea, 0x55, 0xf5, 0x86, 0x43, 0xcc, 0x9e, 0x6c, 0xcc, 
-  0x48, 0x47, 0xcf, 0x20, 0x19, 0xb1, 0xd2, 0x4b, 0x6b, 0x5c, 0x93, 
-  0xc7, 0x3b, 0x2a, 0x65, 0x18, 0x8d, 0x79, 0x40, 0x5e, 0xdf, 0xb3, 
-  0xb8, 0x19, 0x8a, 0x64, 0x52, 0x5d, 0x6d, 0xb5, 0xd8, 0x3e, 0x17, 
-  0xa2, 0xa4, 0x63, 0x6e, 0x9a, 0x53, 0x71, 0x3a, 0x88, 0xbb, 0xac, 
-  0xce, 0x69, 0x77, 0x5d, 0xa6, 0xcb, 0x61, 0x8d, 0x97, 0x1b, 0x7a, 
-  0x63, 0xe5, 0x90, 0x01, 0xf0, 0x52, 0xd5, 0x55, 0x8e, 0x35, 0xd4, 
-  0x92, 0x6b, 0x60, 0x61, 0x93, 0x7a, 0x33, 0x28, 0xee, 0xc6, 0xcd, 
-  0xf0, 0xd1, 0xa2, 0x0b, 0xd0, 0xfd, 0x1a, 0x48, 0x81, 0xa3, 0x4f, 
-  0xae, 0x1f, 0x6f, 0x59, 0x55, 0xd8, 0x5f, 0xc3, 0x43, 0xc5, 0x98, 
-  0x97, 0x60, 0x99, 0x1d, 0x2e, 0x72, 0xb9, 0xdb, 0x57, 0x45, 0x16, 
-  0xfc, 0x35, 0x15, 0xb3, 0x11, 0x5c, 0xa1, 0x4f, 0x4a, 0x36, 0x8b, 
-  0x4a, 0xcd, 0xcd, 0x61, 0x4d, 0x55, 0x47, 0x9b, 0x3e, 0x94, 0xa9, 
-  0x85, 0xf9, 0x71, 0x6f, 0x30, 0x98, 0xe2, 0x4a, 0x99, 0xfe, 0x10, 
-  0xcc, 0xe9, 0xa2, 0x1e, 0x96, 0xa5, 0x1d, 0x12, 0x67, 0x61, 0xf9, 
-  0xb0, 0x48, 0x02, 0xb0, 0x9b, 0xd8, 0xff, 0x40, 0xe4, 0x83, 0xfe, 
-  0x1e, 0xca, 0xb5, 0xfa, 0x13, 0x7b, 0x59, 0x61, 0x4b, 0x07, 0x3f, 
-  0xdc, 0x83, 0x64, 0x91, 0x61, 0xb4, 0x3d, 0xc5, 0xd3, 0x4b, 0x40, 
-  0x01, 0x7c, 0x5f, 0x12, 0xeb, 0x86, 0xf1, 0xee, 0x7c, 0x79, 0xec, 
-  0x00, 0xef, 0xbd, 0xfb, 0x10, 0x57, 0x79, 0x5f, 0xf3, 0xb7, 0xaf, 
-  0xe4, 0xc2, 0x62, 0x07, 0x41, 0xb6, 0xab, 0xaa, 0x0a, 0xd6, 0xab, 
-  0x3c, 0xb2, 0x16, 0xa5, 0xc2, 0x7d, 0x66, 0xda, 0x6b, 0xd8, 0xbd, 
-  0xf2, 0x33, 0xc7, 0x06, 0x49, 0x34, 0xfb, 0x53, 0x0b, 0xb5, 0x6c, 
-  0xd6, 0x4e, 0x66, 0x52, 0xac, 0x64, 0xc5, 0x0a, 0x9c, 0xb3, 0x56, 
-  0x38, 0xc7, 0x02, 0xa3, 0xa9, 0x83, 0x42, 0xdf, 0x8e, 0xb5, 0xf8, 
-  0x77, 0x03, 0x34, 0x56, 0xcd, 0xfe, 0x58, 0x2e, 0x3c, 0xb8, 0x77, 
-  0xfe, 0x38, 0xc5, 0x8a, 0x7f, 0xd4, 0xd0, 0x8d, 0x2d, 0x4b, 0x61, 
-  0xfc, 0xdb, 0x45, 0x90, 0xde, 0x26, 0x0d, 0xe5, 0xdc, 0x01, 0xb8, 
-  0xde, 0xad, 0x99, 0xdf, 0x31, 0xf1, 0xfc, 0x82, 0xe8, 0xe1, 0x5f, 
-  0x36, 0x6c, 0xe9, 0x8a, 0x08, 0x25, 0x30, 0xcf, 0x02, 0xf5, 0x64, 
-  0x87, 0xa2, 0x06, 0x4e, 0x16, 0x93, 0x44, 0xf1, 0x6d, 0x66, 0xbf, 
-  0xfd, 0x32, 0xe7, 0x04, 0xc2, 0xca, 0xc7, 0x07, 0x27, 0xf2, 0x4c, 
-  0xb5, 0x72, 0xf3, 0xda, 0xe8, 0x22, 0x28, 0x64, 0x6a, 0xa9, 0xca, 
-  0x42, 0x8d, 0x8c, 0xdc, 0x20, 0xc1, 0xd5, 0xf5, 0x51, 0x48, 0xfc, 
-  0xf1, 0x3a, 0xa2, 0x1c, 0x0b, 0xff, 0x92, 0x40, 0xeb, 0xa6, 0xdb, 
-  0xec, 0x77, 0xb4, 0xb5, 0xcd, 0x78, 0x0c, 0x3e, 0x1b, 0xfc, 0xde, 
-  0xad, 0xad, 0xbf, 0x72, 0x9a, 0x01, 0x41, 0x9d, 0x57, 0xcb, 0x34, 
-  0x5f, 0xb5, 0xf0, 0x45, 0x22, 0x5c, 0x94, 0xbb, 0xd6, 0x36, 0x15, 
-  0xc7, 0xec, 0x0c, 0x52, 0xec, 0x31, 0xc0, 0xe5, 0x75, 0x30, 0xf1, 
-  0x8d, 0xf1, 0x6a, 0xca, 0x88, 0x39, 0x16, 0x4e, 0xa2, 0xce, 0x1e, 
-  0x30, 0xa6, 0xe7, 0x74, 0x69, 0x6c, 0x25, 0x9f, 0xe8, 0xf6, 0xe2, 
-  0x1a, 0x43, 0x0d, 0x1f, 0x38, 0x6a, 0x9a, 0x50, 0x1e, 0xe2, 0xca, 
-  0xe8, 0xc8, 0x20, 0x36, 0x22, 0xc7, 0x29, 0x0b, 0x06, 0x8a, 0x60, 
-  0xf4, 0x50, 0xcd, 0x73, 0xf7, 0x0e, 0x47, 0x66, 0x4d, 0xba, 0x49, 
-  0x74, 0x83, 0x2c, 0x8b, 0xdc, 0x0f, 0x5f, 0xb0, 0xed, 0x07, 0xc7, 
-  0x8d, 0x4c, 0x59, 0x87, 0x1c, 0x2b, 0x71, 0xea, 0xba, 0xc5, 0xfd, 
-  0x91, 0xec, 0xf3, 0xdc, 0x3a, 0x90, 0x62, 0xb8, 0x0f, 0x9c, 0x42, 
-  0xf9, 0x4b, 0xb8, 0x3f, 0x02, 0x08, 0x33, 0x17, 0x19, 0x10, 0x86, 
-  0x5b, 0xc4, 0x9c, 0xdf, 0x6f, 0x54, 0xb6, 0x71, 0x3e, 0x35, 0x01, 
-  0x31, 0x3f, 0x67, 0xe4, 0x64, 0xd8, 0x05, 0x7c, 0x5e, 0x0f, 0xec, 
-  0xe1, 0x98, 0x08, 0xb1, 0xaa, 0x77, 0xa9, 0x09, 0xdc, 0x82, 0x6c, 
-  0x01, 0xbb, 0x35, 0xbe, 0x48, 0x9a, 0x97, 0x9d, 0xce, 0x42, 0x0e, 
-  0x30, 0x8b, 0x59, 0x1a, 0xcc, 0x8a, 0x7f, 0xa1, 0xf9, 0xcb, 0x06, 
-  0x3c, 0xb1, 0x1e, 0x21, 0xe4, 0x66, 0x2c, 0x27, 0x61, 0xe3, 0x1a, 
-  0xe0, 0x3f, 0x7a, 0x2a, 0x00, 0x82, 0x95, 0x95, 0x35, 0xd1, 0x1e, 
-  0x93, 0x9f, 0x0f, 0xca, 0xa5, 0x6b, 0x9c, 0x29, 0xbd, 0x82, 0x51, 
-  0x51, 0xdb, 0xc6, 0x92, 0x20, 0x8c, 0xfb, 0x1d, 0x48, 0x9f, 0x1c, 
-  0x2a, 0xe3, 0x43, 0x04, 0xb8, 0xa5, 0xa0, 0x8a, 0xde, 0x39, 0x60, 
-  0x9d, 0xe2, 0x17, 0xc9, 0x3e, 0x54, 0xb9, 0x47, 0x69, 0xbf, 0x0e, 
-  0xf1, 0x9e, 0x00, 0xe9, 0xca, 0x5f, 0x15, 0x65, 0xc3, 0xce, 0xa8, 
-  0x9b, 0xfa, 0x48, 0xc3, 0xf8, 0xb4, 0x69, 0xc9, 0xff, 0x3d, 0x85, 
-  0xd6, 0xad, 0x5b, 0x39, 0xfa, 0x8e, 0x17, 0xbf, 0xe0, 0x49, 0xe4, 
-  0xb8, 0xaa, 0xb3, 0x9b, 0xaf, 0x5a, 0x19, 0x64, 0xcf, 0x6e, 0x8c, 
-  0x4d, 0xc8, 0xf9, 0xfd, 0x7a, 0xc9, 0x18, 0xfb, 0xde, 0x32, 0x30, 
-  0xb0, 0x48, 0x45, 0x5f, 0x8d, 0x2f, 0x61, 0xb3, 0x98, 0x9b, 0xe3, 
-  0xd2, 0x40, 0xd6, 0x0c, 0x89, 0xc6, 0xe2, 0xc3, 0xc0, 0x53, 0x04, 
-  0xf9, 0xd6, 0x24, 0xf4, 0x61, 0x62, 0x5e, 0xb4, 0x49, 0xfd, 0xca, 
-  0x79, 0xb7, 0x48, 0x95, 0xc8, 0x8b, 0x75, 0xed, 0x06, 0x43, 0xec, 
-  0x45, 0xba, 0x46, 0x64, 0xfa, 0x70, 0x11, 0xd8, 0x4f, 0x19, 0x2d, 
-  0xff, 0xf5, 0x94, 0x9a, 0x8d, 0x91, 0xbd, 0x5c, 0x8c, 0x19, 0x5a, 
-  0x8a, 0xec, 0xea, 0xf5, 0x3e, 0x59, 0xec, 0x7a, 0x1a, 0xf4, 0x2e, 
-  0xe9, 0x4c, 0x3c, 0x52, 0x6d, 0x57, 0xbe, 0x33, 0x8b, 0xdd, 0xf0, 
-  0x3a, 0xac, 0x23, 0x4f, 0xf4, 0xd6, 0xf6, 0xf3, 0x84, 0x3b, 0x6e, 
-  0x50, 0x0e, 0x0c, 0xa6, 0xa7, 0x48, 0x74, 0x85, 0xa2, 0x75, 0xd2, 
-  0x03, 0x38, 0x92, 0x54, 0x7e, 0x99, 0x7c, 0xfd, 0xeb, 0xac, 0x31, 
-  0xe2, 0x6d, 0x58, 0x9a, 0x9a, 0x2b, 0xde, 0x4d, 0x48, 0x46, 0x11, 
-  0x32, 0xec, 0x6d, 0x54, 0xca, 0xbb, 0x0d, 0x91, 0x33, 0x2c, 0xc0, 
-  0x80, 0x2f, 0x2e, 0xc8, 0x62, 0xfb, 0x85, 0xa1, 0x43, 0x57, 0xf4, 
-  0xa5, 0x12, 0x33, 0x08, 0x46, 0xc7, 0xa5, 0xca, 0x80, 0x88, 0xa9, 
-  0x18, 0x26, 0x15, 0x95, 0x69, 0x8d, 0x86, 0x89, 0x11, 0x93, 0xeb, 
-  0x82, 0x31, 0x94, 0x81, 0x8e, 0x6d, 0xe2, 0x49, 0xa0, 0x26, 0x54, 
-  0xb0, 0x3d, 0xbb, 0xde, 0x62, 0xbb, 0x57, 0xfe, 0x29, 0x95, 0x3e, 
-  0xe6, 0xcf, 0xb6, 0xc2, 0xf8, 0x82, 0x57, 0xc7, 0xb0, 0xf8, 0xfe, 
-  0x0a, 0x6a, 0x33, 0x73, 0x6c, 0xa5, 0xa0, 0x54, 0x64, 0xdf, 0x69, 
-  0x20, 0x49, 0x61, 0x67, 0x54, 0x3d, 0x9f, 0x4c, 0x41, 0x2c, 0xb1, 
-  0x2d, 0xcf, 0x72, 0x73, 0xbd, 0x84, 0x62, 0xcf, 0x8f, 0xa6, 0xc0, 
-  0x70, 0x28, 0x0d, 0xfe, 0x56, 0xc7, 0x50, 0xb7, 0xec, 0x4d, 0x60, 
-  0xb0, 0xe6, 0xe8, 0x3c, 0x28, 0x10, 0xa3, 0xa3, 0x0c, 0x7d, 0x42, 
-  0xbe, 0x4e, 0x5e, 0xd7, 0x51, 0x96, 0x6a, 0xc7, 0x2f, 0xfc, 0x33, 
-  0x9b, 0xaa, 0xe0, 0xfa, 0xcd, 0x2b, 0x2a, 0x18, 0x50, 0xe4, 0xa9, 
-  0xf5, 0xbb, 0xf5, 0x3e, 0x9f, 0x3e, 0x8d, 0x25, 0x3e, 0x3c, 0x0a, 
-  0x49, 0x9f, 0x3e, 0xf6, 0x54, 0x86, 0x78, 0xf3, 0xed, 0x7f, 0x27, 
-  0x52, 0xc0, 0xb8, 0x39, 0xff, 0x9e, 0x5e, 0x94, 0x76, 0x14, 0x46, 
-  0x45, 0x15, 0xa1, 0x45, 0xa7, 0xbc, 0xef, 0xf0, 0x78, 0xc3, 0x42, 
-  0xe9, 0xdb, 0x48, 0x25, 0x5a, 0x3b, 0xdd, 0x4c, 0x3d, 0x39, 0xef, 
-  0x8e, 0xaf, 0xb1, 0x27, 0xb6, 0xbd, 0xb6, 0xc1, 0xc4, 0x99, 0x88, 
-  0x08, 0x3a, 0x52, 0xd1, 0xf7, 0x53, 0x8e, 0xac, 0xd4, 0xa6, 0x5a, 
-  0x2d, 0xcd, 0xa4, 0x1d, 0x8a, 0xb6, 0xf3, 0x94, 0x27, 0x4c, 0xbc, 
-  0x59, 0xf7, 0x5a, 0xe2, 0x56, 0x55, 0x8d, 0xf3, 0xcd, 0xcd, 0x0a, 
-  0x03, 0xa2, 0x74, 0x93, 0x23, 0xab, 0x04, 0xce, 0x1c, 0x91, 0xa6, 
-  0x94, 0x57, 0x2d, 0x19, 0x25, 0x02, 0x5c, 0x34, 0x12, 0xca, 0xad, 
-  0x4b, 0x1d, 0x79, 0x6b, 0xb2, 0x1e, 0x7c, 0x14, 0x9b, 0x75, 0x97, 
-  0x44, 0xb6, 0x27, 0xc9, 0x80, 0x49, 0x06, 0xdc, 0x33, 0x8f, 0x6a, 
-  0xe2, 0x6a, 0x82, 0x99, 0xa8, 0x8e, 0x34, 0xdf, 0x64, 0x4d, 0xbb, 
-  0x55, 0x82, 0x0b, 0x33, 0xbc, 0x50, 0xba, 0xaf, 0x86, 0x55, 0x7d, 
-  0x14, 0x8d, 0xd4, 0x12, 0xa1, 0xee, 0xeb, 0x14, 0xd7, 0x29, 0xab, 
-  0x07, 0x7d, 0x7c, 0x9e, 0x97, 0x19, 0x50, 0x49, 0x0d, 0x01, 0xdf, 
-  0xb0, 0x09, 0xfb, 0x8d, 0x31, 0xf7, 0x26, 0x3b, 0x76, 0x42, 0xa7, 
-  0x6c, 0xeb, 0x76, 0x9c, 0x4e, 0xe4, 0x4b, 0xe4, 0xab, 0x58, 0xe9, 
-  0xb5, 0xa0, 0x35, 0x3a, 0xf1, 0xfa, 0xcd, 0xef, 0xfe, 0xb1, 0x44, 
-  0xe4, 0x51, 0xe7, 0xb9, 0xeb, 0x25, 0xa7, 0x38, 0x86, 0x1b, 0x7b, 
-  0x30, 0x8f, 0xa8, 0xf1, 0x12, 0x26, 0x76, 0xce, 0x7c, 0x74, 0xa9, 
-  0xcc, 0xcb, 0x17, 0x5b, 0x08, 0x9e, 0x48, 0x81, 0x67, 0xd3, 0x65, 
-  0xc1, 0xc9, 0x08, 0x43, 0xd6, 0x5d, 0x44, 0x04, 0xd0, 0x32, 0x34, 
-  0x45, 0xa0, 0xf0, 0x8c, 0xa5, 0x6a, 0x13, 0x3d, 0xc1, 0x20, 0x43, 
-  0x29, 0x56, 0xd2, 0xd8, 0x78, 0x07, 0xe2, 0x5c, 0x60, 0xd6, 0xa1, 
-  0x03, 0x75, 0x67, 0x22, 0x67, 0xa7, 0xb5, 0x85, 0xc2, 0x14, 0x04, 
-  0x98, 0x29, 0x64, 0x02, 0x00, 0xff, 0x67, 0x6d, 0x90, 0xa4, 0xc6, 
-  0x40, 0x56, 0xd7, 0xaa, 0x2a, 0x77, 0x2c, 0x5b, 0xc2, 0x88, 0x84, 
-  0x0d, 0x96, 0x5b, 0xf2, 0xea, 0xc8, 0x76, 0x04, 0x8f, 0xbb, 0x9b, 
-  0x8b, 0x86, 0x7b, 0xef, 0xea, 0x8d, 0x10, 0xd3, 0x6a, 0xb0, 0x39, 
-  0x27, 0x43, 0x44, 0x8c, 0x36, 0x9b, 0xe4, 0x53, 0x4e, 0x3f, 0x02, 
-  0x6d, 0x76, 0xbf, 0x38, 0x7d, 0x01, 0x7a, 0xc6, 0x9a, 0x37, 0x45, 
-  0x24, 0x79, 0xcb, 0x03, 0x01, 0x13, 0x7a, 0xc0, 0xb8, 0xf9, 0x52, 
-  0x47, 0xbd, 0x40, 0x59, 0x01, 0x34, 0x86, 0x08, 0xc6, 0xbb, 0xe2, 
-  0xf8, 0x60, 0x04, 0xc9, 0xd4, 0xa7, 0x37, 0x98, 0x7a, 0x83, 0xd0, 
-  0xe8, 0x02, 0x64, 0xaf, 0x01, 0x94, 0x4b, 0xa2, 0xd5, 0x5b, 0x9e, 
-  0x5f, 0x03, 0xc1, 0xb6, 0xa5, 0xf7, 0x82, 0x17, 0x10, 0x39, 0x49, 
-  0xcd, 0x12, 0x71, 0x5e, 0x4f, 0xbc, 0x4c, 0x69, 0xda, 0xd6, 0xf0, 
-  0xf5, 0x07, 0x0c, 0x44, 0x37, 0x5e, 0x95, 0xf8, 0x9f, 0x90, 0x72, 
-  0x4a, 0x50, 0x0a, 0x6e, 0x46, 0x3a, 0x15, 0xf9, 0xa8, 0x11, 0x85, 
-  0x3d, 0x86, 0xa4, 0x99, 0x82, 0x07, 0x90, 0xb5, 0x62, 0xa8, 0xcd, 
-  0xcd, 0x7c, 0x93, 0xfe, 0xff, 0x17, 0x43, 0xaa, 0x45, 0x14, 0xb7, 
-  0xae, 0x2a, 0x34, 0x18, 0x34, 0x29, 0xc1, 0x08, 0x82, 0x84, 0xf7, 
-  0x84, 0x7a, 0x9d, 0xd7, 0x65, 0x6e, 0x37, 0x70, 0xd4, 0x3b, 0x26, 
-  0xa9, 0x92, 0xaf, 0xab, 0xbf, 0x56, 0x01, 0xf0, 0x4a, 0xd0, 0xe3, 
-  0xdc, 0x99, 0x3d, 0xc7, 0xb6, 0x09, 0x51, 0xbf, 0x09, 0x9c, 0x21, 
-  0xbc, 0x71, 0x9c, 0x0d, 0xce, 0x89, 0x7b, 0xbf, 0x86, 0x59, 0x84, 
-  0xef, 0x5c, 0x42, 0xeb, 0x25, 0xc9, 0x80, 0x58, 0xb6, 0x8c, 0x38, 
-  0x95, 0xde, 0x08, 0x15, 0x45, 0x3d, 0x29, 0xd7, 0x31, 0x5b, 0x04, 
-  0x92, 0x93, 0x5d, 0x2c, 0xf4, 0x08, 0x98, 0x76, 0x84, 0x74, 0x3b, 
-  0xd6, 0x2e, 0xd0, 0x72, 0x71, 0x70, 0x8c, 0xc3, 0xd6, 0x6a, 0x73, 
-  0x82, 0xdf, 0x2a, 0x15, 0x0f, 0x47, 0xa2, 0xe7, 0x13, 0x80, 0xbe, 
-  0xba, 0x54, 0xc4, 0x14, 0xde, 0x8a, 0xd1, 0x95, 0x9c, 0x26, 0x6c, 
-  0xb6, 0x22, 0xf9, 0xf7, 0xdd, 0x74, 0x85, 0x06, 0xa5, 0x82, 0x91, 
-  0x42, 0xa6, 0x13, 0xf3, 0xf4, 0xf4, 0xd2, 0xfa, 0xb4, 0x57, 0xda, 
-  0xd3, 0xcf, 0x27, 0x03, 0xb3, 0xbc, 0xac, 0x0f, 0x50, 0x86, 0xc7, 
-  0xc4, 0x85, 0x15, 0x2d, 0x77, 0x83, 0x8d, 0x9f, 0xec, 0x0c, 0x3d, 
-  0x9e, 0x1e, 0x48, 0xc2, 0x78, 0xbf, 0x42, 0x4a, 0xc3, 0x81, 0x86, 
-  0x4e, 0xa3, 0xaa, 0x7d, 0x02, 0x5e, 0xf5, 0x1f, 0x50, 0xb1, 0x17, 
-  0x1c, 0xbc, 0xb5, 0xe2, 0x15, 0xb1, 0x01, 0x71, 0xab, 0xf5, 0xf9, 
-  0x48, 0x7e, 0x72, 0x5b, 0xa4, 0xf2, 0x34, 0x56, 0xba, 0x3d, 0x10, 
-  0x27, 0x83, 0xca, 0x66, 0x12, 0x27, 0xeb, 0x12, 0x0e, 0x32, 0x0a, 
-  0x2f, 0x56, 0x85, 0x0d, 0x08, 0xd7, 0xef, 0xde, 0x56, 0x52, 0xe3, 
-  0x17, 0x72, 0x56, 0xef, 0xaa, 0x9b, 0x91, 0x25, 0x33, 0x93, 0xf3, 
-  0x1f, 0x86, 0x66, 0xa2, 0x74, 0xb7, 0x83, 0x74, 0x01, 0x61, 0x33, 
-  0xfa, 0x6f, 0x8a, 0x1e, 0xa0, 0x01, 0x28, 0xb2, 0xc5, 0xd7, 0xa5, 
-  0xf5, 0x9e, 0xf9, 0xfb, 0xbb, 0x8a, 0x55, 0x0a, 0x60, 0x45, 0xf6, 
-  0xbb, 0xc1, 0x8a, 0xa3, 0xd7, 0x2f, 0xe3, 0x44, 0x89, 0x0b, 0x51, 
-  0x42, 0xa6, 0x5d, 0x70, 0x1a, 0x73, 0x87, 0x8e, 0x10, 0x7d, 0x1e, 
-  0x9f, 0x1f, 0x25, 0x86, 0x92, 0x71, 0x2b, 0xa0, 0x92, 0xcb, 0xca, 
-  0x51, 0xbd, 0x8d, 0x11, 0x35, 0x8d, 0xb2, 0xd4, 0xf7, 0x2b, 0x51, 
-  0xb5, 0x2f, 0x75, 0xcf, 0x8f, 0x81, 0xc1, 0x42, 0xe7, 0x07, 0x27, 
-  0x13, 0x50, 0x97, 0x65, 0x5c, 0xda, 0xe4, 0x53, 0xe2, 0x47, 0xe2, 
-  0x04, 0x3d, 0xf1, 0xe5, 0x7a, 0xbd, 0xd9, 0x5b, 0xf8, 0xb9, 0x2a, 
-  0xc9, 0xe2, 0x70, 0x1b, 0xf1, 0x28, 0x1b, 0x0d, 0x67, 0xd4, 0xd3, 
-  0xcd, 0xcb, 0x4c, 0xc2, 0x27, 0x75, 0x3b, 0x47, 0xd7, 0xe2, 0xb7, 
-  0xb3, 0x0d, 0x34, 0xe2, 0xa9, 0xcd, 0x50, 0xc1, 0x69, 0x4b, 0xee, 
-  0x7b, 0x39, 0x07, 0xf3, 0xa8, 0x0d, 0x0c, 0x48, 0xde, 0xf2, 0xca, 
-  0x6a, 0x5d, 0x39, 0x35, 0xc2, 0x01, 0xc3, 0xd7, 0xef, 0xa3, 0xf6, 
-  0x90, 0x69, 0x5b, 0x86, 0xfd, 0x05, 0xd7, 0xca, 0xa8, 0xb3, 0x6a, 
-  0x21, 0xb1, 0x1a, 0xe0, 0x5f, 0xd6, 0x4a, 0xf0, 0xa7, 0x9f, 0x2e, 
-  0x8b, 0xf2, 0x8e, 0x9e, 0xbf, 0x0c, 0x6e, 0x41, 0xb3, 0x3b, 0x67, 
-  0xaa, 0x67, 0xff, 0x31, 0x98, 0x96, 0xdf, 0x7f, 0xca, 0xe8, 0xf8, 
-  0x71, 0x2e, 0x1b, 0xec, 0x81, 0x4e, 0x09, 0x8a, 0x52, 0xc2, 0xa2, 
-  0x6c, 0x9b, 0x15, 0x29, 0x01, 0xa9, 0x65, 0xa8, 0x10, 0x8c, 0x54, 
-  0x8d, 0x81, 0x96, 0x2b, 0x34, 0x04, 0x00, 0x61, 0x72, 0x9a, 0xc4, 
-  0x24, 0x30, 0xac, 0x68, 0x03, 0x0e, 0xc7, 0xd4, 0xea, 0x89, 0xc6, 
-  0x8e, 0x35, 0x09, 0xff, 0x9c, 0x71, 0xde, 0x9d, 0x46, 0x66, 0x1b, 
-  0xd7, 0xc0, 0xe4, 0x42, 0x5a, 0x68, 0x86, 0xde, 0xe4, 0xe6, 0xc6, 
-  0xae, 0x0b, 0x79, 0x3c, 0x70, 0x9d, 0x65, 0x98, 0x9f, 0xd2, 0x72, 
-  0x3e, 0x90, 0xe1, 0x76, 0xa3, 0x44, 0xab, 0x82, 0xc8, 0x68, 0xf0, 
-  0x72, 0x9a, 0x5a, 0x1d, 0x1e, 0xb4, 0x1a, 0x3b, 0xbe, 0x96, 0x51, 
-  0xf4, 0x4f, 0x41, 0xcf, 0x8e, 0x18, 0x19, 0x61, 0xe6, 0x5d, 0x79, 
-  0xa2, 0x49, 0xaa, 0x3d, 0x1b, 0xd0, 0xc3, 0xac, 0x14, 0x70, 0x86, 
-  0x88, 0x1c, 0xd9, 0xc9, 0x33, 0x58, 0xd6, 0xa4, 0xdc, 0xd7, 0x4c, 
-  0x22, 0x14, 0xd8, 0x90, 0xde, 0xde, 0x37, 0x65, 0x72, 0x20, 0x36, 
-  0xd4, 0x1d, 0xb0, 0xbb, 0x99, 0xfd, 0xb6, 0x26, 0x55, 0x15, 0xdf, 
-  0x5a, 0xe0, 0xbd, 0xd7, 0xd9, 0xab, 0xe9, 0xf4, 0x77, 0x96, 0x2e, 
-  0x37, 0xbd, 0xc3, 0xa8, 0xd1, 0x81, 0x8d, 0x68, 0x3a, 0xeb, 0x91, 
-  0x50, 0x5f, 0xaf, 0x8d, 0x73, 0xf0, 0x26, 0xc5, 0xf3, 0xf3, 0xcc, 
-  0x8c, 0x5e, 0x51, 0x89, 0xf8, 0x3a, 0x1b, 0x06, 0x87, 0xf9, 0x78, 
-  0xb1, 0xa3, 0xa9, 0xf2, 0x55, 0xc6, 0x64, 0x0a, 0xbc, 0xaf, 0x8b, 
-  0xf3, 0x2f, 0xe4, 0xf1, 0xe9, 0xc6, 0x84, 0xe2, 0xc8, 0x09, 0x51, 
-  0xb2, 0xad, 0x97, 0x71, 0x80, 0x79, 0x07, 0x43, 0xa3, 0x94, 0xad, 
-  0xce, 0x6d, 0x3f, 0x82, 0xf2, 0xb2, 0x11, 0x3a, 0xe2, 0x41, 0x8d, 
-  0x41, 0xeb, 0x3d, 0x13, 0x09, 0xd2, 0x47, 0x61, 0x3a, 0x69, 0xcf, 
-  0xb9, 0x17, 0x73, 0x15, 0x65, 0xec, 0x4e, 0x0a, 0xc8, 0xa7, 0xe4, 
-  0x98, 0xae, 0x14, 0x37, 0x79, 0x8f, 0xbf, 0x13, 0x79, 0x80, 0x2e, 
-  0x90, 0xb0, 0xbd, 0xfe, 0xdd, 0x71, 0xd6, 0xcc, 0x3e, 0xbd, 0xe3, 
-  0x57, 0x64, 0x8b, 0xb4, 0x7d, 0x7e, 0x21, 0x3a, 0x84, 0xca, 0x73, 
-  0x91, 0x43, 0xd5, 0x67, 0x14, 0xd2, 0x86, 0xd0, 0xe6, 0xe0, 0x02, 
-  0x6b, 0x47, 0x3e, 0xdb, 0xa5, 0xaa, 0x04, 0x2a, 0xdf, 0xe9, 0xfa, 
-  0x43, 0x8c, 0x92, 0x11, 0x37, 0xa8, 0xd5, 0x92, 0x2c, 0x9e, 0x5a, 
-  0x87, 0xb3, 0xb6, 0x70, 0x93, 0x7b, 0xa8, 0x62, 0xdc, 0x3d, 0x3e, 
-  0x64, 0x26, 0xd4, 0xa2, 0x5d, 0x29, 0xba, 0xd7, 0x61, 0x7f, 0x51, 
-  0x2a, 0x27, 0x8d, 0x48, 0xfc, 0x6b, 0xb1, 0x92, 0x36, 0x61, 0x54, 
-  0x5a, 0x15, 0xd4, 0xc1, 0x62, 0x35, 0x7c, 0x5f, 0x31, 0x2b, 0x1f, 
-  0xe2, 0x3e, 0x68, 0x04, 0x7b, 0x4c, 0x03, 0xa3, 0x7a, 0x68, 0x7e, 
-  0x66, 0x01, 0xeb, 0x1a, 0xeb, 0x51, 0xc4, 0xbf, 0x46, 0x0c, 0x29, 
-  0x80, 0xbe, 0xd8, 0xb6, 0xb8, 0xef, 0xca, 0xd3, 0xa6, 0xd8, 0x37, 
-  0x8e, 0xfe, 0xd4, 0xad, 0xc9, 0x91, 0xbf, 0x7a, 0x13, 0xa3, 0xa5, 
-  0xbe, 0x34, 0xc0, 0x5d, 0xca, 0x3b, 0xe5, 0x83, 0x28, 0xc2, 0x7a, 
-  0x4c, 0xdf, 0xfa, 0x8c, 0x70, 0x7e, 0x2b, 0xd3, 0x07, 0xdc, 0xfb, 
-  0xa8, 0x7a, 0xcd, 0x06, 0xed, 0x4d, 0x34, 0xa5, 0xe4, 0xa2, 0xf4, 
-  0xc5, 0x28, 0xea, 0x72, 0x9c, 0x6d, 0x83, 0xb1, 0xad, 0x50, 0xb2, 
-  0x43, 0xed, 0xf7, 0xc7, 0x91, 0x91, 0x82, 0xcd, 0xc5, 0x0e, 0xa4, 
-  0x9a, 0x53, 0xcf, 0x41, 0xb3, 0x07, 0xc9, 0x10, 0x6e, 0x18, 0x20, 
-  0x09, 0xc8, 0x11, 0x65, 0xa0, 0x01, 0xc7, 0x2b, 0x50, 0xb7, 0xf5, 
-  0x8c, 0x9f, 0x8a, 0xfb, 0x51, 0x61, 0x4d, 0xc1, 0x40, 0xc5, 0x3d, 
-  0xd7, 0x85, 0xaf, 0x10, 0xb7, 0x38, 0x0a, 0x0c, 0xbb, 0xc2, 0x2a, 
-  0x3c, 0xde, 0x08, 0xa6, 0x9c, 0x85, 0x8b, 0xc5, 0xca, 0xf9, 0xdc, 
-  0x8e, 0x0e, 0xcb, 0xe4, 0xb9, 0xb3, 0x71, 0xaa, 0x79, 0x92, 0x70, 
-  0x73, 0xd0, 0xc8, 0x42, 0x9f, 0xc7, 0x1b, 0x92, 0x3c, 0xb5, 0xa7, 
-  0xe1, 0x61, 0xad, 0xe1, 0xcf, 0x85, 0x2d, 0xd8, 0x18, 0xf0, 0x8d, 
-  0x24, 0x1b, 0xfc, 0x4c, 0xf3, 0xf5, 0x6f, 0xe0, 0xe6, 0x09, 0x27, 
-  0xb2, 0xab, 0xf8, 0x8d, 0x45, 0x22, 0x64, 0xe6, 0xc3, 0x5b, 0xcb, 
-  0xe5, 0x45, 0x93, 0xd5, 0x69, 0xcc, 0x5b, 0x4f, 0x71, 0xd5, 0x66, 
-  0x90, 0xf7, 0xb9, 0xc7, 0x78, 0x24, 0x7b, 0xa3, 0x19, 0xcf, 0x1d, 
-  0x95, 0xe6, 0x37, 0xe8, 0x94, 0x51, 0xaa, 0x8a, 0x95, 0x9d, 0x30, 
-  0x75, 0x13, 0xfa, 0xd4, 0xfe, 0x71, 0x46, 0x4f, 0xb6, 0x2a, 0x83, 
-  0x7b, 0x7b, 0xb1, 0xf1, 0xc0, 0x4c, 0xab, 0x7e, 0xb5, 0x32, 0x9f, 
-  0xde, 0x27, 0xdf, 0xaf, 0x4c, 0x2b, 0x89, 0x3e, 0x33, 0x40, 0xec, 
-  0x53, 0xe4, 0x9f, 0xb3, 0x56, 0xcc, 0x26, 0x95, 0xcb, 0x22, 0x76, 
-  0x19, 0x98, 0x3c, 0x37, 0x38, 0xd6, 0xf0, 0x64, 0xc3, 0xbb, 0x1a, 
-  0x93, 0xde, 0x0b, 0xcf, 0xd8, 0xc9, 0x42, 0x0a, 0x40, 0xe7, 0xbf, 
-  0x4c, 0x5c, 0x81, 0xbd, 0xc0, 0x76, 0xdb, 0xd6, 0xa7, 0x3f, 0xb4, 
-  0xc0, 0x77, 0x14, 0xe2, 0x26, 0x7f, 0x7d, 0xc1, 0x64, 0x82, 0x4b, 
-  0x6e, 0x3e, 0x3c, 0x3e, 0x1e, 0x57, 0x38, 0x2f, 0xb0, 0xa6, 0x94, 
-  0xde, 0x40, 0xc1, 0x31, 0x66, 0x98, 0xf1, 0x3e, 0x78, 0x80, 0x24, 
-  0x53, 0x3a, 0xb5, 0x92, 0x1d, 0xe8, 0xea, 0xc5, 0x6a, 0xdb, 0x2e, 
-  0xc8, 0x83, 0x61, 0x95, 0xc8, 0xd0, 0x59, 0x48, 0xa5, 0x55, 0xb0, 
-  0x97, 0x90, 0xc4, 0x3c, 0x27, 0xe5, 0x6a, 0x40, 0x3b, 0xcc, 0xd0, 
-  0x13, 0x1d, 0x05, 0xb9, 0x8f, 0x79, 0x1a, 0x70, 0x80, 0x55, 0x57, 
-  0x94, 0x5f, 0x12, 0x9b, 0x6d, 0x3a, 0x3e, 0xf2, 0x77, 0xcc, 0x7d, 
-  0x7b, 0x13, 0x2d, 0xeb, 0xfa, 0x01, 0x6c, 0xf3, 0x5b, 0x32, 0x95, 
-  0x87, 0xcb, 0x85, 0xfb, 0xfb, 0xe7, 0x56, 0x03, 0xa0, 0xa1, 0x17, 
-  0xc1, 0x37, 0x98, 0xc5, 0x68, 0x66, 0x14, 0x4f, 0x34, 0x69, 0x76, 
-  0xbd, 0x94, 0x6c, 0xff, 0x07, 0xc2, 0xdc, 0x0f, 0xf5, 0xa6, 0xf2, 
-  0xe5, 0x18, 0x0c, 0xaa, 0xe8, 0xae, 0x94, 0xf7, 0x44, 0xc0, 0x2b, 
-  0x85, 0x19, 0xde, 0x24, 0xf5, 0xc3, 0xae, 0x91, 0x6c, 0x3d, 0x5b, 
-  0x43, 0x2e, 0x3a, 0x7f, 0xed, 0xd0, 0x8a, 0xa5, 0x79, 0xb1, 0xfd, 
-  0x89, 0xba, 0x0d, 0xf0, 0xe6, 0x75, 0xc3, 0xb3, 0xb7, 0x1c, 0x87, 
-  0x56, 0x1e, 0x6e, 0x4c, 0xd9, 0x50, 0x08, 0xa2, 0x91, 0x31, 0x48, 
-  0x23, 0xfc, 0xa1, 0x97, 0x56, 0x80, 0x70, 0x19, 0x56, 0x5d, 0xad, 
-  0x39, 0x8a, 0x23, 0x49, 0x31, 0xf9, 0x10, 0xd5, 0xdd, 0x09, 0x57, 
-  0x73, 0xd1, 0x4b, 0x08, 0xf6, 0xe4, 0xe3, 0x2c, 0xef, 0x72, 0xdf, 
-  0x5e, 0x59, 0xd1, 0x93, 0xbb, 0xd5, 0xac, 0x3c, 0x5e, 0xb9, 0xf8, 
-  0x13, 0x80, 0xc4, 0x15, 0xb3, 0x99, 0xc2, 0x43, 0x9f, 0x14, 0xcd, 
-  0xd2, 0x4a, 0xf5, 0x8c, 0xe5, 0xba, 0x1a, 0xb2, 0x35, 0xe1, 0x19, 
-  0x8b, 0x17, 0xe6, 0x82, 0x9f, 0xb3, 0x9f, 0xc6, 0xfd, 0x37, 0xb5, 
-  0x84, 0xda, 0x2a, 0x77, 0xc8, 0x97, 0x64, 0xbf, 0x44, 0x0a, 0xbf, 
-  0x0f, 0xe3, 0x88, 0xed, 0xc2, 0xa0, 0x94, 0x3c, 0x05, 0xc9, 0x12, 
-  0xb7, 0xb6, 0x03, 0x34, 0xa8, 0xd6, 0xfe, 0x78, 0xba, 0x90, 0x3c, 
-  0x06, 0x9d, 0xdc, 0xe2, 0xd4, 0xe4, 0x94, 0xee, 0x01, 0x42, 0x2f, 
-  0x68, 0x0a, 0xb9, 0x4e, 0x4c, 0xbc, 0x44, 0x07, 0x0f, 0xc7, 0x9d, 
-  0x86, 0x88, 0x21, 0x69, 0xff, 0xcd, 0xe7, 0x3f, 0x2f, 0x56, 0x33, 
-  0x3a, 0xd2, 0x34, 0xbf, 0x00, 0x65, 0x3b, 0x61, 0xf2, 0x4a, 0x4b, 
-  0x46, 0x88, 0x66, 0xf1, 0x98, 0xad, 0x4a, 0xff, 0xb7, 0x19, 0x9b, 
-  0x0b, 0xa9, 0x51, 0xdc, 0x93, 0xbd, 0xae, 0xf8, 0x40, 0x20, 0x89, 
-  0x15, 0x86, 0x37, 0x4a, 0x80, 0x52, 0x04, 0xda, 0x84, 0x96, 0xb5, 
-  0xe3, 0x3f, 0x0b, 0xbc, 0x47, 0x05, 0xb9, 0xa8, 0xeb, 0x09, 0x28, 
-  0x62, 0xc8, 0x0b, 0x3f, 0x2e, 0xf9, 0x6b, 0x55, 0xdc, 0x58, 0x7f, 
-  0xee, 0xca, 0xd3, 0x54, 0xa0, 0x34, 0xee, 0xfc, 0x2c, 0x05, 0xeb, 
-  0xcd, 0xcf, 0x42, 0x54, 0x6f, 0x42, 0x2f, 0x22, 0x05, 0x65, 0xb9, 
-  0x12, 0x24, 0xe7, 0xf3, 0x70, 0x6c, 0x16, 0x09, 0xe0, 0x12, 0x41, 
-  0xa5, 0x3e, 0x22, 0x48, 0xd6, 0x94, 0xb1, 0x69, 0xf5, 0xed, 0xa7, 
-  0x2c, 0x8a, 0x88, 0x2c, 0xf2, 0x68, 0xab, 0xb0, 0x44, 0x35, 0xb7, 
-  0xaf, 0xab, 0xe6, 0x9f, 0xf4, 0xb9, 0xb2, 0x75, 0xb5, 0x20, 0xb8, 
-  0x63, 0x5e, 0xd3, 0xd9, 0x4c, 0x08, 0x13, 0x2e, 0xe8, 0x8f, 0xcf, 
-  0xa1, 0xd4, 0x21, 0xd6, 0x18, 0xa1, 0x1c, 0x8f, 0xe5, 0xd4, 0x03, 
-  0xc3, 0x3f, 0xeb, 0xcf, 0xd6, 0x66, 0x97, 0x0f, 0x39, 0xe1, 0xf0, 
-  0x15, 0x51, 0xb9, 0xe6, 0x82, 0xac, 0x90, 0xd7, 0xf1, 0xbe, 0xb5, 
-  0x7b, 0x06, 0x1e, 0xcf, 0xb2, 0x5e, 0xa3, 0x98, 0x08, 0x4d, 0xaf, 
-  0xcb, 0x0f, 0x18, 0xa3, 0xba, 0xea, 0xc5, 0xcb, 0xfe, 0x58, 0x85, 
-  0xb0, 0x75, 0x03, 0x6d, 0xf7, 0x63, 0x4b, 0x34, 0xeb, 0x31, 0x6e, 
-  0x13, 0x45, 0xac, 0x23, 0x2a, 0x02, 0x4c, 0xf5, 0x64, 0xd0, 0x48, 
-  0x96, 0xd2, 0x36, 0x0e, 0x7c, 0xd5, 0x42, 0xf1, 0xb7, 0x85, 0x67, 
-  0x38, 0x00, 0x55, 0x3e, 0xc7, 0x89, 0x3d, 0x07, 0xee, 0x7d, 0x9e, 
-  0xbb, 0x4b, 0x41, 0x21, 0xbd, 0x98, 0x35, 0x3b, 0x8b, 0xdd, 0x72, 
-  0xde, 0xec, 0x9e, 0x32, 0x2a, 0x7e, 0x2e, 0xc7, 0xc1, 0x75, 0xf0, 
-  0x6c, 0xcc, 0x29, 0x12, 0xca, 0xc3, 0x88, 0xa0, 0xc0, 0x06, 0xb3, 
-  0x4b, 0x23, 0xa9, 0x36, 0xd3, 0x27, 0x29, 0xd3, 0x99, 0xf2, 0x5b, 
-  0x1d, 0x55, 0x85, 0x35, 0xcc, 0x45, 0x89, 0xf7, 0x11, 0x6c, 0x4b, 
-  0x06, 0x78, 0xd0, 0x68, 0xe3, 0xba, 0x5f, 0x44, 0x2e, 0xe9, 0x68, 
-  0x05, 0x2f, 0x56, 0x6e, 0x73, 0xc4, 0xc3, 0xc5, 0x00, 0x6e, 0x5a, 
-  0x22, 0x47, 0x0b, 0x4b, 0x65, 0xb3, 0x5f, 0xc2, 0x2d, 0x89, 0x7e, 
-  0xd6, 0x24, 0x53, 0xef, 0xd2, 0xa5, 0x6c, 0x19, 0x0e, 0xb5, 0xd4, 
-  0xc2, 0xb0, 0x2f, 0x86, 0xdc, 0xe8, 0x59, 0xf1, 0xf4, 0x8a, 0xc0, 
-  0x43, 0xb1, 0x79, 0x24, 0x06, 0x30, 0x48, 0x6d, 0xf5, 0xf0, 0x97, 
-  0x8e, 0xf3, 0x1c, 0xe2, 0x3f, 0x77, 0x98, 0x99, 0x91, 0xc7, 0xce, 
-  0x23, 0x40, 0x77, 0xfa, 0xff, 0x59, 0x9a, 0x61, 0x62, 0x77, 0xef, 
-  0x31, 0xce, 0xaf, 0x18, 0x01, 0x58, 0x2e, 0x07, 0x77, 0xfb, 0x00, 
-  0xc6, 0x3b, 0xb4, 0x2b, 0xfa, 0x61, 0xe1, 0x67, 0x45, 0x3e, 0x71, 
-  0xe3, 0x18, 0x58, 0xd0, 0x1c, 0x1a, 0x2c, 0x80, 0x6c, 0x87, 0x13, 
-  0x38, 0x13, 0x65, 0x29, 0x3b, 0xd9, 0xa6, 0xb7, 0x22, 0x52, 0x8a, 
-  0xa4, 0xb8, 0x78, 0xb5, 0x69, 0xf3, 0xe2, 0x9a, 0x0b, 0xe2, 0x81, 
-  0x1e, 0x49, 0xd6, 0x75, 0xa9, 0xa9, 0xec, 0x70, 0x9b, 0x67, 0xc6, 
-  0xea, 0xda, 0xd9, 0x9b, 0xfe, 0x64, 0x97, 0x37, 0xcb, 0xc6, 0x6c, 
-  0xfd, 0x06, 0x2b, 0xdf, 0x62, 0x66, 0x55, 0x3b, 0xe3, 0x99, 0xdc, 
-  0x29, 0x1b, 0x0f, 0x00, 0x2a, 0x0a, 0x8c, 0xb8, 0xc5, 0x51, 0x14, 
-  0xb4, 0xad, 0x13, 0xf8, 0xf9, 0x5a, 0xb9, 0xb4, 0x15, 0x07, 0x71, 
-  0x72, 0xbb, 0x3f, 0xb0, 0xf2, 0xa7, 0x24, 0x6d, 0x2a, 0xd2, 0xa0, 
-  0x41, 0x0d, 0xb5, 0x7b, 0x48, 0x5d, 0xfe, 0xeb, 0xf7, 0x9f, 0x1e, 
-  0xbb, 0xfd, 0x8f, 0xee, 0xc4, 0xe6, 0x0f, 0x3a, 0x13, 0x67, 0x0d, 
-  0x4c, 0xe2, 0xa0, 0x51, 0xbc, 0xe1, 0x5f, 0x7b, 0xfc, 0x95, 0xe6, 
-  0x6e, 0xde, 0x79, 0xbf, 0x94, 0x51, 0xcb, 0xb3, 0xb8, 0xe2, 0xab, 
-  0x65, 0x1e, 0x39, 0x04, 0x6a, 0x34, 0xdc, 0xdb, 0xd0, 0x26, 0xd1, 
-  0xc4, 0x02, 0x0f, 0xbf, 0x1a, 0xf1, 0x0f, 0x3f, 0x37, 0x69, 0x1e, 
-  0x06, 0xde, 0xf6, 0x2b, 0x6c, 0x6e, 0x4d, 0x67, 0x24, 0x52, 0xa4, 
-  0x3e, 0xbb, 0xc7, 0x28, 0xe8, 0xe4, 0x3e, 0xeb, 0xa9, 0xc1, 0x02, 
-  0xc4, 0x00, 0x45, 0x99, 0x71, 0x5a, 0x36, 0x2d, 0x9a, 0xe5, 0xf4, 
-  0x94, 0x7e, 0x63, 0xac, 0x6d, 0x9d, 0x25, 0xdd, 0x86, 0xa5, 0x02, 
-  0x8d, 0x97, 0xf4, 0xf7, 0xd0, 0xea, 0x3c, 0x66, 0xe2, 0xfe, 0xdf, 
-  0x35, 0xba, 0x06, 0xe8, 0x0a, 0xa6, 0xbe, 0xfa, 0x15, 0xf9, 0x8f, 
-  0x60, 0x7e, 0xa4, 0x1d, 0x26, 0xb9, 0x62, 0x6c, 0xea, 0x61, 0xb2, 
-  0x1b, 0x42, 0x4b, 0x06, 0x33, 0x76, 0x62, 0xb9, 0x4b, 0xe1, 0x27, 
-  0x84, 0x99, 0xd9, 0x4b, 0x66, 0x0b, 0x02, 0x41, 0x84, 0x1e, 0x2f, 
-  0x08, 0x35, 0xfd, 0x37, 0x3a, 0x00, 0x36, 0x23, 0xa3, 0x74, 0x9b, 
-  0xb5, 0x06, 0x94, 0x23, 0xf7, 0x46, 0x51, 0x9f, 0xe5, 0x3f, 0xff, 
-  0x2b, 0xc0, 0x31, 0x14, 0xcf, 0x31, 0x0f, 0x76, 0xcb, 0x84, 0x5e, 
-  0xb4, 0x6d, 0x26, 0x05, 0x21, 0xde, 0x8d, 0x30, 0x1a, 0x5a, 0xe9, 
-  0x48, 0x6b, 0x84, 0x33, 0x06, 0xd1, 0x49, 0x3b, 0x28, 0xdd, 0xc6, 
-  0xa7, 0x1a, 0xa5, 0x9d, 0x43, 0xbd, 0x68, 0x03, 0x9c, 0x8e, 0x3c, 
-  0x52, 0x6b, 0xb4, 0xa7, 0x97, 0x5a, 0x24, 0xe2, 0x61, 0x4f, 0x18, 
-  0x0f, 0xff, 0x70, 0x98, 0x5b, 0x4a, 0x91, 0x19, 0x33, 0xa8, 0xa0, 
-  0x8d, 0xf8, 0x48, 0x84, 0x29, 0x43, 0xc5, 0x62, 0xca, 0x59, 0xc1, 
-  0xfc, 0xaa, 0x65, 0x27, 0xda, 0x0f, 0xbc, 0x55, 0xbd, 0x73, 0xc3, 
-  0xf5, 0xf2, 0x12, 0x6a, 0x15, 0x6f, 0x65, 0x5e, 0x24, 0xcf, 0xba, 
-  0x3c, 0x39, 0x84, 0xcf, 0x58, 0xc0, 0xc3, 0x2c, 0x06, 0xfa, 0x40, 
-  0x29, 0xb1, 0x7c, 0xa6, 0x4a, 0xa2, 0xed, 0xc6, 0x79, 0xa9, 0x59, 
-  0xf3, 0x00, 0xc4, 0x27, 0x59, 0xe3, 0xad, 0xcc, 0xcf, 0xca, 0xbc, 
-  0xf0, 0xa1, 0xe8, 0xa3, 0xe2, 0xaf, 0x25, 0x9f, 0xb3, 0x3e, 0x6f, 
-  0xdb, 0xd7, 0x40, 0x89, 0xfd, 0x6d, 0x1f, 0x54, 0x4c, 0x4d, 0xf2, 
-  0xa7, 0x7d, 0x8d, 0x29, 0x91, 0xd2, 0x89, 0x0f, 0xe1, 0xba, 0x31, 
-  0xfb, 0x51, 0x41, 0x1e, 0xd4, 0xe1, 0xce, 0x16, 0x76, 0x83, 0x2e, 
-  0xd3, 0xe4, 0xdb, 0x5e, 0x15, 0xc9, 0xf2, 0xe6, 0xd6, 0xda, 0xa2, 
-  0x6c, 0xd5, 0xd5, 0x64, 0xac, 0xab, 0x75, 0xe5, 0xcf, 0xc0, 0x51, 
-  0x86, 0x33, 0x85, 0x03, 0xb9, 0x11, 0x65, 0x08, 0xdc, 0xa2, 0x77, 
-  0xf2, 0x50, 0x68, 0xb5, 0x86, 0x99, 0x06, 0x17, 0x85, 0x8b, 0x44, 
-  0x38, 0x3f, 0x66, 0xef, 0xa1, 0x7d, 0x75, 0x35, 0xb5, 0x23, 0x98, 
-  0xb4, 0xb4, 0xf9, 0x9e, 0xd2, 0xc0, 0xe7, 0xe2, 0xee, 0x6a, 0x38, 
-  0x1f, 0xf4, 0x8d, 0x4e, 0xc0, 0xc8, 0x23, 0xa9, 0x92, 0x39, 0x92, 
-  0xef, 0xb9, 0x36, 0x5a, 0xc0, 0x90, 0xcb, 0xd5, 0x73, 0x72, 0x57, 
-  0x10, 0x8b, 0xf8, 0x1c, 0x2a, 0x7a, 0x23, 0x2a, 0x36, 0x10, 0x60, 
-  0xb3, 0xaa, 0x3d, 0x20, 0x9a, 0xea, 0xb7, 0xd6, 0x29, 0xad, 0xe4, 
-  0xba, 0xd5, 0xdd, 0xac, 0x4c, 0x23, 0xac, 0xc7, 0x61, 0x23, 0x88, 
-  0x8e, 0xa6, 0x47, 0x4a, 0x3e, 0xbb, 0xbb, 0x15, 0x70, 0xad, 0x58, 
-  0xe6, 0xb8, 0xd6, 0xa0, 0xab, 0x87, 0x02, 0x21, 0x5c, 0x8b, 0xa4, 
-  0xdf, 0xa1, 0xe7, 0x58, 0x92, 0x8d, 0xe6, 0xc5, 0x86, 0xab, 0x07, 
-  0xd2, 0x64, 0xf0, 0xfa, 0x76, 0x2a, 0xb3, 0x08, 0x6f, 0xb9, 0x46, 
-  0xd5, 0x47, 0x4a, 0x3b, 0x00, 0x62, 0xc9, 0x1d, 0xff, 0x73, 0x49, 
-  0x87, 0x42, 0xa9, 0xb9, 0x80, 0x52, 0x8f, 0x68, 0x36, 0xe3, 0xcd, 
-  0x32, 0x3b, 0x86, 0x78, 0x7d, 0x24, 0xb1, 0x31, 0x2c, 0xa9, 0x50, 
-  0x1e, 0xc3, 0x18, 0x37, 0x00, 0x20, 0xd1, 0x76, 0xd5, 0x49, 0xa1, 
-  0xa0, 0x55, 0x95, 0x43, 0xd3, 0xbe, 0x6e, 0xd6, 0xda, 0xba, 0x60, 
-  0x13, 0x64, 0xcc, 0xe8, 0xbb, 0x6e, 0x62, 0x88, 0x6e, 0x82, 0x6b, 
-  0x1e, 0x34, 0xfe, 0x4c, 0x73, 0xbd, 0x46, 0x3f, 0xc4, 0x0c, 0x01, 
-  0xdf, 0xf4, 0x81, 0xde, 0xff, 0x38, 0x23, 0x25, 0x4f, 0xbb, 0x28, 
-  0xb4, 0x0b, 0x0c, 0x75, 0x3a, 0xc6, 0x88, 0xe3, 0xc0, 0x0a, 0xa3, 
-  0xde, 0x66, 0x8c, 0xfc, 0xb1, 0x71, 0x0f, 0x35, 0x9e, 0xb3, 0xf0, 
-  0x10, 0xdf, 0x5d, 0x09, 0x61, 0x5e, 0x22, 0x54, 0x07, 0x05, 0x72, 
-  0x9a, 0x90, 0xef, 0xc2, 0xd8, 0xdf, 0x03, 0x56, 0xd9, 0x9e, 0xd3, 
-  0xdb, 0x30, 0xd7, 0x89, 0xf5, 0x9f, 0xab, 0x45, 0x15, 0xda, 0x29, 
-  0xf1, 0x83, 0x50, 0x98, 0x84, 0xa4, 0xc0, 0x7f, 0x54, 0x48, 0x09, 
-  0x2d, 0xec, 0xcb, 0x9d, 0x1d, 0x1a, 0xb6, 0x04, 0xc1, 0xbe, 0x18, 
-  0xd9, 0xa9, 0x00, 0x3d, 0xf1, 0xea, 0x0d, 0xec, 0x91, 0xdf, 0x9d, 
-  0x1a, 0xef, 0xa9, 0x7c, 0x8f, 0x40, 0xba, 0x0a, 0x81, 0xa0, 0x18, 
-  0x05, 0x17, 0x44, 0xe4, 0x0f, 0xb9, 0xc9, 0x29, 0x9d, 0xf1, 0x60, 
-  0x45, 0xc4, 0x69, 0xd8, 0xe4, 0xb8, 0xbd, 0xfd, 0xd6, 0x4e, 0x22, 
-  0xfc, 0xeb, 0xa6, 0xf4, 0x2e, 0x89, 0x7c, 0x9f, 0x0d, 0xf9, 0xfb, 
-  0xce, 0x0a, 0x5d, 0xcf, 0x82, 0xc1, 0x86, 0x8c, 0xc5, 0x47, 0xb0, 
-  0x8b, 0xa9, 0x4b, 0x4f, 0x15, 0x31, 0x83, 0x39, 0x1c, 0x83, 0xad, 
-  0xc9, 0x5e, 0x79, 0x51, 0x4d, 0x5f, 0x93, 0xa9, 0xd3, 0x97, 0x6b, 
-  0xa0, 0x27, 0xb7, 0x20, 0xa4, 0x5d, 0x54, 0xad, 0xe2, 0x8e, 0xc9, 
-  0x9f, 0x57, 0xad, 0x5a, 0x16, 0x01, 0x56, 0xe3, 0x84, 0x3d, 0xd0, 
-  0xfb, 0x86, 0x3c, 0x34, 0xde, 0x7b, 0xf9, 0x8f, 0xba, 0xc8, 0xb0, 
-  0x41, 0xe8, 0xdd, 0x61, 0xaa, 0x9b, 0x3d, 0xe7, 0xaa, 0xfc, 0xb4, 
-  0x06, 0x11, 0xc0, 0x09, 0xa8, 0x0e, 0x48, 0x67, 0xc7, 0x7e, 0x42, 
-  0xb8, 0xf1, 0xdf, 0xdc, 0xa6, 0xf8, 0x02, 0x58, 0x62, 0xfa, 0x3d, 
-  0x6c, 0x18, 0xc7, 0x81, 0x44, 0xca, 0x02, 0xc2, 0x67, 0x5b, 0x71, 
-  0x98, 0x44, 0xb8, 0x45, 0xea, 0x33, 0x1d, 0xee, 0x77, 0x1e, 0x05, 
-  0xbd, 0xfc, 0x62, 0x5c, 0x57, 0x17, 0xd4, 0x53, 0x49, 0x85, 0x29, 
-  0x78, 0x0c, 0x3e, 0x14, 0x00, 0xd8, 0x4e, 0x5c, 0x12, 0x5b, 0x50, 
-  0x7e, 0x7e, 0x14, 0xc8, 0xd5, 0x42, 0x0c, 0xcf, 0xc2, 0xde, 0x4f, 
-  0xcd, 0xff, 0x8c, 0x7a, 0x41, 0x36, 0x50, 0xcd, 0x26, 0xc5, 0xc9, 
-  0x49, 0x37, 0x5e, 0xa0, 0x5c, 0x1d, 0x40, 0xa9, 0x84, 0xe6, 0xe7, 
-  0x5a, 0xba, 0xb2, 0xb5, 0x59, 0x00, 0x20, 0x81, 0xcc, 0xea, 0xc8, 
-  0x9b, 0xbc, 0x50, 0x1e, 0x5d, 0x32, 0x26, 0x14, 0xb8, 0x65, 0xe1, 
-  0xf7, 0xb0, 0x37, 0xa2, 0x8b, 0xc3, 0x2e, 0xcd, 0xd2, 0x0a, 0xc2, 
-  0x34, 0x72, 0xec, 0x09, 0x7e, 0x97, 0x8c, 0x1a, 0x32, 0x77, 0x34, 
-  0xd5, 0xca, 0x57, 0x8c, 0xeb, 0x2b, 0x6e, 0xf8, 0x72, 0xe1, 0xf8, 
-  0x7f, 0x16, 0x15, 0x33, 0x6b, 0x00, 0xb0, 0x59, 0x69, 0x4c, 0xaf, 
-  0xd8, 0x1a, 0x66, 0x1f, 0xd9, 0xdd, 0x80, 0xbe, 0x80, 0x1c, 0x7b, 
-  0x6e, 0xf0, 0x8a, 0xab, 0xab, 0x14, 0x92, 0x48, 0x2a, 0xe6, 0x65, 
-  0x46, 0x3b, 0x64, 0x5c, 0x28, 0x3f, 0x53, 0x1a, 0x22, 0xa6, 0x4e, 
-  0x73, 0xbd, 0x6b, 0x6e, 0x9b, 0x93, 0xff, 0x67, 0xf7, 0x86, 0xa8, 
-  0x62, 0x14, 0xc0, 0x34, 0x96, 0x58, 0x89, 0xe4, 0xd8, 0xb8, 0x7f, 
-  0xd6, 0x79, 0xf9, 0x97, 0x7a, 0xaa, 0x33, 0xe6, 0xaa, 0x1c, 0xc1, 
-  0x30, 0x9e, 0x54, 0x10, 0x2c, 0xb3, 0x2b, 0xf3, 0xe7, 0x99, 0x3f, 
-  0x21, 0x66, 0xe1, 0x39, 0x6a, 0xe2, 0x31, 0x21, 0x74, 0xeb, 0x82, 
-  0x01, 0x15, 0xce, 0x04, 0xba, 0xfd, 0x07, 0x7e, 0x52, 0x63, 0xfa, 
-  0x46, 0x23, 0xa9, 0x75, 0xd4, 0x63, 0xc8, 0x13, 0x19, 0x17, 0x64, 
-  0xc9, 0xba, 0x8b, 0xda, 0x26, 0x1b, 0x6f, 0x5e, 0x73, 0x7a, 0x00, 
-  0x16, 0x01, 0x21, 0x61, 0xc3, 0xce, 0xf8, 0xa2, 0x96, 0xf1, 0xb8, 
-  0x63, 0xa0, 0x7e, 0xb1, 0x0f, 0x75, 0xf2, 0xfa, 0x2c, 0xbd, 0xa1, 
-  0x7f, 0xed, 0xdf, 0xaa, 0x76, 0x45, 0xf0, 0xd4, 0xbc, 0x70, 0x13, 
-  0xe3, 0x89, 0x83, 0x34, 0xbd, 0x99, 0xcf, 0x23, 0xf3, 0xec, 0x39, 
-  0x80, 0xc0, 0x9d, 0x74, 0x8e, 0x4d, 0x7e, 0xe7, 0x60, 0x48, 0xa2, 
-  0x45, 0x3c, 0xdd, 0x58, 0x50, 0xea, 0xfb, 0x11, 0xda, 0xe8, 0x0e, 
-  0x4f, 0x0f, 0xc7, 0x78, 0xd1, 0x8b, 0xcf, 0x5d, 0xbd, 0x51, 0xa5, 
-  0xb1, 0x3d, 0x9a, 0xc7, 0x52, 0x06, 0x71, 0x19, 0xb4, 0x08, 0x30, 
-  0xa3, 0x99, 0x09, 0xd4, 0x3a, 0x2d, 0x21, 0x71, 0xb5, 0xda, 0x11, 
-  0x5a, 0x9f, 0x4c, 0x56, 0xf9, 0x73, 0x60, 0xee, 0xe4, 0xa3, 0x30, 
-  0x71, 0x00, 0x70, 0x9c, 0xdc, 0xe1, 0x08, 0x0e, 0x54, 0x40, 0xcf, 
-  0xf9, 0x7c, 0x82, 0xee, 0xb7, 0x48, 0xb3, 0x3c, 0xc2, 0x9a, 0xd8, 
-  0x65, 0x7c, 0x52, 0x89, 0x29, 0x0c, 0x25, 0x7c, 0x15, 0x8e, 0xfb, 
-  0x4b, 0xe3, 0x9e, 0x87, 0x4b, 0xea, 0x67, 0xe9, 0xd6, 0x88, 0x10, 
-  0x98, 0x00, 0x5e, 0xc6, 0x48, 0x5f, 0x65, 0x64, 0xe7, 0x90, 0xf9, 
-  0xc9, 0x1b, 0x16, 0xee, 0x6e, 0x5c, 0x16, 0xd0, 0x5d, 0xd8, 0x1e, 
-  0x2f, 0x10, 0x16, 0xdd, 0xc2, 0xb9, 0x40, 0x9a, 0x75, 0x0e, 0x33, 
-  0xaa, 0x3d, 0x09, 0x31, 0x6d, 0x5f, 0xc3, 0x20, 0x3c, 0x5f, 0x89, 
-  0x06, 0xb4, 0xaa, 0xfb, 0x57, 0x54, 0xd4, 0xb5, 0x53, 0x9d, 0x4e, 
-  0x80, 0x9c, 0x2b, 0x5a, 0x23, 0x11, 0x50, 0x97, 0x93, 0x8c, 0x69, 
-  0x93, 0xc5, 0x58, 0x79, 0xa8, 0xea, 0x02, 0x24, 0x35, 0x74, 0x93, 
-  0xc8, 0x25, 0xa8, 0x8a, 0xb3, 0x52, 0x37, 0x19, 0xb9, 0xf4, 0x1f, 
-  0xa0, 0x71, 0x6e, 0x25, 0xe4, 0x37, 0x28, 0x90, 0xc4, 0x04, 0x4c, 
-  0xec, 0x05, 0x47, 0x0e, 0xaa, 0xb8, 0xe5, 0xd7, 0x28, 0xb9, 0xc1, 
-  0x7f, 0x05, 0x82, 0xf8, 0xea, 0xa3, 0xd6, 0xcd, 0x18, 0x56, 0x0a, 
-  0x60, 0x56, 0xa5, 0xa0, 0xea, 0x50, 0xc3, 0xd7, 0x8b, 0x0f, 0x98, 
-  0xcf, 0x69, 0xbd, 0xf5, 0x61, 0xd1, 0x37, 0x25, 0xda, 0x16, 0x2a, 
-  0xbc, 0xec, 0x55, 0xcc, 0xae, 0x54, 0xe8, 0x67, 0xdd, 0xd4, 0x1b, 
-  0xf0, 0x2b, 0x01, 0x75, 0x3b, 0x8a, 0xe0, 0x14, 0xed, 0xb0, 0x94, 
-  0xe1, 0x66, 0xea, 0x0e, 0x58, 0x6a, 0xd6, 0xe7, 0xec, 0xce, 0x24, 
-  0xfa, 0x6f, 0x64, 0xb1, 0xc3, 0xc7, 0xf2, 0x13, 0x7e, 0x55, 0x57, 
-  0x8b, 0x8b, 0x4e, 0x33, 0x50, 0xfa, 0x44, 0x65, 0x51, 0xbb, 0xd7, 
-  0x8b, 0xd0, 0x49, 0x49, 0x49, 0x2f, 0x9c, 0x4b, 0x2e, 0xe2, 0xc9, 
-  0xf3, 0xc7, 0xb1, 0x63, 0x82, 0x52, 0x75, 0xce, 0xa2, 0x1f, 0xf2, 
-  0x6e, 0x27, 0xbd, 0xd3, 0xd4, 0x35, 0x27, 0x4d, 0x13, 0x77, 0xbe, 
-  0xac, 0x6f, 0x00, 0xfd, 0x7a, 0xfa, 0xe1, 0xdd, 0x4a, 0xf1, 0x6c, 
-  0xe7, 0x1c, 0xc4, 0x0d, 0x6c, 0x44, 0xbd, 0x9b, 0xff, 0xc5, 0xa1, 
-  0x6e, 0x0c, 0xfa, 0x8e, 0x11, 0xc1, 0x90, 0x2d, 0x56, 0x3b, 0x42, 
-  0x57, 0x1d, 0x12, 0x8f, 0xd0, 0xea, 0xff, 0x1d, 0xcf, 0x28, 0x87, 
-  0xb9, 0x98, 0x24, 0x1e, 0x6b, 0xae, 0xcb, 0x71, 0xe4, 0x7a, 0x99, 
-  0xb3, 0x82, 0x82, 0x16, 0x94, 0x8f, 0x8b, 0x89, 0xc6, 0x41, 0x8d, 
-  0x63, 0x27, 0x60, 0xb2, 0xb2, 0x23, 0x80, 0xe6, 0xb5, 0x58, 0x4f, 
-  0xa1, 0xee, 0x0c, 0x76, 0xae, 0x79, 0xc6, 0xd1, 0x6d, 0x0d, 0x28, 
-  0x4e, 0x29, 0x00, 0x59, 0x5c, 0xe1, 0xa4, 0x44, 0x74, 0x3a, 0x01, 
-  0xf3, 0xaf, 0x19, 0xc2, 0x4a, 0x9b, 0x67, 0x49, 0xdd, 0x04, 0x55, 
-  0x77, 0x37, 0xa2, 0xaa, 0x77, 0x9a, 0xc9, 0x7c, 0xcd, 0x00, 0x1d, 
-  0x32, 0x78, 0x86, 0xe2, 0x0b, 0xdb, 0x76, 0xa3, 0x6b, 0xa7, 0x54, 
-  0xa3, 0x25, 0x70, 0x65, 0x40, 0x10, 0xda, 0x43, 0xd3, 0x7c, 0xbb, 
-  0x8a, 0xce, 0x85, 0xc3, 0x8d, 0x8a, 0x5e, 0xcb, 0xe3, 0xf0, 0xdd, 
-  0xc0, 0x08, 0x86, 0x92, 0xf0, 0xf1, 0x37, 0xe3, 0x3e, 0xb9, 0xd4, 
-  0x78, 0xb7, 0x83, 0x2c, 0x62, 0x4b, 0x27, 0x06, 0x76, 0x47, 0x69, 
-  0x80, 0x46, 0xcd, 0xea, 0xb4, 0x16, 0x59, 0xee, 0xa8, 0x6b, 0x12, 
-  0xaf, 0x52, 0xc5, 0x66, 0x78, 0xd6, 0x11, 0x40, 0x88, 0xf3, 0x3d, 
-  0x73, 0xa9, 0xd9, 0xa4, 0xc4, 0x84, 0x1e, 0xc9, 0x6c, 0xe6, 0x63, 
-  0x57, 0xc4, 0x90, 0x4b, 0x79, 0x6e, 0xd3, 0xd6, 0x74, 0x13, 0xa9, 
-  0xd4, 0xcb, 0x5a, 0x5c, 0x16, 0x29, 0xe6, 0x43, 0xc0, 0x23, 0x28, 
-  0xf4, 0x46, 0x87, 0x5c, 0x65, 0x91, 0x7b, 0xc5, 0xff, 0xfb, 0x5f, 
-  0xb5, 0x5f, 0xbb, 0xbb, 0x85, 0xbf, 0xd7, 0xfb, 0xe8, 0x23, 0x57, 
-  0x8a, 0x1d, 0xd1, 0x64, 0x9c, 0x69, 0xa1, 0x62, 0x4b, 0xd2, 0xb7, 
-  0x6e, 0x0f, 0x47, 0x34, 0xec, 0xd5, 0x49, 0x52, 0xe6, 0x11, 0x53, 
-  0x9f, 0x45, 0x5d, 0x05, 0x2f, 0xc9, 0xfb, 0x83, 0x2d, 0x0b, 0x2e, 
-  0xd9, 0x2f, 0x4b, 0xa7, 0x8f, 0x3b, 0xf7, 0x34, 0x3a, 0xb6, 0xb8, 
-  0x4f, 0x18, 0x24, 0x9c, 0xba, 0x08, 0x11, 0x32, 0xde, 0xc6, 0xc5, 
-  0xa3, 0x95, 0xce, 0xb7, 0xe3, 0x0b, 0x9d, 0xe8, 0xf0, 0xbc, 0x5b, 
-  0xf6, 0xff, 0xa9, 0x8b, 0x8c, 0x0b, 0xc2, 0x4e, 0x41, 0x00, 0x3b, 
-  0x90, 0x7a, 0x21, 0xef, 0xcf, 0x0b, 0xd2, 0xe1, 0x28, 0xc0, 0x4a, 
-  0xda, 0xc9, 0xba, 0xd3, 0x78, 0xb6, 0xa7, 0x47, 0x68, 0x68, 0x18, 
-  0xf2, 0x14, 0xaa, 0xf4, 0xc4, 0x2a, 0x4b, 0x1e, 0x8d, 0x76, 0xb2, 
-  0x96, 0x0c, 0x3d, 0x1f, 0x99, 0xaa, 0x9f, 0xba, 0xa0, 0x91, 0x84, 
-  0x95, 0xb9, 0x2f, 0x7b, 0x6d, 0xca, 0x16, 0x76, 0xc8, 0x89, 0xde, 
-  0xde, 0x52, 0x45, 0x5e, 0xcb, 0x1d, 0x5d, 0x94, 0x1c, 0x25, 0x11, 
-  0xe9, 0x26, 0x58, 0x41, 0x7b, 0xd4, 0x2d, 0xe2, 0x9d, 0x9e, 0x12, 
-  0xb9, 0x72, 0x76, 0xe7, 0x41, 0x64, 0x8e, 0x20, 0x17, 0x05, 0x52, 
-  0xa5, 0x0a, 0x67, 0x4e, 0x58, 0xb1, 0x4f, 0xf8, 0xeb, 0xd1, 0x64, 
-  0x75, 0xef, 0x2c, 0xbe, 0xd9, 0xf5, 0x05, 0x11, 0xc9, 0x2c, 0x30, 
-  0x11, 0xce, 0x4c, 0xe1, 0x83, 0x22, 0xd5, 0x61, 0x94, 0x5b, 0x4d, 
-  0xd4, 0x3c, 0xf3, 0xc2, 0x90, 0x4c, 0xbf, 0xbe, 0xe9, 0xbd, 0xf8, 
-  0x8d, 0xdf, 0xd9, 0x8e, 0x0a, 0xed, 0xf0, 0x5a, 0x33, 0xf3, 0x51, 
-  0xd0, 0x78, 0xf4, 0xa1, 0x6d, 0xcf, 0x28, 0xf1, 0xd6, 0x8e, 0x5c, 
-  0x31, 0x3b, 0x9d, 0x24, 0xac, 0xb4, 0xd4, 0x4c, 0x2e, 0xb1, 0xc5, 
-  0x38, 0x94, 0x9d, 0xf8, 0x69, 0x65, 0x7f, 0x3c, 0xb0, 0xab, 0x08, 
-  0x3e, 0x65, 0xb1, 0x56, 0x3b, 0xfd, 0x62, 0x76, 0xf7, 0x2e, 0x86, 
-  0xc3, 0x7d, 0xc9, 0xd6, 0x96, 0x59, 0x96, 0xda, 0x30, 0x56, 0x12, 
-  0xb4, 0x1a, 0x75, 0xd2, 0x79, 0x9f, 0x97, 0x39, 0x8e, 0xc5, 0xdb, 
-  0x0b, 0x35, 0xc7, 0x83, 0x0e, 0xa3, 0xd9, 0x90, 0x9e, 0x2e, 0xcc, 
-  0x70, 0x62, 0x8c, 0x01, 0xef, 0x33, 0xd2, 0xa8, 0xc3, 0x6f, 0x72, 
-  0x24, 0xf8, 0x2f, 0xa3, 0x12, 0x32, 0xbf, 0x9d, 0x0c, 0x40, 0x7b, 
-  0xb4, 0x76, 0xee, 0xc0, 0x6e, 0x8c, 0xb3, 0xe4, 0xd0, 0x54, 0x68, 
-  0xab, 0xbf, 0x27, 0xd1, 0x57, 0xf6, 0x41, 0x07, 0xfc, 0x11, 0x0a, 
-  0x6b, 0xb0, 0x17, 0x5f, 0xd7, 0x21, 0x2e, 0x5f, 0xa8, 0x17, 0xf5, 
-  0x83, 0xbc, 0x7a, 0xca, 0x39, 0x2e, 0xa2, 0x7e, 0x0a, 0x9d, 0x13, 
-  0xb8, 0x1c, 0x39, 0x04, 0xdf, 0x76, 0x4d, 0xad, 0xcb, 0xd3, 0x1c, 
-  0xb6, 0x71, 0x88, 0x10, 0x08, 0x49, 0x78, 0x8e, 0x81, 0xba, 0x66, 
-  0x10, 0xd8, 0xcb, 0x57, 0x91, 0x7d, 0xa2, 0x09, 0xf3, 0xcf, 0xbe, 
-  0x2c, 0xd2, 0x09, 0x29, 0x6f, 0x6b, 0x15, 0xf4, 0xfa, 0x7b, 0x9f, 
-  0xd1, 0xd9, 0xd6, 0x9e, 0x98, 0xfe, 0x46, 0xe9, 0x53, 0xa5, 0xcf, 
-  0x2e, 0xed, 0x1e, 0x99, 0x42, 0x1d, 0xae, 0xaa, 0xfd, 0xe6, 0x97, 
-  0xd4, 0xd1, 0x68, 0x9f, 0xf6, 0x47, 0x57, 0x75, 0xee, 0xda, 0x10, 
-  0x4e, 0xd5, 0x19, 0x5f, 0x2d, 0x8c, 0x93, 0x93, 0x62, 0xd7, 0x87, 
-  0x5d, 0x98, 0xde, 0xfb, 0x13, 0xbd, 0x13, 0xcc, 0xeb, 0x59, 0x8b, 
-  0x92, 0x69, 0x95, 0xf1, 0xfb, 0x40, 0xff, 0xe9, 0x5e, 0xc5, 0x41, 
-  0xbb, 0x56, 0x3a, 0xd0, 0x76, 0xe3, 0x4b, 0x81, 0x06, 0x0a, 0x97, 
-  0x55, 0x95, 0x33, 0x8a, 0xac, 0x66, 0x7e, 0x1a, 0x47, 0x97, 0xb3, 
-  0x7e, 0x18, 0xad, 0xd1, 0x22, 0x90, 0x91, 0x85, 0x46, 0x27, 0xa4, 
-  0xda, 0x29, 0x22, 0xbb, 0xf0, 0x32, 0xda, 0x5a, 0xff, 0xc8, 0xec, 
-  0xa9, 0x12, 0x72, 0x57, 0xa6, 0xdd, 0x0e, 0x49, 0x72, 0xe2, 0xb5, 
-  0xfc, 0xe8, 0x82, 0xa4, 0x3d, 0x31, 0x85, 0x2b, 0x6d, 0x00, 0xe0, 
-  0xe1, 0x91, 0xbb, 0x85, 0x7e, 0x09, 0xfe, 0xbc, 0xea, 0x1a, 0xe0, 
-  0x61, 0x53, 0x2b, 0x48, 0x94, 0x8c, 0x4b, 0x25, 0xd8, 0x92, 0x4e, 
-  0x9a, 0x53, 0x8f, 0xf4, 0x3d, 0x7e, 0xb0, 0x3c, 0xfd, 0xe5, 0x6d, 
-  0xee, 0x13, 0x7b, 0xfa, 0xc6, 0xfa, 0x11, 0x88, 0x1c, 0xb9, 0x02, 
-  0x8e, 0x53, 0xef, 0x92, 0xe2, 0xb1, 0xf9, 0x81, 0xef, 0x06, 0x17, 
-  0xff, 0xba, 0x28, 0xc9, 0xbf, 0x2f, 0xb0, 0x6e, 0x27, 0xb8, 0x38, 
-  0xc4, 0x3f, 0x36, 0x6c, 0x82, 0x90, 0x0c, 0x86, 0x22, 0x0e, 0xe0, 
-  0x03, 0x88, 0xc5, 0x29, 0x65, 0xa5, 0x11, 0x6d, 0xac, 0xba, 0x7f, 
-  0x78, 0xcd, 0xbc, 0xe9, 0xf4, 0xf5, 0x39, 0x76, 0xfb, 0x31, 0x80, 
-  0x65, 0x8b, 0x08, 0x01, 0x3b, 0x73, 0xce, 0x57, 0x50, 0xb7, 0xe9, 
-  0x60, 0x6d, 0xd6, 0x35, 0x71, 0xf8, 0x9a, 0xc7, 0x68, 0x2a, 0x9e, 
-  0xc0, 0x10, 0xe8, 0x10, 0x26, 0xbc, 0x1f, 0x35, 0xa5, 0x8d, 0xb8, 
-  0x8c, 0x20, 0xd8, 0xcf, 0x2f, 0xb4, 0xa6, 0x26, 0xea, 0x3e, 0x54, 
-  0xa5, 0xff, 0xda, 0x2b, 0xab, 0x79, 0x57, 0x1d, 0x5f, 0xe1, 0x90, 
-  0xd2, 0xa2, 0xb1, 0x24, 0x21, 0xda, 0x88, 0xbd, 0x94, 0x30, 0xa8, 
-  0x5c, 0x20, 0xbf, 0xe3, 0x9b, 0x88, 0xeb, 0x82, 0x33, 0xcb, 0xcb, 
-  0xad, 0xa3, 0x3d, 0x97, 0x1a, 0xd0, 0x9b, 0xb3, 0x0f, 0x20, 0x29, 
-  0xeb, 0x48, 0x3a, 0xaa, 0x81, 0x04, 0x78, 0x82, 0x28, 0x41, 0xcb, 
-  0xac, 0x82, 0xdd, 0x84, 0xe4, 0x46, 0x6c, 0x40, 0xad, 0x8d, 0x02, 
-  0xb5, 0xa6, 0xac, 0xb2, 0x6d, 0x36, 0x1c, 0x0a, 0x08, 0xda, 0x25, 
-  0x48, 0x0c, 0x65, 0xe5, 0xc4, 0xc0, 0xf5, 0xda, 0x37, 0x8c, 0xa9, 
-  0x0c, 0xe6, 0xca, 0x81, 0x66, 0x06, 0x2e, 0x84, 0x60, 0x7f, 0xbb, 
-  0x58, 0x57, 0x8a, 0xa6, 0xed, 0xa1, 0x46, 0xe6, 0x6b, 0x74, 0x16, 
-  0x36, 0x65, 0xe4, 0xcf, 0x8e, 0x54, 0xa5, 0xc9, 0x9a, 0xa5, 0x27, 
-  0x3c, 0x44, 0x7e, 0x55, 0x1d, 0x11, 0x93, 0xd6, 0x70, 0xf1, 0x93, 
-  0x08, 0x3c, 0x62, 0xd7, 0x9c, 0x04, 0x83, 0x70, 0xcb, 0x0f, 0x87, 
-  0x26, 0x6f, 0x45, 0xd8, 0xc7, 0xe7, 0x5c, 0xbf, 0x39, 0x5d, 0x90, 
-  0x2b, 0xb3, 0xa9, 0x79, 0x39, 0x4e, 0xfd, 0x38, 0x8b, 0x2d, 0x92, 
-  0x3d, 0xdc, 0x62, 0x88, 0xad, 0xfd, 0x74, 0xfa, 0x03, 0xca, 0xd8, 
-  0x90, 0x46, 0x77, 0xcd, 0x15, 0x9e, 0x4f, 0xc5, 0x65, 0x8f, 0x8f, 
-  0xba, 0x13, 0x8b, 0xda, 0x18, 0xac, 0xd9, 0xe1, 0x7b, 0xae, 0x72, 
-  0x2b, 0xf6, 0x37, 0x1a, 0xce, 0x10, 0x29, 0x3a, 0xb1, 0x45, 0xae, 
-  0x7a, 0xf3, 0x2e, 0x83, 0x90, 0x0b, 0x25, 0x62, 0xff, 0x18, 0x4d, 
-  0xe2, 0xe1, 0x87, 0x73, 0x58, 0x31, 0x59, 0x9f, 0x7b, 0xde, 0x3a, 
-  0xca, 0x90, 0xc0, 0xea, 0x1a, 0x97, 0x00, 0xd1, 0xb7, 0x0f, 0x41, 
-  0x15, 0xee, 0xb4, 0xca, 0xe9, 0xf4, 0x7d, 0x38, 0x05, 0xdb, 0xd1, 
-  0x6b, 0x79, 0xdd, 0xad, 0x1e, 0x44, 0x0c, 0xd0, 0xc5, 0x7c, 0x14, 
-  0x58, 0x18, 0x21, 0x6c, 0xb1, 0x0f, 0x3b, 0x5d, 0x1b, 0xc0, 0xc3, 
-  0xf3, 0xae, 0x44, 0x94, 0xd1, 0xe2, 0xca, 0x7c, 0x84, 0x45, 0x20, 
-  0x02, 0xad, 0xbd, 0xd8, 0x81, 0xb4, 0x24, 0xf8, 0xaa, 0xe9, 0xcf, 
-  0xf1, 0xd1, 0xac, 0x7f, 0x10, 0x00, 0x30, 0x62, 0x39, 0xc3, 0xff, 
-  0xbc, 0x36, 0x80, 0xd9, 0xd8, 0x1d, 0xaa, 0x41, 0xfa, 0xa2, 0x8f, 
-  0x38, 0xa3, 0x62, 0xe9, 0x12, 0xe2, 0xdb, 0x38, 0x7a, 0x2e, 0x53, 
-  0x00, 0xba, 0x78, 0x28, 0xad, 0xca, 0xc0, 0x54, 0x30, 0x95, 0xa8, 
-  0x95, 0x1b, 0xe1, 0x16, 0x24, 0xf2, 0x9c, 0x13, 0xc6, 0x6d, 0x1d, 
-  0x7e, 0x97, 0x3e, 0xa4, 0x0e, 0x70, 0x28, 0x74, 0xde, 0xaf, 0xfc, 
-  0x31, 0x08, 0x04, 0xea, 0xf7, 0x0f, 0x37, 0xb2, 0x6f, 0xdb, 0xd4, 
-  0x86, 0xe3, 0x2b, 0x7a, 0x1b, 0xa9, 0x3c, 0x28, 0x23, 0xf1, 0x5d, 
-  0x32, 0xab, 0x39, 0xbe, 0x47, 0xa8, 0xe5, 0x13, 0x2c, 0xc6, 0x3a, 
-  0x53, 0x71, 0xd9, 0x55, 0xcd, 0xd2, 0x47, 0xa4, 0x92, 0x4d, 0x73, 
-  0x64, 0x12, 0xa7, 0x82, 0x54, 0x14, 0x79, 0x8f, 0x47, 0x0b, 0xa9, 
-  0x37, 0x50, 0x87, 0xdd, 0x38, 0xa8, 0x25, 0x84, 0x5c, 0x9d, 0xeb, 
-  0x9f, 0x2e, 0xcf, 0x12, 0x9f, 0x31, 0x9f, 0x0b, 0xf9, 0xd2, 0xa2, 
-  0x12, 0xff, 0xfd, 0x4e, 0xc8, 0xb8, 0x10, 0xaf, 0xbe, 0x76, 0x79, 
-  0xb6, 0x18, 0xb4, 0x57, 0xd7, 0x10, 0xc2, 0xb8, 0x7c, 0x8b, 0xc7, 
-  0xac, 0x77, 0x62, 0x88, 0xeb, 0x1d, 0xab, 0xf0, 0xa2, 0x3c, 0x95, 
-  0x41, 0x3d, 0xc5, 0xbd, 0xd2, 0x93, 0xc4, 0x8b, 0x7c, 0xb5, 0xfc, 
-  0xbe, 0x67, 0xbb, 0x7c, 0x81, 0x45, 0x71, 0x0e, 0x32, 0xf4, 0xd0, 
-  0x3b, 0xe9, 0xcd, 0xfa, 0x1c, 0xc2, 0x96, 0xe2, 0xe8, 0xda, 0x7e, 
-  0x0f, 0xc0, 0xaa, 0x7e, 0xae, 0x38, 0x3e, 0xd8, 0x90, 0x99, 0x3f, 
-  0xec, 0x9b, 0x63, 0x2f, 0xa8, 0x5b, 0x0b, 0x7e, 0xe9, 0x1a, 0x35, 
-  0x0b, 0x3d, 0x27, 0xd1, 0xa8, 0x20, 0xf3, 0xad, 0xfd, 0xe3, 0x7c, 
-  0xc5, 0xa8, 0x67, 0x4e, 0x01, 0x83, 0xe9, 0xbf, 0xf6, 0x1a, 0x8a, 
-  0xb0, 0xb9, 0xcf, 0xac, 0x4a, 0x6d, 0x29, 0xa3, 0x72, 0xa9, 0xb3, 
-  0x55, 0x28, 0x15, 0x52, 0x0a, 0xb1, 0xed, 0x15, 0x90, 0x68, 0xc9, 
-  0xab, 0x63, 0x32, 0x02, 0xd1, 0x39, 0x1d, 0x3a, 0xf0, 0x3e, 0xd5, 
-  0xf8, 0xa8, 0xed, 0xd2, 0xbb, 0xb0, 0xa3, 0x1b, 0xd0, 0x37, 0xc7, 
-  0x26, 0xbb, 0xb1, 0x7c, 0x1a, 0xc5, 0x3c, 0xa0, 0xcb, 0xa6, 0xdc, 
-  0x92, 0xa9, 0x84, 0x10, 0x3d, 0xd5, 0x06, 0xbf, 0xe3, 0x00, 0xf3, 
-  0x16, 0x23, 0x38, 0x5e, 0x9f, 0x8d, 0xeb, 0x39, 0x67, 0x78, 0xfb, 
-  0xd9, 0xef, 0xc1, 0xff, 0xc4, 0x0b, 0x8d, 0x37, 0x6d, 0x1b, 0xc0, 
-  0x53, 0xc9, 0x94, 0xf2, 0xd5, 0x74, 0xf7, 0x89, 0x1f, 0xc6, 0x4f, 
-  0x44, 0xe3, 0x78, 0x8c, 0x02, 0xbf, 0x39, 0xbc, 0x69, 0xdb, 0x1f, 
-  0x22, 0x2e, 0x2c, 0xd4, 0xff, 0x98, 0xdc, 0xda, 0x8c, 0x65, 0x2d, 
-  0xb1, 0x22, 0x9a, 0xd6, 0xec, 0x6f, 0x96, 0xae, 0x75, 0x40, 0x66, 
-  0x22, 0xec, 0x5a, 0x86, 0xcd, 0x54, 0x30, 0xab, 0x9b, 0x2f, 0xe1, 
-  0xab, 0xec, 0xce, 0x1d, 0xa6, 0x1c, 0xa2, 0xce, 0x09, 0xa0, 0xa2, 
-  0x12, 0x57, 0x40, 0x56, 0x3c, 0xce, 0x13, 0x61, 0x44, 0x65, 0xd9, 
-  0x18, 0x4a, 0x2e, 0xe0, 0xcb, 0xc3, 0x5e, 0x2d, 0x8d, 0x78, 0xa8, 
-  0x9b, 0xf3, 0x80, 0x5f, 0x30, 0x5c, 0xf8, 0x2f, 0x12, 0xaf, 0xfd, 
-  0x85, 0x60, 0x3d, 0x2d, 0x35, 0x39, 0xe4, 0xd9, 0x91, 0x01, 0x60, 
-  0x07, 0xa3, 0xfb, 0x1c, 0x7b, 0x26, 0xaa, 0x9d, 0x3d, 0x01, 0xc5, 
-  0xaf, 0xb0, 0x3d, 0x08, 0x47, 0x92, 0x0d, 0x14, 0xc1, 0x09, 0xd0, 
-  0xc0, 0xea, 0xf3, 0x8b, 0x80, 0x10, 0x43, 0xbb, 0x9f, 0x5e, 0x22, 
-  0x8e, 0x1b, 0xdb, 0x72, 0xc4, 0x38, 0x6f, 0x83, 0x7f, 0x88, 0x03, 
-  0xe7, 0x93, 0xc5, 0x47, 0x5a, 0x3f, 0xba, 0x4c, 0x4e, 0xd0, 0x66, 
-  0xdb, 0x6f, 0x1c, 0x4a, 0x37, 0x41, 0x2c, 0xac, 0x1c, 0x0a, 0x22, 
-  0x61, 0xdf, 0x3e, 0xf9, 0x87, 0x7e, 0x16, 0xe6, 0x53, 0x20, 0x1e, 
-  0x2f, 0x45, 0x93, 0x71, 0x9f, 0x53, 0xa5, 0x02, 0xd0, 0xba, 0x5a, 
-  0x6d, 0xfa, 0xca, 0x1a, 0xc1, 0x48, 0x28, 0xc7, 0x8d, 0x0b, 0xb2, 
-  0xaf, 0xd4, 0x66, 0xc9, 0xe1, 0xa1, 0xbb, 0x3f, 0xee, 0x0d, 0x9a, 
-  0x7a, 0x9d, 0xcf, 0x20, 0x92, 0x62, 0x06, 0x9b, 0x58, 0x77, 0x89, 
-  0xe8, 0xed, 0xa8, 0xf7, 0xc0, 0xfb, 0xe0, 0xa9, 0xba, 0xa0, 0x93, 
-  0xdb, 0x1a, 0x19, 0x55, 0x27, 0x58, 0x59, 0xaa, 0x65, 0x73, 0xdb, 
-  0x71, 0x57, 0xdb, 0x3c, 0xcc, 0x1c, 0x86, 0x85, 0xf9, 0x2b, 0x6f, 
-  0xbc, 0xc5, 0x41, 0x51, 0x59, 0x58, 0x27, 0xc8, 0x5e, 0xf2, 0x60, 
-  0x4e, 0xbf, 0x85, 0xb8, 0xb1, 0xc6, 0x70, 0xe2, 0x1c, 0xd3, 0x1d, 
-  0x80, 0x1e, 0x38, 0x6f, 0x09, 0x9b, 0x2c, 0x82, 0x00, 0xc0, 0xc4, 
-  0x32, 0xc2, 0x83, 0x71, 0xb0, 0x69, 0x34, 0x81, 0x20, 0xaa, 0x40, 
-  0x43, 0xd3, 0x25, 0x6b, 0x93, 0x5c, 0xfe, 0x59, 0x58, 0xfe, 0xe6, 
-  0x65, 0x0a, 0x56, 0x11, 0x48, 0xce, 0xea, 0x8e, 0x5e, 0xd3, 0x1c, 
-  0x56, 0xb3, 0x47, 0x62, 0x5d, 0xb7, 0x07, 0x83, 0xf7, 0xd1, 0x3b, 
-  0x6e, 0xf2, 0x1c, 0xf6, 0xbe, 0x73, 0x3d, 0x89, 0xcf, 0x90, 0x02, 
-  0xf7, 0x1b, 0x83, 0xf4, 0x03, 0x62, 0xce, 0xc2, 0x9a, 0x91, 0x8c, 
-  0x0c, 0x33, 0xc5, 0xb5, 0x0c, 0x88, 0x56, 0x5f, 0x2d, 0x43, 0x14, 
-  0xef, 0x45, 0x4e, 0x22, 0x66, 0xc7, 0xff, 0xbe, 0xd6, 0xc7, 0x09, 
-  0x68, 0x4a, 0x26, 0xec, 0x3c, 0x7a, 0x2b, 0x30, 0xe5, 0x69, 0xc1, 
-  0x3b, 0x4e, 0x65, 0x5b, 0xf2, 0xa7, 0x95, 0x7d, 0x52, 0xbc, 0x06, 
-  0x33, 0x0d, 0x6e, 0x98, 0x71, 0x08, 0xe9, 0x77, 0x6c, 0xb0, 0xbd, 
-  0x07, 0x5b, 0x0a, 0x99, 0xc7, 0xbf, 0xa7, 0xdf, 0x5f, 0x37, 0x4b, 
-  0xfc, 0x92, 0xce, 0x69, 0x55, 0x80, 0x97, 0x83, 0x81, 0x25, 0x52, 
-  0x8c, 0xd2, 0xa4, 0x00, 0x04, 0xe7, 0xc6, 0x91, 0x9c, 0x2b, 0x9f, 
-  0x31, 0xba, 0x19, 0x93, 0x38, 0xeb, 0x34, 0xd1, 0x44, 0x74, 0x04, 
-  0x49, 0x2f, 0x3d, 0xf2, 0xbf, 0x19, 0xca, 0x75, 0x07, 0x08, 0xfc, 
-  0xb2, 0xf8, 0x24, 0xf1, 0xc8, 0x7a, 0x0b, 0x67, 0x69, 0x00, 0x48, 
-  0xff, 0xe4, 0x50, 0xe1, 0xcd, 0x2f, 0x0f, 0x23, 0x4a, 0xfb, 0x04, 
-  0x65, 0x4b, 0xd7, 0x8b, 0xd2, 0xfd, 0x2f, 0x0a, 0x2d, 0xc2, 0xb0, 
-  0x79, 0xcf, 0x31, 0x26, 0xf3, 0xe8, 0x4e, 0xe6, 0x49, 0xfb, 0x0a, 
-  0x21, 0x89, 0x49, 0x76, 0x79, 0xe9, 0x9a, 0xff, 0xe9, 0x27, 0xda, 
-  0x10, 0x79, 0xcc, 0x7b, 0xba, 0x5b, 0x12, 0x7f, 0xb0, 0x19, 0xfb, 
-  0xd7, 0x48, 0xb7, 0x24, 0xf8, 0x59, 0xc7, 0x17, 0x55, 0xfc, 0x8b, 
-  0x21, 0x57, 0xd6, 0xab, 0x35, 0x81, 0x14, 0x6c, 0xbd, 0x4c, 0xc2, 
-  0x09, 0xd6, 0x1d, 0x98, 0x15, 0x14, 0xd3, 0x89, 0x24, 0x17, 0x18, 
-  0x98, 0xe3, 0x94, 0x95, 0xba, 0x5e, 0x38, 0x0d, 0x4a, 0x61, 0x6f, 
-  0x28, 0xc3, 0x99, 0x8d, 0x7f, 0x56, 0x5d, 0xc2, 0xf0, 0x79, 0x4c, 
-  0xba, 0x09, 0x2f, 0x36, 0x9c, 0x38, 0x19, 0xd0, 0x67, 0x52, 0xeb, 
-  0x9a, 0x0a, 0x79, 0x37, 0x81, 0x7a, 0x38, 0x0b, 0xb9, 0xb1, 0x67, 
-  0x70, 0x5a, 0x29, 0xa1, 0xc7, 0x90, 0x3f, 0x02, 0xb4, 0x63, 0x1a, 
-  0x16, 0x66, 0x59, 0x9e, 0xe5, 0x75, 0x61, 0x38, 0xda, 0x27, 0xd5, 
-  0x78, 0xb3, 0x03, 0xd3, 0xbe, 0x0a, 0xb2, 0x8d, 0xad, 0xca, 0xe9, 
-  0xf2, 0xdf, 0x9d, 0x99, 0xab, 0x6b, 0x14, 0x1b, 0x02, 0x35, 0xc7, 
-  0xba, 0x4b, 0x0a, 0x48, 0x0a, 0xf0, 0xc3, 0x9a, 0x12, 0xb6, 0x8f, 
-  0xa6, 0xab, 0xe6, 0x8c, 0xaa, 0xab, 0x13, 0xab, 0x4c, 0xdb, 0x1a, 
-  0xcf, 0x19, 0x54, 0x13, 0xa0, 0xde, 0x36, 0xd8, 0x03, 0x0c, 0x7f, 
-  0xc1, 0x99, 0x7a, 0x99, 0x4d, 0xc3, 0xa0, 0xc6, 0x04, 0x62, 0xec, 
-  0x44, 0x4c, 0x59, 0x3a, 0xab, 0x36, 0x5f, 0xd0, 0xba, 0x56, 0x27, 
-  0xf1, 0xff, 0x02, 0xec, 0x30, 0xa8, 0x29, 0xac, 0x0a, 0x02, 0xeb, 
-  0x0c, 0x40, 0x73, 0xf5, 0x58, 0xf2, 0x4e, 0x21, 0x6a, 0x1c, 0xc4, 
-  0x30, 0x4c, 0x33, 0x6d, 0xb5, 0x66, 0xb6, 0x68, 0x2b, 0x5c, 0xc8, 
-  0xe2, 0xab, 0x9b, 0x76, 0x30, 0x02, 0xdd, 0x6e, 0xe3, 0x7b, 0x14, 
-  0x9a, 0x25, 0xce, 0x9f, 0x8e, 0x3f, 0x4f, 0xee, 0x36, 0x35, 0xe4, 
-  0x35, 0xa2, 0x65, 0x10, 0xac, 0xd4, 0xca, 0xd4, 0xd5, 0xb1, 0x69, 
-  0x8e, 0xa5, 0xfd, 0xcb, 0x80, 0xa5, 0x77, 0xf9, 0xcc, 0xbd, 0xd6, 
-  0x9f, 0x03, 0x98, 0xcb, 0x5f, 0x94, 0x38, 0x78, 0xa9, 0xe4, 0x6a, 
-  0xc8, 0x8e, 0xcb, 0xd4, 0x2e, 0x93, 0xd9, 0x0c, 0x42, 0x4b, 0xfb, 
-  0xa0, 0x60, 0x65, 0xab, 0x22, 0x47, 0x6b, 0xcd, 0xba, 0x0d, 0x0d, 
-  0xc1, 0xd9, 0x8f, 0x44, 0x9b, 0xb7, 0x03, 0xec, 0x18, 0x51, 0x5e, 
-  0xc4, 0x24, 0x6a, 0x24, 0x89, 0xbb, 0x6a, 0x56, 0x45, 0xbb, 0xe0, 
-  0xbf, 0x6e, 0x47, 0x49, 0x5b, 0xf5, 0x33, 0x86, 0x9c, 0xa8, 0x7f, 
-  0x7a, 0x07, 0x19, 0x44, 0xe9, 0x53, 0x85, 0x5e, 0x37, 0x9f, 0x4a, 
-  0x7e, 0xde, 0x97, 0xdb, 0xdd, 0x9c, 0xd1, 0x6f, 0xaf, 0x19, 0x7a, 
-  0xba, 0xfa, 0xcf, 0xa0, 0xfe, 0x75, 0x34, 0x56, 0xf2, 0x9a, 0x78, 
-  0xba, 0x78, 0xaf, 0x78, 0xb4, 0x2f, 0x19, 0x6a, 0xc5, 0xfb, 0xd5, 
-  0x87, 0x1a, 0xab, 0x1f, 0x2e, 0xe9, 0xfe, 0xbf, 0xba, 0x5e, 0x55, 
-  0x79, 0x40, 0xc1, 0xc9, 0xae, 0x6a, 0xc4, 0x70, 0xf8, 0xd8, 0xa0, 
-  0x48, 0x2a, 0x2f, 0x99, 0x64, 0xa8, 0xb3, 0x1f, 0xda, 0xea, 0x29, 
-  0x37, 0x98, 0x63, 0xe3, 0xbf, 0xff, 0x5d, 0x81, 0xf2, 0xad, 0xe3, 
-  0xe6, 0xab, 0x23, 0xf3, 0x7d, 0x70, 0xaa, 0xaf, 0xda, 0x14, 0x57, 
-  0x18, 0x94, 0xa1, 0x37, 0x49, 0x4f, 0x36, 0x63, 0x9d, 0x9b, 0xa1, 
-  0x14, 0x03, 0x36, 0xbc, 0x63, 0x21, 0x65, 0x49, 0x75, 0xeb, 0x27, 
-  0x0a, 0x2d, 0x95, 0x76, 0x88, 0xf9, 0x09, 0xcb, 0x17, 0x84, 0xcb, 
-  0x07, 0x8b, 0xff, 0x5f, 0x4f, 0x6d, 0x7a, 0x41, 0xa1, 0x71, 0x6b, 
-  0x3c, 0xda, 0x7f, 0xfd, 0x28, 0x8e, 0x5f, 0x50, 0xeb, 0x0f, 0xdb, 
-  0x18, 0xe2, 0x91, 0x5a, 0xc1, 0x3d, 0x06, 0x30, 0x24, 0xf5, 0xc6, 
-  0x9e, 0x3e, 0x71, 0xf9, 0x64, 0x00, 0x77, 0x5c, 0xb9, 0xea, 0x0a, 
-  0x97, 0xdd, 0x79, 0xa0, 0x2b, 0x65, 0xec, 0x78, 0xbc, 0x20, 0xd3, 
-  0x77, 0xd6, 0x15, 0xfc, 0x5a, 0x58, 0x0c, 0xd4, 0x3e, 0xcf, 0xa1, 
-  0x24, 0x44, 0xf9, 0xef, 0xe4, 0x33, 0x0d, 0xf6, 0x23, 0x36, 0x46, 
-  0xf7, 0x8a, 0xc5, 0xed, 0x99, 0x5b, 0x35, 0xd3, 0xa3, 0xcc, 0xed, 
-  0xc9, 0x2b, 0xdf, 0xc8, 0xbe, 0x83, 0x27, 0x00, 0xde, 0x54, 0x12, 
-  0xd1, 0x28, 0x51, 0x1c, 0x86, 0xc2, 0x8a, 0x6a, 0xe9, 0x54, 0xa1, 
-  0x29, 0x4a, 0x69, 0x0a, 0x1c, 0x95, 0x00, 0xa5, 0xb5, 0x5a, 0x87, 
-  0x30, 0xa3, 0xc5, 0xcc, 0xa6, 0x56, 0x81, 0x12, 0x98, 0x8f, 0x9e, 
-  0xb9, 0xb8, 0x48, 0xe3, 0x3f, 0x44, 0xa1, 0x74, 0xad, 0x97, 0x2a, 
-  0x2d, 0x7f, 0x07, 0x46, 0x9d, 0xdf, 0xdc, 0xab, 0x6b, 0x8e, 0x27, 
-  0x5d, 0x93, 0xc7, 0xb9, 0xca, 0x64, 0x7e, 0x44, 0xf7, 0xc8, 0xca, 
-  0xca, 0x13, 0xde, 0xff, 0x8c, 0xc8, 0xb6, 0x98, 0xda, 0x2c, 0xe1, 
-  0x6d, 0xba, 0xb9, 0x50, 0xc1, 0xef, 0x2e, 0x00, 0x53, 0x09, 0x5c, 
-  0xd9, 0xca, 0x0a, 0xd0, 0x3f, 0x22, 0xb3, 0xae, 0x26, 0xed, 0xd4, 
-  0xec, 0xaa, 0xf2, 0x88, 0x26, 0x4a, 0xe8, 0x5d, 0xfa, 0x3d, 0xef, 
-  0x8a, 0x88, 0xbe, 0x79, 0x13, 0x50, 0x2e, 0x56, 0x46, 0x43, 0x98, 
-  0x89, 0x05, 0xab, 0x70, 0xdc, 0xd9, 0x5f, 0x0f, 0x1b, 0x87, 0xee, 
-  0x0b, 0x4a, 0x47, 0xa6, 0x79, 0x46, 0x8d, 0x84, 0xbe, 0xb8, 0x66, 
-  0x82, 0x24, 0xfa, 0x06, 0x67, 0xf9, 0x66, 0xf4, 0x5f, 0xe4, 0xbb, 
-  0x83, 0x6b, 0x41, 0xd7, 0x9f, 0x9b, 0x7c, 0x69, 0x42, 0x02, 0x54, 
-  0xb3, 0x14, 0xcb, 0xf2, 0x5c, 0xbe, 0xf5, 0x16, 0xd7, 0xb4, 0xf1, 
-  0x19, 0xdf, 0x6d, 0x5d, 0x27, 0x38, 0x9e, 0xa0, 0x74, 0x5d, 0x76, 
-  0x48, 0x67, 0x70, 0x55, 0x33, 0x67, 0x83, 0xde, 0x83, 0xe0, 0x53, 
-  0x1c, 0xc5, 0x85, 0xab, 0xce, 0x91, 0xd0, 0x70, 0xa7, 0x43, 0x87, 
-  0x31, 0x17, 0xe3, 0x84, 0xe0, 0xb9, 0x24, 0x02, 0x58, 0x1f, 0x6f, 
-  0x84, 0xbe, 0x8a, 0x0a, 0x83, 0x6b, 0x06, 0x43, 0xe6, 0x52, 0x9d, 
-  0xf2, 0x07, 0xeb, 0xd6, 0x91, 0x3c, 0xa7, 0xe8, 0x4e, 0x9b, 0xe8, 
-  0xa2, 0xa6, 0x45, 0x66, 0xe0, 0xf9, 0xb5, 0x1d, 0x92, 0x21, 0x5b, 
-  0xbd, 0xf1, 0xe5, 0x51, 0xdb, 0xde, 0xf6, 0xb8, 0x57, 0x8c, 0x96, 
-  0xc1, 0x5c, 0x75, 0x89, 0xab, 0x84, 0x20, 0xdd, 0x1f, 0xac, 0xdd, 
-  0xfa, 0xd8, 0x52, 0xde, 0xce, 0x30, 0x15, 0x0a, 0xad, 0x7c, 0x4a, 
-  0x9a, 0xe8, 0x82, 0xc4, 0x54, 0x81, 0x9d, 0x3a, 0x52, 0xc1, 0x6d, 
-  0x29, 0xa9, 0x1a, 0x0d, 0x7b, 0x49, 0xd3, 0x63, 0xa0, 0xca, 0xb4, 
-  0x3e, 0xcb, 0x62, 0xb0, 0xc1, 0x67, 0x4b, 0x27, 0x69, 0x68, 0xd5, 
-  0x8b, 0x23, 0x0d, 0x56, 0xb3, 0x2f, 0xfc, 0xc8, 0x96, 0xc4, 0xbb, 
-  0xe6, 0xe0, 0xa7, 0x68, 0x42, 0xaf, 0xd1, 0xb4, 0x07, 0xe5, 0x20, 
-  0x42, 0x59, 0x46, 0x60, 0x8c, 0x7c, 0x94, 0xcb, 0xb0, 0xe9, 0xcd, 
-  0x23, 0xe4, 0x4f, 0x54, 0xfe, 0x1b, 0x16, 0xd9, 0xd9, 0xb0, 0x58, 
-  0x72, 0xa6, 0xa7, 0x6f, 0x61, 0x4a, 0x73, 0x30, 0x9f, 0xff, 0x15, 
-  0x6b, 0xed, 0x83, 0x43, 0xbf, 0xd1, 0xa0, 0x31, 0x5d, 0xeb, 0xb3, 
-  0x5f, 0x88, 0xd5, 0x8a, 0x58, 0x5f, 0xd1, 0xf1, 0x1d, 0x28, 0x44, 
-  0x74, 0x06, 0x92, 0xa8, 0x8e, 0x38, 0x30, 0x1c, 0xa6, 0x9b, 0xe8, 
-  0x29, 0x4f, 0x58, 0xf3, 0xf1, 0xa2, 0x88, 0xf8, 0xe4, 0x47, 0x55, 
-  0xfa, 0xa5, 0xf2, 0x4a, 0xff, 0x09, 0x7d, 0x8e, 0x4a, 0x3a, 0x66, 
-  0xdc, 0x9c, 0x52, 0x96, 0xdf, 0x19, 0xaa, 0x8d, 0x94, 0xaa, 0xdb, 
-  0xa4, 0xe3, 0xb5, 0x21, 0x7f, 0x77, 0x65, 0x34, 0xc0, 0xba, 0x4f, 
-  0x04, 0xe3, 0xe9, 0x88, 0x29, 0x6d, 0xa9, 0x09, 0x65, 0x3c, 0xf5, 
-  0xbc, 0x02, 0x6b, 0x71, 0x80, 0xa0, 0x4e, 0x2b, 0x90, 0x55, 0xa7, 
-  0xcf, 0x32, 0x76, 0xd3, 0xb0, 0x61, 0x18, 0x13, 0xc4, 0xa9, 0x2b, 
-  0x26, 0xd0, 0xb9, 0xdf, 0x91, 0xfd, 0x30, 0x3a, 0xbf, 0xf6, 0x48, 
-  0x82, 0x89, 0xd7, 0xfd, 0x8d, 0x43, 0x23, 0xa2, 0x07, 0x66, 0x7b, 
-  0x18, 0x92, 0x6e, 0xf3, 0x00, 0xbd, 0x3d, 0x28, 0x0b, 0x04, 0xa5, 
-  0x9c, 0xd8, 0x8b, 0x75, 0x45, 0x56, 0x49, 0xa7, 0x1d, 0x41, 0xaa, 
-  0x33, 0x79, 0xb6, 0xcc, 0x32, 0x93, 0x5b, 0xb1, 0x93, 0x6c, 0x25, 
-  0x70, 0x46, 0x85, 0xa8, 0x12, 0xc0, 0x09, 0x0a, 0xbd, 0x1b, 0xbd, 
-  0x50, 0xd7, 0x16, 0xd7, 0x31, 0xfe, 0x24, 0xe8, 0xf3, 0xe4, 0x3d, 
-  0x71, 0xdb, 0x1e, 0xa3, 0xfa, 0xcd, 0xb5, 0xbb, 0xde, 0x55, 0xa3, 
-  0x9f, 0x0a, 0x67, 0x84, 0x95, 0x00, 0x13, 0x2e, 0xd9, 0x44, 0x95, 
-  0xbc, 0x18, 0x30, 0x92, 0x49, 0x1d, 0xdc, 0x1a, 0x90, 0x5f, 0x3a, 
-  0xe3, 0x46, 0xbf, 0x4a, 0x7d, 0xef, 0xe6, 0xc1, 0x71, 0xfd, 0x5b, 
-  0x9d, 0x80, 0xa4, 0xee, 0xe5, 0x9c, 0x6d, 0xb3, 0x21, 0x5d, 0xc3, 
-  0x2b, 0x03, 0xec, 0xbf, 0x40, 0xb6, 0xbd, 0xf7, 0x95, 0xb9, 0x76, 
-  0xb7, 0x17, 0xa8, 0xcc, 0x0b, 0x23, 0x75, 0x2f, 0xf0, 0x17, 0x46, 
-  0xea, 0x4d, 0x90, 0x0b, 0x58, 0x74, 0x5c, 0x88, 0x54, 0x27, 0x1f, 
-  0x9e, 0x9a, 0x1b, 0x3f, 0x3f, 0xfa, 0x68, 0x48, 0x97, 0x4e, 0x6c, 
-  0xa1, 0xa8, 0xa1, 0xc1, 0xdd, 0x27, 0x9e, 0x7f, 0xe0, 0x92, 0x20, 
-  0x8b, 0xf4, 0x11, 0x8d, 0xcb, 0x9a, 0x85, 0xa6, 0x56, 0xf0, 0x47, 
-  0x13, 0xda, 0x6c, 0xbd, 0x28, 0x38, 0x5e, 0x81, 0x8c, 0x04, 0xc0, 
-  0x7f, 0x4b, 0x0f, 0x28, 0xd6, 0x61, 0x32, 0xb2, 0x66, 0x91, 0xd6, 
-  0x41, 0xcf, 0x57, 0x31, 0xf5, 0xb3, 0x1a, 0xe2, 0xcc, 0xef, 0x0e, 
-  0x43, 0x04, 0xfb, 0x4d, 0x64, 0xc0, 0x2a, 0x29, 0xbd, 0x9b, 0xbc, 
-  0xb5, 0x64, 0x90, 0xcb, 0x6a, 0x70, 0xff, 0xb9, 0x47, 0xd1, 0x78, 
-  0x25, 0x96, 0x72, 0xd8, 0x26, 0xd7, 0x5f, 0xc5, 0x59, 0x15, 0x95, 
-  0xf1, 0x7b, 0x89, 0x5b, 0x1e, 0x0c, 0x2d, 0x3e, 0xcc, 0xc4, 0x3f, 
-  0x42, 0xa9, 0xd5, 0x20, 0xb6, 0x68, 0x8b, 0x77, 0x85, 0x42, 0x8b, 
-  0xb3, 0x5c, 0xa2, 0xa7, 0x97, 0x4e, 0x4e, 0xa3, 0x30, 0xb8, 0xa4, 
-  0x81, 0x54, 0x76, 0x63, 0xf2, 0xaf, 0x61, 0xed, 0x23, 0xc8, 0xbb, 
-  0x7e, 0x5d, 0x79, 0x85, 0x19, 0x6c, 0xbe, 0x2e, 0x7d, 0x11, 0x6a, 
-  0x37, 0xcc, 0x13, 0x9d, 0x67, 0xac, 0x89, 0x9b, 0xb8, 0x64, 0xb2, 
-  0x1c, 0xac, 0x6f, 0x16, 0x8e, 0x1f, 0x06, 0x12, 0xb6, 0xe8, 0x59, 
-  0x75, 0x2f, 0xb5, 0x76, 0x15, 0x18, 0xc7, 0x77, 0xd5, 0xca, 0xc8, 
-  0x8a, 0x57, 0xe0, 0x6d, 0xc7, 0xf4, 0x50, 0x93, 0xb4, 0xd4, 0x35, 
-  0x8e, 0x18, 0x02, 0xcf, 0xe6, 0x75, 0x99, 0xef, 0xc6, 0xf3, 0xf8, 
-  0xd9, 0xb8, 0xf5, 0xab, 0x9e, 0x96, 0xce, 0x47, 0x47, 0x87, 0x95, 
-  0x1b, 0xd4, 0x90, 0x83, 0x2a, 0xee, 0x50, 0x10, 0xae, 0x16, 0xa4, 
-  0x29, 0x26, 0x74, 0xea, 0x01, 0x58, 0xaf, 0x4f, 0x85, 0x4c, 0x64, 
-  0xdc, 0x6b, 0x54, 0xeb, 0xbc, 0x55, 0x25, 0x56, 0x2d, 0x3d, 0xc3, 
-  0x77, 0x12, 0xa9, 0xae, 0x48, 0xd8, 0xb5, 0xb5, 0x11, 0x33, 0x24, 
-  0xa3, 0x1e, 0x87, 0x9c, 0x6f, 0x89, 0x95, 0x95, 0xbb, 0x77, 0xff, 
-  0x54, 0xf0, 0x14, 0xcc, 0x8b, 0x27, 0xd7, 0x95, 0xfe, 0x00, 0xcf, 
-  0x9a, 0x0d, 0xa5, 0x6e, 0x43, 0x50, 0x84, 0x67, 0x50, 0x6e, 0x68, 
-  0xc3, 0x87, 0xcf, 0xb9, 0x1c, 0xb9, 0x7c, 0x73, 0xba, 0x64, 0x27, 
-  0x0f, 0x0c, 0x93, 0xdf, 0xd4, 0x1a, 0xd4, 0x13, 0x0e, 0xd5, 0xa6, 
-  0xf3, 0x1f, 0xda, 0x24, 0x0a, 0x6a, 0x81, 0x76, 0x89, 0xc7, 0x2b, 
-  0xb8, 0xea, 0x86, 0x5a, 0x5e, 0x30, 0x15, 0x7b, 0xfc, 0x1c, 0x2e, 
-  0x81, 0xe2, 0x32, 0xfb, 0x16, 0xfd, 0x07, 0x37, 0x8c, 0xdb, 0xc6, 
-  0x7b, 0xfb, 0xc1, 0x07, 0xb7, 0x1e, 0xcc, 0x46, 0xf3, 0x96, 0xb1, 
-  0xd6, 0xa0, 0xae, 0x3f, 0x76, 0xea, 0x87, 0x6f, 0x7b, 0xd3, 0x01, 
-  0x7c, 0xe6, 0xfa, 0x65, 0x56, 0x80, 0xd9, 0xb5, 0x68, 0x53, 0x73, 
-  0xb0, 0xbf, 0x1b, 0xd4, 0xec, 0x43, 0x47, 0x33, 0x99, 0x3c, 0xde, 
-  0x61, 0xd0, 0x87, 0x38, 0x76, 0xb3, 0xd1, 0x11, 0x31, 0x4b, 0x40, 
-  0xb4, 0xf0, 0x72, 0xed, 0xa5, 0xa5, 0x2b, 0xb6, 0xa4, 0xb3, 0xc3, 
-  0x47, 0x3e, 0xfd, 0x7c, 0x98, 0x03, 0xdc, 0x68, 0x0e, 0xbe, 0xe8, 
-  0x50, 0xe3, 0x52, 0xaf, 0x85, 0x01, 0xeb, 0x1a, 0xc0, 0xd9, 0x78, 
-  0x91, 0x4f, 0x55, 0x49, 0x7e, 0x35, 0x59, 0x70, 0xd0, 0xc4, 0x19, 
-  0xf8, 0xb4, 0x25, 0x8d, 0x29, 0xa4, 0x22, 0x67, 0x81, 0x6b, 0x55, 
-  0xa7, 0x43, 0xc5, 0xb2, 0x4c, 0x46, 0x65, 0xec, 0xc7, 0xa4, 0x3a, 
-  0xdc, 0x42, 0x02, 0x81, 0xf0, 0x78, 0xf5, 0x49, 0x30, 0x93, 0x51, 
-  0xed, 0x28, 0xb0, 0x87, 0x5a, 0x42, 0x24, 0xee, 0x81, 0x1b, 0x28, 
-  0x98, 0xd8, 0x89, 0xa5, 0x81, 0xea, 0x30, 0xb3, 0xf9, 0xc4, 0xa2, 
-  0x77, 0x71, 0xd4, 0x9a, 0x1d, 0xcf, 0xaf, 0x01, 0x03, 0x90, 0x0d, 
-  0x2b, 0x65, 0xa2, 0x64, 0x9f, 0xa6, 0xc8, 0xb2, 0x4c, 0xa2, 0x90, 
-  0x2d, 0xbc, 0xa3, 0x5f, 0xd5, 0x6d, 0xbe, 0x07, 0x3f, 0x79, 0x2c, 
-  0xcd, 0x37, 0x3d, 0xae, 0x81, 0x64, 0x3e, 0x32, 0xe0, 0x96, 0x78, 
-  0xef, 0x8b, 0x1c, 0x5d, 0xba, 0xec, 0x59, 0xf5, 0x75, 0xb8, 0x68, 
-  0x2d, 0x23, 0x93, 0x7e, 0x0d, 0xb1, 0xec, 0x2a, 0xdb, 0xe4, 0xbb, 
-  0xb1, 0x5e, 0x15, 0x17, 0x9a, 0x83, 0x15, 0x01, 0xd2, 0xc3, 0x21, 
-  0x91, 0x4f, 0x9d, 0xec, 0x6b, 0xa4, 0x71, 0x7b, 0x75, 0x20, 0x8d, 
-  0x1f, 0x32, 0xd2, 0x17, 0x22, 0x6e, 0x08, 0x01, 0xec, 0xc1, 0xb5, 
-  0x80, 0x2f, 0xcb, 0x67, 0xa7, 0xd5, 0xe9, 0xb0, 0xaf, 0xe7, 0x19, 
-  0x67, 0xee, 0x6f, 0xa4, 0x65, 0x95, 0xdb, 0x4c, 0x06, 0x02, 0x93, 
-  0xd6, 0x30, 0xcf, 0xfb, 0x10, 0x3d, 0xe2, 0xcd, 0x08, 0x66, 0xf3, 
-  0xab, 0xdc, 0x54, 0x24, 0xbc, 0x65, 0xa8, 0x44, 0xde, 0x2c, 0x31, 
-  0x66, 0x7c, 0xca, 0xd0, 0xad, 0xc8, 0x9f, 0x3a, 0xdf, 0x9a, 0xc7, 
-  0xdf, 0xd0, 0xd0, 0x67, 0x6f, 0x4e, 0xe9, 0xbf, 0x4e, 0xc3, 0x9a, 
-  0x8d, 0x70, 0xbe, 0x25, 0x21, 0x48, 0x68, 0x30, 0xb5, 0xb5, 0xa5, 
-  0xea, 0xa3, 0x37, 0xeb, 0xea, 0x5d, 0x98, 0xe0, 0xcd, 0x84, 0x55, 
-  0x82, 0x62, 0x7c, 0x8d, 0x31, 0x32, 0xd5, 0xc4, 0x44, 0xe5, 0xf5, 
-  0xc5, 0x8b, 0xa1, 0xda, 0xa7, 0x9d, 0x4b, 0x3c, 0xb4, 0xf9, 0xf9, 
-  0x10, 0x76, 0x3f, 0x93, 0xb2, 0x8a, 0x0d, 0x2f, 0xa1, 0x7b, 0x93, 
-  0x12, 0x2c, 0x58, 0x00, 0x24, 0x7b, 0xc4, 0x35, 0x27, 0xdd, 0x55, 
-  0x82, 0x2f, 0x11, 0xc3, 0x3b, 0xd9, 0xd0, 0x59, 0x58, 0xb4, 0x8c, 
-  0x53, 0x2e, 0x7f, 0x2c, 0xd7, 0x87, 0xa5, 0x02, 0xcc, 0x37, 0x45, 
-  0x70, 0x1e, 0x02, 0xb8, 0x31, 0x09, 0x4b, 0xe2, 0xfe, 0x2b, 0x16, 
-  0x89, 0xd3, 0x70, 0x59, 0x1c, 0xb6, 0x49, 0x8e, 0x68, 0x9c, 0x1c, 
-  0x78, 0x89, 0x69, 0x24, 0x45, 0xd5, 0x84, 0xa6, 0x0b, 0x92, 0x15, 
-  0xfe, 0x5e, 0xd1, 0xbb, 0x84, 0x28, 0x9a, 0xb1, 0xd5, 0x60, 0x7f, 
-  0x18, 0x65, 0x9a, 0xad, 0xa0, 0x7d, 0x3f, 0xd3, 0x38, 0xbe, 0x04, 
-  0x47, 0x0d, 0x13, 0x64, 0x33, 0x37, 0x88, 0xc5, 0x3f, 0xde, 0xe5, 
-  0x59, 0x7d, 0xb3, 0x0e, 0x6c, 0x71, 0xb5, 0x1b, 0x0d, 0x21, 0x95, 
-  0x33, 0x1b, 0x19, 0x6a, 0x27, 0xa7, 0x28, 0x28, 0x8d, 0xd7, 0x2e, 
-  0xbc, 0x86, 0xa5, 0xdc, 0xbe, 0xd1, 0xad, 0x93, 0xff, 0x68, 0xfe, 
-  0x6b, 0x0e, 0xf8, 0x54, 0x81, 0x9d, 0x47, 0x78, 0x57, 0xa5, 0x3e, 
-  0x17, 0x77, 0x89, 0x9f, 0x4e, 0x7a, 0x1c, 0x07, 0x96, 0x08, 0x6b, 
-  0xba, 0xaa, 0x86, 0xcf, 0x87, 0x0a, 0x77, 0xc5, 0xeb, 0xaa, 0x0d, 
-  0x04, 0xd3, 0x0f, 0x2a, 0xc1, 0x21, 0xde, 0x99, 0xa3, 0xac, 0x5f, 
-  0xdd, 0x7b, 0x3a, 0xf7, 0x72, 0xf7, 0x45, 0x4f, 0xd8, 0x9e, 0xb0, 
-  0x0e, 0xd8, 0x25, 0x09, 0xe3, 0x72, 0x39, 0xa4, 0xb8, 0x97, 0x35, 
-  0x06, 0x40, 0xc5, 0x62, 0x29, 0x20, 0x7e, 0x83, 0xce, 0xda, 0x0c, 
-  0x13, 0x85, 0x45, 0x62, 0x41, 0x01, 0x96, 0xd1, 0x35, 0x51, 0x3c, 
-  0x3f, 0xdd, 0x58, 0x57, 0x68, 0x75, 0x82, 0x4c, 0xd8, 0x4c, 0x3d, 
-  0xae, 0xbe, 0x4a, 0xb8, 0x0f, 0x54, 0x35, 0xda, 0x66, 0xf4, 0x7d, 
-  0x9f, 0x89, 0xd1, 0xc1, 0xd4, 0x6a, 0x52, 0x32, 0xd6, 0xfa, 0x52, 
-  0xc6, 0x50, 0x1e, 0xd9, 0xb4, 0xbd, 0x0c, 0xdc, 0x03, 0x4c, 0xf6, 
-  0x77, 0x0c, 0x5d, 0xf2, 0xb9, 0x35, 0x50, 0x30, 0x0a, 0x97, 0xd7, 
-  0xbc, 0x0f, 0x17, 0xd3, 0xf8, 0xd3, 0x5d, 0x73, 0x17, 0xe7, 0x5e, 
-  0x67, 0x44, 0xbd, 0x71, 0x22, 0xe3, 0xf8, 0xef, 0x38, 0xa0, 0xe0, 
-  0x69, 0xbb, 0x43, 0x4d, 0x7a, 0x12, 0xa5, 0x76, 0x8c, 0x18, 0x72, 
-  0x8e, 0xa3, 0x27, 0xfe, 0x20, 0x58, 0xa7, 0x42, 0x7b, 0x46, 0xc3, 
-  0x30, 0x2e, 0xc7, 0x4f, 0xef, 0x56, 0x36, 0xf7, 0x57, 0x25, 0x08, 
-  0x5e, 0xcf, 0xd5, 0xc0, 0xa0, 0x86, 0xf0, 0x6b, 0x14, 0x95, 0xb3, 
-  0x5e, 0xf3, 0x08, 0x44, 0xcd, 0x3a, 0x74, 0x12, 0x9b, 0x02, 0x34, 
-  0x19, 0x51, 0x81, 0xdc, 0x72, 0x01, 0xdc, 0xa9, 0xb5, 0xfd, 0x1b, 
-  0x1a, 0x3e, 0xfb, 0x0b, 0xee, 0x49, 0x66, 0x6e, 0x75, 0x4e, 0x93, 
-  0xf8, 0x8e, 0xe3, 0x7b, 0xe9, 0xd1, 0xd8, 0x20, 0x00, 0x9c, 0xa1, 
-  0xc4, 0x82, 0x61, 0xfc, 0xa9, 0x07, 0xd3, 0x23, 0x44, 0x63, 0x79, 
-  0x77, 0x78, 0x9b, 0x19, 0xee, 0x83, 0xc5, 0x1b, 0xd1, 0x10, 0x17, 
-  0xe5, 0xe5, 0x14, 0xee, 0xed, 0xc3, 0xbf, 0x87, 0x2f, 0x24, 0x33, 
-  0xcd, 0x08, 0xb9, 0x01, 0xdf, 0x88, 0x01, 0x6f, 0xba, 0x13, 0x5e, 
-  0x48, 0xc9, 0x5f, 0x8d, 0x79, 0xef, 0xd1, 0x0d, 0x19, 0x83, 0x96, 
-  0x91, 0xe6, 0xdc, 0x3f, 0x8d, 0xcf, 0xe4, 0xd6, 0x23, 0xbe, 0xe2, 
-  0x37, 0xe5, 0x5c, 0x2e, 0x5e, 0xa2, 0x84, 0x1f, 0xb4, 0x3c, 0x96, 
-  0xcf, 0xf0, 0x9a, 0x82, 0x60, 0xde, 0xbb, 0xe0, 0x94, 0x0c, 0xf7, 
-  0x37, 0x8d, 0x6b, 0x60, 0x7c, 0x1b, 0x28, 0x41, 0xed, 0xbb, 0x2b, 
-  0xe3, 0x70, 0x49, 0xc4, 0x64, 0x40, 0x9a, 0x03, 0x67, 0x46, 0x9d, 
-  0x7e, 0x86, 0x4f, 0xe8, 0xf2, 0xb2, 0xee, 0xe5, 0x6b, 0x4a, 0x5e, 
-  0xb7, 0x18, 0x64, 0x6b, 0xd1, 0xc8, 0x6f, 0xcf, 0x17, 0x5c, 0x6a, 
-  0x69, 0x08, 0xbe, 0xe8, 0xce, 0x55, 0xe9, 0xc9, 0xa2, 0x03, 0x98, 
-  0x1a, 0xa8, 0x06, 0x22, 0xf2, 0xfb, 0x9e, 0x69, 0xbf, 0x71, 0x0a, 
-  0x25, 0xdb, 0xae, 0x27, 0x02, 0x06, 0x3c, 0x9b, 0xc9, 0x2c, 0x76, 
-  0x3e, 0x75, 0x9e, 0x81, 0xfd, 0x78, 0x2c, 0xa0, 0xd7, 0xa7, 0x6f, 
-  0xd8, 0xe7, 0x84, 0x1e, 0xaa, 0x49, 0xb9, 0x89, 0xb5, 0x98, 0x93, 
-  0xbe, 0xf4, 0xa7, 0xf0, 0xab, 0x66, 0x21, 0xa9, 0x0e, 0x1c, 0x98, 
-  0x28, 0xc2, 0x93, 0x83, 0x73, 0x93, 0xe8, 0x0e, 0x2d, 0x57, 0xa0, 
-  0x27, 0x35, 0xce, 0x9f, 0x3c, 0x9d, 0x1b, 0x7f, 0x22, 0xee, 0x2e, 
-  0x0d, 0xbc, 0x4f, 0x70, 0x80, 0xd8, 0x41, 0xbc, 0xb5, 0x58, 0x65, 
-  0xc5, 0x95, 0x2a, 0xad, 0xd1, 0xac, 0xd2, 0x82, 0x23, 0x28, 0xd0, 
-  0x7c, 0x25, 0xec, 0x81, 0x24, 0xa4, 0x35, 0x90, 0xc6, 0xf1, 0x75, 
-  0x9d, 0xcb, 0xed, 0x2a, 0x8d, 0xa2, 0x81, 0x35, 0xe0, 0x75, 0x0b, 
-  0xe1, 0x23, 0xa5, 0xb2, 0x3c, 0xad, 0x50, 0x29, 0x84, 0xe0, 0x9e, 
-  0x57, 0x75, 0x19, 0xf6, 0x32, 0xbb, 0xec, 0x78, 0xcb, 0x9a, 0x65, 
-  0x59, 0xc0, 0x23, 0x46, 0x79, 0x34, 0xc9, 0x78, 0x4d, 0x2e, 0xed, 
-  0x61, 0x21, 0x5d, 0x5c, 0xa2, 0x1c, 0x99, 0x47, 0xe9, 0xd0, 0xf4, 
-  0xd0, 0x04, 0x68, 0xa0, 0xa5, 0xc0, 0x1a, 0x6e, 0x82, 0x88, 0x56, 
-  0x74, 0xba, 0xfc, 0xe9, 0xd2, 0xfb, 0x23, 0x91, 0x3d, 0x67, 0x26, 
-  0x3c, 0xbf, 0x84, 0xa4, 0xfd, 0x63, 0x18, 0x8c, 0x92, 0xcf, 0x00, 
-  0x6a, 0x6e, 0x88, 0x32, 0xdf, 0x0a, 0x5d, 0x3d, 0x02, 0x76, 0xd0, 
-  0x1a, 0x97, 0xe1, 0xdd, 0x2d, 0x84, 0xf2, 0xc8, 0x79, 0x8b, 0x45, 
-  0x5d, 0x81, 0x9b, 0xe9, 0xa5, 0x71, 0x2f, 0x5c, 0x30, 0x41, 0xaf, 
-  0x29, 0xd8, 0x07, 0xd2, 0xa1, 0xfd, 0xb6, 0xed, 0xa2, 0x2e, 0xc0, 
-  0xfc, 0xd8, 0x85, 0x5a, 0x26, 0xc6, 0x05, 0x05, 0x29, 0x91, 0x33, 
-  0xc0, 0x3c, 0xf6, 0x18, 0x53, 0xfc, 0x77, 0x1b, 0x9c, 0x89, 0x04, 
-  0xc6, 0x90, 0x5e, 0xf4, 0x85, 0xd5, 0xcf, 0xa7, 0x20, 0xd3, 0x63, 
-  0xe3, 0x8a, 0x24, 0xea, 0x68, 0x69, 0xfe, 0xa9, 0x03, 0xac, 0xd2, 
-  0xe3, 0x5f, 0xa0, 0xa2, 0xeb, 0xdb, 0x24, 0x20, 0x89, 0x61, 0xd2, 
-  0x14, 0x42, 0xaa, 0x76, 0x9b, 0x24, 0x7d, 0xd5, 0x5b, 0x49, 0x8b, 
-  0xe8, 0xb1, 0xf3, 0x35, 0x0d, 0xe3, 0x25, 0xfb, 0xe5, 0xab, 0x2a, 
-  0x68, 0x8b, 0x99, 0xc2, 0x00, 0xa5, 0x87, 0xae, 0xfb, 0x12, 0x2c, 
-  0x28, 0x38, 0xee, 0x71, 0x3c, 0x0e, 0x27, 0x59, 0xbe, 0xc2, 0x03, 
-  0x3d, 0x4b, 0x8b, 0x15, 0x32, 0x46, 0xdf, 0xf0, 0xd1, 0x80, 0xbb, 
-  0xcb, 0x5e, 0x50, 0x28, 0xb2, 0xc9, 0x1f, 0xe1, 0x42, 0x91, 0x9b, 
-  0x53, 0x38, 0x8f, 0xb2, 0xe2, 0x48, 0xc4, 0x5f, 0x3d, 0xe7, 0x45, 
-  0xcd, 0x0a, 0x3d, 0x15, 0xbb, 0xe2, 0x9a, 0xb5, 0xcc, 0x61, 0xc9, 
-  0xeb, 0x26, 0xaa, 0xf4, 0x8c, 0x01, 0x0c, 0xfb, 0x6c, 0x34, 0xc8, 
-  0x14, 0x7d, 0x38, 0x2e, 0xf1, 0x5a, 0xa9, 0xd5, 0xd6, 0xe6, 0x87, 
-  0x32, 0x41, 0xe4, 0xe3, 0x4a, 0xe4, 0xbe, 0x29, 0xd3, 0xc4, 0xf4, 
-  0xf1, 0xdd, 0xc2, 0x66, 0xc5, 0xba, 0x0b, 0x3e, 0xa9, 0x1f, 0xfb, 
-  0xc5, 0xd1, 0x77, 0xa4, 0x80, 0x11, 0xb7, 0xed, 0xa7, 0xc5, 0x43, 
-  0x7d, 0xe2, 0x90, 0x73, 0x00, 0xde, 0xd6, 0xa5, 0xd9, 0x46, 0xa1, 
-  0x26, 0xaa, 0xf2, 0x24, 0xb1, 0xe0, 0x1d, 0x40, 0xd6, 0x52, 0x1d, 
-  0x52, 0x5c, 0x0e, 0xe4, 0x5e, 0x00, 0x83, 0xe4, 0x11, 0x7d, 0x1b, 
-  0xbe, 0x7a, 0xd3, 0x1e, 0xb1, 0x91, 0xee, 0x15, 0xfd, 0x2b, 0x27, 
-  0xa0, 0x12, 0x70, 0x1a, 0x9f, 0xe4, 0xd3, 0xb2, 0x1f, 0x23, 0xc5, 
-  0x6f, 0x76, 0xe3, 0x9d, 0xeb, 0x42, 0xf5, 0x6e, 0xb0, 0x0a, 0x34, 
-  0x07, 0x72, 0x4b, 0xbd, 0x32, 0x75, 0xc1, 0xc4, 0x2d, 0x0a, 0x53, 
-  0xb0, 0xa7, 0x31, 0x4e, 0x69, 0x5f, 0x05, 0x31, 0xbb, 0x7a, 0x3c, 
-  0x8f, 0x2f, 0x84, 0x02, 0x56, 0x63, 0x02, 0x41, 0x62, 0xc0, 0x53, 
-  0xf3, 0xef, 0x77, 0xf2, 0x78, 0x3f, 0xbe, 0xe4, 0xa0, 0xf8, 0xfc, 
-  0xbe, 0xfb, 0xf3, 0x69, 0x17, 0xca, 0xc3, 0x76, 0xd3, 0xb9, 0x7f, 
-  0x34, 0xbc, 0xf9, 0xc3, 0x2f, 0x28, 0x5e, 0xea, 0x8e, 0x60, 0x2a, 
-  0xc2, 0x56, 0xea, 0xcd, 0xc7, 0xf6, 0x25, 0x52, 0x8d, 0x34, 0xc6, 
-  0x41, 0x1d, 0xc3, 0x0f, 0x26, 0xfc, 0x39, 0x60, 0x53, 0x90, 0x9c, 
-  0x6a, 0x73, 0x77, 0x38, 0xbd, 0x19, 0xcf, 0x81, 0x14, 0xdb, 0x84, 
-  0xad, 0x96, 0xe4, 0xa8, 0xdc, 0xda, 0x21, 0x92, 0x35, 0x8a, 0x25, 
-  0xd4, 0xd4, 0xbb, 0x7c, 0x55, 0xd5, 0x53, 0x6b, 0x0c, 0x02, 0x8e, 
-  0xed, 0x57, 0x29, 0xfd, 0x8a, 0xa2, 0xc5, 0x04, 0xa0, 0x1d, 0xf4, 
-  0xc6, 0x9b, 0xb1, 0xb0, 0xff, 0x0a, 0x69, 0xd7, 0x70, 0xc6, 0xca, 
-  0x0e, 0x16, 0xfb, 0xbc, 0x05, 0xa2, 0xef, 0xc5, 0x09, 0xcd, 0x54, 
-  0xa1, 0x16, 0xc5, 0xa0, 0xf8, 0xd2, 0x31, 0x5e, 0xeb, 0x27, 0x06, 
-  0x70, 0x70, 0xb1, 0x34, 0x15, 0x30, 0x04, 0x26, 0x66, 0xb6, 0xef, 
-  0xaa, 0x83, 0x0d, 0x46, 0x2d, 0x97, 0xd7, 0x5d, 0x6e, 0x6a, 0x85, 
-  0x38, 0x32, 0xa0, 0xfa, 0xb4, 0x21, 0xdd, 0x0c, 0x37, 0x29, 0x91, 
-  0xdf, 0x77, 0x73, 0x14, 0xc0, 0x24, 0xcb, 0x72, 0x0a, 0x86, 0x1a, 
-  0x6e, 0x14, 0xc7, 0x14, 0xd0, 0xe2, 0xc0, 0xf4, 0x95, 0x95, 0x32, 
-  0x1b, 0x3e, 0x1f, 0x0e, 0x15, 0x5f, 0x8f, 0x02, 0x19, 0x5a, 0x22, 
-  0xe7, 0xda, 0x30, 0x7b, 0x6f, 0x9d, 0x4d, 0x6a, 0xb1, 0x9f, 0xee, 
-  0x02, 0xd4, 0xf5, 0x06, 0x15, 0x0f, 0x1e, 0x18, 0xde, 0x46, 0x3b, 
-  0xc4, 0x47, 0x70, 0x8a, 0x1d, 0x98, 0x1c, 0xad, 0xc1, 0xfd, 0x34, 
-  0x79, 0x5d, 0x0f, 0x7f, 0xe6, 0xcd, 0x9d, 0xf3, 0x92, 0x8e, 0x86, 
-  0x53, 0x7f, 0x44, 0x00, 0xff, 0x3e, 0xf4, 0xca, 0x19, 0x36, 0xfc, 
-  0xd8, 0x54, 0x35, 0x5d, 0x78, 0xdb, 0xc1, 0xca, 0x53, 0xa0, 0x3d, 
-  0xdf, 0x0b, 0xbe, 0xaa, 0x28, 0xe8, 0x98, 0xb3, 0x86, 0x12, 0x4c, 
-  0x6b, 0x3f, 0x42, 0xde, 0x36, 0x79, 0x8e, 0x66, 0x8d, 0x0c, 0x69, 
-  0x45, 0x36, 0x74, 0xc4, 0xe5, 0x8f, 0x73, 0x4a, 0xc6, 0x45, 0x95, 
-  0x41, 0xff, 0x84, 0xdf, 0xa8, 0x68, 0xda, 0x9c, 0x4b, 0x20, 0xcd, 
-  0x75, 0x18, 0x3a, 0xbb, 0x16, 0x10, 0x09, 0x4a, 0xa1, 0x06, 0xaa, 
-  0xd8, 0x76, 0x76, 0x96, 0x0d, 0x4a, 0x6a, 0x6b, 0x36, 0x4b, 0x89, 
-  0x1b, 0xe1, 0x09, 0xb0, 0x02, 0x4f, 0x22, 0xc0, 0x51, 0x79, 0xfb, 
-  0x1e, 0x5d, 0x70, 0xaf, 0x64, 0xec, 0xed, 0xf0, 0xa7, 0x44, 0x41, 
-  0x40, 0x67, 0x46, 0x75, 0x67, 0xb6, 0xd1, 0x8c, 0xf2, 0xd0, 0x5a, 
-  0xb2, 0x11, 0x04, 0xc9, 0xa6, 0xa1, 0x69, 0xc7, 0x51, 0x86, 0x71, 
-  0xb8, 0xd6, 0x44, 0x0a, 0x28, 0x8b, 0x84, 0x67, 0x82, 0x47, 0xc0, 
-  0x1c, 0x6b, 0xf0, 0xcf, 0x91, 0x87, 0xeb, 0x65, 0xf6, 0x34, 0xa4, 
-  0xdf, 0x13, 0x42, 0x9c, 0x09, 0xd1, 0x23, 0x3c, 0x75, 0x4a, 0xc1, 
-  0x52, 0x19, 0x2b, 0x71, 0xdf, 0xa5, 0x01, 0xd9, 0x8e, 0x24, 0x8e, 
-  0x9b, 0x87, 0x8a, 0xa7, 0xac, 0xa2, 0xd0, 0x87, 0x3c, 0xb6, 0xbc, 
-  0x13, 0x41, 0x47, 0x0c, 0xca, 0x00, 0x80, 0x72, 0x2e, 0x3f, 0xfa, 
-  0xc9, 0x2e, 0x04, 0x24, 0x2b, 0x2e, 0xc6, 0x1f, 0x4f, 0xb6, 0x92, 
-  0x37, 0xef, 0x3d, 0x52, 0x39, 0x56, 0xcc, 0x4a, 0x23, 0x23, 0xbd, 
-  0xf1, 0x7b, 0x36, 0x12, 0xa0, 0xb1, 0xad, 0x89, 0xad, 0x2c, 0x0e, 
-  0xbb, 0x4f, 0x25, 0x42, 0xa7, 0x4a, 0x0b, 0x5c, 0x7f, 0xe7, 0x31, 
-  0x98, 0xd9, 0x89, 0x6d, 0xf3, 0x31, 0xc9, 0x7e, 0x76, 0x6b, 0xb1, 
-  0x8e, 0x47, 0x40, 0x25, 0x3d, 0xb3, 0x10, 0x9b, 0xaa, 0xf2, 0x01, 
-  0x19, 0x68, 0x0d, 0x92, 0xc5, 0xb1, 0x9d, 0x06, 0x52, 0x95, 0x10, 
-  0x4d, 0xd2, 0x17, 0x00, 0xc8, 0xb9, 0x6a, 0x48, 0xc6, 0xd2, 0x99, 
-  0x1f, 0xd8, 0xcc, 0xc0, 0x5a, 0x5f, 0x8c, 0x69, 0x8d, 0x89, 0xe4, 
-  0x6b, 0xd8, 0x49, 0x04, 0xc0, 0xf1, 0xc7, 0x88, 0xd0, 0xf1, 0xf2, 
-  0x30, 0xf9, 0x9b, 0xdf, 0x7b, 0xe2, 0x79, 0xe8, 0x15, 0x89, 0x9a, 
-  0x8a, 0x31, 0x86, 0xd9, 0x2a, 0x5c, 0x45, 0x01, 0xc8, 0x94, 0xff, 
-  0x2a, 0xfd, 0xde, 0x36, 0x34, 0x89, 0x6e, 0xe6, 0x07, 0xd3, 0xf2, 
-  0x04, 0xe0, 0x9d, 0x43, 0x80, 0x52, 0xe2, 0x7b, 0x75, 0xd6, 0x18, 
-  0xa3, 0x8b, 0x05, 0xc5, 0x68, 0xb8, 0x5b, 0x62, 0xca, 0xf0, 0xec, 
-  0x1b, 0x4b, 0xec, 0xcd, 0xc7, 0x5f, 0x9e, 0x81, 0xf9, 0xec, 0x3d, 
-  0xb8, 0x7d, 0x7f, 0x18, 0x94, 0x7b, 0x58, 0x42, 0x30, 0xf9, 0xde, 
-  0xd6, 0x31, 0x4c, 0x73, 0x17, 0xe7, 0x5e, 0x67, 0x44, 0xbf, 0xee, 
-  0x30, 0xfa, 0x0e, 0xa8, 0x81, 0xb4, 0x2c, 0xa3, 0xaf, 0x57, 0xd3, 
-  0x78, 0xd3, 0x78, 0x3a, 0xe6, 0xfc, 0x9e, 0x54, 0x8e, 0xd9, 0xd1, 
-  0x51, 0x13, 0xcf, 0x35, 0x5d, 0xd9, 0x61, 0x27, 0xa1, 0x21, 0xd0, 
-  0x93, 0x37, 0x99, 0xf5, 0x8b, 0x8a, 0x46, 0x2d, 0xd9, 0xd9, 0x65, 
-  0xf6, 0x72, 0xa0, 0x3f, 0xa5, 0xf6, 0x6f, 0x24, 0x37, 0xff, 0x9f, 
-  0x87, 0x22, 0xca, 0x75, 0x04, 0x9a, 0xb4, 0xdf, 0x2d, 0x40, 0x9a, 
-  0xf4, 0x52, 0x93, 0xe9, 0x09, 0x05, 0x0e, 0xae, 0xde, 0xee, 0x88, 
-  0x99, 0x3c, 0xac, 0x67, 0xe5, 0x01, 0x9f, 0x9e, 0xe8, 0x64, 0x65, 
-  0x86, 0xe9, 0x58, 0x0c, 0x31, 0x36, 0x0d, 0xcd, 0x32, 0x43, 0xd1, 
-  0x85, 0x26, 0x1c, 0x0f, 0x81, 0x15, 0xd8, 0x2e, 0x1f, 0x3b, 0x10, 
-  0x0c, 0xdb, 0xad, 0x1d, 0x48, 0x76, 0xdb, 0x62, 0xfb, 0x90, 0x8b, 
-  0x56, 0xb5, 0x74, 0x23, 0x53, 0xc2, 0x4b, 0xae, 0x42, 0xf2, 0x77, 
-  0xe9, 0x67, 0x85, 0x7d, 0x58, 0x5a, 0xce, 0x25, 0xa1, 0x90, 0x6c, 
-  0x94, 0x0b, 0x9a, 0x8c, 0x99, 0x04, 0xa2, 0xeb, 0xf7, 0x2b, 0x20, 
-  0xb2, 0x46, 0x76, 0x84, 0x53, 0xc4, 0x68, 0x6a, 0x2a, 0xff, 0x2d, 
-  0xcd, 0xde, 0xbd, 0x38, 0x5a, 0xa4, 0x3e, 0xd4, 0x19, 0xa2, 0x1d, 
-  0x15, 0xb7, 0xc3, 0xdf, 0x65, 0xcd, 0x62, 0xfb, 0xbe, 0xb9, 0x63, 
-  0x17, 0x76, 0x65, 0x66, 0x63, 0x4a, 0x5b, 0xbe, 0x73, 0x7f, 0x06, 
-  0x33, 0x31, 0xa6, 0xf7, 0xdc, 0x71, 0xf7, 0x39, 0xc1, 0x76, 0xc7, 
-  0x4b, 0x52, 0x7c, 0x8c, 0x10, 0x34, 0xad, 0x86, 0x90, 0x9e, 0x42, 
-  0x5a, 0x25, 0x1b, 0xdb, 0x51, 0x84, 0xb6, 0xa9, 0xf4, 0x08, 0x32, 
-  0x92, 0x4e, 0xb5, 0x23, 0x68, 0x7c, 0x5e, 0x2e, 0xa0, 0x18, 0x16, 
-  0x25, 0xaa, 0x55, 0x06, 0xc4, 0x96, 0x86, 0x2f, 0x52, 0x2f, 0xc8, 
-  0x18, 0xee, 0x94, 0x37, 0xbf, 0x0f, 0x86, 0xc0, 0xc5, 0xf4, 0x52, 
-  0x10, 0x18, 0xa7, 0x1d, 0xf8, 0xc9, 0xd8, 0x67, 0xf6, 0xe2, 0x91, 
-  0x2a, 0xbb, 0x64, 0x54, 0x8e, 0xcd, 0x6e, 0xbe, 0xff, 0x5d, 0x5d, 
-  0xa9, 0xe8, 0x16, 0xb7, 0x32, 0x59, 0x0e, 0x7b, 0x12, 0x6d, 0xc2, 
-  0x0c, 0x2a, 0x36, 0x83, 0xf4, 0x68, 0xc3, 0x8c, 0xb4, 0x03, 0xe8, 
-  0x4e, 0xd3, 0x76, 0xb0, 0x1b, 0xf1, 0x85, 0x62, 0x4a, 0x97, 0xb3, 
-  0xe3, 0xd4, 0x05, 0x83, 0xef, 0x8e, 0xe4, 0xbc, 0x92, 0xab, 0x11, 
-  0x6d, 0x38, 0x5c, 0x74, 0xd7, 0xab, 0x4e, 0xfd, 0x3c, 0x20, 0x4f, 
-  0xc7, 0xde, 0x23, 0x92, 0x90, 0x58, 0xbd, 0x32, 0x42, 0x13, 0x2d, 
-  0x8e, 0xee, 0xac, 0x27, 0x66, 0xb6, 0x02, 0x0e, 0x97, 0xe6, 0xd1, 
-  0x73, 0x6f, 0xe0, 0xf9, 0x37, 0x8c, 0x14, 0xcd, 0x05, 0x7b, 0x67, 
-  0x57, 0x06, 0x6a, 0x45, 0x92, 0x3c, 0x01, 0x54, 0x09, 0x79, 0x47, 
-  0x2f, 0xf6, 0x37, 0xb3, 0x34, 0xdf, 0x6f, 0xdb, 0x97, 0xfa, 0x0e, 
-  0xa1, 0x25, 0xb3, 0x52, 0xfb, 0xf4, 0x56, 0xc1, 0x40, 0x68, 0xe9, 
-  0x9e, 0x56, 0xdb, 0x65, 0xa3, 0x82, 0x3d, 0xa2, 0xc3, 0xb9, 0x11, 
-  0x38, 0x89, 0x95, 0xdf, 0x2a, 0xe0, 0xaa, 0x7c, 0xab, 0xc7, 0x5e, 
-  0xe4, 0xa2, 0x7b, 0xa1, 0x85, 0x0c, 0xb8, 0xc5, 0x1f, 0x8c, 0xf8, 
-  0x0e, 0x04, 0x32, 0xd4, 0xdd, 0x0d, 0xd8, 0x9a, 0xf1, 0x06, 0x8c, 
-  0xee, 0x7b, 0x5e, 0x29, 0x28, 0x7b, 0x55, 0xb7, 0xb1, 0xd8, 0x1a, 
-  0x46, 0x47, 0xf2, 0x88, 0x55, 0x2d, 0xab, 0x9e, 0x4e, 0x4e, 0xc9, 
-  0x35, 0x2a, 0x62, 0x47, 0xa1, 0xf8, 0x59, 0x18, 0x7c, 0xd3, 0x96, 
-  0xea, 0x54, 0x2f, 0xba, 0x00, 0xd3, 0x53, 0xb3, 0xfa, 0xf9, 0x0f, 
-  0x31, 0xdb, 0x13, 0x49, 0x39, 0xcd, 0x28, 0xaf, 0x21, 0x97, 0x6b, 
-  0xed, 0x7c, 0x2a, 0x57, 0xd3, 0xa6, 0x2b, 0xde, 0x14, 0x0b, 0xc3, 
-  0x70, 0x63, 0x3f, 0x24, 0xdc, 0xdc, 0x4d, 0x73, 0x5e, 0x42, 0x1a, 
-  0x82, 0x41, 0x77, 0x9d, 0x61, 0xb4, 0x6b, 0x7d, 0x08, 0xbc, 0x1e, 
-  0x4b, 0x60, 0x2c, 0x1f, 0xef, 0xee, 0x28, 0xf0, 0x44, 0x8c, 0xe3, 
-  0x5e, 0x49, 0xa8, 0x15, 0x61, 0x9a, 0x4f, 0x69, 0x49, 0x93, 0x6a, 
-  0xdf, 0x8c, 0x43, 0x92, 0x6a, 0xea, 0xc3, 0x63, 0x3b, 0x52, 0x37, 
-  0xdb, 0x78, 0x67, 0x79, 0xf2, 0x56, 0x65, 0x4b, 0xf1, 0xb5, 0xc2, 
-  0x9e, 0x14, 0x78, 0xd7, 0xfe, 0x8d, 0x98, 0x89, 0xbb, 0x02, 0x01, 
-  0xce, 0x92, 0x82, 0x52, 0x11, 0x25, 0x74, 0xe4, 0xa3, 0x41, 0x8e, 
-  0x6e, 0x2c, 0x07, 0xe9, 0xad, 0x47, 0x23, 0x51, 0xaa, 0x34, 0x46, 
-  0x95, 0xd6, 0x5b, 0xc5, 0xdc, 0x34, 0xc9, 0x28, 0x36, 0x16, 0x4c, 
-  0xd3, 0x55, 0x31, 0x91, 0xc7, 0x5e, 0x96, 0xe4, 0x7a, 0xc9, 0x36, 
-  0xbb, 0xc6, 0x6d, 0x8b, 0xae, 0x61, 0x46, 0xb8, 0xc1, 0xd4, 0x2c, 
-  0x0d, 0x72, 0x94, 0x96, 0x98, 0xe4, 0x8e, 0x39, 0x81, 0xfb, 0x52, 
-  0x26, 0x86, 0x23, 0x38, 0x56, 0x2d, 0x90, 0x39, 0xfb, 0xd2, 0x50, 
-  0x5a, 0x68, 0x43, 0x51, 0x12, 0x10, 0xdd, 0x51, 0x48, 0xac, 0x36, 
-  0xe3, 0x8c, 0x59, 0x72, 0xab, 0x85, 0x60, 0xf3, 0x19, 0x2f, 0x7f, 
-  0xf6, 0x43, 0xe5, 0x71, 0x8c, 0x4d, 0x8e, 0x80, 0x81, 0x21, 0x10, 
-  0x1d, 0x35, 0x61, 0x15, 0x01, 0x41, 0x48, 0xd1, 0xed, 0xa6, 0xe2, 
-  0xd7, 0x63, 0x4c, 0x4f, 0x15, 0xe3, 0x65, 0xa9, 0xe8, 0x94, 0x33, 
-  0x29, 0xe2, 0x22, 0xd3, 0x21, 0x8d, 0x3a, 0x7d, 0x12, 0x5b, 0x49, 
-  0x58, 0x4c, 0xc3, 0xd3, 0xaf, 0x9e, 0x3c, 0x44, 0x30, 0x1a, 0xe3, 
-  0xb2, 0x82, 0x03, 0xb5, 0xfe, 0xcc, 0xc1, 0x82, 0x42, 0x34, 0x88, 
-  0xc2, 0xfe, 0xe7, 0x85, 0x29, 0xb2, 0x17, 0xbd, 0xf9, 0x53, 0xd7, 
-  0xbf, 0x3d, 0xd1, 0x4a, 0xc4, 0x0a, 0x4e, 0x42, 0x26, 0x57, 0x62, 
-  0xb9, 0x27, 0xda, 0xab, 0x6f, 0xca, 0x23, 0x00, 0x65, 0x74, 0x64, 
-  0x7b, 0xb5, 0xe8, 0x98, 0xeb, 0xfb, 0x0c, 0x9a, 0xd4, 0xec, 0xab, 
-  0x04, 0x2a, 0x60, 0x63, 0x46, 0xd4, 0xe6, 0x96, 0x72, 0x0a, 0x17, 
-  0xe8, 0x4a, 0xf5, 0x9a, 0x64, 0xf6, 0x7d, 0x64, 0x1b, 0xd7, 0xc0, 
-  0xe4, 0x42, 0x5a, 0x68, 0x86, 0x89, 0x39, 0xa6, 0x1d, 0xf1, 0x96, 
-  0x95, 0xc1, 0xc9, 0x1c, 0x23, 0xee, 0xf0, 0xb6, 0x73, 0x44, 0xff, 
-  0xa3, 0xa2, 0xbe, 0xc8, 0xdb, 0x52, 0xdb, 0xd3, 0x37, 0xd2, 0xdc, 
-  0x80, 0x9b, 0x94, 0x0b, 0xa4, 0xfd, 0x97, 0xd6, 0x4e, 0x8e, 0xe5, 
-  0x35, 0x34, 0xf0, 0x16, 0xaf, 0xfd, 0x7f, 0xce, 0x95, 0xcf, 0x0a, 
-  0xbe, 0x55, 0x1c, 0x6c, 0x02, 0x6c, 0xf3, 0x7a, 0x10, 0x19, 0x71, 
-  0xb9, 0x77, 0x5b, 0xea, 0x21, 0x4f, 0xe7, 0xdb, 0x04, 0xcf, 0x4b, 
-  0x14, 0x23, 0x58, 0x7f, 0x5a, 0x77, 0xe7, 0x91, 0xab, 0x65, 0x08, 
-  0x57, 0xa2, 0xb2, 0x12, 0x22, 0xea, 0x4b, 0x19, 0x1b, 0xf2, 0xa0, 
-  0xd3, 0x8a, 0x64, 0xb1, 0x0e, 0x8c, 0x19, 0xe0, 0x79, 0xfc, 0xd3, 
-  0x8b, 0xf5, 0xe0, 0x68, 0xf5, 0xaf, 0x3a, 0x47, 0xd0, 0x38, 0x3a, 
-  0x25, 0xf1, 0x9f, 0xbf, 0x74, 0xca, 0x4f, 0xbe, 0x17, 0x40, 0x7a, 
-  0xcf, 0xf4, 0xff, 0x97, 0x5e, 0x04, 0x2a, 0x5f, 0x03, 0x1b, 0x9b, 
-  0x16, 0x16, 0xa1, 0xea, 0xdd, 0x90, 0xc7, 0xd4, 0x61, 0xae, 0xc9, 
-  0xb4, 0xe1, 0x12, 0x06, 0xfb, 0xff, 0x9e, 0x5c, 0xf9, 0xc8, 0x80, 
-  0xd4, 0x6a, 0x1e, 0x33, 0x39, 0xec, 0x1f, 0x9f, 0x34, 0x6a, 0xbe, 
-  0x43, 0xb6, 0xe9, 0x2b, 0x89, 0xa5, 0xee, 0xfc, 0x33, 0xd7, 0x42, 
-  0x01, 0x53, 0x81, 0x9d, 0x47, 0x78, 0x57, 0xa5, 0x3e, 0x17, 0x66, 
-  0xc3, 0xc7, 0x61, 0xcb, 0xe9, 0xc0, 0x9c, 0x46, 0xed, 0x9d, 0x53, 
-  0xd9, 0xe1, 0x21, 0xdd, 0x4f, 0x46, 0xb0, 0x58, 0xa4, 0x92, 0x7f, 
-  0x62, 0x63, 0x31, 0xde, 0xdf, 0x46, 0xfc, 0xa6, 0x3c, 0xdb, 0x11, 
-  0xe9, 0xd9, 0x01, 0x79, 0xbc, 0x10, 0x76, 0x15, 0xb9, 0xce, 0x26, 
-  0xf1, 0xcd, 0x6b, 0xc9, 0xb8, 0xfc, 0xfb, 0x99, 0xa5, 0x6a, 0x3c, 
-  0x42, 0x12, 0x00, 0x00, 0x10, 0xd7, 0x78, 0x3c, 0x69, 0xf5, 0xe6, 
-  0xd0, 0x0c, 0x08, 0x5d, 0x03, 0xfa, 0xcf, 0xcb, 0xd8, 0x93, 0x29, 
-  0xaa, 0x81, 0x3a, 0xc6, 0xc3, 0x53, 0x2c, 0x83, 0x92, 0x79, 0x56, 
-  0x1a, 0xf0, 0x1f, 0x69, 0x6b, 0x45, 0xaf, 0xff, 0xad, 0x68, 0xd2, 
-  0x72, 0xb4, 0xf9, 0xb7, 0x2f, 0xb0, 0x46, 0x2d, 0xfe, 0x6d, 0x93, 
-  0x06, 0x70, 0x08, 0xad, 0x49, 0x4a, 0x9b, 0xcd, 0xc3, 0x6f, 0x80, 
-  0x4e, 0x02, 0xf6, 0x56, 0x64, 0xa6, 0xcd, 0x3f, 0x22, 0x5d, 0xee, 
-  0x14, 0x04, 0x49, 0x62, 0xf0, 0xb4, 0x26, 0x3c, 0x05, 0x51, 0x46, 
-  0x6e, 0x31, 0x4e, 0x43, 0x6a, 0xaa, 0xa5, 0xde, 0x36, 0xb2, 0x79, 
-  0x01, 0x1c, 0xe7, 0x45, 0x2d, 0xd7, 0x30, 0xa4, 0x53, 0x54, 0x49, 
-  0xe5, 0xd8, 0x3a, 0xa7, 0xc4, 0x3c, 0x6b, 0xe7, 0xb6, 0x14, 0xcf, 
-  0xa0, 0x3d, 0xd0, 0x90, 0xd0, 0x92, 0x0e, 0x51, 0x15, 0xcb, 0xc7, 
-  0x2a, 0x77, 0xae, 0xe4, 0x59, 0xa6, 0x53, 0x47, 0x48, 0x8b, 0xcb, 
-  0x94, 0x8f, 0xb4, 0x84, 0xe8, 0x57, 0x78, 0xb9, 0xa7, 0x33, 0x53, 
-  0xb6, 0x54, 0x10, 0xb8, 0x87, 0xd3, 0xf2, 0xbf, 0x77, 0x4e, 0x52, 
-  0x3d, 0xde, 0x14, 0x94, 0x79, 0x8c, 0x6b, 0x3a, 0x91, 0xc2, 0x47, 
-  0xfe, 0x7d, 0xc3, 0xb7, 0x04, 0x02, 0xfa, 0xc1, 0x1f, 0x68, 0x29, 
-  0x86, 0xa2, 0x5c, 0x58, 0x14, 0x94, 0x1a, 0xdc, 0xa6, 0x1c, 0x54, 
-  0xc5, 0x80, 0xc0, 0x70, 0xd2, 0x8e, 0xc4, 0xbe, 0x37, 0x10, 0x0f, 
-  0x5c, 0x54, 0xc5, 0xbf, 0x61, 0x2a, 0x59, 0xb6, 0x48, 0x52, 0xa1, 
-  0x68, 0x59, 0x9c, 0x9b, 0x1c, 0xfc, 0x2a, 0x01, 0x6a, 0xc5, 0x61, 
-  0x5a, 0x76, 0x8f, 0xfd, 0x5e, 0xa8, 0xd9, 0xba, 0xda, 0x9d, 0x38, 
-  0x59, 0x1c, 0x90, 0xbf, 0xc7, 0x66, 0x34, 0x0a, 0xc8, 0xda, 0x5a, 
-  0x97, 0x65, 0xd0, 0x7a, 0xe5, 0xd3, 0x9c, 0x13, 0xda, 0x6f, 0xc5, 
-  0x1c, 0x30, 0xff, 0xed, 0xce, 0xcd, 0xfa, 0xe0, 0x31, 0xeb, 0x5c, 
-  0xab, 0x11, 0xfc, 0x0b, 0xae, 0x7b, 0x67, 0xf2, 0xf1, 0xa3, 0xfc, 
-  0xb3, 0xea, 0x8c, 0xca, 0x0f, 0xf4, 0xd3, 0x65, 0xa1, 0x75, 0x1b, 
-  0xb2, 0x9f, 0x4b, 0x4c, 0x0b, 0xf0, 0x2c, 0x97, 0x26, 0xbd, 0x57, 
-  0x4c, 0x98, 0xfb, 0x4c, 0xa5, 0xdd, 0x1e, 0xc3, 0xe1, 0x29, 0x6d, 
-  0x4f, 0x6d, 0x3a, 0xc1, 0x84, 0xbd, 0x70, 0x78, 0x95, 0x85, 0xf3, 
-  0xd5, 0x30, 0xb3, 0x66, 0x31, 0x68, 0xf9, 0x42, 0x89, 0x25, 0xbe, 
-  0x05, 0xe9, 0x00, 0xbc, 0x73, 0xf4, 0xd0, 0xd8, 0x0e, 0x05, 0x09, 
-  0x00, 0xec, 0xb1, 0xc4, 0x47, 0x9a, 0xcc, 0xf4, 0xd7, 0xda, 0xff, 
-  0xc9, 0x6d, 0xd0, 0x81, 0xd1, 0xb7, 0x01, 0x6b, 0xb3, 0xf5, 0x35, 
-  0x18, 0xca, 0xdd, 0xe3, 0xc3, 0x30, 0x11, 0x80, 0x2c, 0x22, 0xe2, 
-  0x8e, 0xb8, 0x0d, 0xa8, 0x82, 0x76, 0x47, 0x4f, 0xe7, 0x69, 0x98, 
-  0x4d, 0x4f, 0xc0, 0xec, 0xea, 0xf3, 0x86, 0x9f, 0xc7, 0x3a, 0x3d, 
-  0xd2, 0xac, 0x00, 0x5b, 0x8e, 0xef, 0xfb, 0xf1, 0x8a, 0x2b, 0x0f, 
-  0x46, 0x80, 0xc4, 0x92, 0x62, 0x2e, 0xc9, 0x59, 0xb4, 0x58, 0x46, 
-  0xc8, 0x16, 0xa0, 0xa4, 0xaf, 0xeb, 0x12, 0xfb, 0x67, 0xe7, 0x7c, 
-  0x15, 0x57, 0x4e, 0x51, 0x1b, 0x10, 0xc2, 0x9d, 0x55, 0x98, 0xb4, 
-  0x98, 0xc5, 0x95, 0x8d, 0x3b, 0xf3, 0x30, 0x0c, 0x2a, 0x29, 0xc3, 
-  0x4a, 0xe6, 0x25, 0x5b, 0xc7, 0x27, 0x7f, 0xcb, 0x34, 0x0b, 0x45, 
-  0x3d, 0x0e, 0x74, 0xb1, 0x09, 0x77, 0xbe, 0xc5, 0x3d, 0xa8, 0xc4, 
-  0xab, 0xe0, 0x17, 0xdb, 0x17, 0x17, 0xc1, 0x58, 0x7e, 0xf4, 0x59, 
-  0xa1, 0x7d, 0xbf, 0xfa, 0x1b, 0xa5, 0x40, 0x78, 0x80, 0x03, 0xd3, 
-  0x70, 0x1a, 0x7b, 0xfa, 0x59, 0xae, 0x4c, 0x20, 0xb5, 0x81, 0xfb, 
-  0x7f, 0x7a, 0xd9, 0xff, 0xbc, 0xc2, 0xda, 0x6c, 0x63, 0x45, 0xf0, 
-  0x1a, 0x9f, 0xcc, 0x2e, 0xc5, 0xbb, 0x99, 0x5b, 0x11, 0x6e, 0x16, 
-  0xf9, 0x8b, 0x83, 0xb8, 0xfc, 0x10, 0x9b, 0x17, 0xae, 0xe7, 0xd7, 
-  0xd2, 0xb6, 0x0e, 0x86, 0x39, 0xa4, 0xa7, 0xdb, 0xa5, 0xbb, 0x13, 
-  0x1a, 0x0b, 0xf9, 0x76, 0x7e, 0x06, 0x0f, 0x50, 0x4c, 0xf2, 0xef, 
-  0x0b, 0xd9, 0x1d, 0xeb, 0x96, 0x70, 0xbe, 0x9f, 0x0f, 0xba, 0xd9, 
-  0xc5, 0xc1, 0x3f, 0x36, 0xf2, 0xa0, 0xb6, 0x0f, 0x82, 0x43, 0x16, 
-  0x20, 0xf5, 0xcc, 0x31, 0x79, 0x2e, 0x6c, 0xd3, 0x0b, 0x9a, 0x31, 
-  0xb1, 0x7e, 0x97, 0x7a, 0x76, 0x2b, 0x6a, 0x38, 0xad, 0xa2, 0xf8, 
-  0xb3, 0x26, 0x65, 0xc5, 0x10, 0x0b, 0x2e, 0xdd, 0x81, 0xcf, 0xf5, 
-  0xb3, 0x99, 0xa9, 0xe3, 0xcf, 0x8a, 0x3e, 0xc0, 0x54, 0xd6, 0x53, 
-  0x65, 0x58, 0xe0, 0x1e, 0xb3, 0x30, 0x66, 0xda, 0xc4, 0x05, 0x2d, 
-  0xcd, 0xe4, 0xf7, 0x31, 0xdb, 0x05, 0x30, 0x13, 0x70, 0x62, 0x29, 
-  0x4b, 0xb9, 0x12, 0xfa, 0xd4, 0xcb, 0x97, 0xfd, 0x57, 0xb3, 0x37, 
-  0xa4, 0x15, 0x77, 0xc2, 0x05, 0xc0, 0x15, 0x31, 0xe9, 0x32, 0xa0, 
-  0x8c, 0xa4, 0xf3, 0xa7, 0xb5, 0x18, 0xb7, 0x46, 0xe5, 0x82, 0x44, 
-  0xc0, 0x34, 0xb7, 0xfe, 0x89, 0xa5, 0xc4, 0xf0, 0x3d, 0x8d, 0xe3, 
-  0xf4, 0x57, 0x35, 0x5a, 0xee, 0x4d, 0xbf, 0xd1, 0x86, 0x6e, 0x08, 
-  0xc3, 0x60, 0xc2, 0x5d, 0xd9, 0x50, 0xe0, 0x0e, 0x4f, 0x85, 0xbf, 
-  0x7f, 0xbe, 0x54, 0x01, 0x15, 0x72, 0x84, 0xdc, 0x5b, 0x0d, 0xf8, 
-  0xe8, 0xb6, 0x1c, 0x84, 0x0e, 0xa3, 0x0b, 0x75, 0x69, 0x7c, 0xea, 
-  0x7b, 0x88, 0x31, 0x7d, 0x7d, 0x8d, 0xd6, 0x81, 0x04, 0x73, 0x5f, 
-  0x8f, 0xfe, 0x77, 0x69, 0x10, 0x64, 0x8d, 0x44, 0x93, 0xdd, 0x9b, 
-  0x1e, 0xe6, 0x80, 0xf9, 0x9c, 0x54, 0x7e, 0x83, 0x80, 0x9e, 0xf8, 
-  0x22, 0x34, 0x0f, 0x90, 0x2a, 0xbe, 0x52, 0x16, 0x55, 0xaa, 0x62, 
-  0x41, 0xab, 0x98, 0x76, 0x1e, 0x06, 0x6f, 0x7f, 0xca, 0x3e, 0x57, 
-  0x63, 0x8a, 0x3a, 0x74, 0x31, 0x53, 0x4d, 0xce, 0xee, 0x91, 0x4d, 
-  0x40, 0x8b, 0xe1, 0x24, 0x2f, 0x2b, 0x79, 0x74, 0x7d, 0x67, 0x63, 
-  0xdd, 0x53, 0xfc, 0xc5, 0x6e, 0x83, 0xa9, 0x3d, 0x83, 0xb7, 0xaa, 
-  0x3b, 0x84, 0xa3, 0x6e, 0x5a, 0x74, 0x54, 0x77, 0xa7, 0x8a, 0x5c, 
-  0xd3, 0x30, 0x3f, 0x9a, 0x4b, 0xa6, 0xaa, 0xda, 0x7a, 0xd0, 0x6f, 
-  0x85, 0xec, 0x20, 0x44, 0x7a, 0x17, 0x79, 0x54, 0x09, 0x17, 0x6c, 
-  0xed, 0xee, 0x64, 0xbb, 0x20, 0xbb, 0xbf, 0x69, 0x28, 0x8c, 0x89, 
-  0xe6, 0x0a, 0xd5, 0xd0, 0x26, 0x69, 0x8d, 0x3c, 0x7c, 0xef, 0xbb, 
-  0x0d, 0xf2, 0xd0, 0x1e, 0x2b, 0xae, 0xbb, 0x5f, 0x00, 0x68, 0xbc, 
-  0x57, 0x79, 0xfb, 0x72, 0x6c, 0x87, 0x8f, 0x3f, 0x24, 0x8c, 0xd5, 
-  0x1b, 0xe5, 0xfd, 0xfe, 0x22, 0xf7, 0x1d, 0xce, 0xd8, 0xcb, 0x4f, 
-  0xf0, 0x02, 0xee, 0x1b, 0x9f, 0x72, 0xb7, 0x15, 0xf4, 0xcb, 0x54, 
-  0xd0, 0x92, 0xc6, 0xaf, 0x6d, 0x62, 0xfc, 0x4a, 0x60, 0x3f, 0xd4, 
-  0xd8, 0x3f, 0x15, 0x08, 0x8f, 0x16, 0xf8, 0xfb, 0x35, 0x5f, 0x5c, 
-  0x74, 0xcc, 0xea, 0x7c, 0xeb, 0xb6, 0x2f, 0x1e, 0x44, 0xed, 0xf3, 
-  0xc8, 0xe2, 0x4b, 0x6c, 0x83, 0x40, 0xd3, 0x0d, 0x28, 0x25, 0x95, 
-  0x2e, 0x67, 0x71, 0x32, 0xa0, 0xf4, 0x7c, 0x2c, 0x78, 0x28, 0xb0, 
-  0xc0, 0xfd, 0xf1, 0x01, 0xbd, 0x50, 0x3e, 0x28, 0x35, 0x0b, 0x04, 
-  0x6f, 0xe2, 0xb2, 0x53, 0xaa, 0x7a, 0x44, 0xc0, 0x1c, 0x79, 0x7a, 
-  0x81, 0x7b, 0x3f, 0x07, 0xd7, 0x56, 0x33, 0x3b, 0xf5, 0xd4, 0xb1, 
-  0x9c, 0xce, 0x10, 0x0f, 0x22, 0x7e, 0x76, 0x5d, 0x07, 0x88, 0xbd, 
-  0x5c, 0x9e, 0xb2, 0x20, 0x78, 0xb2, 0x50, 0xb9, 0x50, 0xd5, 0xc4, 
-  0xb5, 0x40, 0x56, 0x7e, 0xdc, 0xa7, 0x57, 0x27, 0x74, 0x55, 0x81, 
-  0x86, 0x89, 0xad, 0xd4, 0x36, 0x35, 0x12, 0x52, 0x47, 0x76, 0x75, 
-  0x75, 0xe6, 0x48, 0xea, 0xb8, 0xe7, 0xba, 0x72, 0x4b, 0x07, 0x4a, 
-  0x4e, 0xcc, 0x6f, 0xcd, 0x7d, 0x73, 0x14, 0x15, 0xb1, 0x2d, 0x08, 
-  0xb5, 0xcd, 0x4c, 0xf6, 0x43, 0xdb, 0xef, 0xe1, 0x09, 0xd8, 0x2c, 
-  0x86, 0x0b, 0x4c, 0xb4, 0x18, 0xe1, 0x88, 0xba, 0x94, 0xb0, 0x9b, 
-  0x57, 0xfb, 0x87, 0xc9, 0xfd, 0x01, 0xd3, 0x1c, 0x72, 0x98, 0x3b, 
-  0xbb, 0xf5, 0xbe, 0x88, 0x4c, 0x1f, 0x84, 0xf2, 0x9b, 0x7a, 0xa5, 
-  0x74, 0x5b, 0xaf, 0x7e, 0x8a, 0x72, 0x63, 0x9d, 0xaf, 0xb5, 0x60, 
-  0x16, 0x2c, 0x72, 0xbf, 0x9b, 0xed, 0xfd, 0xb6, 0x40, 0xd0, 0xbd, 
-  0x06, 0x22, 0xd5, 0xb3, 0x0b, 0xba, 0x5e, 0x0f, 0x96, 0x15, 0xf1, 
-  0x48, 0x16, 0xb2, 0xf4, 0x4e, 0x47, 0x84, 0xa9, 0x95, 0x94, 0xe1, 
-  0xda, 0xa5, 0xd7, 0xc2, 0x3a, 0x8b, 0x17, 0x46, 0xd7, 0xdd, 0xf8, 
-  0x9a, 0xf3, 0x8b, 0x7e, 0xf4, 0x2e, 0xfb, 0x43, 0xcc, 0x70, 0x7b, 
-  0xee, 0x8a, 0xfa, 0x4f, 0xa8, 0x13, 0x7e, 0x90, 0x50, 0x3e, 0x63, 
-  0x14, 0xcc, 0x53, 0xbb, 0x84, 0x06, 0x06, 0x14, 0x6e, 0xd1, 0x44, 
-  0xfa, 0x64, 0x28, 0x02, 0x95, 0xb1, 0x1c, 0xb2, 0x08, 0x33, 0x74, 
-  0xd9, 0x02, 0x25, 0x12, 0xb0, 0x7a, 0xcc, 0x15, 0xf4, 0xe5, 0x84, 
-  0xfd, 0x66, 0xea, 0xd8, 0x8a, 0x7e, 0xb7, 0x2b, 0xa0, 0x28, 0x39, 
-  0x71, 0xeb, 0xde, 0xbf, 0xc0, 0x85, 0x8f, 0x52, 0x0f, 0x38, 0x50, 
-  0xed, 0xc0, 0x6e, 0x53, 0xf8, 0x05, 0xce, 0x80, 0x1f, 0xcd, 0xa3, 
-  0x3d, 0x4f, 0xa3, 0x97, 0x36, 0xad, 0x87, 0x3b, 0x48, 0xfc, 0x54, 
-  0x81, 0x9d, 0x58, 0xab, 0x27, 0x21, 0x06, 0x82, 0xbd, 0x22, 0x83, 
-  0x22, 0xb5, 0x23, 0xbc, 0xc5, 0xb6, 0x58, 0xca, 0x49, 0x9b, 0x44, 
-  0x53, 0xd7, 0x24, 0x9e, 0x42, 0xac, 0xe0, 0xa4, 0x6a, 0x4c, 0xa3, 
-  0xec, 0x47, 0x8d, 0x57, 0x22, 0x97, 0xf5, 0xa4, 0x54, 0x64, 0x5f, 
-  0xaf, 0x3f, 0xa7, 0xf0, 0x40, 0x7f, 0xde, 0x82, 0x86, 0x88, 0xf0, 
-  0x31, 0x82, 0xf1, 0x04, 0x03, 0x5f, 0x93, 0x19, 0x7b, 0xc3, 0x53, 
-  0xbc, 0x53, 0xb8, 0xee, 0xfb, 0x12, 0x14, 0x87, 0xe9, 0x57, 0x73, 
-  0xe9, 0x80, 0x98, 0x7f, 0x0c, 0xd1, 0xf1, 0x5d, 0x19, 0x5a, 0x60, 
-  0x4f, 0x8a, 0x68, 0xa4, 0xd7, 0x47, 0x6b, 0x7f, 0x4f, 0x13, 0x78, 
-  0x91, 0xcb, 0xfd, 0x39, 0xa0, 0x6c, 0x86, 0xb1, 0xfd, 0xf7, 0x74, 
-  0xaa, 0xdc, 0x8d, 0xeb, 0x17, 0xdb, 0x2f, 0x55, 0xf1, 0x5d, 0x99, 
-  0x64, 0x95, 0xd1, 0x7d, 0x52, 0xd1, 0x81, 0xd2, 0x61, 0x39, 0x5d, 
-  0x47, 0x33, 0x46, 0x7c, 0x85, 0xfc, 0x84, 0x06, 0xee, 0x50, 0xfd, 
-  0xdc, 0xd7, 0x3f, 0x2e, 0x28, 0x7f, 0x3b, 0x09, 0xda, 0xcb, 0xee, 
-  0xbe, 0x25, 0xba, 0x50, 0x2b, 0x6d, 0x3b, 0x19, 0x70, 0x2f, 0x6e, 
-  0xa2, 0x65, 0x46, 0x41, 0xe0, 0xfc, 0xd0, 0x7d, 0x21, 0x8b, 0x1c, 
-  0x37, 0x35, 0x69, 0xbc, 0xd3, 0x0f, 0xed, 0x0a, 0x74, 0x5d, 0xdf, 
-  0xd4, 0x98, 0x82, 0x5f, 0x6b, 0x43, 0x8c, 0xdf, 0x71, 0x24, 0x00, 
-  0xcf, 0x7b, 0x37, 0x40, 0xce, 0xc9, 0x49, 0x05, 0x40, 0xa6, 0xd0, 
-  0x5a, 0xe5, 0x08, 0xf4, 0xfd, 0x11, 0x3e, 0xea, 0xac, 0xcf, 0x07, 
-  0x45, 0xc7, 0x8e, 0xe4, 0x0b, 0xe5, 0x52, 0xf5, 0xb7, 0x7d, 0xaf, 
-  0x5a, 0xb8, 0xb8, 0x82, 0x00, 0x01, 0x10, 0x0b, 0xca, 0xaa, 0xf8, 
-  0x5f, 0x19, 0xec, 0x01, 0x87, 0xd6, 0x66, 0xfe, 0x6e, 0x2b, 0xe3, 
-  0x61, 0x75, 0x49, 0xfe, 0xa4, 0xee, 0x42, 0x0e, 0x80, 0x4d, 0xa3, 
-  0x67, 0x9b, 0xf2, 0x9a, 0x46, 0x83, 0x6d, 0x5f, 0x6b, 0x3c, 0x04, 
-  0x6f, 0x15, 0xcf, 0x30, 0x37, 0x49, 0xd2, 0x5f, 0x80, 0x34, 0x47, 
-  0x11, 0x83, 0x34, 0x01, 0x83, 0xb9, 0x25, 0x91, 0x7e, 0xd8, 0x13, 
-  0x50, 0xc7, 0xf7, 0xa9, 0x05, 0xdf, 0xd6, 0xef, 0x04, 0xea, 0x84, 
-  0x5a, 0x62, 0x8d, 0x8a, 0x27, 0x58, 0x18, 0x09, 0x45, 0x9f, 0xce, 
-  0x93, 0x07, 0x8c, 0xc2, 0xb1, 0xe4, 0xeb, 0x57, 0x2a, 0x3b, 0x94, 
-  0xe7, 0x77, 0x8f, 0x8f, 0x95, 0x6d, 0x7e, 0x83, 0x56, 0xfd, 0x7d, 
-  0x0a, 0xd8, 0x56, 0x46, 0x3c, 0xf1, 0xd3, 0x35, 0x28, 0xf9, 0x54, 
-  0xd9, 0xdf, 0x01, 0xd3, 0xe0, 0x75, 0xdf, 0x02, 0x19, 0x69, 0x6b, 
-  0x21, 0x4d, 0x61, 0x80, 0x7f, 0x75, 0x10, 0x87, 0xfe, 0xd1, 0x9a, 
-  0xa3, 0x95, 0xfc, 0xcb, 0x12, 0x5c, 0x21, 0x3f, 0x1e, 0x8c, 0xca, 
-  0x79, 0xc4, 0x66, 0x47, 0x7c, 0xcb, 0x02, 0xf7, 0x6e, 0x2e, 0x05, 
-  0x5d, 0xb2, 0x15, 0x82, 0xdb, 0x60, 0xc5, 0x56, 0xbd, 0x8c, 0x6f, 
-  0xb9, 0x1a, 0xfc, 0x16, 0xd8, 0x2d, 0xec, 0x15, 0x38, 0x61, 0xf3, 
-  0x2b, 0x0e, 0x10, 0x38, 0x64, 0x5d, 0x65, 0xcf, 0xa5, 0xb3, 0xf7, 
-  0xf8, 0x77, 0xdf, 0xaa, 0x99, 0x3e, 0x7d, 0x9d, 0x69, 0x73, 0xce, 
-  0x3c, 0x2d, 0xab, 0x27, 0x80, 0xe8, 0x76, 0xdb, 0x45, 0x9c, 0xe7, 
-  0x3f, 0x95, 0x24, 0xb5, 0x95, 0xc3, 0x19, 0xbe, 0xbd, 0x9f, 0x84, 
-  0x68, 0xfa, 0x5d, 0xf5, 0xeb, 0x38, 0xcb, 0xa8, 0x5b, 0x58, 0xc4, 
-  0x7b, 0x8f, 0x51, 0x7b, 0xe2, 0x2d, 0xdd, 0x1a, 0xf1, 0x22, 0xc4, 
-  0xa5, 0xac, 0x0e, 0x4d, 0xce, 0x82, 0xab, 0x59, 0x39, 0x5a, 0x95, 
-  0xd5, 0x7c, 0xf8, 0x43, 0xe1, 0x3f, 0xbc, 0x61, 0x0f, 0x2c, 0xa7, 
-  0x47, 0x45, 0x8e, 0xd4, 0x16, 0xd4, 0x1d, 0xec, 0x91, 0x9c, 0xe4, 
-  0xfc, 0x96, 0x67, 0xfe, 0xfd, 0xc9, 0x91, 0x38, 0xa7, 0x01, 0xc9, 
-  0x08, 0xd1, 0xcc, 0xcb, 0xd4, 0x3b, 0x58, 0x2c, 0x3a, 0xf2, 0x18, 
-  0xda, 0x39, 0x76, 0x53, 0xc2, 0xea, 0xe7, 0x6e, 0x9b, 0x61, 0xce, 
-  0x62, 0x75, 0x39, 0xea, 0x01, 0xe8, 0x88, 0x14, 0x8f, 0xd1, 0x3e, 
-  0x5c, 0x4c, 0xef, 0x27, 0xfe, 0x10, 0xf2, 0x54, 0x65, 0xd3, 0x2a, 
-  0x1e, 0x4a, 0xee, 0x42, 0x46, 0x56, 0xa7, 0xca, 0x43, 0xa3, 0x5e, 
-  0x4a, 0x0b, 0xd6, 0x30, 0x11, 0x3e, 0x98, 0xdc, 0xdc, 0xdd, 0x79, 
-  0x13, 0xa6, 0x04, 0x6e, 0x7c, 0x62, 0x65, 0xb2, 0x40, 0xe6, 0x18, 
-  0x8e, 0x5d, 0x51, 0xa8, 0x7a, 0xf0, 0x47, 0xf3, 0xe7, 0x0b, 0xd0, 
-  0x93, 0x53, 0x86, 0x78, 0x52, 0x5c, 0x08, 0x2d, 0x02, 0x46, 0x5e, 
-  0xf1, 0x1b, 0x5d, 0x1b, 0x82, 0x66, 0x28, 0xba, 0x8f, 0x11, 0xac, 
-  0x61, 0x55, 0x01, 0x57, 0xb9, 0x9c, 0xab, 0x4d, 0x36, 0x43, 0x78, 
-  0x62, 0x96, 0x8f, 0xf5, 0x4a, 0xb9, 0x5c, 0xd4, 0x59, 0x16, 0xd1, 
-  0xf7, 0x0b, 0xf6, 0xda, 0x26, 0xdc, 0xa2, 0x27, 0x6d, 0x49, 0xf7, 
-  0x70, 0x77, 0x92, 0x28, 0xd1, 0x55, 0xc3, 0x2f, 0x01, 0x41, 0x29, 
-  0x59, 0x57, 0x73, 0x31, 0x5f, 0x1c, 0x52, 0x1f, 0xc0, 0x1e, 0xe6, 
-  0xa0, 0xac, 0x35, 0xa7, 0x2e, 0xf2, 0x04, 0x22, 0x1f, 0x11, 0x55, 
-  0x71, 0x68, 0x4f, 0xa4, 0xea, 0x18, 0xe5, 0x96, 0x02, 0x23, 0x46, 
-  0x5c, 0x4c, 0x75, 0xd7, 0xb9, 0x42, 0x6f, 0x41, 0x9a, 0xe9, 0x38, 
-  0xe2, 0x64, 0x6a, 0xf7, 0x60, 0x8e, 0xfe, 0x50, 0x1f, 0xaf, 0xf0, 
-  0x3f, 0xb7, 0x24, 0xae, 0xc5, 0x51, 0x51, 0x9d, 0x15, 0x04, 0x77, 
-  0x8c, 0xc6, 0xca, 0xd1, 0x42, 0x69, 0x85, 0xc7, 0xf2, 0x6e, 0x4c, 
-  0x4d, 0x70, 0xac, 0x79, 0xd3, 0xcd, 0x5a, 0xd0, 0x23, 0x4a, 0x87, 
-  0x89, 0x22, 0x85, 0xd7, 0x00, 0x4e, 0xcf, 0x9b, 0x9e, 0x27, 0xc2, 
-  0xa5, 0x7c, 0xcc, 0x32, 0x0c, 0x58, 0x84, 0xc6, 0x90, 0x69, 0x08, 
-  0x21, 0x41, 0x3e, 0xe5, 0x32, 0xb5, 0xa8, 0x4f, 0x4c, 0x98, 0x33, 
-  0xd8, 0x7b, 0x60, 0xc7, 0x29, 0x3c, 0xf3, 0x62, 0xa4, 0x90, 0xe2, 
-  0xa0, 0xda, 0xda, 0x14, 0x77, 0xff, 0x42, 0xa0, 0x35, 0x96, 0x2a, 
-  0x3b, 0x37, 0xe5, 0xc1, 0xa7, 0x6f, 0x45, 0x3c, 0x4b, 0x2b, 0x56, 
-  0x3e, 0x0c, 0x72, 0xcd, 0xd8, 0x5a, 0x42, 0x3b, 0xec, 0x12, 0x65, 
-  0x73, 0xf8, 0xe8, 0x77, 0x58, 0xc6, 0x1b, 0x0c, 0x4c, 0x16, 0xcd, 
-  0xdc, 0x55, 0x4e, 0x73, 0x53, 0xa1, 0xe9, 0xf1, 0xfc, 0x52, 0x5b, 
-  0xa4, 0x18, 0xd8, 0xa8, 0xcd, 0x1b, 0x28, 0x2f, 0x33, 0xbf, 0x9d, 
-  0xb5, 0x63, 0x98, 0x1d, 0x6b, 0xbd, 0x7d, 0x9d, 0x8d, 0x4d, 0xfe, 
-  0xf8, 0x1a, 0x9b, 0x1f, 0xa7, 0xf1, 0x9e, 0xca, 0x9a, 0xf6, 0x14, 
-  0x36, 0x16, 0x70, 0x18, 0x47, 0xea, 0x6f, 0x1b, 0xb8, 0x01, 0x43, 
-  0x8c, 0xcb, 0x41, 0xc7, 0x17, 0x7e, 0xdd, 0x65, 0xf8, 0xb5, 0x9e, 
-  0x99, 0x5f, 0x83, 0xbb, 0x3e, 0x65, 0x04, 0x16, 0x8c, 0xb3, 0x4b, 
-  0xf3, 0x20, 0x98, 0x77, 0x13, 0x1b, 0x34, 0xb1, 0x35, 0x4d, 0xd2, 
-  0x92, 0x1e, 0x53, 0x6b, 0xd2, 0xa7, 0x37, 0xd5, 0x35, 0x66, 0x02, 
-  0xb6, 0xde, 0x69, 0x66, 0x48, 0x5d, 0xba, 0xb0, 0xbe, 0x32, 0xf0, 
-  0x0f, 0x18, 0xf5, 0xe9, 0xb6, 0x69, 0xad, 0x57, 0x2e, 0x57, 0x92, 
-  0xba, 0xa9, 0x65, 0xaf, 0x9b, 0x80, 0xf4, 0xca, 0xa3, 0x56, 0x16, 
-  0x50, 0xf5, 0xf5, 0xc8, 0xc4, 0x2a, 0x48, 0x6d, 0x6f, 0xac, 0xf5, 
-  0xa2, 0xa0, 0x15, 0xc1, 0x13, 0xa4, 0xbb, 0x4b, 0xcb, 0x7a, 0x28, 
-  0xd4, 0x0b, 0x2c, 0xca, 0x7d, 0x7b, 0x19, 0x5c, 0x35, 0x83, 0xcf, 
-  0x4a, 0x20, 0xf5, 0xf9, 0x95, 0x41, 0x0d, 0x77, 0xab, 0x82, 0xaa, 
-  0xfc, 0x99, 0x39, 0xda, 0x0c, 0xb4, 0x3b, 0xc5, 0xca, 0x75, 0xd5, 
-  0xc1, 0x3a, 0xd7, 0x38, 0x8a, 0xb7, 0x25, 0x98, 0x7e, 0x93, 0x36, 
-  0x6c, 0x0c, 0x33, 0x8a, 0x14, 0xe9, 0x71, 0x65, 0xa6, 0x53, 0x05, 
-  0xcd, 0x58, 0xca, 0xf3, 0xb9, 0x6c, 0xad, 0xc5, 0x5a, 0xc7, 0x86, 
-  0xbb, 0x54, 0x51, 0xbf, 0x23, 0x10, 0x5f, 0x05, 0x1e, 0x20, 0xb9, 
-  0x34, 0x65, 0x42, 0xfd, 0x4a, 0x3e, 0xee, 0x02, 0x57, 0xca, 0x15, 
-  0x7c, 0xf2, 0xcb, 0x10, 0x56, 0xee, 0x46, 0xc3, 0x44, 0x9f, 0xce, 
-  0x08, 0x6a, 0x7a, 0xfe, 0xfa, 0xdd, 0x18, 0x3d, 0x85, 0xa2, 0x54, 
-  0x1c, 0xc9, 0x36, 0xe4, 0x66, 0xe8, 0x98, 0xe8, 0xfe, 0x8f, 0xf6, 
-  0x19, 0x80, 0x82, 0xc2, 0xcf, 0x72, 0xc7, 0x8f, 0xc6, 0xc6, 0x10, 
-  0xeb, 0xdd, 0x7f, 0x14, 0xc9, 0x4c, 0x93, 0x9f, 0x26, 0xac, 0x6a, 
-  0x4c, 0x4d, 0x00, 0x03, 0x86, 0xc5, 0x49, 0x42, 0xe5, 0x2e, 0xb7, 
-  0x53, 0xfa, 0xe4, 0xc3, 0xe2, 0x6d, 0xb4, 0xac, 0xe4, 0x19, 0x62, 
-  0x85, 0x3c, 0xc6, 0x0d, 0xe9, 0xae, 0x5e, 0x87, 0x5c, 0x12, 0x69, 
-  0x02, 0xaf, 0x77, 0x8a, 0xc7, 0xe9, 0xe4, 0xb3, 0x4f, 0x6c, 0xb8, 
-  0xd5, 0xd1, 0xf3, 0x8c, 0xe0, 0x80, 0xb8, 0x7c, 0x8d, 0x90, 0x36, 
-  0xc0, 0xf9, 0xc4, 0x5c, 0x40, 0x3e, 0xf9, 0x3d, 0xb5, 0xd5, 0xb8, 
-  0x8f, 0x3e, 0x72, 0xe7, 0x99, 0xc1, 0x67, 0xec, 0x36, 0xa2, 0x1d, 
-  0x55, 0x2f, 0x2d, 0x92, 0x9b, 0x8a, 0x57, 0xf3, 0xb0, 0x1d, 0xfb, 
-  0x67, 0x34, 0xed, 0x1b, 0xde, 0x98, 0x10, 0x81, 0xec, 0x0b, 0x0c, 
-  0x21, 0x87, 0x7b, 0xb2, 0x49, 0x71, 0x9f, 0x8d, 0xa7, 0x65, 0x50, 
-  0x76, 0x05, 0xeb, 0xda, 0xc7, 0xea, 0x7e, 0xce, 0xaa, 0x4e, 0x1d, 
-  0xee, 0xa5, 0xd6, 0x8f, 0xcf, 0x42, 0x35, 0xbf, 0x2c, 0x2a, 0xea, 
-  0x77, 0xd8, 0x16, 0x29, 0xa2, 0x76, 0x93, 0xaa, 0xe0, 0xec, 0xb6, 
-  0xba, 0x4a, 0x26, 0x8a, 0x0d, 0x6d, 0x4b, 0x77, 0x1f, 0xce, 0xac, 
-  0x40, 0x80, 0x12, 0xde, 0xe1, 0x40, 0xcb, 0x7b, 0xbf, 0x30, 0xa4, 
-  0x8e, 0x74, 0xb0, 0x93, 0x1d, 0xf7, 0x30, 0x0a, 0xad, 0x1d, 0xa7, 
-  0x98, 0xa9, 0x0e, 0x12, 0x2a, 0x6f, 0xb0, 0x56, 0xbb, 0xb2, 0x65, 
-  0xbb, 0xc4, 0xee, 0x8f, 0x71, 0xc7, 0x34, 0xad, 0x3f, 0xcc, 0xcb, 
-  0x15, 0xdf, 0x9a, 0xb8, 0xfd, 0x9e, 0x9f, 0xe2, 0x4d, 0x9c, 0x19, 
-  0xce, 0x62, 0x4b, 0x23, 0x3f, 0xed, 0xbc, 0x78, 0x8e, 0xd3, 0x04, 
-  0x35, 0xf5, 0x7f, 0xcc, 0xee, 0x63, 0x75, 0xb8, 0x42, 0xf9, 0xe3, 
-  0xb2, 0xdf, 0x0c, 0xf2, 0x78, 0x4c, 0x6b, 0x23, 0x4a, 0x1a, 0xe1, 
-  0x1e, 0x6f, 0x13, 0xc0, 0xb6, 0x5e, 0xa3, 0x4b, 0xd3, 0x09, 0x07, 
-  0xd0, 0xe5, 0xe5, 0xb6, 0x47, 0x4a, 0x13, 0x3b, 0xb2, 0x4e, 0x38, 
-  0x0e, 0x62, 0x36, 0x20, 0x33, 0xc6, 0x1f, 0x18, 0xaa, 0x37, 0xdc, 
-  0x68, 0xad, 0x6e, 0xcb, 0x11, 0x88, 0x7a, 0xe9, 0x68, 0xc7, 0x81, 
-  0x28, 0xfd, 0x34, 0xed, 0x7f, 0x8a, 0x12, 0xeb, 0xb2, 0xe2, 0x2f, 
-  0x13, 0x44, 0xfb, 0x35, 0xde, 0x8b, 0x91, 0x24, 0xce, 0xc3, 0x46, 
-  0x83, 0x34, 0xd0, 0xe2, 0x89, 0x1f, 0x99, 0x02, 0x19, 0x21, 0xa4, 
-  0x5d, 0xd6, 0x7e, 0x2a, 0xa2, 0xf5, 0x65, 0xb4, 0xeb, 0xe5, 0xff, 
-  0x22, 0x05, 0xd0, 0x43, 0x0c, 0x41, 0xe3, 0x12, 0x6a, 0x58, 0xa5, 
-  0x63, 0x20, 0xb8, 0x85, 0x1f, 0xbb, 0x02, 0x93, 0x62, 0xe4, 0xe6, 
-  0x5c, 0x2d, 0x3e, 0x95, 0xb0, 0xe7, 0x0d, 0xc0, 0xc8, 0x79, 0x09, 
-  0xd9, 0x08, 0xa7, 0xf8, 0x1a, 0x59, 0xd6, 0xa6, 0x90, 0x90, 0x14, 
-  0x4e, 0xd2, 0x5d, 0x85, 0xd0, 0x03, 0xb2, 0x4d, 0xc9, 0x38, 0x7d, 
-  0x00, 0x29, 0xa6, 0xfb, 0x84, 0x0e, 0x6a, 0xf7, 0x7d, 0x9d, 0x52, 
-  0xf6, 0xcb, 0x8d, 0x69, 0xf4, 0xfe, 0x6c, 0x69, 0x67, 0x3d, 0xd7, 
-  0x51, 0x8b, 0x6a, 0x15, 0x00, 0x82, 0x4b, 0xcc, 0xe9, 0xac, 0x15, 
-  0xa5, 0x13, 0x55, 0x46, 0xf5, 0xdc, 0x6c, 0xbe, 0x1b, 0xeb, 0x6d, 
-  0xf1, 0x1b, 0x97, 0x8e, 0x88, 0x9c, 0xb1, 0x84, 0xe4, 0x3d, 0x07, 
-  0xad, 0xe1, 0xfe, 0x39, 0x62, 0x93, 0x25, 0x54, 0x0b, 0xc3, 0x60, 
-  0xe9, 0x06, 0xf6, 0x38, 0x42, 0x5a, 0xc9, 0x25, 0x26, 0xb3, 0xad, 
-  0x4b, 0xc6, 0x00, 0xeb, 0xb8, 0xa1, 0xfd, 0x31, 0x80, 0x7c, 0x17, 
-  0x7f, 0x90, 0xfe, 0x2f, 0xb7, 0x8a, 0x86, 0x88, 0xbd, 0x27, 0x27, 
-  0x7d, 0x57, 0x47, 0x15, 0xb9, 0x69, 0xfa, 0xbf, 0x0a, 0x22, 0x72, 
-  0x50, 0x8b, 0x37, 0x7a, 0x2e, 0xa0, 0xd4, 0x31, 0x80, 0xfb, 0x12, 
-  0x85, 0x30, 0x25, 0xe4, 0xb8, 0x08, 0x82, 0xeb, 0x6b, 0x16, 0x5b, 
-  0x14, 0x76, 0x64, 0x12, 0x79, 0xf2, 0x9e, 0x94, 0xdb, 0xe4, 0xf2, 
-  0x4a, 0x82, 0x01, 0x59, 0xcf, 0x83, 0x37, 0xb9, 0x20, 0x95, 0x0c, 
-  0x36, 0xa0, 0x85, 0xfd, 0xc2, 0x6f, 0xb2, 0x90, 0x3f, 0x3b, 0x00, 
-  0x65, 0x91, 0xf4, 0x62, 0x19, 0x0e, 0x6b, 0x16, 0x60, 0x01, 0x07, 
-  0xf3, 0x88, 0x05, 0xd5, 0x9d, 0x3f, 0xe8, 0x81, 0xd0, 0xd5, 0x87, 
-  0xec, 0xea, 0xb3, 0xa1, 0x87, 0xb3, 0x45, 0x1d, 0x56, 0x57, 0xe1, 
-  0x1f, 0x04, 0xcb, 0x88, 0x44, 0x94, 0x62, 0xf0, 0xe5, 0x55, 0x84, 
-  0x16, 0x8a, 0xf0, 0x5e, 0xb1, 0x2b, 0x34, 0x60, 0x84, 0xc2, 0x39, 
-  0x71, 0xc1, 0x21, 0x87, 0x56, 0xb6, 0xac, 0x41, 0x27, 0xad, 0xa6, 
-  0x53, 0x8e, 0xad, 0x64, 0x40, 0x8d, 0x4a, 0x38, 0x34, 0xd9, 0x47, 
-  0xb3, 0x4e, 0x76, 0x32, 0x07, 0x76, 0xe8, 0x2e, 0x39, 0xa8, 0x13, 
-  0xfc, 0x48, 0x91, 0xb4, 0x9e, 0x07, 0xe9, 0xe9, 0xbd, 0x03, 0x48, 
-  0x79, 0xf9, 0x4f, 0x27, 0x7d, 0x2d, 0x94, 0xe8, 0xc4, 0x0a, 0x98, 
-  0xdd, 0x37, 0x95, 0x0c, 0xf9, 0x5d, 0xd2, 0x15, 0x9d, 0x06, 0x5a, 
-  0x66, 0xda, 0xd6, 0xfe, 0x0d, 0x6c, 0x92, 0x7e, 0xa2, 0xda, 0xf8, 
-  0xb7, 0x6a, 0xaa, 0xa5, 0x4c, 0xc0, 0x07, 0x62, 0xa5, 0xa9, 0x9d, 
-  0x44, 0xda, 0x27, 0x30, 0xdb, 0x53, 0xfd, 0xad, 0x6e, 0x97, 0x62, 
-  0x2b, 0xab, 0x30, 0xf0, 0x42, 0x6c, 0xfd, 0x3d, 0x97, 0xde, 0xff, 
-  0xe1, 0xae, 0xd9, 0xb3, 0xd9, 0xee, 0x27, 0x41, 0x08, 0x82, 0xab, 
-  0xe0, 0xc6, 0xed, 0x83, 0x7f, 0xdc, 0x81, 0xde, 0x01, 0x3a, 0x32, 
-  0x1c, 0xd4, 0xdf, 0x93, 0x4b, 0xd7, 0x9c, 0xc1, 0x58, 0x54, 0x5a, 
-  0x6a, 0x98, 0xe5, 0xf0, 0x1e, 0x30, 0xfb, 0xb6, 0x4b, 0x09, 0x43, 
-  0x80, 0xef, 0xc1, 0xb2, 0x72, 0x4d, 0x34, 0xd1, 0x16, 0x25, 0x70, 
-  0xb3, 0x4e, 0x77, 0x45, 0x6c, 0x47, 0x8e, 0x58, 0xff, 0xb8, 0x37, 
-  0x76, 0x37, 0x5b, 0x97, 0x78, 0x72, 0x33, 0x06, 0xd5, 0x6a, 0x13, 
-  0x3d, 0x95, 0xb3, 0xb9, 0xe0, 0x06, 0xf0, 0xdf, 0xd4, 0xd8, 0x3f, 
-  0x15, 0x3a, 0x1d, 0x84, 0x57, 0xc5, 0x18, 0xfc, 0x96, 0x4b, 0xa4, 
-  0xd7, 0xc1, 0x10, 0xd6, 0xae, 0xf3, 0xb9, 0xfe, 0xc6, 0x35, 0xb5, 
-  0x3c, 0xca, 0x18, 0xb3, 0xaa, 0xaf, 0x8a, 0xa6, 0xc2, 0x72, 0x02, 
-  0x67, 0x60, 0x38, 0xcc, 0x0f, 0x89, 0x50, 0x39, 0x2b, 0x6c, 0xd6, 
-  0x21, 0x24, 0x90, 0xfe, 0x78, 0xf5, 0x25, 0x91, 0x4a, 0x47, 0xe9, 
-  0xcc, 0x5d, 0xfe, 0xf3, 0x15, 0xb4, 0x89, 0x0c, 0x4a, 0xe3, 0x38, 
-  0x08, 0xc5, 0xd9, 0x63, 0xe6, 0xcd, 0x6f, 0xcc, 0xe3, 0x7b, 0xaf, 
-  0x72, 0x25, 0xb8, 0x32, 0x9d, 0xd0, 0xbb, 0x01, 0x00, 0x02, 0x9c, 
-  0x2c, 0x0d, 0x01, 0x6e, 0x54, 0x36, 0xc6, 0x2f, 0x25, 0xdb, 0x74, 
-  0x08, 0x04, 0x66, 0x12, 0x72, 0x05, 0x73, 0x4a, 0x76, 0x15, 0xf4, 
-  0xbe, 0xf1, 0xab, 0x98, 0x7a, 0x47, 0x28, 0xdd, 0xcc, 0xd5, 0x96, 
-  0xc9, 0x1c, 0x9b, 0x77, 0x89, 0xe8, 0xec, 0x3c, 0x7f, 0x88, 0xb0, 
-  0x84, 0x9c, 0x72, 0x0b, 0x71, 0xfe, 0xac, 0xe1, 0x0e, 0x0d, 0x8a, 
-  0x12, 0xd8, 0xe2, 0x89, 0xf9, 0x09, 0xd4, 0x54, 0x87, 0xe1, 0xee, 
-  0x40, 0x2a, 0xc2, 0x17, 0x8e, 0xb9, 0xac, 0xb0, 0xde, 0xcd, 0xec, 
-  0x93, 0x15, 0x40, 0x48, 0xd5, 0xa6, 0x80, 0x97, 0x57, 0x56, 0x54, 
-  0x21, 0xf7, 0x25, 0xd3, 0xbf, 0xcb, 0x20, 0xf1, 0x73, 0xe8, 0x8c, 
-  0x11, 0xc1, 0x63, 0x15, 0x06, 0x37, 0xb9, 0xd8, 0x36, 0x42, 0xd9, 
-  0x0a, 0x29, 0x3c, 0x31, 0x46, 0x92, 0xac, 0x84, 0xa9, 0x83, 0x1c, 
-  0x3e, 0xe8, 0xc9, 0x7b, 0x5c, 0xe0, 0x8c, 0x1f, 0x7c, 0x77, 0xd6, 
-  0x1a, 0x3a, 0x7f, 0x03, 0x44, 0x79, 0xc1, 0x05, 0xe2, 0x94, 0x42, 
-  0x3c, 0xe7, 0xcd, 0x55, 0x84, 0xce, 0x9e, 0xeb, 0x34, 0xc8, 0x77, 
-  0x85, 0xd8, 0x00, 0xff, 0x24, 0x03, 0xf3, 0xa9, 0xc6, 0x3d, 0x81, 
-  0xee, 0x85, 0xac, 0x2d, 0xc1, 0xbb, 0xbd, 0x67, 0xaa, 0xa7, 0x68, 
-  0x90, 0x76, 0x59, 0xb5, 0x17, 0x1f, 0x8e, 0x0d, 0x70, 0x99, 0x69, 
-  0xa5, 0xa2, 0xe3, 0x61, 0x1a, 0x49, 0x29, 0x21, 0x0d, 0xed, 0xb1, 
-  0xdb, 0x06, 0xb8, 0x65, 0xf0, 0xdf, 0x73, 0x2d, 0x35, 0xea, 0x3c, 
-  0x2d, 0x30, 0xbc, 0x24, 0xa1, 0x55, 0x78, 0x84, 0xc8, 0x44, 0xa4, 
-  0x93, 0x3d, 0x68, 0x61, 0x0a, 0xd3, 0x5a, 0x0f, 0x17, 0x9c, 0x0a, 
-  0x64, 0x0e, 0x54, 0xd1, 0x01, 0x6e, 0x0b, 0x1d, 0xf2, 0x12, 0x5d, 
-  0xef, 0x11, 0x75, 0x0b, 0x87, 0xd2, 0xa9, 0x20, 0xf3, 0xa7, 0x93, 
-  0x8b, 0xdc, 0x52, 0x16, 0x7b, 0x46, 0x9d, 0x01, 0x1d, 0xe3, 0x3c, 
-  0xb1, 0x5b, 0xb3, 0x71, 0xf1, 0xa8, 0xa3, 0xbd, 0xfa, 0x82, 0x65, 
-  0xbc, 0x17, 0xc8, 0x50, 0xff, 0xe3, 0xf7, 0x2e, 0x29, 0x44, 0x64, 
-  0x43, 0xca, 0x2e, 0x7f, 0x2f, 0xd6, 0x86, 0xcb, 0x92, 0xba, 0xa7, 
-  0xf7, 0xcf, 0x89, 0x54, 0x71, 0xf9, 0x82, 0xa4, 0x24, 0x73, 0xf2, 
-  0x59, 0xa8, 0x0d, 0x89, 0x52, 0xbd, 0xaf, 0xce, 0x2e, 0xee, 0x73, 
-  0x0d, 0x3c, 0xee, 0xfd, 0x90, 0x8e, 0xd8, 0x94, 0x13, 0xcd, 0xc3, 
-  0x6e, 0x80, 0x6b, 0x70, 0xc1, 0x7f, 0x64, 0x35, 0x54, 0xea, 0xd7, 
-  0x64, 0x29, 0xcd, 0x2d, 0xef, 0x9d, 0xb0, 0x16, 0x90, 0x28, 0xa1, 
-  0xfe, 0xd6, 0xbc, 0xb5, 0x73, 0xa3, 0xcc, 0xa2, 0x5d, 0xc7, 0x55, 
-  0x24, 0xc7, 0xeb, 0x2f, 0xb7, 0x5c, 0x24, 0xbd, 0xab, 0x2f, 0x12, 
-  0x53, 0xa5, 0xd9, 0xa3, 0x6d, 0x25, 0x80, 0x39, 0x15, 0x26, 0x05, 
-  0xc5, 0x21, 0xec, 0x86, 0xa6, 0xe3, 0xed, 0x3f, 0x5a, 0xea, 0xad, 
-  0x2e, 0xe2, 0x2f, 0x3d, 0x9e, 0x99, 0x03, 0x18, 0xdb, 0x10, 0x39, 
-  0xc7, 0xcf, 0x60, 0xb1, 0x63, 0x94, 0xb5, 0xa2, 0x4e, 0x49, 0x74, 
-  0x0c, 0x2b, 0x0d, 0x64, 0x75, 0x38, 0x2c, 0xc9, 0x9e, 0x68, 0x33, 
-  0x94, 0xcf, 0x48, 0x35, 0x65, 0x3f, 0x42, 0x70, 0xee, 0x87, 0x3c, 
-  0xce, 0xe5, 0xe0, 0xa1, 0xe0, 0xfe, 0xb7, 0xd8, 0x7c, 0xcc, 0xde, 
-  0x43, 0x70, 0x33, 0x25, 0xa7, 0x7f, 0xca, 0xab, 0x2a, 0x5d, 0x73, 
-  0x67, 0x36, 0x69, 0x49, 0xa0, 0x86, 0xee, 0x9f, 0xf3, 0x04, 0x63, 
-  0x14, 0xa5, 0xcc, 0x31, 0x5e, 0x23, 0x8b, 0x99, 0x97, 0xac, 0x34, 
-  0x22, 0x58, 0x2d, 0xc8, 0x60, 0x42, 0x85, 0x77, 0x7d, 0x95, 0xe7, 
-  0xed, 0xed, 0x84, 0x30, 0x67, 0x38, 0xe5, 0xcd, 0xa9, 0xeb, 0x8b, 
-  0xee, 0x1a, 0xf4, 0x4f, 0x09, 0xc4, 0x93, 0xe7, 0xca, 0xe4, 0x50, 
-  0xd9, 0x9a, 0x75, 0x62, 0xcd, 0x6a, 0xa2, 0x06, 0xf5, 0x66, 0xab, 
-  0xdf, 0xae, 0xe9, 0x78, 0x6d, 0xd7, 0x08, 0xd8, 0x97, 0xa8, 0xee, 
-  0x46, 0xd9, 0x0a, 0x2d, 0xe2, 0x8f, 0x2a, 0x89, 0xbc, 0x09, 0xa7, 
-  0xeb, 0x4d, 0x60, 0xcd, 0x09, 0x3e, 0xe4, 0x6b, 0x90, 0x6b, 0xd6, 
-  0x66, 0x89, 0xc0, 0x46, 0x15, 0x4c, 0x2d, 0x69, 0xab, 0x81, 0xa8, 
-  0xee, 0xad, 0xdf, 0xeb, 0xec, 0x28, 0xa1, 0xcf, 0xd1, 0xe0, 0xa5, 
-  0x9e, 0x78, 0x89, 0x65, 0xbe, 0x6d, 0x8d, 0xa6, 0x34, 0x48, 0x41, 
-  0x3e, 0x84, 0x9f, 0xf8, 0x47, 0x7f, 0xe8, 0x68, 0x26, 0x28, 0x1f, 
-  0xc8, 0x16, 0xe1, 0x96, 0x35, 0x78, 0x3f, 0xd9, 0x43, 0xc2, 0x33, 
-  0xb3, 0xc8, 0x3f, 0x3e, 0x9f, 0xdf, 0x04, 0x7f, 0x9c, 0x4a, 0xe6, 
-  0xdb, 0xd6, 0x10, 0xbc, 0x34, 0x4e, 0xc8, 0x41, 0xcf, 0x2d, 0x70, 
-  0xe3, 0x09, 0xa0, 0x4a, 0xe0, 0x82, 0xef, 0xf0, 0x6d, 0xff, 0x5d, 
-  0x0b, 0x90, 0x59, 0x26, 0xca, 0x13, 0xd3, 0xa0, 0x34, 0x3a, 0x73, 
-  0x71, 0x7a, 0x4e, 0x47, 0xfa, 0x3e, 0x58, 0xd2, 0xb8, 0xc6, 0x1a, 
-  0x0b, 0x85, 0x1a, 0xac, 0x43, 0xf3, 0x06, 0x13, 0x3b, 0x92, 0x6b, 
-  0xf9, 0x55, 0x94, 0x0d, 0x51, 0x7a, 0x38, 0xdf, 0xa4, 0x3d, 0xb0, 
-  0x0b, 0x76, 0x09, 0xf8, 0x63, 0xa0, 0xc7, 0xe3, 0x50, 0x63, 0x2d, 
-  0x05, 0x79, 0x36, 0xa3, 0x90, 0x68, 0x9a, 0x99, 0xb8, 0x13, 0xd1, 
-  0x45, 0x3d, 0x98, 0x6e, 0x24, 0x26, 0x4b, 0x47, 0xd3, 0xb2, 0x37, 
-  0x98, 0xc2, 0xdf, 0x09, 0xe7, 0xc4, 0x9f, 0x2a, 0xab, 0x39, 0xab, 
-  0xa4, 0x6d, 0x40, 0xc1, 0x3f, 0x5c, 0xa0, 0x41, 0x92, 0x64, 0xf1, 
-  0x6a, 0xd6, 0x8d, 0xab, 0x44, 0xbf, 0xec, 0xac, 0x38, 0xc6, 0x4f, 
-  0x9a, 0x56, 0x7e, 0xe3, 0x69, 0xe5, 0xce, 0xe2, 0x43, 0x99, 0xdc, 
-  0xe2, 0x38, 0xa6, 0xbf, 0x51, 0x98, 0x39, 0x32, 0xf1, 0xb4, 0x48, 
-  0xa6, 0x4f, 0x75, 0xc0, 0xfd, 0x39, 0x84, 0xa5, 0x5d, 0x9a, 0xeb, 
-  0xb4, 0x9b, 0xe5, 0x9c, 0x6f, 0x40, 0x8d, 0x09, 0xfd, 0xba, 0x0a, 
-  0xfb, 0xbf, 0xd2, 0x62, 0x0b, 0x87, 0xc3, 0x55, 0xa8, 0xa6, 0xe1, 
-  0xbc, 0x97, 0x4a, 0x7a, 0x31, 0xdf, 0xff, 0x57, 0xdc, 0x16, 0xd1, 
-  0x7d, 0xd4, 0xd2, 0xc7, 0xeb, 0xfd, 0x0d, 0x3a, 0x30, 0x7b, 0x64, 
-  0xd0, 0x9f, 0xda, 0xba, 0xf3, 0x4a, 0x95, 0x6f, 0xf7, 0x63, 0x15, 
-  0x0f, 0x15, 0x26, 0x9b, 0x77, 0xcc, 0xa4, 0x10, 0x16, 0xb6, 0x95, 
-  0x66, 0x67, 0x76, 0x92, 0xbf, 0xa7, 0x7d, 0x25, 0x03, 0x0f, 0x0d, 
-  0x6a, 0x64, 0x68, 0xf4, 0xcf, 0x49, 0x2e, 0x67, 0x4b, 0x22, 0x37, 
-  0xe6, 0xb9, 0x0b, 0xb1, 0xb4, 0xcb, 0x10, 0x2a, 0x29, 0xe0, 0x06, 
-  0x8e, 0x68, 0x84, 0x25, 0xe8, 0x5b, 0x19, 0x1d, 0x1c, 0x83, 0x3b, 
-  0xe0, 0xd0, 0x14, 0x5f, 0xc1, 0x80, 0x3b, 0x22, 0x3f, 0x6d, 0xbb, 
-  0x34, 0x5b, 0xfc, 0x23, 0x19, 0x68, 0x4b, 0x6c, 0xc0, 0xea, 0xd5, 
-  0xe7, 0xd1, 0xf8, 0x2f, 0x0f, 0x68, 0x21, 0x01, 0x91, 0x94, 0xf2, 
-  0x75, 0x2c, 0x0f, 0x80, 0x0e, 0x0c, 0x98, 0x88, 0x46, 0x2c, 0x73, 
-  0x54, 0x18, 0xa1, 0x4d, 0x40, 0x85, 0xd1, 0x74, 0x18, 0x48, 0x16, 
-  0x62, 0xee, 0xfb, 0xf2, 0x74, 0x54, 0x8f, 0xd9, 0x31, 0x92, 0x0a, 
-  0x41, 0xd2, 0x26, 0xed, 0x78, 0x9f, 0xac, 0xbd, 0x12, 0xd2, 0xf9, 
-  0x28, 0x90, 0x46, 0xc0, 0xab, 0x8d, 0x94, 0x9d, 0x37, 0x73, 0x9a, 
-  0xc3, 0xb5, 0xa6, 0xe0, 0x7c, 0x17, 0xbb, 0x68, 0xa8, 0xe3, 0x69, 
-  0x30, 0x04, 0x02, 0xe5, 0xdb, 0x75, 0xb1, 0xa9, 0x4a, 0xbf, 0xed, 
-  0x56, 0xb0, 0x43, 0x76, 0xf2, 0x2b, 0x8c, 0x39, 0x99, 0xc2, 0x2a, 
-  0xd6, 0xb7, 0x48, 0xd0, 0x05, 0x36, 0xa4, 0x44, 0x97, 0x70, 0xfb, 
-  0x6c, 0x7a, 0x21, 0xd6, 0xf9, 0x79, 0x40, 0x93, 0xe0, 0x87, 0x7f, 
-  0x1a, 0xcb, 0xbb, 0x8d, 0x5e, 0x01, 0x8e, 0x4b, 0x5b, 0x8e, 0x45, 
-  0xe3, 0xf7, 0xf5, 0x32, 0x55, 0xb4, 0x80, 0x58, 0x9a, 0x1d, 0x3f, 
-  0x40, 0x8c, 0x90, 0x5f, 0xd4, 0xfa, 0x50, 0xac, 0xca, 0xe8, 0x2c, 
-  0x0f, 0xc6, 0x45, 0x70, 0xa4, 0x8b, 0x56, 0x55, 0xd9, 0xbb, 0xdb, 
-  0xae, 0x44, 0x9d, 0xda, 0xea, 0xc5, 0xbf, 0x7c, 0x88, 0xa0, 0x24, 
-  0xd4, 0x2d, 0xf8, 0x9c, 0x45, 0x86, 0x75, 0xa2, 0x4e, 0x58, 0x65, 
-  0x84, 0x0a, 0x14, 0xab, 0x61, 0xb7, 0x24, 0x6e, 0x9a, 0x6c, 0xb6, 
-  0x3e, 0xab, 0x19, 0xe5, 0x1b, 0x9b, 0xe3, 0x10, 0x02, 0x11, 0x14, 
-  0x87, 0x96, 0x47, 0x0c, 0xbd, 0xd7, 0x45, 0xbd, 0x04, 0xa1, 0xb5, 
-  0x7f, 0x0a, 0xe6, 0x50, 0x10, 0x72, 0xe3, 0x32, 0xe8, 0xad, 0x8f, 
-  0x3c, 0x93, 0x6f, 0x0a, 0x73, 0x66, 0xc9, 0xb1, 0xb3, 0xa6, 0xde, 
-  0xef, 0x09, 0x78, 0x33, 0x99, 0x4b, 0x18, 0xcc, 0x2c, 0xea, 0xd1, 
-  0x5e, 0x02, 0xa8, 0xc2, 0x18, 0x90, 0xa1, 0x37, 0x15, 0xb7, 0xb5, 
-  0xcc, 0x25, 0xc6, 0x62, 0x42, 0x48, 0x75, 0xc7, 0x92, 0x89, 0xa2, 
-  0x2e, 0xa9, 0x53, 0xae, 0xa7, 0x68, 0x11, 0x24, 0xcd, 0xe7, 0x0e, 
-  0xfb, 0x20, 0x81, 0x86, 0x84, 0xe7, 0x98, 0x6e, 0x6a, 0x06, 0xcf, 
-  0x67, 0xb7, 0x01, 0x5b, 0xea, 0xb3, 0x6e, 0x0e, 0x5d, 0x67, 0x7b, 
-  0x65, 0x9e, 0x9a, 0x9f, 0x4d, 0x27, 0xbc, 0xcd, 0x23, 0xed, 0x0d, 
-  0x78, 0x29, 0x18, 0xab, 0xfb, 0x45, 0x12, 0xac, 0x44, 0xd1, 0xfc, 
-  0xa7, 0x7a, 0xac, 0x3a, 0xe5, 0x1c, 0xef, 0xd4, 0xca, 0xb9, 0x81, 
-  0xdd, 0x51, 0xa9, 0x4f, 0x24, 0x26, 0x2b, 0xff, 0x41, 0xc8, 0xdd, 
-  0x8f, 0x43, 0xd7, 0xec, 0x17, 0x48, 0xfc, 0x6d, 0x85, 0x9b, 0xd2, 
-  0x33, 0xa7, 0x03, 0xa5, 0xf3, 0xe4, 0x4c, 0x2a, 0xbc, 0x84, 0x97, 
-  0x81, 0xcc, 0x24, 0x52, 0x8c, 0x79, 0xf5, 0x40, 0xf0, 0x98, 0xad, 
-  0x3e, 0x2d, 0xca, 0xff, 0x1c, 0xce, 0x4c, 0x00, 0xc3, 0x14, 0xd9, 
-  0xf1, 0x19, 0x1b, 0xae, 0xe9, 0x7c, 0xb7, 0x80, 0xe2, 0x7b, 0x8c, 
-  0x4b, 0x6e, 0x8b, 0x4f, 0x05, 0xf7, 0xb0, 0x63, 0x2f, 0x83, 0x13, 
-  0xb5, 0x60, 0x5f, 0xae, 0xc1, 0xa0, 0xa6, 0x99, 0x0d, 0xfc, 0x60, 
-  0xd2, 0x19, 0xe5, 0xe6, 0xa2, 0x08, 0x98, 0xeb, 0x5e, 0x6b, 0x11, 
-  0xe3, 0x23, 0x32, 0x5b, 0x9c, 0x8f, 0xb8, 0x09, 0x63, 0x5f, 0x26, 
-  0xf1, 0xb8, 0x1d, 0xc5, 0xf7, 0xc7, 0x92, 0x61, 0x53, 0xfd, 0xb4, 
-  0x6d, 0xbb, 0x2c, 0x0d, 0x5e, 0x08, 0xe2, 0x76, 0xe2, 0x22, 0x68, 
-  0xd7, 0xf0, 0xcd, 0xa4, 0x63, 0x33, 0xf7, 0x2b, 0xf6, 0x35, 0x8a, 
-  0xac, 0x5a, 0x02, 0x33, 0x06, 0x75, 0x28, 0x14, 0x5b, 0x46, 0x27, 
-  0x2f, 0x06, 0x74, 0xb1, 0x1f, 0x2d, 0x5f, 0x1e, 0xf5, 0xe0, 0xd0, 
-  0x6f, 0xb2, 0x77, 0xcb, 0x77, 0x77, 0x58, 0x64, 0xb3, 0x42, 0x14, 
-  0xba, 0x04, 0x95, 0x50, 0x79, 0x1d, 0xb5, 0x99, 0x1d, 0x55, 0xeb, 
-  0xfa, 0x55, 0x29, 0xb4, 0xf4, 0xd7, 0x1a, 0xed, 0xb6, 0x5c, 0x5d, 
-  0x4b, 0x5c, 0xe8, 0x89, 0xd7, 0x61, 0x78, 0xca, 0x6e, 0x1d, 0x9a, 
-  0xd1, 0x62, 0x06, 0x2e, 0x3e, 0xaf, 0xc1, 0x45, 0x50, 0x6d, 0xb2, 
-  0x4b, 0x2c, 0xd5, 0x18, 0xad, 0xe1, 0xf8, 0xa8, 0xd0, 0xe4, 0x14, 
-  0xb9, 0x49, 0x99, 0xca, 0x1b, 0x61, 0x80, 0xf2, 0x1c, 0xd4, 0xfd, 
-  0xbd, 0x09, 0xeb, 0x15, 0x9e, 0x8c, 0x24, 0xf3, 0x00, 0x85, 0x9d, 
-  0x62, 0x6d, 0x85, 0xea, 0xca, 0xf6, 0x41, 0x65, 0xf1, 0x55, 0x26, 
-  0x9e, 0x93, 0x25, 0x8f, 0xfe, 0x3c, 0xfb, 0x16, 0x79, 0xf0, 0x10, 
-  0x2f, 0x17, 0x01, 0xcb, 0x23, 0x65, 0xac, 0x4d, 0x51, 0xe0, 0x10, 
-  0x64, 0x43, 0xba, 0x08, 0x32, 0x55, 0x45, 0x1b, 0xb7, 0x20, 0xbc, 
-  0xd9, 0x24, 0x36, 0x16, 0x5c, 0xcf, 0x09, 0x3c, 0x33, 0xe0, 0x43, 
-  0xb6, 0xd2, 0x15, 0x5b, 0xe8, 0x5d, 0x91, 0x34, 0x07, 0xb2, 0x25, 
-  0x51, 0x7c, 0x70, 0x0a, 0x89, 0x79, 0xe6, 0x9a, 0x16, 0xb7, 0xad, 
-  0x09, 0x1a, 0x06, 0x14, 0x7b, 0xcd, 0xe4, 0x3a, 0x09, 0x76, 0xd3, 
-  0x32, 0x92, 0x47, 0x87, 0xd9, 0x1c, 0xd5, 0x0d, 0x1f, 0xc4, 0xbd, 
-  0xcc, 0xe7, 0x56, 0xc3, 0xad, 0x86, 0x5f, 0x36, 0xbc, 0x94, 0x3f, 
-  0x23, 0xb3, 0xcf, 0xb2, 0xc7, 0xcf, 0xef, 0xeb, 0x5b, 0x14, 0xa5, 
-  0xe4, 0xd0, 0xb7, 0xe8, 0xbd, 0x1f, 0x74, 0x32, 0x28, 0x55, 0xb8, 
-  0xdd, 0x39, 0xc4, 0xc9, 0x12, 0x57, 0xa1, 0xa6, 0xa0, 0x9d, 0xde, 
-  0x12, 0x1a, 0x58, 0x0d, 0xc8, 0x31, 0xe3, 0xa7, 0x0f, 0x02, 0xec, 
-  0x6d, 0x05, 0xa8, 0x3b, 0xf4, 0x77, 0x31, 0xe3, 0xf8, 0x1e, 0x12, 
-  0xd4, 0xb6, 0xa6, 0x2f, 0x52, 0xed, 0x97, 0xbf, 0xb7, 0xfa, 0x06, 
-  0x99, 0x94, 0x9d, 0x9f, 0x63, 0xad, 0x0b, 0xc2, 0x2d, 0xe2, 0x03, 
-  0xc4, 0x77, 0xf9, 0x8e, 0x89, 0x9b, 0x23, 0x2c, 0x8c, 0x81, 0x73, 
-  0x54, 0xdb, 0x05, 0x71, 0x5c, 0x05, 0x87, 0x70, 0x7a, 0x25, 0x8a, 
-  0xbe, 0x6a, 0x1c, 0x2a, 0xd0, 0xfe, 0x5e, 0xec, 0x0a, 0x3f, 0x01, 
-  0x09, 0xcd, 0xcc, 0x9b, 0x60, 0xba, 0xa2, 0xc0, 0x4f, 0xb7, 0x9b, 
-  0xdb, 0x23, 0xc6, 0xeb, 0x1a, 0xed, 0x17, 0x49, 0x6b, 0x8b, 0x39, 
-  0x37, 0x60, 0xaa, 0x69, 0x53, 0x52, 0x3c, 0x29, 0x89, 0x37, 0x23, 
-  0xbe, 0x8f, 0xde, 0x61, 0x28, 0xd4, 0x0b, 0x7c, 0xb5, 0xab, 0x27, 
-  0xa7, 0x7e, 0xe4, 0x5f, 0x11, 0xe1, 0x1e, 0x0a, 0x62, 0x61, 0x28, 
-  0x51, 0x56, 0x42, 0xa1, 0x7f, 0xb2, 0xa5, 0x85, 0xa8, 0x0a, 0xc2, 
-  0xc5, 0xf6, 0x8b, 0x07, 0x3d, 0xf2, 0x91, 0xa7, 0xaa, 0x0b, 0x59, 
-  0x46, 0xa6, 0xd6, 0xab, 0x43, 0x89, 0x06, 0x69, 0xac, 0x37, 0x6f, 
-  0xef, 0x0f, 0xbd, 0x27, 0xdc, 0x15, 0xdb, 0xd9, 0x34, 0xba, 0x4e, 
-  0x74, 0x73, 0xb8, 0xab, 0x45, 0xd4, 0x18, 0x97, 0x4f, 0x49, 0xe3, 
-  0x49, 0xfe, 0xcd, 0xde, 0xd7, 0x07, 0x1f, 0x0e, 0x51, 0x8b, 0x63, 
-  0x31, 0xf9, 0x29, 0x2e, 0x82, 0xe0, 0x3c, 0xc2, 0xa8, 0xbd, 0x5e, 
-  0x2b, 0xfc, 0x2a, 0x61, 0x8e, 0x07, 0x69, 0xd1, 0x2c, 0x60, 0xda, 
-  0x97, 0xd3, 0x20, 0x90, 0x91, 0xd8, 0x3a, 0xae, 0x4f, 0xc2, 0xd4, 
-  0x43, 0xb9, 0x66, 0x42, 0xf0, 0x0b, 0x8a, 0x99, 0x55, 0xd6, 0x35, 
-  0xd7, 0x15, 0xcc, 0x4d, 0x46, 0xee, 0x45, 0x1d, 0xf9, 0x81, 0xff, 
-  0x01, 0xc7, 0x82, 0x0b, 0x35, 0x85, 0x09, 0xb1, 0x80, 0x94, 0xde, 
-  0x2b, 0xc1, 0x27, 0x68, 0xaf, 0x50, 0x80, 0xbb, 0xe7, 0xf7, 0x75, 
-  0xf6, 0xa3, 0xf2, 0x69, 0x9a, 0xfe, 0x8f, 0x89, 0xb0, 0x5b, 0x1e, 
-  0x9e, 0x76, 0x0a, 0x3d, 0xfc, 0x8c, 0xe7, 0x96, 0x33, 0x46, 0xec, 
-  0xc1, 0x28, 0xfd, 0xcd, 0x83, 0xbf, 0x34, 0xfd, 0x6f, 0x4b, 0x7e, 
-  0xf1, 0x44, 0x40, 0x67, 0xeb, 0xdc, 0x79, 0xbc, 0x05, 0xe8, 0x10, 
-  0xb3, 0xeb, 0xa8, 0xfc, 0x34, 0x9b, 0x3e, 0xe1, 0x88, 0x1c, 0xf5, 
-  0xbe, 0x3d, 0xfa, 0x1c, 0x99, 0xd8, 0x12, 0xd0, 0x02, 0x61, 0xb4, 
-  0x0d, 0x83, 0x74, 0x1f, 0x0d, 0xa9, 0x96, 0x2c, 0x4e, 0x54, 0xed, 
-  0xf0, 0x63, 0xd3, 0xfb, 0x97, 0xb7, 0x4d, 0xef, 0x35, 0x57, 0x8b, 
-  0x79, 0x32, 0xd1, 0x94, 0xe1, 0xe6, 0x90, 0x9a, 0xea, 0x23, 0x32, 
-  0x5b, 0xa9, 0xfc, 0xe1, 0x78, 0x66, 0x07, 0x42, 0x05, 0x4a, 0x8f, 
-  0x06, 0x56, 0x6d, 0x39, 0xd7, 0xd5, 0xa2, 0x76, 0x31, 0xd1, 0xe5, 
-  0x03, 0x57, 0xe0, 0x6e, 0x04, 0x8b, 0x46, 0x65, 0x43, 0x0b, 0xa1, 
-  0x7b, 0x3f, 0x45, 0x4a, 0x1a, 0x21, 0xee, 0x86, 0x6b, 0x96, 0x99, 
-  0x78, 0x31, 0xbb, 0xc2, 0x2a, 0x0b, 0xb7, 0x43, 0xd4, 0x6f, 0x93, 
-  0xba, 0xb6, 0x09, 0x17, 0x2c, 0x5f, 0xfd, 0xc1, 0xd5, 0xc4, 0xf3, 
-  0xb8, 0x4f, 0xf6, 0xa2, 0xac, 0x1f, 0x54, 0x15, 0xab, 0x29, 0x58, 
-  0xd1, 0x56, 0x80, 0x34, 0xa4, 0xcd, 0x09, 0xb8, 0x79, 0x72, 0xc2, 
-  0x8b, 0x29, 0x05, 0xd4, 0xc3, 0x4b, 0x00, 0x50, 0xbe, 0xc3, 0x64, 
-  0xa7, 0xad, 0xe4, 0xb3, 0x56, 0x67, 0x06, 0xad, 0x1d, 0x5f, 0xf2, 
-  0xa8, 0x22, 0x99, 0xc4, 0x00, 0xdc, 0x0e, 0x74, 0xea, 0x89, 0x84, 
-  0x95, 0x5e, 0x14, 0x0a, 0x78, 0x03, 0x63, 0xf6, 0x32, 0xde, 0x70, 
-  0x4d, 0x66, 0x7c, 0xae, 0x9b, 0x1d, 0x5a, 0x20, 0xd1, 0x26, 0xa8, 
-  0x01, 0x63, 0x73, 0x9e, 0x88, 0x14, 0x92, 0x35, 0x9b, 0x10, 0x82, 
-  0xdb, 0x4b, 0x01, 0xe8, 0xe9, 0x7a, 0x54, 0xb0, 0xc5, 0x9e, 0xd9, 
-  0x1b, 0xc2, 0xa9, 0x42, 0x8b, 0x70, 0xb7, 0x2a, 0xed, 0x3a, 0x79, 
-  0x49, 0xdf, 0x11, 0x57, 0x0c, 0x07, 0x6a, 0xe4, 0x3a, 0x14, 0xf3, 
-  0x83, 0xfc, 0x46, 0x9c, 0xd2, 0x77, 0xff, 0xf6, 0xca, 0x45, 0xcc, 
-  0xec, 0x88, 0xce, 0x9d, 0x05, 0xbc, 0x66, 0x1b, 0x28, 0x7a, 0x5a, 
-  0x18, 0x69, 0x25, 0x97, 0x11, 0x63, 0xb3, 0x54, 0x7d, 0x75, 0xcc, 
-  0xc0, 0xfc, 0xf3, 0xfc, 0xf0, 0x0f, 0x47, 0xdc, 0x88, 0x38, 0x31, 
-  0x89, 0x44, 0xef, 0x9b, 0x1b, 0x1a, 0x46, 0x67, 0xa5, 0xa2, 0x16, 
-  0x96, 0x61, 0x49, 0x37, 0x91, 0xda, 0x3f, 0x71, 0xcb, 0x07, 0x68, 
-  0xd3, 0x2c, 0x47, 0x8c, 0xfa, 0xe6, 0xb9, 0x99, 0x72, 0x09, 0xb1, 
-  0xe6, 0xd8, 0xe2, 0xf6, 0xb7, 0xd5, 0xe0, 0x4d, 0xf4, 0x0c, 0xc1, 
-  0x0d, 0xdc, 0x35, 0xc2, 0xfa, 0x57, 0xee, 0x7c, 0x83, 0x21, 0x3d, 
-  0xf1, 0xcc, 0x90, 0xce, 0x71, 0xaa, 0x9e, 0x8c, 0x2e, 0xdf, 0x8c, 
-  0x43, 0x41, 0x3d, 0x4f, 0x09, 0xe3, 0x33, 0xde, 0x69, 0x55, 0x56, 
-  0x7d, 0x41, 0x26, 0x01, 0x1b, 0x84, 0xb3, 0x16, 0xf0, 0x7a, 0xfc, 
-  0xd2, 0xc8, 0x13, 0xbf, 0xac, 0x9c, 0x6f, 0xf3, 0x7c, 0xbe, 0xf9, 
-  0x67, 0x38, 0xb7, 0x60, 0xf3, 0x07, 0xf7, 0x4e, 0x23, 0x1e, 0xfc, 
-  0xbd, 0xd4, 0x32, 0x73, 0xf4, 0xd2, 0x9b, 0x20, 0x11, 0x97, 0x72, 
-  0xec, 0xe2, 0xe1, 0x88, 0xef, 0xbe, 0x12, 0xee, 0x59, 0x99, 0x56, 
-  0x12, 0xcd, 0xcf, 0xea, 0xaa, 0x2a, 0x7a, 0x6d, 0xac, 0x2f, 0x06, 
-  0xa1, 0x7d, 0x6c, 0x64, 0x8d, 0x5c, 0xa9, 0x63, 0x80, 0x17, 0x54, 
-  0x12, 0x2e, 0xb9, 0x14, 0x97, 0xb5, 0x96, 0xf4, 0xf8, 0x8b, 0xad, 
-  0x10, 0x31, 0xbc, 0xa6, 0x26, 0xc8, 0x82, 0x44, 0x80, 0xb0, 0xc6, 
-  0x43, 0x7d, 0x1a, 0xed, 0xd6, 0x8f, 0xbe, 0x29, 0x02, 0x4d, 0x61, 
-  0x1b, 0xe3, 0xec, 0x09, 0xc2, 0xa0, 0x41, 0x1d, 0x74, 0x60, 0x28, 
-  0xaa, 0x24, 0xfc, 0xc2, 0x8a, 0xa9, 0x79, 0xa2, 0xb6, 0x1e, 0x16, 
-  0x6a, 0x62, 0x98, 0xea, 0x1d, 0x61, 0x4c, 0x79, 0xe2, 0xf6, 0xe4, 
-  0x50, 0xb1, 0x21, 0xfa, 0xac, 0x68, 0x84, 0x58, 0x34, 0x62, 0x34, 
-  0xc0, 0xad, 0x45, 0x6c, 0xd9, 0x21, 0xbc, 0x95, 0x54, 0xf1, 0xf7, 
-  0xbe, 0x7e, 0x32, 0xcc, 0x7a, 0x00, 0xd4, 0x86, 0xeb, 0x1a, 0x97, 
-  0x9c, 0x04, 0x9a, 0x47, 0x77, 0xa7, 0xf2, 0x11, 0xfd, 0x0f, 0xd9, 
-  0xb8, 0x60, 0x03, 0xb3, 0x77, 0xa3, 0x76, 0xd8, 0xf7, 0x09, 0xd9, 
-  0x29, 0x19, 0xbf, 0x29, 0x64, 0x56, 0x7d, 0xfa, 0x45, 0x13, 0x74, 
-  0xc5, 0x56, 0x2b, 0x4d, 0xf5, 0xae, 0x83, 0xb7, 0xdc, 0x57, 0xb0, 
-  0xdb, 0x6d, 0xd2, 0xb6, 0x1c, 0xf3, 0xc9, 0x67, 0x31, 0x9f, 0x9e, 
-  0xa1, 0x9f, 0xbd, 0xe0, 0x58, 0x10, 0x61, 0x7d, 0xb0, 0x60, 0xdd, 
-  0x8a, 0x20, 0xdf, 0x72, 0x5b, 0xdb, 0x22, 0xf8, 0x8c, 0xe7, 0x29, 
-  0x6e, 0x94, 0xfd, 0xc1, 0x59, 0x2a, 0x70, 0xf7, 0x85, 0x1a, 0x4f, 
-  0xd8, 0x4b, 0x10, 0x80, 0xd3, 0x72, 0xfd, 0xc0, 0x1d, 0xb6, 0x52, 
-  0x5f, 0xf4, 0x02, 0x87, 0x2d, 0x36, 0x80, 0xe1, 0xf5, 0xad, 0xac, 
-  0xd1, 0x4d, 0xfa, 0x33, 0xad, 0xe4, 0x40, 0xc7, 0x4d, 0xb6, 0x3e, 
-  0xfe, 0xec, 0xef, 0xd0, 0x21, 0xe1, 0xe7, 0x98, 0x26, 0x09, 0x9b, 
-  0x25, 0x10, 0x96, 0x92, 0x1c, 0x19, 0xfe, 0x11, 0xd8, 0xda, 0xb6, 
-  0x12, 0x95, 0x6d, 0x3e, 0x0c, 0xa2, 0x8c, 0xa4, 0x66, 0x2e, 0x57, 
-  0x2a, 0xe4, 0x90, 0x02, 0xd4, 0x3e, 0x0b, 0x8c, 0xfe, 0x7e, 0x86, 
-  0x9a, 0x59, 0xe7, 0x67, 0x50, 0xcb, 0xe9, 0x76, 0x48, 0x0a, 0x3c, 
-  0xd0, 0x54, 0xe0, 0xa7, 0x54, 0xa0, 0x95, 0x26, 0x3b, 0xdc, 0x5f, 
-  0x7c, 0x54, 0x77, 0xc5, 0x34, 0x71, 0x2c, 0xbb, 0x85, 0x05, 0x5f, 
-  0xb3, 0x27, 0xca, 0xd7, 0x7a, 0x9f, 0xc6, 0xbf, 0xc8, 0x73, 0x1a, 
-  0x3f, 0x7a, 0x66, 0xfb, 0x96, 0x4c, 0x82, 0xfb, 0x0d, 0x77, 0x7c, 
-  0x6d, 0x59, 0x33, 0x72, 0x0e, 0x45, 0x73, 0x26, 0x88, 0x32, 0xc2, 
-  0xfa, 0x26, 0xfc, 0x2e, 0xb2, 0x3f, 0x23, 0x79, 0xaf, 0xd1, 0xcb, 
-  0x7e, 0x1a, 0x81, 0x75, 0xf2, 0xbc, 0x62, 0x29, 0x35, 0x9b, 0xe1, 
-  0x7a, 0x68, 0x81, 0xd0, 0xd7, 0xc6, 0x41, 0x33, 0x2c, 0xfc, 0xda, 
-  0x03, 0xf6, 0xcd, 0x79, 0x85, 0x63, 0x13, 0xd9, 0x03, 0x92, 0x34, 
-  0x3f, 0xba, 0x52, 0x86, 0x68, 0x70, 0x58, 0xc7, 0xe2, 0xda, 0xc5, 
-  0xc8, 0x0e, 0x15, 0x8f, 0x57, 0xae, 0x2b, 0x5c, 0x2d, 0xf3, 0x33, 
-  0x72, 0x9a, 0x13, 0xc3, 0x8d, 0x38, 0xbc, 0xf9, 0xe2, 0xfc, 0x02, 
-  0xad, 0xb9, 0x3d, 0x31, 0xc1, 0x44, 0x84, 0xa3, 0x27, 0x79, 0x3a, 
-  0x95, 0x2e, 0x9a, 0x0f, 0x49, 0xa3, 0x6f, 0xe8, 0xab, 0x3d, 0xe7, 
-  0xd2, 0xbe, 0x93, 0xd1, 0x09, 0x51, 0x7c, 0x68, 0x30, 0x25, 0xda, 
-  0xcd, 0xb0, 0x5a, 0x17, 0xaf, 0x4a, 0x67, 0x26, 0x75, 0x48, 0xd4, 
-  0x78, 0xc1, 0x2e, 0xcf, 0x8b, 0xbb, 0xb8, 0x96, 0x18, 0xa9, 0xd0, 
-  0x88, 0xf8, 0x21, 0xf5, 0xa9, 0x69, 0x6e, 0x5f, 0x73, 0x43, 0x40, 
-  0xfa, 0xf9, 0x9e, 0x11, 0x08, 0x88, 0x57, 0xda, 0xc8, 0x3d, 0xdf, 
-  0x7a, 0x34, 0xed, 0xa6, 0x5f, 0x3b, 0x34, 0x01, 0x36, 0xa6, 0xb2, 
-  0x51, 0xfe, 0xd2, 0x49, 0x6b, 0xb8, 0xe4, 0x3f, 0x82, 0x74, 0xb3, 
-  0x60, 0x23, 0xdc, 0xd2, 0xb6, 0x4e, 0x23, 0x46, 0x3a, 0x33, 0x33, 
-  0x3f, 0x14, 0xe8, 0x35, 0x87, 0x31, 0xed, 0xe0, 0xbd, 0x16, 0xf4, 
-  0xe1, 0x7d, 0x43, 0xdc, 0xf7, 0xd2, 0x5c, 0x6f, 0xbd, 0x38, 0xd4, 
-  0x3c, 0xdf, 0xea, 0x65, 0xc4, 0x3e, 0xaf, 0xff, 0xb2, 0x44, 0xec, 
-  0x19, 0xae, 0x34, 0x53, 0xbb, 0xec, 0xb9, 0x18, 0x92, 0xab, 0x87, 
-  0x64, 0x45, 0x60, 0x24, 0x20, 0x62, 0xe4, 0x20, 0xa9, 0x88, 0xdf, 
-  0xf1, 0xfe, 0x23, 0xc8, 0x6e, 0x8a, 0x84, 0x8f, 0xa8, 0x68, 0xfe, 
-  0x01, 0x10, 0x36, 0x52, 0x17, 0xf3, 0x91, 0x23, 0xa2, 0x2e, 0xc4, 
-  0x84, 0x73, 0x47, 0x82, 0xcf, 0x45, 0xbf, 0xf8, 0xa0, 0x79, 0xef, 
-  0xf1, 0xee, 0x67, 0xd1, 0x9f, 0x58, 0x13, 0x24, 0x3a, 0x65, 0x40, 
-  0x97, 0x76, 0xf1, 0xa8, 0xf7, 0x05, 0xe0, 0x04, 0xba, 0xc0, 0xd5, 
-  0x4a, 0xb4, 0xb6, 0xd2, 0x0e, 0x34, 0x89, 0xee, 0x26, 0x1c, 0x92, 
-  0x10, 0xd2, 0x19, 0xbf, 0x51, 0xb1, 0xa6, 0xe2, 0xc0, 0x35, 0xe8, 
-  0x58, 0xe0, 0x60, 0x61, 0x34, 0xa0, 0x5b, 0x96, 0x67, 0x2c, 0x59, 
-  0xb8, 0xfc, 0x78, 0x2d, 0x05, 0xd4, 0x48, 0x10, 0xf8, 0x8d, 0xbe, 
-  0x0f, 0xb6, 0xea, 0xf6, 0xa3, 0x9d, 0x2b, 0x1e, 0x7f, 0x99, 0x60, 
-  0x3a, 0x48, 0x86, 0x21, 0x3e, 0xc7, 0x82, 0xab, 0x55, 0xf4, 0xec, 
-  0x87, 0x7c, 0x2b, 0xe3, 0x8e, 0x0f, 0xcb, 0x8b, 0xeb, 0x57, 0x83, 
-  0x9a, 0x38, 0x2e, 0x4c, 0xe1, 0xde, 0x68, 0x3b, 0x36, 0xf2, 0x40, 
-  0xed, 0x29, 0x45, 0xe9, 0x9c, 0x47, 0x28, 0xa3, 0x17, 0x3a, 0xc7, 
-  0x99, 0x94, 0x2c, 0xf1, 0x17, 0x6f, 0x88, 0xcb, 0xd2, 0x99, 0xa6, 
-  0xc2, 0x09, 0x1e, 0x9d, 0x20, 0x85, 0xec, 0xf4, 0x93, 0x00, 0xfe, 
-  0x5e, 0xb0, 0x63, 0x2c, 0x6a, 0xb3, 0x01, 0xbd, 0x58, 0x3c, 0x72, 
-  0xbc, 0x42, 0x05, 0xc2, 0xe8, 0x1a, 0xef, 0xbd, 0x02, 0xc5, 0xa3, 
-  0xc5, 0x24, 0x8c, 0xd6, 0xec, 0xb8, 0x6a, 0xb9, 0x05, 0xd4, 0x16, 
-  0x29, 0xe0, 0xe2, 0x8b, 0x11, 0x71, 0xeb, 0x10, 0x8a, 0x4d, 0x2d, 
-  0x18, 0x0c, 0xaf, 0xe4, 0x3a, 0xd2, 0x17, 0xc2, 0x60, 0x6a, 0xa7, 
-  0x7f, 0x3e, 0xb6, 0x4c, 0x61, 0xab, 0xaf, 0x38, 0x2b, 0x7a, 0xdd, 
-  0xeb, 0x9f, 0x2c, 0xd9, 0x45, 0x2c, 0xf8, 0x9b, 0x0d, 0x27, 0xe5, 
-  0x30, 0xec, 0xb8, 0xa7, 0x3d, 0x8c, 0x30, 0xe1, 0xb0, 0x3b, 0x7a, 
-  0xcc, 0xa2, 0xe2, 0x46, 0x16, 0x02, 0xeb, 0x1d, 0x93, 0xa9, 0xc0, 
-  0x76, 0x2c, 0x84, 0xe2, 0x89, 0x51, 0x9b, 0x58, 0x91, 0x3b, 0xd7, 
-  0x15, 0x8d, 0x84, 0x6a, 0x73, 0x8f, 0x93, 0xa1, 0x2a, 0x28, 0x84, 
-  0x9d, 0xc8, 0xc5, 0x34, 0x9d, 0xf9, 0x24, 0x93, 0x5b, 0xdc, 0xb7, 
-  0xc7, 0x33, 0x9b, 0x51, 0xd6, 0x6f, 0x99, 0xe0, 0x58, 0x7d, 0xc1, 
-  0x9e, 0x07, 0x47, 0x8f, 0x61, 0x26, 0xce, 0x76, 0xbb, 0x1b, 0xf7, 
-  0x9e, 0x01, 0x00, 0x08, 0x12, 0x51, 0xab, 0x56, 0xee, 0x61, 0xb6, 
-  0xfd, 0x83, 0x48, 0xe7, 0xd0, 0x19, 0xa3, 0x59, 0x98, 0x73, 0x19, 
-  0x46, 0xeb, 0x25, 0xed, 0xb0, 0x55, 0x93, 0x20, 0x4a, 0x59, 0x37, 
-  0xcb, 0xa0, 0x93, 0x91, 0x34, 0x87, 0xe1, 0xa0, 0x88, 0x62, 0x64, 
-  0x48, 0x5d, 0x5b, 0x28, 0x6f, 0xca, 0x54, 0x4a, 0xd5, 0xf8, 0x1a, 
-  0x58, 0x83, 0xec, 0x9a, 0x1c, 0x61, 0xf8, 0xbb, 0x6c, 0x2b, 0x48, 
-  0xa9, 0x3f, 0xa4, 0xe2, 0xb5, 0xa5, 0x7f, 0x52, 0x13, 0x9b, 0x4d, 
-  0xda, 0xb9, 0x21, 0xf8, 0xd7, 0xe4, 0x08, 0x78, 0x54, 0xcb, 0x47, 
-  0x13, 0x26, 0x79, 0xfb, 0x3f, 0xc0, 0xe5, 0xf4, 0x0d, 0xb7, 0x78, 
-  0x07, 0xe3, 0xb2, 0x7d, 0x4e, 0x97, 0x00, 0x6c, 0x29, 0x29, 0xec, 
-  0x80, 0x35, 0x66, 0x24, 0x78, 0xbc, 0xbd, 0x89, 0x24, 0xd2, 0x23, 
-  0xbe, 0x52, 0x7b, 0x5e, 0x76, 0xab, 0x75, 0xe9, 0xf3, 0xe1, 0xb3, 
-  0x28, 0xb9, 0xf9, 0xee, 0xd2, 0x7d, 0x41, 0x3a, 0x97, 0xb6, 0x28, 
-  0x02, 0x09, 0x1b, 0x0e, 0x39, 0x28, 0xad, 0x6c, 0xb4, 0xa5, 0x26, 
-  0xb4, 0xe2, 0xa2, 0xe8, 0x4b, 0x57, 0x1c, 0xd8, 0x58, 0x51, 0x64, 
-  0x5c, 0xe9, 0x9c, 0xb2, 0xdc, 0x82, 0x31, 0x9a, 0xe4, 0x5f, 0x91, 
-  0x3b, 0x46, 0x99, 0x43, 0x47, 0x09, 0x83, 0xa1, 0xdf, 0x2a, 0x5e, 
-  0x88, 0x75, 0x01, 0x52, 0x8a, 0x7d, 0x77, 0x41, 0x61, 0xc9, 0xf9, 
-  0xff, 0xf7, 0x1d, 0xd8, 0x5d, 0x3d, 0x09, 0x6c, 0x4b, 0xf0, 0x4e, 
-  0x4f, 0x5e, 0xf6, 0x18, 0xdb, 0xe6, 0x3d, 0x6f, 0x6f, 0xee, 0xb6, 
-  0x06, 0x9e, 0x27, 0x88, 0xaa, 0xb7, 0xa0, 0x38, 0x7b, 0x8a, 0xdb, 
-  0xb2, 0xaa, 0x7f, 0x79, 0x2e, 0x87, 0x63, 0x0f, 0x83, 0x2f, 0x5c, 
-  0xfd, 0x43, 0xcd, 0x9e, 0xad, 0xba, 0x09, 0xaa, 0xcb, 0xdb, 0x54, 
-  0xc8, 0xd2, 0xcd, 0x1a, 0xd8, 0x7f, 0x79, 0x55, 0xf4, 0x79, 0x77, 
-  0xff, 0xd2, 0x9a, 0xcc, 0x8c, 0xee, 0x62, 0x86, 0xee, 0xae, 0xd9, 
-  0xe9, 0xbf, 0x0c, 0x0f, 0xf0, 0x25, 0xc9, 0x03, 0x98, 0x3f, 0x9e, 
-  0xf8, 0x19, 0xec, 0xa3, 0xef, 0x80, 0x34, 0xcd, 0xec, 0xdd, 0x40, 
-  0xfa, 0xe4, 0x09, 0x64, 0x6b, 0x59, 0x17, 0xde, 0xe4, 0x30, 0x41, 
-  0x4f, 0x39, 0x3b, 0xf2, 0x1c, 0xdf, 0x39, 0x1d, 0x9e, 0xe4, 0x2e, 
-  0xac, 0xd7, 0xcb, 0x3d, 0x8d, 0x88, 0xd4, 0xe9, 0xd9, 0xef, 0xc6, 
-  0x6e, 0xfe, 0x7f, 0x7b, 0x5c, 0x4e, 0xe9, 0x9b, 0x37, 0x92, 0x89, 
-  0x92, 0x69, 0xfa, 0xe5, 0xbe, 0xb2, 0xd9, 0x22, 0x9d, 0x4b, 0x5c, 
-  0xd8, 0xe0, 0x37, 0x1e, 0x1e, 0x75, 0x6b, 0xb0, 0xad, 0x71, 0x94, 
-  0x6f, 0x3d, 0x2b, 0x1e, 0x68, 0xf3, 0xaf, 0x9b, 0xb4, 0x6a, 0x4f, 
-  0xd0, 0xf1, 0x7b, 0x01, 0xc6, 0x7d, 0x10, 0xac, 0x46, 0x5e, 0x9b, 
-  0x49, 0x23, 0x01, 0x8d, 0x04, 0x9d, 0xed, 0xb0, 0xb0, 0x2e, 0x39, 
-  0xc2, 0x7c, 0x01, 0x0b, 0xeb, 0x73, 0x3d, 0x5f, 0x67, 0x62, 0x6a, 
-  0x5a, 0x11, 0x93, 0x8b, 0x2d, 0xc5, 0x94, 0x22, 0x42, 0x2f, 0x20, 
-  0xf9, 0xa7, 0x4b, 0x72, 0xaa, 0xaa, 0xd7, 0x2c, 0x93, 0x37, 0x45, 
-  0x91, 0x2c, 0xfb, 0x37, 0x6b, 0x30, 0x45, 0x12, 0x3e, 0xe4, 0xcf, 
-  0xc2, 0xcf, 0x48, 0xdb, 0xcd, 0x4d, 0x10, 0x5a, 0xb0, 0xcf, 0xe6, 
-  0x4b, 0xdc, 0x02, 0x2a, 0xbe, 0x67, 0x8a, 0x7f, 0x2e, 0x8b, 0xa8, 
-  0xcd, 0xc0, 0x90, 0xb4, 0x7e, 0xf1, 0xcf, 0xbf, 0x23, 0x06, 0xb2, 
-  0x8e, 0x45, 0x92, 0x08, 0xb3, 0x1e, 0x53, 0x5e, 0xfa, 0x98, 0x29, 
-  0x5e, 0x89, 0x79, 0x01, 0x37, 0x25, 0x26, 0x9d, 0x2e, 0x0f, 0x9f, 
-  0xe0, 0x54, 0xc6, 0x1c, 0x0a, 0xd4, 0x3d, 0x6f, 0x0c, 0x5b, 0xb1, 
-  0x78, 0xaf, 0x76, 0x0a, 0xbd, 0x63, 0x62, 0xa1, 0xc2, 0xb4, 0x2b, 
-  0xa2, 0x77, 0xcb, 0xe1, 0xbc, 0x5d, 0xcf, 0x39, 0xd8, 0xe6, 0xbb, 
-  0x07, 0x2b, 0x81, 0x49, 0xb3, 0x4c, 0x1a, 0x02, 0x46, 0x12, 0x56, 
-  0x67, 0x21, 0x89, 0x60, 0xac, 0x1b, 0xe5, 0xed, 0x43, 0x8a, 0x28, 
-  0xa4, 0xbd, 0xd0, 0x15, 0x54, 0x4f, 0xf3, 0x00, 0x65, 0xad, 0x95, 
-  0xc5, 0x02, 0x5f, 0x1c, 0x8e, 0xbd, 0x04, 0x28, 0x45, 0xae, 0xa6, 
-  0x4f, 0x31, 0x44, 0xa2, 0x98, 0x01, 0x91, 0x09, 0xe6, 0x8e, 0x45, 
-  0x5f, 0xf1, 0xbf, 0x9e, 0x69, 0x7a, 0x5b, 0x01, 0x42, 0xfa, 0xe0, 
-  0x3a, 0xc0, 0x8a, 0x95, 0x8f, 0xde, 0x3b, 0x5d, 0x1a, 0xb2, 0x5f, 
-  0xbe, 0xeb, 0xff, 0xc4, 0x2a, 0x48, 0xba, 0x40, 0xa8, 0xc0, 0xdb, 
-  0x4e, 0xc4, 0x41, 0x25, 0x6f, 0x76, 0x3d, 0x88, 0x9e, 0x5b, 0x3d, 
-  0xf5, 0xea, 0xeb, 0x8a, 0x9d, 0xfa, 0xca, 0x42, 0x7f, 0x30, 0xf8, 
-  0x01, 0x32, 0x32, 0x42, 0x6d, 0x10, 0xdb, 0xf4, 0xa5, 0x17, 0xfa, 
-  0xd0, 0x24, 0x6b, 0x75, 0xeb, 0x23, 0xcb, 0x35, 0xf8, 0xb9, 0xdf, 
-  0xda, 0x68, 0xad, 0xd4, 0xe2, 0x82, 0x6a, 0xb9, 0xab, 0x1d, 0x03, 
-  0x6a, 0xb5, 0xfb, 0xf9, 0x24, 0xa8, 0x1a, 0x97, 0xf8, 0xc4, 0x07, 
-  0xe1, 0xa3, 0xe0, 0x5b, 0xa9, 0xd7, 0xde, 0x41, 0xaf, 0x1e, 0xf4, 
-  0x44, 0x14, 0x2c, 0x77, 0x57, 0x8b, 0xe7, 0x96, 0x03, 0x91, 0x8c, 
-  0x60, 0x32, 0x85, 0x38, 0x6e, 0x04, 0x32, 0x1c, 0xea, 0xef, 0x4b, 
-  0x14, 0x7e, 0xc0, 0x4d, 0xec, 0x80, 0x71, 0x07, 0xa8, 0xf9, 0x13, 
-  0x5d, 0x3a, 0x9d, 0x1e, 0x41, 0x7e, 0xd1, 0xde, 0x4b, 0x7b, 0xeb, 
-  0xec, 0x7c, 0x31, 0x0e, 0xbc, 0x77, 0x7a, 0x86, 0x97, 0x28, 0x0e, 
-  0x97, 0x13, 0x84, 0xb2, 0x6c, 0x80, 0xa8, 0xc6, 0xfe, 0x7e, 0x3f, 
-  0x34, 0xd5, 0x1f, 0xfb, 0x9e, 0xd5, 0x03, 0x5a, 0x8c, 0x57, 0x54, 
-  0xf2, 0x06, 0x13, 0xa8, 0xb4, 0x18, 0x6a, 0x9d, 0xa9, 0x60, 0xaa, 
-  0x03, 0x5c, 0x29, 0xa7, 0x46, 0x03, 0xab, 0xaa, 0x73, 0xae, 0xee, 
-  0x1b, 0x68, 0x51, 0x22, 0xae, 0xdd, 0x3f, 0xd3, 0xf4, 0x80, 0x0c, 
-  0xe1, 0x29, 0x55, 0x51, 0xcf, 0x56, 0x6e, 0x56, 0x0b, 0xcd, 0x33, 
-  0x48, 0x75, 0x77, 0xc9, 0xf1, 0x96, 0xea, 0xf1, 0xaa, 0xcc, 0x02, 
-  0x7b, 0xa2, 0xc5, 0xd6, 0x98, 0x4d, 0x87, 0xdc, 0x55, 0x81, 0x8d, 
-  0xc7, 0xda, 0xda, 0xdc, 0x5b, 0x29, 0xf6, 0x46, 0x93, 0x1c, 0x66, 
-  0x18, 0x83, 0x63, 0x79, 0x24, 0xec, 0xcd, 0x86, 0x7a, 0xb7, 0x41, 
-  0xf3, 0xc6, 0xe2, 0xb4, 0xe8, 0xf7, 0xff, 0x68, 0x97, 0xef, 0xbb, 
-  0xba, 0xc7, 0x0b, 0xff, 0xec, 0xf1, 0x87, 0x62, 0xeb, 0x23, 0x1d, 
-  0x9a, 0x20, 0x5c, 0xf2, 0x7c, 0xd7, 0x5a, 0xf2, 0xee, 0xf2, 0xf4, 
-  0x8e, 0xd0, 0x44, 0xfe, 0xcb, 0x41, 0x38, 0x03, 0xcc, 0x5e, 0x13, 
-  0x5d, 0x83, 0x89, 0xb5, 0xc5, 0xc4, 0xe5, 0xce, 0x0d, 0x30, 0x27, 
-  0x30, 0xbb, 0x64, 0x76, 0x7f, 0x99, 0x15, 0x8e, 0x38, 0x49, 0x4b, 
-  0x06, 0x6d, 0x36, 0xf7, 0xc2, 0x66, 0x2c, 0x53, 0xc0, 0x66, 0x29, 
-  0xe5, 0x56, 0x6a, 0x4f, 0x21, 0xbe, 0xee, 0xbe, 0xb5, 0x45, 0x0b, 
-  0xd0, 0xaf, 0x52, 0x8a, 0xc4, 0x3d, 0x78, 0x36, 0x9e, 0x88, 0x6a, 
-  0x87, 0x69, 0x96, 0xe0, 0xa6, 0xbf, 0xca, 0xd4, 0xda, 0x41, 0x0e, 
-  0x69, 0xc5, 0x42, 0x67, 0xb0, 0x7f, 0x34, 0xf5, 0xe2, 0x0f, 0xcf, 
-  0x42, 0x2d, 0x55, 0x1d, 0xbc, 0xcc, 0x32, 0xf8, 0x50, 0x44, 0xef, 
-  0x14, 0x4c, 0x7e, 0x99, 0x5d, 0xb5, 0x38, 0x4f, 0x5c, 0x19, 0xe4, 
-  0x70, 0x0e, 0xa5, 0x28, 0x8c, 0x8b, 0xba, 0x8a, 0x32, 0x58, 0x58, 
-  0x32, 0xb5, 0xe9, 0x2e, 0xff, 0xf6, 0xfd, 0x18, 0xbc, 0x53, 0xa9, 
-  0xe9, 0x21, 0x2d, 0x1b, 0x35, 0x2a, 0x48, 0x83, 0x1c, 0x42, 0x28, 
-  0x8b, 0x6c, 0x51, 0xa5, 0xa8, 0x9c, 0x6d, 0xec, 0xec, 0x2b, 0xd8, 
-  0xd7, 0x89, 0x64, 0x42, 0xb9, 0x89, 0xf2, 0x32, 0xf8, 0x02, 0xf1, 
-  0x0c, 0x01, 0x95, 0x70, 0x0a, 0x12, 0xac, 0x67, 0x2d, 0x58, 0x96, 
-  0xeb, 0x2e, 0x14, 0x35, 0xe2, 0xfa, 0xd8, 0xa2, 0x70, 0x50, 0xc5, 
-  0x89, 0x5b, 0x2d, 0x18, 0x05, 0x79, 0x15, 0x58, 0x46, 0x67, 0xda, 
-  0x24, 0xe8, 0xd3, 0xfb, 0xa2, 0x66, 0xf6, 0x8e, 0x81, 0xc3, 0x58, 
-  0xdc, 0x77, 0xb3, 0xe3, 0xbb, 0xe7, 0x33, 0xe7, 0x8b, 0xf9, 0x84, 
-  0x7c, 0x64, 0x1d, 0x89, 0x93, 0x21, 0x78, 0xfe, 0x52, 0x99, 0x02, 
-  0x36, 0x1c, 0xe4, 0x7f, 0x96, 0x43, 0xb7, 0xbb, 0x8c, 0x15, 0xfb, 
-  0xb0, 0x19, 0xd8, 0x85, 0xcb, 0x64, 0x5b, 0x94, 0xfb, 0xd6, 0x9c, 
-  0x74, 0x83, 0x96, 0x2a, 0xc1, 0x99, 0xf2, 0x2e, 0x80, 0xf8, 0xdf, 
-  0x35, 0xb9, 0xaa, 0x7b, 0x7a, 0x66, 0x69, 0xe0, 0xa0, 0xdf, 0x9e, 
-  0x05, 0x90, 0xa9, 0xc1, 0x40, 0x5b, 0x2b, 0x62, 0xda, 0x76, 0xa1, 
-  0x70, 0x4e, 0xa3, 0x69, 0xb1, 0xd2, 0x69, 0x36, 0x02, 0x4a, 0xbd, 
-  0xab, 0xf0, 0x9c, 0x3e, 0x00, 0x48, 0x03, 0xe2, 0x20, 0x73, 0x51, 
-  0xd0, 0x1b, 0xe5, 0x70, 0x57, 0x22, 0x82, 0xf2, 0x44, 0x0e, 0x47, 
-  0x67, 0x27, 0xb5, 0x8a, 0xc5, 0xc7, 0x21, 0xf7, 0x8a, 0x77, 0xbb, 
-  0x04, 0xdd, 0x6d, 0x17, 0xba, 0xf4, 0xed, 0xb6, 0x26, 0x66, 0xf5, 
-  0x63, 0xb3, 0x8d, 0x3f, 0xec, 0x27, 0x27, 0x39, 0x5b, 0xed, 0x9b, 
-  0x53, 0x31, 0xb5, 0x0a, 0x2f, 0xf6, 0xb8, 0xe4, 0x69, 0xe0, 0x8d, 
-  0x33, 0xbd, 0x8a, 0xad, 0x3f, 0xcf, 0x76, 0x09, 0x4d, 0xe3, 0xa9, 
-  0x0d, 0x79, 0xe0, 0x97, 0x89, 0xed, 0xb1, 0x0e, 0x0a, 0x14, 0xb3, 
-  0x7c, 0x4a, 0xe3, 0x67, 0x27, 0xac, 0xc0, 0x77, 0xc8, 0x0e, 0xf3, 
-  0xe7, 0xec, 0xe0, 0x83, 0x16, 0x60, 0x31, 0x1d, 0x9d, 0xfa, 0x95, 
-  0x5d, 0x4b, 0xaf, 0x6d, 0x43, 0xf3, 0xe4, 0x6b, 0xb7, 0xe4, 0xa4, 
-  0x34, 0x5d, 0x51, 0xf2, 0xb4, 0x49, 0x83, 0x90, 0x7a, 0x02, 0xbd, 
-  0x1b, 0x37, 0xa0, 0xd7, 0xcb, 0x6e, 0x5b, 0xc5, 0x5f, 0x67, 0xe4, 
-  0xdc, 0x50, 0x47, 0x89, 0x20, 0x43, 0x28, 0x33, 0x05, 0x48, 0xa6, 
-  0x42, 0xc8, 0x7d, 0xc4, 0x46, 0xc7, 0x75, 0x6e, 0x64, 0x0a, 0xf7, 
-  0xb2, 0xd1, 0xfc, 0xdf, 0x76, 0x8a, 0x64, 0x3c, 0x7b, 0x6c, 0x80, 
-  0x15, 0x51, 0xae, 0x7e, 0x42, 0xa2, 0x6d, 0x18, 0x30, 0x3b, 0x0c, 
-  0x85, 0xa9, 0xc6, 0x45, 0xd1, 0xfb, 0x12, 0x04, 0x4a, 0xa3, 0x96, 
-  0x41, 0x75, 0xb6, 0xe8, 0x42, 0x12, 0x1e, 0x37, 0x85, 0x1b, 0x92, 
-  0xb7, 0x48, 0x7c, 0x1d, 0x09, 0xfc, 0x30, 0x85, 0xb4, 0xb3, 0x46, 
-  0x35, 0xd0, 0x28, 0x79, 0x2d, 0x20, 0xb6, 0x9b, 0x9a, 0xe0, 0x97, 
-  0xd6, 0x8b, 0xc5, 0xf5, 0xd1, 0x6c, 0xfc, 0x85, 0xfc, 0xf0, 0xcb, 
-  0x8c, 0xf1, 0x6b, 0xd3, 0xf2, 0x12, 0x79, 0x82, 0x44, 0xb3, 0xdc, 
-  0x99, 0x62, 0x98, 0xad, 0xa3, 0x72, 0xc9, 0xf9, 0x04, 0xf9, 0x16, 
-  0xa5, 0xef, 0x8d, 0x33, 0x65, 0x03, 0x49, 0x9d, 0x1d, 0xe6, 0x2c, 
-  0x8f, 0xaf, 0xc3, 0x65, 0xf4, 0x11, 0x94, 0x46, 0x8a, 0x53, 0xa6, 
-  0xf4, 0x62, 0x6e, 0x30, 0xd6, 0xc0, 0xd7, 0xb2, 0xfe, 0xd4, 0x55, 
-  0x85, 0x06, 0x7f, 0x92, 0x85, 0x5b, 0xfe, 0xd3, 0x4f, 0x57, 0x39, 
-  0x7b, 0x0b, 0xfb, 0x6c, 0x30, 0x4a, 0x67, 0xed, 0x0c, 0xd4, 0x43, 
-  0xa3, 0x4d, 0xb5, 0x21, 0x76, 0x50, 0x3c, 0xd4, 0x01, 0x89, 0x29, 
-  0xe4, 0x1a, 0x08, 0x92, 0x7c, 0x03, 0x53, 0x72, 0x9c, 0x68, 0xc7, 
-  0x61, 0x77, 0xc1, 0x6c, 0x84, 0x03, 0x87, 0xc5, 0xf3, 0x0f, 0x20, 
-  0xc1, 0x7e, 0xf8, 0x74, 0x78, 0xdd, 0xb7, 0xc6, 0x62, 0x8b, 0xcb, 
-  0xfb, 0x56, 0x34, 0xfd, 0x7a, 0xae, 0xbb, 0x67, 0x8a, 0x99, 0xe1, 
-  0x0d, 0x68, 0x9f, 0xdd, 0xa5, 0xbc, 0x42, 0x40, 0xb7, 0x85, 0xd2, 
-  0x74, 0x87, 0xdc, 0x8a, 0x61, 0x1f, 0xeb, 0x52, 0x28, 0x6a, 0xe9, 
-  0x37, 0xd5, 0x77, 0x7d, 0x78, 0xca, 0xee, 0x4d, 0x2c, 0x9b, 0x1c, 
-  0x37, 0xeb, 0x17, 0x03, 0x5c, 0x1d, 0x76, 0x3d, 0xc3, 0xf0, 0x2c, 
-  0x49, 0x54, 0x28, 0x3d, 0x63, 0x24, 0x02, 0x10, 0x1b, 0x60, 0xb3, 
-  0xe0, 0x7a, 0x29, 0x7c, 0x66, 0x79, 0x6b, 0xc7, 0x15, 0xb1, 0x8a, 
-  0xd3, 0x13, 0x20, 0x35, 0xb3, 0xa8, 0x3e, 0x73, 0x4b, 0xf1, 0x17, 
-  0xc6, 0x6e, 0x11, 0x77, 0xa4, 0x21, 0xbc, 0x1f, 0x10, 0xb1, 0xfb, 
-  0xb1, 0x04, 0xf8, 0xb5, 0x57, 0x73, 0x05, 0xb1, 0xca, 0xde, 0x4e, 
-  0xa2, 0x6c, 0x7e, 0x9a, 0x80, 0x86, 0x32, 0x17, 0x56, 0x94, 0xc9, 
-  0xf9, 0x8a, 0xaf, 0x7d, 0xce, 0xee, 0x3e, 0xac, 0x7b, 0xd5, 0xea, 
-  0x9e, 0xa7, 0x3a, 0x3c, 0x23, 0x95, 0x53, 0x95, 0x89, 0x4a, 0x19, 
-  0xea, 0x70, 0x63, 0xe6, 0x82, 0x95, 0xd3, 0xa4, 0x1a, 0xcc, 0x2b, 
-  0xdd, 0x88, 0x73, 0x93, 0x8e, 0x7d, 0x56, 0x04, 0xde, 0xd8, 0x21, 
-  0xae, 0x4c, 0x13, 0x4c, 0x01, 0x09, 0xef, 0xd9, 0x71, 0xef, 0x45, 
-  0xf2, 0x37, 0x37, 0xf1, 0x94, 0x82, 0x68, 0xd7, 0xda, 0xea, 0x47, 
-  0x7b, 0x1f, 0x1b, 0x70, 0xfa, 0x31, 0x13, 0x7c, 0xe9, 0x19, 0xa7, 
-  0x6c, 0x6b, 0x23, 0xb1, 0x58, 0x1f, 0xd8, 0x8d, 0xe9, 0xd1, 0xea, 
-  0x4e, 0x05, 0x4b, 0x4b, 0xab, 0xb0, 0x08, 0x53, 0x43, 0x2e, 0x54, 
-  0x82, 0x82, 0x05, 0xd9, 0x72, 0xfb, 0xd2, 0xf3, 0x3f, 0x84, 0x79, 
-  0x10, 0x3f, 0x75, 0x16, 0x09, 0x7f, 0x9e, 0xfa, 0x29, 0x5f, 0x56, 
-  0xcb, 0x13, 0xc5, 0x67, 0xdd, 0xe7, 0x24, 0x39, 0x15, 0x89, 0xc0, 
-  0x10, 0xa8, 0xba, 0xa7, 0xc7, 0x36, 0x6e, 0xff, 0x3b, 0x20, 0xb5, 
-  0x36, 0x95, 0x6a, 0x40, 0x69, 0x88, 0x84, 0x43, 0xc5, 0xd9, 0x37, 
-  0x85, 0x7e, 0xcf, 0x66, 0xaf, 0xf2, 0x7d, 0xe5, 0xaa, 0xf0, 0xd2, 
-  0x0e, 0x15, 0x1d, 0xd1, 0x13, 0xb3, 0xed, 0x89, 0x1a, 0xe6, 0x0f, 
-  0xbb, 0x62, 0x29, 0x78, 0x59, 0xde, 0x46, 0xfe, 0x85, 0x7a, 0x5f, 
-  0x74, 0xaf, 0x1b, 0x9a, 0x74, 0xc3, 0x27, 0xef, 0x50, 0x9a, 0x66, 
-  0x94, 0xe9, 0x1a, 0xb5, 0xcd, 0xf1, 0xcf, 0x5c, 0x4e, 0xa2, 0x1f, 
-  0x35, 0x93, 0xb0, 0xc1, 0x1e, 0xba, 0x66, 0x33, 0x0d, 0x0d, 0x45, 
-  0xd6, 0xb2, 0x3d, 0x86, 0x0b, 0xcf, 0x67, 0x2f, 0x8c, 0x11, 0xba, 
-  0x8f, 0xa2, 0xad, 0x86, 0x42, 0x28, 0x73, 0xb7, 0xfd, 0xf1, 0xea, 
-  0x50, 0xa4, 0x6f, 0xbe, 0x91, 0x21, 0xb4, 0x52, 0x90, 0x75, 0xc5, 
-  0xd7, 0x64, 0x04, 0x5b, 0x45, 0x46, 0xd9, 0xd1, 0x48, 0xd5, 0xcb, 
-  0x37, 0x20, 0x71, 0x10, 0x83, 0xc5, 0x8b, 0xcd, 0x53, 0xfa, 0x70, 
-  0xe3, 0xb3, 0x23, 0xd4, 0x1d, 0xdb, 0x5f, 0x7c, 0x84, 0xe2, 0xe1, 
-  0x0a, 0xf2, 0x8d, 0x80, 0x77, 0xe3, 0xa0, 0x82, 0xb7, 0xee, 0xda, 
-  0x90, 0x21, 0xc7, 0x55, 0x6c, 0x60, 0xa0, 0xe7, 0x58, 0x07, 0x4a, 
-  0x2d, 0x3c, 0x98, 0xe2, 0xca, 0x0d, 0x13, 0x1e, 0x9f, 0xa8, 0xe6, 
-  0x77, 0x04, 0x1e, 0xb9, 0x17, 0x42, 0x32, 0xb9, 0x7c, 0x44, 0xf4, 
-  0xb4, 0xd6, 0x83, 0xfd, 0x91, 0xac, 0x9e, 0x1a, 0x2d, 0x26, 0xb8, 
-  0x7c, 0xd3, 0xef, 0xf9, 0xea, 0xb0, 0xbc, 0x95, 0x0b, 0x1e, 0xf4, 
-  0x57, 0x2a, 0x83, 0xe0, 0x48, 0x24, 0x2d, 0xb3, 0xeb, 0xb4, 0xde, 
-  0xe1, 0x8e, 0x73, 0xc9, 0x5a, 0xf0, 0x6a, 0x71, 0x33, 0xeb, 0xde, 
-  0x3b, 0xce, 0x42, 0x64, 0x96, 0x25, 0xd9, 0xe3, 0x48, 0x65, 0xf3, 
-  0xee, 0x00, 0x54, 0xb0, 0x0a, 0x1b, 0x5d, 0xca, 0x6c, 0x77, 0xc9, 
-  0xb0, 0x9b, 0xf8, 0xcb, 0x1f, 0xf3, 0xae, 0x3c, 0xd3, 0x8a, 0x37, 
-  0x8f, 0xb1, 0xc3, 0x2f, 0x28, 0x02, 0x99, 0xf2, 0x2b, 0xa8, 0xd6, 
-  0x56, 0x6a, 0xa4, 0x69, 0xfa, 0xac, 0x70, 0x80, 0xb5, 0xc0, 0x2a, 
-  0x1b, 0xbd, 0x87, 0x24, 0x5b, 0xcc, 0x96, 0xbe, 0x03, 0x82, 0xd2, 
-  0x1e, 0x78, 0xde, 0xc3, 0xa4, 0x18, 0x94, 0xfd, 0x2f, 0xc6, 0xb8, 
-  0x6a, 0x23, 0xbb, 0x0c, 0xbe, 0xe6, 0xd9, 0xe0, 0xdc, 0xbb, 0x01, 
-  0x8e, 0x1d, 0x04, 0xfa, 0x66, 0x88, 0xc7, 0x66, 0x90, 0xa2, 0xc9, 
-  0x8d, 0x1e, 0x83, 0x7c, 0xa7, 0xeb, 0xce, 0x48, 0xcf, 0x23, 0x74, 
-  0x1c, 0xb0, 0x1a, 0xe2, 0xba, 0x10, 0x4c, 0xd0, 0x01, 0xd3, 0xb5, 
-  0x11, 0x73, 0x61, 0xd9, 0x28, 0xff, 0xdf, 0xa3, 0x1a, 0x8d, 0xae, 
-  0x03, 0xd6, 0x24, 0x47, 0xe2, 0x5f, 0x5f, 0xab, 0x6c, 0x36, 0xbd, 
-  0x7e, 0xac, 0x60, 0xe1, 0x5d, 0x95, 0x5e, 0x25, 0x15, 0x2e, 0xf6, 
-  0xc4, 0x69, 0x8a, 0x6d, 0x70, 0xeb, 0x06, 0x64, 0x51, 0xdf, 0x0d, 
-  0xbd, 0xcc, 0x4a, 0xc4, 0x85, 0xc7, 0xaf, 0x6c, 0xb1, 0x54, 0x78, 
-  0xe3, 0xad, 0x20, 0xb0, 0xec, 0x29, 0x56, 0x7d, 0x6d, 0x6f, 0xc1, 
-  0x50, 0x8a, 0xd1, 0xb0, 0x67, 0x5a, 0xff, 0x86, 0x0e, 0x05, 0xc7, 
-  0x2f, 0xee, 0x31, 0xee, 0xd0, 0x3f, 0x2e, 0x6c, 0x83, 0xe4, 0x19, 
-  0x40, 0x40, 0xe5, 0x52, 0x50, 0x7f, 0x0f, 0x42, 0x1a, 0xc2, 0xbc, 
-  0x42, 0x3a, 0xe9, 0x67, 0x1e, 0x9a, 0x66, 0x0d, 0x1c, 0x40, 0x46, 
-  0xa4, 0x74, 0xfe, 0x18, 0x19, 0xc4, 0x77, 0xb4, 0xdb, 0xc6, 0x1a, 
-  0xbf, 0xb5, 0xa6, 0xeb, 0x71, 0xb1, 0xfc, 0xaf, 0x3a, 0xca, 0xe9, 
-  0x41, 0xea, 0xc6, 0x2b, 0xb8, 0xc8, 0xab, 0x7b, 0x8b, 0xf9, 0x6a, 
-  0xe7, 0x5c, 0x0a, 0x7d, 0x75, 0x0e, 0x07, 0x6d, 0x59, 0x04, 0x9f, 
-  0x53, 0xc9, 0x1b, 0xba, 0xd9, 0xf1, 0x6d, 0x3a, 0xb7, 0xaa, 0x70, 
-  0xc3, 0x74, 0x62, 0x13, 0x4c, 0x63, 0xa4, 0xf5, 0xa9, 0x06, 0x77, 
-  0xe3, 0xb2, 0x52, 0x01, 0x15, 0x97, 0x8c, 0xd9, 0x8a, 0x47, 0x1a, 
-  0x31, 0x7c, 0x69, 0x6a, 0xc8, 0x46, 0x28, 0xf1, 0x30, 0xd9, 0x2e, 
-  0xc2, 0x64, 0x9c, 0x26, 0x3c, 0x5d, 0x41, 0x32, 0x79, 0x3c, 0xdf, 
-  0x8d, 0xb0, 0xce, 0x9b, 0x42, 0xe4, 0x94, 0x74, 0xd5, 0x5a, 0xf8, 
-  0xa0, 0x47, 0x91, 0xee, 0xef, 0x29, 0x96, 0x3a, 0xbe, 0xd0, 0x7a, 
-  0x72, 0x25, 0xd0, 0xb6, 0x1e, 0x88, 0xad, 0x2d, 0x9f, 0x3d, 0xeb, 
-  0x44, 0x78, 0x63, 0x35, 0xf3, 0x13, 0x2a, 0x77, 0x0e, 0xda, 0xb6, 
-  0x9e, 0xf5, 0x46, 0x93, 0x12, 0x4a, 0x2a, 0xe4, 0x40, 0x7f, 0x77, 
-  0xff, 0xe8, 0x8a, 0x39, 0x8a, 0x3f, 0x14, 0x9b, 0x2e, 0xbd, 0xcb, 
-  0xbe, 0xb3, 0xa8, 0xc7, 0x36, 0x89, 0x2f, 0x98, 0x20, 0xa3, 0xf2, 
-  0x28, 0x00, 0x5e, 0x6d, 0xe7, 0xcb, 0xc0, 0x06, 0xb8, 0xb1, 0x5c, 
-  0x88, 0x0d, 0xdd, 0x52, 0x04, 0x35, 0x81, 0xd4, 0x07, 0x6b, 0xd9, 
-  0x45, 0xdd, 0x01, 0x7d, 0x8b, 0x4b, 0x1e, 0x22, 0x4b, 0x75, 0x80, 
-  0x05, 0x8e, 0x0f, 0xb0, 0xeb, 0x3c, 0x62, 0x52, 0x59, 0x21, 0x37, 
-  0x93, 0xda, 0x3f, 0x52, 0xdd, 0xdd, 0x49, 0x8a, 0xcc, 0x74, 0xbe, 
-  0xdb, 0xa5, 0x8a, 0x5b, 0xcb, 0xa9, 0x88, 0x97, 0x8d, 0x3e, 0x20, 
-  0x69, 0x03, 0x18, 0x74, 0xb6, 0x69, 0x20, 0x83, 0x96, 0x8d, 0x3a, 
-  0x9a, 0xe5, 0xe3, 0xbd, 0xc0, 0xdd, 0x94, 0x84, 0xa5, 0xfa, 0x08, 
-  0x16, 0x5f, 0x6f, 0xf2, 0x7d, 0x64, 0x41, 0xd7, 0x27, 0x60, 0x50, 
-  0xc0, 0x1d, 0x4f, 0x84, 0x56, 0x66, 0xc7, 0x86, 0xeb, 0x15, 0xa5, 
-  0xf0, 0xde, 0xc6, 0xef, 0xe1, 0x5a, 0x64, 0x5b, 0xb1, 0x2c, 0xb6, 
-  0x36, 0x00, 0x31, 0x12, 0xb8, 0x10, 0x74, 0xe2, 0x8b, 0x46, 0x3d, 
-  0xe5, 0x6c, 0x02, 0x1e, 0x0d, 0x3b, 0x1e, 0xbf, 0xcf, 0xe5, 0x7c, 
-  0x19, 0x11, 0x20, 0x8e, 0xe9, 0x06, 0x35, 0x18, 0x85, 0x7a, 0xaa, 
-  0x8f, 0xf2, 0x5f, 0x4d, 0x03, 0xc6, 0xab, 0x2c, 0xd6, 0x36, 0xbc, 
-  0xb8, 0xbf, 0xc4, 0xe3, 0x6f, 0x50, 0xe0, 0x78, 0x8f, 0x2f, 0x0e, 
-  0xc0, 0xf8, 0x16, 0x44, 0xbd, 0x58, 0x70, 0xf2, 0x47, 0x86, 0x1e, 
-  0x89, 0xda, 0x5a, 0x6a, 0x76, 0x4a, 0x49, 0x3c, 0x33, 0x01, 0x25, 
-  0x94, 0xed, 0x6b, 0x52, 0x6a, 0xa7, 0x8d, 0x68, 0xd6, 0x91, 0xee, 
-  0x6d, 0x8c, 0xd6, 0xd4, 0x15, 0x59, 0xe5, 0x95, 0x9a, 0xca, 0xa3, 
-  0x21, 0xe8, 0x33, 0xda, 0x79, 0x2e, 0x6d, 0x43, 0x6f, 0xf9, 0x5d, 
-  0x50, 0x06, 0x11, 0x49, 0x56, 0x72, 0x3b, 0x4b, 0x39, 0x85, 0xcd, 
-  0x2f, 0xca, 0xa1, 0x94, 0x28, 0x53, 0x52, 0xa2, 0xe0, 0x48, 0x4e, 
-  0x37, 0x99, 0xca, 0x5a, 0x3d, 0xf3, 0x98, 0xea, 0xed, 0x82, 0x58, 
-  0x12, 0x5b, 0xd3, 0x74, 0xa5, 0x34, 0x75, 0x0e, 0x15, 0xd5, 0xad, 
-  0x12, 0x82, 0xbb, 0x76, 0x99, 0x0e, 0xf9, 0x18, 0x07, 0xe4, 0x7a, 
-  0x4a, 0xb3, 0x34, 0x65, 0xd4, 0xd5, 0x25, 0xee, 0x5e, 0x49, 0xbc, 
-  0xfc, 0xa6, 0xd4, 0x5b, 0xd3, 0xd3, 0x45, 0x9b, 0x71, 0xf3, 0x84, 
-  0xde, 0xb8, 0xcb, 0x3c, 0x05, 0xaf, 0x60, 0xd5, 0xe0, 0x50, 0x63, 
-  0xde, 0x4a, 0xa9, 0x62, 0x33, 0x91, 0x11, 0x76, 0x43, 0xb8, 0x83, 
-  0xa8, 0x71, 0x10, 0x84, 0x08, 0xf7, 0x8d, 0x4b, 0xc5, 0x5c, 0x89, 
-  0x5e, 0x58, 0x5b, 0xcf, 0xe0, 0x58, 0x97, 0xa7, 0xe3, 0xa7, 0x5b, 
-  0x4d, 0x07, 0x37, 0xdb, 0xdf, 0xe9, 0x10, 0x73, 0xdc, 0x0b, 0x7c, 
-  0xed, 0xba, 0x42, 0x56, 0x7a, 0x87, 0xb2, 0x4d, 0x85, 0x5a, 0xe0, 
-  0x28, 0x94, 0xc1, 0x73, 0xbf, 0x18, 0xbc, 0x91, 0x31, 0xa6, 0x30, 
-  0xc5, 0x7a, 0xdf, 0x5a, 0x09, 0xb4, 0x2d, 0x7f, 0xc8, 0x2b, 0x67, 
-  0x77, 0x3b, 0xb5, 0x56, 0xc2, 0xb0, 0x1a, 0x5a, 0x5f, 0x11, 0x3a, 
-  0x48, 0x2f, 0x06, 0x53, 0xa5, 0xa9, 0x6a, 0xc2, 0xcf, 0x1c, 0xfd, 
-  0x9e, 0x58, 0x5f, 0x11, 0x86, 0x66, 0x82, 0xe5, 0x32, 0x78, 0x5e, 
-  0x11, 0xc4, 0xeb, 0xb4, 0x2d, 0xa5, 0xea, 0x70, 0x83, 0xfe, 0xa9, 
-  0xf4, 0x37, 0xc5, 0x31, 0x86, 0x4a, 0xd0, 0x2a, 0x72, 0x42, 0xd5, 
-  0x21, 0x37, 0x46, 0x1c, 0x53, 0x30, 0xf0, 0x0b, 0x84, 0x12, 0xef, 
-  0x96, 0xd7, 0x1f, 0x8c, 0x7a, 0xbb, 0xc7, 0xd1, 0xc7, 0x25, 0x6e, 
-  0xf1, 0x7e, 0x63, 0x71, 0x4b, 0x2c, 0x02, 0x1e, 0x50, 0xb3, 0xe0, 
-  0xc0, 0x54, 0x3b, 0x68, 0xb2, 0x84, 0x13, 0x52, 0x43, 0x85, 0x5c, 
-  0x82, 0xb9, 0xfe, 0xf8, 0xfe, 0x5d, 0xf7, 0x16, 0x68, 0xac, 0x8e, 
-  0x2f, 0xf6, 0x7a, 0x37, 0xf3, 0x8c, 0x0b, 0x7d, 0xbd, 0x8a, 0xd9, 
-  0xff, 0x3b, 0xd0, 0x4f, 0xb9, 0xeb, 0x22, 0x6d, 0x24, 0xb3, 0xe9, 
-  0x64, 0x75, 0x46, 0xb4, 0x1b, 0x2e, 0xd7, 0xbe, 0xc3, 0xb6, 0x82, 
-  0x7f, 0x86, 0xb8, 0x2f, 0xc2, 0x81, 0x03, 0x7b, 0x52, 0x20, 0x3e, 
-  0xe4, 0x33, 0x93, 0xda, 0x14, 0xa9, 0xf9, 0x99, 0x38, 0x93, 0x99, 
-  0x56, 0x7f, 0x09, 0xda, 0xc4, 0x7c, 0xe4, 0x86, 0xf3, 0xb4, 0x87, 
-  0x6d, 0x7f, 0xad, 0xaf, 0xd9, 0x67, 0x56, 0x2d, 0xda, 0x8c, 0xd0, 
-  0x0a, 0xda, 0x81, 0x08, 0x3d, 0xf1, 0x0f, 0x3f, 0x1d, 0x2c, 0x9b, 
-  0xdd, 0x58, 0x50, 0xf3, 0x8b, 0x0a, 0x6f, 0x93, 0x4f, 0x53, 0x02, 
-  0x42, 0x60, 0xf7, 0x63, 0x42, 0x98, 0x9c, 0x41, 0x89, 0x88, 0x89, 
-  0x74, 0x5b, 0x07, 0xac, 0x7b, 0xf8, 0x76, 0xf6, 0xf6, 0xb3, 0x70, 
-  0x2f, 0x37, 0xb9, 0x78, 0xa6, 0x9a, 0xc0, 0x83, 0x76, 0x8b, 0x43, 
-  0xf5, 0x32, 0x7a, 0x9d, 0x14, 0xbf, 0xc4, 0x21, 0xff, 0xbe, 0xc7, 
-  0xed, 0x17, 0x53, 0xbf, 0xf6, 0x32, 0xa0, 0xea, 0xf5, 0xfa, 0x8c, 
-  0x4c, 0x63, 0xf4, 0xe0, 0x5a, 0x9a, 0xd3, 0x39, 0x29, 0x23, 0xaf, 
-  0xec, 0x70, 0x9b, 0x67, 0xc6, 0xea, 0xda, 0xd9, 0x80, 0x0d, 0x36, 
-  0x0b, 0xfb, 0xfd, 0xae, 0xdd, 0x46, 0x7b, 0xd0, 0x1e, 0x6e, 0x2e, 
-  0x8b, 0x51, 0x20, 0xd3, 0x37, 0x8c, 0x56, 0x79, 0x75, 0x35, 0xf0, 
-  0x96, 0x35, 0x3f, 0x85, 0x33, 0xe9, 0x27, 0x18, 0xb3, 0x31, 0xbc, 
-  0x53, 0x12, 0x00, 0xcb, 0x39, 0x57, 0x64, 0xd6, 0xad, 0xe9, 0x12, 
-  0x2c, 0xf9, 0x6b, 0x93, 0x62, 0x0e, 0x8d, 0xf5, 0x44, 0x3f, 0x31, 
-  0x5d, 0x87, 0xef, 0x6a, 0x13, 0x48, 0x4d, 0x6e, 0xe3, 0x4e, 0xc7, 
-  0xff, 0x6a, 0xd5, 0x55, 0x36, 0x3d, 0x24, 0xc3, 0x60, 0xa1, 0xbe, 
-  0x89, 0x27, 0x0f, 0xb5, 0x53, 0x38, 0x4e, 0x97, 0x19, 0xa2, 0x5a, 
-  0x9b, 0x4c, 0x8d, 0xbe, 0x58, 0xa7, 0xb4, 0x9f, 0xcc, 0x6a, 0xb2, 
-  0xb5, 0x64, 0xbd, 0xfb, 0xcf, 0x48, 0xfe, 0xcd, 0x2f, 0x29, 0xb4, 
-  0xe6, 0xe9, 0xef, 0x83, 0x4c, 0x75, 0x24, 0x7e, 0xda, 0x37, 0xc8, 
-  0x64, 0x92, 0x51, 0x13, 0x5c, 0x18, 0x96, 0x5a, 0x7a, 0xad, 0x98, 
-  0x91, 0x2a, 0x14, 0xcd, 0xd7, 0xfe, 0x72, 0xad, 0xf9, 0xff, 0x00, 
-  0x0f, 0xf0, 0x47, 0x71, 0xd6, 0xf1, 0xd7, 0x76, 0x67, 0xeb, 0x71, 
-  0xdb, 0xea, 0x3d, 0x80, 0x3c, 0xea, 0xb2, 0xd3, 0x4b, 0x29, 0x8d, 
-  0x48, 0x9f, 0x76, 0xce, 0x0d, 0x9e, 0x48, 0x93, 0x73, 0xe0, 0x77, 
-  0x34, 0x75, 0xc9, 0xf9, 0xfc, 0xf2, 0x28, 0x9a, 0x6a, 0x64, 0x45, 
-  0x10, 0x45, 0x4a, 0x0a, 0x9c, 0x00, 0xb5, 0x26, 0x3e, 0x09, 0xaa, 
-  0x46, 0xb2, 0x7d, 0xbb, 0x6b, 0x77, 0x02, 0xc8, 0x2e, 0xde, 0x3e, 
-  0xd1, 0xdd, 0x46, 0xef, 0xaf, 0x0d, 0x66, 0x3e, 0x83, 0x1e, 0x2b, 
-  0x34, 0xf0, 0x69, 0xf8, 0x53, 0x7b, 0x62, 0xad, 0x6a, 0x8a, 0x0e, 
-  0x91, 0x34, 0x6e, 0xee, 0xad, 0xfb, 0x41, 0x48, 0x59, 0x16, 0xf5, 
-  0x29, 0x6e, 0xbf, 0x76, 0x79, 0x7e, 0x44, 0xca, 0x6a, 0x0a, 0xf3, 
-  0xaa, 0x07, 0x58, 0x81, 0xb3, 0xc5, 0xe0, 0xf7, 0x73, 0x35, 0xb2, 
-  0x19, 0xc1, 0x00, 0x27, 0xcd, 0xe1, 0x02, 0xfa, 0x19, 0x17, 0x98, 
-  0x03, 0x15, 0x95, 0xa4, 0x64, 0x94, 0x13, 0xea, 0x53, 0x12, 0xd2, 
-  0x13, 0xde, 0xf4, 0x57, 0x3b, 0xc9, 0xf6, 0x7e, 0x62, 0xa8, 0x4b, 
-  0xdd, 0xf7, 0x95, 0x53, 0x1e, 0xbf, 0x55, 0x5f, 0x40, 0x7e, 0x17, 
-  0x81, 0x28, 0xd9, 0x49, 0xff, 0xdb, 0xc1, 0xeb, 0x54, 0x19, 0xa9, 
-  0x0d, 0x06, 0x2a, 0x6e, 0xbb, 0xb0, 0xd4, 0x9f, 0x33, 0x3d, 0xf0, 
-  0xf9, 0xd4, 0x7b, 0x66, 0x8b, 0x23, 0xfd, 0x4b, 0xfc, 0x65, 0xbe, 
-  0x3f, 0xbd, 0x25, 0xb8, 0xe2, 0xbb, 0x2c, 0x8d, 0xc5, 0x58, 0x00, 
-  0x4f, 0x34, 0xbe, 0x33, 0x1b, 0x07, 0xa3, 0x01, 0x5a, 0x58, 0xe5, 
-  0x99, 0x5f, 0xf4, 0x09, 0x2f, 0xf8, 0x4d, 0x9d, 0x92, 0xe1, 0x5b, 
-  0x0e, 0x9b, 0x74, 0x93, 0x8b, 0x98, 0xf9, 0x81, 0xf3, 0x85, 0x22, 
-  0xb9, 0x5f, 0xf4, 0xfa, 0x18, 0x73, 0x87, 0xa2, 0xf9, 0x2a, 0x69, 
-  0xca, 0xd3, 0x2f, 0x86, 0x14, 0x6b, 0xe6, 0xb9, 0xc1, 0xf9, 0xf9, 
-  0x8e, 0x79, 0xdd, 0xe4, 0xce, 0x3f, 0x78, 0x42, 0x4a, 0x46, 0x21, 
-  0x67, 0xc9, 0xaf, 0xb2, 0x62, 0xe7, 0x26, 0x35, 0x5a, 0xf7, 0x4c, 
-  0xd2, 0x3c, 0x7c, 0xc9, 0x49, 0xde, 0xf9, 0x83, 0xb4, 0x60, 0x95, 
-  0x16, 0x4a, 0xda, 0xc2, 0xf6, 0xb4, 0x79, 0xa9, 0x2d, 0x91, 0x32, 
-  0x62, 0x1d, 0x17, 0x0f, 0xb4, 0xc3, 0x8f, 0x8b, 0x2e, 0xae, 0xf5, 
-  0x05, 0x8c, 0x30, 0xfa, 0x5d, 0x9a, 0x1a, 0xd2, 0x6e, 0x83, 0x60, 
-  0xb1, 0x9b, 0x15, 0x55, 0x07, 0x6f, 0x31, 0x22, 0x78, 0xcb, 0x3a, 
-  0x5c, 0xe3, 0x92, 0x40, 0x3d, 0x96, 0x91, 0xc3, 0x13, 0xad, 0x7d, 
-  0xfd, 0x4d, 0xac, 0x93, 0xca, 0xd2, 0xb4, 0x66, 0xc1, 0xd1, 0x5e, 
-  0x10, 0x83, 0xea, 0xde, 0x95, 0x76, 0x7a, 0xb3, 0x0d, 0x56, 0x8d, 
-  0x8f, 0xa7, 0xe4, 0x14, 0x81, 0x65, 0xf2, 0x9f, 0xeb, 0x40, 0x90, 
-  0xad, 0x6d, 0x29, 0xf5, 0x23, 0xa6, 0x02, 0x02, 0xb4, 0x06, 0x2b, 
-  0x5c, 0x52, 0x8b, 0x67, 0x57, 0x00, 0xb5, 0xf8, 0x94, 0x83, 0x56, 
-  0x1d, 0xbb, 0x92, 0x75, 0xeb, 0xf7, 0x22, 0x5f, 0x48, 0xfa, 0x5d, 
-  0x73, 0x78, 0x49, 0xb2, 0x50, 0xb6, 0xaf, 0xab, 0x41, 0x49, 0xc5, 
-  0xae, 0xa8, 0x4a, 0x93, 0xb5, 0xd7, 0x08, 0xb0, 0x62, 0x30, 0x79, 
-  0x7b, 0x51, 0xa9, 0xdb, 0x72, 0x11, 0x93, 0xca, 0xfb, 0x47, 0xbb, 
-  0x0c, 0x07, 0xd1, 0x6b, 0xdb, 0x73, 0xc2, 0x83, 0x97, 0x32, 0x82, 
-  0xaa, 0xea, 0x24, 0xa8, 0x32, 0x3e, 0x65, 0x40, 0x6b, 0x2c, 0xfa, 
-  0xa9, 0x1c, 0x88, 0xb4, 0x58, 0x2b, 0x81, 0x4e, 0x22, 0xfc, 0xb4, 
-  0x77, 0x0f, 0xa1, 0x13, 0x04, 0x7a, 0x8b, 0x74, 0xd9, 0xc1, 0xa3, 
-  0xa4, 0x46, 0x2e, 0xd7, 0x9e, 0x3b, 0x86, 0x88, 0x7d, 0x49, 0x72, 
-  0x23, 0x2f, 0xca, 0x17, 0xd1, 0x93, 0x99, 0xe1, 0xd5, 0x14, 0x2e, 
-  0x7e, 0xc8, 0x19, 0x00, 0x25, 0x6e, 0xbb, 0xae, 0xb4, 0x8f, 0x25, 
-  0x17, 0x4d, 0xf6, 0xbf, 0xb1, 0x51, 0xf9, 0xa8, 0x59, 0xd7, 0xb6, 
-  0x4a, 0xd4, 0x0e, 0x0e, 0x8b, 0x8d, 0xb8, 0xbe, 0x11, 0xb5, 0xe9, 
-  0x50, 0x8b, 0x14, 0xb3, 0xd6, 0x09, 0xf1, 0x2c, 0x57, 0x60, 0xef, 
-  0x7a, 0xd0, 0x31, 0xf8, 0x89, 0xaf, 0xb1, 0x68, 0x13, 0x2e, 0x05, 
-  0xb2, 0xea, 0xd5, 0x58, 0xa5, 0x42, 0xa8, 0xed, 0x30, 0xaf, 0xc0, 
-  0xd0, 0x6b, 0xd5, 0x51, 0x87, 0xd8, 0xe3, 0x81, 0x87, 0xcb, 0xfc, 
-  0x5e, 0x3f, 0xfd, 0x15, 0x40, 0x82, 0x59, 0x74, 0xac, 0x06, 0x6b, 
-  0xe6, 0xde, 0xc4, 0x83, 0xcb, 0x84, 0x4b, 0x15, 0xb0, 0x2b, 0xc9, 
-  0x1a, 0x28, 0xbc, 0xe8, 0x09, 0x15, 0xc7, 0x99, 0xd2, 0xf9, 0x71, 
-  0x1d, 0x0f, 0x6d, 0x8c, 0x3a, 0x1d, 0x8c, 0xdb, 0xf2, 0x65, 0x69, 
-  0x30, 0xdb, 0x0e, 0xc9, 0xef, 0xb0, 0xcd, 0x0c, 0x1a, 0x7d, 0x93, 
-  0xde, 0xb8, 0xc7, 0x59, 0x50, 0x20, 0xae, 0x53, 0x61, 0x7f, 0x4b, 
-  0x27, 0xc5, 0x55, 0x36, 0xff, 0x56, 0xa6, 0x50, 0x84, 0xd9, 0xf8, 
-  0x41, 0x6c, 0x3f, 0x33, 0x0c, 0x22, 0xff, 0x46, 0x6b, 0xac, 0xf2, 
-  0xe5, 0x19, 0x30, 0x01, 0x2e, 0x1e, 0xc9, 0x0c, 0xa8, 0x2c, 0xf0, 
-  0x63, 0xb8, 0xa6, 0xb9, 0xc9, 0x15, 0xea, 0x88, 0x77, 0x4b, 0xb8, 
-  0xa8, 0xc4, 0x37, 0x42, 0xf6, 0xc6, 0xd2, 0x75, 0xb7, 0x0a, 0x0d, 
-  0x42, 0x03, 0x64, 0x44, 0xfd, 0x47, 0x29, 0xff, 0x82, 0x6f, 0xcd, 
-  0x3d, 0xe0, 0xce, 0xf7, 0xef, 0x9a, 0x0c, 0xe0, 0xd5, 0xfd, 0xab, 
-  0x0a, 0xc0, 0x3a, 0x49, 0x9c, 0x7c, 0xb5, 0x6b, 0xd8, 0x0a, 0xc8, 
-  0xf2, 0x10, 0x1c, 0x69, 0x67, 0x7f, 0x39, 0x57, 0x44, 0xf0, 0x51, 
-  0x16, 0xa0, 0x64, 0x0d, 0x87, 0x15, 0x4c, 0xe5, 0x56, 0x53, 0xb5, 
-  0xc5, 0x68, 0x92, 0x5e, 0x99, 0x60, 0x22, 0x6b, 0x00, 0x6b, 0x1e, 
-  0x5f, 0xe9, 0x8c, 0xe9, 0xfa, 0xad, 0x07, 0x88, 0x58, 0xec, 0x7f, 
-  0x06, 0x5f, 0xb1, 0xd8, 0x33, 0x95, 0x7e, 0xee, 0x10, 0x3d, 0x65, 
-  0xe2, 0x4f, 0xea, 0x77, 0xcb, 0xd2, 0x99, 0x96, 0x0e, 0x8b, 0x20, 
-  0xaa, 0x5c, 0x36, 0xcd, 0xc4, 0xd6, 0x57, 0xd1, 0x2f, 0x09, 0x9d, 
-  0x23, 0xd9, 0x8f, 0x99, 0x2d, 0x37, 0xaa, 0x25, 0x17, 0xcf, 0x2c, 
-  0x74, 0x36, 0xee, 0x14, 0x72, 0x05, 0x54, 0x6b, 0xc2, 0x3b, 0xf1, 
-  0xc1, 0x1f, 0x8e, 0x5e, 0x20, 0x23, 0x84, 0x50, 0x4c, 0xa0, 0x15, 
-  0x07, 0x98, 0x43, 0x36, 0x62, 0xd8, 0x9b, 0xe0, 0x1f, 0x54, 0x63, 
-  0x1f, 0x38, 0x8b, 0x13, 0x27, 0xb6, 0x06, 0xd2, 0xc1, 0x6b, 0x73, 
-  0x46, 0x18, 0x82, 0x66, 0x58, 0x05, 0x54, 0x41, 0x6e, 0x11, 0x19, 
-  0x04, 0x54, 0x50, 0xd7, 0xe3, 0xaf, 0x0d, 0xc2, 0x2f, 0x54, 0x91, 
-  0x38, 0x58, 0xd1, 0xbd, 0x09, 0x59, 0x98, 0xf3, 0xd6, 0x49, 0x61, 
-  0x6b, 0x45, 0x9d, 0x8b, 0x45, 0xdb, 0xbd, 0x24, 0x7e, 0xf3, 0x88, 
-  0x3c, 0xa5, 0xad, 0x4e, 0x82, 0x1e, 0xaa, 0x0d, 0xcf, 0xc1, 0xb3, 
-  0x5b, 0x90, 0x7f, 0xf8, 0xab, 0xdc, 0x93, 0x92, 0xd3, 0x9b, 0x5e, 
-  0x28, 0xd7, 0xf4, 0xd0, 0x2a, 0x5c, 0xd5, 0xf6, 0xcc, 0x3b, 0x03, 
-  0x63, 0x0a, 0x11, 0xf4, 0x37, 0x57, 0xe5, 0x7f, 0xb8, 0xf4, 0x6a, 
-  0x48, 0x0f, 0x6e, 0xfe, 0xaf, 0x85, 0x24, 0x88, 0x67, 0x40, 0x07, 
-  0xb5, 0xec, 0x28, 0x7b, 0x3b, 0x9b, 0xe1, 0xab, 0x5d, 0x29, 0x21, 
-  0xab, 0x42, 0xa8, 0x89, 0xb1, 0xb0, 0xf1, 0x2d, 0xb3, 0x32, 0x13, 
-  0x9d, 0x24, 0x61, 0xc0, 0x2f, 0x70, 0x4c, 0x07, 0xe4, 0xab, 0xfc, 
-  0xc7, 0xc5, 0x43, 0x2f, 0xfc, 0xc6, 0x1c, 0x9f, 0x57, 0xc2, 0x9e, 
-  0xca, 0xce, 0xb4, 0xa1, 0x32, 0xb9, 0x3e, 0x9c, 0x85, 0x5c, 0xca, 
-  0x2f, 0x46, 0xa8, 0x95, 0xef, 0xbb, 0xdd, 0xa3, 0xc8, 0x40, 0xf5, 
-  0xae, 0x78, 0x8d, 0xdf, 0x47, 0xcc, 0x3b, 0x2c, 0x49, 0x73, 0x43, 
-  0xb5, 0x11, 0x43, 0x8f, 0x28, 0x16, 0x77, 0xd2, 0x5f, 0x0a, 0x7d, 
-  0x19, 0xcb, 0x20, 0x04, 0x2e, 0x23, 0x62, 0x51, 0xd6, 0x5e, 0x49, 
-  0xbc, 0x21, 0x97, 0x4e, 0x6f, 0x82, 0xd3, 0x50, 0x99, 0x61, 0xa6, 
-  0x0a, 0xff, 0xdf, 0x9a, 0xca, 0x19, 0xbb, 0xd8, 0x5c, 0x3b, 0x66, 
-  0x98, 0x2a, 0x4c, 0x64, 0x62, 0xb1, 0x21, 0x49, 0x84, 0x02, 0x61, 
-  0x1b, 0x7f, 0x67, 0xa2, 0x50, 0xbf, 0xb3, 0x29, 0x2c, 0x23, 0x35, 
-  0xbf, 0x66, 0x63, 0x08, 0x8e, 0x4a, 0xb6, 0x78, 0x93, 0xa4, 0x64, 
-  0x2d, 0x6f, 0xe2, 0x45, 0x42, 0xc4, 0x63, 0xf5, 0x41, 0x78, 0xa8, 
-  0xd6, 0x3e, 0x57, 0xb1, 0x2c, 0x73, 0xe9, 0x71, 0xd8, 0xa4, 0x4e, 
-  0xb6, 0x2b, 0x67, 0x21, 0x27, 0x1b, 0x68, 0x7e, 0xaa, 0x5f, 0x79, 
-  0x66, 0xe9, 0x78, 0x9a, 0x91, 0xa3, 0xc2, 0xa9, 0x20, 0x7a, 0x2d, 
-  0x82, 0x72, 0xd2, 0x24, 0x94, 0xf7, 0x1f, 0x08, 0xdb, 0x63, 0x59, 
-  0xd9, 0xda, 0x0c, 0x71, 0x1b, 0xf2, 0xa6, 0xae, 0x6e, 0xef, 0x1b, 
-  0x96, 0xc9, 0xa4, 0xc0, 0x45, 0xb2, 0xf7, 0x39, 0x12, 0x9f, 0x27, 
-  0x4e, 0x14, 0x31, 0x60, 0x10, 0x4f, 0xdc, 0x0a, 0xd1, 0x3e, 0xdc, 
-  0x9c, 0x93, 0x46, 0xa5, 0x53, 0xed, 0xf4, 0x28, 0x70, 0x63, 0x36, 
-  0x3e, 0x5d, 0xb7, 0xa6, 0x8d, 0x20, 0x91, 0x44, 0x85, 0xe9, 0xdb, 
-  0xb7, 0x2a, 0xab, 0x92, 0xf5, 0xc7, 0xa7, 0x71, 0x77, 0x0d, 0x3e, 
-  0xdc, 0x6c, 0x87, 0xfe, 0x0c, 0x7e, 0x3e, 0x9c, 0xb1, 0xb6, 0x78, 
-  0x7c, 0x30, 0x44, 0x0a, 0xf2, 0x15, 0x41, 0x44, 0x82, 0x68, 0xe4, 
-  0xa7, 0x74, 0x93, 0x11, 0xcd, 0xf0, 0x6b, 0x1c, 0xe0, 0x76, 0xb9, 
-  0xba, 0x40, 0xa9, 0x00, 0x6f, 0x26, 0x78, 0x40, 0xf6, 0x5a, 0x5a, 
-  0xc8, 0x42, 0xff, 0x81, 0x36, 0xcf, 0x71, 0x86, 0x9e, 0xec, 0xf0, 
-  0x62, 0x57, 0x45, 0x7a, 0x02, 0x9c, 0x14, 0xf0, 0xbb, 0x05, 0xf3, 
-  0x4d, 0x57, 0xaf, 0x0a, 0xa3, 0xca, 0x22, 0xea, 0xec, 0xfc, 0xdb, 
-  0xe8, 0x6f, 0x44, 0x6a, 0xad, 0x07, 0x3c, 0xe8, 0xa5, 0x91, 0xc0, 
-  0x34, 0x18, 0x46, 0x1c, 0x1f, 0x6f, 0x37, 0xab, 0xd2, 0x1b, 0xa0, 
-  0x18, 0x32, 0x31, 0x64, 0x29, 0x3a, 0xbb, 0xae, 0x19, 0x4f, 0xa8, 
-  0x60, 0x1a, 0x00, 0x77, 0x14, 0x61, 0xec, 0xb4, 0x79, 0xa6, 0x50, 
-  0x3b, 0x38, 0x72, 0x6a, 0x7c, 0x11, 0x18, 0xa2, 0x47, 0xf9, 0xab, 
-  0x24, 0x73, 0xf9, 0x99, 0xae, 0x92, 0xc6, 0xb2, 0x3a, 0x19, 0x37, 
-  0x69, 0x06, 0xb5, 0xfa, 0x85, 0x14, 0x07, 0x2d, 0xc2, 0x73, 0xd1, 
-  0xb0, 0x69, 0xba, 0x19, 0xe8, 0x0f, 0x85, 0x34, 0x0e, 0x0a, 0x81, 
-  0x55, 0x25, 0xbd, 0xec, 0x6f, 0x9b, 0x0d, 0x2b, 0xf9, 0xd1, 0xde, 
-  0x18, 0x6b, 0x3b, 0x18, 0x9b, 0x3e, 0x4f, 0x33, 0x68, 0x41, 0xe8, 
-  0x6b, 0xda, 0x0c, 0x96, 0x4a, 0xeb, 0x71, 0xe1, 0x4f, 0x8e, 0x4a, 
-  0x1c, 0x25, 0x8c, 0x86, 0x74, 0xa2, 0xee, 0x48, 0x8c, 0xc7, 0x0c, 
-  0xef, 0x31, 0xe9, 0x3f, 0x9c, 0x7c, 0x0b, 0x8e, 0x05, 0x96, 0x9a, 
-  0x44, 0x0e, 0x4f, 0x79, 0xbd, 0xdb, 0x4f, 0xbc, 0x50, 0x27, 0x6b, 
-  0x5c, 0x66, 0x8f, 0xfe, 0x0a, 0x3c, 0xdd, 0xf3, 0xb0, 0x70, 0x84, 
-  0x7c, 0x96, 0x9b, 0x50, 0x55, 0xb1, 0x4e, 0x1f, 0xf8, 0x68, 0x57, 
-  0xea, 0x96, 0x8f, 0x75, 0x7b, 0xcc, 0x66, 0x12, 0x8e, 0x8a, 0x39, 
-  0x78, 0xd5, 0x7a, 0x5c, 0x15, 0x0c, 0x02, 0x16, 0xc0, 0x27, 0xe2, 
-  0x9e, 0x83, 0xbe, 0x54, 0x47, 0xf1, 0x41, 0x27, 0xdc, 0xb7, 0x49, 
-  0x51, 0x94, 0xdb, 0x86, 0xbb, 0x77, 0xf1, 0x5b, 0xa6, 0x5b, 0x9a, 
-  0xf5, 0x1b, 0xc9, 0x6d, 0x03, 0xb7, 0xb7, 0x6b, 0x0d, 0x01, 0x5d, 
-  0xab, 0xe8, 0x98, 0xd2, 0xf3, 0xa8, 0x7f, 0x76, 0xd5, 0x79, 0x27, 
-  0xec, 0xd8, 0x2b, 0x1f, 0x54, 0x5e, 0xd3, 0xc4, 0xd7, 0x5a, 0x10, 
-  0xd6, 0xed, 0x3f, 0xf3, 0x21, 0xaf, 0x83, 0xcd, 0xcc, 0x11, 0x96, 
-  0xf6, 0x24, 0x82, 0x9e, 0xbd, 0x7a, 0xeb, 0x5a, 0x92, 0x5d, 0x0e, 
-  0x60, 0x1d, 0x24, 0xac, 0x93, 0x09, 0xaf, 0xbf, 0x6f, 0x0a, 0xd4, 
-  0xe4, 0x80, 0xff, 0x7f, 0xb4, 0xa6, 0xcb, 0x04, 0x13, 0xbf, 0x89, 
-  0x71, 0xb8, 0xa3, 0x45, 0xf9, 0x6d, 0x1e, 0x56, 0x25, 0xbf, 0xaf, 
-  0x9c, 0xd6, 0xc9, 0xdc, 0xb7, 0x02, 0x4a, 0x2a, 0xaf, 0xcc, 0x66, 
-  0x2c, 0x4f, 0x52, 0x9e, 0x3e, 0xf5, 0x15, 0xe0, 0x5e, 0x22, 0x03, 
-  0x47, 0x29, 0x1a, 0x2b, 0x67, 0x45, 0xdb, 0xd5, 0x50, 0xf4, 0xd3, 
-  0xa8, 0x5f, 0xeb, 0xef, 0xcf, 0x82, 0x79, 0x7d, 0x4e, 0x7f, 0x48, 
-  0x6a, 0x53, 0xa1, 0xbf, 0xd2, 0xf7, 0x33, 0xdb, 0x58, 0xd4, 0x8b, 
-  0x96, 0xbe, 0x23, 0x69, 0x22, 0xdf, 0xfe, 0x76, 0x79, 0xb1, 0x1c, 
-  0x8e, 0x34, 0x2c, 0xa1, 0xa5, 0x70, 0x2b, 0x19, 0xb2, 0x63, 0xb8, 
-  0xf7, 0x03, 0x8b, 0x37, 0x53, 0xe9, 0x3a, 0x0c, 0xa0, 0xa2, 0xff, 
-  0x37, 0xb9, 0x2c, 0xe6, 0xc9, 0x53, 0xa9, 0xe4, 0x58, 0x97, 0xe3, 
-  0xf4, 0xec, 0xe2, 0x66, 0x8d, 0xdf, 0x72, 0x1e, 0x7a, 0x2e, 0xb6, 
-  0x33, 0x27, 0x4a, 0xb4, 0xcd, 0x43, 0xa2, 0x88, 0x61, 0x5b, 0xf1, 
-  0x32, 0x6e, 0xf1, 0xd4, 0x03, 0x1b, 0x6d, 0xa9, 0x5f, 0x4c, 0xac, 
-  0x4b, 0x8a, 0xab, 0xb5, 0x8d, 0x53, 0x41, 0xe2, 0xad, 0xd9, 0x62, 
-  0x19, 0xef, 0xc4, 0x11, 0x20, 0xfc, 0xf5, 0xeb, 0x55, 0x29, 0xd9, 
-  0x11, 0x89, 0xd0, 0x81, 0x12, 0x1b, 0x8b, 0x89, 0xca, 0xb2, 0x4c, 
-  0x3a, 0x60, 0x23, 0x61, 0x3c, 0x4d, 0xb9, 0x14, 0xb4, 0x2b, 0x9e, 
-  0x7c, 0xb5, 0x13, 0x06, 0x4e, 0x9a, 0x02, 0x01, 0x25, 0x09, 0xa2, 
-  0x61, 0x5d, 0xa5, 0x07, 0x4f, 0xe7, 0xd3, 0x32, 0xb2, 0x4f, 0xd7, 
-  0xc2, 0xb2, 0xaa, 0xaf, 0xc0, 0x57, 0xeb, 0xe3, 0xc5, 0x07, 0x95, 
-  0x5f, 0x25, 0x42, 0x85, 0xd6, 0x44, 0x3b, 0xa9, 0xc1, 0x31, 0x88, 
-  0x84, 0x31, 0xfc, 0x30, 0xf2, 0xf1, 0xdc, 0xdf, 0xb2, 0xf2, 0xb3, 
-  0x10, 0xc4, 0x0b, 0x9b, 0x25, 0xbe, 0xfd, 0xf0, 0x1d, 0x7d, 0xf9, 
-  0x1d, 0x9f, 0x36, 0x5c, 0x20, 0x2a, 0xe6, 0xbf, 0x72, 0xd1, 0x6e, 
-  0x3f, 0x3a, 0xd0, 0xa9, 0xde, 0x0b, 0x8b, 0xe2, 0x25, 0xe1, 0xc0, 
-  0xa7, 0x39, 0xd6, 0x43, 0x96, 0xf6, 0x52, 0xbf, 0xfc, 0xd6, 0x60, 
-  0xbf, 0xf9, 0xe0, 0x14, 0xaf, 0xb3, 0x3a, 0x15, 0x9d, 0x0b, 0x5d, 
-  0xcf, 0xab, 0xc7, 0x9e, 0x8f, 0xf6, 0x64, 0x87, 0x5e, 0x6b, 0x83, 
-  0x57, 0x77, 0x65, 0xed, 0xfd, 0x14, 0xe9, 0xd2, 0x65, 0x18, 0xeb, 
-  0x2d, 0x5e, 0xf0, 0xcc, 0xff, 0xc3, 0x7c, 0x4b, 0x2a, 0x73, 0x1f, 
-  0xde, 0x67, 0xad, 0xeb, 0xc5, 0x1e, 0x95, 0x4c, 0x0c, 0x2d, 0x85, 
-  0x96, 0x34, 0x49, 0x1d, 0x86, 0xe3, 0x34, 0xa4, 0x93, 0x57, 0x82, 
-  0xc0, 0x96, 0x9d, 0xf5, 0x96, 0xa8, 0xba, 0xc2, 0xe6, 0x73, 0x77, 
-  0xaf, 0xcc, 0xa1, 0x58, 0xe9, 0x9e, 0x37, 0xe4, 0x77, 0x3b, 0xff, 
-  0x5b, 0x33, 0x24, 0x62, 0xf3, 0x40, 0x87, 0x92, 0x57, 0x66, 0xd9, 
-  0x42, 0x4b, 0xcd, 0xd0, 0x93, 0xec, 0xd8, 0x3d, 0x64, 0xef, 0x7a, 
-  0x8b, 0xd9, 0x86, 0x19, 0x45, 0xee, 0x5c, 0xf8, 0xdb, 0x51, 0xb1, 
-  0x5d, 0x60, 0xe4, 0x28, 0x9e, 0x78, 0x22, 0xa8, 0x42, 0xd4, 0xd6, 
-  0xde, 0x71, 0x55, 0xd8, 0x58, 0xb7, 0xcd, 0x13, 0x1d, 0xe8, 0x01, 
-  0x36, 0xe0, 0x57, 0x85, 0x76, 0x06, 0x97, 0x61, 0xe0, 0xd5, 0xfe, 
-  0x56, 0x47, 0x4a, 0x9c, 0x1a, 0x0c, 0xea, 0x5a, 0x61, 0x9d, 0x94, 
-  0xaa, 0x19, 0xbb, 0xec, 0x6d, 0xee, 0x39, 0x84, 0xb8, 0xc1, 0x54, 
-  0xa8, 0xa7, 0x7f, 0x28, 0xc2, 0xcb, 0x13, 0x4b, 0x81, 0xbc, 0xaf, 
-  0xcb, 0x8d, 0x77, 0x81, 0x14, 0xf7, 0xc4, 0x92, 0x94, 0x6a, 0x08, 
-  0x6c, 0x20, 0x5f, 0xa0, 0x1b, 0x7a, 0x3d, 0xa2, 0x5d, 0x9b, 0x5e, 
-  0xdf, 0xb2, 0x6c, 0x65, 0x20, 0x84, 0xf1, 0x07, 0xea, 0x53, 0x99, 
-  0x18, 0x36, 0x96, 0x78, 0x10, 0x19, 0x02, 0x8d, 0x28, 0x4b, 0x8f, 
-  0xc5, 0x98, 0x27, 0xae, 0xbc, 0x8e, 0x7e, 0x3e, 0x14, 0xc2, 0x50, 
-  0xbe, 0x91, 0x9b, 0x18, 0xc7, 0x87, 0x4d, 0x74, 0xd4, 0x25, 0xd1, 
-  0x08, 0x3c, 0xd5, 0x88, 0xf7, 0xd4, 0x66, 0x17, 0x2e, 0x3e, 0xa4, 
-  0x1e, 0xce, 0x19, 0xc6, 0x7e, 0x2e, 0x13, 0x92, 0xba, 0x1d, 0x88, 
-  0xa9, 0x5a, 0x49, 0x9e, 0xf8, 0x97, 0x0b, 0x84, 0xd1, 0x82, 0x5a, 
-  0xd5, 0x30, 0xd8, 0x3f, 0x54, 0x30, 0x7e, 0x66, 0x22, 0x8f, 0xcc, 
-  0xa9, 0xa2, 0x90, 0x16, 0xd4, 0x05, 0x85, 0xc0, 0xab, 0x2f, 0x5a, 
-  0xce, 0x79, 0x8f, 0x14, 0x49, 0xa8, 0x23, 0x78, 0xa0, 0xdc, 0xef, 
-  0x4e, 0xcb, 0x8b, 0xae, 0x62, 0xb8, 0xff, 0xe9, 0x44, 0x41, 0xbf, 
-  0x79, 0x73, 0x06, 0x5c, 0x57, 0x4c, 0x31, 0x7c, 0x2d, 0x90, 0xbd, 
-  0xcb, 0x66, 0x66, 0x3e, 0x76, 0xc6, 0x7b, 0xb0, 0x16, 0xb2, 0x41, 
-  0x28, 0x23, 0xc2, 0xf2, 0xb4, 0xaf, 0xeb, 0x9d, 0x8a, 0xf5, 0xbb, 
-  0x0c, 0x24, 0x8e, 0x2d, 0xb4, 0x20, 0x74, 0x8b, 0x68, 0xb3, 0x14, 
-  0x65, 0xb2, 0xbc, 0x04, 0x29, 0x16, 0x2b, 0x40, 0xc6, 0x89, 0x0b, 
-  0x0c, 0x11, 0xa3, 0x39, 0x8e, 0x29, 0xc2, 0x3a, 0xfa, 0xf5, 0xb0, 
-  0xa5, 0x29, 0xc3, 0x29, 0x95, 0x05, 0x6a, 0xc7, 0x41, 0xf5, 0x1e, 
-  0xe7, 0xfb, 0xc9, 0xb7, 0x18, 0xbb, 0xcc, 0x62, 0xea, 0x43, 0x92, 
-  0x69, 0x1c, 0xd1, 0xe2, 0x65, 0xdb, 0x2f, 0x52, 0x9b, 0x23, 0x05, 
-  0x70, 0xe6, 0x40, 0x29, 0xb1, 0x56, 0x49, 0x48, 0xf6, 0x1d, 0x5f, 
-  0x0b, 0x00, 0x1b, 0x16, 0x38, 0xe4, 0xe4, 0x1a, 0x26, 0x62, 0xc4, 
-  0x73, 0x6b, 0x5f, 0x80, 0x63, 0x51, 0x03, 0x4e, 0xf8, 0xe0, 0x22, 
-  0xe4, 0x71, 0xfd, 0x11, 0x42, 0x0d, 0xa4, 0x45, 0x54, 0x03, 0x06, 
-  0xd9, 0x95, 0x8c, 0x99, 0x8b, 0x0b, 0x0b, 0xd6, 0x64, 0x86, 0xcd, 
-  0x93, 0x62, 0x67, 0xc4, 0x30, 0x44, 0x17, 0x01, 0x5d, 0x28, 0x56, 
-  0x20, 0xe1, 0x87, 0xfe, 0xd7, 0xbf, 0x5e, 0x67, 0x84, 0x14, 0x9c, 
-  0x85, 0xfd, 0x01, 0x42, 0xeb, 0x70, 0x98, 0x90, 0xe2, 0x11, 0xfc, 
-  0xc8, 0x30, 0xac, 0x0c, 0xed, 0x28, 0x69, 0xaf, 0xa0, 0xed, 0xc6, 
-  0x87, 0x4e, 0x8e, 0x8f, 0x88, 0x72, 0x96, 0x2f, 0x05, 0x78, 0x65, 
-  0x71, 0xc1, 0x91, 0xa7, 0x67, 0x5a, 0x07, 0x62, 0x86, 0xcf, 0xef, 
-  0x05, 0x71, 0x59, 0x76, 0x24, 0x40, 0x6f, 0x42, 0xb8, 0xd2, 0x6c, 
-  0x05, 0x28, 0x3e, 0xc2, 0xcb, 0xbb, 0xdf, 0x40, 0x67, 0xf1, 0x0d, 
-  0xe9, 0x61, 0x85, 0x76, 0xac, 0x3f, 0x75, 0x13, 0x9a, 0x71, 0x6e, 
-  0x9a, 0x9f, 0xc9, 0xe6, 0x5c, 0xb3, 0x3a, 0x11, 0x50, 0x3a, 0xce, 
-  0x91, 0xc3, 0x90, 0x77, 0xea, 0x74, 0xdf, 0x32, 0xd7, 0x30, 0xcf, 
-  0x09, 0x7f, 0x9b, 0xde, 0xfe, 0xca, 0x88, 0x5d, 0x0e, 0x9d, 0x27, 
-  0xa3, 0x7f, 0x2b, 0xd4, 0xbf, 0xb8, 0x97, 0x8f, 0x8a, 0x3b, 0x65, 
-  0x23, 0x7b, 0x39, 0xa7, 0x14, 0x1a, 0x1d, 0x1a, 0x35, 0xcf, 0x48, 
-  0x59, 0xd5, 0xc6, 0xe6, 0x7f, 0x36, 0x71, 0xc6, 0x62, 0xa6, 0x5e, 
-  0x91, 0xc4, 0xb2, 0xaf, 0x07, 0x65, 0xea, 0x91, 0xbd, 0xd3, 0xd9, 
-  0x2c, 0x8b, 0x37, 0x7f, 0x5f, 0xb4, 0x94, 0xe2, 0x8b, 0x65, 0xc8, 
-  0xf8, 0x87, 0xf8, 0x30, 0x11, 0xd3, 0xcd, 0xac, 0x19, 0xb3, 0x7b, 
-  0x4d, 0xb1, 0x32, 0x49, 0xc7, 0xce, 0xb4, 0x16, 0x26, 0x58, 0x66, 
-  0x8f, 0xd6, 0x3c, 0x08, 0x14, 0xf3, 0x0c, 0xb8, 0x98, 0xe2, 0xe3, 
-  0x9c, 0x75, 0xdc, 0xda, 0x90, 0x7f, 0x1c, 0x4d, 0xd9, 0xbc, 0x50, 
-  0x9b, 0x41, 0x5d, 0x2a, 0xf3, 0x53, 0x07, 0xe2, 0xee, 0x93, 0x2a, 
-  0x6d, 0x17, 0x09, 0x6f, 0xd6, 0xb8, 0xb6, 0xa0, 0xc8, 0x55, 0x78, 
-  0x27, 0xfd, 0x75, 0xc5, 0xb7, 0x48, 0xdd, 0xc9, 0xe3, 0x1a, 0xf7, 
-  0x96, 0x05, 0x9f, 0xa8, 0xe8, 0x58, 0x09, 0x0c, 0xe7, 0x64, 0xe7, 
-  0x04, 0x76, 0xfd, 0x05, 0xe6, 0x3d, 0xde, 0x16, 0xf4, 0x5e, 0x42, 
-  0x18, 0x9d, 0x55, 0x0a, 0x9f, 0x98, 0x96, 0xc7, 0x4e, 0x7e, 0xee, 
-  0xa2, 0xda, 0x3b, 0x88, 0x3f, 0x89, 0x60, 0xad, 0x1f, 0x36, 0xb9, 
-  0xb0, 0xe7, 0xf5, 0x6b, 0xf1, 0xec, 0x61, 0x1f, 0xa8, 0xad, 0xdd, 
-  0x53, 0x95, 0x0e, 0x0b, 0xe4, 0x54, 0x87, 0x3c, 0x53, 0x3b, 0x3a, 
-  0xc7, 0xa5, 0xf4, 0xee, 0xf8, 0xbf, 0x1d, 0x0e, 0x83, 0x8a, 0xb2, 
-  0x1b, 0xab, 0x19, 0xcc, 0x6f, 0x23, 0x14, 0x2f, 0x0a, 0xeb, 0x52, 
-  0x10, 0x6e, 0x4a, 0x62, 0xdc, 0x72, 0x4f, 0x17, 0x2d, 0xda, 0x2b, 
-  0x70, 0xe1, 0xde, 0xce, 0xc9, 0x9d, 0xa9, 0xe3, 0xdc, 0x20, 0x7c, 
-  0x63, 0x7f, 0x63, 0xa1, 0x5f, 0x33, 0xb6, 0xc8, 0x65, 0x34, 0xf4, 
-  0xc6, 0x72, 0x42, 0xe8, 0x28, 0x05, 0xe5, 0xe6, 0xdf, 0x48, 0xdb, 
-  0xd5, 0x31, 0xf6, 0x91, 0x0b, 0xde, 0x74, 0x35, 0x43, 0x2f, 0xa0, 
-  0xd8, 0xae, 0x4b, 0x46, 0x15, 0xd5, 0x5f, 0x0b, 0xa6, 0xc4, 0xe6, 
-  0x38, 0x79, 0xeb, 0x58, 0xd5, 0x3f, 0xb9, 0x45, 0x45, 0xdb, 0x16, 
-  0xdc, 0xcc, 0x86, 0x56, 0x40, 0x51, 0x7e, 0x33, 0x9f, 0xd4, 0xa4, 
-  0xd2, 0xca, 0xab, 0x3f, 0xe0, 0xd5, 0xac, 0x37, 0xdd, 0xc2, 0x25, 
-  0x1b, 0x34, 0xcd, 0x14, 0xa5, 0x65, 0x9d, 0xe0, 0x39, 0x02, 0xfe, 
-  0x45, 0x41, 0xe5, 0xa9, 0x1a, 0x32, 0x1f, 0x08, 0xc8, 0xe1, 0x26, 
-  0xf5, 0x05, 0xc1, 0xb0, 0x2e, 0x50, 0xb7, 0x33, 0x85, 0xc9, 0x9b, 
-  0xe4, 0xed, 0xe0, 0x57, 0x1d, 0xc3, 0x6e, 0xe2, 0x63, 0x05, 0x9f, 
-  0x74, 0xea, 0x1d, 0x7a, 0xdc, 0x03, 0x65, 0x46, 0x1b, 0xb5, 0x76, 
-  0xe4, 0x3a, 0x0b, 0xf4, 0x40, 0xf8, 0x30, 0xd8, 0x5c, 0x8f, 0xca, 
-  0x6d, 0x3f, 0x46, 0xc7, 0xb2, 0xa1, 0xae, 0xd3, 0xaf, 0xc0, 0x37, 
-  0x5c, 0x9d, 0xec, 0x5a, 0x4f, 0xe4, 0x20, 0xb3, 0x7e, 0x00, 0x52, 
-  0xfb, 0x99, 0xc4, 0x19, 0x0b, 0x42, 0x97, 0x62, 0x99, 0x71, 0xf4, 
-  0x49, 0x75, 0x8e, 0x5f, 0x31, 0x46, 0xff, 0x33, 0x35, 0x11, 0x28, 
-  0x0c, 0x2c, 0x56, 0x75, 0x17, 0xef, 0xc0, 0x9a, 0xba, 0xbc, 0x61, 
-  0xd3, 0x0e, 0xde, 0xed, 0x78, 0x66, 0x43, 0x55, 0xd1, 0xdc, 0x09, 
-  0xdb, 0x51, 0x47, 0xca, 0x88, 0x58, 0xbe, 0x7f, 0xe7, 0x56, 0xdf, 
-  0x61, 0x13, 0xb8, 0x0f, 0x4f, 0xa3, 0xa9, 0x37, 0xc2, 0x65, 0xcc, 
-  0x28, 0xa8, 0x3e, 0x50, 0x92, 0xbb, 0x63, 0xbc, 0x36, 0x98, 0x1e, 
-  0xed, 0xaa, 0xad, 0x18, 0xe8, 0x84, 0xd3, 0x72, 0x80, 0x63, 0x03, 
-  0xe8, 0xd2, 0x45, 0xab, 0xa2, 0xdc, 0x98, 0x4d, 0xf4, 0x8e, 0x69, 
-  0xd6, 0x70, 0x2d, 0x8a, 0x06, 0x9d, 0x93, 0xb9, 0x3b, 0xd1, 0x79, 
-  0xa6, 0x20, 0x70, 0xf7, 0x8b, 0x1f, 0x4b, 0x77, 0x5b, 0x38, 0x11, 
-  0xe8, 0xaf, 0x1d, 0x38, 0x69, 0xef, 0x2b, 0x04, 0xa9, 0x86, 0x43, 
-  0xbf, 0x8d, 0x9e, 0x3d, 0x79, 0x5f, 0x3e, 0xac, 0xee, 0xbd, 0x39, 
-  0x8e, 0x65, 0xe5, 0x95, 0x50, 0xab, 0x79, 0xf1, 0xf1, 0xed, 0x04, 
-  0x49, 0x4b, 0x28, 0x4f, 0xed, 0x92, 0xe1, 0x90, 0x5b, 0x43, 0x6e, 
-  0x88, 0x36, 0x39, 0x6b, 0x3d, 0x0b, 0x37, 0x7c, 0xca, 0xc0, 0x73, 
-  0x1c, 0xc0, 0x2f, 0x17, 0x28, 0x50, 0xbb, 0xe0, 0x54, 0x6f, 0x9a, 
-  0xc0, 0xc7, 0x3f, 0x73, 0xda, 0xd5, 0x2c, 0xb8, 0xd7, 0xa9, 0x73, 
-  0x9b, 0x01, 0x39, 0xc0, 0x0b, 0x7c, 0xb7, 0xf1, 0x3b, 0x8b, 0x00, 
-  0x3c, 0x20, 0xe7, 0xc3, 0x09, 0x18, 0x06, 0xe4, 0xf6, 0x34, 0x0c, 
-  0x59, 0xba, 0x8a, 0xd2, 0xf7, 0x0b, 0x4c, 0x05, 0x3d, 0xbe, 0x40, 
-  0x3c, 0xa9, 0xf9, 0x07, 0xc4, 0xcb, 0xfd, 0xb7, 0x5a, 0x0a, 0x26, 
-  0x8b, 0x36, 0xab, 0x3a, 0xb2, 0xae, 0xf0, 0xa1, 0x55, 0xd8, 0x5e, 
-  0x88, 0xb8, 0xd3, 0x55, 0x66, 0xbf, 0x17, 0x14, 0x1c, 0x12, 0x3a, 
-  0x81, 0x7a, 0xfb, 0xc3, 0x47, 0x32, 0xd9, 0x74, 0xcd, 0x36, 0x29, 
-  0x7b, 0x2d, 0x61, 0x7e, 0x11, 0xfc, 0x92, 0x42, 0x39, 0x8a, 0xa4, 
-  0x69, 0xbb, 0x10, 0xe3, 0xaf, 0xdd, 0xad, 0xba, 0x19, 0xda, 0x0b, 
-  0x53, 0x17, 0x1c, 0x83, 0x37, 0x3d, 0x91, 0x5b, 0x2f, 0x11, 0xe1, 
-  0xef, 0x5f, 0x52, 0x56, 0x5f, 0x0c, 0x14, 0xf4, 0x0d, 0x16, 0x90, 
-  0x04, 0x5a, 0xf5, 0xc4, 0x82, 0xa9, 0x81, 0xcb, 0x3f, 0xf6, 0xfe, 
-  0x58, 0xbd, 0x79, 0x66, 0x9d, 0x00, 0xd6, 0x44, 0x99, 0xd9, 0xe9, 
-  0x53, 0x4d, 0x2f, 0x91, 0x64, 0xf2, 0x33, 0xbc, 0x08, 0xef, 0x08, 
-  0x61, 0x9d, 0x4d, 0x67, 0x6c, 0xd0, 0x16, 0x6c, 0x9f, 0x0b, 0x99, 
-  0x67, 0x76, 0x26, 0x33, 0xd4, 0x77, 0xcf, 0x75, 0xa6, 0xa2, 0x2b, 
-  0x92, 0xcf, 0x92, 0xb0, 0x26, 0xf1, 0xa9, 0x71, 0xf8, 0xcc, 0x9e, 
-  0x8b, 0x0d, 0x23, 0x03, 0x29, 0x2e, 0x87, 0xa4, 0x5a, 0x22, 0xed, 
-  0x99, 0xb0, 0x48, 0xc7, 0x0b, 0x0a, 0xf2, 0xa4, 0x1d, 0xe1, 0x88, 
-  0xd3, 0x10, 0x2e, 0xf2, 0x90, 0xc1, 0x87, 0x41, 0x3e, 0xfc, 0x1b, 
-  0xef, 0x4b, 0x8e, 0x5f, 0xc9, 0xf6, 0xa7, 0x19, 0xd0, 0x2d, 0xe8, 
-  0x0d, 0x3e, 0x3f, 0x74, 0xc8, 0xe2, 0xdf, 0x72, 0xbf, 0xb1, 0x6d, 
-  0x2b, 0x9e, 0x10, 0x6a, 0x76, 0xe5, 0x7c, 0x05, 0xfd, 0xef, 0xa0, 
-  0x42, 0xa1, 0x75, 0x78, 0xea, 0x19, 0x97, 0x2f, 0xd9, 0x9b, 0xef, 
-  0x17, 0xae, 0x20, 0x66, 0x1e, 0xc5, 0x1e, 0xb3, 0x85, 0x2a, 0x11, 
-  0x0c, 0xec, 0x30, 0xa3, 0x72, 0xae, 0xc1, 0xe0, 0x96, 0x63, 0x47, 
-  0xe0, 0x06, 0xd9, 0x7d, 0x25, 0x4b, 0x59, 0x05, 0x7b, 0x01, 0x8f, 
-  0xe7, 0xaf, 0x20, 0xf9, 0x37, 0x1a, 0xd4, 0xb1, 0xc8, 0x3d, 0xb0, 
-  0xd7, 0xd2, 0x86, 0xae, 0x3c, 0xc9, 0xc2, 0xe2, 0x42, 0x95, 0x8e, 
-  0xc0, 0xc3, 0x1a, 0xcb, 0xbf, 0xb6, 0x13, 0x1b, 0x9a, 0xe6, 0xb8, 
-  0x39, 0x04, 0x87, 0x89, 0x7a, 0x54, 0x42, 0x7d, 0xde, 0xa3, 0x6b, 
-  0x59, 0x89, 0x1f, 0x32, 0x3c, 0x37, 0x1d, 0x21, 0xee, 0x83, 0xbd, 
-  0x77, 0xab, 0x98, 0x3c, 0xa1, 0x3d, 0x29, 0xf8, 0xc2, 0xee, 0x28, 
-  0xca, 0x82, 0x80, 0x18, 0x3a, 0x87, 0x09, 0x4a, 0x6f, 0xc1, 0x8d, 
-  0x5e, 0xd9, 0xbe, 0x2d, 0x61, 0x8a, 0xdf, 0x19, 0x2b, 0x08, 0xd4, 
-  0x45, 0x45, 0xcc, 0x72, 0x8d, 0xc2, 0x43, 0x3b, 0x74, 0xc9, 0xe8, 
-  0x14, 0xad, 0xe9, 0xf4, 0x88, 0x29, 0x10, 0x57, 0x2e, 0x47, 0xbe, 
-  0xd8, 0x73, 0x37, 0x4d, 0x1b, 0xfe, 0x29, 0x61, 0x14, 0x04, 0x79, 
-  0x45, 0x89, 0x13, 0x22, 0x6f, 0xad, 0x29, 0xba, 0x6a, 0x17, 0xb9, 
-  0x0e, 0x87, 0xbd, 0x72, 0xc4, 0xa3, 0x3e, 0x91, 0xd7, 0x93, 0xbe, 
-  0x7b, 0x73, 0x14, 0xe8, 0xf3, 0x21, 0xc4, 0x03, 0x21, 0x7f, 0xb6, 
-  0xad, 0xa2, 0x9b, 0x07, 0xee, 0xff, 0x28, 0x5c, 0xa7, 0xd9, 0xba, 
-  0xec, 0xb4, 0x0f, 0xe7, 0xa8, 0xcb, 0x48, 0xc3, 0xa2, 0x39, 0x66, 
-  0x51, 0xf8, 0xb1, 0x0d, 0x4f, 0x40, 0xa2, 0x38, 0xd7, 0x84, 0x31, 
-  0xff, 0x5f, 0x3b, 0xf2, 0x73, 0x9d, 0x31, 0x1b, 0xf7, 0xad, 0x5c, 
-  0x8c, 0x0d, 0x1b, 0xdd, 0x33, 0x5b, 0x35, 0xcb, 0x22, 0x1a, 0x13, 
-  0x5c, 0x43, 0xda, 0x58, 0x7b, 0x9a, 0x83, 0x27, 0x4e, 0xbd, 0xc0, 
-  0x56, 0x78, 0x65, 0x23, 0x3a, 0x03, 0xad, 0x2e, 0x37, 0xda, 0xa0, 
-  0x97, 0x33, 0x7c, 0x82, 0xaa, 0x62, 0xd3, 0x61, 0x6b, 0xc1, 0xfb, 
-  0x3b, 0xdc, 0x72, 0x9b, 0xb1, 0x84, 0xcf, 0xc8, 0xb4, 0x6d, 0x87, 
-  0x2b, 0xdd, 0x0f, 0x3e, 0x8a, 0xd8, 0x00, 0x21, 0xc9, 0xc8, 0x33, 
-  0x21, 0xb3, 0xe6, 0x81, 0xa9, 0x8f, 0x65, 0x49, 0x4c, 0x1f, 0xbb, 
-  0x53, 0xbc, 0xb8, 0x56, 0x47, 0x22, 0x8b, 0x6e, 0x3c, 0x6f, 0x2d, 
-  0x19, 0x9b, 0x88, 0x55, 0x24, 0x67, 0x8c, 0x3a, 0xc7, 0xb1, 0xa7, 
-  0x9e, 0xfd, 0x45, 0x48, 0x25, 0x4b, 0xbe, 0x30, 0x49, 0xbc, 0x26, 
-  0x89, 0xc4, 0xed, 0xf4, 0x76, 0xae, 0x12, 0x7b, 0xed, 0x2b, 0xc8, 
-  0x0b, 0x36, 0xad, 0xb7, 0xe3, 0x66, 0x55, 0xc2, 0x84, 0x2f, 0x5c, 
-  0x7f, 0xcb, 0x2f, 0x6b, 0xfe, 0x3e, 0x0c, 0x4b, 0x6c, 0xf7, 0xdc, 
-  0x41, 0xce, 0xc9, 0x57, 0x1a, 0x00, 0x67, 0xa6, 0x46, 0x45, 0x26, 
-  0x3f, 0x8d, 0x79, 0x89, 0x04, 0x1d, 0xa9, 0x66, 0xa6, 0xfb, 0x21, 
-  0xb7, 0x71, 0x80, 0x3b, 0x04, 0x3c, 0x97, 0xa8, 0x48, 0x34, 0x32, 
-  0x02, 0x5d, 0x4f, 0xbe, 0x82, 0xab, 0x3b, 0x44, 0x73, 0x0a, 0xbe, 
-  0xa6, 0x00, 0x79, 0x3c, 0x18, 0x7b, 0x3f, 0xb0, 0x9e, 0x27, 0x3f, 
-  0x79, 0x90, 0x20, 0x61, 0xce, 0xc7, 0x91, 0x6e, 0xd5, 0x58, 0xb6, 
-  0xd6, 0x7f, 0xb3, 0x00, 0x28, 0xa3, 0x2f, 0x92, 0xa7, 0x14, 0x72, 
-  0xc0, 0xfa, 0x6f, 0x27, 0x37, 0x8a, 0x59, 0x15, 0x3f, 0x6d, 0x4e, 
-  0x44, 0xd1, 0x42, 0x62, 0xef, 0x77, 0xa7, 0x58, 0xc2, 0x11, 0x12, 
-  0x5e, 0x0a, 0x1b, 0x0c, 0x98, 0xb4, 0x6b, 0xc4, 0xae, 0xcd, 0x4b, 
-  0xbc, 0x22, 0x8f, 0x1e, 0x62, 0x1b, 0xfe, 0x91, 0x1f, 0xee, 0x6a, 
-  0x59, 0x59, 0x16, 0x2b, 0x04, 0xc1, 0x5c, 0x34, 0x2c, 0x6f, 0xd1, 
-  0x8d, 0xf1, 0x4e, 0xde, 0xaa, 0xcb, 0xf5, 0x98, 0x0f, 0xe7, 0x36, 
-  0x64, 0x46, 0xdc, 0xdc, 0x0c, 0x18, 0x99, 0xd2, 0xe1, 0x0a, 0x6f, 
-  0x67, 0xad, 0x05, 0x3d, 0x7b, 0x48, 0x4e, 0xf5, 0x2a, 0xbf, 0x35, 
-  0xbd, 0xa4, 0xd1, 0x81, 0xc9, 0x73, 0xe3, 0x75, 0x81, 0x65, 0x29, 
-  0x53, 0x94, 0x6d, 0xf3, 0xbb, 0x4a, 0x82, 0x70, 0xa9, 0xca, 0x70, 
-  0xe2, 0x2c, 0x21, 0x33, 0x84, 0xde, 0x62, 0x3c, 0x07, 0x1d, 0xd1, 
-  0xd3, 0x05, 0x20, 0xa8, 0x2f, 0x13, 0xc0, 0x31, 0xef, 0x79, 0x96, 
-  0x06, 0x67, 0x64, 0x1c, 0x05, 0xda, 0xa2, 0xa0, 0x55, 0xd2, 0x95, 
-  0x11, 0x20, 0xf8, 0x29, 0x10, 0xa9, 0x23, 0x86, 0xf2, 0x59, 0x82, 
-  0xba, 0x84, 0x85, 0xaa, 0xed, 0x65, 0x64, 0x6e, 0x17, 0x74, 0x62, 
-  0x9f, 0x33, 0x99, 0x7f, 0xa4, 0x37, 0x73, 0x3e, 0x73, 0x4d, 0xe6, 
-  0x45, 0xa2, 0x6d, 0x59, 0x02, 0x25, 0x3f, 0x0a, 0xde, 0xe3, 0x59, 
-  0x2a, 0xc0, 0x00, 0xb1, 0x49, 0xce, 0xb7, 0x20, 0xcf, 0x5f, 0x2a, 
-  0x84, 0x12, 0x25, 0x12, 0x93, 0x74, 0x52, 0x8d, 0x00, 0xe7, 0xbd, 
-  0x79, 0x27, 0xd8, 0xe0, 0xa9, 0xca, 0x31, 0xb1, 0x36, 0x13, 0x2c, 
-  0xbd, 0x6c, 0x7f, 0x35, 0x16, 0xf8, 0x0d, 0x18, 0xec, 0xbb, 0x98, 
-  0xb8, 0x0c, 0x25, 0x12, 0x70, 0x78, 0xac, 0x3c, 0xdd, 0x7a, 0x9f, 
-  0xe7, 0x31, 0x5e, 0x70, 0x9f, 0xa4, 0xb5, 0xa8, 0x75, 0x16, 0x82, 
-  0x56, 0x03, 0xb6, 0xec, 0x47, 0x42, 0x63, 0xac, 0x29, 0x95, 0x45, 
-  0x4e, 0x92, 0xc7, 0x4f, 0xfc, 0xaa, 0x86, 0xac, 0x61, 0xff, 0xbe, 
-  0xe5, 0xd4, 0x94, 0x76, 0xab, 0x03, 0x8d, 0xfb, 0xbb, 0x57, 0x0e, 
-  0x2c, 0xbc, 0x50, 0x39, 0x7f, 0x9b, 0x5f, 0x6f, 0xe5, 0x9b, 0x82, 
-  0x4a, 0x08, 0xb9, 0x83, 0xde, 0xe6, 0x79, 0xaa, 0xa4, 0x19, 0x74, 
-  0x77, 0x73, 0x74, 0x0c, 0x19, 0x4a, 0xc4, 0x21, 0x61, 0x96, 0x43, 
-  0x76, 0xf4, 0xa3, 0xbd, 0xd0, 0x73, 0x84, 0x99, 0x75, 0xa6, 0x8c, 
-  0x92, 0x52, 0x96, 0xdb, 0xec, 0x40, 0x06, 0x79, 0x9c, 0x9a, 0xfe, 
-  0xfb, 0x41, 0x90, 0xc8, 0xb5, 0x75, 0xba, 0xcc, 0x0f, 0xf8, 0x1c, 
-  0xa3, 0x0b, 0xa5, 0x34, 0x1c, 0xbd, 0x8c, 0x91, 0x43, 0x15, 0x33, 
-  0xed, 0xfe, 0xde, 0x79, 0xdd, 0x16, 0x9b, 0x6b, 0x01, 0x61, 0x97, 
-  0x71, 0x09, 0x9e, 0x09, 0x6a, 0xc1, 0xb9, 0x96, 0xc8, 0xbd, 0x60, 
-  0x6e, 0xfe, 0x00, 0xfc, 0xc0, 0x31, 0xca, 0x0c, 0x46, 0xa8, 0xc6, 
-  0x3b, 0x93, 0x7b, 0x6b, 0xd4, 0x3a, 0x33, 0xba, 0xcb, 0x36, 0xf3, 
-  0xb5, 0x88, 0xb7, 0x97, 0xdc, 0xc1, 0x94, 0x08, 0xdf, 0xda, 0x7e, 
-  0xc8, 0xfc, 0xf4, 0x83, 0xf8, 0x95, 0x59, 0xc5, 0xcc, 0xac, 0x74, 
-  0x6a, 0x23, 0x64, 0x0a, 0xf1, 0xda, 0x5e, 0x72, 0xed, 0x0a, 0x93, 
-  0xe7, 0xf4, 0x9c, 0x3d, 0xd5, 0xae, 0x25, 0x7f, 0x73, 0x5c, 0xf2, 
-  0x1d, 0x18, 0x21, 0xf9, 0x6d, 0xf9, 0x97, 0xde, 0x9c, 0xb2, 0x77, 
-  0x81, 0xdb, 0x02, 0x6a, 0xfb, 0xa3, 0x46, 0xcf, 0xcc, 0xfa, 0xd2, 
-  0xcd, 0xf1, 0x4e, 0x43, 0x97, 0x9d, 0x20, 0x50, 0xf4, 0xa7, 0x42, 
-  0xcf, 0xb9, 0x1f, 0x48, 0x92, 0x21, 0x2a, 0x41, 0xc7, 0x58, 0xc2, 
-  0x8b, 0x79, 0x48, 0x44, 0x8c, 0x99, 0x27, 0xf3, 0x5d, 0x28, 0xd3, 
-  0x9d, 0xde, 0x34, 0x8a, 0x77, 0xcf, 0x44, 0x14, 0x47, 0xeb, 0xa3, 
-  0xdb, 0xc0, 0x98, 0xd5, 0xb0, 0x9b, 0xaa, 0x66, 0x4a, 0x13, 0x54, 
-  0xef, 0xf2, 0x1a, 0x71, 0x6a, 0x88, 0x4d, 0xef, 0x68, 0x5b, 0xe5, 
-  0xc2, 0xea, 0xcb, 0x6d, 0x49, 0x75, 0x32, 0x76, 0x0d, 0x01, 0xd1, 
-  0x4d, 0x8b, 0xe1, 0x2d, 0x39, 0x37, 0xfb, 0x4f, 0xe7, 0xf1, 0x4f, 
-  0x2a, 0xb4, 0xcf, 0x26, 0xed, 0xdc, 0xfa, 0x24, 0x22, 0xdb, 0x0a, 
-  0x9c, 0xa6, 0x16, 0x74, 0xf9, 0xff, 0xa0, 0xbf, 0x50, 0x42, 0x9e, 
-  0xee, 0x56, 0xa9, 0x41, 0x20, 0x56, 0x22, 0x18, 0x8d, 0xe1, 0xeb, 
-  0xa9, 0x1f, 0xfd, 0xd7, 0x15, 0xcd, 0xdf, 0x5f, 0xe6, 0xbf, 0x6a, 
-  0xef, 0x99, 0xf6, 0x42, 0x1b, 0xbf, 0x75, 0x20, 0xef, 0xd7, 0x87, 
-  0x40, 0x10, 0xc6, 0xff, 0x9f, 0x6a, 0x52, 0xa0, 0xa3, 0xf2, 0xdc, 
-  0x3a, 0x9a, 0xb9, 0x6b, 0x7e, 0x35, 0xdc, 0x91, 0xbf, 0x7e, 0xe1, 
-  0xf6, 0x5a, 0x11, 0xd0, 0x85, 0xac, 0xdd, 0x25, 0x21, 0x01, 0x9d, 
-  0x23, 0x0c, 0x13, 0xfe, 0x0c, 0x1e, 0x36, 0x5c, 0x95, 0x2b, 0xd3, 
-  0x9e, 0x8c, 0x51, 0xf0, 0x3e, 0x40, 0x9d, 0xce, 0x07, 0x8d, 0xf7, 
-  0x9a, 0x49, 0x32, 0x84, 0x30, 0xbe, 0xed, 0x73, 0x38, 0x0d, 0x3c, 
-  0x45, 0x29, 0xc0, 0x35, 0xe5, 0x11, 0x9d, 0x56, 0xe8, 0xc2, 0xa8, 
-  0xc6, 0x88, 0x37, 0xd4, 0x67, 0x1e, 0x18, 0xd0, 0x26, 0x8e, 0x08, 
-  0xd8, 0x04, 0x3c, 0xe6, 0xcb, 0x47, 0xaf, 0x29, 0xb6, 0x7e, 0x89, 
-  0xf9, 0xd4, 0x7b, 0x97, 0x5d, 0x40, 0xd4, 0xe4, 0xa9, 0x7c, 0xc1, 
-  0x6c, 0x1c, 0x4d, 0x70, 0x27, 0x78, 0x75, 0x10, 0x6a, 0x4f, 0x29, 
-  0x86, 0x6d, 0xe2, 0x55, 0x61, 0x1d, 0x7e, 0x2b, 0x97, 0x0f, 0xd0, 
-  0xe4, 0xc9, 0xc2, 0x68, 0x32, 0x11, 0x65, 0x34, 0x53, 0xa5, 0x74, 
-  0xa5, 0x3c, 0xcf, 0xdd, 0x81, 0xce, 0x0d, 0xa3, 0x68, 0x0f, 0x8a, 
-  0x2a, 0x77, 0x7d, 0xeb, 0xe3, 0x8e, 0x3b, 0x16, 0x4e, 0x87, 0x38, 
-  0xa5, 0x68, 0x52, 0x64, 0xa9, 0x8e, 0xb7, 0xde, 0xdf, 0xba, 0x5f, 
-  0xca, 0x93, 0x4f, 0x1a, 0x29, 0xa0, 0xa1, 0xf9, 0x0c, 0x97, 0x0b, 
-  0xf5, 0xc1, 0x3c, 0x49, 0x99, 0xb8, 0x39, 0x38, 0x54, 0xf2, 0xee, 
-  0x88, 0xce, 0x9c, 0x2c, 0x61, 0x6e, 0xa7, 0xc0, 0x0b, 0x1a, 0xdb, 
-  0x65, 0x7e, 0x9c, 0x8f, 0x1d, 0xb7, 0xe4, 0x98, 0x81, 0x0d, 0xe2, 
-  0x9d, 0x74, 0x46, 0x56, 0xa0, 0x59, 0xf4, 0xc8, 0x6e, 0x09, 0xd9, 
-  0x06, 0xaf, 0x26, 0x02, 0x03, 0x7f, 0x21, 0x7f, 0xd3, 0x52, 0x4c, 
-  0x51, 0x69, 0x86, 0x48, 0x16, 0xdd, 0x04, 0xe4, 0x5e, 0xe5, 0xd0, 
-  0xec, 0x62, 0x0b, 0x4a, 0x21, 0x1d, 0x01, 0x46, 0x3a, 0x01, 0x38, 
-  0x49, 0x05, 0x43, 0x4b, 0x67, 0x08, 0x28, 0x54, 0xfc, 0x61, 0x48, 
-  0xe2, 0xe1, 0x91, 0x9a, 0x96, 0x94, 0x21, 0x6a, 0xfc, 0x2b, 0x78, 
-  0xa2, 0x03, 0x7f, 0xdb, 0x83, 0x23, 0x47, 0x8f, 0xc2, 0x80, 0x61, 
-  0x38, 0x84, 0xff, 0x1b, 0xe3, 0xb1, 0x69, 0xfe, 0x0b, 0x32, 0xcc, 
-  0xa1, 0xfa, 0x90, 0x66, 0xb1, 0x07, 0x04, 0x7a, 0x1a, 0x2f, 0x17, 
-  0x3e, 0x0e, 0x9c, 0x34, 0x4f, 0xaf, 0x8f, 0x82, 0xbe, 0x5f, 0x75, 
-  0x13, 0xb4, 0x79, 0x78, 0xcb, 0x54, 0x84, 0x17, 0x57, 0x74, 0x67, 
-  0x8b, 0x4f, 0xc7, 0x4c, 0x56, 0xff, 0x66, 0x28, 0x5c, 0xc9, 0x21, 
-  0xfe, 0x0a, 0x6e, 0xb3, 0x07, 0xd5, 0x62, 0x5b, 0xfd, 0x1a, 0xf8, 
-  0x50, 0x30, 0x74, 0x8f, 0xc3, 0x23, 0xb8, 0xa9, 0x1d, 0x5f, 0x89, 
-  0x8b, 0xb9, 0xe4, 0xcd, 0x3f, 0x19, 0xcd, 0x16, 0xd8, 0xee, 0x82, 
-  0x26, 0x93, 0x73, 0xba, 0x99, 0x1c, 0x1c, 0xea, 0xca, 0x16, 0x04, 
-  0x60, 0x28, 0x6e, 0xa2, 0x5d, 0x9b, 0x40, 0x04, 0x2b, 0xcb, 0x04, 
-  0x5e, 0xdc, 0x0c, 0xdb, 0xc6, 0x82, 0x61, 0x05, 0x0b, 0x27, 0x02, 
-  0xc4, 0x34, 0xdc, 0x14, 0x93, 0xd7, 0x30, 0xa5, 0x67, 0x9f, 0x65, 
-  0x9c, 0x52, 0xa1, 0x63, 0x51, 0x80, 0x3a, 0x28, 0xd1, 0x15, 0xf3, 
-  0xdf, 0x3b, 0x2b, 0xe1, 0xe5, 0x4b, 0xb8, 0xef, 0x53, 0x44, 0x0f, 
-  0x8a, 0xa1, 0x58, 0xcf, 0x0e, 0x1f, 0x75, 0xa8, 0xcf, 0x63, 0xbb, 
-  0x58, 0xc9, 0x81, 0x21, 0xe5, 0xf4, 0x2f, 0xd5, 0x79, 0x81, 0x84, 
-  0xb6, 0xb0, 0x34, 0x52, 0x76, 0x79, 0x8f, 0x1a, 0x88, 0x98, 0xe3, 
-  0x77, 0xf7, 0x86, 0x20, 0xd7, 0x53, 0x2f, 0x23, 0xdc, 0xa6, 0x3a, 
-  0x39, 0x97, 0x93, 0x34, 0x67, 0xe3, 0x33, 0xda, 0x99, 0xc0, 0x91, 
-  0xa4, 0xd0, 0x56, 0x44, 0x70, 0xbc, 0x00, 0x88, 0x30, 0x43, 0x51, 
-  0x39, 0x28, 0x14, 0x5b, 0xa9, 0x3c, 0x3c, 0x5e, 0x8f, 0x7e, 0xfa, 
-  0x95, 0x72, 0xb2, 0x11, 0xb0, 0x0d, 0x41, 0x16, 0x88, 0xdc, 0x3d, 
-  0x14, 0x86, 0x99, 0x67, 0xd4, 0x3d, 0x7b, 0xf9, 0x0b, 0xde, 0x98, 
-  0xcb, 0x15, 0xb4, 0xba, 0xb3, 0x37, 0xab, 0xe2, 0x54, 0x58, 0xc8, 
-  0x0c, 0x77, 0xe3, 0xa8, 0x44, 0x49, 0x71, 0xa1, 0x4a, 0x43, 0xe1, 
-  0x79, 0xf0, 0x20, 0x8f, 0xc2, 0x1e, 0xd2, 0xa4, 0x50, 0x70, 0xaf, 
-  0x23, 0x10, 0xf0, 0x0a, 0xb7, 0xae, 0x31, 0x37, 0x3f, 0x00, 0x75, 
-  0xdd, 0xc5, 0xc7, 0x86, 0xf9, 0x03, 0xa8, 0x4d, 0x24, 0x85, 0x98, 
-  0x96, 0xcc, 0x98, 0xee, 0xa1, 0x67, 0xfe, 0xfe, 0x69, 0x56, 0x71, 
-  0x89, 0x25, 0x52, 0x00, 0x70, 0x2e, 0x60, 0x92, 0x3b, 0x97, 0xe6, 
-  0xf3, 0x48, 0x61, 0x4f, 0xf1, 0x1a, 0x40, 0xb4, 0x1b, 0xd9, 0xed, 
-  0xce, 0xf9, 0xc6, 0x18, 0x58, 0xfd, 0xea, 0x9d, 0xc2, 0x12, 0x0f, 
-  0x4d, 0xd2, 0xfb, 0x60, 0x2f, 0x36, 0xfa, 0x46, 0xaa, 0x5c, 0xbd, 
-  0x3d, 0xd8, 0x6e, 0x00, 0x51, 0xd2, 0x30, 0xde, 0xe5, 0x25, 0xce, 
-  0x43, 0xd5, 0xb3, 0x9c, 0x91, 0xec, 0x7f, 0xe2, 0x99, 0x9f, 0xdc, 
-  0xd4, 0x01, 0xa4, 0xa5, 0x29, 0x88, 0x18, 0x17, 0x42, 0x40, 0x54, 
-  0x19, 0x13, 0x83, 0xe7, 0x7e, 0x96, 0x3d, 0x17, 0x61, 0xb6, 0x84, 
-  0x00, 0xac, 0xc3, 0xed, 0xeb, 0xa6, 0xb7, 0x01, 0x0f, 0x33, 0xa1, 
-  0x1a, 0x26, 0x03, 0x9a, 0x67, 0xee, 0xf6, 0xf2, 0x69, 0x21, 0xd8, 
-  0x31, 0x1a, 0xeb, 0x1e, 0xfe, 0x2a, 0xfb, 0x59, 0x02, 0x21, 0x58, 
-  0x50, 0xa3, 0xfb, 0x05, 0xa3, 0x1f, 0x6f, 0x38, 0x99, 0xac, 0x32, 
-  0xc3, 0x6b, 0x5c, 0x39, 0x5b, 0x05, 0xe3, 0x7f, 0x67, 0xa4, 0xe4, 
-  0xe5, 0x67, 0x70, 0x5f, 0xaf, 0x6c, 0x7b, 0xfb, 0x35, 0x56, 0xaf, 
-  0xa5, 0x21, 0xf0, 0x24, 0xc3, 0x31, 0xe0, 0xf8, 0xb6, 0x8f, 0x61, 
-  0xc5, 0x66, 0x68, 0x2c, 0xaa, 0x65, 0xe0, 0xc8, 0x24, 0xcc, 0xdf, 
-  0x35, 0xa9, 0xbe, 0x88, 0x0b, 0x8e, 0x04, 0x4e, 0x46, 0x62, 0x23, 
-  0x07, 0xef, 0xec, 0xab, 0x37, 0x31, 0x67, 0x47, 0xfc, 0x56, 0xaf, 
-  0xcf, 0x7a, 0x50, 0xcb, 0x81, 0xfe, 0xa6, 0xe7, 0x1c, 0xd4, 0xef, 
-  0x2c, 0x5b, 0x7f, 0x39, 0x85, 0x69, 0x93, 0x05, 0x58, 0xff, 0x35, 
-  0x47, 0x84, 0xdb, 0x04, 0x9b, 0xa4, 0x22, 0x64, 0x7f, 0x5d, 0x92, 
-  0xc8, 0x06, 0x38, 0x7f, 0x30, 0x39, 0xa9, 0x44, 0xc4, 0xf0, 0xf1, 
-  0x72, 0xce, 0xe6, 0xc9, 0x5c, 0x15, 0x98, 0x47, 0x17, 0xb7, 0xca, 
-  0xf5, 0xa0, 0x47, 0xfb, 0x4a, 0xd6, 0x73, 0xef, 0x54, 0xfc, 0x0d, 
-  0xb7, 0x6a, 0x9c, 0x78, 0xbf, 0xaa, 0x8d, 0x12, 0xa2, 0x15, 0xa9, 
-  0xab, 0x7d, 0xfd, 0x3a, 0x1b, 0xce, 0x62, 0x8a, 0x20, 0xf3, 0x8d, 
-  0x26, 0x55, 0xae, 0x2b, 0x46, 0x24, 0x35, 0x75, 0x50, 0x85, 0x70, 
-  0x78, 0x27, 0xcf, 0xb2, 0x55, 0xc5, 0x2a, 0x77, 0xa7, 0x9a, 0x73, 
-  0xd6, 0xae, 0x24, 0xc1, 0x51, 0x11, 0xae, 0xe8, 0x51, 0x96, 0xe9, 
-  0x4a, 0xf4, 0xb1, 0x6b, 0xd5, 0xb0, 0x81, 0xf1, 0x8e, 0xc1, 0x3e, 
-  0x05, 0x6d, 0x58, 0xed, 0x8a, 0x35, 0x50, 0x83, 0x5d, 0xa9, 0xa2, 
-  0x19, 0x3e, 0x0f, 0x92, 0x67, 0xe9, 0x5f, 0x64, 0xe1, 0x88, 0x87, 
-  0xcd, 0x98, 0x79, 0x12, 0xc9, 0x9c, 0xaa, 0xa0, 0x27, 0x83, 0x2a, 
-  0xaa, 0x6e, 0xff, 0x7a, 0x09, 0x49, 0x27, 0xf5, 0x92, 0x40, 0xeb, 
-  0x3f, 0x70, 0x48, 0xf7, 0x19, 0xe7, 0x33, 0x74, 0xcd, 0x23, 0x52, 
-  0xaa, 0x0b, 0x0f, 0x59, 0x70, 0x3e, 0x6f, 0xec, 0x46, 0xcd, 0xfe, 
-  0x8a, 0xfe, 0xb9, 0xcb, 0xbe, 0x72, 0xe6, 0x43, 0xb6, 0x0e, 0x2c, 
-  0x84, 0x31, 0x22, 0x72, 0x3b, 0x32, 0x25, 0x23, 0x10, 0x1f, 0x00, 
-  0xa7, 0xa5, 0xaf, 0x17, 0x31, 0x40, 0xa8, 0x8c, 0x7b, 0xfe, 0x5e, 
-  0x35, 0x0a, 0x70, 0xb1, 0xac, 0x3f, 0xc0, 0x74, 0xfa, 0xa5, 0x10, 
-  0x17, 0x9a, 0x7e, 0xfd, 0x3d, 0x5a, 0xfc, 0xdc, 0xff, 0xb0, 0x3b, 
-  0x91, 0xdd, 0x98, 0xaf, 0x45, 0xf6, 0x53, 0xf0, 0x61, 0x49, 0x03, 
-  0x80, 0x1d, 0x95, 0xa9, 0x4c, 0x34, 0x2b, 0x97, 0x3c, 0x6a, 0x6b, 
-  0x04, 0x5c, 0x82, 0x91, 0xa1, 0xd8, 0xa1, 0x6f, 0x9c, 0x16, 0x3f, 
-  0x32, 0xba, 0xd4, 0xb7, 0x1d, 0x02, 0x2b, 0x98, 0x31, 0xbc, 0xc7, 
-  0xc7, 0xd5, 0xed, 0x43, 0x60, 0x41, 0x6a, 0x6a, 0x30, 0xfe, 0x1c, 
-  0x62, 0x14, 0x62, 0x2c, 0x3a, 0xb4, 0xca, 0x31, 0xd1, 0x35, 0x05, 
-  0xde, 0x9a, 0xd3, 0xa3, 0x1c, 0xe8, 0x2d, 0x00, 0x8e, 0x0f, 0x17, 
-  0x04, 0xb3, 0xbb, 0x04, 0x09, 0x1a, 0x08, 0x5c, 0x87, 0x3a, 0xc4, 
-  0xa8, 0xb3, 0x7d, 0xc6, 0x95, 0xff, 0xb3, 0x36, 0x71, 0xd8, 0xb2, 
-  0x69, 0xcb, 0xfa, 0xdd, 0xc4, 0xbb, 0x1b, 0x15, 0xd9, 0x10, 0x3a, 
-  0x5f, 0xa2, 0x45, 0x3e, 0xe0, 0xd8, 0x71, 0x78, 0xaf, 0x74, 0x4b, 
-  0x5a, 0x19, 0xb2, 0xa7, 0x97, 0xb3, 0x9f, 0xe1, 0x2b, 0x86, 0x87, 
-  0x5b, 0x49, 0x6b, 0x0b, 0xa1, 0xe9, 0xce, 0xdb, 0x74, 0xb4, 0xd0, 
-  0xc7, 0x15, 0x47, 0xe2, 0x81, 0x3b, 0xd4, 0x69, 0x09, 0x58, 0xf0, 
-  0x71, 0xde, 0x0d, 0x29, 0xbc, 0x34, 0x8b, 0xb6, 0xe8, 0xe0, 0x52, 
-  0x4b, 0xb5, 0x5b, 0xa9, 0xa8, 0x45, 0xda, 0x2a, 0xbd, 0xf8, 0x52, 
-  0x57, 0xfc, 0x2b, 0xeb, 0xb6, 0x47, 0x24, 0x75, 0x69, 0x9b, 0x1c, 
-  0xa0, 0xd7, 0xf3, 0x26, 0x47, 0x2e, 0xf7, 0x83, 0xef, 0x47, 0x27, 
-  0x06, 0xa4, 0xfa, 0x0d, 0x0a, 0x17, 0xa3, 0x15, 0x98, 0xd6, 0xfd, 
-  0x4c, 0xd9, 0xc1, 0x2d, 0xdb, 0xca, 0xe4, 0x1f, 0x55, 0x44, 0xa8, 
-  0xfe, 0xa5, 0x37, 0x5f, 0x4f, 0x00, 0xf9, 0xb9, 0x8d, 0x6a, 0x84, 
-  0x7b, 0x55, 0x15, 0x8d, 0xec, 0x9c, 0x03, 0xae, 0xb1, 0x0f, 0x0e, 
-  0x5c, 0x7e, 0x74, 0x79, 0x73, 0x01, 0x71, 0x75, 0xcf, 0xd7, 0x3b, 
-  0x83, 0xf6, 0x0f, 0xf3, 0xc1, 0x4d, 0x8b, 0xf7, 0xa4, 0xfd, 0xf9, 
-  0x03, 0x1b, 0xf0, 0x42, 0xfc, 0xc7, 0xf5, 0xdd, 0xab, 0x12, 0x68, 
-  0xac, 0x14, 0xd6, 0x44, 0x73, 0x37, 0xd6, 0x95, 0x06, 0x6c, 0x72, 
-  0xb5, 0xf4, 0x6d, 0x8b, 0x0c, 0x73, 0x64, 0x7c, 0x18, 0x7b, 0xfd, 
-  0x9b, 0x04, 0x50, 0x1f, 0xbf, 0x57, 0x72, 0x32, 0xb6, 0x08, 0xa1, 
-  0xac, 0xd0, 0x9e, 0xb5, 0xcb, 0x52, 0xec, 0x98, 0x2b, 0x41, 0xbd, 
-  0xdd, 0x55, 0x9d, 0x90, 0x0c, 0xca, 0x8f, 0xb0, 0x5a, 0xd6, 0x46, 
-  0x9f, 0x07, 0x4b, 0x3d, 0x1e, 0x6d, 0x96, 0xda, 0x26, 0xd6, 0xb7, 
-  0xfa, 0x86, 0x59, 0xf0, 0xb0, 0x5e, 0x93, 0xe1, 0xe4, 0x39, 0x9d, 
-  0xd7, 0x90, 0xec, 0x50, 0x16, 0x26, 0x88, 0x4c, 0xe5, 0xed, 0xc9, 
-  0x49, 0xe2, 0x6f, 0x16, 0xa7, 0x90, 0x37, 0xca, 0x00, 0x58, 0xe6, 
-  0x48, 0x34, 0x74, 0x94, 0x45, 0xda, 0xe8, 0x9b, 0x9c, 0xcd, 0x24, 
-  0xbe, 0x1e, 0xec, 0x38, 0x38, 0x93, 0x9d, 0xf0, 0x65, 0x24, 0x52, 
-  0x79, 0x3b, 0x58, 0xf6, 0x91, 0xe3, 0x31, 0x90, 0x05, 0x83, 0x29, 
-  0x5d, 0x85, 0x56, 0x03, 0x5b, 0xc7, 0x6c, 0xae, 0x7d, 0x1f, 0xd4, 
-  0x50, 0x1d, 0x1d, 0x50, 0x84, 0xdc, 0x41, 0x2f, 0x7b, 0xcd, 0x91, 
-  0x3d, 0xbe, 0x83, 0xbe, 0xef, 0xe7, 0xd8, 0x9f, 0xe6, 0x4f, 0xb4, 
-  0x0e, 0x70, 0xdf, 0x42, 0x39, 0xe2, 0xa7, 0xce, 0xbb, 0x41, 0xc8, 
-  0xe9, 0x31, 0xf9, 0xe9, 0x0c, 0x3a, 0x27, 0x23, 0x5b, 0xe8, 0xb8, 
-  0xf6, 0xff, 0xa4, 0x78, 0x3e, 0x1a, 0x9a, 0x4f, 0xcb, 0xd2, 0x83, 
-  0xeb, 0x09, 0x84, 0x32, 0xae, 0xea, 0x35, 0xaf, 0x98, 0xcd, 0x70, 
-  0x28, 0x0d, 0x9a, 0xe8, 0x06, 0x49, 0xc1, 0xa4, 0xfa, 0xe4, 0xaf, 
-  0x03, 0x46, 0x16, 0x7e, 0x45, 0x17, 0x2c, 0x7e, 0x4c, 0x06, 0x02, 
-  0xd1, 0x3d, 0x4d, 0xc4, 0x65, 0xb8, 0x68, 0xf3, 0x2e, 0x45, 0xc0, 
-  0x4a, 0x7d, 0x54, 0xd1, 0xd4, 0xd4, 0xfc, 0xbe, 0xcd, 0xf1, 0xae, 
-  0x1d, 0x53, 0x79, 0xb1, 0x3e, 0x61, 0x4f, 0x2b, 0x4b, 0xb4, 0x9b, 
-  0x06, 0x60, 0x02, 0x6e, 0xa6, 0xe1, 0x27, 0xd6, 0xa2, 0x92, 0xab, 
-  0x11, 0x1e, 0xc5, 0xdd, 0x0d, 0xa1, 0x38, 0x42, 0x2e, 0xb4, 0xbc, 
-  0xea, 0x3d, 0x03, 0xbd, 0x6c, 0x92, 0x48, 0x1d, 0x93, 0xcb, 0x4d, 
-  0xa9, 0x34, 0x34, 0x82, 0xec, 0xf8, 0xcb, 0xbd, 0x5b, 0x2a, 0xea, 
-  0x44, 0xd9, 0x6b, 0x89, 0xd1, 0xda, 0x9e, 0x3d, 0xeb, 0xd5, 0x64, 
-  0xf7, 0x5d, 0xf7, 0xc4, 0x12, 0x13, 0x34, 0x43, 0x75, 0x91, 0x4b, 
-  0x41, 0xb1, 0x1c, 0x14, 0x36, 0x87, 0xea, 0xf2, 0x0f, 0x83, 0xbb, 
-  0x8e, 0x63, 0x1f, 0x47, 0x19, 0x45, 0xc4, 0x23, 0x0d, 0x75, 0xcb, 
-  0x5b, 0x1b, 0x9b, 0xa1, 0xf4, 0x65, 0x38, 0x6e, 0x1a, 0x0c, 0x3e, 
-  0xdf, 0xf6, 0xf3, 0xda, 0x2a, 0x90, 0x98, 0xf7, 0xce, 0xf4, 0x86, 
-  0x68, 0x16, 0x3c, 0xca, 0x05, 0x6b, 0xa3, 0x9d, 0x11, 0x51, 0x18, 
-  0x21, 0x6b, 0x10, 0x99, 0xc7, 0x27, 0x6d, 0xc4, 0xa1, 0xe2, 0x19, 
-  0x00, 0xd0, 0xf3, 0xa4, 0x39, 0x46, 0x12, 0x37, 0x08, 0xbf, 0x6c, 
-  0x92, 0x04, 0x2c, 0x3e, 0x38, 0xfe, 0x3f, 0xf2, 0x08, 0xee, 0x44, 
-  0x6a, 0x42, 0x06, 0xf8, 0x8a, 0x35, 0xa3, 0x17, 0x54, 0xc3, 0x92, 
-  0x1e, 0xb8, 0xad, 0x8a, 0x29, 0x16, 0x1b, 0x82, 0x49, 0x07, 0x93, 
-  0x48, 0xfc, 0xcd, 0xa3, 0x37, 0xa1, 0x61, 0x33, 0x81, 0x2d, 0x0a, 
-  0x1c, 0xcc, 0xeb, 0xa8, 0xe9, 0x82, 0x05, 0x7c, 0x95, 0x54, 0xa9, 
-  0xd5, 0x5c, 0xed, 0x4a, 0x8b, 0xf4, 0x78, 0xe6, 0x04, 0x37, 0x89, 
-  0xc2, 0x1d, 0x41, 0x4f, 0x6c, 0x66, 0xea, 0xa8, 0xaa, 0xfe, 0x9d, 
-  0x76, 0xd9, 0xbc, 0x7e, 0xca, 0x7f, 0xea, 0x2b, 0x7a, 0x07, 0x43, 
-  0x4a, 0x26, 0x5f, 0x01, 0xdb, 0x27, 0x1d, 0x3f, 0x9a, 0x39, 0xbe, 
-  0x3f, 0x93, 0x4f, 0x48, 0xa4, 0x2d, 0xb4, 0x0c, 0xc3, 0x01, 0x1d, 
-  0x9f, 0xf5, 0x0e, 0x53, 0x11, 0xcc, 0xae, 0x00, 0xf1, 0x27, 0xfe, 
-  0xdf, 0x41, 0xd8, 0x9d, 0xec, 0x24, 0x16, 0x58, 0xa8, 0x95, 0x97, 
-  0x97, 0x18, 0xd2, 0x66, 0xb7, 0x51, 0xff, 0x52, 0x60, 0x83, 0x1e, 
-  0xc4, 0xa1, 0xdb, 0x7b, 0x21, 0xfb, 0x72, 0xc9, 0xaf, 0x61, 0x3b, 
-  0xdf, 0x01, 0xc8, 0x86, 0x7c, 0xb3, 0x6c, 0x2f, 0xf3, 0xd5, 0x0b, 
-  0x7f, 0x84, 0x91, 0x50, 0xd3, 0x4c, 0x5d, 0x62, 0xf3, 0x68, 0xc2, 
-  0x86, 0xb1, 0xcc, 0x81, 0xfb, 0xbf, 0x28, 0x0e, 0xef, 0xb4, 0x76, 
-  0xda, 0xa4, 0x3f, 0x16, 0x25, 0xb3, 0x03, 0x0f, 0x46, 0xc2, 0x32, 
-  0xd3, 0x8b, 0x34, 0x3d, 0x1f, 0x89, 0x7e, 0x3d, 0x6a, 0x8a, 0xe2, 
-  0xb2, 0x0d, 0x9c, 0x8c, 0xca, 0x59, 0x1f, 0x3c, 0x1a, 0xfe, 0x67, 
-  0x76, 0xeb, 0xd7, 0xe6, 0xbe, 0xd2, 0xab, 0xfd, 0xda, 0xe4, 0x49, 
-  0xfe, 0x68, 0x18, 0xf3, 0x91, 0x65, 0x7e, 0x7a, 0x44, 0x63, 0xfd, 
-  0x50, 0xe7, 0x8c, 0xdd, 0xa8, 0xfd, 0x95, 0xc7, 0xb5, 0x93, 0xee, 
-  0x03, 0x10, 0xb6, 0xa3, 0xa9, 0x22, 0xe6, 0xd9, 0x92, 0xf9, 0x58, 
-  0x98, 0xc3, 0x92, 0xc9, 0xc7, 0x14, 0x7b, 0x96, 0x6a, 0x73, 0xe7, 
-  0xc7, 0xf0, 0x0c, 0x23, 0xd5, 0xa4, 0x2b, 0x41, 0x15, 0xcb, 0x01, 
-  0x44, 0x63, 0x79, 0xd9, 0xa6, 0x4d, 0xfe, 0x6c, 0xc0, 0x9d, 0xaa, 
-  0xe8, 0xa6, 0xfc, 0x03, 0xed, 0xdb, 0xa3, 0xc5, 0x65, 0x5f, 0x67, 
-  0xf9, 0x94, 0x35, 0xad, 0x9b, 0xe3, 0xc2, 0x4e, 0x64, 0xa0, 0xae, 
-  0xf0, 0x95, 0x5b, 0xe5, 0xec, 0x8d, 0x04, 0x9c, 0xc1, 0x93, 0x10, 
-  0xde, 0x9b, 0x76, 0xe1, 0xf6, 0x3c, 0x66, 0xc5, 0xe8, 0x8c, 0xfa, 
-  0x03, 0x6f, 0x01, 0xa1, 0x9b, 0xd3, 0xa5, 0x1c, 0xec, 0xf1, 0x4c, 
-  0xc0, 0x92, 0xaa, 0x7c, 0x96, 0x96, 0xc3, 0x34, 0xd4, 0xf8, 0x79, 
-  0xb2, 0x35, 0xe1, 0x7a, 0xd6, 0xac, 0x0c, 0x24, 0xd8, 0x95, 0xa6, 
-  0x5f, 0xbb, 0x2f, 0x8d, 0x15, 0x43, 0x75, 0x0f, 0x8c, 0x87, 0x49, 
-  0xaf, 0xde, 0xad, 0x63, 0xe7, 0x45, 0x7d, 0xb3, 0x23, 0x20, 0x08, 
-  0xca, 0xd6, 0xe2, 0xeb, 0xb8, 0xa7, 0x7f, 0x46, 0xa9, 0x46, 0x84, 
-  0xd7, 0xa8, 0x0d, 0x0d, 0x65, 0x40, 0xfa, 0xcc, 0x55, 0xb0, 0x1e, 
-  0xa7, 0x12, 0x22, 0x49, 0xf7, 0x0e, 0x25, 0x6a, 0xf8, 0xc2, 0xc0, 
-  0x97, 0x48, 0xa5, 0x03, 0xdd, 0xc3, 0x09, 0x26, 0x67, 0x15, 0xbd, 
-  0xd4, 0x0e, 0x7f, 0x78, 0xf6, 0x60, 0x0d, 0xf3, 0x23, 0x3c, 0x25, 
-  0xc0, 0x1d, 0xa7, 0x45, 0x3d, 0x40, 0x80, 0x80, 0x5d, 0xe4, 0xd4, 
-  0xda, 0x92, 0x91, 0xc7, 0x68, 0x58, 0x72, 0xb2, 0x45, 0xd5, 0x41, 
-  0x1c, 0x47, 0x04, 0x01, 0x86, 0xa3, 0x55, 0xf6, 0xa8, 0xc8, 0x82, 
-  0x0d, 0xe1, 0x42, 0xf7, 0x01, 0xa0, 0x8f, 0x43, 0x9d, 0x6a, 0xf1, 
-  0x72, 0x75, 0xd0, 0xed, 0x44, 0xf8, 0x68, 0x89, 0xf0, 0x78, 0xbd, 
-  0x8c, 0x50, 0x00, 0x16, 0x6a, 0xa8, 0x57, 0x80, 0xea, 0x59, 0x04, 
-  0x01, 0x64, 0xeb, 0x5c, 0x93, 0x1c, 0xb3, 0x53, 0x03, 0x15, 0x57, 
-  0xcd, 0xfa, 0x24, 0x36, 0x29, 0x22, 0xa7, 0xa8, 0x37, 0x13, 0x34, 
-  0x4a, 0xd1, 0x82, 0xb6, 0x87, 0x15, 0xf8, 0x64, 0x5f, 0x9c, 0x64, 
-  0xfe, 0xf5, 0x5a, 0xb3, 0x53, 0xea, 0x0d, 0x2f, 0xcb, 0x03, 0xfd, 
-  0x0d, 0x3f, 0x05, 0x0f, 0xcf, 0x6f, 0xe2, 0x38, 0x1c, 0x25, 0xa3, 
-  0xa9, 0x83, 0x3d, 0x01, 0xda, 0x38, 0xbe, 0x16, 0x36, 0xb2, 0xa5, 
-  0x61, 0x9d, 0x32, 0x24, 0x9d, 0x16, 0x92, 0x55, 0xe7, 0x09, 0x7c, 
-  0x0a, 0x9f, 0xdb, 0xb0, 0xdd, 0x47, 0x09, 0xb4, 0x4b, 0x07, 0x2c, 
-  0x70, 0x3f, 0xcf, 0x53, 0x11, 0x08, 0x3b, 0x89, 0xc8, 0xbe, 0x7a, 
-  0xaf, 0x83, 0x3a, 0x9d, 0x1b, 0x51, 0xfa, 0x3a, 0xb0, 0xb7, 0xa2, 
-  0x59, 0x39, 0x7b, 0x71, 0x36, 0x55, 0x75, 0x28, 0x0a, 0xce, 0x5c, 
-  0x76, 0x8c, 0x0c, 0x00, 0xd6, 0xa7, 0x45, 0x34, 0xdd, 0x4c, 0xea, 
-  0x4d, 0x3e, 0x3f, 0xf8, 0x09, 0x5f, 0xbb, 0x71, 0x72, 0xe9, 0x70, 
-  0xa6, 0xa9, 0xd7, 0x7e, 0xa2, 0xd6, 0x1a, 0xd9, 0xdd, 0xe4, 0x48, 
-  0xe4, 0xec, 0x56, 0x14, 0x2d, 0xf0, 0x56, 0x20, 0x38, 0x49, 0x61, 
-  0x83, 0xd3, 0xa9, 0xcc, 0x7e, 0x78, 0x16, 0xd5, 0x9b, 0xad, 0x4b, 
-  0xaf, 0x08, 0x85, 0x9c, 0xf8, 0xe2, 0x56, 0x59, 0x91, 0x50, 0xda, 
-  0xd5, 0x2e, 0x05, 0x8a, 0xd5, 0xb9, 0x10, 0xf3, 0x65, 0xaa, 0x7f, 
-  0xbe, 0xbd, 0x31, 0x64, 0xe8, 0xfd, 0xf9, 0xae, 0x09, 0x7a, 0x7c, 
-  0x6e, 0x8a, 0x5b, 0x11, 0xe8, 0xbe, 0x74, 0x26, 0x24, 0xf9, 0x9d, 
-  0xe1, 0xc5, 0xc2, 0x0e, 0x22, 0x97, 0xb2, 0x5b, 0xce, 0x7f, 0xe5, 
-  0xba, 0xc0, 0xc9, 0x69, 0xac, 0xfd, 0xa1, 0x5d, 0x2f, 0x16, 0x33, 
-  0xe6, 0x9b, 0x48, 0xe7, 0xa5, 0x44, 0x87, 0xa8, 0x4a, 0x1f, 0xe0, 
-  0x82, 0xdb, 0xb8, 0x74, 0x3f, 0x21, 0x1d, 0x14, 0x1e, 0xba, 0xe2, 
-  0x4b, 0xa8, 0xc7, 0xcf, 0x5f, 0xe9, 0xd1, 0x60, 0xe9, 0x5c, 0x5f, 
-  0x54, 0x4c, 0xbc, 0xa8, 0x04, 0x28, 0xe5, 0xd0, 0xfe, 0xb2, 0x44, 
-  0xff, 0x46, 0x78, 0xf8, 0x65, 0x7c, 0xda, 0xb3, 0xe9, 0xf2, 0x02, 
-  0x94, 0x98, 0x66, 0xa3, 0xcb, 0x7b, 0xbf, 0x4d, 0x9e, 0x79, 0x39, 
-  0xce, 0x5b, 0x30, 0x10, 0xc9, 0xa4, 0xd0, 0x18, 0xf1, 0xb8, 0x6d, 
-  0xde, 0x98, 0x85, 0xed, 0xc9, 0xbc, 0x3d, 0x63, 0xb2, 0x4a, 0x4f, 
-  0xb5, 0xb9, 0x40, 0xfb, 0x3e, 0x78, 0x93, 0xd6, 0xec, 0x37, 0x2c, 
-  0x58, 0x51, 0x6e, 0xbe, 0xdf, 0x05, 0xe2, 0x16, 0x52, 0xe6, 0x51, 
-  0x7b, 0xac, 0x7c, 0x44, 0xba, 0xe4, 0xcc, 0x23, 0x25, 0xdd, 0x56, 
-  0xcb, 0x11, 0x96, 0x9f, 0x2f, 0x29, 0xf6, 0xc3, 0x17, 0xd9, 0x8d, 
-  0xf4, 0x6e, 0x0d, 0xd7, 0x17, 0x81, 0x00, 0x9c, 0x24, 0xbc, 0xbc, 
-  0x58, 0x3b, 0x9e, 0x95, 0xe2, 0x11, 0x0d, 0xa8, 0x1e, 0x6d, 0x58, 
-  0x00, 0x36, 0x75, 0xf8, 0x8b, 0xbe, 0xef, 0x65, 0xa4, 0x5d, 0x6f, 
-  0x6d, 0x45, 0x7c, 0x5f, 0xb6, 0x9e, 0x63, 0x13, 0x3f, 0xe5, 0x4e, 
-  0x19, 0x7c, 0x9b, 0x12, 0xa8, 0x74, 0x0e, 0x15, 0x07, 0x91, 0xe2, 
-  0x72, 0xca, 0x23, 0x4f, 0x58, 0x91, 0x65, 0x03, 0x51, 0xa5, 0xdb, 
-  0xb9, 0x0b, 0xc3, 0xe7, 0x55, 0x8a, 0x32, 0x5b, 0xfd, 0x57, 0xa1, 
-  0x01, 0xe2, 0x80, 0xbe, 0xae, 0xbf, 0x7a, 0x91, 0x9c, 0xec, 0x81, 
-  0x77, 0x6b, 0xa2, 0xf6, 0x29, 0xdd, 0xf4, 0x12, 0x3c, 0x7e, 0x24, 
-  0xfe, 0xfb, 0xae, 0xf7, 0xa4, 0x8a, 0x4c, 0x36, 0xd6, 0x96, 0x35, 
-  0x15, 0xa4, 0x3c, 0x74, 0x35, 0x89, 0xc8, 0x5e, 0xfa, 0xc9, 0x6d, 
-  0xcd, 0xd0, 0x08, 0x8d, 0x70, 0x2b, 0x69, 0xb4, 0xf2, 0x76, 0x0b, 
-  0x91, 0x3b, 0xda, 0x10, 0x23, 0xea, 0xfa, 0xb1, 0x8e, 0x90, 0xa1, 
-  0x6f, 0x21, 0xbb, 0x6b, 0xaa, 0x18, 0x8a, 0xa0, 0xdb, 0x25, 0xfa, 
-  0xb1, 0xec, 0x81, 0xfd, 0x8b, 0x86, 0xeb, 0xfb, 0xc8, 0x2b, 0xdc, 
-  0x64, 0xe3, 0x20, 0xb2, 0x8b, 0x46, 0x0b, 0x6f, 0x49, 0x38, 0xee, 
-  0xb8, 0x59, 0xc6, 0x33, 0x7b, 0x78, 0xc0, 0x1a, 0xba, 0x2a, 0xcc, 
-  0xf9, 0xc8, 0x25, 0x4e, 0x35, 0xe0, 0xba, 0x2c, 0x94, 0x08, 0x8b, 
-  0x52, 0x98, 0x6f, 0x45, 0x1e, 0xbf, 0xed, 0xc6, 0x0a, 0xfd, 0xe6, 
-  0x14, 0x5c, 0x04, 0x66, 0x7c, 0x31, 0x0f, 0x2c, 0x63, 0x24, 0x10, 
-  0xdb, 0x58, 0xdf, 0x62, 0x65, 0x04, 0x80, 0x01, 0x14, 0x02, 0x00, 
-  0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0d, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0d, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0d, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0d, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x0d, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x0d, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x0d, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-  0x30, 0x30, 0x30, 0x0d, 0x63, 0x6c, 0x65, 0x61, 0x72, 0x74, 0x6f, 
-  0x6d, 0x61, 0x72, 0x6b, 0x0a, 0x80, 0x03, 
-};
-
-const int default_font_size = sizeof(default_font);

+ 0 - 22
pandaapp/src/indexify/default_font.h

@@ -1,22 +0,0 @@
-// Filename: default_font.h
-// Created by:  drose (04Apr02)
-//
-////////////////////////////////////////////////////////////////////
-///
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#ifndef DEFAULT_FONT_H
-#define DEFAULT_FONT_H
-
-extern const unsigned char default_font[];
-extern const int default_font_size;
-
-#endif
-

+ 0 - 297
pandaapp/src/indexify/default_index_icons.cxx

@@ -1,297 +0,0 @@
-// Filename: default_index_icons.cxx
-// Created by:  drose (04Apr02)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#include "default_index_icons.h"
-
-// This file was generated from left.png, right.png, up.png,
-// movie.png, and sound.png; it provides data for default icons if the
-// -i parameter is supplied on the command line.
-
-const char *default_left_icon_filename = "left.png";
-const char *default_right_icon_filename = "right.png";
-const char *default_up_icon_filename = "up.png";
-const char *default_movie_icon_filename = "movie.png";
-const char *default_sound_icon_filename = "sound.png";
-
-/*
-
-Use this series of commands to regenerate the tables:
-
-bin2c -n default_left_icon left.png >> default_index_icons.cxx
-bin2c -n default_right_icon right.png >> default_index_icons.cxx
-bin2c -n default_up_icon up.png >> default_index_icons.cxx
-bin2c -n default_movie_icon movie.png >> default_index_icons.cxx
-bin2c -n default_sound_icon sound.png >> default_index_icons.cxx
-
-*/
-
-/*
- * This table was generated by the command:
- *
- * bin2c -n default_left_icon left.png
- */
-
-const unsigned char default_left_icon[] = {
-  0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00,
-  0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
-  0x00, 0x1e, 0x08, 0x03, 0x00, 0x00, 0x00, 0x0c, 0xee, 0x5e, 0x90,
-  0x00, 0x00, 0x00, 0x04, 0x67, 0x41, 0x4d, 0x41, 0x00, 0x00, 0xb1,
-  0x8f, 0x0b, 0xfc, 0x61, 0x05, 0x00, 0x00, 0x00, 0x2d, 0x50, 0x4c,
-  0x54, 0x45, 0xeb, 0xed, 0xee, 0xdd, 0xe1, 0xe3, 0xcf, 0xd4, 0xd7,
-  0xc2, 0xc9, 0xcd, 0xb5, 0xbd, 0xc2, 0xae, 0xb7, 0xbc, 0xa7, 0xb0,
-  0xb6, 0x99, 0xa4, 0xab, 0x8c, 0x98, 0xa0, 0x7e, 0x8c, 0x95, 0x77,
-  0x86, 0x8f, 0x6c, 0x7a, 0x83, 0x60, 0x6c, 0x74, 0x55, 0x60, 0x67,
-  0x4f, 0x5a, 0x60, 0x44, 0x10, 0xa7, 0xee, 0x00, 0x00, 0x01, 0x96,
-  0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x7d, 0x93, 0xdd, 0x92, 0xec,
-  0x20, 0x08, 0x84, 0x47, 0x7e, 0x04, 0xd4, 0xe4, 0xfd, 0x1f, 0xf7,
-  0x74, 0xe3, 0x9c, 0xaa, 0xbd, 0xd8, 0x5a, 0x2f, 0x66, 0x12, 0x3f,
-  0x81, 0xb6, 0x21, 0x9f, 0xcf, 0x2f, 0x4b, 0xe4, 0xfb, 0x70, 0x7e,
-  0xa3, 0x9f, 0x31, 0xee, 0xff, 0x24, 0x56, 0x15, 0x8b, 0xa9, 0x63,
-  0x08, 0x96, 0xe9, 0xf8, 0x0c, 0x35, 0x9f, 0xa6, 0xa2, 0xb5, 0x89,
-  0x45, 0x67, 0xba, 0xca, 0x10, 0x33, 0x73, 0x13, 0x9c, 0x53, 0x2e,
-  0xb3, 0x45, 0x6c, 0x86, 0x27, 0x1c, 0xc6, 0x29, 0x47, 0x26, 0xe2,
-  0x7e, 0x33, 0xad, 0x02, 0x8e, 0x00, 0x9d, 0xd3, 0xb8, 0x21, 0x0c,
-  0x14, 0x3b, 0xce, 0x42, 0xa3, 0x16, 0x05, 0x4c, 0x77, 0xc7, 0x19,
-  0x60, 0x63, 0xca, 0xb9, 0x9f, 0x07, 0x69, 0x20, 0x26, 0xd7, 0x95,
-  0xa6, 0xea, 0xdc, 0x40, 0x65, 0xf3, 0x7a, 0xdf, 0xe7, 0xa0, 0x1e,
-  0xb4, 0xcc, 0x6c, 0x69, 0x54, 0x3c, 0xad, 0x57, 0x3e, 0x58, 0xa7,
-  0xb1, 0x68, 0x54, 0x47, 0xb3, 0xa4, 0xff, 0x80, 0x7b, 0xb7, 0x46,
-  0xcd, 0xfc, 0x62, 0xe4, 0x45, 0x81, 0xf3, 0x36, 0x5c, 0x6b, 0x07,
-  0x6f, 0xe6, 0x19, 0xc4, 0x14, 0x84, 0x3b, 0xd5, 0x83, 0xa2, 0x7b,
-  0xef, 0xca, 0x5c, 0xd1, 0x2a, 0xcf, 0xba, 0xf7, 0x86, 0xde, 0x42,
-  0xda, 0xf7, 0x41, 0x64, 0x55, 0x56, 0x39, 0xb2, 0x89, 0x1e, 0x9a,
-  0xea, 0x6e, 0x1a, 0xcc, 0x4b, 0x0c, 0x08, 0xba, 0x9c, 0x29, 0x75,
-  0x37, 0x06, 0x7d, 0xbb, 0xea, 0x73, 0x16, 0x28, 0x70, 0xb5, 0x91,
-  0xd6, 0xd1, 0xbc, 0x17, 0xac, 0xa0, 0x60, 0x64, 0x66, 0x74, 0x26,
-  0x5d, 0xd6, 0x9b, 0x9c, 0x1d, 0x10, 0x49, 0x62, 0x42, 0xe2, 0x0a,
-  0x52, 0x59, 0xed, 0x1a, 0xcc, 0x62, 0xae, 0xd8, 0x0c, 0xcf, 0x3e,
-  0x10, 0x74, 0xf2, 0xde, 0xdb, 0x33, 0xd9, 0x14, 0x38, 0x57, 0x67,
-  0xdf, 0xec, 0x3b, 0x18, 0xe0, 0xbb, 0x5b, 0x12, 0xc0, 0xd7, 0xd9,
-  0x80, 0xe8, 0x95, 0x51, 0x3b, 0x69, 0xe2, 0xad, 0xad, 0x16, 0x41,
-  0xda, 0xdd, 0x44, 0x85, 0x8a, 0x2c, 0x36, 0xd1, 0xa4, 0x1b, 0x0a,
-  0xbf, 0x1d, 0xed, 0x61, 0x13, 0xc4, 0xdc, 0x29, 0x3c, 0x31, 0x4d,
-  0xae, 0x63, 0x4e, 0x46, 0x63, 0xb0, 0xe4, 0x36, 0x5b, 0x67, 0xc0,
-  0xfb, 0xeb, 0x1a, 0x42, 0x26, 0x3d, 0x97, 0x89, 0xdc, 0x18, 0x17,
-  0x12, 0x4e, 0x05, 0x86, 0x6a, 0xb9, 0xd0, 0xd5, 0x6c, 0x5b, 0xa8,
-  0x0b, 0xd9, 0x48, 0xfa, 0xc7, 0xfe, 0xcf, 0xe5, 0x6a, 0x7c, 0x27,
-  0x8c, 0x9b, 0x82, 0xa1, 0x31, 0xef, 0xa9, 0x1e, 0xa8, 0xb9, 0xf7,
-  0xd7, 0xd4, 0x56, 0xae, 0x2d, 0xa0, 0xa7, 0xb2, 0xa5, 0x7e, 0x3d,
-  0xff, 0x33, 0x7a, 0xf6, 0x45, 0xe1, 0xdc, 0x84, 0x3a, 0x98, 0xb6,
-  0xcf, 0xc2, 0x0b, 0xac, 0xa1, 0x03, 0xf8, 0xcc, 0xce, 0x69, 0xa3,
-  0x89, 0xc9, 0xd1, 0x9a, 0xc0, 0x73, 0x9e, 0x8d, 0xad, 0x7f, 0xbd,
-  0xcf, 0x11, 0xe9, 0xc6, 0x04, 0xc1, 0x3d, 0x00, 0x00, 0x00, 0x00,
-  0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
-};
-
-const int default_left_icon_len = 536;
-
-
-/*
- * This table was generated by the command:
- *
- * bin2c -n default_right_icon right.png
- */
-
-const unsigned char default_right_icon[] = {
-  0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00,
-  0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
-  0x00, 0x1e, 0x08, 0x03, 0x00, 0x00, 0x00, 0x0c, 0xee, 0x5e, 0x90,
-  0x00, 0x00, 0x00, 0x04, 0x67, 0x41, 0x4d, 0x41, 0x00, 0x00, 0xb1,
-  0x8f, 0x0b, 0xfc, 0x61, 0x05, 0x00, 0x00, 0x00, 0x2d, 0x50, 0x4c,
-  0x54, 0x45, 0xec, 0xee, 0xef, 0xd8, 0xdc, 0xdf, 0xca, 0xd0, 0xd3,
-  0xc3, 0xc9, 0xcd, 0xae, 0xb7, 0xbc, 0xa8, 0xb1, 0xb7, 0x99, 0xa4,
-  0xab, 0x93, 0x9f, 0xa6, 0x86, 0x93, 0x9b, 0x77, 0x86, 0x8f, 0x71,
-  0x80, 0x89, 0x60, 0x6c, 0x74, 0x5b, 0x67, 0x6e, 0x50, 0x5b, 0x61,
-  0x45, 0x4e, 0x53, 0xeb, 0x64, 0x46, 0x0c, 0x00, 0x00, 0x01, 0x8c,
-  0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x6d, 0x92, 0x59, 0x6e, 0xc3,
-  0x30, 0x0c, 0x44, 0x2d, 0x71, 0x95, 0x94, 0xf4, 0xfe, 0xc7, 0xed,
-  0xcc, 0xc8, 0x40, 0x7f, 0x4a, 0x04, 0x89, 0xc3, 0xc7, 0x65, 0x4c,
-  0xf2, 0x79, 0xfe, 0xb1, 0x39, 0xde, 0x87, 0xf3, 0xfc, 0x6b, 0x2f,
-  0x0e, 0xe2, 0x69, 0xd3, 0x6c, 0xce, 0x31, 0xf8, 0xc1, 0xef, 0x33,
-  0x3c, 0x33, 0xc3, 0xe7, 0x58, 0x1b, 0x18, 0xc8, 0x33, 0x8c, 0x6c,
-  0x20, 0x14, 0x99, 0xd3, 0x3d, 0x1c, 0x6e, 0x61, 0x64, 0x44, 0x05,
-  0x53, 0xdd, 0xcd, 0x6d, 0xa8, 0xde, 0x44, 0x45, 0x5b, 0x0d, 0x0c,
-  0xa7, 0x79, 0x7d, 0x62, 0x98, 0x52, 0xc6, 0x20, 0x1e, 0xc2, 0x0b,
-  0x38, 0x13, 0xbc, 0x7f, 0xbe, 0x1b, 0x71, 0x72, 0x8f, 0x71, 0x45,
-  0x8c, 0x22, 0x8e, 0x70, 0xf7, 0xf5, 0xf3, 0xfd, 0x7c, 0xda, 0x21,
-  0x03, 0x32, 0x81, 0xf9, 0xfd, 0x44, 0xdf, 0xde, 0xd3, 0xfa, 0xfb,
-  0x39, 0xb0, 0x36, 0xbe, 0x86, 0x5d, 0x8d, 0x23, 0x97, 0x94, 0xa3,
-  0x56, 0x01, 0xef, 0x7d, 0xce, 0x4e, 0x89, 0x12, 0xb6, 0x62, 0xb6,
-  0xa2, 0xf3, 0x0b, 0x4a, 0x3b, 0xcb, 0xe9, 0xa0, 0x78, 0xeb, 0x7c,
-  0x31, 0xb2, 0xcf, 0x5e, 0xb2, 0x7d, 0xca, 0x5c, 0x21, 0x7e, 0x54,
-  0x9c, 0x73, 0xe9, 0xef, 0x21, 0xeb, 0x06, 0xdf, 0xbb, 0x9d, 0x6f,
-  0xe1, 0xe7, 0xdc, 0x6c, 0xb3, 0x22, 0x86, 0xbf, 0x5a, 0x05, 0x76,
-  0x72, 0x04, 0xfb, 0xdc, 0xb1, 0xcc, 0x99, 0xc4, 0x50, 0x5e, 0x85,
-  0x02, 0x94, 0x90, 0xc8, 0x39, 0x17, 0x73, 0xac, 0x12, 0xbe, 0xbb,
-  0x6f, 0x7e, 0xb3, 0xf9, 0xc5, 0x9a, 0x91, 0x13, 0x93, 0xca, 0x5c,
-  0xe2, 0xa6, 0x86, 0xaa, 0x55, 0x09, 0xaf, 0x0b, 0xcb, 0x4c, 0x0d,
-  0x67, 0xd5, 0xa3, 0xf5, 0xf9, 0xed, 0xbd, 0x29, 0x9d, 0x4d, 0x45,
-  0xcd, 0x36, 0xb3, 0xbd, 0x2a, 0xa1, 0x9c, 0xaf, 0x8d, 0xfc, 0xd0,
-  0xfa, 0x5d, 0x31, 0xea, 0x1d, 0x59, 0xe9, 0xf9, 0x01, 0x5a, 0x2b,
-  0xe1, 0xc4, 0x34, 0x71, 0x2b, 0xec, 0xdd, 0x4b, 0xc5, 0x33, 0x2d,
-  0x0e, 0x87, 0x31, 0x4d, 0x58, 0x3f, 0x38, 0x8c, 0x08, 0x4a, 0xa3,
-  0x0b, 0xd2, 0x96, 0xf1, 0x5e, 0x5c, 0x1b, 0x9a, 0xce, 0x5b, 0x8b,
-  0x54, 0x36, 0x1e, 0xe3, 0x68, 0x4e, 0x91, 0x1c, 0x02, 0x37, 0xcc,
-  0x2a, 0xa5, 0x4b, 0x8d, 0xc4, 0x7c, 0x43, 0x04, 0x97, 0x83, 0xd6,
-  0xda, 0x18, 0x2f, 0xf5, 0x1e, 0xb2, 0xaa, 0x22, 0x68, 0x28, 0x92,
-  0x17, 0x39, 0x74, 0x6b, 0xfb, 0xbd, 0xd4, 0xa1, 0x6a, 0x8a, 0x82,
-  0xaa, 0x0c, 0x1e, 0xbb, 0x79, 0xfc, 0x0d, 0xf5, 0x35, 0xd2, 0x08,
-  0x5d, 0x1b, 0x12, 0x98, 0x1d, 0x7b, 0x65, 0x61, 0x53, 0x19, 0x68,
-  0xcf, 0x75, 0x9f, 0x85, 0x3f, 0xa9, 0xb5, 0x43, 0xf9, 0xd1, 0x1a,
-  0xab, 0x89, 0xc9, 0x79, 0x6f, 0x78, 0x6e, 0xac, 0x2f, 0xe3, 0x17,
-  0x29, 0xef, 0x0f, 0xde, 0x36, 0xeb, 0x43, 0xec, 0x00, 0x00, 0x00,
-  0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
-};
-
-const int default_right_icon_len = 526;
-
-
-/*
- * This table was generated by the command:
- *
- * bin2c -n default_up_icon up.png
- */
-
-const unsigned char default_up_icon[] = {
-  0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00,
-  0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
-  0x00, 0x1e, 0x08, 0x03, 0x00, 0x00, 0x00, 0x0c, 0xee, 0x5e, 0x90,
-  0x00, 0x00, 0x00, 0x04, 0x67, 0x41, 0x4d, 0x41, 0x00, 0x00, 0xb1,
-  0x8f, 0x0b, 0xfc, 0x61, 0x05, 0x00, 0x00, 0x00, 0x2d, 0x50, 0x4c,
-  0x54, 0x45, 0xeb, 0xed, 0xee, 0xdd, 0xe1, 0xe3, 0xcf, 0xd4, 0xd7,
-  0xc9, 0xcf, 0xd2, 0xc2, 0xc9, 0xcd, 0xb4, 0xbc, 0xc1, 0xad, 0xb6,
-  0xbb, 0x98, 0xa3, 0xaa, 0x92, 0x9e, 0xa5, 0x7d, 0x8b, 0x94, 0x70,
-  0x7f, 0x88, 0x65, 0x72, 0x7a, 0x5f, 0x6b, 0x73, 0x54, 0x5f, 0x66,
-  0x4a, 0x53, 0x59, 0xac, 0xfc, 0xc3, 0x4d, 0x00, 0x00, 0x01, 0xa3,
-  0x49, 0x44, 0x41, 0x54, 0x78, 0xda, 0x6d, 0x53, 0x59, 0x96, 0xc3,
-  0x30, 0x08, 0x8b, 0x59, 0xbd, 0x90, 0xdc, 0xff, 0xb8, 0x23, 0xe1,
-  0x7e, 0x0e, 0xaf, 0x75, 0x5a, 0x8b, 0x45, 0x02, 0xf2, 0x3c, 0xff,
-  0x98, 0xc8, 0xef, 0x47, 0xfd, 0x87, 0x3e, 0x63, 0xdc, 0x67, 0x10,
-  0x16, 0x53, 0x33, 0x15, 0x19, 0xfc, 0xa8, 0x8c, 0x21, 0x9e, 0x99,
-  0xe1, 0x22, 0xeb, 0x00, 0x06, 0xe4, 0x19, 0x86, 0x6b, 0x98, 0xeb,
-  0x78, 0x86, 0x7a, 0x84, 0x9b, 0xe8, 0xde, 0x80, 0x55, 0x34, 0x66,
-  0x20, 0x4c, 0xdc, 0x1d, 0x41, 0xf0, 0x33, 0x55, 0x35, 0xf7, 0xb5,
-  0x00, 0xbb, 0x9b, 0x7f, 0xdf, 0xf7, 0xbe, 0x6f, 0x1f, 0x3f, 0x13,
-  0x73, 0x5b, 0x8c, 0xce, 0xf4, 0x86, 0xeb, 0x7d, 0xeb, 0x9c, 0x2a,
-  0x1c, 0x78, 0xa0, 0xd0, 0x98, 0x84, 0x03, 0x46, 0xf8, 0xb4, 0x11,
-  0xdc, 0xfb, 0x1c, 0xd3, 0x31, 0x62, 0xb2, 0x36, 0x8a, 0x5b, 0x04,
-  0xf8, 0xa3, 0xb2, 0x3b, 0x1e, 0x26, 0xa2, 0xe0, 0x20, 0xc9, 0xda,
-  0xd6, 0x8c, 0x89, 0xc0, 0x20, 0xb1, 0x71, 0xc0, 0x62, 0x93, 0xd1,
-  0x66, 0x70, 0xb0, 0x0b, 0xaf, 0xa9, 0x74, 0x71, 0xf8, 0x10, 0xce,
-  0x1f, 0x0c, 0xa5, 0x06, 0xc0, 0xab, 0x80, 0x41, 0x68, 0xe0, 0x52,
-  0xa3, 0x48, 0x8d, 0xbe, 0xe8, 0x83, 0x22, 0xc3, 0x79, 0x6b, 0xb1,
-  0x81, 0x2c, 0x05, 0xf7, 0xaa, 0xab, 0x1b, 0x2d, 0x00, 0xec, 0x1b,
-  0xea, 0xaa, 0x39, 0xe2, 0x3f, 0x52, 0x9e, 0x6a, 0x61, 0xde, 0x74,
-  0xd4, 0x5b, 0xdd, 0x62, 0x2a, 0x04, 0x20, 0xfd, 0x85, 0x1d, 0xca,
-  0x40, 0xc4, 0xd7, 0xf7, 0x15, 0x34, 0xa3, 0x4b, 0x24, 0xd3, 0x4c,
-  0x7a, 0xba, 0x72, 0xa5, 0x31, 0x78, 0xc3, 0xbc, 0xd3, 0x83, 0x5b,
-  0x8f, 0x04, 0x53, 0xec, 0x60, 0x56, 0xde, 0x7b, 0xad, 0x3d, 0xc9,
-  0x05, 0xfa, 0xa5, 0x75, 0xa3, 0x96, 0x33, 0xd7, 0xc7, 0x9e, 0xaf,
-  0x35, 0xd7, 0xbe, 0xc4, 0xcc, 0x3a, 0x3a, 0xe6, 0x44, 0x39, 0x87,
-  0x28, 0x54, 0x5e, 0xc4, 0x17, 0x96, 0x81, 0x62, 0xba, 0x76, 0x24,
-  0x60, 0x4b, 0x8e, 0x6b, 0x13, 0x9b, 0x73, 0xcf, 0xe8, 0xee, 0xf7,
-  0x40, 0x15, 0xbb, 0x63, 0x52, 0x28, 0x7c, 0x43, 0x67, 0x22, 0x3d,
-  0xa6, 0xe8, 0x12, 0xd1, 0xbb, 0x16, 0x21, 0xf3, 0x25, 0x3c, 0xe9,
-  0x00, 0x43, 0x76, 0xb4, 0x71, 0x04, 0x7b, 0xae, 0xcc, 0xf4, 0x36,
-  0xbc, 0x20, 0xab, 0xe1, 0x0d, 0x18, 0xeb, 0xd0, 0xba, 0x23, 0xcd,
-  0x79, 0x09, 0x82, 0x7d, 0x70, 0x3f, 0x8c, 0x5d, 0xde, 0x0d, 0x73,
-  0xfc, 0xb8, 0x4b, 0x8c, 0xb8, 0x0f, 0xca, 0xea, 0xbd, 0x3c, 0xa4,
-  0xc6, 0x8e, 0xb2, 0xe9, 0xb8, 0x94, 0x0e, 0x4b, 0x94, 0x1d, 0x03,
-  0x8c, 0xea, 0xfc, 0x9a, 0xaa, 0xfc, 0x2a, 0x3b, 0x6d, 0xdc, 0xf1,
-  0x7e, 0x21, 0x6e, 0x74, 0xec, 0x95, 0x13, 0x7c, 0x49, 0x36, 0xc1,
-  0x1c, 0xea, 0xf1, 0x27, 0xc9, 0x72, 0xe5, 0x83, 0xc5, 0xad, 0x16,
-  0x43, 0x98, 0x78, 0xd5, 0xc6, 0x2b, 0x14, 0xf3, 0x1c, 0x5c, 0xfd,
-  0x01, 0x56, 0x35, 0x13, 0x9e, 0xbd, 0x4e, 0x62, 0x4e, 0x00, 0x00,
-  0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42, 0x60, 0x82
-};
-
-const int default_up_icon_len = 549;
-
-
-/*
- * This table was generated by the command:
- *
- * bin2c -n default_movie_icon movie.png
- */
-
-const unsigned char default_movie_icon[] = {
-  0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00,
-  0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00,
-  0x00, 0x16, 0x04, 0x03, 0x00, 0x00, 0x00, 0x32, 0x6f, 0xa1, 0x35,
-  0x00, 0x00, 0x00, 0x15, 0x50, 0x4c, 0x54, 0x45, 0xcc, 0xff, 0xff,
-  0xff, 0xff, 0xff, 0xcc, 0xcc, 0xcc, 0x99, 0x99, 0x99, 0x66, 0x66,
-  0x66, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, 0x89, 0x10, 0x3a, 0x6d,
-  0x00, 0x00, 0x00, 0x01, 0x62, 0x4b, 0x47, 0x44, 0x06, 0x61, 0x66,
-  0xb8, 0x7d, 0x00, 0x00, 0x00, 0x39, 0x49, 0x44, 0x41, 0x54, 0x78,
-  0xda, 0x63, 0x48, 0x83, 0x82, 0x04, 0x06, 0x86, 0x24, 0x35, 0x30,
-  0x4b, 0x29, 0x15, 0xc4, 0x74, 0x01, 0x02, 0x31, 0x10, 0x33, 0x2d,
-  0xcd, 0xd9, 0xd8, 0xd8, 0x58, 0x2c, 0x0d, 0x2c, 0x0a, 0x66, 0x2a,
-  0xa1, 0x32, 0x89, 0x50, 0x20, 0x08, 0x04, 0x50, 0x05, 0xf4, 0xb5,
-  0x02, 0xce, 0x64, 0x0d, 0x85, 0x02, 0x06, 0x00, 0x66, 0x25, 0x34,
-  0xea, 0x21, 0xc4, 0xeb, 0x5e, 0x00, 0x00, 0x00, 0x56, 0x74, 0x45,
-  0x58, 0x74, 0x43, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x54,
-  0x68, 0x69, 0x73, 0x20, 0x61, 0x72, 0x74, 0x20, 0x69, 0x73, 0x20,
-  0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x75, 0x62, 0x6c,
-  0x69, 0x63, 0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x20,
-  0x4b, 0x65, 0x76, 0x69, 0x6e, 0x20, 0x48, 0x75, 0x67, 0x68, 0x65,
-  0x73, 0x2c, 0x20, 0x6b, 0x65, 0x76, 0x69, 0x6e, 0x68, 0x40, 0x65,
-  0x69, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2c, 0x20, 0x53, 0x65, 0x70,
-  0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x31, 0x39, 0x39, 0x35,
-  0x4c, 0xe8, 0xf4, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
-  0x44, 0xae, 0x42, 0x60, 0x82
-};
-
-const int default_movie_icon_len = 258;
-
-
-/*
- * This table was generated by the command:
- *
- * bin2c -n default_sound_icon sound.png
- */
-
-const unsigned char default_sound_icon[] = {
-  0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00,
-  0x0d, 0x49, 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00,
-  0x00, 0x16, 0x04, 0x03, 0x00, 0x00, 0x00, 0x32, 0x6f, 0xa1, 0x35,
-  0x00, 0x00, 0x00, 0x18, 0x50, 0x4c, 0x54, 0x45, 0xcc, 0xff, 0xff,
-  0xff, 0x33, 0x33, 0xff, 0xff, 0xff, 0xcc, 0xcc, 0xcc, 0x99, 0x99,
-  0x99, 0x66, 0x00, 0x00, 0x33, 0x33, 0x33, 0x00, 0x00, 0x00, 0xfd,
-  0xef, 0xcf, 0xe1, 0x00, 0x00, 0x00, 0x01, 0x62, 0x4b, 0x47, 0x44,
-  0x07, 0x16, 0x61, 0x88, 0xeb, 0x00, 0x00, 0x00, 0x6a, 0x49, 0x44,
-  0x41, 0x54, 0x78, 0xda, 0x63, 0x60, 0xc0, 0x0d, 0x12, 0x18, 0x18,
-  0x05, 0x20, 0x2c, 0xf6, 0x02, 0x41, 0x06, 0x41, 0x08, 0xb3, 0xa4,
-  0x80, 0x51, 0x00, 0x22, 0xcc, 0xee, 0x54, 0xc0, 0x20, 0x08, 0x61,
-  0x96, 0x28, 0x15, 0x08, 0x30, 0x02, 0x55, 0xb0, 0x97, 0x97, 0x3b,
-  0x29, 0x15, 0x00, 0x05, 0x03, 0x19, 0x4a, 0x5c, 0x5c, 0x94, 0x80,
-  0x4c, 0x56, 0x10, 0x53, 0x09, 0x08, 0x0a, 0x02, 0x89, 0x63, 0xa6,
-  0xa4, 0x24, 0x41, 0xb5, 0x01, 0x0d, 0x33, 0x83, 0x1a, 0xc6, 0x90,
-  0x96, 0x56, 0x9c, 0x04, 0xb1, 0x02, 0x08, 0xd2, 0xcd, 0xe0, 0x16,
-  0xb3, 0x15, 0x83, 0x9c, 0x03, 0x71, 0x59, 0x3a, 0xc2, 0x91, 0x6c,
-  0x08, 0xa7, 0x63, 0x00, 0x00, 0xac, 0x1b, 0x1b, 0xa7, 0x07, 0x45,
-  0x3c, 0x76, 0x00, 0x00, 0x00, 0x56, 0x74, 0x45, 0x58, 0x74, 0x43,
-  0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x54, 0x68, 0x69, 0x73,
-  0x20, 0x61, 0x72, 0x74, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6e, 0x20,
-  0x74, 0x68, 0x65, 0x20, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20,
-  0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x20, 0x4b, 0x65, 0x76,
-  0x69, 0x6e, 0x20, 0x48, 0x75, 0x67, 0x68, 0x65, 0x73, 0x2c, 0x20,
-  0x6b, 0x65, 0x76, 0x69, 0x6e, 0x68, 0x40, 0x65, 0x69, 0x74, 0x2e,
-  0x63, 0x6f, 0x6d, 0x2c, 0x20, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d,
-  0x62, 0x65, 0x72, 0x20, 0x31, 0x39, 0x39, 0x35, 0x4c, 0xe8, 0xf4,
-  0xc4, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
-  0x60, 0x82
-};
-
-const int default_sound_icon_len = 310;
-

+ 0 - 36
pandaapp/src/indexify/default_index_icons.h

@@ -1,36 +0,0 @@
-// Filename: default_index_icons.h
-// Created by:  drose (04Apr02)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#ifndef DEFAULT_INDEX_ICONS_H
-#define DEFAULT_INDEX_ICONS_H
-
-extern const char *default_left_icon_filename;
-extern const char *default_right_icon_filename;
-extern const char *default_up_icon_filename;
-extern const char *default_movie_icon_filename;
-extern const char *default_sound_icon_filename;
-
-extern const unsigned char default_left_icon[];
-extern const int default_left_icon_len;
-extern const unsigned char default_right_icon[];
-extern const int default_right_icon_len;
-extern const unsigned char default_up_icon[];
-extern const int default_up_icon_len;
-extern const unsigned char default_movie_icon[];
-extern const int default_movie_icon_len;
-extern const unsigned char default_sound_icon[];
-extern const int default_sound_icon_len;
-
-#endif
-

+ 0 - 264
pandaapp/src/indexify/fontSamples.cxx

@@ -1,264 +0,0 @@
-// Filename: fontSamples.cxx
-// Created by:  drose (03Apr02)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#include "fontSamples.h"
-#include "pnmTextMaker.h"
-#include "default_font.h"
-#include "pnmImage.h"
-#include "pnotify.h"
-
-#include <stdio.h>
-
-#ifdef WIN32_VC
-#define snprintf _snprintf
-#endif
-
-////////////////////////////////////////////////////////////////////
-//     Function: FontSamples::Constructor
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-FontSamples::
-FontSamples() {
-  clear_runlines();
-  add_runline("[opts] fontname [fontname ...]");
-
-  set_program_description
-    ("Generates one or more image files with one line of text from "
-     "each of several given font files, as a font sample sheet.");
-
-  add_option
-    ("t", "text", 0,
-     "Specifies the sample text to render using each font.",
-     &FontSamples::dispatch_string, NULL, &_sample_text);
-
-  add_option
-    ("sh", "height", 0,
-     "Specifies the pixel height of each sample.",
-     &FontSamples::dispatch_int, NULL, &_sample_height);
-
-  add_option
-    ("nf", "filename", 0,
-     "Specifies the filename of the font to be used to write each font's "
-     "name.",
-     &FontSamples::dispatch_filename, NULL, &_name_font_filename);
-
-  add_option
-    ("nh", "height", 0,
-     "Specifies the pixel height of each font's name.",
-     &FontSamples::dispatch_int, NULL, &_name_height);
-
-  add_option
-    ("fontaa", "factor", 0,
-     "Specifies a scale factor to apply to the fonts  "
-     "for the purpose of antialiasing the fonts a "
-     "little better than FreeType can do by itself.  The letters are "
-     "generated large and then scaled to their proper size.  Normally this "
-     "should be a number in the range 3 to 4 for best effect.",
-     &FontSamples::dispatch_double, NULL, &_font_aa_factor);
-
-  add_option
-    ("space", "y", 0,
-     "Specifies the vertical space in pixels between font samples.",
-     &FontSamples::dispatch_int, NULL, &_vert_space);
-
-  add_option
-    ("image", "x, y", 0,
-     "Specifies the width and height in pixels of the resulting image(s).",
-     &FontSamples::dispatch_int_pair, NULL, &_image_width);
-
-  add_option
-    ("o", "filename", 50, 
-     "Specify the filename(s) to which the resulting image file will "
-     "be written.  This should contain the string '%d' which will be "
-     "filled in with the index number of the particular frame.",
-     &FontSamples::dispatch_string, NULL, &_output_filename);
-
-  _sample_text = "The quick brown fox jumped over the lazy dog's back.";
-  _sample_height = 14;
-  _name_height = 10;
-  _font_aa_factor = 4.0;
-  _vert_space = 10;
-  _image_width = 600;
-  _image_height = 600;
-  _output_filename = "samples-%d.jpg";
-  _name_text_maker = (PNMTextMaker *)NULL;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: FontSamples::Destructor
-//       Access: Public, Virtual
-//  Description:
-////////////////////////////////////////////////////////////////////
-FontSamples::
-~FontSamples() {
-  if (_name_text_maker != (PNMTextMaker *)NULL) {
-    delete _name_text_maker;
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: FontSamples::handle_args
-//       Access: Protected, Virtual
-//  Description: Does something with the additional arguments on the
-//               command line (after all the -options have been
-//               parsed).  Returns true if the arguments are good,
-//               false otherwise.
-////////////////////////////////////////////////////////////////////
-bool FontSamples::
-handle_args(ProgramBase::Args &args) {
-  if (args.empty()) {
-    nout << "You must specify the font filenames on the command line.\n";
-    return false;
-  }
-
-  Args::const_iterator ai;
-  for (ai = args.begin(); ai != args.end(); ++ai) {
-    Filename filename = Filename::from_os_specific(*ai);
-    filename.standardize();
-    if (filename.exists()) {
-      _font_filenames.push_back(filename);
-
-    } else {
-      nout << filename << " does not exist.\n";
-      return false;
-    }
-  }
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: FontSamples::post_command_line
-//       Access: Protected, Virtual
-//  Description: This is called after the command line has been
-//               completely processed, and it gives the program a
-//               chance to do some last-minute processing and
-//               validation of the options and arguments.  It should
-//               return true if everything is fine, false if there is
-//               an error.
-////////////////////////////////////////////////////////////////////
-bool FontSamples::
-post_command_line() {
-  if (_font_filenames.empty()) {
-    nout << "No font filenames.\n";
-    return false;
-  }
-
-  if (_name_height != 0) {
-    if (!_name_font_filename.empty()) {
-      _name_text_maker = new PNMTextMaker(_name_font_filename, 0);
-      if (!_name_text_maker->is_valid()) {
-        delete _name_text_maker;
-        _name_text_maker = (PNMTextMaker *)NULL;
-      }
-    }
-    
-    if (_name_text_maker == (PNMTextMaker *)NULL) {
-      _name_text_maker = new PNMTextMaker((const char *)default_font, 
-                                          default_font_size, 0);
-      if (!_name_text_maker->is_valid()) {
-        nout << "Unable to open default font.\n";
-        delete _name_text_maker;
-        _name_text_maker = (PNMTextMaker *)NULL;
-      }
-    }
-  }
-  
-  if (_name_text_maker != (PNMTextMaker *)NULL) {
-    _name_text_maker->set_scale_factor(_font_aa_factor);
-    _name_text_maker->set_pixel_size(_name_height);
-  } else {
-    _name_height = 0;
-  }
-
-  return ProgramBase::post_command_line();
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: FontSamples::run
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-void FontSamples::
-run() {
-  int output_index = 1;
-  PNMImage output_image(_image_width, _image_height, 1);
-  static const int output_filename_size = 1024;
-  char output_filename[output_filename_size];
-
-  bool all_ok = true;
-
-  output_image.fill(1, 1, 1);
-  int y = _vert_space;
-
-  int vert_per_font = 
-    _sample_height + _name_height + _vert_space;
-
-  Filenames::iterator fi;
-  for (fi = _font_filenames.begin(); fi != _font_filenames.end(); ++fi) {
-    if (y > _image_height - vert_per_font) {
-      // Write out the current image.
-      snprintf(output_filename, output_filename_size,
-               _output_filename.c_str(), output_index);
-      nout << "Writing " << output_filename << "\n";
-      if (!output_image.write(output_filename)) {
-        nout << "Unable to write to " << output_filename << "\n";
-        exit(1);
-      }
-      output_index++;
-      output_image.fill(1, 1, 1);
-      y = _vert_space;
-    }
-    const Filename &filename = (*fi);
-    PNMTextMaker *text_maker = new PNMTextMaker(filename, 0);
-    if (!text_maker->is_valid()) {
-      all_ok = false;
-    } else {
-      text_maker->set_scale_factor(_font_aa_factor);
-      text_maker->set_pixel_size(_sample_height);
-      text_maker->generate_into(_sample_text, output_image, 
-                                16, y + _sample_height);
-      if (_name_text_maker != (PNMTextMaker *)NULL) {
-        string desc = filename.get_basename() + ": " + text_maker->get_name();
-        _name_text_maker->generate_into(desc, output_image,
-                                        16, y + _sample_height + _name_height);
-      }
-    }
-
-    y += vert_per_font;
-    delete text_maker;
-  }
-
-  snprintf(output_filename, output_filename_size,
-           _output_filename.c_str(), output_index);
-  nout << "Writing " << output_filename << "\n";
-  if (!output_image.write(output_filename)) {
-    nout << "Unable to write to " << output_filename << "\n";
-    exit(1);
-  }
-
-  if (!all_ok) {
-    nout << "Problem loading fonts.\n";
-    exit(1);
-  }
-}
-
-
-int main(int argc, char *argv[]) {
-  FontSamples prog;
-  prog.parse_command_line(argc, argv);
-  prog.run();
-  return 0;
-}

+ 0 - 59
pandaapp/src/indexify/fontSamples.h

@@ -1,59 +0,0 @@
-// Filename: indexify.h
-// Created by:  drose (07Apr02)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#ifndef FONTSAMPLES_H
-#define FONTSAMPLES_H
-
-#include "pandatoolbase.h"
-
-#include "programBase.h"
-#include "filename.h"
-#include "pvector.h"
-
-class PNMTextMaker;
-
-////////////////////////////////////////////////////////////////////
-//       Class : FontSamples
-// Description : A program to generate one or more image files showing
-//               samples of various fonts.
-////////////////////////////////////////////////////////////////////
-class FontSamples : public ProgramBase {
-public:
-  FontSamples();
-  virtual ~FontSamples();
-
-protected:
-  virtual bool handle_args(Args &args);
-  virtual bool post_command_line();
-
-public:
-  void run();
-
-  string _sample_text;
-  int _sample_height;
-  int _name_height;
-  Filename _name_font_filename;
-  double _font_aa_factor;
-  int _vert_space;
-  int _image_width;
-  int _image_height;
-  string _output_filename;
-
-  typedef pvector<Filename> Filenames;
-  Filenames _font_filenames;
-
-  PNMTextMaker *_name_text_maker;
-};
-
-#endif

+ 0 - 918
pandaapp/src/indexify/indexImage.cxx

@@ -1,918 +0,0 @@
-// Filename: indexImage.cxx
-// Created by:  drose (03Apr02)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#include "indexImage.h"
-#include "rollDirectory.h"
-#include "photo.h"
-#include "pnmTextMaker.h"
-#include "indexParameters.h"
-#include "pnmImage.h"
-#include "pnmReader.h"
-
-#include "string_utils.h"
-
-////////////////////////////////////////////////////////////////////
-//     Function: IndexImage::Constructor
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-IndexImage::
-IndexImage(RollDirectory *dir, int index) :
-  _dir(dir),
-  _index(index)
-{
-  _name = _dir->get_basename() + "_" + format_string(index + 1);
-  _index_x_size = 0;
-  _index_y_size = 0;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: IndexImage::Destructor
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-IndexImage::
-~IndexImage() {
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: IndexImage::add_photo
-//       Access: Public
-//  Description: Adds the nth photo in the roll to the index image.
-//               Returns true if the photo is added, or false if there
-//               was no more room.
-////////////////////////////////////////////////////////////////////
-bool IndexImage::
-add_photo(int photo_index) {
-  int count = _photos.size();
-  if (count >= max_thumbs) {
-    return false;
-  }
-
-  int yi = count / thumb_count_x;
-  int xi = count - (yi * thumb_count_x);
-
-  int x = thumb_x_space + xi * (thumb_width + thumb_x_space);
-  int y = thumb_y_space + yi * (thumb_height + thumb_caption_height + thumb_y_space);
-
-  PhotoInfo pinfo;
-  pinfo._photo_index = photo_index;
-  pinfo._x_place = x;
-  pinfo._y_place = y;
-  _photos.push_back(pinfo);
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: IndexImage::generate_images
-//       Access: Public
-//  Description: Computes the thumbnail image file and writes it to
-//               the indicated directory; generates all reduced images
-//               associated with these photos into the appropriate
-//               subdirectory.  Returns true on success, false on
-//               failure.
-////////////////////////////////////////////////////////////////////
-bool IndexImage::
-generate_images(const Filename &archive_dir, PNMTextMaker *text_maker) {
-  int count = _photos.size();
-  int num_rows = (count + thumb_count_x - 1) / thumb_count_x;
-  int actual_index_height = thumb_y_space + num_rows * (thumb_height + thumb_caption_height + thumb_y_space);
-
-  PNMImage index_image;
-
-  Filename thumbnail_dir(archive_dir, "thumbs");
-  Filename output_filename(thumbnail_dir, _name);
-  output_filename.set_extension("jpg");
-
-  Photos::const_iterator pi;
-
-  // First, scan the image files to see if we can avoid regenerating
-  // the index image.
-  bool generate_index_image = true;
-  if (!dummy_mode && !force_regenerate && output_filename.exists()) {
-    // Maybe we don't need to renegerate the index.
-    generate_index_image = false;
-
-    const Filename &newest_contributing_filename = 
-      _dir->get_newest_contributing_filename();
-    if (!newest_contributing_filename.empty()) {
-      generate_index_image = 
-        (output_filename.compare_timestamps(newest_contributing_filename) < 0);
-    }
-
-    for (pi = _photos.begin(); 
-         pi != _photos.end() && !generate_index_image; 
-         ++pi) {
-      const PhotoInfo &pinfo = (*pi);
-      Photo *photo = _dir->get_photo(pinfo._photo_index);
-      Filename photo_filename(_dir->get_dir(), photo->get_basename());
-
-      // If any of the source photos are newer than the index image,
-      // we must regenerate it.
-      generate_index_image = 
-        (output_filename.compare_timestamps(photo_filename) < 0);
-    }
-  }
-
-  // If we don't need to regenerate the index, we do need to at least
-  // scan the header.
-  if (!generate_index_image) {
-    if (index_image.read_header(output_filename)) {
-      if (index_image.get_x_size() != actual_index_width ||
-          index_image.get_y_size() != actual_index_height) {
-        // If the index exists but is the wrong size, we'd better
-        // regenerate it.
-        generate_index_image = true;
-      }
-
-    } else {
-      // If we couldn't even read the header, we'd better regenerate it
-      // after all.
-      nout << "Couldn't read " << output_filename << "; regenerating.\n";
-      generate_index_image = true;
-    }
-  }
-
-  if (generate_index_image) {
-    index_image.clear(actual_index_width, actual_index_height);
-    index_image.fill(1.0, 1.0, 1.0);
-  }
-
-  // Now go back through and read whichever images are necessary, or
-  // just read the headers if we can get away with it.
-  for (pi = _photos.begin(); pi != _photos.end(); ++pi) {
-    const PhotoInfo &pinfo = (*pi);
-    Photo *photo = _dir->get_photo(pinfo._photo_index);
-    PNMImage reduced_image;
-    if (!make_reduced_image(photo, reduced_image, generate_index_image, false)) {
-      return false;
-    }
-  
-    if (generate_index_image) {
-      // Generate a thumbnail image for the photo.
-      PNMImage thumbnail_image;
-      compute_reduction(reduced_image, thumbnail_image, 
-                        thumb_interior_width, thumb_interior_height);
-      
-      if (dummy_mode) {
-        draw_box(thumbnail_image);
-      } else {
-        thumbnail_image.quick_filter_from(reduced_image);
-      }
-      // Center the thumbnail image within its box.
-      int x_center = (thumb_width - thumbnail_image.get_x_size()) / 2;
-      int y_center = (thumb_height - thumbnail_image.get_y_size()) / 2;
-      
-      if (draw_frames) {
-        draw_frame(index_image, 
-                   pinfo._x_place, pinfo._y_place,
-                   thumb_width, thumb_height,
-                   pinfo._x_place + x_center, pinfo._y_place + y_center,
-                   thumbnail_image.get_x_size(), thumbnail_image.get_y_size());
-      }
-      
-      thumbnail_image.set_color_type(index_image.get_color_type());
-      index_image.copy_sub_image(thumbnail_image, 
-                                 pinfo._x_place + x_center, 
-                                 pinfo._y_place + y_center);
-      
-      if (text_maker != (PNMTextMaker *)NULL) {
-        int label_x = pinfo._x_place + thumb_width / 2;
-        int label_y = pinfo._y_place + thumb_height + thumb_caption_height;
-        
-        int width = 
-          text_maker->generate_into(photo->get_frame_number(), index_image, 
-                                    label_x, label_y);
-        if (photo->_has_movie && get_movie_icon().is_valid()) {
-          const PNMImage &movie_icon_image = get_movie_icon();
-          int icon_x = label_x - width / 2 - movie_icon_image.get_x_size();
-          int icon_y = label_y - movie_icon_image.get_y_size();
-          
-          index_image.blend_sub_image(movie_icon_image, icon_x, icon_y);
-        } else if (photo->_has_sound && get_sound_icon().is_valid()) {
-          const PNMImage &sound_icon_image = get_sound_icon();
-          int icon_x = label_x - width / 2 - sound_icon_image.get_x_size();
-          int icon_y = label_y - sound_icon_image.get_y_size();
-          
-          index_image.blend_sub_image(sound_icon_image, icon_x, icon_y);
-        }
-      }
-    }
-  }
-
-  if (generate_index_image) {
-    nout << "Writing " << output_filename << "\n";
-    output_filename.make_dir();
-    if (!index_image.write(output_filename)) {
-      nout << "Unable to write.\n";
-      return false;
-    }
-  }
-
-  _index_x_size = index_image.get_x_size();
-  _index_y_size = index_image.get_y_size();
-  _index_basename = output_filename.get_basename();
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: IndexImage::make_reduced_image
-//       Access: Public
-//  Description: Copies the full-sized image to the reduced image
-//               folder, if necessary.
-////////////////////////////////////////////////////////////////////
-bool IndexImage::
-make_reduced_image(Photo *photo, PNMImage &reduced_image, 
-                   bool generate_index_image, bool force_reduced) {
-  Filename reduced_dir(archive_dir, "reduced/" + _dir->get_basename());
-
-  Filename photo_filename(_dir->get_dir(), photo->get_basename());
-  Filename reduced_filename(reduced_dir, photo->get_basename());
-  photo_filename.standardize();
-  reduced_filename.standardize();
-  
-  if (!dummy_mode && photo_filename != reduced_filename &&
-      (force_regenerate || 
-       reduced_filename.compare_timestamps(photo_filename) < 0)) {
-    // If the reduced filename does not exist or is older than the
-    // source filename, we must read the complete source filename to
-    // generate the reduced image.
-    PNMImage photo_image;
-    PNMReader *reader = photo_image.make_reader(photo_filename);
-    if (reader == (PNMReader *)NULL) {        
-      nout << "Unable to read " << photo_filename << ".\n";
-      return false;
-    }
-    photo_image.copy_header_from(*reader);
-    
-    photo->_full_x_size = photo_image.get_x_size();
-    photo->_full_y_size = photo_image.get_y_size();
-    
-    // Generate a reduced image for the photo.
-    compute_reduction(photo_image, reduced_image, 
-                      reduced_width, reduced_height);
-    
-    photo->_reduced_x_size = reduced_image.get_x_size();
-    photo->_reduced_y_size = reduced_image.get_y_size();
-    
-    // Only bother making a reduced version if it would actually be
-    // smaller than the original.
-    if (photo->_reduced_x_size < photo->_full_x_size ||
-        photo->_reduced_y_size < photo->_full_y_size) {
-      nout << "Reading " << photo_filename << "\n";
-      if (!photo_image.read(reader)) {
-        nout << "Unable to read.\n";
-        return false;
-      }
-      reader = NULL;
-      
-      reduced_image.quick_filter_from(photo_image);
-      reduced_filename.make_dir();
-      nout << "Writing " << reduced_filename << "\n";
-      if (!reduced_image.write(reduced_filename)) {
-        nout << "Unable to write.\n";
-        delete reader;
-        return false;
-      }
-      photo->_has_reduced = true;
-
-    } else if (force_reduced) {
-      // Even though the reduced image would not be smaller, copy it
-      // anyway when force_reduced is true.
-      photo_filename.set_binary();
-      if (!copy_file(photo_filename, reduced_dir)) {
-        return false;
-      }
-      
-    } else {
-      // We're not making a reduced version.  But maybe we still
-      // need to read the original so we can make a thumbnail.
-      reduced_filename = photo_filename;
-      reduced_image.copy_header_from(photo_image);
-      
-      if (!dummy_mode && generate_index_image) {
-        nout << "Reading " << photo_filename << "\n";
-        if (!reduced_image.read(reader)) {
-          nout << "Unable to read image.\n";
-          return false;
-        }
-        reader = NULL;
-      }  
-    }
-    if (reader != (PNMReader *)NULL) {
-      delete reader;
-    }
-    
-  } else {
-    // If the reduced image already exists and is newer than the
-    // source image, use it.
-
-    if (!force_reduced) {
-      // We still read the image header to determine its size.
-      PNMImageHeader photo_image;
-      if (!photo_image.read_header(photo_filename)) {
-        nout << "Unable to read " << photo_filename << "\n";
-        return false;
-      }
-      
-      photo->_full_x_size = photo_image.get_x_size();
-      photo->_full_y_size = photo_image.get_y_size();
-      photo->_has_reduced = true;
-      
-      if (dummy_mode) {
-        // In dummy mode, we may or may not actually have a reduced
-        // image.  In either case, ignore the file and compute its
-        // appropriate size from the source image.
-        compute_reduction(photo_image, reduced_image, reduced_width, reduced_height);
-        photo->_reduced_x_size = reduced_image.get_x_size();
-        photo->_reduced_y_size = reduced_image.get_y_size();
-
-      } else if (generate_index_image) {
-        // Now read the reduced image from disk, so we can put it on
-        // the index image.
-        nout << "Reading " << reduced_filename << "\n";
-
-        if (!reduced_image.read(reduced_filename)) {
-          nout << "Unable to read.\n";
-          return false;
-        }
-
-        photo->_reduced_x_size = reduced_image.get_x_size();
-        photo->_reduced_y_size = reduced_image.get_y_size();
-      
-      } else {
-        // If we're not generating an index image, we don't even need
-        // the reduced image--just scan its header to get its size.
-        if (!reduced_image.read_header(reduced_filename)) {
-          nout << "Unable to read " << reduced_filename << "\n";
-          return false;
-        }
-        photo->_reduced_x_size = reduced_image.get_x_size();
-        photo->_reduced_y_size = reduced_image.get_y_size();
-      }
-    }
-  }
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: IndexImage::generate_html
-//       Access: Public
-//  Description: Generates all HTML files associated with reduced
-//               images into the appropriate subdirectory, and
-//               generates root-level HTML code to access the
-//               thumbnails on the index image into the indicated
-//               stream.
-////////////////////////////////////////////////////////////////////
-bool IndexImage::
-generate_html(ostream &root_html, const Filename &archive_dir,
-              const Filename &roll_dir_root) {
-  root_html
-    << "<a name=\"" << _name << "\">\n"
-    << "<img src=\"../thumbs/" << _index_basename
-    << "\" width=" << _index_x_size << " height=" << _index_y_size
-    << " ismap usemap=\"#" << _name << "\">\n"
-    << "<map name=\"" << _name << "\"><br>\n";
-
-  Filename html_dir(archive_dir, "html");
-
-  Photos::const_iterator pi;
-  for (pi = _photos.begin(); pi != _photos.end(); ++pi) {
-    const PhotoInfo &pinfo = (*pi);
-    int photo_index = pinfo._photo_index;
-    Photo *photo = _dir->get_photo(pinfo._photo_index);
-    Filename html_relname(_dir->get_basename(), photo->get_basename());
-    html_relname.set_extension("htm");
-
-    Filename html_filename(html_dir, html_relname);
-    html_filename.make_dir();
-    html_filename.set_text();
-    ofstream reduced_html;
-    if (!html_filename.open_write(reduced_html)) {
-      nout << "Unable to write to " << html_filename << "\n";
-      return false;
-    }
-    if (!generate_reduced_html(reduced_html, photo, photo_index,
-                               pi - _photos.begin(), roll_dir_root)) {
-      return false;
-    }
-
-    root_html
-      << "  <area shape=\"RECT\" href=\"" << html_relname 
-      << "\" coords=\""
-      << pinfo._x_place << "," << pinfo._y_place << ","
-      << pinfo._x_place + thumb_width << "," 
-      << pinfo._y_place + thumb_height + thumb_caption_height
-      << "\">\n";
-  }
-
-  root_html
-    << "</map>\n";
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: IndexImage::copy_reduced
-//       Access: Public
-//  Description: Copies key files from the full directory into the
-//               reduced directory.
-////////////////////////////////////////////////////////////////////
-bool IndexImage::
-copy_reduced(const Filename &archive_dir) {
-  Photos::const_iterator pi;
-  for (pi = _photos.begin(); pi != _photos.end(); ++pi) {
-    const PhotoInfo &pinfo = (*pi);
-    int photo_index = pinfo._photo_index;
-    Photo *photo = _dir->get_photo(photo_index);
-
-    // Make sure we have a "reduced" image.
-    PNMImage reduced_image;
-    if (!make_reduced_image(photo, reduced_image, false, true)) {
-      return false;
-    }
-
-    if (photo->_has_movie) {
-      // Also copy the movie file to the reduced directory, even
-      // though it's not reduced in any way--but there's no way
-      // (presently) to reduce a movie file.
-      Filename movie_filename(_dir->get_dir(), photo->get_movie());
-      if (movie_filename.exists()) {
-        movie_filename.set_binary();
-        Filename reduced_dir(archive_dir, "reduced/" + _dir->get_basename());
-        if (!copy_file(movie_filename, reduced_dir)) {
-          return false;
-        }
-      }
-    }
-
-    if (photo->_has_sound) {
-      // Also copy the sound clip to the reduced directory.
-      Filename sound_filename(_dir->get_dir(), photo->get_sound());
-      if (sound_filename.exists()) {
-        sound_filename.set_binary();
-        Filename reduced_dir(archive_dir, "reduced/" + _dir->get_basename());
-        if (!copy_file(sound_filename, reduced_dir)) {
-          return false;
-        }
-      }
-    }
-  }
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: IndexImage::output
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-void IndexImage::
-output(ostream &out) const {
-  out << _name;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: IndexImage::write
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-void IndexImage::
-write(ostream &out, int indent_level) const {
-  indent(out, indent_level)
-    << _name << "\n";
-  Photos::const_iterator pi;
-  for (pi = _photos.begin(); pi != _photos.end(); ++pi) {
-    const PhotoInfo &pinfo = (*pi);
-    indent(out, indent_level + 2)
-      << *_dir->get_photo(pinfo._photo_index) << "\n";
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: IndexImage::generate_reduced_html
-//       Access: Public
-//  Description: Generates HTML code for rendering the indicated
-//               reduced-image photo into the given ostream.
-////////////////////////////////////////////////////////////////////
-bool IndexImage::
-generate_reduced_html(ostream &html, Photo *photo, int photo_index, int pi,
-                      const Filename &roll_dir_root) {
-  Filename full_dir;
-  if (roll_dir_root.empty()) {
-    full_dir = Filename("../..", _dir->get_dir());
-  } else {
-    compose_href("../..", roll_dir_root, _dir->get_basename());
-  }
-  Filename full(full_dir, photo->get_basename());
-  Filename movie(full_dir, photo->get_movie());
-  Filename sound(full_dir, photo->get_sound());
-
-  Filename reduced_dir("../../reduced", _dir->get_basename());
-  Filename reduced(reduced_dir, photo->get_basename());
-  if (!photo->_has_reduced) {
-    reduced_dir = full_dir;
-    reduced = full;
-  }
-
-  string up_href = "../" + _dir->get_basename() + ".htm#" + _name;
-
-  Filename prev_photo_filename;
-  Filename next_photo_filename;
-
-  if (pi != 0) {
-    // If this is not the first photo on the index, "back" will take
-    // us to the previous photo on the same index.
-    Photo *prev_photo = _dir->get_photo(_photos[pi - 1]._photo_index);
-    prev_photo_filename = Filename(prev_photo->get_basename());
-    prev_photo_filename.set_extension("htm");
-
-  } else {
-    // If this is the first photo on the index, "back" will take us to
-    // the last photo on the previous index.  Or even to the last
-    // photo on the previous roll.
-    RollDirectory *roll_dir = _dir;
-    int index = _index - 1;
-    while (index < 0 && roll_dir->_prev != (RollDirectory *)NULL) {
-      roll_dir = roll_dir->_prev;
-      index = roll_dir->get_num_index_images() - 1;
-    }
-
-    if (index >= 0) {
-      IndexImage *prev_index = roll_dir->get_index_image(index);
-      nassertr(!prev_index->_photos.empty(), false);
-      Photo *prev_photo = 
-        roll_dir->get_photo(prev_index->_photos.back()._photo_index);
-      Filename other_dir("..", roll_dir->get_basename());
-      prev_photo_filename = Filename(other_dir, prev_photo->get_basename());
-      prev_photo_filename.set_extension("htm");
-    } 
-  }
-
-  if (pi + 1 < (int)_photos.size()) {
-    // If this is not the last photo, "next" will take us to the next
-    // photo on the same index.
-    Photo *next_photo = _dir->get_photo(_photos[pi + 1]._photo_index);
-    next_photo_filename = Filename(next_photo->get_basename());
-    next_photo_filename.set_extension("htm");
-
-  } else {
-    // If this is the last photo on the index, "next" will take us to
-    // the first photo on the next index.  Or even to the first photo
-    // on the next roll.
-
-    RollDirectory *roll_dir = _dir;
-    int index = _index + 1;
-    while (index >= roll_dir->get_num_index_images() && 
-           roll_dir->_next != (RollDirectory *)NULL) {
-      roll_dir = roll_dir->_next;
-      index = 0;
-    }
-
-    if (index < roll_dir->get_num_index_images()) {
-      IndexImage *next_index = roll_dir->get_index_image(index);
-      nassertr(!next_index->_photos.empty(), false);
-      Photo *next_photo = 
-        roll_dir->get_photo(next_index->_photos.front()._photo_index);
-      Filename other_dir("..", roll_dir->get_basename());
-      next_photo_filename = Filename(other_dir, next_photo->get_basename());
-      next_photo_filename.set_extension("htm");
-    }
-  }
-
-  html 
-    << "<html>\n"
-    << "<head>\n"
-    << "<title>" << photo->get_name() << " (" << photo_index + 1 << " of "
-    << _dir->get_num_photos() << " on " << _dir->get_basename() 
-    << ")</title>\n"
-    << "</head>\n"
-    << "<body>\n"
-    << "<h1>" << photo->get_name() << " (" << photo_index + 1 << " of "
-    << _dir->get_num_photos() << ")</h1>";
-
-  generate_nav_buttons(html, prev_photo_filename, next_photo_filename,
-                       up_href);
-
-  if (photo->_has_cm) {
-    // If a comment file for the photo exists, insert its contents
-    // here, right above the photo.
-    Filename cm_filename(_dir->get_dir(), photo->get_cm());
-    if (!RollDirectory::insert_html_comment(html, cm_filename)) {
-      return false;
-    }
-  }
-
-  html
-    << "<p><a href=\"" << reduced << "\">"
-    << "<img src=\"" << reduced << "\" width=" << photo->_reduced_x_size
-    << " height=" << photo->_reduced_y_size << " alt=\"" << photo->get_name()
-    << "\"></a></p>\n";
-
-  if (!omit_full_links && photo->_has_reduced) {
-    html
-      << "<p><a href=\"" << full << "\">View full size image ("
-      << photo->_full_x_size << " x " << photo->_full_y_size << ")</a></p>\n";
-  }
-
-  if (photo->_has_movie) {
-    html << "<p>";
-    if (!movie_icon.empty()) {
-      // Show the movie icon if we got one.
-      Filename movie_icon_href = compose_href("../..", movie_icon);
-      html << "<img src=\"" << movie_icon_href << "\" alt=\"\">";
-    }
-
-    // Determine the size of the file.
-    streampos size = 0;
-    ifstream stream;
-    Filename movie_filename(_dir->get_dir(), photo->get_movie());
-    movie_filename.set_binary();
-    if (movie_filename.open_read(stream)) {
-      // Seek to the end and get the stream position there.
-      stream.seekg(0, ios::end);
-      size = stream.tellg();
-    }
-
-    static const streampos MB = 1024 * 1024;
-    static const streampos GB = 1024 * 1024 * 1024;
-    string size_units;
-    double size_float = size;
-
-    if (size > GB) {
-      size_units = "GB";
-      size_float = (double)size / (double)GB;
-    } else if (size > MB) {
-      size_units = "MB";
-      size_float = (double)size / (double)MB;
-    }
-
-    if (size_units.empty()) {
-      html
-        << "<a href=\"" << movie << "\">Play movie</a></p>\n";
-    } else {
-      char buffer[128];
-      sprintf(buffer, "%.1f", size_float);
-      html
-        << "<a href=\"" << movie << "\">Play movie ("
-        << buffer << " " << size_units << ")</a></p>\n";
-    }
-  }
-
-  if (photo->_has_sound) {
-    html << "<p>";
-    if (!sound_icon.empty()) {
-      // Show the sound icon if we got one.
-      Filename sound_icon_href = compose_href("../..", sound_icon);
-      html << "<img src=\"" << sound_icon_href << "\" alt=\"\">";
-    }
-
-    // Determine the size of the file.
-    streampos size = 0;
-    ifstream stream;
-    Filename sound_filename(_dir->get_dir(), photo->get_sound());
-    sound_filename.set_binary();
-    if (sound_filename.open_read(stream)) {
-      // Seek to the end and get the stream position there.
-      stream.seekg(0, ios::end);
-      size = stream.tellg();
-    }
-
-    static const streampos MB = 1024 * 1024;
-    static const streampos GB = 1024 * 1024 * 1024;
-    string size_units;
-    double size_float = size;
-
-    if (size > GB) {
-      size_units = "GB";
-      size_float = (double)size / (double)GB;
-    } else if (size > MB) {
-      size_units = "MB";
-      size_float = (double)size / (double)MB;
-    }
-
-    if (size_units.empty()) {
-      html
-        << "<a href=\"" << sound << "\">Play sound clip</a></p>\n";
-    } else {
-      char buffer[128];
-      sprintf(buffer, "%.1f", size_float);
-      html
-        << "<a href=\"" << sound << "\">Play sound clip ("
-        << buffer << " " << size_units << ")</a></p>\n";
-    }
-  }
-
-  generate_nav_buttons(html, prev_photo_filename, next_photo_filename,
-                       up_href);
-
-  html
-    << "</body>\n"
-    << "</html>\n";
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: IndexImage::generate_nav_buttons
-//       Access: Private
-//  Description: Outputs the HTML code to generate the next, prev,
-//               up buttons when viewing each reduced image.
-////////////////////////////////////////////////////////////////////
-void IndexImage::
-generate_nav_buttons(ostream &html, const Filename &prev_photo_filename,
-                     const Filename &next_photo_filename, 
-                     const string &up_href) {
-  html << "<p>\n";
-
-  bool first_icons = false;
-  if (!prev_icon.empty() && !next_icon.empty()) {
-    first_icons = true;
-    // Use icons to go forward and back.
-    Filename prev_icon_href = compose_href("../..", prev_icon);
-    if (prev_photo_filename.empty()) {
-      html << "<img src=\"" << prev_icon_href << "\" alt=\"No previous photo\">\n";
-    } else {
-      html << "<a href=\"" << prev_photo_filename
-           << "\"><img src=\"" << prev_icon_href << "\" alt=\"previous\"></a>\n";
-    }
-
-    Filename next_icon_href = compose_href("../..", next_icon);
-    if (next_photo_filename.empty()) {
-      html << "<img src=\"" << next_icon_href << "\" alt=\"No next photo\">\n";
-    } else {
-      html << "<a href=\"" << next_photo_filename
-           << "\"><img src=\"" << next_icon_href << "\" alt=\"next\"></a>\n";
-    }
-
-  } else {
-    // No prev/next icons; use text to go forward and back.
-    if (prev_photo_filename.empty()) {
-      html << "(This is the first photo.)\n";
-    } else {
-      html << "<a href=\"" << prev_photo_filename
-           << "\">Back to previous photo</a>\n";
-    }
-    
-    if (next_photo_filename.empty()) {
-      html << "<br>(This is the last photo.)\n";
-    } else {
-      html << "<br><a href=\"" << next_photo_filename
-           << "\">On to next photo</a>\n";
-    }
-  }
-
-  if (!up_href.empty()) {
-    if (!up_icon.empty()) {
-      // Use an icon to go up.
-      if (!first_icons) {
-        html << "<br>";
-      } else {
-        html << "&nbsp;&nbsp;&nbsp;";
-      }
-      Filename up_icon_href = compose_href("../..", up_icon);
-      html << "<a href=\"" << up_href
-           << "\"><img src=\"" << up_icon_href << "\" alt=\"return to index\"></a>\n";
-    } else {
-      // No up icon; use text to go up.
-      html << "<br><a href=\"" << up_href
-           << "\">Return to index</a>\n";
-    }
-  }
-  html << "</p>\n";
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: IndexImage::compute_reduction
-//       Access: Private, Static
-//  Description: Computes the amount by which the source image must be
-//               scaled to fit within the indicated box, and clears
-//               the dest_image to the computed size.
-////////////////////////////////////////////////////////////////////
-void IndexImage::
-compute_reduction(const PNMImageHeader &source_image, PNMImage &dest_image,
-                  int x_size, int y_size) {
-  double x_scale = (double)x_size / (double)source_image.get_x_size();
-  double y_scale = (double)y_size / (double)source_image.get_y_size();
-  double scale = min(x_scale, y_scale);
-
-  // Don't ever enlarge an image to fit the rectangle; if the image is
-  // smaller than the rectangle, just leave it small.
-  scale = min(scale, 1.0);
-
-  int new_x_size = (int)(source_image.get_x_size() * scale + 0.5);
-  int new_y_size = (int)(source_image.get_y_size() * scale + 0.5);
-
-  dest_image.clear(new_x_size, new_y_size,
-                   source_image.get_num_channels(),
-                   source_image.get_maxval());
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: IndexImage::draw_box
-//       Access: Private, Static
-//  Description: Called in dummy mode to draw a little box in black
-//               around the border of the empty thumbnail image.
-////////////////////////////////////////////////////////////////////
-void IndexImage::
-draw_box(PNMImage &image) {
-  // First, fill it in white.
-  image.fill(1, 1, 1);
-
-  if (!draw_frames) {
-    // Now make the border pixel black.  We only need to do this if we
-    // aren't drawing frames, since the frames will reveal the shape
-    // of the image too.
-    int x_size = image.get_x_size();
-    int y_size = image.get_y_size();
-    for (int xi = 0; xi < x_size; xi++) {
-      image.set_xel(xi, 0, 0, 0, 0);
-      image.set_xel(xi, y_size - 1, 0, 0, 0);
-    }
-    
-    for (int yi = 1; yi < y_size - 1; yi++) {
-      image.set_xel(0, yi, 0, 0, 0);
-      image.set_xel(x_size - 1, yi, 0, 0, 0);
-    }
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: IndexImage::draw_frame
-//       Access: Private, Static
-//  Description: Called in draw_frames mode to draw a slide mount in
-//               gray on the index image before drawing the thumbnail
-//               image in the center.
-////////////////////////////////////////////////////////////////////
-void IndexImage::
-draw_frame(PNMImage &image,
-           int frame_left, int frame_top, int frame_width, int frame_height,
-           int hole_left, int hole_top, int hole_width, int hole_height) {
-  // Gray levels.
-  static const RGBColord mid(0.5, 0.5, 0.5);
-  static const RGBColord light(0.7, 0.7, 0.7);
-  static const RGBColord lighter(0.9, 0.9, 0.9);
-  static const RGBColord dark(0.3, 0.3, 0.3);
-  static const RGBColord darker(0.1, 0.1, 0.1);
-
-  // First, fill in the whole rectangle in gray.
-  int xi, yi;
-  for (yi = 0; yi < frame_height; yi++) {
-    for (xi = 0; xi < frame_width; xi++) {
-      image.set_xel(xi + frame_left, yi + frame_top, mid);
-    }
-  }
-
-  // Now draw the bevel.
-  for (xi = 0; xi < frame_outer_bevel; xi++) {
-    for (yi = xi; yi < frame_height - xi; yi++) { 
-      // Left edge.
-      image.set_xel(xi + frame_left, yi + frame_top, light);
-      // Right edge.
-      image.set_xel(frame_width - 1 - xi + frame_left, yi + frame_top, dark);
-    }
-  }
-  for (yi = 0; yi < frame_outer_bevel; yi++) {
-    for (xi = yi; xi < frame_width - yi; xi++) { 
-      // Top edge.
-      image.set_xel(xi + frame_left, yi + frame_top, lighter);
-      // Bottom edge.
-      image.set_xel(xi + frame_left, frame_height - 1 - yi + frame_top, darker);
-    }
-  }
-
-  // Interior bevel.
-  for (xi = -1; xi >= -frame_inner_bevel; xi--) {
-    for (yi = xi; yi < hole_height - xi; yi++) { 
-      // Left edge.
-      image.set_xel(xi + hole_left, yi + hole_top, dark);
-      // Right edge.
-      image.set_xel(hole_width - 1 - xi + hole_left, yi + hole_top, light);
-    }
-  }
-  for (yi = -1; yi >= -frame_inner_bevel; yi--) {
-    for (xi = yi; xi < hole_width - yi; xi++) { 
-      // Top edge.
-      image.set_xel(xi + hole_left, yi + hole_top, darker);
-      // Bottom edge.
-      image.set_xel(xi + hole_left, hole_height - 1 - yi + hole_top, lighter);
-    }
-  }
-
-  // We don't have to cut out the hole, since the thumbnail image will
-  // do that when it is placed.
-}

+ 0 - 96
pandaapp/src/indexify/indexImage.h

@@ -1,96 +0,0 @@
-// Filename: indexImage.h
-// Created by:  drose (03Apr02)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#ifndef INDEXIMAGE_H
-#define INDEXIMAGE_H
-
-#include "pandatoolbase.h"
-
-#include "filename.h"
-#include "pvector.h"
-
-class RollDirectory;
-class Photo;
-class PNMTextMaker;
-class PNMImage;
-class PNMImageHeader;
-
-////////////////////////////////////////////////////////////////////
-//       Class : IndexImage
-// Description : An aggregate image containing several thumbnails, one
-//               for each of several photos.  A roll directory will
-//               collect its photos into one or more IndexImages.
-////////////////////////////////////////////////////////////////////
-class IndexImage {
-public:
-  IndexImage(RollDirectory *dir, int index);
-  ~IndexImage();
-
-  bool add_photo(int index);
-  bool generate_images(const Filename &archive_dir, PNMTextMaker *text_maker);
-  bool make_reduced_image(Photo *photo, PNMImage &reduced_image, 
-                          bool generate_index_image, bool force_reduced);
-
-  bool generate_html(ostream &root_html, const Filename &archive_dir,
-                     const Filename &roll_dir_root);
-
-  bool copy_reduced(const Filename &archive_dir);
-
-  void output(ostream &out) const;
-  void write(ostream &out, int indent_level) const;
-
-private:
-  bool generate_reduced_html(ostream &html, Photo *photo, int photo_index,
-                             int pi, const Filename &roll_dir_root);
-  void generate_nav_buttons(ostream &html, const Filename &prev_photo_filename,
-                            const Filename &next_photo_filename, 
-                            const string &up_href);
-
-  static void compute_reduction(const PNMImageHeader &source_image,
-                                PNMImage &dest_image,
-                                int x_size, int y_size);
-  static void draw_box(PNMImage &image);
-
-  static void draw_frame(PNMImage &image,
-                         int frame_left, int frame_top,
-                         int frame_width, int frame_height,
-                         int hole_left, int hole_top,
-                         int hole_width, int hole_height);
-
-private:
-  RollDirectory *_dir;
-  int _index;
-  string _name;
-
-  class PhotoInfo {
-  public:
-    int _photo_index;
-    int _x_place;
-    int _y_place;
-  };
-
-  typedef pvector<PhotoInfo> Photos;
-  Photos _photos;
-
-  int _index_x_size;
-  int _index_y_size;
-  string _index_basename;
-};
-
-INLINE ostream &operator << (ostream &out, const IndexImage &d) {
-  d.output(out);
-  return out;
-}
-
-#endif

+ 0 - 296
pandaapp/src/indexify/indexParameters.cxx

@@ -1,296 +0,0 @@
-// Filename: indexParameters.cxx
-// Created by:  drose (04Apr02)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#include "indexParameters.h"
-
-// User parameters
-int max_index_size_array[2] = { 700, 700 };
-int thumb_size_array[2] = { 150, 150 };
-
-int thumb_caption_height = 12;
-int caption_font_size = 12;
-
-int thumb_space_array[2] = { 12, 12 };
-
-double frame_reduction_factor = 0.75;
-int frame_outer_bevel = 2;
-int frame_inner_bevel = 1;
-
-int reduced_size_array[2] = { 800, 700 };
-
-Filename archive_dir;
-
-Filename prev_icon;
-Filename next_icon;
-Filename up_icon;
-Filename movie_icon;
-Filename sound_icon;
-
-////////////////////////////////////////////////////////////////////
-//     Function: get_movie_icon
-//  Description: Reads the movie icon filename and returns it as an
-//               image, if possible.  Returns a valid image if
-//               successful, an invalid one otherwise.
-////////////////////////////////////////////////////////////////////
-const PNMImage &
-get_movie_icon() {
-  static PNMImage movie_icon_image;
-  static bool got_image = false;
-
-  if (!got_image) {
-    if (!movie_icon.empty()) {
-      Filename icon_filename(archive_dir, movie_icon);
-      nout << "Reading " << icon_filename << "\n";
-      movie_icon_image.read(icon_filename);
-    }
-    got_image = true;
-  }
-
-  return movie_icon_image;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: get_sound_icon
-//  Description: Reads the sound icon filename and returns it as an
-//               image, if possible.  Returns a valid image if
-//               successful, an invalid one otherwise.
-////////////////////////////////////////////////////////////////////
-const PNMImage &
-get_sound_icon() {
-  static PNMImage sound_icon_image;
-  static bool got_image = false;
-
-  if (!got_image) {
-    if (!sound_icon.empty()) {
-      Filename icon_filename(archive_dir, sound_icon);
-      nout << "Reading " << icon_filename << "\n";
-      sound_icon_image.read(icon_filename);
-    }
-    got_image = true;
-  }
-
-  return sound_icon_image;
-}
-
-bool force_regenerate = false;
-bool format_rose = false;
-bool sort_date = false;
-bool dummy_mode = false;
-bool draw_frames = false;
-bool omit_roll_headers = false;
-DSearchPath cm_search;
-bool omit_full_links = false;
-bool omit_complete = false;
-bool caption_frame_numbers = false;
-
-
-// Computed parameters
-int thumb_count_x;
-int thumb_count_y;
-int max_thumbs;
-int actual_index_width;
-
-int thumb_interior_width;
-int thumb_interior_height;
-
-////////////////////////////////////////////////////////////////////
-//     Function: finalize_parameters
-//  Description: This is called after all user parameters have been
-//               changed, to do whatever computations are required for
-//               the other parameters that are based on the user
-//               parameters.
-////////////////////////////////////////////////////////////////////
-void
-finalize_parameters() {
-  thumb_count_x = 
-    (max_index_width - thumb_x_space) / (thumb_width + thumb_x_space);
-  thumb_count_y = 
-    (max_index_height - thumb_y_space) / (thumb_height + thumb_caption_height + thumb_y_space);
-
-  max_thumbs = thumb_count_x * thumb_count_y;
-  
-  actual_index_width = thumb_x_space + thumb_count_x * (thumb_width + thumb_x_space);
-
-  if (draw_frames) {
-    thumb_interior_width = (int)(thumb_width * frame_reduction_factor + 0.5);
-    thumb_interior_height = (int)(thumb_height * frame_reduction_factor + 0.5);
-  } else {
-    thumb_interior_width = thumb_width;
-    thumb_interior_height = thumb_height;
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: compose_href
-//  Description: Combines a user-supplied prefix with a relative
-//               directory to generate the appropriate href to the
-//               file.
-//
-//               rel_dir is the relative path to archive_dir.
-//               user_prefix is the string the user indicated as the
-//               relative or absolute path to the file's parent
-//               directory from archive_dir.  basename is the name
-//               of the file, or empty if the filename is part of
-//               user_prefix.
-////////////////////////////////////////////////////////////////////
-Filename
-compose_href(const Filename &rel_dir, const Filename &user_prefix,
-             const Filename &basename) {
-  Filename result;
-
-  if (user_prefix.empty()) {
-    result = rel_dir;
-
-  } else {
-    // Check to see if the user prefix begins with a URL designator,
-    // like http:// or ftp://.
-    size_t ui = 0;
-    while (ui < user_prefix.length() && isalpha(user_prefix[ui])) {
-      ui++;
-    }
-    bool is_url = (user_prefix.get_fullpath().substr(ui, 3) == "://");
-    
-    if (!is_url && user_prefix.is_local()) {
-      Filename rel_user_dir(rel_dir, user_prefix);
-      result = rel_user_dir;
-      result.standardize();
-      
-    } else {
-      result = user_prefix;
-    }
-  }
-
-  if (basename.empty()) {
-    return result;
-  } else {
-    return Filename(result, basename);
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: escape_html
-//  Description: Returns the input string with all invalid characters
-//               for HTML code replaced by their HTML equivalents.
-////////////////////////////////////////////////////////////////////
-string
-escape_html(const string &input) {
-  static const struct {
-    const char *name;
-    int code;
-  } tokens[] = {
-    { "amp", '&' }, { "lt", '<' }, { "gt", '>' }, { "quot", '"' },
-    { "nbsp", 160 },
-
-    { "iexcl", 161 }, { "cent", 162 }, { "pound", 163 }, { "curren", 164 },
-    { "yen", 165 }, { "brvbar", 166 }, { "brkbar", 166 }, { "sect", 167 },
-    { "uml", 168 }, { "die", 168 }, { "copy", 169 }, { "ordf", 170 },
-    { "laquo", 171 }, { "not", 172 }, { "shy", 173 }, { "reg", 174 },
-    { "macr", 175 }, { "hibar", 175 }, { "deg", 176 }, { "plusmn", 177 },
-    { "sup2", 178 }, { "sup3", 179 }, { "acute", 180 }, { "micro", 181 },
-    { "para", 182 }, { "middot", 183 }, { "cedil", 184 }, { "sup1", 185 },
-    { "ordm", 186 }, { "raquo", 187 }, { "frac14", 188 }, { "frac12", 189 },
-    { "frac34", 190 }, { "iquest", 191 }, { "Agrave", 192 }, { "Aacute", 193 },
-    { "Acirc", 194 }, { "Atilde", 195 }, { "Auml", 196 }, { "Aring", 197 },
-    { "AElig", 198 }, { "Ccedil", 199 }, { "Egrave", 200 }, { "Eacute", 201 },
-    { "Ecirc", 202 }, { "Euml", 203 }, { "Igrave", 204 }, { "Iacute", 205 },
-    { "Icirc", 206 }, { "Iuml", 207 }, { "ETH", 208 }, { "Dstrok", 208 },
-    { "Ntilde", 209 }, { "Ograve", 210 }, { "Oacute", 211 }, { "Ocirc", 212 },
-    { "Otilde", 213 }, { "Ouml", 214 }, { "times", 215 }, { "Oslash", 216 },
-    { "Ugrave", 217 }, { "Uacute", 218 }, { "Ucirc", 219 }, { "Uuml", 220 },
-    { "Yacute", 221 }, { "THORN", 222 }, { "szlig", 223 }, { "agrave", 224 },
-    { "aacute", 225 }, { "acirc", 226 }, { "atilde", 227 }, { "auml", 228 },
-    { "aring", 229 }, { "aelig", 230 }, { "ccedil", 231 }, { "egrave", 232 },
-    { "eacute", 233 }, { "ecirc", 234 }, { "euml", 235 }, { "igrave", 236 },
-    { "iacute", 237 }, { "icirc", 238 }, { "iuml", 239 }, { "eth", 240 },
-    { "ntilde", 241 }, { "ograve", 242 }, { "oacute", 243 }, { "ocirc", 244 },
-    { "otilde", 245 }, { "ouml", 246 }, { "divide", 247 }, { "oslash", 248 },
-    { "ugrave", 249 }, { "uacute", 250 }, { "ucirc", 251 }, { "uuml", 252 },
-    { "yacute", 253 }, { "thorn", 254 }, { "yuml", 255 },
-
-    { NULL, 0 },
-  };
-
-  string result;
-  for (string::const_iterator ii = input.begin();
-       ii != input.end();
-       ++ii) {
-    int code = (unsigned char)(*ii);
-    bool found_match = false;
-    for (int i = 0; !found_match && tokens[i].name != NULL; i++) {
-      if (code == tokens[i].code) {
-        result += '&';
-        result += tokens[i].name;
-        result += ';';
-        found_match = true;
-      }
-    }
-
-    if (!found_match) {
-      result += (*ii);
-    }
-  }
-
-  return result;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: copy_file
-//  Description: Copies a file into the named directory, if it does
-//               not already exist there.  Returns true if
-//               successful, false otherwise.
-////////////////////////////////////////////////////////////////////
-bool
-copy_file(const Filename &source_file, const Filename &dest_dir) {
-  Filename dest_file = source_file;
-  dest_file.set_dirname(dest_dir);
-
-  if (dest_file.exists()) {
-    return true;
-  }
-
-  if (!source_file.exists()) {
-    return false;
-  }
-
-#if defined(HAVE_UNISTD_H) && !defined(WIN32)
-  // Try to make a hard link.
-  string os_source_file = source_file.to_os_specific();
-  string os_dest_file = dest_file.to_os_specific();
-  if (link(os_source_file.c_str(), os_dest_file.c_str()) == 0) {
-    cerr << "Linked " << source_file << " to " << dest_file << "\n";
-    return true;
-  }
-#endif
-
-  ifstream in;
-  if (!source_file.open_read(in)) {
-    cerr << "Unable to read " << source_file << "\n";
-    return false;
-  }
-  ofstream out;
-  if (!dest_file.open_write(out)) {
-    cerr << "Unable to write " << dest_file << "\n";
-    return false;
-  }
-
-  cerr << "Copying " << source_file << " to " << dest_file << "\n";
-
-  int c = in.get();
-  while (in && !in.eof()) {
-    out.put(c);
-    c = in.get();
-  }
-
-  return in.eof();
-}

+ 0 - 154
pandaapp/src/indexify/indexParameters.h

@@ -1,154 +0,0 @@
-// Filename: indexParameters.h
-// Created by:  drose (04Apr02)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#ifndef INDEXPARAMETERS_H
-#define INDEXPARAMETERS_H
-
-#include "pandatoolbase.h"
-
-#include "filename.h"
-#include "dSearchPath.h"
-#include "pnmImage.h"
-
-// Some of these constants may be modified by command-line parameters
-// from the user.
-
-// The maximum size of the index image.  It will shrink vertically to
-// fit the images it contains, and it will shrink horizontally to fit
-// a complete row of images (even if it does not contain a complete
-// row).  It will never be larger than this.
-extern int max_index_size_array[2];
-#define max_index_width (max_index_size_array[0])
-#define max_index_height (max_index_size_array[1])
-
-// The size of the individual thumbnail images, including the frames
-// (if present).  Thumbnail images are scaled to fit within this box.
-extern int thumb_size_array[2];
-#define thumb_width (thumb_size_array[0])
-#define thumb_height (thumb_size_array[1])
-
-// The total number of pixels reserved for the caption under each
-// thumbnail image.  This is the caption_font_size plus whatever
-// spacing should be included between the caption and the image.
-extern int thumb_caption_height;
-
-// The size in pixels of the caption font.  This depends on the point
-// size of the font as reported by FreeType, so the actual height of
-// the letters might be slightly lower or higher than this, depending
-// on the font.
-extern int caption_font_size;
-
-// The amount of space, in pixels, between each two neighboring
-// thumbnail images, and around the overall index image.
-extern int thumb_space_array[2];
-#define thumb_x_space (thumb_space_array[0])
-#define thumb_y_space (thumb_space_array[1])
-
-// The ratio by which the thumbnail images are reduced further when
-// frames are drawn, to allow room for a frame that resembles a slide
-// mount.
-extern double frame_reduction_factor;
-
-// The number of pixels of thickness to draw for the frames' outer
-// bevels and inner bevels, respectively.
-extern int frame_outer_bevel;
-extern int frame_inner_bevel;
-
-// The size of the reduced images on the individual image pages.  The
-// source image will be scaled to fit within this rectangle.
-extern int reduced_size_array[2];
-#define reduced_width (reduced_size_array[0])
-#define reduced_height (reduced_size_array[1])
-
-// The directory at the root of the output hierarchy (or as specified
-// by -a on the command line).
-extern Filename archive_dir;
-
-// The filenames (or URLS) to the icon images for navigating the
-// individual image pages.
-extern Filename prev_icon;
-extern Filename next_icon;
-extern Filename up_icon;
-extern Filename movie_icon;
-extern Filename sound_icon;
-
-const PNMImage &get_movie_icon();
-const PNMImage &get_sound_icon();
-
-// True to regenerate every image, whether it appears to need it or
-// not.
-extern bool force_regenerate;
-
-// True to use the Rose formatting convention for roll directory names.
-extern bool format_rose;
-
-// True to sort roll directory names by date.  Useful only with -r.
-extern bool sort_date;
-
-// True to place dummy thumbnails instead of loading actual images.
-extern bool dummy_mode;
-
-// True to draw frames (slide mounts) around each thumbnail image.
-extern bool draw_frames;
-
-// True to avoid introducing each roll directory on the index page
-// with its own little header.  This also ignored the roll.cm file if
-// it exists.
-extern bool omit_roll_headers;
-extern DSearchPath cm_search;
-
-// True to omit links to the full-size source images.
-extern bool omit_full_links;
-
-// True to omit complete.htm
-extern bool omit_complete;
-
-// True to caption photos with just a frame number instead of the
-// whole image basename.  This only works if the photo image filenames
-// consist of the roll directory name concatenated with a frame number.
-extern bool caption_frame_numbers;
-
-
-void finalize_parameters();
-
-
-
-// The following parameters are all computed based on the above.
-
-// The number of thumbnail images that fit across an index image,
-// horizontally and vertically.
-extern int thumb_count_x;
-extern int thumb_count_y;
-
-// The total number of thumbnail images within each index image.
-extern int max_thumbs;
-
-// The number of pixels wide each index image will actually be, based
-// on thumb_count_x.
-extern int actual_index_width;
-
-// The actual size of the rectangle each thumbnail image must be
-// scaled into, accounting for the presence of a frame.
-extern int thumb_interior_width;
-extern int thumb_interior_height;
-
-Filename compose_href(const Filename &rel_dir, const Filename &user_prefix,
-                      const Filename &basename = Filename());
-
-string escape_html(const string &input);
-bool copy_file(const Filename &source_file, const Filename &dest_dir);
-
-#endif
-
-

+ 0 - 738
pandaapp/src/indexify/indexify.cxx

@@ -1,738 +0,0 @@
-// Filename: indexify.cxx
-// Created by:  drose (03Apr02)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#include "indexify.h"
-#include "rollDirectory.h"
-#include "pnotify.h"
-#include "pnmTextMaker.h"
-#include "default_font.h"
-#include "default_index_icons.h"
-#include "indexParameters.h"
-#include "string_utils.h"
-
-#include <algorithm>
-
-////////////////////////////////////////////////////////////////////
-//     Function: Indexify::Constructor
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-Indexify::
-Indexify() {
-  clear_runlines();
-  add_runline("[opts] roll1-dir roll2-dir [roll3-dir ...]");
-  add_runline("[opts] full/*");
-
-  set_program_description
-    ("This program reads a collection of directories containing photo "
-     "archives (typically JPEG files), and will generate a number of "
-     "thumbnail images and a series of HTML pages to browse them.  It is "
-     "especially useful in preparation for burning the photo archives to "
-     "CD.\n\n"
-
-     "A number of directories is named on the command line; each "
-     "directory must contain a number of image files, and all directories "
-     "should be within the same parent directory.  Each directory is "
-     "considered a \"roll\", which may or may not correspond to a physical "
-     "roll of film, and the photos within each directory are grouped "
-     "correspondingly on the generated HTML pages.  One common special case "
-     "is in which all the roll directories are found in the subdirectory "
-     "named \"full\" (e.g., the second example above) or \"reduced\".  This "
-     "keeps the root directory nice and clean.\n\n"
-
-     "If a file exists by the same name as an image file but with the "
-     "extension \"cm\", that file is taken to be a HTML comment about that "
-     "particular image and is inserted the HTML page for that image.  "
-     "Similarly, if there is a file within a roll directory with the same "
-     "name as the directory itself (but with the extension \"cm\"), that file "
-     "is inserted into the front page to introduce that particular roll.  "
-     "Finally, a file with the name of the directory, but with the extension "
-     "\"ds\" may contain a brief one-line description of the directory, for "
-     "the toplevel index page.\n\n"
-
-     "Normally, all image files with the specified extension (normally "
-     "\"jpg\") within a roll directory are included in the index, and sorted "
-     "into alphabetical (or numerical) order.  If you wish to specify a "
-     "different order, or use only a subset of the images in a directory, "
-     "create a file in the roll directory with the same name as the "
-     "directory itself, and the extension \"ls\".  This file should "
-     "simply list the filenames (with or without extension) within the "
-     "roll directory in the order they should be listed.  If the ls "
-     "file exists but is empty, it indicates that the files should be "
-     "listed in reverse order, as from a camera that loads its film "
-     "upside-down.");
-
-  add_option
-    ("t", "title", 0,
-     "Specifies the title to give to the front HTML page.",
-     &Indexify::dispatch_string, NULL, &_front_title);
-
-  add_option
-    ("a", "archive-dir", 0,
-     "Write the generated files to the indicated directory, instead of "
-     "the directory above roll1-dir.",
-     &Indexify::dispatch_filename, NULL, &archive_dir);
-
-  add_option
-    ("r", "relative-dir", 0,
-     "When -a is specified to place the generated html files in a directory "
-     "other than the default, you may need "
-     "to specify how the html files will address the roll directories.  This "
-     "parameter specifies the relative path to the directory above the roll "
-     "directories, from the directory named by -a.",
-     &Indexify::dispatch_filename, NULL, &_roll_dir_root);
-
-  add_option
-    ("f", "", 0,
-     "Forces the regeneration of all reduced and thumbnail images, even if "
-     "image files already exist that seem to be newer than the source "
-     "image files.",
-     &Indexify::dispatch_none, &force_regenerate);
-
-  add_option
-    ("r", "", 0,
-     "Specifies that roll directory names are encoded using the Rose "
-     "convention of six digits: mmyyss, where mm and yy are the month and "
-     "year, and ss is a sequence number of the roll within the month.  This "
-     "name will be reformatted to m-yy/s for output.",
-     &Indexify::dispatch_none, &format_rose);
-
-  add_option
-    ("s", "", 0,
-     "When used in conjunction with -r, requests sorting of the roll "
-     "directory names by date.",
-     &Indexify::dispatch_none, &sort_date);
-
-  add_option
-    ("d", "", 0,
-     "Run in \"dummy\" mode; don't load any images, but instead just "
-     "draw an empty box indicating where the thumbnails will be.",
-     &Indexify::dispatch_none, &dummy_mode);
-
-  add_option
-    ("slide", "", 0,
-     "Draw a frame, like a slide mount, around each thumbnail image.",
-     &Indexify::dispatch_none, &draw_frames);
-
-  add_option
-    ("pe", "extension", 0,
-     "Specifies the filename extension (without a leading dot) to identify "
-     "photo files within the roll directories.  This is normally jpg.",
-     &Indexify::dispatch_string, NULL, &_photo_extension);
-
-  add_option
-    ("me", "extension", 0,
-     "Specifies the filename extension (without a leading dot) to identify "
-     "movie files within the roll directories.  This is normally mov.  If "
-     "a file exists with the same name as a given photo but with this "
-     "extension, it is taken to be a movie associated with the photo, and "
-     "a link will be generated to play the movie.",
-     &Indexify::dispatch_string, NULL, &_movie_extension);
-
-  add_option
-    ("se", "extension", 0,
-     "Specifies the filename extension (without a leading dot) to identify "
-     "sound files within the roll directories.  This is normally mp3.  If "
-     "a file exists with the same name as a given photo but with this "
-     "extension, it is taken to be a sound clip associated with the photo, "
-     "and a link will be generated to play the clip.",
-     &Indexify::dispatch_string, NULL, &_sound_extension);
-
-  add_option
-    ("i", "", 0,
-     "Indicates that default navigation icon images should be generated "
-     "into a directory called \"icons\" which will be created within the "
-     "directory named by -a.  This is meaningful only if -iprev, -inext, "
-     "-iup, -imovie, and -isound are not explicitly specified.",
-     &Indexify::dispatch_none, &_generate_icons);
-
-  add_option
-    ("omit-rh", "", 0,
-     "Omits roll headers introducing each roll directory, including any "
-     "headers defined in roll.cm files.",
-     &Indexify::dispatch_none, &omit_roll_headers);
-
-  add_option
-    ("cmdir", "director", 0,
-     "Searches in the named directory for .cm files before searching within "
-     "the source archive.  This option may be repeated.",
-     &Indexify::dispatch_search_path, NULL, &cm_search);
-
-  add_option
-    ("omit-full", "", 0,
-     "Omits links to the full-size images.",
-     &Indexify::dispatch_none, &omit_full_links);
-
-  add_option
-    ("omit-complete", "", 0,
-     "Omits the complete.htm index file that lists all thumbnails at once.",
-     &Indexify::dispatch_none, &omit_complete);
-
-  add_option
-    ("caption", "size[,spacing]", 0,
-     "Specifies the font size in pixels of the thumbnail captions.  If the "
-     "optional spacing parameter is included, it is the number of pixels "
-     "below each thumbnail that the caption should be placed.  Specify "
-     "-caption 0 to disable thumbnail captions.",
-     &Indexify::dispatch_caption, NULL);
-
-  add_option
-    ("fnum", "", 0,
-     "Writes the frame number of each thumbnail image into the caption "
-     "on the index page, instead of the image filename.  This only works "
-     "if the photo image filenames consist of the roll directory name "
-     "concatenated with a frame number.",
-     &Indexify::dispatch_none, &caption_frame_numbers);
-
-  add_option
-    ("font", "fontname", 0,
-     "Specifies the filename of the font to use to generate the thumbnail "
-     "captions.",
-     &Indexify::dispatch_filename, NULL, &_font_filename);
-
-  add_option
-    ("fontaa", "factor", 0,
-     "Specifies a scale factor to apply to the fonts used for captioning "
-     "when generating text for the purpose of antialiasing the fonts a "
-     "little better than FreeType can do by itself.  The letters are "
-     "generated large and then scaled to their proper size.  Normally this "
-     "should be a number in the range 3 to 4 for best effect.",
-     &Indexify::dispatch_double, NULL, &_font_aa_factor);
-
-  add_option
-    ("thumb", "x,y", 0,
-     "Specifies the size in pixels of the thumbnail images.",
-     &Indexify::dispatch_int_pair, NULL, &thumb_width);
-
-  add_option
-    ("reduced", "x,y", 0,
-     "Specifies the size in pixels of reduced images (images presented after "
-     "the first click on a thumbnail).",
-     &Indexify::dispatch_int_pair, NULL, &reduced_width);
-
-  add_option
-    ("space", "x,y", 0,
-     "Specifies the x,y spacing between thumbnail images, in pixels.",
-     &Indexify::dispatch_int_pair, NULL, &thumb_x_space);
-
-  add_option
-    ("index", "x,y", 0,
-     "Specifies the size in pixels of the index images (the images that "
-     "contain an index of thumbnails).",
-     &Indexify::dispatch_int_pair, NULL, &max_index_width);
-
-  add_option
-    ("iprev", "filename", 0,
-     "Specifies the relative pathname from the archive directory (or "
-     "absolute pathname) to the \"previous\" icon.",
-     &Indexify::dispatch_filename, NULL, &prev_icon);
-
-  add_option
-    ("inext", "filename", 0,
-     "Specifies the relative pathname from the archive directory (or "
-     "absolute pathname) to the \"next\" icon.",
-     &Indexify::dispatch_filename, NULL, &next_icon);
-
-  add_option
-    ("iup", "filename", 0,
-     "Specifies the relative pathname from the archive directory (or "
-     "absolute pathname) to the \"up\" icon.",
-     &Indexify::dispatch_filename, NULL, &up_icon);
-
-  add_option
-    ("imovie", "filename", 0,
-     "Specifies the relative pathname from the archive directory (or "
-     "absolute pathname) to the \"movie\" icon.  This is used only if "
-     "there are one or more movie files found in the directory.",
-     &Indexify::dispatch_filename, NULL, &movie_icon);
-
-  add_option
-    ("isound", "filename", 0,
-     "Specifies the relative pathname from the archive directory (or "
-     "absolute pathname) to the \"sound\" icon.  This is used only if "
-     "there are one or more sound files found in the directory.",
-     &Indexify::dispatch_filename, NULL, &sound_icon);
-
-  add_option
-    ("copyreduced", "", 0,
-     "Instead of generating index files, copy key files (such as "
-     "*.cm, *.ds) from the full image directory into the reduced "
-     "image directory, so that the full image directory may be removed "
-     "for generating a reduced-size archive.",
-     &Indexify::dispatch_none, &_copy_reduced);
-
-  _photo_extension = "jpg";
-  _movie_extension = "mov";
-  _sound_extension = "mp3";
-  _text_maker = (PNMTextMaker *)NULL;
-  _font_aa_factor = 4.0;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: Indexify::Destructor
-//       Access: Public, Virtual
-//  Description:
-////////////////////////////////////////////////////////////////////
-Indexify::
-~Indexify() {
-  RollDirs::iterator di;
-  for (di = _roll_dirs.begin(); di != _roll_dirs.end(); ++di) {
-    RollDirectory *roll_dir = (*di);
-    delete roll_dir;
-  }
-
-  if (_text_maker != (PNMTextMaker *)NULL) {
-    delete _text_maker;
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: Indexify::handle_args
-//       Access: Protected, Virtual
-//  Description: Does something with the additional arguments on the
-//               command line (after all the -options have been
-//               parsed).  Returns true if the arguments are good,
-//               false otherwise.
-////////////////////////////////////////////////////////////////////
-bool Indexify::
-handle_args(ProgramBase::Args &args) {
-  if (args.empty()) {
-    nout << "You must specify the roll directories containing archive photos on the command line.\n";
-    return false;
-  }
-
-  Args::const_iterator ai;
-  for (ai = args.begin(); ai != args.end(); ++ai) {
-    Filename filename = Filename::from_os_specific(*ai);
-    filename.standardize();
-    if (filename.is_directory()) {
-      string basename = filename.get_basename();
-      if (basename == "icons" || basename == "html" || 
-          basename == "reduced" || basename == "thumbs") {
-        nout << "Ignoring " << filename << "; indexify-generated directory.\n";
-
-      } else {
-        RollDirectory *roll_dir = new RollDirectory(filename);
-        _roll_dirs.push_back(roll_dir);
-      }
-
-    } else if (filename.exists()) {
-      nout << "Ignoring " << filename << "; not a directory.\n";
-
-    } else {
-      nout << filename << " does not exist.\n";
-      return false;
-    }
-  }
-
-  return true;
-}
-
-class SortRollDirs {
-public:
-  bool operator () (const RollDirectory *a, const RollDirectory *b) const {
-    return a->sort_date_before(*b);
-  }
-};
-
-////////////////////////////////////////////////////////////////////
-//     Function: Indexify::post_command_line
-//       Access: Protected, Virtual
-//  Description: This is called after the command line has been
-//               completely processed, and it gives the program a
-//               chance to do some last-minute processing and
-//               validation of the options and arguments.  It should
-//               return true if everything is fine, false if there is
-//               an error.
-////////////////////////////////////////////////////////////////////
-bool Indexify::
-post_command_line() {
-  if (_roll_dirs.empty()) {
-    nout << "No roll directories.\n";
-    return false;
-  }
-
-  if (archive_dir.empty()) {
-    // Choose a default archive directory, above the first roll directory.
-    archive_dir = _roll_dirs.front()->get_dir().get_dirname();
-    string parent_dirname = archive_dir.get_basename();
-    if (parent_dirname == "full" || parent_dirname == "reduced") {
-      // As a special case, if the subdirectory name is "full" or
-      // "reduced", use the directory above that.
-      archive_dir = archive_dir.get_dirname();
-    }
-    if (archive_dir.empty()) {
-      archive_dir = ".";
-    }
-  }
-  archive_dir.standardize();
-
-  if (!_roll_dir_root.empty()) {
-    _roll_dir_root.standardize();
-  }
-
-  // Sort the roll directories, if specified.
-  if (format_rose && sort_date) {
-    sort(_roll_dirs.begin(), _roll_dirs.end(), SortRollDirs());
-  }
-
-  // Update the next/prev pointers in each roll directory so we can
-  // browse from one to the other.
-  RollDirectory *prev_roll_dir = (RollDirectory *)NULL;
-  RollDirs::iterator di;
-  for (di = _roll_dirs.begin(); di != _roll_dirs.end(); ++di) {
-    RollDirectory *roll_dir = (*di);
-    if (prev_roll_dir != (RollDirectory *)NULL) {
-      roll_dir->_prev = prev_roll_dir;
-      prev_roll_dir->_next = roll_dir;
-    }
-    prev_roll_dir = roll_dir;
-  }
-
-  if (_front_title.empty()) {
-    // Supply a default title.
-    if (_roll_dirs.size() == 1) {
-      _front_title = _roll_dirs.front()->get_name();
-    } else {
-      _front_title = _roll_dirs.front()->get_name() + " through " + _roll_dirs.back()->get_name();
-    }
-  }
-    
-  if (caption_font_size != 0) {
-    if (!_font_filename.empty()) {
-      _text_maker = new PNMTextMaker(_font_filename, 0);
-      if (!_text_maker->is_valid()) {
-        delete _text_maker;
-        _text_maker = (PNMTextMaker *)NULL;
-      }
-    }
-    
-    if (_text_maker == (PNMTextMaker *)NULL) {
-      _text_maker = new PNMTextMaker((const char *)default_font, 
-                                     default_font_size, 0);
-      if (!_text_maker->is_valid()) {
-        nout << "Unable to open default font.\n";
-        delete _text_maker;
-        _text_maker = (PNMTextMaker *)NULL;
-      }
-    }
-    
-    if (_text_maker != (PNMTextMaker *)NULL) {
-      _text_maker->set_scale_factor(_font_aa_factor);
-      _text_maker->set_pixel_size(caption_font_size);
-      _text_maker->set_align(PNMTextMaker::A_center);
-    }
-  }
-
-  if (_generate_icons) {
-    if (prev_icon.empty()) {
-      prev_icon = Filename("icons", default_left_icon_filename);
-      Filename icon_filename(archive_dir, prev_icon);
-
-      if (force_regenerate || !icon_filename.exists()) {
-        nout << "Generating " << icon_filename << "\n";
-        icon_filename.make_dir();
-        icon_filename.set_binary();
-
-        ofstream output;
-        if (!icon_filename.open_write(output)) {
-          nout << "Unable to write to " << icon_filename << "\n";
-          exit(1);
-        }
-        output.write((const char *)default_left_icon, default_left_icon_len);
-      }
-    }
-    if (next_icon.empty()) {
-      next_icon = Filename("icons", default_right_icon_filename);
-      Filename icon_filename(archive_dir, next_icon);
-      if (force_regenerate || !icon_filename.exists()) {
-        nout << "Generating " << icon_filename << "\n";
-        icon_filename.make_dir();
-        icon_filename.set_binary();
-
-        ofstream output;
-        if (!icon_filename.open_write(output)) {
-          nout << "Unable to write to " << icon_filename << "\n";
-          exit(1);
-        }
-        output.write((const char *)default_right_icon, default_right_icon_len);
-      }
-    }
-    if (up_icon.empty()) {
-      up_icon = Filename("icons", default_up_icon_filename);
-      Filename icon_filename(archive_dir, up_icon);
-      if (force_regenerate || !icon_filename.exists()) {
-        nout << "Generating " << icon_filename << "\n";
-        icon_filename.make_dir();
-        icon_filename.set_binary();
-      
-        ofstream output;
-        if (!icon_filename.open_write(output)) {
-          nout << "Unable to write to " << icon_filename << "\n";
-          exit(1);
-        }
-        output.write((const char *)default_up_icon, default_up_icon_len);
-      }
-    }
-    if (movie_icon.empty()) {
-      movie_icon = Filename("icons", default_movie_icon_filename);
-      Filename icon_filename(archive_dir, movie_icon);
-      if (force_regenerate || !icon_filename.exists()) {
-        nout << "Generating " << icon_filename << "\n";
-        icon_filename.make_dir();
-        icon_filename.set_binary();
-      
-        ofstream output;
-        if (!icon_filename.open_write(output)) {
-          nout << "Unable to write to " << icon_filename << "\n";
-          exit(1);
-        }
-        output.write((const char *)default_movie_icon, default_movie_icon_len);
-      }
-    }
-    if (sound_icon.empty()) {
-      sound_icon = Filename("icons", default_sound_icon_filename);
-      Filename icon_filename(archive_dir, sound_icon);
-      if (force_regenerate || !icon_filename.exists()) {
-        nout << "Generating " << icon_filename << "\n";
-        icon_filename.make_dir();
-        icon_filename.set_binary();
-      
-        ofstream output;
-        if (!icon_filename.open_write(output)) {
-          nout << "Unable to write to " << icon_filename << "\n";
-          exit(1);
-        }
-        output.write((const char *)default_sound_icon, default_sound_icon_len);
-      }
-    }
-  }
-
-  finalize_parameters();
-
-
-  return ProgramBase::post_command_line();
-}
-
-
-////////////////////////////////////////////////////////////////////
-//     Function: Indexify::dispatch_caption
-//       Access: Protected, Static
-//  Description: Dispatch function for the -caption parameter, which
-//               takes either one or two numbers separated by a comma,
-//               representing the caption font size and the optional
-//               pixel spacing of the caption under the image.
-////////////////////////////////////////////////////////////////////
-bool Indexify::
-dispatch_caption(const string &opt, const string &arg, void *) {
-  vector_string words;
-  tokenize(arg, words, ",");
-
-  int caption_spacing = 0;
-
-  bool okflag = false;
-  if (words.size() == 1) {
-    okflag =
-      string_to_int(words[0], caption_font_size);
-
-  } else if (words.size() == 2) {
-    okflag =
-      string_to_int(words[0], caption_font_size) &&
-      string_to_int(words[1], caption_spacing);
-  }
-
-  if (!okflag) {
-    nout << "-" << opt
-         << " requires one or two integers separated by a comma.\n";
-    return false;
-  }
-
-  thumb_caption_height = caption_font_size + caption_spacing;
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: Indexify::run
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-void Indexify::
-run() {
-  bool all_ok = true;
-
-  RollDirs::iterator di;
-  for (di = _roll_dirs.begin(); di != _roll_dirs.end(); ++di) {
-    RollDirectory *roll_dir = (*di);
-    if (!roll_dir->scan(_photo_extension, _movie_extension, _sound_extension)) {
-      nout << "Unable to read " << *roll_dir << "\n";
-      all_ok = false;
-    }
-    roll_dir->collect_index_images();
-  }
-
-  if (!all_ok) {
-    exit(1);
-  }
-
-  if (_copy_reduced) {
-    do_copy_reduced();
-  } else {
-    do_generate_images();
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: Indexify::do_generate_images
-//       Access: Public
-//  Description: The main work function.  Generates all of the reduced
-//               images and the html code.
-////////////////////////////////////////////////////////////////////
-void Indexify::
-do_generate_images() {
-  // First, generate all the images.
-  RollDirs::iterator di;
-  for (di = _roll_dirs.begin(); di != _roll_dirs.end(); ++di) {
-    RollDirectory *roll_dir = (*di);
-    if (!roll_dir->generate_images(archive_dir, _text_maker)) {
-      nout << "Failure.\n";
-      exit(1);
-    }
-  }
-
-  // Then go back and generate the HTML.
-  for (di = _roll_dirs.begin(); di != _roll_dirs.end(); ++di) {
-    RollDirectory *roll_dir = (*di);
-    if (!roll_dir->generate_html(archive_dir, _roll_dir_root)) {
-      nout << "Failure.\n";
-      exit(1);
-    }
-  }
-
-  if (!omit_complete) {
-    // Generate the complete index that browses all the roll directories
-    // at once.
-    Filename complete_filename(archive_dir, "html/complete.htm");
-    nout << "Generating " << complete_filename << "\n";
-    complete_filename.set_text();
-    ofstream complete_html;
-    if (!complete_filename.open_write(complete_html)) {
-      nout << "Unable to write to " << complete_filename << "\n";
-      exit(1);
-    }
-
-    complete_html
-      << "<html>\n"
-      << "<head>\n"
-      << "<title>" << _front_title << "</title>\n"
-      << "</head>\n"
-      << "<body>\n"
-      << "<h1>" << _front_title << "</h1>\n";
-    
-    for (di = _roll_dirs.begin(); di != _roll_dirs.end(); ++di) {
-      RollDirectory *roll_dir = (*di);
-      complete_html
-        << roll_dir->get_comment_html()
-        << roll_dir->get_index_html();
-    }
-    
-    complete_html << "<p>\n";
-    if (!up_icon.empty()) {
-      // Use an icon to go up.
-      Filename up_icon_href = compose_href("..", up_icon);
-      complete_html 
-        << "<a href=\"../index.htm\"><img src=\"" << up_icon_href
-        << "\" alt=\"return to index\"></a>\n";
-    } else {
-      // No up icon; use text to go up.
-      complete_html
-        << "<br><a href=\"../index.htm\">Return to index</a>\n";
-    }
-    complete_html << "</p>\n";
-    
-    complete_html
-      << "</body>\n"
-      << "</html>\n";
-  }
-    
-  // And finally, generate the index HTML file that sits on the top of
-  // all of this.
-  Filename index_filename(archive_dir, "index.htm");
-  nout << "Generating " << index_filename << "\n";
-  index_filename.set_text();
-  ofstream index_html;
-  if (!index_filename.open_write(index_html)) {
-    nout << "Unable to write to " << index_filename << "\n";
-    exit(1);
-  }
-
-  index_html
-    << "<html>\n"
-    << "<head>\n"
-    << "<title>" << _front_title << "</title>\n"
-    << "</head>\n"
-    << "<body>\n"
-    << "<h1>" << _front_title << "</h1>\n"
-    << "<ul>\n";
-
-  for (di = _roll_dirs.begin(); di != _roll_dirs.end(); ++di) {
-    RollDirectory *roll_dir = (*di);
-    if (!roll_dir->is_empty()) {
-      index_html
-        << "<a name=\"" << roll_dir->get_basename() << "\">\n"
-        << "<li><a href=\"html/" << roll_dir->get_basename() << ".htm\">"
-        << roll_dir->get_name() << " " << escape_html(roll_dir->get_desc())
-        << "</a></li>\n";
-    }
-  }
-
-  index_html
-    << "</ul>\n";
-
-  if (!omit_complete) {
-    index_html
-      << "<a href=\"html/complete.htm\">(complete archive)</a>\n";
-  }
-
-  index_html
-    << "</body>\n"
-    << "</html>\n";
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: Indexify::do_copy_reduced
-//       Access: Public
-//  Description: The main work function in -copyreduced mode.  Simply
-//               copies key files from the full directory to the
-//               reduced directory.
-////////////////////////////////////////////////////////////////////
-void Indexify::
-do_copy_reduced() {
-  RollDirs::iterator di;
-  for (di = _roll_dirs.begin(); di != _roll_dirs.end(); ++di) {
-    RollDirectory *roll_dir = (*di);
-    if (!roll_dir->copy_reduced(archive_dir)) {
-      nout << "Failure.\n";
-      exit(1);
-    }
-  }
-}
-
-
-int main(int argc, char *argv[]) {
-  Indexify prog;
-  prog.parse_command_line(argc, argv);
-  prog.run();
-  return 0;
-}

+ 0 - 66
pandaapp/src/indexify/indexify.h

@@ -1,66 +0,0 @@
-// Filename: indexify.h
-// Created by:  drose (03Apr02)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#ifndef INDEXIFY_H
-#define INDEXIFY_H
-
-#include "pandatoolbase.h"
-
-#include "programBase.h"
-#include "filename.h"
-#include "pvector.h"
-
-class RollDirectory;
-class PNMTextMaker;
-
-////////////////////////////////////////////////////////////////////
-//       Class : Indexify
-// Description : A program to generate a series of thumbnail images
-//               and HTML pages to view a number of image files in an
-//               archive directory, before writing the archive to a
-//               permanent medium like a CD.
-////////////////////////////////////////////////////////////////////
-class Indexify : public ProgramBase {
-public:
-  Indexify();
-  virtual ~Indexify();
-
-protected:
-  virtual bool handle_args(Args &args);
-  virtual bool post_command_line();
-
-  static bool dispatch_caption(const string &opt, const string &arg, void *var);
-
-public:
-  void run();
-  void do_generate_images();
-  void do_copy_reduced();
-
-  string _front_title;
-  Filename _roll_dir_root;
-  string _photo_extension;
-  string _movie_extension;
-  string _sound_extension;
-  Filename _font_filename;
-  bool _generate_icons;
-  double _font_aa_factor;
-  bool _copy_reduced;
-
-  typedef pvector<RollDirectory *> RollDirs;
-  RollDirs _roll_dirs;
-
-  PNMTextMaker *_text_maker;
-};
-
-#endif

BIN
pandaapp/src/indexify/left.png


BIN
pandaapp/src/indexify/movie.png


BIN
pandaapp/src/indexify/music_big.jpg


+ 0 - 182
pandaapp/src/indexify/photo.cxx

@@ -1,182 +0,0 @@
-// Filename: photo.cxx
-// Created by:  drose (03Apr02)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#include "photo.h"
-#include "indexParameters.h"
-#include "rollDirectory.h"
-
-static const char * const standard_movie_extensions[] = {
-  "mov", "avi", "mpg", "mp4", NULL
-};
-
-static const char * const standard_sound_extensions[] = {
-  "mp3", "wav", "ogg", NULL
-};
-                                                
-
-
-////////////////////////////////////////////////////////////////////
-//     Function: Photo::Constructor
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-Photo::
-Photo(RollDirectory *dir, const Filename &basename, 
-      const string &movie_extension, const string &sound_extension) :
-  _dir(dir),
-  _basename(basename)
-{
-  _name = _basename.get_basename_wo_extension();
-  _frame_number = _name;
-  if (caption_frame_numbers) {
-    const string &dirname = _dir->get_basename();
-
-    // If the initial prefix of the filename is the same as the roll
-    // directory, lop it off when caption_frame_numbers is in effect.
-    if (_frame_number.substr(0, dirname.length()) == dirname) {
-      _frame_number = _frame_number.substr(dirname.length());
-      while (_frame_number.length() > 1 && _frame_number[0] == '0') {
-        _frame_number = _frame_number.substr(1);
-      }
-    }
-  }
-  
-  _full_x_size = 0;
-  _full_y_size = 0;
-  _reduced_x_size = 0;
-  _reduced_y_size = 0;
-  _has_reduced = false;
-
-  _has_movie = false;
-  Filename movie_filename(_dir->get_dir(), _basename);
-  movie_filename.set_extension(movie_extension);
-  if (movie_filename.exists()) {
-    _movie = movie_filename.get_basename();
-    _has_movie = true;
-
-  } else {
-    const char * const *ext;
-    for (ext = standard_movie_extensions; *ext != NULL; ++ext) {
-      movie_filename.set_extension(*ext);
-      if (movie_filename.exists()) {
-        _movie = movie_filename.get_basename();
-        _has_movie = true;
-      }
-    }
-  }
-
-  _has_sound = false;
-  Filename sound_filename(_dir->get_dir(), _basename);
-  sound_filename.set_extension(sound_extension);
-  if (sound_filename.exists()) {
-    _sound = sound_filename.get_basename();
-    _has_sound = true;
-
-  } else {
-    const char * const *ext;
-    for (ext = standard_sound_extensions; *ext != NULL; ++ext) {
-      sound_filename.set_extension(*ext);
-      if (sound_filename.exists()) {
-        _sound = sound_filename.get_basename();
-        _has_sound = true;
-      }
-    }
-  }
-
-  _has_cm = false;
-  Filename cm_filename(_dir->get_dir(), _basename);
-  cm_filename.set_extension("cm");
-  if (cm_filename.exists()) {
-    _cm = cm_filename.get_basename();
-    _has_cm = true;
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: Photo::get_basename
-//       Access: Public
-//  Description: Returns the filename of the photo within its roll
-//               directory.
-////////////////////////////////////////////////////////////////////
-const Filename &Photo::
-get_basename() const {
-  return _basename;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: Photo::get_movie
-//       Access: Public
-//  Description: Returns the filename of the movie associated with the
-//               photo, if any.
-////////////////////////////////////////////////////////////////////
-const Filename &Photo::
-get_movie() const {
-  return _movie;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: Photo::get_sound
-//       Access: Public
-//  Description: Returns the filename of the sound clip associated
-//               with the photo, if any.
-////////////////////////////////////////////////////////////////////
-const Filename &Photo::
-get_sound() const {
-  return _sound;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: Photo::get_cm
-//       Access: Public
-//  Description: Returns the filename of the comment file associated
-//               with the photo, if any.
-////////////////////////////////////////////////////////////////////
-const Filename &Photo::
-get_cm() const {
-  return _cm;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: Photo::get_name
-//       Access: Public
-//  Description: Returns the name of the photo without its filename
-//               extension.
-////////////////////////////////////////////////////////////////////
-const string &Photo::
-get_name() const {
-  return _name;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: Photo::get_frame_number
-//       Access: Public
-//  Description: Returns the string describing the photo within the
-//               roll directory.  This is usually the same string
-//               reported by get_name(), but it may be just the frame
-//               number if caption_frame_numbers is in effect.
-////////////////////////////////////////////////////////////////////
-const string &Photo::
-get_frame_number() const {
-  return _frame_number;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: Photo::output
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-void Photo::
-output(ostream &out) const {
-  out << _basename;
-}

+ 0 - 67
pandaapp/src/indexify/photo.h

@@ -1,67 +0,0 @@
-// Filename: photo.h
-// Created by:  drose (03Apr02)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#ifndef PHOTO_H
-#define PHOTO_H
-
-#include "pandatoolbase.h"
-
-#include "filename.h"
-
-class RollDirectory;
-
-////////////////////////////////////////////////////////////////////
-//       Class : Photo
-// Description : A single photo image within a roll directory.
-////////////////////////////////////////////////////////////////////
-class Photo {
-public:
-  Photo(RollDirectory *dir, const Filename &basename, 
-        const string &movie_extension, const string &sound_extension);
-
-  const Filename &get_basename() const;
-  const Filename &get_movie() const;
-  const Filename &get_sound() const;
-  const Filename &get_cm() const;
-  const string &get_name() const;
-  const string &get_frame_number() const;
-
-  void output(ostream &out) const;
-
-public:
-  int _full_x_size;
-  int _full_y_size;
-  int _reduced_x_size;
-  int _reduced_y_size;
-  bool _has_reduced;
-  bool _has_movie;
-  bool _has_sound;
-  bool _has_cm;
-
-private:
-  RollDirectory *_dir;
-  Filename _basename;
-  Filename _movie;
-  Filename _sound;
-  Filename _cm;
-  string _name;
-  string _frame_number;
-};
-
-INLINE ostream &operator << (ostream &out, const Photo &p) {
-  p.output(out);
-  return out;
-}
-
-#endif

BIN
pandaapp/src/indexify/right.png


+ 0 - 878
pandaapp/src/indexify/rollDirectory.cxx

@@ -1,878 +0,0 @@
-// Filename: rollDirectory.cxx
-// Created by:  drose (03Apr02)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#include "rollDirectory.h"
-#include "photo.h"
-#include "indexImage.h"
-#include "indent.h"
-#include "pnotify.h"
-#include "string_utils.h"
-#include "indexParameters.h"
-
-#include <ctype.h>
-#include <algorithm>
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::Constructor
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-RollDirectory::
-RollDirectory(const Filename &dir) :
-  _dir(dir)
-{
-  _prev = (RollDirectory *)NULL;
-  _next = (RollDirectory *)NULL;
-
-  _basename = _dir.get_basename();
-  if (format_rose) {
-    _name = format_basename(_basename);
-  } else {
-    _name = _basename;
-  }
-
-  _got_ds_file = false;
-  _got_ls_file = false;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::Destructor
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-RollDirectory::
-~RollDirectory() {
-  IndexImages::iterator ii;
-  for (ii = _index_images.begin(); ii != _index_images.end(); ++ii) {
-    IndexImage *index_image = (*ii);
-    delete index_image;
-  }
-
-  Photos::iterator pi;
-  for (pi = _photos.begin(); pi != _photos.end(); ++pi) {
-    Photo *photo = (*pi);
-    delete photo;
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::get_dir
-//       Access: Public
-//  Description: Returns the filename of the directory.
-////////////////////////////////////////////////////////////////////
-const Filename &RollDirectory::
-get_dir() const {
-  return _dir;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::get_basename
-//       Access: Public
-//  Description: Returns the base name of the directory.
-////////////////////////////////////////////////////////////////////
-const string &RollDirectory::
-get_basename() const {
-  return _basename;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::get_name
-//       Access: Public
-//  Description: Returns the formatted name of the directory.  This is
-//               often the same as the basename, but if -r is
-//               specified on the command line it might be a somewhat
-//               different, reformatted name.  In any case, it is the
-//               name of the roll as it should be presented to the
-//               user.
-////////////////////////////////////////////////////////////////////
-const string &RollDirectory::
-get_name() const {
-  return _name;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::get_desc
-//       Access: Public
-//  Description: Returns the one-line description for the directory.
-////////////////////////////////////////////////////////////////////
-const string &RollDirectory::
-get_desc() const {
-  return _desc;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::scan
-//       Access: Public
-//  Description: Scans the directory for all the listed photos.
-////////////////////////////////////////////////////////////////////
-bool RollDirectory::
-scan(const string &photo_extension, const string &movie_extension,
-     const string &sound_extension) {
-  bool reverse_order = false;
-  bool explicit_list = false;
-
-  // Check for a .ds file, which contains a one-line description of
-  // the contents of the directory.
-  _ds_filename = Filename(_basename);
-  _ds_filename.set_extension("ds");
-  if (cm_search.is_empty() || !_ds_filename.resolve_filename(cm_search)) {
-    // If the ds file isn't found along the search path specified
-    // via -cmdir on the command line, then look for it in the
-    // appropriate source directory.
-    _ds_filename = Filename(_dir, _ds_filename);
-  }
-  if (_ds_filename.exists()) {
-    _got_ds_file = true;
-    _ds_filename.set_text();
-    ifstream ds;
-    if (!_ds_filename.open_read(ds)) {
-      nout << "Could not read " << _ds_filename << "\n";
-    } else {
-      // Get the words out one at a time and put just one space
-      // between them.
-      string word;
-      ds >> word;
-      while (!ds.eof() && !ds.fail()) {
-        if (!_desc.empty()) {
-          _desc += ' ';
-        }
-        _desc += word;
-        word = string();
-        ds >> word;
-      }
-      if (!word.empty()) {
-        if (!_desc.empty()) {
-          _desc += ' ';
-        }
-        _desc += word;
-      }
-    }
-  }
-
-  // Check for an .ls file in the roll directory, which may give an
-  // explicit ordering, or if empty, it specifies reverse ordering.
-  _ls_filename = Filename(_dir, _basename);
-  _ls_filename.set_extension("ls");
-  if (_ls_filename.exists()) {
-    _got_ls_file = true;
-    add_contributing_filename(_ls_filename);
-    _ls_filename.set_text();
-    ifstream ls;
-    if (!_ls_filename.open_read(ls)) {
-      nout << "Could not read " << _ls_filename << "\n";
-    } else {
-      bool any_words = false;
-      string word;
-      ls >> word;
-      while (!ls.eof() && !ls.fail()) {
-        any_words = true;
-        Filename try_filename(_dir, word);
-        if (!try_filename.exists()) {
-          try_filename = Filename(_dir, word + "." + photo_extension);
-        }
-        if (!try_filename.exists()) {
-          try_filename = Filename(_dir, _basename + word + "." + photo_extension);
-        }
-        if (!try_filename.exists()) {
-          try_filename = Filename(_dir, _basename + "0" + word + "." + photo_extension);
-        }
-        if (try_filename.exists()) {
-          add_photo(try_filename.get_basename(), movie_extension, 
-                    sound_extension);
-        } else {
-          nout << "Frame " << word << " not found in " << _name << "\n";
-        }
-        ls >> word;
-      }
-
-      if (!any_words) {
-        // An empty .ls file just means reverse the order.
-        reverse_order = true;
-      } else {
-        // A non-empty .ls file has listed all the files we need; no
-        // need to scan the directory.
-        explicit_list = true;
-      }
-    }
-  }
-
-  if (!explicit_list) {
-    vector_string contents;
-    
-    if (!_dir.scan_directory(contents)) {
-      nout << "Could not read " << _dir << "\n";
-      return false;
-    }
-
-    // We want to sort the filenames in our own way, so that
-    // underscore is deemed to fall before anything else.  This allows
-    // the underscore, the only non-alphnumeric character we can have
-    // in a filename for an iso9660 image, to stand for "before 0".
-    sort(contents.begin(), contents.end(), compare_filenames);
-
-    if (reverse_order) {
-      reverse(contents.begin(), contents.end());
-    }
-
-    vector_string::iterator ci;
-    for (ci = contents.begin(); ci != contents.end(); ++ci) {
-      Filename basename = (*ci);
-      if (basename.get_extension() == photo_extension) {
-        add_photo(basename, movie_extension, sound_extension);
-      }
-    }
-  }
-
-  if (_photos.empty()) {
-    nout << _dir << " contains no photos.\n";
-    // This is not an error, just a notice.
-  }
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::collect_index_images
-//       Access: Public
-//  Description: Groups the photos into one or more IndexImages.
-////////////////////////////////////////////////////////////////////
-void RollDirectory::
-collect_index_images() {
-  // Don't call this twice.
-  nassertv(_index_images.empty());
-
-  if (is_empty()) {
-    return;
-  }
-
-  IndexImage *index_image = new IndexImage(this, _index_images.size());
-  _index_images.push_back(index_image);
-
-  size_t i;
-  for (i = 0; i < _photos.size(); i++) {
-    if (!index_image->add_photo(i)) {
-      // Oops, that one's full.
-      index_image = new IndexImage(this, _index_images.size());
-      _index_images.push_back(index_image);
-      bool result = index_image->add_photo(i);
-      nassertv(result);
-    }
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::sort_date_before
-//       Access: Public
-//  Description: Returns true if the given directory name should sort
-//               before the other one, assuming the Rose naming
-//               convention of mmyyss is in place.
-////////////////////////////////////////////////////////////////////
-bool RollDirectory::
-sort_date_before(const RollDirectory &other) const {
-  if (_name == _basename && other._name == other._basename) {
-    // If Rose naming convention is not in place in either case, sort
-    // alphabetically.
-    return _basename < other._basename;
-
-  } else if (_name == _basename) {
-    // If Rose naming convention is in place on this one and not the
-    // other, it sorts first.
-    return true;
-
-  } else if (other._name == other._basename) {
-    // And vice-versa.
-    return false;
-
-  } else {
-    // Rose naming convention holds.  Sort based on year first.  Years
-    // above 90 are deemed to belong to the previous century.
-    string yy = _basename.substr(2, 2);
-    string other_yy = other._basename.substr(2, 2);
-    int year = atoi(yy.c_str());
-    int other_year = atoi(other_yy.c_str());
-    if (year < 90) {
-      year += 100;
-    }
-    if (other_year < 90) {
-      other_year += 100;
-    }
-    if (year != other_year) {
-      return year < other_year;
-    }
-
-    // After year, sort alphabetically.
-    return _basename < other._basename;
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::get_newest_contributing_filename
-//       Access: Public
-//  Description: Returns the Filename with the newest timestamp that
-//               contributes to the contents of the index images in
-//               this directory, if any (other than the images
-//               themselves).  This is used by the IndexImage code to
-//               determine if it needs to regenerate the index image.
-////////////////////////////////////////////////////////////////////
-const Filename &RollDirectory::
-get_newest_contributing_filename() const {
-  return _newest_contributing_filename;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::is_empty
-//       Access: Public
-//  Description: Returns true if the directory is empty (has no
-//               photos).
-////////////////////////////////////////////////////////////////////
-bool RollDirectory::
-is_empty() const {
-  return _photos.empty();
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::get_num_photos
-//       Access: Public
-//  Description: Returns the number of photos in the roll.
-////////////////////////////////////////////////////////////////////
-int RollDirectory::
-get_num_photos() const {
-  return _photos.size();
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::get_photo
-//       Access: Public
-//  Description: Returns the nth photo in the roll.
-////////////////////////////////////////////////////////////////////
-Photo *RollDirectory::
-get_photo(int n) const {
-  nassertr(n >= 0 && n < (int)_photos.size(), NULL);
-  return _photos[n];
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::get_num_index_images
-//       Access: Public
-//  Description: Returns the number of index images in the roll.
-////////////////////////////////////////////////////////////////////
-int RollDirectory::
-get_num_index_images() const {
-  return _index_images.size();
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::get_index_image
-//       Access: Public
-//  Description: Returns the nth index image in the roll.
-////////////////////////////////////////////////////////////////////
-IndexImage *RollDirectory::
-get_index_image(int n) const {
-  nassertr(n >= 0 && n < (int)_index_images.size(), NULL);
-  return _index_images[n];
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::generate_images
-//       Access: Public
-//  Description: Generates image files appropriate to this directory
-//               to the indicated archive dir.  Returns true on
-//               success, false on failure.
-////////////////////////////////////////////////////////////////////
-bool RollDirectory::
-generate_images(const Filename &archive_dir, PNMTextMaker *text_maker) {
-  if (is_empty()) {
-    return true;
-  }
-  nassertr(!_index_images.empty(), false);
-
-  IndexImages::iterator ii;
-  for (ii = _index_images.begin(); ii != _index_images.end(); ++ii) {
-    IndexImage *index_image = (*ii);
-    if (!index_image->generate_images(archive_dir, text_maker)) {
-      return false;
-    }
-  }
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::generate_html
-//       Access: Public
-//  Description: Generates all appropriate HTML files for this
-//               directory, and generate the appropriate HTML code
-//               into the html strings (retrieved by
-//               get_comment_html() and get_index_html()).
-////////////////////////////////////////////////////////////////////
-bool RollDirectory::
-generate_html(const Filename &archive_dir, const Filename &roll_dir_root) {
-  if (is_empty()) {
-    return true;
-  }
-  nassertr(!_index_images.empty(), false);
-
-  ostringstream comment_strm;
-  comment_strm
-    << "<a name=\"" << _basename << "\">\n";
-
-  if (!omit_roll_headers) {
-    Filename cm_filename(_basename);
-    cm_filename.set_extension("cm");
-    if (cm_search.is_empty() || !cm_filename.resolve_filename(cm_search)) {
-      // If the cm file isn't found along the search path specified
-      // via -cmdir on the command line, then look for it in the
-      // appropriate source directory.
-      cm_filename = Filename(_dir, cm_filename);
-    }
-
-    if (cm_filename.exists()) {
-      // If the comment file for the roll exists, insert its contents
-      // here instead of the generic header.
-      if (!insert_html_comment(comment_strm, cm_filename)) {
-        return false;
-      }
-      
-    } else {
-      comment_strm
-        << "<h2>" << _name << "</h2>\n";
-      if (!_desc.empty()) {
-        comment_strm << "<p>" << escape_html(_desc) << ".</p>\n";
-      }
-    }
-  }
-  _comment_html = comment_strm.str();
-
-  Filename html_dir(archive_dir, "html");
-  nout << "Generating " << Filename(html_dir, _basename) << "/*\n";
-
-  ostringstream index_strm;
-  index_strm << "<p>\n";
-  IndexImages::iterator ii;
-  for (ii = _index_images.begin(); ii != _index_images.end(); ++ii) {
-    IndexImage *index_image = (*ii);
-    if (!index_image->generate_html(index_strm, archive_dir, roll_dir_root)) {
-      return false;
-    }
-  }
-  index_strm << "</p>\n";
-  _index_html = index_strm.str();
-
-  // Also generate the index html for this directory.
-  Filename html_filename(html_dir, _basename);
-  html_filename.set_extension("htm");
-  nout << "Generating " << html_filename << "\n";
-  html_filename.set_text();
-  ofstream index_html;
-  if (!html_filename.open_write(index_html)) {
-    nout << "Unable to write to " << html_filename << "\n";
-    exit(1);
-  }
-
-  string up_href = "../index.htm#" + _basename;
-
-  Filename prev_roll_filename;
-  Filename next_roll_filename;
-
-  if (_prev != (RollDirectory *)NULL) {
-    prev_roll_filename = _prev->_basename;
-    prev_roll_filename.set_extension("htm");
-  }
-  if (_next != (RollDirectory *)NULL) {
-    next_roll_filename = _next->_basename;
-    next_roll_filename.set_extension("htm");
-  }
-
-  index_html
-    << "<html>\n"
-    << "<head>\n";
-  if (_desc.empty()) {
-    index_html
-      << "<title>" << _name << "</title>\n";
-  } else {
-    index_html
-      << "<title>" << _name << " " << escape_html(_desc) << "</title>\n";
-  }
-  index_html
-    << "</head>\n"
-    << "<body>\n"
-    << get_comment_html();
-
-  generate_nav_buttons(index_html, prev_roll_filename, next_roll_filename,
-                       up_href);
-  index_html << get_index_html();
-  generate_nav_buttons(index_html, prev_roll_filename, next_roll_filename,
-                       up_href);
-
-  if (!omit_complete) {
-    index_html
-      << "<a href=\"complete.htm#" << _basename
-      << "\">(complete archive)</a>\n";
-  }
-
-  index_html
-    << "</body>\n"
-    << "</html>\n";
-
-  
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::get_comment_html
-//       Access: Public
-//  Description: Returns the HTML text that describes this directory's
-//               index.  This is set when generate_html() returns
-//               true.
-//
-//               This text may be inserted into the middle of a HTML
-//               page to include the imagemap that references each of
-//               the images in this directory.
-////////////////////////////////////////////////////////////////////
-const string &RollDirectory::
-get_comment_html() const {
-  return _comment_html;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::get_index_html
-//       Access: Public
-//  Description: Returns the HTML text that describes this directory's
-//               index.  This is set when generate_html() returns
-//               true.
-//
-//               This text may be inserted into the middle of a HTML
-//               page to include the imagemap that references each of
-//               the images in this directory.
-////////////////////////////////////////////////////////////////////
-const string &RollDirectory::
-get_index_html() const {
-  return _index_html;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::copy_reduced
-//       Access: Public
-//  Description: Copies key files from the full directory into the
-//               reduced directory.
-////////////////////////////////////////////////////////////////////
-bool RollDirectory::
-copy_reduced(const Filename &archive_dir) {
-  if (is_empty()) {
-    return true;
-  }
-  nassertr(!_index_images.empty(), false);
-
-  Filename reduced_dir(archive_dir, "reduced/" + _dir.get_basename());
-
-  if (!reduced_dir.exists()) {
-    cerr << "Ignoring " << reduced_dir << "; does not exist.\n";
-    return true;
-  }
-
-  if (_got_ds_file) {
-    if (!copy_file(_ds_filename, reduced_dir)) {
-      return false;
-    }
-  }
-
-  if (_got_ls_file) {
-    if (!copy_file(_ls_filename, reduced_dir)) {
-      return false;
-    }
-  }
-
-  IndexImages::iterator ii;
-  for (ii = _index_images.begin(); ii != _index_images.end(); ++ii) {
-    IndexImage *index_image = (*ii);
-    if (!index_image->copy_reduced(archive_dir)) {
-      return false;
-    }
-  }
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::output
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-void RollDirectory::
-output(ostream &out) const {
-  out << _name;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::write
-//       Access: Public
-//  Description:
-////////////////////////////////////////////////////////////////////
-void RollDirectory::
-write(ostream &out, int indent_level) const {
-  indent(out, indent_level)
-    << _dir << "\n";
-
-  if (!_index_images.empty()) {
-    // If we have any index images, output those.
-    IndexImages::const_iterator ii;
-    for (ii = _index_images.begin(); ii != _index_images.end(); ++ii) {
-      const IndexImage *index_image = (*ii);
-      index_image->write(out, indent_level + 2);
-    }
-
-  } else {
-    // Otherwise, just output the photos.
-    Photos::const_iterator pi;
-    for (pi = _photos.begin(); pi != _photos.end(); ++pi) {
-      const Photo *photo = (*pi);
-      indent(out, indent_level + 2)
-        << *photo << "\n";
-    }
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::insert_html_comment
-//       Access: Public, Static
-//  Description: Reads the indicated comment file and inserts its
-//               contents (after the header) within the indicated
-//               ostream at the current point.
-////////////////////////////////////////////////////////////////////
-bool RollDirectory::
-insert_html_comment(ostream &html, Filename cm_filename) {
-  cm_filename.set_text();
-  ifstream cm;
-  if (!cm_filename.open_read(cm)) {
-    nout << "Unable to read " << cm_filename << "\n";
-    return false;
-  }
-
-  // First, scan through the file looking for <BODY> or <body>.
-  string line;
-  getline(cm, line);
-  while (!cm.eof() && !cm.fail()) {
-    string lower = downcase(line);
-    size_t body = lower.find("<body>");
-    if (body != string::npos) {
-      return insert_html_comment_body(html, cm);
-    }
-    getline(cm, line);
-  }
-
-  // We didn't find it.  Insert the whole file.
-  cm.clear();
-  cm.seekg(0);
-  int ch = cm.get();
-  while (ch != EOF) {
-    html.put(ch);
-    ch = cm.get();
-  }    
-
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::add_photo
-//       Access: Private
-//  Description: Adds the photo with the indicated basename to the
-//               list.
-////////////////////////////////////////////////////////////////////
-void RollDirectory::
-add_photo(const Filename &basename, const string &movie_extension,
-          const string &sound_extension) {
-  Photo *photo = new Photo(this, basename, movie_extension, sound_extension);
-  _photos.push_back(photo);
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::add_contributing_filename
-//       Access: Private
-//  Description: Specifies an additional filename that contributes to
-//               the index image.
-////////////////////////////////////////////////////////////////////
-void RollDirectory::
-add_contributing_filename(const Filename &filename) {
-  if (_newest_contributing_filename.empty() ||
-      _newest_contributing_filename.compare_timestamps(filename) < 0) {
-    _newest_contributing_filename = filename;
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::insert_html_comment_body
-//       Access: Private, Static
-//  Description: Copies from the comment file up until the next
-//               </body>, or until the end of file.
-////////////////////////////////////////////////////////////////////
-bool RollDirectory::
-insert_html_comment_body(ostream &html, istream &cm) {
-  string line;
-  getline(cm, line);
-  while (!cm.eof() && !cm.fail()) {
-    string lower = downcase(line);
-    size_t body = lower.find("</body>");
-    if (body != string::npos) {
-      // Here's the end; we're done.
-      return true;
-    }
-    html << line << "\n";
-    getline(cm, line);
-  }
-
-  // Reached end of file; good enough.
-  return true;
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::format_basename
-//       Access: Private, Static
-//  Description: Reformats the roll directory into a user-friendly
-//               name based on its encoded directory name.
-////////////////////////////////////////////////////////////////////
-string RollDirectory::
-format_basename(const string &basename) {
-  if (basename.length() <= 4) {
-    return basename;
-  }
-
-  // The first two characters must be alphanumeric.
-  if (!isalnum(basename[0]) || !isalnum(basename[1])) {
-    return basename;
-  }
-
-  // The next two characters must be digits.
-  if (!isdigit(basename[2]) || !isdigit(basename[3])) {
-    return basename;
-  }
-
-  // If the first two were digits as well as being alphanumeric, then
-  // we have mm-yy/sequence.  Otherwise, we just have xxyy/sequence.
-  bool mm_is_month = (isdigit(basename[0]) && isdigit(basename[1]));
-
-  string mm = basename.substr(0, 2);
-  string yy = basename.substr(2, 2);
-  string ss = basename.substr(4);
-
-  if (mm_is_month && mm[0] == '0') {
-    mm = mm[1];
-  }
-  while (ss.length() > 1 && ss[0] == '0') {
-    ss = ss.substr(1);
-  }
-
-  if (mm_is_month) {
-    return mm + "-" + yy + "/" + ss;
-  } else {
-    return mm + yy + "/" + ss;
-  }
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::generate_nav_buttons
-//       Access: Private, Static
-//  Description: Outputs the HTML code to generate the next, prev,
-//               up buttons when viewing each reduced image.
-////////////////////////////////////////////////////////////////////
-void RollDirectory::
-generate_nav_buttons(ostream &html, const Filename &prev_roll_filename,
-                     const Filename &next_roll_filename, 
-                     const string &up_href) {
-  html << "<p>\n";
-
-  bool first_icons = false;
-  if (!prev_icon.empty() && !next_icon.empty()) {
-    first_icons = true;
-    // Use icons to go forward and back.
-    Filename prev_icon_href = compose_href("..", prev_icon);
-    if (prev_roll_filename.empty()) {
-      html << "<img src=\"" << prev_icon_href << "\" alt=\"No previous roll\">\n";
-    } else {
-      html << "<a href=\"" << prev_roll_filename
-           << "\"><img src=\"" << prev_icon_href << "\" alt=\"previous\"></a>\n";
-    }
-
-    Filename next_icon_href = compose_href("..", next_icon);
-    if (next_roll_filename.empty()) {
-      html << "<img src=\"" << next_icon_href << "\" alt=\"No next roll\">\n";
-    } else {
-      html << "<a href=\"" << next_roll_filename
-           << "\"><img src=\"" << next_icon_href << "\" alt=\"next\"></a>\n";
-    }
-
-  } else {
-    // No prev/next icons; use text to go forward and back.
-    if (prev_roll_filename.empty()) {
-      html << "(This is the first roll.)\n";
-    } else {
-      html << "<a href=\"" << prev_roll_filename
-           << "\">Back to previous roll</a>\n";
-    }
-    
-    if (next_roll_filename.empty()) {
-      html << "<br>(This is the last roll.)\n";
-    } else {
-      html << "<br><a href=\"" << next_roll_filename
-           << "\">On to next roll</a>\n";
-    }
-  }
-
-  if (!up_href.empty()) {
-    if (!up_icon.empty()) {
-      // Use an icon to go up.
-      if (!first_icons) {
-        html << "<br>";
-      } else {
-        html << "&nbsp;&nbsp;&nbsp;";
-      }
-      Filename up_icon_href = compose_href("..", up_icon);
-      html << "<a href=\"" << up_href
-           << "\"><img src=\"" << up_icon_href << "\" alt=\"return to index\"></a>\n";
-    } else {
-      // No up icon; use text to go up.
-      html << "<br><a href=\"" << up_href
-           << "\">Return to index</a>\n";
-    }
-  }
-  html << "</p>\n";
-}
-
-////////////////////////////////////////////////////////////////////
-//     Function: RollDirectory::compare_filenames
-//       Access: Private, Static
-//  Description: Returns true if filename a sorts before filename b,
-//               false otherwise.
-////////////////////////////////////////////////////////////////////
-bool RollDirectory::
-compare_filenames(const string &a, const string &b) {
-  size_t i = 0;
-  size_t min_length = min(a.length(), b.length());
-  while (i < min_length) {
-    char achar = a[i];
-    char bchar = b[i];
-    if (achar != bchar) {
-      if (achar == '_') {
-        return true;
-      } else if (bchar == '_') {
-        return false;
-      } else {
-        return achar < bchar;
-      }
-    }
-    ++i;
-  }
-
-  return a.length() < b.length();
-}
-

+ 0 - 112
pandaapp/src/indexify/rollDirectory.h

@@ -1,112 +0,0 @@
-// Filename: rollDirectory.h
-// Created by:  drose (03Apr02)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#ifndef ROLLDIRECTORY_H
-#define ROLLDIRECTORY_H
-
-#include "pandatoolbase.h"
-
-#include "filename.h"
-#include "pvector.h"
-
-class Photo;
-class IndexImage;
-class PNMTextMaker;
-
-////////////////////////////////////////////////////////////////////
-//       Class : RollDirectory
-// Description : A representation of a single directory containing one
-//               or more photos.
-////////////////////////////////////////////////////////////////////
-class RollDirectory {
-public:
-  RollDirectory(const Filename &dir);
-  ~RollDirectory();
-
-  const Filename &get_dir() const;
-  const string &get_basename() const;
-  const string &get_name() const;
-  const string &get_desc() const;
-  bool scan(const string &photo_extension, const string &movie_extension,
-            const string &sound_extension);
-  void collect_index_images();
-
-  bool sort_date_before(const RollDirectory &other) const;
-
-  const Filename &get_newest_contributing_filename() const;
-
-  bool is_empty() const;
-  int get_num_photos() const;
-  Photo *get_photo(int n) const;
-
-  int get_num_index_images() const;
-  IndexImage *get_index_image(int n) const;
-
-  bool generate_images(const Filename &archive_dir, PNMTextMaker *text_maker);
-  bool generate_html(const Filename &archive_dir,
-                     const Filename &roll_dir_root);
-  const string &get_comment_html() const;
-  const string &get_index_html() const;
-
-  bool copy_reduced(const Filename &archive_dir);
-
-  void output(ostream &out) const;
-  void write(ostream &out, int indent_level) const;
-
-  static bool insert_html_comment(ostream &html, Filename cm_filename);
-
-private:
-  void add_photo(const Filename &basename, const string &movie_extension,
-                 const string &sound_extension);
-  void add_contributing_filename(const Filename &filename);
-  static bool insert_html_comment_body(ostream &html, istream &cm);
-  static string format_basename(const string &basename);
-  void generate_nav_buttons(ostream &html, 
-                            const Filename &prev_roll_filename,
-                            const Filename &next_roll_filename, 
-                            const string &up_href);
-  static bool compare_filenames(const string &a, const string &b);
-
-public:
-  RollDirectory *_prev;
-  RollDirectory *_next;
-
-private:
-  Filename _dir;
-  string _basename;
-  string _name;
-  string _desc;
-  typedef pvector<Photo *> Photos;
-  Photos _photos;
-
-  bool _got_ds_file;
-  Filename _ds_filename;
-  bool _got_ls_file;
-  Filename _ls_filename;
-  
-  Filename _newest_contributing_filename;
-
-  typedef pvector<IndexImage *> IndexImages;
-  IndexImages _index_images;
-
-  string _comment_html;
-  string _index_html;
-};
-
-INLINE ostream &operator << (ostream &out, const RollDirectory &d) {
-  d.output(out);
-  return out;
-}
-
-#endif

BIN
pandaapp/src/indexify/sound.png


BIN
pandaapp/src/indexify/up.png


+ 0 - 10
pandaapp/src/pandaappbase/Sources.pp

@@ -1,10 +0,0 @@
-#begin ss_lib_target
-  #define TARGET pandaappbase
-  
-  #define SOURCES \
-    pandaappbase.cxx pandaappbase.h pandaappsymbols.h
-
-  #define INSTALL_HEADERS \
-    pandaappbase.h pandaappsymbols.h
-
-#end ss_lib_target

+ 0 - 15
pandaapp/src/pandaappbase/pandaappbase.cxx

@@ -1,15 +0,0 @@
-// Filename: pandaappbase.cxx
-// Created by:  drose (15Sep00)
-//
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-#include "pandaappbase.h"

+ 0 - 25
pandaapp/src/pandaappbase/pandaappbase.h

@@ -1,25 +0,0 @@
-// Filename: pandaappbase.h
-// Created by:  drose (12Sep00)
-////////////////////////////////////////////////////////////////////
-//
-// PANDA 3D SOFTWARE
-// Copyright (c) Carnegie Mellon University.  All rights reserved.
-//
-// All use of this software is subject to the terms of the revised BSD
-// license.  You should have received a copy of this license along
-// with this source code in a file named "LICENSE."
-//
-////////////////////////////////////////////////////////////////////
-
-/* This file is included at the beginning of every header file and/or
-   C or C++ file.  It must be compilable for C as well as C++ files,
-   so no C++-specific code or syntax can be put here. */
-
-#ifndef PANDAAPPBASE_H
-#define PANDAAPPBASE_H
-
-#include "pandatoolbase.h"
-#include "pandaappsymbols.h"
-
-#endif
-

+ 0 - 26
pandaapp/src/pandaappbase/pandaappsymbols.h

@@ -1,26 +0,0 @@
-/* Filename: pandaappsymbols.h
- * Created by:  drose (26Apr01)
- *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- *
- * PANDA 3D SOFTWARE
- * Copyright (c) Carnegie Mellon University.  All rights reserved.
- *
- * All use of this software is subject to the terms of the revised BSD
- * license.  You should have received a copy of this license along
- * with this source code in a file named "LICENSE."
- *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#ifndef PANDAAPPSYMBOLS_H
-#define PANDAAPPSYMBOLS_H
-
-/* See dtoolsymbols.h for a rant on the purpose of this file.  */
-
-#if defined(WIN32_VC) && !defined(CPPPARSER) && !defined(LINK_ALL_STATIC)
-
-#else   /* !WIN32_VC */
-
-#endif  /* WIN32_VC */
-
-#endif