summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 70d51a4)
raw | patch | inline | side by side (parent: 70d51a4)
author | oetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa> | |
Sun, 10 Jun 2007 23:55:13 +0000 (23:55 +0000) | ||
committer | oetiker <oetiker@a5681a0c-68f1-0310-ab6d-d61299d08faa> | |
Sun, 10 Jun 2007 23:55:13 +0000 (23:55 +0000) |
14 files changed:
acinclude.m4 | patch | blob | history | |
configure.ac | patch | blob | history | |
src/Makefile.am | patch | blob | history | |
src/art_rgba_svp.c | [deleted file] | patch | blob | history |
src/art_rgba_svp.h | [deleted file] | patch | blob | history |
src/rrd_afm.c | [deleted file] | patch | blob | history |
src/rrd_afm.h | [deleted file] | patch | blob | history |
src/rrd_afm_data.c | [deleted file] | patch | blob | history |
src/rrd_afm_data.h | [deleted file] | patch | blob | history |
src/rrd_gfx.c | patch | blob | history | |
src/rrd_gfx.h | patch | blob | history | |
src/rrd_graph.c | patch | blob | history | |
src/rrd_graph.h | patch | blob | history | |
src/rrd_graph_helper.c | patch | blob | history |
diff --git a/acinclude.m4 b/acinclude.m4
index b71fe8e8058dd75b7414fcbcf3b37b18739c8ed1..38ee0c29f69347d63e9e6f25d50d116822925558 100644 (file)
--- a/acinclude.m4
+++ b/acinclude.m4
LDFLAGS=${LDFLAGS}" "`$PKGCONFIG --libs-only-other $4`
LIBS=${LIBS}" "`$PKGCONFIG --libs-only-l $4`
dnl remove the cached value and test again
- unset ac_cv_lib_$1_$2
+ unset ac_cv_lib_`echo $1 | sed ['s/[^_a-zA-Z0-9]/_/g;s/^[0-9]/_/']`_$2
AC_CHECK_LIB($1,$2,[
- unset ac_cv_header_`echo $3 | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+ unset ac_cv_header_`echo $3 | sed ['s/[^_a-zA-Z0-9]/_/g;s/^[0-9]/_/']`
AC_CHECK_HEADER($3,[EX_CHECK_STATE=YES],[])
],[])
else
diff --git a/configure.ac b/configure.ac
index fab77f5d49a700fed7bc0de821d909e3055809e2..db2f497501405e22d8fda3d30c5a2d9813a060db 100644 (file)
--- a/configure.ac
+++ b/configure.ac
dnl How the vertical axis label is printed
AC_ARG_VAR(RRDGRAPH_YLEGEND_ANGLE,
- [Vertical label angle: 90.0 (default) or 270.0])
+ [Vertical label angle: -90.0 (default) or 90.0])
AC_DEFINE_UNQUOTED(RRDGRAPH_YLEGEND_ANGLE,${RRDGRAPH_YLEGEND_ANGLE:-90.0},
- [Vertical label angle: 90.0 (default) or 270.0])
+ [Vertical label angle: -90.0 (default) or 90.0])
AC_ARG_ENABLE(rrdcgi,[ --disable-rrdcgi disable building of rrdcgi],
[],[enable_rrdcgi=yes])
if test -d ${WINDIR:-nodir}/cour.ttf ; then
RRD_DEFAULT_FONT=`cd $WINDIR;pwd`/cour.ttf
else
- RRD_DEFAULT_FONT='$(fontsdir)/$(fonts_DATA)'
+ RRD_DEFAULT_FONT='"DejaVu Sans Mono,Bitstream Vera Sans Mono,Mono"'
fi
])
CORE_LIBS="$LIBS"
-EX_CHECK_ALL(art_lgpl_2, art_vpath_add_point, libart_lgpl/libart.h, libart-2.0, 2.3.17, ftp://ftp.gnome.org/pub/GNOME/sources/libart_lgpl/2.3/, /usr/include/libart-2.0)
-EX_CHECK_ALL(z, zlibVersion, zlib.h, zlib, 1.2.3, http://www.gzip.org/zlib/, "")
-EX_CHECK_ALL(png, png_access_version_number, png.h, libpng, 1.2.10, http://prdownloads.sourceforge.net/libpng/, "")
-EX_CHECK_ALL(freetype, FT_Init_FreeType, ft2build.h, freetype2, 2.1.10, http://prdownloads.sourceforge.net/freetype/, /usr/include/freetype2)
+dnl EX_CHECK_ALL(z, zlibVersion, zlib.h, zlib, 1.2.3, http://www.gzip.org/zlib/, "")
+dnl EX_CHECK_ALL(png, png_access_version_number, png.h, libpng, 1.2.10, http://prdownloads.sourceforge.net/libpng/, "")
+dnl EX_CHECK_ALL(freetype, FT_Init_FreeType, ft2build.h, freetype2, 2.1.10, http://prdownloads.sourceforge.net/freetype/, /usr/include/freetype2)
+dnl EX_CHECK_ALL(fontconfig, FcInit, fontconfig.h, fontconfig, 2.3.1, http://fontconfig.org/release/, /usr/include)
+EX_CHECK_ALL(cairo, cairo_version, cairo.h, cairo-png, 1.4.6, http://cairographics.org/releases/, "")
+dnl EX_CHECK_ALL(glib-2.0, glib_check_version, glib.h, glib-2.0, 2.12.12, ftp://ftp.gtk.org/pub/glib/2.12/, "")
+EX_CHECK_ALL(pango-1.0, pango_version_check, pango/pango.h, pangocairo, 1.17, http://ftp.gnome.org/pub/GNOME/sources/pango/1.17, "")
if test "$EX_CHECK_ALL_ERR" = "YES"; then
AC_MSG_ERROR([Please fix the library issues listed above and try again.])
diff --git a/src/Makefile.am b/src/Makefile.am
index 56ffbb2a6acb889faa94238e1fef36e83708d378..77d9245e256b01b7f2ba80c7204989a8d7dc16cb 100644 (file)
--- a/src/Makefile.am
+++ b/src/Makefile.am
AM_LDFLAGS = -all-static
endif
-#INCLUDES = $(FREETYPE_INCLUDES) $(ART_INCLUDES) \
-# $(PNG_INCLUDES) $(ZLIB_INCLUDES)
RRD_DEFAULT_FONT=@RRD_DEFAULT_FONT@
AM_CPPFLAGS = -DRRD_DEFAULT_FONT=\"$(RRD_DEFAULT_FONT)\" -DNUMVERS=@NUMVERS@
rrd_first.c \
rrd_restore.c \
rrd_xport.c \
- art_rgba_svp.c \
rrd_gfx.c \
- rrd_afm.c rrd_afm_data.c \
rrd_dump.c \
rrd_fetch.c \
rrd_tool.c \
rrd_tune.c
noinst_HEADERS = \
- art_rgba_svp.h \
unused.h \
rrd_gfx.h \
rrd_getopt.h parsetime.h \
rrd_format.h rrd_tool.h rrd_xport.h rrd.h rrd_hw.h rrd_rpncalc.h \
- rrd_nan_inf.h fnv.h rrd_graph.h rrd_afm.h rrd_afm_data.h \
+ rrd_nan_inf.h fnv.h rrd_graph.h \
rrd_is_thread_safe.h
noinst_LTLIBRARIES = librrdupd.la
diff --git a/src/art_rgba_svp.c b/src/art_rgba_svp.c
--- a/src/art_rgba_svp.c
+++ /dev/null
@@ -1,336 +0,0 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
-/*
- * art_rgba_svp.c: A slightly modified version of art_rgb_svp to render into rgba buffer
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public License
- * as published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- *
- * Authors:
- * Raph Levien <raph@acm.org>
- * Lauris Kaplinski <lauris@ariman.ee>
- *
- * Copyright (C) 1998 Raph Levien
- *
- */
-
-#define SP_ART_RGBA_SVP_C
-
-/* Render a sorted vector path into an RGBA buffer. */
-
-#include <libart_lgpl/art_misc.h>
-#include <libart_lgpl/art_svp.h>
-#include <libart_lgpl/art_svp_render_aa.h>
-#include <libart_lgpl/art_rgb.h>
-
-#include "art_rgba_svp.h"
-#include "unused.h"
-
-static void art_rgba_fill_run(
- art_u8 * linebuf,
- art_u8 r,
- art_u8 g,
- art_u8 b,
- int n);
-static void art_rgba_run_alpha(
- art_u8 * linebuf,
- art_u8 r,
- art_u8 g,
- art_u8 b,
- int alpha,
- int n);
-
-typedef struct _ArtRgbaSVPAlphaData ArtRgbaSVPAlphaData;
-
-struct _ArtRgbaSVPAlphaData {
- int alphatab[256];
- art_u8 r, g, b, alpha;
- art_u8 *buf;
- int rowstride;
- int libart_x0, libart_x1;
-};
-
-static void art_rgba_svp_alpha_callback(
- void *callback_data,
- int UNUSED(y),
- int start,
- ArtSVPRenderAAStep * steps,
- int n_steps)
-{
- ArtRgbaSVPAlphaData *data = callback_data;
- art_u8 *linebuf;
- int run_x0, run_x1;
- art_u32 running_sum = start;
- int libart_x0, libart_x1;
- int k;
- art_u8 r, g, b;
- int *alphatab;
- int alpha;
-
- linebuf = data->buf;
- libart_x0 = data->libart_x0;
- libart_x1 = data->libart_x1;
-
- r = data->r;
- g = data->g;
- b = data->b;
- alphatab = data->alphatab;
-
- if (n_steps > 0) {
- run_x1 = steps[0].x;
- if (run_x1 > libart_x0) {
- alpha = (running_sum >> 16) & 0xff;
- if (alpha)
- art_rgba_run_alpha(linebuf,
- r, g, b, alphatab[alpha],
- run_x1 - libart_x0);
- }
-
- /* render the steps into tmpbuf */
- for (k = 0; k < n_steps - 1; k++) {
- running_sum += steps[k].delta;
- run_x0 = run_x1;
- run_x1 = steps[k + 1].x;
- if (run_x1 > run_x0) {
- alpha = (running_sum >> 16) & 0xff;
- if (alpha)
- art_rgba_run_alpha(linebuf + (run_x0 - libart_x0) * 4,
- r, g, b, alphatab[alpha],
- run_x1 - run_x0);
- }
- }
- running_sum += steps[k].delta;
- if (libart_x1 > run_x1) {
- alpha = (running_sum >> 16) & 0xff;
- if (alpha)
- art_rgba_run_alpha(linebuf + (run_x1 - libart_x0) * 4,
- r, g, b, alphatab[alpha],
- libart_x1 - run_x1);
- }
- } else {
- alpha = (running_sum >> 16) & 0xff;
- if (alpha)
- art_rgba_run_alpha(linebuf,
- r, g, b, alphatab[alpha],
- libart_x1 - libart_x0);
- }
-
- data->buf += data->rowstride;
-}
-
-static void art_rgba_svp_alpha_opaque_callback(
- void *callback_data,
- int UNUSED(y),
- int start,
- ArtSVPRenderAAStep * steps,
- int n_steps)
-{
- ArtRgbaSVPAlphaData *data = callback_data;
- art_u8 *linebuf;
- int run_x0, run_x1;
- art_u32 running_sum = start;
- int libart_x0, libart_x1;
- int k;
- art_u8 r, g, b;
- int *alphatab;
- int alpha;
-
- linebuf = data->buf;
- libart_x0 = data->libart_x0;
- libart_x1 = data->libart_x1;
-
- r = data->r;
- g = data->g;
- b = data->b;
- alphatab = data->alphatab;
-
- if (n_steps > 0) {
- run_x1 = steps[0].x;
- if (run_x1 > libart_x0) {
- alpha = running_sum >> 16;
- if (alpha) {
- if (alpha >= 255)
- art_rgba_fill_run(linebuf, r, g, b, run_x1 - libart_x0);
- else
- art_rgba_run_alpha(linebuf,
- r, g, b, alphatab[alpha],
- run_x1 - libart_x0);
- }
- }
-
- /* render the steps into tmpbuf */
- for (k = 0; k < n_steps - 1; k++) {
- running_sum += steps[k].delta;
- run_x0 = run_x1;
- run_x1 = steps[k + 1].x;
- if (run_x1 > run_x0) {
- alpha = running_sum >> 16;
- if (alpha) {
- if (alpha >= 255)
- art_rgba_fill_run(linebuf + (run_x0 - libart_x0) * 4,
- r, g, b, run_x1 - run_x0);
- else
- art_rgba_run_alpha(linebuf + (run_x0 - libart_x0) * 4,
- r, g, b, alphatab[alpha],
- run_x1 - run_x0);
- }
- }
- }
- running_sum += steps[k].delta;
- if (libart_x1 > run_x1) {
- alpha = running_sum >> 16;
- if (alpha) {
- if (alpha >= 255)
- art_rgba_fill_run(linebuf + (run_x1 - libart_x0) * 4,
- r, g, b, libart_x1 - run_x1);
- else
- art_rgba_run_alpha(linebuf + (run_x1 - libart_x0) * 4,
- r, g, b, alphatab[alpha],
- libart_x1 - run_x1);
- }
- }
- } else {
- alpha = running_sum >> 16;
- if (alpha) {
- if (alpha >= 255)
- art_rgba_fill_run(linebuf, r, g, b, libart_x1 - libart_x0);
- else
- art_rgba_run_alpha(linebuf,
- r, g, b, alphatab[alpha],
- libart_x1 - libart_x0);
- }
- }
-
- data->buf += data->rowstride;
-}
-
-/**
- * gnome_print_art_rgba_svp_alpha: Alpha-composite sorted vector path over RGBA buffer.
- * @svp: The source sorted vector path.
- * @libart_x0: Left coordinate of destination rectangle.
- * @libart_y0: Top coordinate of destination rectangle.
- * @libart_x1: Right coordinate of destination rectangle.
- * @libart_y1: Bottom coordinate of destination rectangle.
- * @rgba: Color in 0xRRGGBBAA format.
- * @buf: Destination RGB buffer.
- * @rowstride: Rowstride of @buf buffer.
- * @alphagamma: #ArtAlphaGamma for gamma-correcting the compositing.
- *
- * Renders the shape specified with @svp over the @buf RGB buffer.
- * @libart_x1 - @x0 specifies the width, and @libart_y1 - @libart_y0 specifies the height,
- * of the rectangle rendered. The new pixels are stored starting at
- * the first byte of @buf. Thus, the @x0 and @libart_y0 parameters specify
- * an offset within @svp, and may be tweaked as a way of doing
- * integer-pixel translations without fiddling with @svp itself.
- *
- * The @rgba argument specifies the color for the rendering. Pixels of
- * entirely 0 winding number are left untouched. Pixels of entirely
- * 1 winding number have the color @rgba composited over them (ie,
- * are replaced by the red, green, blue components of @rgba if the alpha
- * component is 0xff). Pixels of intermediate coverage are interpolated
- * according to the rule in @alphagamma, or default to linear if
- * @alphagamma is NULL.
- **/
-void gnome_print_art_rgba_svp_alpha(
- const ArtSVP * svp,
- int libart_x0,
- int libart_y0,
- int libart_x1,
- int libart_y1,
- art_u32 rgba,
- art_u8 * buf,
- int rowstride,
- ArtAlphaGamma UNUSED(*alphagamma))
-{
- ArtRgbaSVPAlphaData data;
- int r, g, b, alpha;
- int i;
- int a, da;
-
- r = rgba >> 24;
- g = (rgba >> 16) & 0xff;
- b = (rgba >> 8) & 0xff;
- alpha = rgba & 0xff;
-
- data.r = r;
- data.g = g;
- data.b = b;
- data.alpha = alpha;
-
- a = 0x8000;
- da = (alpha * 66051 + 0x80) >> 8; /* 66051 equals 2 ^ 32 / (255 * 255) */
-
- for (i = 0; i < 256; i++) {
- data.alphatab[i] = a >> 16;
- a += da;
- }
-
- data.buf = buf;
- data.rowstride = rowstride;
- data.libart_x0 = libart_x0;
- data.libart_x1 = libart_x1;
- if (alpha == 255)
- art_svp_render_aa(svp, libart_x0, libart_y0, libart_x1, libart_y1,
- art_rgba_svp_alpha_opaque_callback, &data);
- else
- art_svp_render_aa(svp, libart_x0, libart_y0, libart_x1, libart_y1,
- art_rgba_svp_alpha_callback, &data);
-}
-
-static void art_rgba_fill_run(
- art_u8 * buf,
- art_u8 r,
- art_u8 g,
- art_u8 b,
- int n)
-{
- int i;
-
- for (i = 0; i < n; i++) {
- *buf++ = r;
- *buf++ = g;
- *buf++ = b;
- *buf++ = 255;
- }
-}
-
-/* fixme: this */
-
-static void art_rgba_run_alpha(
- art_u8 * buf,
- art_u8 r,
- art_u8 g,
- art_u8 b,
- int alpha,
- int n)
-{
- int i;
- int br, bg, bb, ba;
- int cr, cg, cb;
-
- for (i = 0; i < n; i++) {
- br = *(buf + 0);
- bg = *(buf + 1);
- bb = *(buf + 2);
- ba = *(buf + 3);
-
- cr = (br * ba + 0x80) >> 8;
- cg = (bg * ba + 0x80) >> 8;
- cb = (bb * ba + 0x80) >> 8;
-
- *buf++ = cr + (((r - cr) * alpha + 0x80) >> 8);
- *buf++ = cg + (((g - cg) * alpha + 0x80) >> 8);
- *buf++ = cb + (((b - cb) * alpha + 0x80) >> 8);
- *buf++ = ba + (((255 - ba) * alpha + 0x80) >> 8);
- }
-}
diff --git a/src/art_rgba_svp.h b/src/art_rgba_svp.h
--- a/src/art_rgba_svp.h
+++ /dev/null
@@ -1,21 +0,0 @@
-#ifndef SP_ART_RGBA_SVP_H
-#define SP_ART_RGBA_SVP_H
-
-#include <libart_lgpl/art_misc.h>
-#include <libart_lgpl/art_alphagamma.h>
-#include <libart_lgpl/art_affine.h>
-#include <libart_lgpl/art_svp.h>
-#include <libart_lgpl/art_uta.h>
-
-void gnome_print_art_rgba_svp_alpha(
- const ArtSVP * svp,
- int x0,
- int y0,
- int x1,
- int y1,
- art_u32 rgba,
- art_u8 * buf,
- int rowstride,
- ArtAlphaGamma * alphagamma);
-
-#endif /* SP_ART_RGBA_SVP_H */
diff --git a/src/rrd_afm.c b/src/rrd_afm.c
--- a/src/rrd_afm.c
+++ /dev/null
@@ -1,324 +0,0 @@
-/****************************************************************************
- * RRDtool 1.2.23 Copyright by Tobi Oetiker, 1997-2007
- ****************************************************************************
- * rrd_afm.h Parsing afm tables to find width of strings.
- ****************************************************************************
- * $Id$
-*/
-
-#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__) && !defined(HAVE_CONFIG_H)
-#include "../win32/config.h"
-#else
-#ifdef HAVE_CONFIG_H
-#include "../rrd_config.h"
-#endif
-#endif
-
-#include "rrd_afm.h"
-#include "rrd_afm_data.h"
-
-#include <stdio.h>
-
-#ifdef HAVE_STRING_H
-#include <string.h>
-#endif
-
-#include "unused.h"
-
-#if 0
-# define DEBUG 1
-# define DLOG(x) fprintf x
-#else
-# define DEBUG 0
-# define DLOG(x)
-#endif
-
-/* Adobe SVG View and Batik 1.1.1 can't handle ligatures.
- So disable it as we just waste speed.
- Besides, it doesn't matter much in normal text.
-*/
-#define ENABLE_LIGATURES 0
-
-static const afm_fontinfo *afm_last_used_font = NULL;
-static const char *last_unknown_font = NULL;
-
-#define is_font(p, name) \
- (!strcmp(p->postscript_name, name) || !strcmp(p->fullname, name))
-
-static const afm_fontinfo *afm_searchfont(
- const char *name)
-{
- int i;
- const afm_fontinfo *p = afm_last_used_font;
-
- if (p && is_font(p, name))
- return p;
- p = afm_fontinfolist;
- for (i = 0; i < afm_fontinfo_count; i++, p++) {
- if (is_font(p, name)) {
- afm_last_used_font = p;
- return p;
- }
- }
- return NULL;
-}
-
-
-/* returns always a font, never NULL.
- The rest of the code depends on the result never being NULL.
- See rrd_afm.h */
-static const afm_fontinfo *afm_findfont(
- const char *name)
-{
- const afm_fontinfo *p = afm_searchfont(name);
-
- if (p)
- return p;
- if (!last_unknown_font || strcmp(name, last_unknown_font)) {
- fprintf(stderr, "Can't find font '%s'\n", name);
- last_unknown_font = name;
- }
- p = afm_searchfont(RRD_AFM_DEFAULT_FONT);
- if (p)
- return p;
- return afm_fontinfolist; /* anything, just anything. */
-}
-
-const char *afm_get_font_postscript_name(
- const char *font)
-{
- const afm_fontinfo *p = afm_findfont(font);
-
- return p->postscript_name;
-}
-
-const char *afm_get_font_name(
- const char *font)
-{
- const afm_fontinfo *p = afm_findfont(font);
-
- return p->fullname;
-}
-
-double afm_get_ascender(
- const char *font,
- double size)
-{
- const afm_fontinfo *p = afm_findfont(font);
-
- return size * p->ascender / 1000.0;
-}
-
-double afm_get_descender(
- const char *font,
- double size)
-{
- const afm_fontinfo *p = afm_findfont(font);
-
- return size * p->descender / 1000.0;
-}
-
-static int afm_find_char_index(
- const afm_fontinfo *fontinfo,
- afm_cunicode ch1)
-{
- int idx = ch1 - 32;
- afm_cuint16 *indexP;
- int numIndexChars, i;
-
- if (idx <= 0)
- return 0;
- if (idx <= 126 - 32)
- return idx;
- indexP = fontinfo->highchars_index;
- if (indexP == 0)
- return 0;
- numIndexChars = fontinfo->highchars_count;
- DLOG((stderr, " find highbit, num = %d\n", numIndexChars));
- if (ch1 >= 161 && ch1 <= 255) {
- idx = ch1 - 161;
- DLOG((stderr, " 161, idx = %d -> %d\n", idx, indexP[idx]));
- if (idx < numIndexChars && indexP[idx] == ch1) {
- idx += 127 - 32;
- DLOG((stderr, " 161-guessed ok to %d\n", idx));
- return idx;
- }
- }
- for (i = 0; i < numIndexChars; i++) {
- DLOG((stderr, " compares to %d -> %d\n", indexP[i], i));
- if (indexP[i] == ch1)
- return i + 127 - 32;
- }
- DLOG((stderr, "Did not find %d in highchars_index ??\n", ch1));
- return 0;
-}
-
-#if ENABLE_LIGATURES
-static afm_cunicode afm_find_combined_ligature(
- const afm_fontinfo *fontinfo,
- afm_cunicode ch1,
- afm_cunicode ch2)
-{
- afm_cunicode *p = fontinfo->ligatures;
- int num = fontinfo->ligatures_count;
- int i;
-
- if (!num)
- return 0;
- DLOG((stderr, " find-lig, num = %d\n", num));
- for (i = 0; i < num; i++, p += 3) {
- DLOG((stderr, " lig: %d + %d -> %d (%c %c %c)\n",
- p[0], p[1], p[2], p[0], p[1], p[2]));
- if (ch1 == *p && ch2 == p[1]) {
- DLOG((stderr, " matches.\n"));
- return p[2];
- }
- }
- return 0;
-}
-#endif
-
-#define READ_ESCAPED(p, val) \
- if ((val = *p++) == 0) { \
- val = 254 + *p++; \
- } else if (!--val) { \
- val = *p++ << 8; \
- val |= *p++; \
- }
-
-
-static long afm_find_kern(
- const afm_fontinfo *fontinfo,
- int kern_idx,
- afm_cunicode ch2)
-{
- afm_cuint8 *p8 = fontinfo->kerning_data + kern_idx;
- int num;
-
- READ_ESCAPED(p8, num);
- DLOG((stderr, " find kern, num pairs = %d\n", num));
- while (num > 0) {
- afm_unicode ch;
-
- READ_ESCAPED(p8, ch);
- DLOG((stderr, " pair-char = %d\n", ch));
- if (ch == ch2) {
- DLOG((stderr, " got kern = %d\n", *(afm_csint8 *) p8));
- return *(afm_csint8 *) p8;
- }
- p8++;
- num--;
- }
- return 0;
-}
-
-/* measure width of a text string */
-double afm_get_text_width(
- double start,
- const char *font,
- double size,
- double tabwidth,
- const char *text)
-{
-#ifdef HAVE_MBSTOWCS
- size_t clen = strlen(text) + 1;
- wchar_t *cstr = malloc(sizeof(wchar_t) * clen); /* yes we are allocating probably too much here, I know */
- int text_count = mbstowcs(cstr, text, clen);
- double w;
-
- if (text_count == -1)
- text_count = mbstowcs(cstr, "Enc-Err", 6);
-#ifdef __APPLE__
- while (text_count > 0) {
- text_count--;
- cstr[text_count] = afm_fix_osx_charset(cstr[text_count]); /* unsafe macro */
- }
-#endif
- w = afm_get_text_width_wide(start, font, size, tabwidth, cstr);
- free(cstr);
- return w;
-#else
- return afm_get_text_width_wide(start, font, size, tabwidth, text);
-#endif
-}
-
-double afm_get_text_width_wide(
- double UNUSED(start),
- const char *font,
- double size,
- double UNUSED(tabwidth),
- const afm_char * text)
-{
- const afm_fontinfo *fontinfo = afm_findfont(font);
- long width = 0;
- double widthf;
- const afm_char *up = text;
-
- DLOG((stderr, "================= %s\n", text));
- if (fontinfo == NULL) {
- while (*up)
- up++;
- return size * (up - text);
- }
- while (1) {
- afm_unicode ch1, ch2;
- int idx1, kern_idx;
-
- if ((ch1 = *up) == 0)
- break;
- ch2 = *++up;
- DLOG((stderr, "------------- Loop: %d + %d (%c%c) at %d\n",
- ch1, ch2, ch1, ch2 ? ch2 : ' ',
- (up - (const unsigned char *) text) - 1));
- idx1 = afm_find_char_index(fontinfo, ch1);
- DLOG((stderr, " idx1 = %d\n", idx1));
-#if ENABLE_LIGATURES
- if (ch2) {
- int ch1_new =
- afm_find_combined_ligature(fontinfo, ch1, ch2);
-
- DLOG((stderr, " lig-ch = %d\n", ch1_new));
- if (ch1_new) {
- ch1 = ch1_new;
- idx1 = afm_find_char_index(fontinfo, ch1);
- ch2 = *++up;
- DLOG((stderr, " -> idx1 = %d, ch2 = %d (%c)\n",
- idx1, ch2, ch2 ? ch2 : ' '));
- }
- }
-#endif
- width += fontinfo->widths[idx1];
- DLOG((stderr, "Plain width of %d = %d\n", ch1,
- fontinfo->widths[idx1]));
- if (fontinfo->kerning_index && ch2) {
- kern_idx = fontinfo->kerning_index[idx1];
- DLOG((stderr, " kern_idx = %d\n", kern_idx));
- if (kern_idx > 0)
- width += afm_find_kern(fontinfo, kern_idx, ch2);
- }
- }
- widthf = (width * 6 / 1000.0) * size;
- DLOG((stderr, "Returns %ld (%ld) -> %f\n", width, width * 6, widthf));
- return widthf;
-}
-
-#ifdef __APPLE__
-const unsigned char afm_mac2iso[128] = {
- '\xC4', '\xC5', '\xC7', '\xC9', '\xD1', '\xD6', '\xDC', '\xE1', /* 80 */
- '\xE0', '\xE2', '\xE4', '\xE3', '\xE5', '\xE7', '\xE9', '\xE8', /* 88 */
- '\xEA', '\xEB', '\xED', '\xEC', '\xEE', '\xEF', '\xF1', '\xF3', /* 90 */
- '\xF2', '\xF4', '\xF6', '\xF5', '\xFA', '\xF9', '\xFB', '\xFC', /* 98 */
- '\xDD', '\xB0', '\xA2', '\xA3', '\xA7', ' ', '\xB6', '\xDF', /* A0 */
- '\xAE', '\xA9', ' ', '\xB4', '\xA8', ' ', '\xC6', '\xD8', /* A8 */
- ' ', '\xB1', '\xBE', ' ', '\xA5', '\xB5', ' ', ' ', /* B0 */
- '\xBD', '\xBC', ' ', '\xAA', '\xBA', ' ', '\xE6', '\xF8', /* B8 */
- '\xBF', '\xA1', '\xAC', ' ', ' ', ' ', ' ', '\xAB', /* C0 */
- '\xBB', ' ', '\xA0', '\xC0', '\xC3', '\xD5', ' ', '\xA6', /* C8 */
- '\xAD', ' ', '"', '"', '\'', '\'', '\xF7', '\xD7', /* D0 */
- '\xFF', ' ', ' ', '\xA4', '\xD0', '\xF0', '\xDE', '\xFE', /* D8 */
- '\xFD', '\xB7', ' ', ' ', ' ', '\xC2', '\xCA', '\xC1', /* E0 */
- '\xCB', '\xC8', '\xCD', '\xCE', '\xCF', '\xCC', '\xD3', '\xD4', /* E8 */
- ' ', '\xD2', '\xDA', '\xDB', '\xD9', ' ', ' ', ' ', /* F0 */
- '\xAF', ' ', ' ', ' ', '\xB8', ' ', ' ', ' ', /* F8 */
-};
-#endif
diff --git a/src/rrd_afm.h b/src/rrd_afm.h
--- a/src/rrd_afm.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/****************************************************************************
- * RRDtool 1.2.23 Copyright by Tobi Oetiker, 1997-2007
- ****************************************************************************
- * rrd_afm.h Parsing afm tables to find width of strings.
- ****************************************************************************/
-
-#ifndef RRD_AFM_H
-#define RRD_AFM_H
-
-#include <stdlib.h>
-
-#ifdef HAVE_MBSTOWCS
-#define afm_char wchar_t
-#else
-#define afm_char unsigned char
-#endif
-/*
- If the font specified by the name parameter in the routes below
- is not found
- (because it is not compiled into rrd_afm_data.c by compile_afm.pl)
- the font specified by RRD_AFM_DEFAULT_FONT will be used.
- If it is not installed, it uses the first font compiled
- into rrd_afm_data.c
- So they will always use some font.
-*/
-
-#define RRD_AFM_DEFAULT_FONT "Courier"
-
-/* measure width of a text string */
-/* fontname can be full name or postscript name */
-double afm_get_text_width(
- double start,
- const char *font,
- double size,
- double tabwidth,
- const char *text);
-double afm_get_text_width_wide(
- double start,
- const char *font,
- double size,
- double tabwidth,
- const afm_char * text);
-
-double afm_get_ascender(
- const char *font,
- double size);
-double afm_get_descender(
- const char *font,
- double size);
-
-/* get postscript name from fullname or postscript name */
-const char *afm_get_font_postscript_name(
- const char *font);
-const char *afm_get_font_name(
- const char *font);
-
-/* cc -E -dM /dev/null */
-#ifdef __APPLE__
-/* need charset conversion from macintosh to unicode. */
-extern const unsigned char afm_mac2iso[128];
-
-#define afm_fix_osx_charset(c) \
- ( (c) >= 128 && (c) <= 255 ? afm_mac2iso[(c) - 128] : (c))
-#else
-/* UNSAFE macro */
-#define afm_fix_osx_charset(x) (x)
-#endif
-
-#endif
diff --git a/src/rrd_afm_data.c b/src/rrd_afm_data.c
--- a/src/rrd_afm_data.c
+++ /dev/null
@@ -1,6298 +0,0 @@
-/****************************************************************************
- * RRDtool 1.2.23 Copyright by Tobi Oetiker, 1997-2007
- ****************************************************************************
- * rrd_afm_data.c Encoded afm (Adobe Font Metrics) for selected fonts.
- ****************************************************************************
- *
- * THIS FILE IS AUTOGENERATED BY PERL. DO NOT EDIT.
- *
- ****************************************************************************/
-
-#include "rrd_afm_data.h"
-#include <stdlib.h>
-
-
-
-/* ------------------------------------------------------------------*/
-/* FontName: Courier */
-/* FullName: Courier */
-/* FamilyName: Courier */
-static afm_cuint8 afm_Courier_widths[] = { /* 315 */
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100
-};
-static afm_cuint16 afm_Courier_highchars_index[] = { /* 220 */
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176,
- 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257,
- 258, 259, 260, 261, 262, 263, 268, 269, 270, 271, 272, 273, 274, 275, 278,
- 279,
- 280, 281, 282, 283, 286, 287, 290, 291, 298, 299, 302, 303, 304, 305, 310,
- 311,
- 313, 314, 315, 316, 317, 318, 321, 322, 323, 324, 325, 326, 327, 328, 332,
- 333,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 350, 351, 352,
- 353,
- 354, 355, 356, 357, 362, 363, 366, 367, 368, 369, 370, 371, 376, 377, 378,
- 379,
- 380, 381, 382, 402, 536, 537, 710, 711, 728, 729, 730, 731, 732, 733,
- 8211, 8212,
- 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8249,
- 8250,
- 8260, 8364, 8482, 8706, 8710, 8721, 8722, 8730, 8800, 8804, 8805, 9674,
- 63171,
- 64257, 64258
-};
-static afm_cunicode afm_Courier_ligatures[] = { /* 3 */
- 102, 105, 64257
-};
-
-
-/* ------------------------------------------------------------------*/
-/* FontName: Courier-Bold */
-/* FullName: Courier Bold */
-/* FamilyName: Courier */
-static afm_cuint8 afm_Courier_Bold_widths[] = { /* 315 */
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100
-};
-static afm_cuint16 afm_Courier_Bold_highchars_index[] = { /* 220 */
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176,
- 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257,
- 258, 259, 260, 261, 262, 263, 268, 269, 270, 271, 272, 273, 274, 275, 278,
- 279,
- 280, 281, 282, 283, 286, 287, 290, 291, 298, 299, 302, 303, 304, 305, 310,
- 311,
- 313, 314, 315, 316, 317, 318, 321, 322, 323, 324, 325, 326, 327, 328, 332,
- 333,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 350, 351, 352,
- 353,
- 354, 355, 356, 357, 362, 363, 366, 367, 368, 369, 370, 371, 376, 377, 378,
- 379,
- 380, 381, 382, 402, 536, 537, 710, 711, 728, 729, 730, 731, 732, 733,
- 8211, 8212,
- 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8249,
- 8250,
- 8260, 8364, 8482, 8706, 8710, 8721, 8722, 8730, 8800, 8804, 8805, 9674,
- 63171,
- 64257, 64258
-};
-static afm_cunicode afm_Courier_Bold_ligatures[] = { /* 3 */
- 102, 105, 64257
-};
-
-
-/* ------------------------------------------------------------------*/
-/* FontName: Courier-BoldOblique */
-/* FullName: Courier Bold Oblique */
-/* FamilyName: Courier */
-static afm_cuint8 afm_Courier_BoldOblique_widths[] = { /* 315 */
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100
-};
-static afm_cuint16 afm_Courier_BoldOblique_highchars_index[] = { /* 220 */
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176,
- 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257,
- 258, 259, 260, 261, 262, 263, 268, 269, 270, 271, 272, 273, 274, 275, 278,
- 279,
- 280, 281, 282, 283, 286, 287, 290, 291, 298, 299, 302, 303, 304, 305, 310,
- 311,
- 313, 314, 315, 316, 317, 318, 321, 322, 323, 324, 325, 326, 327, 328, 332,
- 333,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 350, 351, 352,
- 353,
- 354, 355, 356, 357, 362, 363, 366, 367, 368, 369, 370, 371, 376, 377, 378,
- 379,
- 380, 381, 382, 402, 536, 537, 710, 711, 728, 729, 730, 731, 732, 733,
- 8211, 8212,
- 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8249,
- 8250,
- 8260, 8364, 8482, 8706, 8710, 8721, 8722, 8730, 8800, 8804, 8805, 9674,
- 63171,
- 64257, 64258
-};
-static afm_cunicode afm_Courier_BoldOblique_ligatures[] = { /* 3 */
- 102, 105, 64257
-};
-
-
-/* ------------------------------------------------------------------*/
-/* FontName: Courier-Oblique */
-/* FullName: Courier Oblique */
-/* FamilyName: Courier */
-static afm_cuint8 afm_Courier_Oblique_widths[] = { /* 315 */
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
- 100,
- 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100
-};
-static afm_cuint16 afm_Courier_Oblique_highchars_index[] = { /* 220 */
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176,
- 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257,
- 258, 259, 260, 261, 262, 263, 268, 269, 270, 271, 272, 273, 274, 275, 278,
- 279,
- 280, 281, 282, 283, 286, 287, 290, 291, 298, 299, 302, 303, 304, 305, 310,
- 311,
- 313, 314, 315, 316, 317, 318, 321, 322, 323, 324, 325, 326, 327, 328, 332,
- 333,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 350, 351, 352,
- 353,
- 354, 355, 356, 357, 362, 363, 366, 367, 368, 369, 370, 371, 376, 377, 378,
- 379,
- 380, 381, 382, 402, 536, 537, 710, 711, 728, 729, 730, 731, 732, 733,
- 8211, 8212,
- 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8249,
- 8250,
- 8260, 8364, 8482, 8706, 8710, 8721, 8722, 8730, 8800, 8804, 8805, 9674,
- 63171,
- 64257, 64258
-};
-static afm_cunicode afm_Courier_Oblique_ligatures[] = { /* 3 */
- 102, 105, 64257
-};
-
-
-/* ------------------------------------------------------------------*/
-/* FontName: Helvetica */
-/* FullName: Helvetica */
-/* FamilyName: Helvetica */
-static afm_cuint8 afm_Helvetica_widths[] = { /* 315 */
- 46, 46, 59, 93, 93, 148, 111, 32, 56, 56, 65, 97, 46, 56, 46, 46, 93, 93,
- 93, 93, 93,
- 93, 93, 93, 93, 93, 46, 46, 97, 97, 97, 93, 169, 111, 111, 120, 120, 111,
- 102, 130,
- 120, 46, 83, 111, 93, 139, 120, 130, 111, 130, 120, 111, 102, 120, 111,
- 157, 111,
- 111, 102, 46, 46, 46, 78, 93, 56, 93, 93, 83, 93, 93, 46, 93, 93, 37, 37,
- 83, 37, 139,
- 93, 93, 93, 93, 56, 83, 46, 93, 83, 120, 83, 83, 83, 56, 43, 56, 97, 56,
- 93, 93, 93,
- 93, 43, 93, 56, 123, 62, 93, 97, 123, 56, 67, 97, 56, 56, 56, 93, 90, 46,
- 56, 56, 61,
- 93, 139, 139, 139, 102, 111, 111, 111, 111, 111, 111, 167, 120, 111, 111,
- 111, 111,
- 46, 46, 46, 46, 120, 120, 130, 130, 130, 130, 130, 97, 130, 120, 120, 120,
- 120, 111,
- 111, 102, 93, 93, 93, 93, 93, 93, 148, 83, 93, 93, 93, 93, 46, 46, 46, 46,
- 93, 93, 93,
- 93, 93, 93, 93, 97, 102, 93, 93, 93, 93, 83, 93, 83, 111, 93, 111, 93,
- 111, 93, 120,
- 83, 120, 83, 120, 107, 120, 93, 111, 93, 111, 93, 111, 93, 111, 93, 130,
- 93, 130,
- 93, 46, 46, 46, 37, 46, 46, 111, 83, 93, 37, 93, 37, 93, 50, 93, 37, 120,
- 93, 120, 93,
- 120, 93, 130, 93, 130, 93, 167, 157, 120, 56, 120, 56, 120, 56, 111, 83,
- 111, 83,
- 111, 83, 102, 46, 102, 53, 120, 93, 120, 93, 120, 93, 120, 93, 111, 102,
- 83, 102,
- 83, 102, 83, 93, 111, 83, 56, 56, 56, 56, 56, 56, 56, 56, 93, 167, 37, 37,
- 37, 56, 56,
- 56, 93, 93, 58, 167, 167, 56, 56, 28, 93, 167, 79, 102, 100, 97, 76, 92,
- 92, 92, 79,
- 42, 83, 83
-};
-static afm_sint16 afm_Helvetica_kerning_index[] = { /* 315 */
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 49, 52, 0, 0,
- 0, 0, 0, 55, 170, 197, 202, 0, 241, 0, 0, 0, 345, 418, 510, 0, 0, 545,
- 594, 687, 710,
- 772, 777, 938, 966, 1115, 0, 1259, 0, 0, 0, 0, 0, 0, 0, 1407, 1419, 1468,
- 0, 1476,
- 1494, 1575, 1587, 0, 0, 1595, 0, 1638, 1668, 1700, 1718, 0, 1730, 1847, 0,
- 0, 1854,
- 1924, 1994, 2017, 2087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2130, 2245, 2360, 2475, 2590, 2705, 0,
- 2820, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2825, 2874, 2923, 2972, 3021, 0, 3070, 3119, 3147,
- 3175, 3203,
- 3231, 0, 0, 3379, 3391, 3403, 3415, 3427, 3439, 0, 3451, 3459, 3477, 3495,
- 3513,
- 0, 0, 0, 0, 0, 3531, 3563, 3581, 3599, 3617, 3635, 0, 3653, 0, 0, 0, 0,
- 3882, 0, 3952,
- 4022, 4137, 4149, 4264, 4276, 4391, 4403, 4408, 4416, 4421, 4429, 0, 4468,
- 0,
- 0, 4507, 0, 4525, 0, 4543, 0, 4561, 0, 4579, 0, 4591, 0, 0, 0, 0, 0, 0,
- 4603, 4695,
- 4738, 0, 4773, 0, 4808, 0, 4843, 0, 0, 4878, 0, 4910, 0, 4942, 4974, 5023,
- 5041,
- 5090, 0, 0, 5108, 5170, 5287, 5349, 5466, 5528, 5645, 5650, 5657, 5662,
- 5669,
- 5674, 5681, 0, 5842, 0, 6003, 0, 6031, 0, 6059, 0, 6087, 0, 6115, 0, 6263,
- 0, 6306,
- 0, 6349, 0, 6392, 6397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6404, 6409, 0, 0,
- 6447, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-static afm_cuint8 afm_Helvetica_kerning_data[] = { /* 6450 */
- 42, 11, 85, 249, 87, 249, 88, 250, 90, 242, 222, 242, 0, 100, 249, 0, 102,
- 249, 0,
- 122, 242, 1, 32, 24, 247, 1, 32, 28, 252, 3, 1, 32, 25, 240, 1, 32, 29,
- 240, 4, 33, 247,
- 1, 32, 25, 240, 1, 32, 29, 240, 2, 33, 249, 2, 33, 249, 49, 68, 252, 72,
- 252, 80, 252,
- 82, 252, 85, 237, 86, 249, 87, 245, 88, 249, 90, 240, 118, 252, 119, 250,
- 120, 250,
- 122, 250, 200, 252, 211, 252, 212, 252, 213, 252, 214, 252, 215, 252, 217,
- 252,
- 218, 249, 219, 249, 220, 249, 221, 249, 222, 240, 250, 252, 251, 252, 252,
- 252,
- 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0, 14, 252, 0, 32, 252, 0, 36,
- 252, 0, 78,
- 252, 0, 82, 252, 0, 100, 237, 0, 102, 237, 0, 108, 249, 0, 109, 252, 0,
- 112, 249, 0,
- 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0, 122, 240,
- 12, 45,
- 254, 47, 254, 86, 255, 218, 255, 219, 255, 220, 255, 221, 255, 0, 108,
- 255, 0, 112,
- 255, 0, 114, 255, 0, 116, 255, 3, 45, 252, 47, 252, 18, 45, 245, 47, 245,
- 66, 250,
- 87, 245, 88, 250, 90, 242, 193, 250, 194, 250, 195, 250, 196, 250, 197,
- 250, 198,
- 250, 222, 242, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0, 122, 242, 45, 45, 232,
- 47, 232, 66,
- 244, 98, 249, 102, 252, 112, 252, 115, 249, 193, 244, 194, 244, 195, 244,
- 196, 244,
- 197, 244, 198, 244, 225, 249, 226, 249, 227, 249, 228, 249, 229, 249, 230,
- 249,
- 233, 252, 234, 252, 235, 252, 236, 252, 243, 252, 244, 252, 245, 252, 246,
- 252,
- 247, 252, 249, 252, 0, 2, 244, 0, 3, 249, 0, 4, 244, 0, 5, 249, 0, 6, 244,
- 0, 7, 249,
- 0, 21, 252, 0, 25, 252, 0, 27, 252, 0, 29, 252, 0, 79, 252, 0, 83, 252, 0,
- 87, 249, 0,
- 89, 249, 0, 91, 249, 32, 45, 252, 47, 252, 66, 254, 98, 254, 118, 254,
- 193, 254, 194,
- 254, 195, 254, 196, 254, 197, 254, 198, 254, 225, 254, 226, 254, 227, 254,
- 228,
- 254, 229, 254, 230, 254, 250, 254, 251, 254, 252, 254, 253, 254, 0, 2,
- 254, 0, 3,
- 254, 0, 4, 254, 0, 5, 254, 0, 6, 254, 0, 7, 254, 0, 109, 254, 0, 113, 254,
- 0, 115, 254,
- 0, 117, 254, 40, 80, 249, 102, 250, 112, 250, 118, 252, 122, 249, 211,
- 249, 212,
- 249, 213, 249, 214, 249, 215, 249, 217, 249, 233, 250, 234, 250, 235, 250,
- 236,
- 250, 243, 250, 244, 250, 245, 250, 246, 250, 247, 250, 249, 250, 250, 252,
- 251,
- 252, 252, 252, 253, 252, 254, 249, 0, 1, 249, 0, 21, 250, 0, 25, 250, 0,
- 27, 250, 0,
- 29, 250, 0, 78, 249, 0, 79, 250, 0, 82, 249, 0, 83, 250, 0, 109, 252, 0,
- 113, 252, 0,
- 115, 252, 0, 117, 252, 14, 85, 239, 87, 239, 88, 245, 90, 234, 122, 252,
- 222, 234,
- 254, 252, 0, 1, 252, 0, 100, 239, 0, 102, 239, 0, 122, 234, 1, 32, 25,
- 230, 1, 32, 29,
- 234, 22, 45, 250, 47, 250, 66, 254, 85, 250, 87, 249, 88, 252, 89, 247,
- 90, 245, 193,
- 254, 194, 254, 195, 254, 196, 254, 197, 254, 198, 254, 222, 245, 0, 2,
- 254, 0, 4,
- 254, 0, 6, 254, 0, 100, 250, 0, 102, 250, 0, 122, 245, 41, 45, 227, 47,
- 227, 66, 237,
- 98, 250, 102, 249, 112, 249, 193, 237, 194, 237, 195, 237, 196, 237, 197,
- 237, 198,
- 237, 225, 250, 226, 250, 227, 250, 228, 250, 229, 250, 230, 250, 233, 249,
- 234,
- 249, 235, 249, 236, 249, 243, 249, 244, 249, 245, 249, 246, 249, 247, 249,
- 249,
- 249, 0, 2, 237, 0, 3, 250, 0, 4, 237, 0, 5, 250, 0, 6, 237, 0, 7, 250, 0,
- 21, 249, 0, 25,
- 249, 0, 27, 249, 0, 29, 249, 0, 79, 249, 0, 83, 249, 10, 86, 255, 218,
- 255, 219, 255,
- 220, 255, 221, 255, 0, 108, 255, 0, 112, 255, 0, 114, 255, 0, 116, 255,
- 27, 80, 254,
- 85, 252, 86, 250, 87, 249, 88, 252, 90, 249, 211, 254, 212, 254, 213, 254,
- 214, 254,
- 215, 254, 217, 254, 218, 250, 219, 250, 220, 250, 221, 250, 222, 249, 0,
- 78, 254,
- 0, 82, 254, 0, 100, 252, 0, 102, 252, 0, 108, 250, 0, 112, 250, 0, 114,
- 250, 0, 116,
- 250, 0, 122, 249, 3, 45, 254, 47, 254, 70, 45, 237, 46, 234, 47, 237, 59,
- 254, 60,
- 254, 66, 237, 80, 250, 98, 237, 102, 237, 112, 237, 115, 237, 118, 237,
- 120, 237,
- 122, 237, 193, 237, 194, 237, 195, 237, 196, 237, 197, 237, 198, 237, 211,
- 250,
- 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 225, 237, 226, 237, 227,
- 237,
- 228, 247, 229, 237, 230, 237, 233, 247, 234, 237, 235, 237, 236, 237, 243,
- 237,
- 244, 237, 245, 237, 246, 247, 247, 237, 249, 237, 250, 237, 251, 237, 252,
- 237,
- 253, 237, 254, 237, 0, 1, 247, 0, 2, 237, 0, 3, 247, 0, 4, 237, 0, 5, 247,
- 0, 6, 237,
- 0, 7, 237, 0, 21, 247, 0, 25, 237, 0, 27, 237, 0, 29, 237, 0, 78, 250, 0,
- 79, 247, 0,
- 82, 250, 0, 83, 237, 0, 87, 237, 0, 89, 237, 0, 91, 237, 0, 109, 247, 0,
- 113, 237, 0,
- 115, 237, 0, 117, 237, 13, 45, 250, 47, 250, 66, 250, 193, 250, 194, 250,
- 195, 250,
- 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250, 65, 45,
- 236, 46, 244,
- 47, 236, 59, 250, 60, 250, 66, 244, 72, 250, 80, 250, 98, 245, 102, 244,
- 112, 244,
- 118, 245, 193, 244, 194, 244, 195, 244, 196, 244, 197, 244, 198, 244, 211,
- 250,
- 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 225, 245, 226, 245, 227,
- 245,
- 228, 245, 229, 245, 230, 245, 233, 244, 234, 244, 235, 244, 236, 244, 243,
- 244,
- 244, 244, 245, 244, 246, 244, 247, 244, 249, 244, 250, 245, 251, 245, 252,
- 245,
- 253, 245, 0, 2, 244, 0, 3, 245, 0, 4, 244, 0, 5, 245, 0, 6, 244, 0, 7,
- 245, 0, 21, 244,
- 0, 25, 244, 0, 27, 244, 0, 29, 244, 0, 32, 250, 0, 36, 250, 0, 78, 250, 0,
- 79, 244, 0,
- 82, 250, 0, 83, 244, 0, 109, 245, 0, 113, 245, 0, 115, 245, 0, 117, 245,
- 63, 45, 244,
- 46, 250, 47, 244, 66, 249, 80, 254, 98, 250, 102, 252, 112, 252, 118, 252,
- 122, 254,
- 193, 249, 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 211, 254, 212,
- 254,
- 213, 254, 214, 254, 215, 254, 217, 254, 225, 250, 226, 250, 227, 250, 228,
- 250,
- 229, 250, 230, 250, 233, 252, 234, 252, 235, 252, 236, 252, 243, 252, 244,
- 252,
- 245, 252, 246, 252, 247, 252, 249, 252, 250, 252, 251, 252, 252, 252, 253,
- 252,
- 254, 254, 0, 1, 254, 0, 2, 249, 0, 3, 250, 0, 4, 249, 0, 5, 250, 0, 6,
- 249, 0, 7, 250,
- 0, 21, 252, 0, 25, 252, 0, 27, 252, 0, 29, 252, 0, 78, 254, 0, 79, 252, 0,
- 82, 254, 0,
- 83, 252, 0, 109, 252, 0, 113, 252, 0, 115, 252, 0, 117, 252, 65, 45, 234,
- 46, 234,
- 47, 234, 59, 247, 60, 247, 66, 239, 80, 243, 98, 234, 102, 234, 106, 254,
- 112, 234,
- 118, 239, 193, 239, 194, 239, 195, 239, 196, 239, 197, 239, 198, 239, 211,
- 243,
- 212, 243, 213, 243, 214, 243, 215, 243, 217, 243, 225, 234, 226, 234, 227,
- 234,
- 228, 234, 229, 234, 230, 234, 233, 234, 234, 234, 235, 234, 236, 234, 238,
- 254,
- 243, 234, 244, 234, 245, 234, 246, 234, 247, 234, 249, 234, 250, 239, 251,
- 239,
- 252, 239, 253, 239, 0, 2, 239, 0, 3, 245, 0, 4, 239, 0, 5, 245, 0, 6, 239,
- 0, 7, 234,
- 0, 21, 245, 0, 25, 234, 0, 27, 234, 0, 29, 234, 0, 49, 254, 0, 78, 243, 0,
- 79, 234, 0,
- 82, 243, 0, 83, 234, 0, 109, 239, 0, 113, 239, 0, 115, 239, 0, 117, 239,
- 6, 119, 254,
- 120, 254, 122, 252, 254, 252, 0, 1, 252, 21, 45, 250, 47, 250, 99, 255,
- 109, 254,
- 118, 254, 119, 254, 122, 254, 250, 254, 251, 254, 252, 254, 253, 254, 254,
- 254,
- 0, 1, 254, 0, 60, 254, 0, 62, 254, 0, 68, 254, 0, 109, 254, 0, 113, 254,
- 0, 115, 254,
- 0, 117, 254, 4, 45, 254, 108, 254, 0, 57, 254, 9, 45, 254, 47, 254, 119,
- 252, 120,
- 254, 121, 252, 122, 254, 254, 254, 0, 1, 254, 34, 45, 252, 47, 252, 98,
- 252, 102,
- 252, 112, 252, 225, 252, 226, 252, 227, 252, 228, 252, 229, 252, 230, 252,
- 233,
- 252, 234, 252, 235, 252, 236, 252, 243, 252, 244, 252, 245, 252, 246, 252,
- 247,
- 252, 249, 252, 0, 3, 252, 0, 5, 252, 0, 7, 252, 0, 21, 252, 0, 25, 252, 0,
- 27, 252, 0,
- 29, 252, 0, 51, 252, 0, 79, 252, 0, 83, 252, 1, 32, 25, 8, 1, 32, 29, 10,
- 5, 115, 255,
- 0, 87, 255, 0, 89, 255, 0, 91, 255, 4, 122, 252, 254, 252, 0, 1, 252, 19,
- 102, 254,
- 112, 254, 233, 254, 234, 254, 235, 254, 236, 254, 243, 254, 244, 254, 245,
- 254,
- 246, 254, 247, 254, 249, 254, 0, 21, 254, 0, 25, 254, 0, 27, 254, 0, 29,
- 254, 0, 79,
- 254, 0, 83, 254, 13, 118, 255, 122, 254, 250, 255, 251, 255, 252, 255,
- 253, 255,
- 254, 254, 0, 1, 254, 0, 109, 255, 0, 113, 255, 0, 115, 255, 0, 117, 255,
- 14, 118, 255,
- 119, 254, 122, 254, 250, 255, 251, 255, 252, 255, 253, 255, 254, 254, 0,
- 1, 254,
- 0, 109, 255, 0, 113, 255, 0, 115, 255, 0, 117, 255, 9, 45, 250, 47, 250,
- 119, 254,
- 120, 254, 121, 252, 122, 252, 254, 252, 0, 1, 252, 6, 45, 251, 47, 251,
- 122, 252,
- 254, 252, 0, 1, 252, 50, 45, 249, 47, 249, 59, 5, 60, 5, 98, 255, 106, 3,
- 108, 3, 109,
- 3, 110, 4, 111, 4, 113, 5, 117, 7, 118, 3, 119, 5, 122, 5, 225, 255, 226,
- 255, 227,
- 255, 228, 255, 229, 255, 230, 255, 237, 3, 238, 3, 239, 3, 240, 3, 242, 4,
- 250, 3,
- 251, 3, 252, 3, 253, 3, 254, 5, 0, 1, 5, 0, 3, 255, 0, 5, 255, 0, 7, 255,
- 0, 45, 3, 0, 49,
- 3, 0, 57, 3, 0, 60, 3, 0, 62, 3, 0, 68, 3, 0, 70, 4, 0, 72, 4, 0, 74, 4,
- 0, 101, 7, 0, 109,
- 3, 0, 113, 3, 0, 115, 3, 0, 117, 3, 4, 45, 254, 47, 254, 120, 252, 31, 45,
- 244, 47, 244,
- 98, 253, 102, 253, 112, 253, 225, 253, 226, 253, 227, 253, 228, 253, 229,
- 253, 230,
- 253, 233, 253, 234, 253, 235, 253, 236, 253, 243, 253, 244, 253, 245, 253,
- 246,
- 253, 247, 253, 249, 253, 0, 3, 253, 0, 5, 253, 0, 7, 253, 0, 21, 253, 0,
- 25, 253, 0,
- 27, 253, 0, 29, 253, 0, 79, 253, 0, 83, 253, 31, 45, 247, 47, 247, 98,
- 254, 102, 255,
- 112, 255, 225, 254, 226, 254, 227, 254, 228, 254, 229, 254, 230, 254, 233,
- 255,
- 234, 255, 235, 255, 236, 255, 243, 255, 244, 255, 245, 255, 246, 255, 247,
- 255,
- 249, 255, 0, 3, 254, 0, 5, 254, 0, 7, 254, 0, 21, 255, 0, 25, 255, 0, 27,
- 255, 0, 29,
- 255, 0, 79, 255, 0, 83, 255, 10, 102, 252, 233, 252, 234, 252, 235, 252,
- 236, 252,
- 0, 21, 252, 0, 25, 252, 0, 27, 252, 0, 29, 252, 31, 45, 240, 47, 240, 98,
- 254, 102,
- 254, 112, 254, 225, 254, 226, 254, 227, 254, 228, 254, 229, 254, 230, 254,
- 233,
- 254, 234, 254, 235, 254, 236, 254, 243, 254, 244, 254, 245, 254, 246, 254,
- 247,
- 254, 249, 254, 0, 3, 254, 0, 5, 254, 0, 7, 254, 0, 21, 254, 0, 25, 254, 0,
- 27, 254, 0,
- 29, 254, 0, 79, 254, 0, 83, 254, 19, 102, 254, 112, 254, 233, 254, 234,
- 254, 235,
- 254, 236, 254, 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254,
- 0, 21,
- 254, 0, 25, 254, 0, 27, 254, 0, 29, 254, 0, 79, 254, 0, 83, 254, 49, 68,
- 252, 72, 252,
- 80, 252, 82, 252, 85, 237, 86, 249, 87, 245, 88, 249, 90, 240, 118, 252,
- 119, 250,
- 120, 250, 122, 250, 200, 252, 211, 252, 212, 252, 213, 252, 214, 252, 215,
- 252,
- 217, 252, 218, 249, 219, 249, 220, 249, 221, 249, 222, 240, 250, 252, 251,
- 252,
- 252, 252, 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0, 14, 252, 0, 32,
- 252, 0, 36, 252,
- 0, 78, 252, 0, 82, 252, 0, 100, 237, 0, 102, 237, 0, 108, 249, 0, 109,
- 252, 0, 112,
- 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0,
- 122, 240,
- 49, 68, 252, 72, 252, 80, 252, 82, 252, 85, 237, 86, 249, 87, 245, 88,
- 249, 90, 240,
- 118, 252, 119, 250, 120, 250, 122, 250, 200, 252, 211, 252, 212, 252, 213,
- 252,
- 214, 252, 215, 252, 217, 252, 218, 249, 219, 249, 220, 249, 221, 249, 222,
- 240,
- 250, 252, 251, 252, 252, 252, 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0,
- 14, 252,
- 0, 32, 252, 0, 36, 252, 0, 78, 252, 0, 82, 252, 0, 100, 237, 0, 102, 237,
- 0, 108, 249,
- 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116,
- 249, 0, 117,
- 252, 0, 122, 240, 49, 68, 252, 72, 252, 80, 252, 82, 252, 85, 237, 86,
- 249, 87, 245,
- 88, 249, 90, 240, 118, 252, 119, 250, 120, 250, 122, 250, 200, 252, 211,
- 252, 212,
- 252, 213, 252, 214, 252, 215, 252, 217, 252, 218, 249, 219, 249, 220, 249,
- 221,
- 249, 222, 240, 250, 252, 251, 252, 252, 252, 253, 252, 254, 250, 0, 1,
- 250, 0, 8,
- 252, 0, 14, 252, 0, 32, 252, 0, 36, 252, 0, 78, 252, 0, 82, 252, 0, 100,
- 237, 0, 102,
- 237, 0, 108, 249, 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0,
- 115, 252,
- 0, 116, 249, 0, 117, 252, 0, 122, 240, 49, 68, 252, 72, 252, 80, 252, 82,
- 252, 85,
- 237, 86, 249, 87, 245, 88, 249, 90, 240, 118, 252, 119, 250, 120, 250,
- 122, 250,
- 200, 252, 211, 252, 212, 252, 213, 252, 214, 252, 215, 252, 217, 252, 218,
- 249,
- 219, 249, 220, 249, 221, 249, 222, 240, 250, 252, 251, 252, 252, 252, 253,
- 252,
- 254, 250, 0, 1, 250, 0, 8, 252, 0, 14, 252, 0, 32, 252, 0, 36, 252, 0, 78,
- 252, 0, 82,
- 252, 0, 100, 237, 0, 102, 237, 0, 108, 249, 0, 109, 252, 0, 112, 249, 0,
- 113, 252,
- 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0, 122, 240, 49, 68,
- 252, 72, 252,
- 80, 252, 82, 252, 85, 237, 86, 249, 87, 245, 88, 249, 90, 240, 118, 252,
- 119, 250,
- 120, 250, 122, 250, 200, 252, 211, 252, 212, 252, 213, 252, 214, 252, 215,
- 252,
- 217, 252, 218, 249, 219, 249, 220, 249, 221, 249, 222, 240, 250, 252, 251,
- 252,
- 252, 252, 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0, 14, 252, 0, 32,
- 252, 0, 36, 252,
- 0, 78, 252, 0, 82, 252, 0, 100, 237, 0, 102, 237, 0, 108, 249, 0, 109,
- 252, 0, 112,
- 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0,
- 122, 240,
- 49, 68, 252, 72, 252, 80, 252, 82, 252, 85, 237, 86, 249, 87, 245, 88,
- 249, 90, 240,
- 118, 252, 119, 250, 120, 250, 122, 250, 200, 252, 211, 252, 212, 252, 213,
- 252,
- 214, 252, 215, 252, 217, 252, 218, 249, 219, 249, 220, 249, 221, 249, 222,
- 240,
- 250, 252, 251, 252, 252, 252, 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0,
- 14, 252,
- 0, 32, 252, 0, 36, 252, 0, 78, 252, 0, 82, 252, 0, 100, 237, 0, 102, 237,
- 0, 108, 249,
- 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116,
- 249, 0, 117,
- 252, 0, 122, 240, 3, 45, 252, 47, 252, 22, 45, 250, 47, 250, 66, 254, 85,
- 250, 87,
- 249, 88, 252, 89, 247, 90, 245, 193, 254, 194, 254, 195, 254, 196, 254,
- 197, 254,
- 198, 254, 222, 245, 0, 2, 254, 0, 4, 254, 0, 6, 254, 0, 100, 250, 0, 102,
- 250, 0, 122,
- 245, 22, 45, 250, 47, 250, 66, 254, 85, 250, 87, 249, 88, 252, 89, 247,
- 90, 245, 193,
- 254, 194, 254, 195, 254, 196, 254, 197, 254, 198, 254, 222, 245, 0, 2,
- 254, 0, 4,
- 254, 0, 6, 254, 0, 100, 250, 0, 102, 250, 0, 122, 245, 22, 45, 250, 47,
- 250, 66, 254,
- 85, 250, 87, 249, 88, 252, 89, 247, 90, 245, 193, 254, 194, 254, 195, 254,
- 196, 254,
- 197, 254, 198, 254, 222, 245, 0, 2, 254, 0, 4, 254, 0, 6, 254, 0, 100,
- 250, 0, 102,
- 250, 0, 122, 245, 22, 45, 250, 47, 250, 66, 254, 85, 250, 87, 249, 88,
- 252, 89, 247,
- 90, 245, 193, 254, 194, 254, 195, 254, 196, 254, 197, 254, 198, 254, 222,
- 245, 0,
- 2, 254, 0, 4, 254, 0, 6, 254, 0, 100, 250, 0, 102, 250, 0, 122, 245, 22,
- 45, 250, 47,
- 250, 66, 254, 85, 250, 87, 249, 88, 252, 89, 247, 90, 245, 193, 254, 194,
- 254, 195,
- 254, 196, 254, 197, 254, 198, 254, 222, 245, 0, 2, 254, 0, 4, 254, 0, 6,
- 254, 0, 100,
- 250, 0, 102, 250, 0, 122, 245, 22, 45, 250, 47, 250, 66, 254, 85, 250, 87,
- 249, 88,
- 252, 89, 247, 90, 245, 193, 254, 194, 254, 195, 254, 196, 254, 197, 254,
- 198, 254,
- 222, 245, 0, 2, 254, 0, 4, 254, 0, 6, 254, 0, 100, 250, 0, 102, 250, 0,
- 122, 245, 13,
- 45, 250, 47, 250, 66, 250, 193, 250, 194, 250, 195, 250, 196, 250, 197,
- 250, 198,
- 250, 0, 2, 250, 0, 4, 250, 0, 6, 250, 13, 45, 250, 47, 250, 66, 250, 193,
- 250, 194,
- 250, 195, 250, 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0, 6,
- 250, 13, 45,
- 250, 47, 250, 66, 250, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250,
- 198, 250,
- 0, 2, 250, 0, 4, 250, 0, 6, 250, 13, 45, 250, 47, 250, 66, 250, 193, 250,
- 194, 250,
- 195, 250, 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250,
- 65, 45, 234,
- 46, 234, 47, 234, 59, 247, 60, 247, 66, 239, 80, 243, 98, 234, 102, 234,
- 106, 254,
- 112, 234, 118, 239, 193, 239, 194, 239, 195, 239, 196, 239, 197, 239, 198,
- 239,
- 211, 243, 212, 243, 213, 243, 214, 243, 215, 243, 217, 243, 225, 234, 226,
- 234,
- 227, 234, 228, 245, 229, 234, 230, 234, 233, 234, 234, 234, 235, 234, 236,
- 234,
- 238, 254, 243, 234, 244, 234, 245, 234, 246, 234, 247, 234, 249, 234, 250,
- 239,
- 251, 239, 252, 239, 253, 239, 0, 2, 239, 0, 3, 245, 0, 4, 239, 0, 5, 245,
- 0, 6, 239,
- 0, 7, 234, 0, 21, 245, 0, 25, 234, 0, 27, 234, 0, 29, 234, 0, 49, 254, 0,
- 78, 243, 0,
- 79, 245, 0, 82, 243, 0, 83, 234, 0, 109, 239, 0, 113, 239, 0, 115, 239, 0,
- 117, 239,
- 6, 119, 254, 120, 254, 122, 252, 254, 252, 0, 1, 252, 6, 119, 254, 120,
- 254, 122,
- 252, 254, 252, 0, 1, 252, 6, 119, 254, 120, 254, 122, 252, 254, 252, 0, 1,
- 252, 6,
- 119, 254, 120, 254, 122, 252, 254, 252, 0, 1, 252, 6, 119, 254, 120, 254,
- 122, 252,
- 254, 252, 0, 1, 252, 6, 119, 254, 120, 254, 122, 252, 254, 252, 0, 1, 252,
- 4, 45, 254,
- 108, 254, 0, 57, 254, 9, 45, 254, 47, 254, 119, 252, 120, 254, 121, 252,
- 122, 254,
- 254, 254, 0, 1, 254, 9, 45, 254, 47, 254, 119, 252, 120, 254, 121, 252,
- 122, 254,
- 254, 254, 0, 1, 254, 9, 45, 254, 47, 254, 119, 252, 120, 254, 121, 252,
- 122, 254,
- 254, 254, 0, 1, 254, 9, 45, 254, 47, 254, 119, 252, 120, 254, 121, 252,
- 122, 254,
- 254, 254, 0, 1, 254, 14, 118, 255, 119, 254, 122, 254, 250, 255, 251, 255,
- 252, 255,
- 253, 255, 254, 254, 0, 1, 254, 0, 109, 255, 0, 113, 255, 0, 115, 255, 0,
- 117, 255,
- 9, 45, 250, 47, 250, 119, 254, 120, 254, 121, 252, 122, 252, 254, 252, 0,
- 1, 252,
- 9, 45, 250, 47, 250, 119, 254, 120, 254, 121, 252, 122, 252, 254, 252, 0,
- 1, 252,
- 9, 45, 250, 47, 250, 119, 254, 120, 254, 121, 252, 122, 252, 254, 252, 0,
- 1, 252,
- 9, 45, 250, 47, 250, 119, 254, 120, 254, 121, 252, 122, 252, 254, 252, 0,
- 1, 252,
- 9, 45, 250, 47, 250, 119, 254, 120, 254, 121, 252, 122, 252, 254, 252, 0,
- 1, 252,
- 95, 45, 241, 47, 241, 98, 248, 99, 248, 100, 248, 101, 248, 102, 248, 103,
- 248, 104,
- 248, 105, 248, 106, 248, 107, 248, 108, 248, 109, 248, 110, 248, 111, 248,
- 112,
- 248, 113, 248, 114, 248, 115, 248, 116, 248, 117, 248, 118, 248, 119, 245,
- 120,
- 245, 121, 243, 122, 245, 123, 248, 225, 248, 226, 248, 227, 248, 228, 248,
- 229,
- 248, 230, 248, 232, 248, 233, 248, 234, 248, 235, 248, 236, 248, 237, 248,
- 238,
- 248, 239, 248, 240, 248, 242, 248, 243, 248, 244, 248, 245, 248, 246, 248,
- 247,
- 248, 249, 248, 250, 248, 251, 248, 252, 248, 253, 248, 254, 245, 0, 1,
- 245, 0, 3,
- 248, 0, 5, 248, 0, 7, 248, 0, 9, 248, 0, 15, 248, 0, 19, 248, 0, 21, 248,
- 0, 25, 248,
- 0, 27, 248, 0, 29, 248, 0, 33, 248, 0, 37, 248, 0, 45, 248, 0, 49, 248, 0,
- 57, 248, 0,
- 60, 248, 0, 62, 248, 0, 68, 248, 0, 70, 248, 0, 72, 248, 0, 74, 248, 0,
- 79, 248, 0, 83,
- 248, 0, 87, 248, 0, 89, 248, 0, 91, 248, 0, 93, 248, 0, 97, 248, 0, 99,
- 248, 0, 101,
- 248, 0, 109, 248, 0, 113, 248, 0, 115, 248, 0, 117, 248, 0, 124, 248, 0,
- 126, 248,
- 0, 128, 248, 1, 2, 25, 248, 31, 45, 240, 47, 240, 98, 254, 102, 254, 112,
- 254, 225,
- 254, 226, 254, 227, 254, 228, 254, 229, 254, 230, 254, 233, 254, 234, 254,
- 235,
- 254, 236, 254, 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254,
- 0, 3,
- 254, 0, 5, 254, 0, 7, 254, 0, 21, 254, 0, 25, 254, 0, 27, 254, 0, 29, 254,
- 0, 79, 254,
- 0, 83, 254, 31, 45, 240, 47, 240, 98, 254, 102, 254, 112, 254, 225, 254,
- 226, 254,
- 227, 254, 228, 254, 229, 254, 230, 254, 233, 254, 234, 254, 235, 254, 236,
- 254,
- 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254, 0, 3, 254, 0,
- 5, 254,
- 0, 7, 254, 0, 21, 254, 0, 25, 254, 0, 27, 254, 0, 29, 254, 0, 79, 254, 0,
- 83, 254, 49,
- 68, 252, 72, 252, 80, 252, 82, 252, 85, 237, 86, 249, 87, 245, 88, 249,
- 90, 240, 118,
- 252, 119, 250, 120, 250, 122, 250, 200, 252, 211, 252, 212, 252, 213, 252,
- 214,
- 252, 215, 252, 217, 252, 218, 249, 219, 249, 220, 249, 221, 249, 222, 240,
- 250,
- 252, 251, 252, 252, 252, 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0, 14,
- 252, 0, 32,
- 252, 0, 36, 252, 0, 78, 252, 0, 82, 252, 0, 100, 237, 0, 102, 237, 0, 108,
- 249, 0, 109,
- 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0,
- 117, 252,
- 0, 122, 240, 6, 119, 254, 120, 254, 122, 252, 254, 252, 0, 1, 252, 49, 68,
- 252, 72,
- 252, 80, 252, 82, 252, 85, 237, 86, 249, 87, 245, 88, 249, 90, 240, 118,
- 252, 119,
- 250, 120, 250, 122, 250, 200, 252, 211, 252, 212, 252, 213, 252, 214, 252,
- 215,
- 252, 217, 252, 218, 249, 219, 249, 220, 249, 221, 249, 222, 240, 250, 252,
- 251,
- 252, 252, 252, 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0, 14, 252, 0,
- 32, 252, 0,
- 36, 252, 0, 78, 252, 0, 82, 252, 0, 100, 237, 0, 102, 237, 0, 108, 249, 0,
- 109, 252,
- 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117,
- 252, 0, 122,
- 240, 6, 119, 254, 120, 254, 122, 252, 254, 252, 0, 1, 252, 49, 68, 252,
- 72, 252, 80,
- 252, 82, 252, 85, 237, 86, 249, 87, 245, 88, 249, 90, 240, 118, 252, 119,
- 250, 120,
- 250, 122, 250, 200, 252, 211, 252, 212, 252, 213, 252, 214, 252, 215, 252,
- 217,
- 252, 218, 249, 219, 249, 220, 249, 221, 249, 222, 240, 250, 252, 251, 252,
- 252,
- 252, 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0, 14, 252, 0, 32, 252, 0,
- 36, 252, 0,
- 78, 252, 0, 82, 252, 0, 100, 237, 0, 102, 237, 0, 108, 249, 0, 109, 252,
- 0, 112, 249,
- 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0, 122,
- 240, 6, 119,
- 254, 120, 254, 122, 252, 254, 252, 0, 1, 252, 3, 45, 252, 47, 252, 4, 45,
- 254, 108,
- 254, 0, 57, 254, 3, 45, 252, 47, 252, 4, 45, 254, 108, 254, 0, 57, 254,
- 18, 45, 245,
- 47, 245, 66, 250, 87, 245, 88, 250, 90, 242, 193, 250, 194, 250, 195, 250,
- 196, 250,
- 197, 250, 198, 250, 222, 242, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0, 122,
- 242, 18, 45,
- 245, 47, 245, 66, 250, 87, 245, 88, 250, 90, 242, 193, 250, 194, 250, 195,
- 250, 196,
- 250, 197, 250, 198, 250, 222, 242, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0,
- 122, 242, 9,
- 45, 254, 47, 254, 119, 252, 120, 254, 121, 252, 122, 254, 254, 254, 0, 1,
- 254, 9,
- 45, 254, 47, 254, 119, 252, 120, 254, 121, 252, 122, 254, 254, 254, 0, 1,
- 254, 9,
- 45, 254, 47, 254, 119, 252, 120, 254, 121, 252, 122, 254, 254, 254, 0, 1,
- 254, 9,
- 45, 254, 47, 254, 119, 252, 120, 254, 121, 252, 122, 254, 254, 254, 0, 1,
- 254, 5,
- 115, 255, 0, 87, 255, 0, 89, 255, 0, 91, 255, 5, 115, 255, 0, 87, 255, 0,
- 89, 255, 0,
- 91, 255, 40, 80, 249, 102, 250, 112, 250, 118, 252, 122, 249, 211, 249,
- 212, 249,
- 213, 249, 214, 249, 215, 249, 217, 249, 233, 250, 234, 250, 235, 250, 236,
- 250,
- 243, 250, 244, 250, 245, 250, 246, 250, 247, 250, 249, 250, 250, 252, 251,
- 252,
- 252, 252, 253, 252, 254, 249, 0, 1, 249, 0, 21, 250, 0, 25, 250, 0, 27,
- 250, 0, 29,
- 250, 0, 78, 249, 0, 79, 250, 0, 82, 249, 0, 83, 250, 0, 109, 252, 0, 113,
- 252, 0, 115,
- 252, 0, 117, 252, 19, 102, 254, 112, 254, 233, 254, 234, 254, 235, 254,
- 236, 254,
- 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254, 0, 21, 254, 0,
- 25, 254,
- 0, 27, 254, 0, 29, 254, 0, 79, 254, 0, 83, 254, 14, 85, 239, 87, 239, 88,
- 245, 90, 234,
- 122, 252, 222, 234, 254, 252, 0, 1, 252, 0, 100, 239, 0, 102, 239, 0, 122,
- 234, 1,
- 32, 25, 230, 1, 32, 29, 234, 14, 85, 239, 87, 239, 88, 245, 90, 234, 122,
- 252, 222,
- 234, 254, 252, 0, 1, 252, 0, 100, 239, 0, 102, 239, 0, 122, 234, 1, 32,
- 25, 230, 1,
- 32, 29, 234, 14, 85, 239, 87, 239, 88, 245, 90, 234, 122, 252, 222, 234,
- 254, 252,
- 0, 1, 252, 0, 100, 239, 0, 102, 239, 0, 122, 234, 1, 32, 25, 230, 1, 32,
- 29, 234, 14,
- 85, 239, 87, 239, 88, 245, 90, 234, 122, 252, 222, 234, 254, 252, 0, 1,
- 252, 0, 100,
- 239, 0, 102, 239, 0, 122, 234, 1, 32, 25, 230, 1, 32, 29, 234, 14, 118,
- 255, 119, 254,
- 122, 254, 250, 255, 251, 255, 252, 255, 253, 255, 254, 254, 0, 1, 254, 0,
- 109, 255,
- 0, 113, 255, 0, 115, 255, 0, 117, 255, 14, 118, 255, 119, 254, 122, 254,
- 250, 255,
- 251, 255, 252, 255, 253, 255, 254, 254, 0, 1, 254, 0, 109, 255, 0, 113,
- 255, 0, 115,
- 255, 0, 117, 255, 14, 118, 255, 119, 254, 122, 254, 250, 255, 251, 255,
- 252, 255,
- 253, 255, 254, 254, 0, 1, 254, 0, 109, 255, 0, 113, 255, 0, 115, 255, 0,
- 117, 255,
- 22, 45, 250, 47, 250, 66, 254, 85, 250, 87, 249, 88, 252, 89, 247, 90,
- 245, 193, 254,
- 194, 254, 195, 254, 196, 254, 197, 254, 198, 254, 222, 245, 0, 2, 254, 0,
- 4, 254,
- 0, 6, 254, 0, 100, 250, 0, 102, 250, 0, 122, 245, 9, 45, 250, 47, 250,
- 119, 254, 120,
- 254, 121, 252, 122, 252, 254, 252, 0, 1, 252, 22, 45, 250, 47, 250, 66,
- 254, 85, 250,
- 87, 249, 88, 252, 89, 247, 90, 245, 193, 254, 194, 254, 195, 254, 196,
- 254, 197,
- 254, 198, 254, 222, 245, 0, 2, 254, 0, 4, 254, 0, 6, 254, 0, 100, 250, 0,
- 102, 250,
- 0, 122, 245, 9, 45, 250, 47, 250, 119, 254, 120, 254, 121, 252, 122, 252,
- 254, 252,
- 0, 1, 252, 27, 80, 254, 85, 252, 86, 250, 87, 249, 88, 252, 90, 249, 211,
- 254, 212,
- 254, 213, 254, 214, 254, 215, 254, 217, 254, 218, 250, 219, 250, 220, 250,
- 221,
- 250, 222, 249, 0, 78, 254, 0, 82, 254, 0, 100, 252, 0, 102, 252, 0, 108,
- 250, 0, 112,
- 250, 0, 114, 250, 0, 116, 250, 0, 122, 249, 50, 45, 249, 47, 249, 59, 5,
- 60, 5, 98,
- 255, 106, 3, 108, 3, 109, 3, 110, 4, 111, 4, 113, 5, 117, 7, 118, 3, 119,
- 5, 122, 5,
- 225, 255, 226, 255, 227, 255, 228, 255, 229, 255, 230, 255, 237, 3, 238,
- 3, 239,
- 3, 240, 3, 242, 4, 250, 3, 251, 3, 252, 3, 253, 3, 254, 5, 0, 1, 5, 0, 3,
- 255, 0, 5, 255,
- 0, 7, 255, 0, 45, 3, 0, 49, 3, 0, 57, 3, 0, 60, 3, 0, 62, 3, 0, 68, 3, 0,
- 70, 4, 0, 72, 4,
- 0, 74, 4, 0, 101, 7, 0, 109, 3, 0, 113, 3, 0, 115, 3, 0, 117, 3, 27, 80,
- 254, 85, 252,
- 86, 250, 87, 249, 88, 252, 90, 249, 211, 254, 212, 254, 213, 254, 214,
- 254, 215,
- 254, 217, 254, 218, 250, 219, 250, 220, 250, 221, 250, 222, 249, 0, 78,
- 254, 0, 82,
- 254, 0, 100, 252, 0, 102, 252, 0, 108, 250, 0, 112, 250, 0, 114, 250, 0,
- 116, 250,
- 0, 122, 249, 50, 45, 249, 47, 249, 59, 5, 60, 5, 98, 255, 106, 3, 108, 3,
- 109, 3, 110,
- 4, 111, 4, 113, 5, 117, 7, 118, 3, 119, 5, 122, 5, 225, 255, 226, 255,
- 227, 255, 228,
- 255, 229, 255, 230, 255, 237, 3, 238, 3, 239, 3, 240, 3, 242, 4, 250, 3,
- 251, 3, 252,
- 3, 253, 3, 254, 5, 0, 1, 5, 0, 3, 255, 0, 5, 255, 0, 7, 255, 0, 45, 3, 0,
- 49, 3, 0, 57, 3,
- 0, 60, 3, 0, 62, 3, 0, 68, 3, 0, 70, 4, 0, 72, 4, 0, 74, 4, 0, 101, 7, 0,
- 109, 3, 0, 113,
- 3, 0, 115, 3, 0, 117, 3, 27, 80, 254, 85, 252, 86, 250, 87, 249, 88, 252,
- 90, 249, 211,
- 254, 212, 254, 213, 254, 214, 254, 215, 254, 217, 254, 218, 250, 219, 250,
- 220,
- 250, 221, 250, 222, 249, 0, 78, 254, 0, 82, 254, 0, 100, 252, 0, 102, 252,
- 0, 108,
- 250, 0, 112, 250, 0, 114, 250, 0, 116, 250, 0, 122, 249, 50, 45, 249, 47,
- 249, 59,
- 5, 60, 5, 98, 255, 106, 3, 108, 3, 109, 3, 110, 4, 111, 4, 113, 5, 117, 7,
- 118, 3, 119,
- 5, 122, 5, 225, 255, 226, 255, 227, 255, 228, 255, 229, 255, 230, 255,
- 237, 3, 238,
- 3, 239, 3, 240, 3, 242, 4, 250, 3, 251, 3, 252, 3, 253, 3, 254, 5, 0, 1,
- 5, 0, 3, 255,
- 0, 5, 255, 0, 7, 255, 0, 45, 3, 0, 49, 3, 0, 57, 3, 0, 60, 3, 0, 62, 3, 0,
- 68, 3, 0, 70, 4,
- 0, 72, 4, 0, 74, 4, 0, 101, 7, 0, 109, 3, 0, 113, 3, 0, 115, 3, 0, 117, 3,
- 3, 45, 254, 47,
- 254, 4, 45, 254, 47, 254, 120, 252, 3, 45, 254, 47, 254, 4, 45, 254, 47,
- 254, 120,
- 252, 3, 45, 254, 47, 254, 4, 45, 254, 47, 254, 120, 252, 70, 45, 237, 46,
- 234, 47,
- 237, 59, 254, 60, 254, 66, 237, 80, 250, 98, 237, 102, 237, 112, 237, 115,
- 237, 118,
- 237, 120, 237, 122, 237, 193, 237, 194, 237, 195, 237, 196, 237, 197, 237,
- 198,
- 237, 211, 250, 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 225, 237,
- 226,
- 237, 227, 237, 228, 247, 229, 237, 230, 237, 233, 247, 234, 237, 235, 237,
- 236,
- 237, 243, 237, 244, 237, 245, 237, 246, 247, 247, 237, 249, 237, 250, 237,
- 251,
- 237, 252, 237, 253, 237, 254, 237, 0, 1, 247, 0, 2, 237, 0, 3, 247, 0, 4,
- 237, 0, 5,
- 247, 0, 6, 237, 0, 7, 237, 0, 21, 247, 0, 25, 237, 0, 27, 237, 0, 29, 237,
- 0, 78, 250,
- 0, 79, 247, 0, 82, 250, 0, 83, 237, 0, 87, 237, 0, 89, 237, 0, 91, 237, 0,
- 109, 247,
- 0, 113, 237, 0, 115, 237, 0, 117, 237, 70, 45, 237, 46, 234, 47, 237, 59,
- 254, 60,
- 254, 66, 237, 80, 250, 98, 237, 102, 237, 112, 237, 115, 237, 118, 237,
- 120, 237,
- 122, 237, 193, 237, 194, 237, 195, 237, 196, 237, 197, 237, 198, 237, 211,
- 250,
- 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 225, 237, 226, 237, 227,
- 237,
- 228, 247, 229, 237, 230, 237, 233, 247, 234, 237, 235, 237, 236, 237, 243,
- 237,
- 244, 237, 245, 237, 246, 247, 247, 237, 249, 237, 250, 237, 251, 237, 252,
- 237,
- 253, 237, 254, 237, 0, 1, 247, 0, 2, 237, 0, 3, 247, 0, 4, 237, 0, 5, 247,
- 0, 6, 237,
- 0, 7, 237, 0, 21, 247, 0, 25, 237, 0, 27, 237, 0, 29, 237, 0, 78, 250, 0,
- 79, 247, 0,
- 82, 250, 0, 83, 237, 0, 87, 237, 0, 89, 237, 0, 91, 237, 0, 109, 247, 0,
- 113, 237, 0,
- 115, 237, 0, 117, 237, 13, 45, 250, 47, 250, 66, 250, 193, 250, 194, 250,
- 195, 250,
- 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250, 13, 45,
- 250, 47, 250,
- 66, 250, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 0, 2,
- 250, 0,
- 4, 250, 0, 6, 250, 13, 45, 250, 47, 250, 66, 250, 193, 250, 194, 250, 195,
- 250, 196,
- 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250, 13, 45, 250, 47,
- 250, 66,
- 250, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 0, 2,
- 250, 0, 4,
- 250, 0, 6, 250, 65, 45, 234, 46, 234, 47, 234, 59, 247, 60, 247, 66, 239,
- 80, 243,
- 98, 234, 102, 234, 106, 254, 112, 234, 118, 239, 193, 239, 194, 239, 195,
- 239, 196,
- 239, 197, 239, 198, 239, 211, 243, 212, 243, 213, 243, 214, 243, 215, 243,
- 217,
- 243, 225, 234, 226, 234, 227, 234, 228, 245, 229, 234, 230, 234, 233, 234,
- 234,
- 234, 235, 234, 236, 234, 238, 254, 243, 234, 244, 234, 245, 234, 246, 234,
- 247,
- 234, 249, 234, 250, 239, 251, 239, 252, 239, 253, 239, 0, 2, 239, 0, 3,
- 245, 0, 4,
- 239, 0, 5, 245, 0, 6, 239, 0, 7, 234, 0, 21, 245, 0, 25, 234, 0, 27, 234,
- 0, 29, 234,
- 0, 49, 254, 0, 78, 243, 0, 79, 234, 0, 82, 243, 0, 83, 234, 0, 109, 239,
- 0, 113, 239,
- 0, 115, 239, 0, 117, 239, 19, 102, 254, 112, 254, 233, 254, 234, 254, 235,
- 254, 236,
- 254, 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254, 0, 21,
- 254, 0, 25,
- 254, 0, 27, 254, 0, 29, 254, 0, 79, 254, 0, 83, 254, 19, 102, 254, 112,
- 254, 233, 254,
- 234, 254, 235, 254, 236, 254, 243, 254, 244, 254, 245, 254, 246, 254, 247,
- 254,
- 249, 254, 0, 21, 254, 0, 25, 254, 0, 27, 254, 0, 29, 254, 0, 79, 254, 0,
- 83, 254, 19,
- 102, 254, 112, 254, 233, 254, 234, 254, 235, 254, 236, 254, 243, 254, 244,
- 254,
- 245, 254, 246, 254, 247, 254, 249, 254, 0, 21, 254, 0, 25, 254, 0, 27,
- 254, 0, 29,
- 254, 0, 79, 254, 0, 83, 254, 3, 45, 254, 47, 254, 4, 45, 254, 47, 254,
- 120, 252, 2,
- 1, 32, 24, 247, 14, 33, 245, 101, 249, 115, 249, 116, 249, 0, 19, 249, 0,
- 87, 249,
- 0, 89, 249, 0, 91, 249, 0, 93, 249, 0, 97, 249, 0, 99, 249, 1, 2, 25, 249,
- 1, 32, 25,
- 247, 2, 33, 250
-};
-static afm_cuint16 afm_Helvetica_highchars_index[] = { /* 220 */
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176,
- 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257,
- 258, 259, 260, 261, 262, 263, 268, 269, 270, 271, 272, 273, 274, 275, 278,
- 279,
- 280, 281, 282, 283, 286, 287, 290, 291, 298, 299, 302, 303, 304, 305, 310,
- 311,
- 313, 314, 315, 316, 317, 318, 321, 322, 323, 324, 325, 326, 327, 328, 332,
- 333,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 350, 351, 352,
- 353,
- 354, 355, 356, 357, 362, 363, 366, 367, 368, 369, 370, 371, 376, 377, 378,
- 379,
- 380, 381, 382, 402, 536, 537, 710, 711, 728, 729, 730, 731, 732, 733,
- 8211, 8212,
- 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8249,
- 8250,
- 8260, 8364, 8482, 8706, 8710, 8721, 8722, 8730, 8800, 8804, 8805, 9674,
- 63171,
- 64257, 64258
-};
-static afm_cunicode afm_Helvetica_ligatures[] = { /* 3 */
- 102, 105, 64257
-};
-
-
-/* ------------------------------------------------------------------*/
-/* FontName: Helvetica-Bold */
-/* FullName: Helvetica Bold */
-/* FamilyName: Helvetica */
-static afm_cuint8 afm_Helvetica_Bold_widths[] = { /* 315 */
- 46, 56, 79, 93, 93, 148, 120, 40, 56, 56, 65, 97, 46, 56, 46, 46, 93, 93,
- 93, 93, 93,
- 93, 93, 93, 93, 93, 56, 56, 97, 97, 97, 102, 163, 120, 120, 120, 120, 111,
- 102, 130,
- 120, 46, 93, 120, 102, 139, 120, 130, 111, 130, 120, 111, 102, 120, 111,
- 157, 111,
- 111, 102, 56, 46, 56, 97, 93, 56, 93, 102, 93, 102, 93, 56, 102, 102, 46,
- 46, 93, 46,
- 148, 102, 102, 102, 102, 65, 93, 56, 102, 93, 130, 93, 93, 83, 65, 47, 65,
- 97, 56,
- 93, 93, 93, 93, 47, 93, 56, 123, 62, 93, 97, 123, 56, 67, 97, 56, 56, 56,
- 102, 93, 46,
- 56, 56, 61, 93, 139, 139, 139, 102, 120, 120, 120, 120, 120, 120, 167,
- 120, 111,
- 111, 111, 111, 46, 46, 46, 46, 120, 120, 130, 130, 130, 130, 130, 97, 130,
- 120, 120,
- 120, 120, 111, 111, 102, 93, 93, 93, 93, 93, 93, 148, 93, 93, 93, 93, 93,
- 46, 46, 46,
- 46, 102, 102, 102, 102, 102, 102, 102, 97, 102, 102, 102, 102, 102, 93,
- 102, 93,
- 120, 93, 120, 93, 120, 93, 120, 93, 120, 93, 120, 124, 120, 102, 111, 93,
- 111, 93,
- 111, 93, 111, 93, 130, 102, 130, 102, 46, 46, 46, 46, 46, 46, 120, 93,
- 102, 46, 102,
- 46, 102, 67, 102, 46, 120, 102, 120, 102, 120, 102, 130, 102, 130, 102,
- 167, 157,
- 120, 65, 120, 65, 120, 65, 111, 93, 111, 93, 111, 93, 102, 56, 102, 65,
- 120, 102,
- 120, 102, 120, 102, 120, 102, 111, 102, 83, 102, 83, 102, 83, 93, 111, 93,
- 56, 56,
- 56, 56, 56, 56, 56, 56, 93, 167, 46, 46, 46, 83, 83, 83, 93, 93, 58, 167,
- 167, 56, 56,
- 28, 93, 167, 82, 102, 100, 97, 92, 92, 92, 92, 82, 42, 102, 102
-};
-static afm_sint16 afm_Helvetica_Bold_kerning_index[] = { /* 315 */
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 51, 54, 0, 0,
- 0, 0, 0, 57, 172, 0, 218, 0, 257, 0, 0, 0, 308, 358, 450, 0, 0, 485, 534,
- 627, 654, 0,
- 716, 874, 902, 1051, 0, 1199, 0, 0, 0, 0, 0, 0, 0, 1338, 1358, 1401, 1427,
- 1444, 1462,
- 1517, 1548, 0, 0, 1556, 1577, 1587, 1617, 1649, 1663, 0, 1671, 1752, 0, 0,
- 1755,
- 1803, 1828, 1851, 1921, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1944, 2059, 2174, 2289, 2404, 2519, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2634, 2683, 2732, 2781, 2830, 0, 2879, 2928, 2956,
- 2984, 3012,
- 3040, 0, 0, 3179, 3199, 3219, 3239, 3259, 3279, 0, 3299, 3325, 3343, 3361,
- 3379,
- 0, 0, 0, 0, 0, 3397, 3429, 3443, 3457, 3471, 3485, 0, 3499, 0, 0, 0, 0,
- 3513, 0, 3583,
- 3653, 3768, 3788, 3903, 3923, 4038, 0, 4058, 0, 4084, 4110, 0, 4149, 4188,
- 0, 4205,
- 0, 4223, 0, 4241, 0, 4259, 0, 4277, 0, 4308, 0, 0, 0, 0, 0, 0, 4339, 4431,
- 4452, 4487,
- 4497, 4532, 0, 0, 4542, 4577, 0, 4587, 0, 4619, 0, 4651, 4683, 4732, 4746,
- 4795,
- 0, 0, 4809, 4871, 4952, 5014, 5095, 5157, 0, 5238, 0, 5241, 0, 5244, 5247,
- 0, 5405,
- 0, 5563, 0, 5591, 0, 5619, 0, 5647, 0, 5675, 0, 5814, 0, 5837, 0, 5860, 0,
- 0, 5883,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5886, 5891, 0, 0, 5942, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-static afm_cuint8 afm_Helvetica_Bold_kerning_data[] = { /* 5945 */
- 42, 11, 85, 240, 87, 244, 88, 244, 90, 237, 222, 237, 0, 100, 240, 0, 102,
- 240, 0,
- 122, 237, 1, 32, 24, 247, 1, 32, 28, 244, 4, 33, 250, 1, 32, 25, 237, 1,
- 32, 29, 237,
- 4, 33, 250, 1, 32, 25, 237, 1, 32, 29, 237, 2, 33, 250, 2, 33, 250, 49,
- 68, 250, 72,
- 249, 80, 250, 82, 250, 85, 242, 86, 249, 87, 244, 88, 247, 90, 239, 118,
- 252, 119,
- 250, 120, 252, 122, 252, 200, 250, 211, 250, 212, 250, 213, 250, 214, 250,
- 215,
- 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249, 222, 239, 250, 252,
- 251,
- 252, 252, 252, 253, 252, 254, 252, 0, 1, 252, 0, 8, 250, 0, 14, 250, 0,
- 32, 249, 0,
- 36, 249, 0, 78, 250, 0, 82, 250, 0, 100, 242, 0, 102, 242, 0, 108, 249, 0,
- 109, 252,
- 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117,
- 252, 0, 122,
- 239, 20, 66, 252, 86, 255, 193, 252, 194, 252, 195, 252, 196, 252, 197,
- 252, 198,
- 252, 218, 255, 219, 255, 220, 255, 221, 255, 0, 2, 252, 0, 4, 252, 0, 6,
- 252, 0, 108,
- 255, 0, 112, 255, 0, 114, 255, 0, 116, 255, 18, 45, 252, 47, 252, 66, 250,
- 87, 250,
- 88, 250, 90, 245, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198,
- 250, 222,
- 245, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0, 122, 245, 23, 45, 240, 47, 240,
- 66, 244, 98,
- 254, 193, 244, 194, 244, 195, 244, 196, 244, 197, 244, 198, 244, 225, 254,
- 226,
- 254, 227, 254, 228, 254, 229, 254, 230, 254, 0, 2, 244, 0, 3, 254, 0, 4,
- 244, 0, 5,
- 254, 0, 6, 244, 0, 7, 254, 22, 45, 254, 47, 254, 66, 254, 118, 254, 193,
- 254, 194,
- 254, 195, 254, 196, 254, 197, 254, 198, 254, 250, 254, 251, 254, 252, 254,
- 253,
- 254, 0, 2, 254, 0, 4, 254, 0, 6, 254, 0, 109, 254, 0, 113, 254, 0, 115,
- 254, 0, 117,
- 254, 40, 80, 252, 102, 254, 112, 251, 118, 252, 122, 250, 211, 252, 212,
- 252, 213,
- 252, 214, 252, 215, 252, 217, 252, 233, 254, 234, 254, 235, 254, 236, 254,
- 243,
- 251, 244, 251, 245, 251, 246, 251, 247, 251, 249, 251, 250, 252, 251, 252,
- 252,
- 252, 253, 252, 254, 250, 0, 1, 250, 0, 21, 254, 0, 25, 254, 0, 27, 254, 0,
- 29, 254,
- 0, 78, 252, 0, 79, 251, 0, 82, 252, 0, 83, 251, 0, 109, 252, 0, 113, 252,
- 0, 115, 252,
- 0, 117, 252, 14, 85, 242, 87, 239, 88, 244, 90, 237, 122, 252, 222, 237,
- 254, 252,
- 0, 1, 252, 0, 100, 242, 0, 102, 242, 0, 122, 237, 1, 32, 25, 234, 1, 32,
- 29, 234, 22,
- 45, 250, 47, 250, 66, 249, 85, 250, 87, 249, 88, 249, 89, 249, 90, 245,
- 193, 249,
- 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 222, 245, 0, 2, 249, 0,
- 4, 249,
- 0, 6, 249, 0, 100, 250, 0, 102, 250, 0, 122, 245, 41, 45, 237, 47, 237,
- 66, 240, 98,
- 252, 102, 252, 112, 250, 193, 240, 194, 240, 195, 240, 196, 240, 197, 240,
- 198,
- 240, 225, 252, 226, 252, 227, 252, 228, 252, 229, 252, 230, 252, 233, 252,
- 234,
- 252, 235, 252, 236, 252, 243, 250, 244, 250, 245, 250, 246, 250, 247, 250,
- 249,
- 250, 0, 2, 240, 0, 3, 252, 0, 4, 240, 0, 5, 252, 0, 6, 240, 0, 7, 252, 0,
- 21, 252, 0, 25,
- 252, 0, 27, 252, 0, 29, 252, 0, 79, 250, 0, 83, 250, 12, 45, 3, 47, 3, 86,
- 255, 218,
- 255, 219, 255, 220, 255, 221, 255, 0, 108, 255, 0, 112, 255, 0, 114, 255,
- 0, 116,
- 255, 27, 80, 254, 85, 254, 86, 254, 87, 249, 88, 250, 90, 249, 211, 254,
- 212, 254,
- 213, 254, 214, 254, 215, 254, 217, 254, 218, 254, 219, 254, 220, 254, 221,
- 254,
- 222, 249, 0, 78, 254, 0, 82, 254, 0, 100, 254, 0, 102, 254, 0, 108, 254,
- 0, 112, 254,
- 0, 114, 254, 0, 116, 254, 0, 122, 249, 69, 45, 244, 46, 237, 47, 244, 59,
- 250, 60,
- 250, 66, 242, 80, 250, 98, 244, 102, 247, 112, 244, 115, 244, 118, 242,
- 120, 247,
- 122, 247, 193, 242, 194, 242, 195, 242, 196, 242, 197, 242, 198, 242, 211,
- 250,
- 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 225, 244, 226, 244, 227,
- 244,
- 228, 244, 229, 244, 230, 244, 233, 247, 234, 247, 235, 247, 236, 247, 243,
- 244,
- 244, 244, 245, 244, 246, 244, 247, 244, 249, 244, 250, 242, 251, 242, 252,
- 242,
- 253, 242, 254, 247, 0, 1, 247, 0, 2, 242, 0, 3, 244, 0, 4, 242, 0, 5, 244,
- 0, 6, 242,
- 0, 7, 244, 0, 21, 247, 0, 25, 247, 0, 27, 247, 0, 29, 247, 0, 78, 250, 0,
- 79, 244, 0,
- 82, 250, 0, 83, 244, 0, 87, 244, 0, 89, 244, 0, 109, 242, 0, 113, 242, 0,
- 115, 242,
- 0, 117, 242, 13, 45, 252, 47, 252, 66, 249, 193, 249, 194, 249, 195, 249,
- 196, 249,
- 197, 249, 198, 249, 0, 2, 249, 0, 4, 249, 0, 6, 249, 65, 45, 237, 46, 244,
- 47, 237,
- 59, 250, 60, 250, 66, 244, 72, 249, 80, 249, 98, 247, 102, 249, 112, 242,
- 118, 247,
- 193, 244, 194, 244, 195, 244, 196, 244, 197, 244, 198, 244, 211, 249, 212,
- 249,
- 213, 249, 214, 249, 215, 249, 217, 249, 225, 247, 226, 247, 227, 247, 228,
- 247,
- 229, 247, 230, 247, 233, 249, 234, 249, 235, 249, 236, 249, 243, 242, 244,
- 242,
- 245, 242, 246, 242, 247, 242, 249, 242, 250, 247, 251, 247, 252, 247, 253,
- 247,
- 0, 2, 244, 0, 3, 247, 0, 4, 244, 0, 5, 247, 0, 6, 244, 0, 7, 247, 0, 21,
- 249, 0, 25, 249,
- 0, 27, 249, 0, 29, 249, 0, 32, 249, 0, 36, 249, 0, 78, 249, 0, 79, 242, 0,
- 82, 249, 0,
- 83, 242, 0, 109, 247, 0, 113, 247, 0, 115, 247, 0, 117, 247, 65, 45, 244,
- 46, 250,
- 47, 244, 59, 255, 60, 255, 66, 247, 80, 254, 98, 250, 102, 251, 112, 247,
- 118, 249,
- 122, 254, 193, 247, 194, 247, 195, 247, 196, 247, 197, 247, 198, 247, 211,
- 254,
- 212, 254, 213, 254, 214, 254, 215, 254, 217, 254, 225, 250, 226, 250, 227,
- 250,
- 228, 250, 229, 250, 230, 250, 233, 251, 234, 251, 235, 251, 236, 251, 243,
- 247,
- 244, 247, 245, 247, 246, 247, 247, 247, 249, 247, 250, 249, 251, 249, 252,
- 249,
- 253, 249, 254, 254, 0, 1, 254, 0, 2, 247, 0, 3, 250, 0, 4, 247, 0, 5, 250,
- 0, 6, 247,
- 0, 7, 250, 0, 21, 251, 0, 25, 251, 0, 27, 251, 0, 29, 251, 0, 78, 254, 0,
- 79, 247, 0,
- 82, 254, 0, 83, 247, 0, 109, 249, 0, 113, 249, 0, 115, 249, 0, 117, 249,
- 61, 45, 240,
- 47, 240, 59, 249, 60, 249, 66, 239, 80, 245, 98, 242, 102, 244, 112, 240,
- 118, 240,
- 193, 239, 194, 239, 195, 239, 196, 239, 197, 239, 198, 239, 211, 245, 212,
- 245,
- 213, 245, 214, 245, 215, 245, 217, 245, 225, 242, 226, 242, 227, 242, 228,
- 242,
- 229, 242, 230, 242, 233, 244, 234, 244, 235, 244, 236, 244, 243, 240, 244,
- 240,
- 245, 240, 246, 240, 247, 240, 249, 240, 250, 240, 251, 240, 252, 240, 253,
- 240,
- 0, 2, 239, 0, 3, 242, 0, 4, 239, 0, 5, 242, 0, 6, 239, 0, 7, 242, 0, 21,
- 244, 0, 25, 244,
- 0, 27, 244, 0, 29, 244, 0, 78, 245, 0, 79, 240, 0, 82, 245, 0, 83, 240, 0,
- 109, 240,
- 0, 113, 240, 0, 115, 240, 0, 117, 240, 9, 104, 255, 119, 254, 120, 254,
- 122, 254,
- 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 18, 109, 255, 118, 254, 119,
- 254, 122,
- 254, 250, 254, 251, 254, 252, 254, 253, 254, 254, 254, 0, 1, 254, 0, 60,
- 255, 0, 62,
- 255, 0, 68, 255, 0, 109, 254, 0, 113, 254, 0, 115, 254, 0, 117, 254, 11,
- 105, 255,
- 108, 254, 109, 254, 122, 255, 254, 255, 0, 1, 255, 0, 57, 254, 0, 60, 254,
- 0, 62, 254,
- 0, 68, 254, 8, 101, 255, 119, 254, 120, 254, 122, 254, 254, 254, 0, 1,
- 254, 0, 19,
- 255, 9, 45, 2, 47, 3, 119, 254, 120, 254, 121, 254, 122, 254, 254, 254, 0,
- 1, 254,
- 23, 45, 255, 47, 255, 102, 255, 112, 254, 233, 255, 234, 255, 235, 255,
- 236, 255,
- 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254, 0, 21, 255, 0,
- 25, 255,
- 0, 27, 255, 0, 29, 255, 0, 79, 254, 0, 83, 254, 1, 32, 25, 5, 1, 32, 29,
- 5, 13, 102, 2,
- 104, 255, 233, 2, 234, 2, 235, 2, 236, 2, 0, 21, 2, 0, 25, 2, 0, 27, 2, 0,
- 29, 2, 0, 33,
- 255, 0, 37, 255, 4, 122, 254, 254, 254, 0, 1, 254, 10, 112, 254, 243, 254,
- 244, 254,
- 245, 254, 246, 254, 247, 254, 249, 254, 0, 79, 254, 0, 83, 254, 5, 120,
- 254, 122,
- 254, 254, 254, 0, 1, 254, 13, 118, 254, 122, 252, 250, 254, 251, 254, 252,
- 254, 253,
- 254, 254, 252, 0, 1, 252, 0, 109, 254, 0, 113, 254, 0, 115, 254, 0, 117,
- 254, 14, 118,
- 255, 119, 250, 122, 254, 250, 255, 251, 255, 252, 255, 253, 255, 254, 254,
- 0, 1,
- 254, 0, 109, 255, 0, 113, 255, 0, 115, 255, 0, 117, 255, 7, 119, 254, 120,
- 254, 121,
- 252, 122, 254, 254, 254, 0, 1, 254, 4, 122, 254, 254, 254, 0, 1, 254, 34,
- 45, 247,
- 46, 254, 47, 247, 100, 254, 101, 254, 104, 254, 112, 254, 114, 254, 116,
- 254, 117,
- 3, 119, 2, 122, 2, 232, 254, 243, 254, 244, 254, 245, 254, 246, 254, 247,
- 254, 249,
- 254, 254, 2, 0, 1, 2, 0, 9, 254, 0, 15, 254, 0, 19, 254, 0, 33, 254, 0,
- 37, 254, 0, 79,
- 254, 0, 83, 254, 0, 93, 254, 0, 97, 254, 0, 99, 254, 0, 101, 3, 1, 2, 25,
- 254, 2, 120,
- 254, 22, 45, 244, 47, 244, 98, 254, 112, 252, 225, 254, 226, 254, 227,
- 254, 228,
- 254, 229, 254, 230, 254, 243, 252, 244, 252, 245, 252, 246, 252, 247, 252,
- 249,
- 252, 0, 3, 254, 0, 5, 254, 0, 7, 254, 0, 79, 252, 0, 83, 252, 12, 45, 250,
- 47, 250, 112,
- 254, 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254, 0, 79,
- 254, 0, 83,
- 254, 10, 102, 255, 233, 255, 234, 255, 235, 255, 236, 255, 0, 21, 255, 0,
- 25, 255,
- 0, 27, 255, 0, 29, 255, 31, 45, 244, 47, 244, 98, 252, 102, 255, 112, 253,
- 225, 252,
- 226, 252, 227, 252, 228, 252, 229, 252, 230, 252, 233, 255, 234, 255, 235,
- 255,
- 236, 255, 243, 253, 244, 253, 245, 253, 246, 253, 247, 253, 249, 253, 0,
- 3, 252,
- 0, 5, 252, 0, 7, 252, 0, 21, 255, 0, 25, 255, 0, 27, 255, 0, 29, 255, 0,
- 79, 253, 0, 83,
- 253, 10, 102, 2, 233, 2, 234, 2, 235, 2, 236, 2, 0, 21, 2, 0, 25, 2, 0,
- 27, 2, 0, 29, 2,
- 49, 68, 250, 72, 249, 80, 250, 82, 250, 85, 242, 86, 249, 87, 244, 88,
- 247, 90, 239,
- 118, 252, 119, 250, 120, 252, 122, 252, 200, 250, 211, 250, 212, 250, 213,
- 250,
- 214, 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249, 222,
- 239,
- 250, 252, 251, 252, 252, 252, 253, 252, 254, 252, 0, 1, 252, 0, 8, 250, 0,
- 14, 250,
- 0, 32, 249, 0, 36, 249, 0, 78, 250, 0, 82, 250, 0, 100, 242, 0, 102, 242,
- 0, 108, 249,
- 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116,
- 249, 0, 117,
- 252, 0, 122, 239, 49, 68, 250, 72, 249, 80, 250, 82, 250, 85, 242, 86,
- 249, 87, 244,
- 88, 247, 90, 239, 118, 252, 119, 250, 120, 252, 122, 252, 200, 250, 211,
- 250, 212,
- 250, 213, 250, 214, 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249,
- 221,
- 249, 222, 239, 250, 252, 251, 252, 252, 252, 253, 252, 254, 252, 0, 1,
- 252, 0, 8,
- 250, 0, 14, 250, 0, 32, 249, 0, 36, 249, 0, 78, 250, 0, 82, 250, 0, 100,
- 242, 0, 102,
- 242, 0, 108, 249, 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0,
- 115, 252,
- 0, 116, 249, 0, 117, 252, 0, 122, 239, 49, 68, 250, 72, 249, 80, 250, 82,
- 250, 85,
- 242, 86, 249, 87, 244, 88, 247, 90, 239, 118, 252, 119, 250, 120, 252,
- 122, 252,
- 200, 250, 211, 250, 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 218,
- 249,
- 219, 249, 220, 249, 221, 249, 222, 239, 250, 252, 251, 252, 252, 252, 253,
- 252,
- 254, 252, 0, 1, 252, 0, 8, 250, 0, 14, 250, 0, 32, 249, 0, 36, 249, 0, 78,
- 250, 0, 82,
- 250, 0, 100, 242, 0, 102, 242, 0, 108, 249, 0, 109, 252, 0, 112, 249, 0,
- 113, 252,
- 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0, 122, 239, 49, 68,
- 250, 72, 249,
- 80, 250, 82, 250, 85, 242, 86, 249, 87, 244, 88, 247, 90, 239, 118, 252,
- 119, 250,
- 120, 252, 122, 252, 200, 250, 211, 250, 212, 250, 213, 250, 214, 250, 215,
- 250,
- 217, 250, 218, 249, 219, 249, 220, 249, 221, 249, 222, 239, 250, 252, 251,
- 252,
- 252, 252, 253, 252, 254, 252, 0, 1, 252, 0, 8, 250, 0, 14, 250, 0, 32,
- 249, 0, 36, 249,
- 0, 78, 250, 0, 82, 250, 0, 100, 242, 0, 102, 242, 0, 108, 249, 0, 109,
- 252, 0, 112,
- 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0,
- 122, 239,
- 49, 68, 250, 72, 249, 80, 250, 82, 250, 85, 242, 86, 249, 87, 244, 88,
- 247, 90, 239,
- 118, 252, 119, 250, 120, 252, 122, 252, 200, 250, 211, 250, 212, 250, 213,
- 250,
- 214, 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249, 222,
- 239,
- 250, 252, 251, 252, 252, 252, 253, 252, 254, 252, 0, 1, 252, 0, 8, 250, 0,
- 14, 250,
- 0, 32, 249, 0, 36, 249, 0, 78, 250, 0, 82, 250, 0, 100, 242, 0, 102, 242,
- 0, 108, 249,
- 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116,
- 249, 0, 117,
- 252, 0, 122, 239, 49, 68, 250, 72, 249, 80, 250, 82, 250, 85, 242, 86,
- 249, 87, 244,
- 88, 247, 90, 239, 118, 252, 119, 250, 120, 252, 122, 252, 200, 250, 211,
- 250, 212,
- 250, 213, 250, 214, 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249,
- 221,
- 249, 222, 239, 250, 252, 251, 252, 252, 252, 253, 252, 254, 252, 0, 1,
- 252, 0, 8,
- 250, 0, 14, 250, 0, 32, 249, 0, 36, 249, 0, 78, 250, 0, 82, 250, 0, 100,
- 242, 0, 102,
- 242, 0, 108, 249, 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0,
- 115, 252,
- 0, 116, 249, 0, 117, 252, 0, 122, 239, 22, 45, 250, 47, 250, 66, 249, 85,
- 250, 87,
- 249, 88, 249, 89, 249, 90, 245, 193, 249, 194, 249, 195, 249, 196, 249,
- 197, 249,
- 198, 249, 222, 245, 0, 2, 249, 0, 4, 249, 0, 6, 249, 0, 100, 250, 0, 102,
- 250, 0, 122,
- 245, 22, 45, 250, 47, 250, 66, 249, 85, 250, 87, 249, 88, 249, 89, 249,
- 90, 245, 193,
- 249, 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 222, 245, 0, 2,
- 249, 0, 4,
- 249, 0, 6, 249, 0, 100, 250, 0, 102, 250, 0, 122, 245, 22, 45, 250, 47,
- 250, 66, 249,
- 85, 250, 87, 249, 88, 249, 89, 249, 90, 245, 193, 249, 194, 249, 195, 249,
- 196, 249,
- 197, 249, 198, 249, 222, 245, 0, 2, 249, 0, 4, 249, 0, 6, 249, 0, 100,
- 250, 0, 102,
- 250, 0, 122, 245, 22, 45, 250, 47, 250, 66, 249, 85, 250, 87, 249, 88,
- 249, 89, 249,
- 90, 245, 193, 249, 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 222,
- 245, 0,
- 2, 249, 0, 4, 249, 0, 6, 249, 0, 100, 250, 0, 102, 250, 0, 122, 245, 22,
- 45, 250, 47,
- 250, 66, 249, 85, 250, 87, 249, 88, 249, 89, 249, 90, 245, 193, 249, 194,
- 249, 195,
- 249, 196, 249, 197, 249, 198, 249, 222, 245, 0, 2, 249, 0, 4, 249, 0, 6,
- 249, 0, 100,
- 250, 0, 102, 250, 0, 122, 245, 22, 45, 250, 47, 250, 66, 249, 85, 250, 87,
- 249, 88,
- 249, 89, 249, 90, 245, 193, 249, 194, 249, 195, 249, 196, 249, 197, 249,
- 198, 249,
- 222, 245, 0, 2, 249, 0, 4, 249, 0, 6, 249, 0, 100, 250, 0, 102, 250, 0,
- 122, 245, 13,
- 45, 252, 47, 252, 66, 249, 193, 249, 194, 249, 195, 249, 196, 249, 197,
- 249, 198,
- 249, 0, 2, 249, 0, 4, 249, 0, 6, 249, 13, 45, 252, 47, 252, 66, 249, 193,
- 249, 194,
- 249, 195, 249, 196, 249, 197, 249, 198, 249, 0, 2, 249, 0, 4, 249, 0, 6,
- 249, 13, 45,
- 252, 47, 252, 66, 249, 193, 249, 194, 249, 195, 249, 196, 249, 197, 249,
- 198, 249,
- 0, 2, 249, 0, 4, 249, 0, 6, 249, 13, 45, 252, 47, 252, 66, 249, 193, 249,
- 194, 249,
- 195, 249, 196, 249, 197, 249, 198, 249, 0, 2, 249, 0, 4, 249, 0, 6, 249,
- 61, 45, 240,
- 47, 240, 59, 249, 60, 249, 66, 239, 80, 245, 98, 242, 102, 244, 112, 240,
- 118, 240,
- 193, 239, 194, 239, 195, 239, 196, 239, 197, 239, 198, 239, 211, 245, 212,
- 245,
- 213, 245, 214, 245, 215, 245, 217, 245, 225, 242, 226, 242, 227, 242, 228,
- 242,
- 229, 242, 230, 242, 233, 244, 234, 244, 235, 244, 236, 244, 243, 240, 244,
- 240,
- 245, 240, 246, 240, 247, 240, 249, 240, 250, 240, 251, 240, 252, 240, 253,
- 240,
- 0, 2, 239, 0, 3, 242, 0, 4, 239, 0, 5, 242, 0, 6, 239, 0, 7, 242, 0, 21,
- 244, 0, 25, 244,
- 0, 27, 244, 0, 29, 244, 0, 78, 245, 0, 79, 240, 0, 82, 245, 0, 83, 240, 0,
- 109, 240,
- 0, 113, 240, 0, 115, 240, 0, 117, 240, 9, 104, 255, 119, 254, 120, 254,
- 122, 254,
- 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 9, 104, 255, 119, 254, 120,
- 254, 122,
- 254, 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 9, 104, 255, 119, 254,
- 120, 254,
- 122, 254, 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 9, 104, 255, 119,
- 254, 120,
- 254, 122, 254, 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 9, 104, 255,
- 119, 254,
- 120, 254, 122, 254, 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 9, 104,
- 255, 119,
- 254, 120, 254, 122, 254, 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 11,
- 105, 255,
- 108, 254, 109, 254, 122, 255, 254, 255, 0, 1, 255, 0, 57, 254, 0, 60, 254,
- 0, 62, 254,
- 0, 68, 254, 9, 45, 2, 47, 3, 119, 254, 120, 254, 121, 254, 122, 254, 254,
- 254, 0, 1,
- 254, 9, 45, 2, 47, 3, 119, 254, 120, 254, 121, 254, 122, 254, 254, 254, 0,
- 1, 254,
- 9, 45, 2, 47, 3, 119, 254, 120, 254, 121, 254, 122, 254, 254, 254, 0, 1,
- 254, 9, 45,
- 2, 47, 3, 119, 254, 120, 254, 121, 254, 122, 254, 254, 254, 0, 1, 254, 14,
- 118, 255,
- 119, 250, 122, 254, 250, 255, 251, 255, 252, 255, 253, 255, 254, 254, 0,
- 1, 254,
- 0, 109, 255, 0, 113, 255, 0, 115, 255, 0, 117, 255, 7, 119, 254, 120, 254,
- 121, 252,
- 122, 254, 254, 254, 0, 1, 254, 7, 119, 254, 120, 254, 121, 252, 122, 254,
- 254, 254,
- 0, 1, 254, 7, 119, 254, 120, 254, 121, 252, 122, 254, 254, 254, 0, 1, 254,
- 7, 119,
- 254, 120, 254, 121, 252, 122, 254, 254, 254, 0, 1, 254, 7, 119, 254, 120,
- 254, 121,
- 252, 122, 254, 254, 254, 0, 1, 254, 7, 119, 254, 120, 254, 121, 252, 122,
- 254, 254,
- 254, 0, 1, 254, 31, 45, 244, 47, 244, 98, 252, 102, 255, 112, 253, 225,
- 252, 226,
- 252, 227, 252, 228, 252, 229, 252, 230, 252, 233, 255, 234, 255, 235, 255,
- 236,
- 255, 243, 253, 244, 253, 245, 253, 246, 253, 247, 253, 249, 253, 0, 3,
- 252, 0, 5,
- 252, 0, 7, 252, 0, 21, 255, 0, 25, 255, 0, 27, 255, 0, 29, 255, 0, 79,
- 253, 0, 83, 253,
- 31, 45, 244, 47, 244, 98, 252, 102, 255, 112, 253, 225, 252, 226, 252,
- 227, 252,
- 228, 252, 229, 252, 230, 252, 233, 255, 234, 255, 235, 255, 236, 255, 243,
- 253,
- 244, 253, 245, 253, 246, 253, 247, 253, 249, 253, 0, 3, 252, 0, 5, 252, 0,
- 7, 252,
- 0, 21, 255, 0, 25, 255, 0, 27, 255, 0, 29, 255, 0, 79, 253, 0, 83, 253,
- 49, 68, 250,
- 72, 249, 80, 250, 82, 250, 85, 242, 86, 249, 87, 244, 88, 247, 90, 239,
- 118, 252,
- 119, 250, 120, 252, 122, 252, 200, 250, 211, 250, 212, 250, 213, 250, 214,
- 250,
- 215, 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249, 222, 239, 250,
- 252,
- 251, 252, 252, 252, 253, 252, 254, 252, 0, 1, 252, 0, 8, 250, 0, 14, 250,
- 0, 32, 249,
- 0, 36, 249, 0, 78, 250, 0, 82, 250, 0, 100, 242, 0, 102, 242, 0, 108, 249,
- 0, 109, 252,
- 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117,
- 252, 0, 122,
- 239, 9, 104, 255, 119, 254, 120, 254, 122, 254, 254, 254, 0, 1, 254, 0,
- 33, 255, 0,
- 37, 255, 49, 68, 250, 72, 249, 80, 250, 82, 250, 85, 242, 86, 249, 87,
- 244, 88, 247,
- 90, 239, 118, 252, 119, 250, 120, 252, 122, 252, 200, 250, 211, 250, 212,
- 250, 213,
- 250, 214, 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249,
- 222,
- 239, 250, 252, 251, 252, 252, 252, 253, 252, 254, 252, 0, 1, 252, 0, 8,
- 250, 0, 14,
- 250, 0, 32, 249, 0, 36, 249, 0, 78, 250, 0, 82, 250, 0, 100, 242, 0, 102,
- 242, 0, 108,
- 249, 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0,
- 116, 249,
- 0, 117, 252, 0, 122, 239, 9, 104, 255, 119, 254, 120, 254, 122, 254, 254,
- 254, 0,
- 1, 254, 0, 33, 255, 0, 37, 255, 49, 68, 250, 72, 249, 80, 250, 82, 250,
- 85, 242, 86,
- 249, 87, 244, 88, 247, 90, 239, 118, 252, 119, 250, 120, 252, 122, 252,
- 200, 250,
- 211, 250, 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 218, 249, 219,
- 249,
- 220, 249, 221, 249, 222, 239, 250, 252, 251, 252, 252, 252, 253, 252, 254,
- 252,
- 0, 1, 252, 0, 8, 250, 0, 14, 250, 0, 32, 249, 0, 36, 249, 0, 78, 250, 0,
- 82, 250, 0, 100,
- 242, 0, 102, 242, 0, 108, 249, 0, 109, 252, 0, 112, 249, 0, 113, 252, 0,
- 114, 249,
- 0, 115, 252, 0, 116, 249, 0, 117, 252, 0, 122, 239, 9, 104, 255, 119, 254,
- 120, 254,
- 122, 254, 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 11, 105, 255, 108,
- 254, 109,
- 254, 122, 255, 254, 255, 0, 1, 255, 0, 57, 254, 0, 60, 254, 0, 62, 254, 0,
- 68, 254,
- 11, 105, 255, 108, 254, 109, 254, 122, 255, 254, 255, 0, 1, 255, 0, 57,
- 254, 0, 60,
- 254, 0, 62, 254, 0, 68, 254, 18, 45, 252, 47, 252, 66, 250, 87, 250, 88,
- 250, 90, 245,
- 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 222, 245, 0,
- 2, 250,
- 0, 4, 250, 0, 6, 250, 0, 122, 245, 18, 45, 252, 47, 252, 66, 250, 87, 250,
- 88, 250,
- 90, 245, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 222,
- 245, 0,
- 2, 250, 0, 4, 250, 0, 6, 250, 0, 122, 245, 8, 101, 255, 119, 254, 120,
- 254, 122, 254,
- 254, 254, 0, 1, 254, 0, 19, 255, 9, 45, 2, 47, 3, 119, 254, 120, 254, 121,
- 254, 122,
- 254, 254, 254, 0, 1, 254, 9, 45, 2, 47, 3, 119, 254, 120, 254, 121, 254,
- 122, 254,
- 254, 254, 0, 1, 254, 9, 45, 2, 47, 3, 119, 254, 120, 254, 121, 254, 122,
- 254, 254,
- 254, 0, 1, 254, 9, 45, 2, 47, 3, 119, 254, 120, 254, 121, 254, 122, 254,
- 254, 254,
- 0, 1, 254, 13, 102, 2, 104, 255, 233, 2, 234, 2, 235, 2, 236, 2, 0, 21, 2,
- 0, 25, 2, 0,
- 27, 2, 0, 29, 2, 0, 33, 255, 0, 37, 255, 13, 102, 2, 104, 255, 233, 2,
- 234, 2, 235, 2,
- 236, 2, 0, 21, 2, 0, 25, 2, 0, 27, 2, 0, 29, 2, 0, 33, 255, 0, 37, 255,
- 40, 80, 252, 102,
- 254, 112, 251, 118, 252, 122, 250, 211, 252, 212, 252, 213, 252, 214, 252,
- 215,
- 252, 217, 252, 233, 254, 234, 254, 235, 254, 236, 254, 243, 251, 244, 251,
- 245,
- 251, 246, 251, 247, 251, 249, 251, 250, 252, 251, 252, 252, 252, 253, 252,
- 254,
- 250, 0, 1, 250, 0, 21, 254, 0, 25, 254, 0, 27, 254, 0, 29, 254, 0, 78,
- 252, 0, 79, 251,
- 0, 82, 252, 0, 83, 251, 0, 109, 252, 0, 113, 252, 0, 115, 252, 0, 117,
- 252, 10, 112,
- 254, 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254, 0, 79,
- 254, 0, 83,
- 254, 14, 85, 242, 87, 239, 88, 244, 90, 237, 122, 252, 222, 237, 254, 252,
- 0, 1, 252,
- 0, 100, 242, 0, 102, 242, 0, 122, 237, 1, 32, 25, 234, 1, 32, 29, 234, 5,
- 120, 254,
- 122, 254, 254, 254, 0, 1, 254, 14, 85, 242, 87, 239, 88, 244, 90, 237,
- 122, 252, 222,
- 237, 254, 252, 0, 1, 252, 0, 100, 242, 0, 102, 242, 0, 122, 237, 1, 32,
- 25, 234, 1,
- 32, 29, 234, 5, 120, 254, 122, 254, 254, 254, 0, 1, 254, 14, 85, 242, 87,
- 239, 88,
- 244, 90, 237, 122, 252, 222, 237, 254, 252, 0, 1, 252, 0, 100, 242, 0,
- 102, 242, 0,
- 122, 237, 1, 32, 25, 234, 1, 32, 29, 234, 5, 120, 254, 122, 254, 254, 254,
- 0, 1, 254,
- 14, 118, 255, 119, 250, 122, 254, 250, 255, 251, 255, 252, 255, 253, 255,
- 254, 254,
- 0, 1, 254, 0, 109, 255, 0, 113, 255, 0, 115, 255, 0, 117, 255, 14, 118,
- 255, 119, 250,
- 122, 254, 250, 255, 251, 255, 252, 255, 253, 255, 254, 254, 0, 1, 254, 0,
- 109, 255,
- 0, 113, 255, 0, 115, 255, 0, 117, 255, 14, 118, 255, 119, 250, 122, 254,
- 250, 255,
- 251, 255, 252, 255, 253, 255, 254, 254, 0, 1, 254, 0, 109, 255, 0, 113,
- 255, 0, 115,
- 255, 0, 117, 255, 22, 45, 250, 47, 250, 66, 249, 85, 250, 87, 249, 88,
- 249, 89, 249,
- 90, 245, 193, 249, 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 222,
- 245, 0,
- 2, 249, 0, 4, 249, 0, 6, 249, 0, 100, 250, 0, 102, 250, 0, 122, 245, 7,
- 119, 254, 120,
- 254, 121, 252, 122, 254, 254, 254, 0, 1, 254, 22, 45, 250, 47, 250, 66,
- 249, 85, 250,
- 87, 249, 88, 249, 89, 249, 90, 245, 193, 249, 194, 249, 195, 249, 196,
- 249, 197,
- 249, 198, 249, 222, 245, 0, 2, 249, 0, 4, 249, 0, 6, 249, 0, 100, 250, 0,
- 102, 250,
- 0, 122, 245, 7, 119, 254, 120, 254, 121, 252, 122, 254, 254, 254, 0, 1,
- 254, 27, 80,
- 254, 85, 254, 86, 254, 87, 249, 88, 250, 90, 249, 211, 254, 212, 254, 213,
- 254, 214,
- 254, 215, 254, 217, 254, 218, 254, 219, 254, 220, 254, 221, 254, 222, 249,
- 0, 78,
- 254, 0, 82, 254, 0, 100, 254, 0, 102, 254, 0, 108, 254, 0, 112, 254, 0,
- 114, 254, 0,
- 116, 254, 0, 122, 249, 34, 45, 247, 46, 254, 47, 247, 100, 254, 101, 254,
- 104, 254,
- 112, 254, 114, 254, 116, 254, 117, 3, 119, 2, 122, 2, 232, 254, 243, 254,
- 244, 254,
- 245, 254, 246, 254, 247, 254, 249, 254, 254, 2, 0, 1, 2, 0, 9, 254, 0, 15,
- 254, 0, 19,
- 254, 0, 33, 254, 0, 37, 254, 0, 79, 254, 0, 83, 254, 0, 93, 254, 0, 97,
- 254, 0, 99, 254,
- 0, 101, 3, 1, 2, 25, 254, 27, 80, 254, 85, 254, 86, 254, 87, 249, 88, 250,
- 90, 249,
- 211, 254, 212, 254, 213, 254, 214, 254, 215, 254, 217, 254, 218, 254, 219,
- 254,
- 220, 254, 221, 254, 222, 249, 0, 78, 254, 0, 82, 254, 0, 100, 254, 0, 102,
- 254, 0,
- 108, 254, 0, 112, 254, 0, 114, 254, 0, 116, 254, 0, 122, 249, 34, 45, 247,
- 46, 254,
- 47, 247, 100, 254, 101, 254, 104, 254, 112, 254, 114, 254, 116, 254, 117,
- 3, 119,
- 2, 122, 2, 232, 254, 243, 254, 244, 254, 245, 254, 246, 254, 247, 254,
- 249, 254,
- 254, 2, 0, 1, 2, 0, 9, 254, 0, 15, 254, 0, 19, 254, 0, 33, 254, 0, 37,
- 254, 0, 79, 254,
- 0, 83, 254, 0, 93, 254, 0, 97, 254, 0, 99, 254, 0, 101, 3, 1, 2, 25, 254,
- 27, 80, 254,
- 85, 254, 86, 254, 87, 249, 88, 250, 90, 249, 211, 254, 212, 254, 213, 254,
- 214, 254,
- 215, 254, 217, 254, 218, 254, 219, 254, 220, 254, 221, 254, 222, 249, 0,
- 78, 254,
- 0, 82, 254, 0, 100, 254, 0, 102, 254, 0, 108, 254, 0, 112, 254, 0, 114,
- 254, 0, 116,
- 254, 0, 122, 249, 34, 45, 247, 46, 254, 47, 247, 100, 254, 101, 254, 104,
- 254, 112,
- 254, 114, 254, 116, 254, 117, 3, 119, 2, 122, 2, 232, 254, 243, 254, 244,
- 254, 245,
- 254, 246, 254, 247, 254, 249, 254, 254, 2, 0, 1, 2, 0, 9, 254, 0, 15, 254,
- 0, 19, 254,
- 0, 33, 254, 0, 37, 254, 0, 79, 254, 0, 83, 254, 0, 93, 254, 0, 97, 254, 0,
- 99, 254, 0,
- 101, 3, 1, 2, 25, 254, 2, 120, 254, 2, 120, 254, 2, 120, 254, 69, 45, 244,
- 46, 237,
- 47, 244, 59, 250, 60, 250, 66, 242, 80, 250, 98, 244, 102, 247, 112, 244,
- 115, 244,
- 118, 242, 120, 247, 122, 247, 193, 242, 194, 242, 195, 242, 196, 242, 197,
- 242,
- 198, 242, 211, 250, 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 225,
- 244,
- 226, 244, 227, 244, 228, 244, 229, 244, 230, 244, 233, 247, 234, 247, 235,
- 247,
- 236, 247, 243, 244, 244, 244, 245, 244, 246, 244, 247, 244, 249, 244, 250,
- 242,
- 251, 242, 252, 242, 253, 242, 254, 247, 0, 1, 247, 0, 2, 242, 0, 3, 244,
- 0, 4, 242,
- 0, 5, 244, 0, 6, 242, 0, 7, 244, 0, 21, 247, 0, 25, 247, 0, 27, 247, 0,
- 29, 247, 0, 78,
- 250, 0, 79, 244, 0, 82, 250, 0, 83, 244, 0, 87, 244, 0, 89, 244, 0, 109,
- 242, 0, 113,
- 242, 0, 115, 242, 0, 117, 242, 69, 45, 244, 46, 237, 47, 244, 59, 250, 60,
- 250, 66,
- 242, 80, 250, 98, 244, 102, 247, 112, 244, 115, 244, 118, 242, 120, 247,
- 122, 247,
- 193, 242, 194, 242, 195, 242, 196, 242, 197, 242, 198, 242, 211, 250, 212,
- 250,
- 213, 250, 214, 250, 215, 250, 217, 250, 225, 244, 226, 244, 227, 244, 228,
- 244,
- 229, 244, 230, 244, 233, 247, 234, 247, 235, 247, 236, 247, 243, 244, 244,
- 244,
- 245, 244, 246, 244, 247, 244, 249, 244, 250, 242, 251, 242, 252, 242, 253,
- 242,
- 254, 247, 0, 1, 247, 0, 2, 242, 0, 3, 244, 0, 4, 242, 0, 5, 244, 0, 6,
- 242, 0, 7, 244,
- 0, 21, 247, 0, 25, 247, 0, 27, 247, 0, 29, 247, 0, 78, 250, 0, 79, 244, 0,
- 82, 250, 0,
- 83, 244, 0, 87, 244, 0, 89, 244, 0, 109, 242, 0, 113, 242, 0, 115, 242, 0,
- 117, 242,
- 13, 45, 252, 47, 252, 66, 249, 193, 249, 194, 249, 195, 249, 196, 249,
- 197, 249,
- 198, 249, 0, 2, 249, 0, 4, 249, 0, 6, 249, 13, 45, 252, 47, 252, 66, 249,
- 193, 249,
- 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 0, 2, 249, 0, 4, 249, 0,
- 6, 249,
- 13, 45, 252, 47, 252, 66, 249, 193, 249, 194, 249, 195, 249, 196, 249,
- 197, 249,
- 198, 249, 0, 2, 249, 0, 4, 249, 0, 6, 249, 13, 45, 252, 47, 252, 66, 249,
- 193, 249,
- 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 0, 2, 249, 0, 4, 249, 0,
- 6, 249,
- 61, 45, 240, 47, 240, 59, 249, 60, 249, 66, 239, 80, 245, 98, 242, 102,
- 244, 112,
- 240, 118, 240, 193, 239, 194, 239, 195, 239, 196, 239, 197, 239, 198, 239,
- 211,
- 245, 212, 245, 213, 245, 214, 245, 215, 245, 217, 245, 225, 242, 226, 242,
- 227,
- 242, 228, 242, 229, 242, 230, 242, 233, 244, 234, 244, 235, 244, 236, 244,
- 243,
- 240, 244, 240, 245, 240, 246, 240, 247, 240, 249, 240, 250, 240, 251, 240,
- 252,
- 240, 253, 240, 0, 2, 239, 0, 3, 242, 0, 4, 239, 0, 5, 242, 0, 6, 239, 0,
- 7, 242, 0, 21,
- 244, 0, 25, 244, 0, 27, 244, 0, 29, 244, 0, 78, 245, 0, 79, 240, 0, 82,
- 245, 0, 83, 240,
- 0, 109, 240, 0, 113, 240, 0, 115, 240, 0, 117, 240, 10, 102, 2, 233, 2,
- 234, 2, 235,
- 2, 236, 2, 0, 21, 2, 0, 25, 2, 0, 27, 2, 0, 29, 2, 10, 102, 2, 233, 2,
- 234, 2, 235, 2, 236,
- 2, 0, 21, 2, 0, 25, 2, 0, 27, 2, 0, 29, 2, 10, 102, 2, 233, 2, 234, 2,
- 235, 2, 236, 2, 0,
- 21, 2, 0, 25, 2, 0, 27, 2, 0, 29, 2, 2, 120, 254, 2, 1, 32, 24, 249, 19,
- 33, 244, 101,
- 244, 109, 254, 115, 250, 116, 247, 119, 254, 0, 19, 244, 0, 60, 254, 0,
- 62, 254, 0,
- 68, 254, 0, 87, 250, 0, 89, 250, 0, 91, 250, 0, 93, 247, 0, 97, 247, 0,
- 99, 247, 1, 2,
- 25, 247, 1, 32, 25, 249, 2, 33, 244
-};
-static afm_cuint16 afm_Helvetica_Bold_highchars_index[] = { /* 220 */
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176,
- 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257,
- 258, 259, 260, 261, 262, 263, 268, 269, 270, 271, 272, 273, 274, 275, 278,
- 279,
- 280, 281, 282, 283, 286, 287, 290, 291, 298, 299, 302, 303, 304, 305, 310,
- 311,
- 313, 314, 315, 316, 317, 318, 321, 322, 323, 324, 325, 326, 327, 328, 332,
- 333,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 350, 351, 352,
- 353,
- 354, 355, 356, 357, 362, 363, 366, 367, 368, 369, 370, 371, 376, 377, 378,
- 379,
- 380, 381, 382, 402, 536, 537, 710, 711, 728, 729, 730, 731, 732, 733,
- 8211, 8212,
- 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8249,
- 8250,
- 8260, 8364, 8482, 8706, 8710, 8721, 8722, 8730, 8800, 8804, 8805, 9674,
- 63171,
- 64257, 64258
-};
-static afm_cunicode afm_Helvetica_Bold_ligatures[] = { /* 3 */
- 102, 105, 64257
-};
-
-
-/* ------------------------------------------------------------------*/
-/* FontName: Helvetica-BoldOblique */
-/* FullName: Helvetica Bold Oblique */
-/* FamilyName: Helvetica */
-static afm_cuint8 afm_Helvetica_BoldOblique_widths[] = { /* 315 */
- 46, 56, 79, 93, 93, 148, 120, 40, 56, 56, 65, 97, 46, 56, 46, 46, 93, 93,
- 93, 93, 93,
- 93, 93, 93, 93, 93, 56, 56, 97, 97, 97, 102, 163, 120, 120, 120, 120, 111,
- 102, 130,
- 120, 46, 93, 120, 102, 139, 120, 130, 111, 130, 120, 111, 102, 120, 111,
- 157, 111,
- 111, 102, 56, 46, 56, 97, 93, 56, 93, 102, 93, 102, 93, 56, 102, 102, 46,
- 46, 93, 46,
- 148, 102, 102, 102, 102, 65, 93, 56, 102, 93, 130, 93, 93, 83, 65, 47, 65,
- 97, 56,
- 93, 93, 93, 93, 47, 93, 56, 123, 62, 93, 97, 123, 56, 67, 97, 56, 56, 56,
- 102, 93, 46,
- 56, 56, 61, 93, 139, 139, 139, 102, 120, 120, 120, 120, 120, 120, 167,
- 120, 111,
- 111, 111, 111, 46, 46, 46, 46, 120, 120, 130, 130, 130, 130, 130, 97, 130,
- 120, 120,
- 120, 120, 111, 111, 102, 93, 93, 93, 93, 93, 93, 148, 93, 93, 93, 93, 93,
- 46, 46, 46,
- 46, 102, 102, 102, 102, 102, 102, 102, 97, 102, 102, 102, 102, 102, 93,
- 102, 93,
- 120, 93, 120, 93, 120, 93, 120, 93, 120, 93, 120, 124, 120, 102, 111, 93,
- 111, 93,
- 111, 93, 111, 93, 130, 102, 130, 102, 46, 46, 46, 46, 46, 46, 120, 93,
- 102, 46, 102,
- 46, 102, 67, 102, 46, 120, 102, 120, 102, 120, 102, 130, 102, 130, 102,
- 167, 157,
- 120, 65, 120, 65, 120, 65, 111, 93, 111, 93, 111, 93, 102, 56, 102, 65,
- 120, 102,
- 120, 102, 120, 102, 120, 102, 111, 102, 83, 102, 83, 102, 83, 93, 111, 93,
- 56, 56,
- 56, 56, 56, 56, 56, 56, 93, 167, 46, 46, 46, 83, 83, 83, 93, 93, 58, 167,
- 167, 56, 56,
- 28, 93, 167, 82, 102, 100, 97, 92, 92, 92, 92, 82, 42, 102, 102
-};
-static afm_sint16 afm_Helvetica_BoldOblique_kerning_index[] = { /* 315 */
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 51, 54, 0, 0,
- 0, 0, 0, 57, 172, 0, 218, 0, 257, 0, 0, 0, 308, 358, 450, 0, 0, 485, 534,
- 627, 654, 0,
- 716, 874, 902, 1051, 0, 1199, 0, 0, 0, 0, 0, 0, 0, 1338, 1358, 1401, 1427,
- 1444, 1462,
- 1517, 1548, 0, 0, 1556, 1577, 1587, 1617, 1649, 1663, 0, 1671, 1752, 0, 0,
- 1755,
- 1803, 1828, 1851, 1921, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1944, 2059, 2174, 2289, 2404, 2519, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 2634, 2683, 2732, 2781, 2830, 0, 2879, 2928, 2956,
- 2984, 3012,
- 3040, 0, 0, 3179, 3199, 3219, 3239, 3259, 3279, 0, 3299, 3325, 3343, 3361,
- 3379,
- 0, 0, 0, 0, 0, 3397, 3429, 3443, 3457, 3471, 3485, 0, 3499, 0, 0, 0, 0,
- 3513, 0, 3583,
- 3653, 3768, 3788, 3903, 3923, 4038, 0, 4058, 0, 4084, 4110, 0, 4149, 4188,
- 0, 4205,
- 0, 4223, 0, 4241, 0, 4259, 0, 4277, 0, 4308, 0, 0, 0, 0, 0, 0, 4339, 4431,
- 4452, 4487,
- 4497, 4532, 0, 0, 4542, 4577, 0, 4587, 0, 4619, 0, 4651, 4683, 4732, 4746,
- 4795,
- 0, 0, 4809, 4871, 4952, 5014, 5095, 5157, 0, 5238, 0, 5241, 0, 5244, 5247,
- 0, 5405,
- 0, 5563, 0, 5591, 0, 5619, 0, 5647, 0, 5675, 0, 5814, 0, 5837, 0, 5860, 0,
- 0, 5883,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5886, 5891, 0, 0, 5942, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-static afm_cuint8 afm_Helvetica_BoldOblique_kerning_data[] = { /* 5945 */
- 42, 11, 85, 240, 87, 244, 88, 244, 90, 237, 222, 237, 0, 100, 240, 0, 102,
- 240, 0,
- 122, 237, 1, 32, 24, 247, 1, 32, 28, 244, 4, 33, 250, 1, 32, 25, 237, 1,
- 32, 29, 237,
- 4, 33, 250, 1, 32, 25, 237, 1, 32, 29, 237, 2, 33, 250, 2, 33, 250, 49,
- 68, 250, 72,
- 249, 80, 250, 82, 250, 85, 242, 86, 249, 87, 244, 88, 247, 90, 239, 118,
- 252, 119,
- 250, 120, 252, 122, 252, 200, 250, 211, 250, 212, 250, 213, 250, 214, 250,
- 215,
- 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249, 222, 239, 250, 252,
- 251,
- 252, 252, 252, 253, 252, 254, 252, 0, 1, 252, 0, 8, 250, 0, 14, 250, 0,
- 32, 249, 0,
- 36, 249, 0, 78, 250, 0, 82, 250, 0, 100, 242, 0, 102, 242, 0, 108, 249, 0,
- 109, 252,
- 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117,
- 252, 0, 122,
- 239, 20, 66, 252, 86, 255, 193, 252, 194, 252, 195, 252, 196, 252, 197,
- 252, 198,
- 252, 218, 255, 219, 255, 220, 255, 221, 255, 0, 2, 252, 0, 4, 252, 0, 6,
- 252, 0, 108,
- 255, 0, 112, 255, 0, 114, 255, 0, 116, 255, 18, 45, 252, 47, 252, 66, 250,
- 87, 250,
- 88, 250, 90, 245, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198,
- 250, 222,
- 245, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0, 122, 245, 23, 45, 240, 47, 240,
- 66, 244, 98,
- 254, 193, 244, 194, 244, 195, 244, 196, 244, 197, 244, 198, 244, 225, 254,
- 226,
- 254, 227, 254, 228, 254, 229, 254, 230, 254, 0, 2, 244, 0, 3, 254, 0, 4,
- 244, 0, 5,
- 254, 0, 6, 244, 0, 7, 254, 22, 45, 254, 47, 254, 66, 254, 118, 254, 193,
- 254, 194,
- 254, 195, 254, 196, 254, 197, 254, 198, 254, 250, 254, 251, 254, 252, 254,
- 253,
- 254, 0, 2, 254, 0, 4, 254, 0, 6, 254, 0, 109, 254, 0, 113, 254, 0, 115,
- 254, 0, 117,
- 254, 40, 80, 252, 102, 254, 112, 251, 118, 252, 122, 250, 211, 252, 212,
- 252, 213,
- 252, 214, 252, 215, 252, 217, 252, 233, 254, 234, 254, 235, 254, 236, 254,
- 243,
- 251, 244, 251, 245, 251, 246, 251, 247, 251, 249, 251, 250, 252, 251, 252,
- 252,
- 252, 253, 252, 254, 250, 0, 1, 250, 0, 21, 254, 0, 25, 254, 0, 27, 254, 0,
- 29, 254,
- 0, 78, 252, 0, 79, 251, 0, 82, 252, 0, 83, 251, 0, 109, 252, 0, 113, 252,
- 0, 115, 252,
- 0, 117, 252, 14, 85, 242, 87, 239, 88, 244, 90, 237, 122, 252, 222, 237,
- 254, 252,
- 0, 1, 252, 0, 100, 242, 0, 102, 242, 0, 122, 237, 1, 32, 25, 234, 1, 32,
- 29, 234, 22,
- 45, 250, 47, 250, 66, 249, 85, 250, 87, 249, 88, 249, 89, 249, 90, 245,
- 193, 249,
- 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 222, 245, 0, 2, 249, 0,
- 4, 249,
- 0, 6, 249, 0, 100, 250, 0, 102, 250, 0, 122, 245, 41, 45, 237, 47, 237,
- 66, 240, 98,
- 252, 102, 252, 112, 250, 193, 240, 194, 240, 195, 240, 196, 240, 197, 240,
- 198,
- 240, 225, 252, 226, 252, 227, 252, 228, 252, 229, 252, 230, 252, 233, 252,
- 234,
- 252, 235, 252, 236, 252, 243, 250, 244, 250, 245, 250, 246, 250, 247, 250,
- 249,
- 250, 0, 2, 240, 0, 3, 252, 0, 4, 240, 0, 5, 252, 0, 6, 240, 0, 7, 252, 0,
- 21, 252, 0, 25,
- 252, 0, 27, 252, 0, 29, 252, 0, 79, 250, 0, 83, 250, 12, 45, 3, 47, 3, 86,
- 255, 218,
- 255, 219, 255, 220, 255, 221, 255, 0, 108, 255, 0, 112, 255, 0, 114, 255,
- 0, 116,
- 255, 27, 80, 254, 85, 254, 86, 254, 87, 249, 88, 250, 90, 249, 211, 254,
- 212, 254,
- 213, 254, 214, 254, 215, 254, 217, 254, 218, 254, 219, 254, 220, 254, 221,
- 254,
- 222, 249, 0, 78, 254, 0, 82, 254, 0, 100, 254, 0, 102, 254, 0, 108, 254,
- 0, 112, 254,
- 0, 114, 254, 0, 116, 254, 0, 122, 249, 69, 45, 244, 46, 237, 47, 244, 59,
- 250, 60,
- 250, 66, 242, 80, 250, 98, 244, 102, 247, 112, 244, 115, 244, 118, 242,
- 120, 247,
- 122, 247, 193, 242, 194, 242, 195, 242, 196, 242, 197, 242, 198, 242, 211,
- 250,
- 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 225, 244, 226, 244, 227,
- 244,
- 228, 244, 229, 244, 230, 244, 233, 247, 234, 247, 235, 247, 236, 247, 243,
- 244,
- 244, 244, 245, 244, 246, 244, 247, 244, 249, 244, 250, 242, 251, 242, 252,
- 242,
- 253, 242, 254, 247, 0, 1, 247, 0, 2, 242, 0, 3, 244, 0, 4, 242, 0, 5, 244,
- 0, 6, 242,
- 0, 7, 244, 0, 21, 247, 0, 25, 247, 0, 27, 247, 0, 29, 247, 0, 78, 250, 0,
- 79, 244, 0,
- 82, 250, 0, 83, 244, 0, 87, 244, 0, 89, 244, 0, 109, 242, 0, 113, 242, 0,
- 115, 242,
- 0, 117, 242, 13, 45, 252, 47, 252, 66, 249, 193, 249, 194, 249, 195, 249,
- 196, 249,
- 197, 249, 198, 249, 0, 2, 249, 0, 4, 249, 0, 6, 249, 65, 45, 237, 46, 244,
- 47, 237,
- 59, 250, 60, 250, 66, 244, 72, 249, 80, 249, 98, 247, 102, 249, 112, 242,
- 118, 247,
- 193, 244, 194, 244, 195, 244, 196, 244, 197, 244, 198, 244, 211, 249, 212,
- 249,
- 213, 249, 214, 249, 215, 249, 217, 249, 225, 247, 226, 247, 227, 247, 228,
- 247,
- 229, 247, 230, 247, 233, 249, 234, 249, 235, 249, 236, 249, 243, 242, 244,
- 242,
- 245, 242, 246, 242, 247, 242, 249, 242, 250, 247, 251, 247, 252, 247, 253,
- 247,
- 0, 2, 244, 0, 3, 247, 0, 4, 244, 0, 5, 247, 0, 6, 244, 0, 7, 247, 0, 21,
- 249, 0, 25, 249,
- 0, 27, 249, 0, 29, 249, 0, 32, 249, 0, 36, 249, 0, 78, 249, 0, 79, 242, 0,
- 82, 249, 0,
- 83, 242, 0, 109, 247, 0, 113, 247, 0, 115, 247, 0, 117, 247, 65, 45, 244,
- 46, 250,
- 47, 244, 59, 255, 60, 255, 66, 247, 80, 254, 98, 250, 102, 251, 112, 247,
- 118, 249,
- 122, 254, 193, 247, 194, 247, 195, 247, 196, 247, 197, 247, 198, 247, 211,
- 254,
- 212, 254, 213, 254, 214, 254, 215, 254, 217, 254, 225, 250, 226, 250, 227,
- 250,
- 228, 250, 229, 250, 230, 250, 233, 251, 234, 251, 235, 251, 236, 251, 243,
- 247,
- 244, 247, 245, 247, 246, 247, 247, 247, 249, 247, 250, 249, 251, 249, 252,
- 249,
- 253, 249, 254, 254, 0, 1, 254, 0, 2, 247, 0, 3, 250, 0, 4, 247, 0, 5, 250,
- 0, 6, 247,
- 0, 7, 250, 0, 21, 251, 0, 25, 251, 0, 27, 251, 0, 29, 251, 0, 78, 254, 0,
- 79, 247, 0,
- 82, 254, 0, 83, 247, 0, 109, 249, 0, 113, 249, 0, 115, 249, 0, 117, 249,
- 61, 45, 240,
- 47, 240, 59, 249, 60, 249, 66, 239, 80, 245, 98, 242, 102, 244, 112, 240,
- 118, 240,
- 193, 239, 194, 239, 195, 239, 196, 239, 197, 239, 198, 239, 211, 245, 212,
- 245,
- 213, 245, 214, 245, 215, 245, 217, 245, 225, 242, 226, 242, 227, 242, 228,
- 242,
- 229, 242, 230, 242, 233, 244, 234, 244, 235, 244, 236, 244, 243, 240, 244,
- 240,
- 245, 240, 246, 240, 247, 240, 249, 240, 250, 240, 251, 240, 252, 240, 253,
- 240,
- 0, 2, 239, 0, 3, 242, 0, 4, 239, 0, 5, 242, 0, 6, 239, 0, 7, 242, 0, 21,
- 244, 0, 25, 244,
- 0, 27, 244, 0, 29, 244, 0, 78, 245, 0, 79, 240, 0, 82, 245, 0, 83, 240, 0,
- 109, 240,
- 0, 113, 240, 0, 115, 240, 0, 117, 240, 9, 104, 255, 119, 254, 120, 254,
- 122, 254,
- 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 18, 109, 255, 118, 254, 119,
- 254, 122,
- 254, 250, 254, 251, 254, 252, 254, 253, 254, 254, 254, 0, 1, 254, 0, 60,
- 255, 0, 62,
- 255, 0, 68, 255, 0, 109, 254, 0, 113, 254, 0, 115, 254, 0, 117, 254, 11,
- 105, 255,
- 108, 254, 109, 254, 122, 255, 254, 255, 0, 1, 255, 0, 57, 254, 0, 60, 254,
- 0, 62, 254,
- 0, 68, 254, 8, 101, 255, 119, 254, 120, 254, 122, 254, 254, 254, 0, 1,
- 254, 0, 19,
- 255, 9, 45, 2, 47, 3, 119, 254, 120, 254, 121, 254, 122, 254, 254, 254, 0,
- 1, 254,
- 23, 45, 255, 47, 255, 102, 255, 112, 254, 233, 255, 234, 255, 235, 255,
- 236, 255,
- 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254, 0, 21, 255, 0,
- 25, 255,
- 0, 27, 255, 0, 29, 255, 0, 79, 254, 0, 83, 254, 1, 32, 25, 5, 1, 32, 29,
- 5, 13, 102, 2,
- 104, 255, 233, 2, 234, 2, 235, 2, 236, 2, 0, 21, 2, 0, 25, 2, 0, 27, 2, 0,
- 29, 2, 0, 33,
- 255, 0, 37, 255, 4, 122, 254, 254, 254, 0, 1, 254, 10, 112, 254, 243, 254,
- 244, 254,
- 245, 254, 246, 254, 247, 254, 249, 254, 0, 79, 254, 0, 83, 254, 5, 120,
- 254, 122,
- 254, 254, 254, 0, 1, 254, 13, 118, 254, 122, 252, 250, 254, 251, 254, 252,
- 254, 253,
- 254, 254, 252, 0, 1, 252, 0, 109, 254, 0, 113, 254, 0, 115, 254, 0, 117,
- 254, 14, 118,
- 255, 119, 250, 122, 254, 250, 255, 251, 255, 252, 255, 253, 255, 254, 254,
- 0, 1,
- 254, 0, 109, 255, 0, 113, 255, 0, 115, 255, 0, 117, 255, 7, 119, 254, 120,
- 254, 121,
- 252, 122, 254, 254, 254, 0, 1, 254, 4, 122, 254, 254, 254, 0, 1, 254, 34,
- 45, 247,
- 46, 254, 47, 247, 100, 254, 101, 254, 104, 254, 112, 254, 114, 254, 116,
- 254, 117,
- 3, 119, 2, 122, 2, 232, 254, 243, 254, 244, 254, 245, 254, 246, 254, 247,
- 254, 249,
- 254, 254, 2, 0, 1, 2, 0, 9, 254, 0, 15, 254, 0, 19, 254, 0, 33, 254, 0,
- 37, 254, 0, 79,
- 254, 0, 83, 254, 0, 93, 254, 0, 97, 254, 0, 99, 254, 0, 101, 3, 1, 2, 25,
- 254, 2, 120,
- 254, 22, 45, 244, 47, 244, 98, 254, 112, 252, 225, 254, 226, 254, 227,
- 254, 228,
- 254, 229, 254, 230, 254, 243, 252, 244, 252, 245, 252, 246, 252, 247, 252,
- 249,
- 252, 0, 3, 254, 0, 5, 254, 0, 7, 254, 0, 79, 252, 0, 83, 252, 12, 45, 250,
- 47, 250, 112,
- 254, 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254, 0, 79,
- 254, 0, 83,
- 254, 10, 102, 255, 233, 255, 234, 255, 235, 255, 236, 255, 0, 21, 255, 0,
- 25, 255,
- 0, 27, 255, 0, 29, 255, 31, 45, 244, 47, 244, 98, 252, 102, 255, 112, 253,
- 225, 252,
- 226, 252, 227, 252, 228, 252, 229, 252, 230, 252, 233, 255, 234, 255, 235,
- 255,
- 236, 255, 243, 253, 244, 253, 245, 253, 246, 253, 247, 253, 249, 253, 0,
- 3, 252,
- 0, 5, 252, 0, 7, 252, 0, 21, 255, 0, 25, 255, 0, 27, 255, 0, 29, 255, 0,
- 79, 253, 0, 83,
- 253, 10, 102, 2, 233, 2, 234, 2, 235, 2, 236, 2, 0, 21, 2, 0, 25, 2, 0,
- 27, 2, 0, 29, 2,
- 49, 68, 250, 72, 249, 80, 250, 82, 250, 85, 242, 86, 249, 87, 244, 88,
- 247, 90, 239,
- 118, 252, 119, 250, 120, 252, 122, 252, 200, 250, 211, 250, 212, 250, 213,
- 250,
- 214, 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249, 222,
- 239,
- 250, 252, 251, 252, 252, 252, 253, 252, 254, 252, 0, 1, 252, 0, 8, 250, 0,
- 14, 250,
- 0, 32, 249, 0, 36, 249, 0, 78, 250, 0, 82, 250, 0, 100, 242, 0, 102, 242,
- 0, 108, 249,
- 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116,
- 249, 0, 117,
- 252, 0, 122, 239, 49, 68, 250, 72, 249, 80, 250, 82, 250, 85, 242, 86,
- 249, 87, 244,
- 88, 247, 90, 239, 118, 252, 119, 250, 120, 252, 122, 252, 200, 250, 211,
- 250, 212,
- 250, 213, 250, 214, 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249,
- 221,
- 249, 222, 239, 250, 252, 251, 252, 252, 252, 253, 252, 254, 252, 0, 1,
- 252, 0, 8,
- 250, 0, 14, 250, 0, 32, 249, 0, 36, 249, 0, 78, 250, 0, 82, 250, 0, 100,
- 242, 0, 102,
- 242, 0, 108, 249, 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0,
- 115, 252,
- 0, 116, 249, 0, 117, 252, 0, 122, 239, 49, 68, 250, 72, 249, 80, 250, 82,
- 250, 85,
- 242, 86, 249, 87, 244, 88, 247, 90, 239, 118, 252, 119, 250, 120, 252,
- 122, 252,
- 200, 250, 211, 250, 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 218,
- 249,
- 219, 249, 220, 249, 221, 249, 222, 239, 250, 252, 251, 252, 252, 252, 253,
- 252,
- 254, 252, 0, 1, 252, 0, 8, 250, 0, 14, 250, 0, 32, 249, 0, 36, 249, 0, 78,
- 250, 0, 82,
- 250, 0, 100, 242, 0, 102, 242, 0, 108, 249, 0, 109, 252, 0, 112, 249, 0,
- 113, 252,
- 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0, 122, 239, 49, 68,
- 250, 72, 249,
- 80, 250, 82, 250, 85, 242, 86, 249, 87, 244, 88, 247, 90, 239, 118, 252,
- 119, 250,
- 120, 252, 122, 252, 200, 250, 211, 250, 212, 250, 213, 250, 214, 250, 215,
- 250,
- 217, 250, 218, 249, 219, 249, 220, 249, 221, 249, 222, 239, 250, 252, 251,
- 252,
- 252, 252, 253, 252, 254, 252, 0, 1, 252, 0, 8, 250, 0, 14, 250, 0, 32,
- 249, 0, 36, 249,
- 0, 78, 250, 0, 82, 250, 0, 100, 242, 0, 102, 242, 0, 108, 249, 0, 109,
- 252, 0, 112,
- 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0,
- 122, 239,
- 49, 68, 250, 72, 249, 80, 250, 82, 250, 85, 242, 86, 249, 87, 244, 88,
- 247, 90, 239,
- 118, 252, 119, 250, 120, 252, 122, 252, 200, 250, 211, 250, 212, 250, 213,
- 250,
- 214, 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249, 222,
- 239,
- 250, 252, 251, 252, 252, 252, 253, 252, 254, 252, 0, 1, 252, 0, 8, 250, 0,
- 14, 250,
- 0, 32, 249, 0, 36, 249, 0, 78, 250, 0, 82, 250, 0, 100, 242, 0, 102, 242,
- 0, 108, 249,
- 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116,
- 249, 0, 117,
- 252, 0, 122, 239, 49, 68, 250, 72, 249, 80, 250, 82, 250, 85, 242, 86,
- 249, 87, 244,
- 88, 247, 90, 239, 118, 252, 119, 250, 120, 252, 122, 252, 200, 250, 211,
- 250, 212,
- 250, 213, 250, 214, 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249,
- 221,
- 249, 222, 239, 250, 252, 251, 252, 252, 252, 253, 252, 254, 252, 0, 1,
- 252, 0, 8,
- 250, 0, 14, 250, 0, 32, 249, 0, 36, 249, 0, 78, 250, 0, 82, 250, 0, 100,
- 242, 0, 102,
- 242, 0, 108, 249, 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0,
- 115, 252,
- 0, 116, 249, 0, 117, 252, 0, 122, 239, 22, 45, 250, 47, 250, 66, 249, 85,
- 250, 87,
- 249, 88, 249, 89, 249, 90, 245, 193, 249, 194, 249, 195, 249, 196, 249,
- 197, 249,
- 198, 249, 222, 245, 0, 2, 249, 0, 4, 249, 0, 6, 249, 0, 100, 250, 0, 102,
- 250, 0, 122,
- 245, 22, 45, 250, 47, 250, 66, 249, 85, 250, 87, 249, 88, 249, 89, 249,
- 90, 245, 193,
- 249, 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 222, 245, 0, 2,
- 249, 0, 4,
- 249, 0, 6, 249, 0, 100, 250, 0, 102, 250, 0, 122, 245, 22, 45, 250, 47,
- 250, 66, 249,
- 85, 250, 87, 249, 88, 249, 89, 249, 90, 245, 193, 249, 194, 249, 195, 249,
- 196, 249,
- 197, 249, 198, 249, 222, 245, 0, 2, 249, 0, 4, 249, 0, 6, 249, 0, 100,
- 250, 0, 102,
- 250, 0, 122, 245, 22, 45, 250, 47, 250, 66, 249, 85, 250, 87, 249, 88,
- 249, 89, 249,
- 90, 245, 193, 249, 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 222,
- 245, 0,
- 2, 249, 0, 4, 249, 0, 6, 249, 0, 100, 250, 0, 102, 250, 0, 122, 245, 22,
- 45, 250, 47,
- 250, 66, 249, 85, 250, 87, 249, 88, 249, 89, 249, 90, 245, 193, 249, 194,
- 249, 195,
- 249, 196, 249, 197, 249, 198, 249, 222, 245, 0, 2, 249, 0, 4, 249, 0, 6,
- 249, 0, 100,
- 250, 0, 102, 250, 0, 122, 245, 22, 45, 250, 47, 250, 66, 249, 85, 250, 87,
- 249, 88,
- 249, 89, 249, 90, 245, 193, 249, 194, 249, 195, 249, 196, 249, 197, 249,
- 198, 249,
- 222, 245, 0, 2, 249, 0, 4, 249, 0, 6, 249, 0, 100, 250, 0, 102, 250, 0,
- 122, 245, 13,
- 45, 252, 47, 252, 66, 249, 193, 249, 194, 249, 195, 249, 196, 249, 197,
- 249, 198,
- 249, 0, 2, 249, 0, 4, 249, 0, 6, 249, 13, 45, 252, 47, 252, 66, 249, 193,
- 249, 194,
- 249, 195, 249, 196, 249, 197, 249, 198, 249, 0, 2, 249, 0, 4, 249, 0, 6,
- 249, 13, 45,
- 252, 47, 252, 66, 249, 193, 249, 194, 249, 195, 249, 196, 249, 197, 249,
- 198, 249,
- 0, 2, 249, 0, 4, 249, 0, 6, 249, 13, 45, 252, 47, 252, 66, 249, 193, 249,
- 194, 249,
- 195, 249, 196, 249, 197, 249, 198, 249, 0, 2, 249, 0, 4, 249, 0, 6, 249,
- 61, 45, 240,
- 47, 240, 59, 249, 60, 249, 66, 239, 80, 245, 98, 242, 102, 244, 112, 240,
- 118, 240,
- 193, 239, 194, 239, 195, 239, 196, 239, 197, 239, 198, 239, 211, 245, 212,
- 245,
- 213, 245, 214, 245, 215, 245, 217, 245, 225, 242, 226, 242, 227, 242, 228,
- 242,
- 229, 242, 230, 242, 233, 244, 234, 244, 235, 244, 236, 244, 243, 240, 244,
- 240,
- 245, 240, 246, 240, 247, 240, 249, 240, 250, 240, 251, 240, 252, 240, 253,
- 240,
- 0, 2, 239, 0, 3, 242, 0, 4, 239, 0, 5, 242, 0, 6, 239, 0, 7, 242, 0, 21,
- 244, 0, 25, 244,
- 0, 27, 244, 0, 29, 244, 0, 78, 245, 0, 79, 240, 0, 82, 245, 0, 83, 240, 0,
- 109, 240,
- 0, 113, 240, 0, 115, 240, 0, 117, 240, 9, 104, 255, 119, 254, 120, 254,
- 122, 254,
- 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 9, 104, 255, 119, 254, 120,
- 254, 122,
- 254, 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 9, 104, 255, 119, 254,
- 120, 254,
- 122, 254, 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 9, 104, 255, 119,
- 254, 120,
- 254, 122, 254, 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 9, 104, 255,
- 119, 254,
- 120, 254, 122, 254, 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 9, 104,
- 255, 119,
- 254, 120, 254, 122, 254, 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 11,
- 105, 255,
- 108, 254, 109, 254, 122, 255, 254, 255, 0, 1, 255, 0, 57, 254, 0, 60, 254,
- 0, 62, 254,
- 0, 68, 254, 9, 45, 2, 47, 3, 119, 254, 120, 254, 121, 254, 122, 254, 254,
- 254, 0, 1,
- 254, 9, 45, 2, 47, 3, 119, 254, 120, 254, 121, 254, 122, 254, 254, 254, 0,
- 1, 254,
- 9, 45, 2, 47, 3, 119, 254, 120, 254, 121, 254, 122, 254, 254, 254, 0, 1,
- 254, 9, 45,
- 2, 47, 3, 119, 254, 120, 254, 121, 254, 122, 254, 254, 254, 0, 1, 254, 14,
- 118, 255,
- 119, 250, 122, 254, 250, 255, 251, 255, 252, 255, 253, 255, 254, 254, 0,
- 1, 254,
- 0, 109, 255, 0, 113, 255, 0, 115, 255, 0, 117, 255, 7, 119, 254, 120, 254,
- 121, 252,
- 122, 254, 254, 254, 0, 1, 254, 7, 119, 254, 120, 254, 121, 252, 122, 254,
- 254, 254,
- 0, 1, 254, 7, 119, 254, 120, 254, 121, 252, 122, 254, 254, 254, 0, 1, 254,
- 7, 119,
- 254, 120, 254, 121, 252, 122, 254, 254, 254, 0, 1, 254, 7, 119, 254, 120,
- 254, 121,
- 252, 122, 254, 254, 254, 0, 1, 254, 7, 119, 254, 120, 254, 121, 252, 122,
- 254, 254,
- 254, 0, 1, 254, 31, 45, 244, 47, 244, 98, 252, 102, 255, 112, 253, 225,
- 252, 226,
- 252, 227, 252, 228, 252, 229, 252, 230, 252, 233, 255, 234, 255, 235, 255,
- 236,
- 255, 243, 253, 244, 253, 245, 253, 246, 253, 247, 253, 249, 253, 0, 3,
- 252, 0, 5,
- 252, 0, 7, 252, 0, 21, 255, 0, 25, 255, 0, 27, 255, 0, 29, 255, 0, 79,
- 253, 0, 83, 253,
- 31, 45, 244, 47, 244, 98, 252, 102, 255, 112, 253, 225, 252, 226, 252,
- 227, 252,
- 228, 252, 229, 252, 230, 252, 233, 255, 234, 255, 235, 255, 236, 255, 243,
- 253,
- 244, 253, 245, 253, 246, 253, 247, 253, 249, 253, 0, 3, 252, 0, 5, 252, 0,
- 7, 252,
- 0, 21, 255, 0, 25, 255, 0, 27, 255, 0, 29, 255, 0, 79, 253, 0, 83, 253,
- 49, 68, 250,
- 72, 249, 80, 250, 82, 250, 85, 242, 86, 249, 87, 244, 88, 247, 90, 239,
- 118, 252,
- 119, 250, 120, 252, 122, 252, 200, 250, 211, 250, 212, 250, 213, 250, 214,
- 250,
- 215, 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249, 222, 239, 250,
- 252,
- 251, 252, 252, 252, 253, 252, 254, 252, 0, 1, 252, 0, 8, 250, 0, 14, 250,
- 0, 32, 249,
- 0, 36, 249, 0, 78, 250, 0, 82, 250, 0, 100, 242, 0, 102, 242, 0, 108, 249,
- 0, 109, 252,
- 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117,
- 252, 0, 122,
- 239, 9, 104, 255, 119, 254, 120, 254, 122, 254, 254, 254, 0, 1, 254, 0,
- 33, 255, 0,
- 37, 255, 49, 68, 250, 72, 249, 80, 250, 82, 250, 85, 242, 86, 249, 87,
- 244, 88, 247,
- 90, 239, 118, 252, 119, 250, 120, 252, 122, 252, 200, 250, 211, 250, 212,
- 250, 213,
- 250, 214, 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249,
- 222,
- 239, 250, 252, 251, 252, 252, 252, 253, 252, 254, 252, 0, 1, 252, 0, 8,
- 250, 0, 14,
- 250, 0, 32, 249, 0, 36, 249, 0, 78, 250, 0, 82, 250, 0, 100, 242, 0, 102,
- 242, 0, 108,
- 249, 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0,
- 116, 249,
- 0, 117, 252, 0, 122, 239, 9, 104, 255, 119, 254, 120, 254, 122, 254, 254,
- 254, 0,
- 1, 254, 0, 33, 255, 0, 37, 255, 49, 68, 250, 72, 249, 80, 250, 82, 250,
- 85, 242, 86,
- 249, 87, 244, 88, 247, 90, 239, 118, 252, 119, 250, 120, 252, 122, 252,
- 200, 250,
- 211, 250, 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 218, 249, 219,
- 249,
- 220, 249, 221, 249, 222, 239, 250, 252, 251, 252, 252, 252, 253, 252, 254,
- 252,
- 0, 1, 252, 0, 8, 250, 0, 14, 250, 0, 32, 249, 0, 36, 249, 0, 78, 250, 0,
- 82, 250, 0, 100,
- 242, 0, 102, 242, 0, 108, 249, 0, 109, 252, 0, 112, 249, 0, 113, 252, 0,
- 114, 249,
- 0, 115, 252, 0, 116, 249, 0, 117, 252, 0, 122, 239, 9, 104, 255, 119, 254,
- 120, 254,
- 122, 254, 254, 254, 0, 1, 254, 0, 33, 255, 0, 37, 255, 11, 105, 255, 108,
- 254, 109,
- 254, 122, 255, 254, 255, 0, 1, 255, 0, 57, 254, 0, 60, 254, 0, 62, 254, 0,
- 68, 254,
- 11, 105, 255, 108, 254, 109, 254, 122, 255, 254, 255, 0, 1, 255, 0, 57,
- 254, 0, 60,
- 254, 0, 62, 254, 0, 68, 254, 18, 45, 252, 47, 252, 66, 250, 87, 250, 88,
- 250, 90, 245,
- 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 222, 245, 0,
- 2, 250,
- 0, 4, 250, 0, 6, 250, 0, 122, 245, 18, 45, 252, 47, 252, 66, 250, 87, 250,
- 88, 250,
- 90, 245, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 222,
- 245, 0,
- 2, 250, 0, 4, 250, 0, 6, 250, 0, 122, 245, 8, 101, 255, 119, 254, 120,
- 254, 122, 254,
- 254, 254, 0, 1, 254, 0, 19, 255, 9, 45, 2, 47, 3, 119, 254, 120, 254, 121,
- 254, 122,
- 254, 254, 254, 0, 1, 254, 9, 45, 2, 47, 3, 119, 254, 120, 254, 121, 254,
- 122, 254,
- 254, 254, 0, 1, 254, 9, 45, 2, 47, 3, 119, 254, 120, 254, 121, 254, 122,
- 254, 254,
- 254, 0, 1, 254, 9, 45, 2, 47, 3, 119, 254, 120, 254, 121, 254, 122, 254,
- 254, 254,
- 0, 1, 254, 13, 102, 2, 104, 255, 233, 2, 234, 2, 235, 2, 236, 2, 0, 21, 2,
- 0, 25, 2, 0,
- 27, 2, 0, 29, 2, 0, 33, 255, 0, 37, 255, 13, 102, 2, 104, 255, 233, 2,
- 234, 2, 235, 2,
- 236, 2, 0, 21, 2, 0, 25, 2, 0, 27, 2, 0, 29, 2, 0, 33, 255, 0, 37, 255,
- 40, 80, 252, 102,
- 254, 112, 251, 118, 252, 122, 250, 211, 252, 212, 252, 213, 252, 214, 252,
- 215,
- 252, 217, 252, 233, 254, 234, 254, 235, 254, 236, 254, 243, 251, 244, 251,
- 245,
- 251, 246, 251, 247, 251, 249, 251, 250, 252, 251, 252, 252, 252, 253, 252,
- 254,
- 250, 0, 1, 250, 0, 21, 254, 0, 25, 254, 0, 27, 254, 0, 29, 254, 0, 78,
- 252, 0, 79, 251,
- 0, 82, 252, 0, 83, 251, 0, 109, 252, 0, 113, 252, 0, 115, 252, 0, 117,
- 252, 10, 112,
- 254, 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254, 0, 79,
- 254, 0, 83,
- 254, 14, 85, 242, 87, 239, 88, 244, 90, 237, 122, 252, 222, 237, 254, 252,
- 0, 1, 252,
- 0, 100, 242, 0, 102, 242, 0, 122, 237, 1, 32, 25, 234, 1, 32, 29, 234, 5,
- 120, 254,
- 122, 254, 254, 254, 0, 1, 254, 14, 85, 242, 87, 239, 88, 244, 90, 237,
- 122, 252, 222,
- 237, 254, 252, 0, 1, 252, 0, 100, 242, 0, 102, 242, 0, 122, 237, 1, 32,
- 25, 234, 1,
- 32, 29, 234, 5, 120, 254, 122, 254, 254, 254, 0, 1, 254, 14, 85, 242, 87,
- 239, 88,
- 244, 90, 237, 122, 252, 222, 237, 254, 252, 0, 1, 252, 0, 100, 242, 0,
- 102, 242, 0,
- 122, 237, 1, 32, 25, 234, 1, 32, 29, 234, 5, 120, 254, 122, 254, 254, 254,
- 0, 1, 254,
- 14, 118, 255, 119, 250, 122, 254, 250, 255, 251, 255, 252, 255, 253, 255,
- 254, 254,
- 0, 1, 254, 0, 109, 255, 0, 113, 255, 0, 115, 255, 0, 117, 255, 14, 118,
- 255, 119, 250,
- 122, 254, 250, 255, 251, 255, 252, 255, 253, 255, 254, 254, 0, 1, 254, 0,
- 109, 255,
- 0, 113, 255, 0, 115, 255, 0, 117, 255, 14, 118, 255, 119, 250, 122, 254,
- 250, 255,
- 251, 255, 252, 255, 253, 255, 254, 254, 0, 1, 254, 0, 109, 255, 0, 113,
- 255, 0, 115,
- 255, 0, 117, 255, 22, 45, 250, 47, 250, 66, 249, 85, 250, 87, 249, 88,
- 249, 89, 249,
- 90, 245, 193, 249, 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 222,
- 245, 0,
- 2, 249, 0, 4, 249, 0, 6, 249, 0, 100, 250, 0, 102, 250, 0, 122, 245, 7,
- 119, 254, 120,
- 254, 121, 252, 122, 254, 254, 254, 0, 1, 254, 22, 45, 250, 47, 250, 66,
- 249, 85, 250,
- 87, 249, 88, 249, 89, 249, 90, 245, 193, 249, 194, 249, 195, 249, 196,
- 249, 197,
- 249, 198, 249, 222, 245, 0, 2, 249, 0, 4, 249, 0, 6, 249, 0, 100, 250, 0,
- 102, 250,
- 0, 122, 245, 7, 119, 254, 120, 254, 121, 252, 122, 254, 254, 254, 0, 1,
- 254, 27, 80,
- 254, 85, 254, 86, 254, 87, 249, 88, 250, 90, 249, 211, 254, 212, 254, 213,
- 254, 214,
- 254, 215, 254, 217, 254, 218, 254, 219, 254, 220, 254, 221, 254, 222, 249,
- 0, 78,
- 254, 0, 82, 254, 0, 100, 254, 0, 102, 254, 0, 108, 254, 0, 112, 254, 0,
- 114, 254, 0,
- 116, 254, 0, 122, 249, 34, 45, 247, 46, 254, 47, 247, 100, 254, 101, 254,
- 104, 254,
- 112, 254, 114, 254, 116, 254, 117, 3, 119, 2, 122, 2, 232, 254, 243, 254,
- 244, 254,
- 245, 254, 246, 254, 247, 254, 249, 254, 254, 2, 0, 1, 2, 0, 9, 254, 0, 15,
- 254, 0, 19,
- 254, 0, 33, 254, 0, 37, 254, 0, 79, 254, 0, 83, 254, 0, 93, 254, 0, 97,
- 254, 0, 99, 254,
- 0, 101, 3, 1, 2, 25, 254, 27, 80, 254, 85, 254, 86, 254, 87, 249, 88, 250,
- 90, 249,
- 211, 254, 212, 254, 213, 254, 214, 254, 215, 254, 217, 254, 218, 254, 219,
- 254,
- 220, 254, 221, 254, 222, 249, 0, 78, 254, 0, 82, 254, 0, 100, 254, 0, 102,
- 254, 0,
- 108, 254, 0, 112, 254, 0, 114, 254, 0, 116, 254, 0, 122, 249, 34, 45, 247,
- 46, 254,
- 47, 247, 100, 254, 101, 254, 104, 254, 112, 254, 114, 254, 116, 254, 117,
- 3, 119,
- 2, 122, 2, 232, 254, 243, 254, 244, 254, 245, 254, 246, 254, 247, 254,
- 249, 254,
- 254, 2, 0, 1, 2, 0, 9, 254, 0, 15, 254, 0, 19, 254, 0, 33, 254, 0, 37,
- 254, 0, 79, 254,
- 0, 83, 254, 0, 93, 254, 0, 97, 254, 0, 99, 254, 0, 101, 3, 1, 2, 25, 254,
- 27, 80, 254,
- 85, 254, 86, 254, 87, 249, 88, 250, 90, 249, 211, 254, 212, 254, 213, 254,
- 214, 254,
- 215, 254, 217, 254, 218, 254, 219, 254, 220, 254, 221, 254, 222, 249, 0,
- 78, 254,
- 0, 82, 254, 0, 100, 254, 0, 102, 254, 0, 108, 254, 0, 112, 254, 0, 114,
- 254, 0, 116,
- 254, 0, 122, 249, 34, 45, 247, 46, 254, 47, 247, 100, 254, 101, 254, 104,
- 254, 112,
- 254, 114, 254, 116, 254, 117, 3, 119, 2, 122, 2, 232, 254, 243, 254, 244,
- 254, 245,
- 254, 246, 254, 247, 254, 249, 254, 254, 2, 0, 1, 2, 0, 9, 254, 0, 15, 254,
- 0, 19, 254,
- 0, 33, 254, 0, 37, 254, 0, 79, 254, 0, 83, 254, 0, 93, 254, 0, 97, 254, 0,
- 99, 254, 0,
- 101, 3, 1, 2, 25, 254, 2, 120, 254, 2, 120, 254, 2, 120, 254, 69, 45, 244,
- 46, 237,
- 47, 244, 59, 250, 60, 250, 66, 242, 80, 250, 98, 244, 102, 247, 112, 244,
- 115, 244,
- 118, 242, 120, 247, 122, 247, 193, 242, 194, 242, 195, 242, 196, 242, 197,
- 242,
- 198, 242, 211, 250, 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 225,
- 244,
- 226, 244, 227, 244, 228, 244, 229, 244, 230, 244, 233, 247, 234, 247, 235,
- 247,
- 236, 247, 243, 244, 244, 244, 245, 244, 246, 244, 247, 244, 249, 244, 250,
- 242,
- 251, 242, 252, 242, 253, 242, 254, 247, 0, 1, 247, 0, 2, 242, 0, 3, 244,
- 0, 4, 242,
- 0, 5, 244, 0, 6, 242, 0, 7, 244, 0, 21, 247, 0, 25, 247, 0, 27, 247, 0,
- 29, 247, 0, 78,
- 250, 0, 79, 244, 0, 82, 250, 0, 83, 244, 0, 87, 244, 0, 89, 244, 0, 109,
- 242, 0, 113,
- 242, 0, 115, 242, 0, 117, 242, 69, 45, 244, 46, 237, 47, 244, 59, 250, 60,
- 250, 66,
- 242, 80, 250, 98, 244, 102, 247, 112, 244, 115, 244, 118, 242, 120, 247,
- 122, 247,
- 193, 242, 194, 242, 195, 242, 196, 242, 197, 242, 198, 242, 211, 250, 212,
- 250,
- 213, 250, 214, 250, 215, 250, 217, 250, 225, 244, 226, 244, 227, 244, 228,
- 244,
- 229, 244, 230, 244, 233, 247, 234, 247, 235, 247, 236, 247, 243, 244, 244,
- 244,
- 245, 244, 246, 244, 247, 244, 249, 244, 250, 242, 251, 242, 252, 242, 253,
- 242,
- 254, 247, 0, 1, 247, 0, 2, 242, 0, 3, 244, 0, 4, 242, 0, 5, 244, 0, 6,
- 242, 0, 7, 244,
- 0, 21, 247, 0, 25, 247, 0, 27, 247, 0, 29, 247, 0, 78, 250, 0, 79, 244, 0,
- 82, 250, 0,
- 83, 244, 0, 87, 244, 0, 89, 244, 0, 109, 242, 0, 113, 242, 0, 115, 242, 0,
- 117, 242,
- 13, 45, 252, 47, 252, 66, 249, 193, 249, 194, 249, 195, 249, 196, 249,
- 197, 249,
- 198, 249, 0, 2, 249, 0, 4, 249, 0, 6, 249, 13, 45, 252, 47, 252, 66, 249,
- 193, 249,
- 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 0, 2, 249, 0, 4, 249, 0,
- 6, 249,
- 13, 45, 252, 47, 252, 66, 249, 193, 249, 194, 249, 195, 249, 196, 249,
- 197, 249,
- 198, 249, 0, 2, 249, 0, 4, 249, 0, 6, 249, 13, 45, 252, 47, 252, 66, 249,
- 193, 249,
- 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 0, 2, 249, 0, 4, 249, 0,
- 6, 249,
- 61, 45, 240, 47, 240, 59, 249, 60, 249, 66, 239, 80, 245, 98, 242, 102,
- 244, 112,
- 240, 118, 240, 193, 239, 194, 239, 195, 239, 196, 239, 197, 239, 198, 239,
- 211,
- 245, 212, 245, 213, 245, 214, 245, 215, 245, 217, 245, 225, 242, 226, 242,
- 227,
- 242, 228, 242, 229, 242, 230, 242, 233, 244, 234, 244, 235, 244, 236, 244,
- 243,
- 240, 244, 240, 245, 240, 246, 240, 247, 240, 249, 240, 250, 240, 251, 240,
- 252,
- 240, 253, 240, 0, 2, 239, 0, 3, 242, 0, 4, 239, 0, 5, 242, 0, 6, 239, 0,
- 7, 242, 0, 21,
- 244, 0, 25, 244, 0, 27, 244, 0, 29, 244, 0, 78, 245, 0, 79, 240, 0, 82,
- 245, 0, 83, 240,
- 0, 109, 240, 0, 113, 240, 0, 115, 240, 0, 117, 240, 10, 102, 2, 233, 2,
- 234, 2, 235,
- 2, 236, 2, 0, 21, 2, 0, 25, 2, 0, 27, 2, 0, 29, 2, 10, 102, 2, 233, 2,
- 234, 2, 235, 2, 236,
- 2, 0, 21, 2, 0, 25, 2, 0, 27, 2, 0, 29, 2, 10, 102, 2, 233, 2, 234, 2,
- 235, 2, 236, 2, 0,
- 21, 2, 0, 25, 2, 0, 27, 2, 0, 29, 2, 2, 120, 254, 2, 1, 32, 24, 249, 19,
- 33, 244, 101,
- 244, 109, 254, 115, 250, 116, 247, 119, 254, 0, 19, 244, 0, 60, 254, 0,
- 62, 254, 0,
- 68, 254, 0, 87, 250, 0, 89, 250, 0, 91, 250, 0, 93, 247, 0, 97, 247, 0,
- 99, 247, 1, 2,
- 25, 247, 1, 32, 25, 249, 2, 33, 244
-};
-static afm_cuint16 afm_Helvetica_BoldOblique_highchars_index[] = { /* 220 */
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176,
- 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257,
- 258, 259, 260, 261, 262, 263, 268, 269, 270, 271, 272, 273, 274, 275, 278,
- 279,
- 280, 281, 282, 283, 286, 287, 290, 291, 298, 299, 302, 303, 304, 305, 310,
- 311,
- 313, 314, 315, 316, 317, 318, 321, 322, 323, 324, 325, 326, 327, 328, 332,
- 333,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 350, 351, 352,
- 353,
- 354, 355, 356, 357, 362, 363, 366, 367, 368, 369, 370, 371, 376, 377, 378,
- 379,
- 380, 381, 382, 402, 536, 537, 710, 711, 728, 729, 730, 731, 732, 733,
- 8211, 8212,
- 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8249,
- 8250,
- 8260, 8364, 8482, 8706, 8710, 8721, 8722, 8730, 8800, 8804, 8805, 9674,
- 63171,
- 64257, 64258
-};
-static afm_cunicode afm_Helvetica_BoldOblique_ligatures[] = { /* 3 */
- 102, 105, 64257
-};
-
-
-/* ------------------------------------------------------------------*/
-/* FontName: Helvetica-Oblique */
-/* FullName: Helvetica Oblique */
-/* FamilyName: Helvetica */
-static afm_cuint8 afm_Helvetica_Oblique_widths[] = { /* 315 */
- 46, 46, 59, 93, 93, 148, 111, 32, 56, 56, 65, 97, 46, 56, 46, 46, 93, 93,
- 93, 93, 93,
- 93, 93, 93, 93, 93, 46, 46, 97, 97, 97, 93, 169, 111, 111, 120, 120, 111,
- 102, 130,
- 120, 46, 83, 111, 93, 139, 120, 130, 111, 130, 120, 111, 102, 120, 111,
- 157, 111,
- 111, 102, 46, 46, 46, 78, 93, 56, 93, 93, 83, 93, 93, 46, 93, 93, 37, 37,
- 83, 37, 139,
- 93, 93, 93, 93, 56, 83, 46, 93, 83, 120, 83, 83, 83, 56, 43, 56, 97, 56,
- 93, 93, 93,
- 93, 43, 93, 56, 123, 62, 93, 97, 123, 56, 67, 97, 56, 56, 56, 93, 90, 46,
- 56, 56, 61,
- 93, 139, 139, 139, 102, 111, 111, 111, 111, 111, 111, 167, 120, 111, 111,
- 111, 111,
- 46, 46, 46, 46, 120, 120, 130, 130, 130, 130, 130, 97, 130, 120, 120, 120,
- 120, 111,
- 111, 102, 93, 93, 93, 93, 93, 93, 148, 83, 93, 93, 93, 93, 46, 46, 46, 46,
- 93, 93, 93,
- 93, 93, 93, 93, 97, 102, 93, 93, 93, 93, 83, 93, 83, 111, 93, 111, 93,
- 111, 93, 120,
- 83, 120, 83, 120, 107, 120, 93, 111, 93, 111, 93, 111, 93, 111, 93, 130,
- 93, 130,
- 93, 46, 46, 46, 37, 46, 46, 111, 83, 93, 37, 93, 37, 93, 50, 93, 37, 120,
- 93, 120, 93,
- 120, 93, 130, 93, 130, 93, 167, 157, 120, 56, 120, 56, 120, 56, 111, 83,
- 111, 83,
- 111, 83, 102, 46, 102, 53, 120, 93, 120, 93, 120, 93, 120, 93, 111, 102,
- 83, 102,
- 83, 102, 83, 93, 111, 83, 56, 56, 56, 56, 56, 56, 56, 56, 93, 167, 37, 37,
- 37, 56, 56,
- 56, 93, 93, 58, 167, 167, 56, 56, 28, 93, 167, 79, 102, 100, 97, 76, 92,
- 92, 92, 79,
- 42, 83, 83
-};
-static afm_sint16 afm_Helvetica_Oblique_kerning_index[] = { /* 315 */
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 49, 52, 0, 0,
- 0, 0, 0, 55, 170, 197, 202, 0, 241, 0, 0, 0, 345, 418, 510, 0, 0, 545,
- 594, 687, 710,
- 772, 777, 938, 966, 1115, 0, 1259, 0, 0, 0, 0, 0, 0, 0, 1407, 1419, 1468,
- 0, 1476,
- 1494, 1575, 1587, 0, 0, 1595, 0, 1638, 1668, 1700, 1718, 0, 1730, 1847, 0,
- 0, 1854,
- 1924, 1994, 2017, 2087, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2130, 2245, 2360, 2475, 2590, 2705, 0,
- 2820, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2825, 2874, 2923, 2972, 3021, 0, 3070, 3119, 3147,
- 3175, 3203,
- 3231, 0, 0, 3379, 3391, 3403, 3415, 3427, 3439, 0, 3451, 3459, 3477, 3495,
- 3513,
- 0, 0, 0, 0, 0, 3531, 3563, 3581, 3599, 3617, 3635, 0, 3653, 0, 0, 0, 0,
- 3882, 0, 3952,
- 4022, 4137, 4149, 4264, 4276, 4391, 4403, 4408, 4416, 4421, 4429, 0, 4468,
- 0,
- 0, 4507, 0, 4525, 0, 4543, 0, 4561, 0, 4579, 0, 4591, 0, 0, 0, 0, 0, 0,
- 4603, 4695,
- 4738, 0, 4773, 0, 4808, 0, 4843, 0, 0, 4878, 0, 4910, 0, 4942, 4974, 5023,
- 5041,
- 5090, 0, 0, 5108, 5170, 5287, 5349, 5466, 5528, 5645, 5650, 5657, 5662,
- 5669,
- 5674, 5681, 0, 5842, 0, 6003, 0, 6031, 0, 6059, 0, 6087, 0, 6115, 0, 6263,
- 0, 6306,
- 0, 6349, 0, 6392, 6397, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6404, 6409, 0, 0,
- 6447, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-static afm_cuint8 afm_Helvetica_Oblique_kerning_data[] = { /* 6450 */
- 42, 11, 85, 249, 87, 249, 88, 250, 90, 242, 222, 242, 0, 100, 249, 0, 102,
- 249, 0,
- 122, 242, 1, 32, 24, 247, 1, 32, 28, 252, 3, 1, 32, 25, 240, 1, 32, 29,
- 240, 4, 33, 247,
- 1, 32, 25, 240, 1, 32, 29, 240, 2, 33, 249, 2, 33, 249, 49, 68, 252, 72,
- 252, 80, 252,
- 82, 252, 85, 237, 86, 249, 87, 245, 88, 249, 90, 240, 118, 252, 119, 250,
- 120, 250,
- 122, 250, 200, 252, 211, 252, 212, 252, 213, 252, 214, 252, 215, 252, 217,
- 252,
- 218, 249, 219, 249, 220, 249, 221, 249, 222, 240, 250, 252, 251, 252, 252,
- 252,
- 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0, 14, 252, 0, 32, 252, 0, 36,
- 252, 0, 78,
- 252, 0, 82, 252, 0, 100, 237, 0, 102, 237, 0, 108, 249, 0, 109, 252, 0,
- 112, 249, 0,
- 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0, 122, 240,
- 12, 45,
- 254, 47, 254, 86, 255, 218, 255, 219, 255, 220, 255, 221, 255, 0, 108,
- 255, 0, 112,
- 255, 0, 114, 255, 0, 116, 255, 3, 45, 252, 47, 252, 18, 45, 245, 47, 245,
- 66, 250,
- 87, 245, 88, 250, 90, 242, 193, 250, 194, 250, 195, 250, 196, 250, 197,
- 250, 198,
- 250, 222, 242, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0, 122, 242, 45, 45, 232,
- 47, 232, 66,
- 244, 98, 249, 102, 252, 112, 252, 115, 249, 193, 244, 194, 244, 195, 244,
- 196, 244,
- 197, 244, 198, 244, 225, 249, 226, 249, 227, 249, 228, 249, 229, 249, 230,
- 249,
- 233, 252, 234, 252, 235, 252, 236, 252, 243, 252, 244, 252, 245, 252, 246,
- 252,
- 247, 252, 249, 252, 0, 2, 244, 0, 3, 249, 0, 4, 244, 0, 5, 249, 0, 6, 244,
- 0, 7, 249,
- 0, 21, 252, 0, 25, 252, 0, 27, 252, 0, 29, 252, 0, 79, 252, 0, 83, 252, 0,
- 87, 249, 0,
- 89, 249, 0, 91, 249, 32, 45, 252, 47, 252, 66, 254, 98, 254, 118, 254,
- 193, 254, 194,
- 254, 195, 254, 196, 254, 197, 254, 198, 254, 225, 254, 226, 254, 227, 254,
- 228,
- 254, 229, 254, 230, 254, 250, 254, 251, 254, 252, 254, 253, 254, 0, 2,
- 254, 0, 3,
- 254, 0, 4, 254, 0, 5, 254, 0, 6, 254, 0, 7, 254, 0, 109, 254, 0, 113, 254,
- 0, 115, 254,
- 0, 117, 254, 40, 80, 249, 102, 250, 112, 250, 118, 252, 122, 249, 211,
- 249, 212,
- 249, 213, 249, 214, 249, 215, 249, 217, 249, 233, 250, 234, 250, 235, 250,
- 236,
- 250, 243, 250, 244, 250, 245, 250, 246, 250, 247, 250, 249, 250, 250, 252,
- 251,
- 252, 252, 252, 253, 252, 254, 249, 0, 1, 249, 0, 21, 250, 0, 25, 250, 0,
- 27, 250, 0,
- 29, 250, 0, 78, 249, 0, 79, 250, 0, 82, 249, 0, 83, 250, 0, 109, 252, 0,
- 113, 252, 0,
- 115, 252, 0, 117, 252, 14, 85, 239, 87, 239, 88, 245, 90, 234, 122, 252,
- 222, 234,
- 254, 252, 0, 1, 252, 0, 100, 239, 0, 102, 239, 0, 122, 234, 1, 32, 25,
- 230, 1, 32, 29,
- 234, 22, 45, 250, 47, 250, 66, 254, 85, 250, 87, 249, 88, 252, 89, 247,
- 90, 245, 193,
- 254, 194, 254, 195, 254, 196, 254, 197, 254, 198, 254, 222, 245, 0, 2,
- 254, 0, 4,
- 254, 0, 6, 254, 0, 100, 250, 0, 102, 250, 0, 122, 245, 41, 45, 227, 47,
- 227, 66, 237,
- 98, 250, 102, 249, 112, 249, 193, 237, 194, 237, 195, 237, 196, 237, 197,
- 237, 198,
- 237, 225, 250, 226, 250, 227, 250, 228, 250, 229, 250, 230, 250, 233, 249,
- 234,
- 249, 235, 249, 236, 249, 243, 249, 244, 249, 245, 249, 246, 249, 247, 249,
- 249,
- 249, 0, 2, 237, 0, 3, 250, 0, 4, 237, 0, 5, 250, 0, 6, 237, 0, 7, 250, 0,
- 21, 249, 0, 25,
- 249, 0, 27, 249, 0, 29, 249, 0, 79, 249, 0, 83, 249, 10, 86, 255, 218,
- 255, 219, 255,
- 220, 255, 221, 255, 0, 108, 255, 0, 112, 255, 0, 114, 255, 0, 116, 255,
- 27, 80, 254,
- 85, 252, 86, 250, 87, 249, 88, 252, 90, 249, 211, 254, 212, 254, 213, 254,
- 214, 254,
- 215, 254, 217, 254, 218, 250, 219, 250, 220, 250, 221, 250, 222, 249, 0,
- 78, 254,
- 0, 82, 254, 0, 100, 252, 0, 102, 252, 0, 108, 250, 0, 112, 250, 0, 114,
- 250, 0, 116,
- 250, 0, 122, 249, 3, 45, 254, 47, 254, 70, 45, 237, 46, 234, 47, 237, 59,
- 254, 60,
- 254, 66, 237, 80, 250, 98, 237, 102, 237, 112, 237, 115, 237, 118, 237,
- 120, 237,
- 122, 237, 193, 237, 194, 237, 195, 237, 196, 237, 197, 237, 198, 237, 211,
- 250,
- 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 225, 237, 226, 237, 227,
- 237,
- 228, 247, 229, 237, 230, 237, 233, 247, 234, 237, 235, 237, 236, 237, 243,
- 237,
- 244, 237, 245, 237, 246, 247, 247, 237, 249, 237, 250, 237, 251, 237, 252,
- 237,
- 253, 237, 254, 237, 0, 1, 247, 0, 2, 237, 0, 3, 247, 0, 4, 237, 0, 5, 247,
- 0, 6, 237,
- 0, 7, 237, 0, 21, 247, 0, 25, 237, 0, 27, 237, 0, 29, 237, 0, 78, 250, 0,
- 79, 247, 0,
- 82, 250, 0, 83, 237, 0, 87, 237, 0, 89, 237, 0, 91, 237, 0, 109, 247, 0,
- 113, 237, 0,
- 115, 237, 0, 117, 237, 13, 45, 250, 47, 250, 66, 250, 193, 250, 194, 250,
- 195, 250,
- 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250, 65, 45,
- 236, 46, 244,
- 47, 236, 59, 250, 60, 250, 66, 244, 72, 250, 80, 250, 98, 245, 102, 244,
- 112, 244,
- 118, 245, 193, 244, 194, 244, 195, 244, 196, 244, 197, 244, 198, 244, 211,
- 250,
- 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 225, 245, 226, 245, 227,
- 245,
- 228, 245, 229, 245, 230, 245, 233, 244, 234, 244, 235, 244, 236, 244, 243,
- 244,
- 244, 244, 245, 244, 246, 244, 247, 244, 249, 244, 250, 245, 251, 245, 252,
- 245,
- 253, 245, 0, 2, 244, 0, 3, 245, 0, 4, 244, 0, 5, 245, 0, 6, 244, 0, 7,
- 245, 0, 21, 244,
- 0, 25, 244, 0, 27, 244, 0, 29, 244, 0, 32, 250, 0, 36, 250, 0, 78, 250, 0,
- 79, 244, 0,
- 82, 250, 0, 83, 244, 0, 109, 245, 0, 113, 245, 0, 115, 245, 0, 117, 245,
- 63, 45, 244,
- 46, 250, 47, 244, 66, 249, 80, 254, 98, 250, 102, 252, 112, 252, 118, 252,
- 122, 254,
- 193, 249, 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 211, 254, 212,
- 254,
- 213, 254, 214, 254, 215, 254, 217, 254, 225, 250, 226, 250, 227, 250, 228,
- 250,
- 229, 250, 230, 250, 233, 252, 234, 252, 235, 252, 236, 252, 243, 252, 244,
- 252,
- 245, 252, 246, 252, 247, 252, 249, 252, 250, 252, 251, 252, 252, 252, 253,
- 252,
- 254, 254, 0, 1, 254, 0, 2, 249, 0, 3, 250, 0, 4, 249, 0, 5, 250, 0, 6,
- 249, 0, 7, 250,
- 0, 21, 252, 0, 25, 252, 0, 27, 252, 0, 29, 252, 0, 78, 254, 0, 79, 252, 0,
- 82, 254, 0,
- 83, 252, 0, 109, 252, 0, 113, 252, 0, 115, 252, 0, 117, 252, 65, 45, 234,
- 46, 234,
- 47, 234, 59, 247, 60, 247, 66, 239, 80, 243, 98, 234, 102, 234, 106, 254,
- 112, 234,
- 118, 239, 193, 239, 194, 239, 195, 239, 196, 239, 197, 239, 198, 239, 211,
- 243,
- 212, 243, 213, 243, 214, 243, 215, 243, 217, 243, 225, 234, 226, 234, 227,
- 234,
- 228, 234, 229, 234, 230, 234, 233, 234, 234, 234, 235, 234, 236, 234, 238,
- 254,
- 243, 234, 244, 234, 245, 234, 246, 234, 247, 234, 249, 234, 250, 239, 251,
- 239,
- 252, 239, 253, 239, 0, 2, 239, 0, 3, 245, 0, 4, 239, 0, 5, 245, 0, 6, 239,
- 0, 7, 234,
- 0, 21, 245, 0, 25, 234, 0, 27, 234, 0, 29, 234, 0, 49, 254, 0, 78, 243, 0,
- 79, 234, 0,
- 82, 243, 0, 83, 234, 0, 109, 239, 0, 113, 239, 0, 115, 239, 0, 117, 239,
- 6, 119, 254,
- 120, 254, 122, 252, 254, 252, 0, 1, 252, 21, 45, 250, 47, 250, 99, 255,
- 109, 254,
- 118, 254, 119, 254, 122, 254, 250, 254, 251, 254, 252, 254, 253, 254, 254,
- 254,
- 0, 1, 254, 0, 60, 254, 0, 62, 254, 0, 68, 254, 0, 109, 254, 0, 113, 254,
- 0, 115, 254,
- 0, 117, 254, 4, 45, 254, 108, 254, 0, 57, 254, 9, 45, 254, 47, 254, 119,
- 252, 120,
- 254, 121, 252, 122, 254, 254, 254, 0, 1, 254, 34, 45, 252, 47, 252, 98,
- 252, 102,
- 252, 112, 252, 225, 252, 226, 252, 227, 252, 228, 252, 229, 252, 230, 252,
- 233,
- 252, 234, 252, 235, 252, 236, 252, 243, 252, 244, 252, 245, 252, 246, 252,
- 247,
- 252, 249, 252, 0, 3, 252, 0, 5, 252, 0, 7, 252, 0, 21, 252, 0, 25, 252, 0,
- 27, 252, 0,
- 29, 252, 0, 51, 252, 0, 79, 252, 0, 83, 252, 1, 32, 25, 8, 1, 32, 29, 10,
- 5, 115, 255,
- 0, 87, 255, 0, 89, 255, 0, 91, 255, 4, 122, 252, 254, 252, 0, 1, 252, 19,
- 102, 254,
- 112, 254, 233, 254, 234, 254, 235, 254, 236, 254, 243, 254, 244, 254, 245,
- 254,
- 246, 254, 247, 254, 249, 254, 0, 21, 254, 0, 25, 254, 0, 27, 254, 0, 29,
- 254, 0, 79,
- 254, 0, 83, 254, 13, 118, 255, 122, 254, 250, 255, 251, 255, 252, 255,
- 253, 255,
- 254, 254, 0, 1, 254, 0, 109, 255, 0, 113, 255, 0, 115, 255, 0, 117, 255,
- 14, 118, 255,
- 119, 254, 122, 254, 250, 255, 251, 255, 252, 255, 253, 255, 254, 254, 0,
- 1, 254,
- 0, 109, 255, 0, 113, 255, 0, 115, 255, 0, 117, 255, 9, 45, 250, 47, 250,
- 119, 254,
- 120, 254, 121, 252, 122, 252, 254, 252, 0, 1, 252, 6, 45, 251, 47, 251,
- 122, 252,
- 254, 252, 0, 1, 252, 50, 45, 249, 47, 249, 59, 5, 60, 5, 98, 255, 106, 3,
- 108, 3, 109,
- 3, 110, 4, 111, 4, 113, 5, 117, 7, 118, 3, 119, 5, 122, 5, 225, 255, 226,
- 255, 227,
- 255, 228, 255, 229, 255, 230, 255, 237, 3, 238, 3, 239, 3, 240, 3, 242, 4,
- 250, 3,
- 251, 3, 252, 3, 253, 3, 254, 5, 0, 1, 5, 0, 3, 255, 0, 5, 255, 0, 7, 255,
- 0, 45, 3, 0, 49,
- 3, 0, 57, 3, 0, 60, 3, 0, 62, 3, 0, 68, 3, 0, 70, 4, 0, 72, 4, 0, 74, 4,
- 0, 101, 7, 0, 109,
- 3, 0, 113, 3, 0, 115, 3, 0, 117, 3, 4, 45, 254, 47, 254, 120, 252, 31, 45,
- 244, 47, 244,
- 98, 253, 102, 253, 112, 253, 225, 253, 226, 253, 227, 253, 228, 253, 229,
- 253, 230,
- 253, 233, 253, 234, 253, 235, 253, 236, 253, 243, 253, 244, 253, 245, 253,
- 246,
- 253, 247, 253, 249, 253, 0, 3, 253, 0, 5, 253, 0, 7, 253, 0, 21, 253, 0,
- 25, 253, 0,
- 27, 253, 0, 29, 253, 0, 79, 253, 0, 83, 253, 31, 45, 247, 47, 247, 98,
- 254, 102, 255,
- 112, 255, 225, 254, 226, 254, 227, 254, 228, 254, 229, 254, 230, 254, 233,
- 255,
- 234, 255, 235, 255, 236, 255, 243, 255, 244, 255, 245, 255, 246, 255, 247,
- 255,
- 249, 255, 0, 3, 254, 0, 5, 254, 0, 7, 254, 0, 21, 255, 0, 25, 255, 0, 27,
- 255, 0, 29,
- 255, 0, 79, 255, 0, 83, 255, 10, 102, 252, 233, 252, 234, 252, 235, 252,
- 236, 252,
- 0, 21, 252, 0, 25, 252, 0, 27, 252, 0, 29, 252, 31, 45, 240, 47, 240, 98,
- 254, 102,
- 254, 112, 254, 225, 254, 226, 254, 227, 254, 228, 254, 229, 254, 230, 254,
- 233,
- 254, 234, 254, 235, 254, 236, 254, 243, 254, 244, 254, 245, 254, 246, 254,
- 247,
- 254, 249, 254, 0, 3, 254, 0, 5, 254, 0, 7, 254, 0, 21, 254, 0, 25, 254, 0,
- 27, 254, 0,
- 29, 254, 0, 79, 254, 0, 83, 254, 19, 102, 254, 112, 254, 233, 254, 234,
- 254, 235,
- 254, 236, 254, 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254,
- 0, 21,
- 254, 0, 25, 254, 0, 27, 254, 0, 29, 254, 0, 79, 254, 0, 83, 254, 49, 68,
- 252, 72, 252,
- 80, 252, 82, 252, 85, 237, 86, 249, 87, 245, 88, 249, 90, 240, 118, 252,
- 119, 250,
- 120, 250, 122, 250, 200, 252, 211, 252, 212, 252, 213, 252, 214, 252, 215,
- 252,
- 217, 252, 218, 249, 219, 249, 220, 249, 221, 249, 222, 240, 250, 252, 251,
- 252,
- 252, 252, 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0, 14, 252, 0, 32,
- 252, 0, 36, 252,
- 0, 78, 252, 0, 82, 252, 0, 100, 237, 0, 102, 237, 0, 108, 249, 0, 109,
- 252, 0, 112,
- 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0,
- 122, 240,
- 49, 68, 252, 72, 252, 80, 252, 82, 252, 85, 237, 86, 249, 87, 245, 88,
- 249, 90, 240,
- 118, 252, 119, 250, 120, 250, 122, 250, 200, 252, 211, 252, 212, 252, 213,
- 252,
- 214, 252, 215, 252, 217, 252, 218, 249, 219, 249, 220, 249, 221, 249, 222,
- 240,
- 250, 252, 251, 252, 252, 252, 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0,
- 14, 252,
- 0, 32, 252, 0, 36, 252, 0, 78, 252, 0, 82, 252, 0, 100, 237, 0, 102, 237,
- 0, 108, 249,
- 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116,
- 249, 0, 117,
- 252, 0, 122, 240, 49, 68, 252, 72, 252, 80, 252, 82, 252, 85, 237, 86,
- 249, 87, 245,
- 88, 249, 90, 240, 118, 252, 119, 250, 120, 250, 122, 250, 200, 252, 211,
- 252, 212,
- 252, 213, 252, 214, 252, 215, 252, 217, 252, 218, 249, 219, 249, 220, 249,
- 221,
- 249, 222, 240, 250, 252, 251, 252, 252, 252, 253, 252, 254, 250, 0, 1,
- 250, 0, 8,
- 252, 0, 14, 252, 0, 32, 252, 0, 36, 252, 0, 78, 252, 0, 82, 252, 0, 100,
- 237, 0, 102,
- 237, 0, 108, 249, 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0,
- 115, 252,
- 0, 116, 249, 0, 117, 252, 0, 122, 240, 49, 68, 252, 72, 252, 80, 252, 82,
- 252, 85,
- 237, 86, 249, 87, 245, 88, 249, 90, 240, 118, 252, 119, 250, 120, 250,
- 122, 250,
- 200, 252, 211, 252, 212, 252, 213, 252, 214, 252, 215, 252, 217, 252, 218,
- 249,
- 219, 249, 220, 249, 221, 249, 222, 240, 250, 252, 251, 252, 252, 252, 253,
- 252,
- 254, 250, 0, 1, 250, 0, 8, 252, 0, 14, 252, 0, 32, 252, 0, 36, 252, 0, 78,
- 252, 0, 82,
- 252, 0, 100, 237, 0, 102, 237, 0, 108, 249, 0, 109, 252, 0, 112, 249, 0,
- 113, 252,
- 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0, 122, 240, 49, 68,
- 252, 72, 252,
- 80, 252, 82, 252, 85, 237, 86, 249, 87, 245, 88, 249, 90, 240, 118, 252,
- 119, 250,
- 120, 250, 122, 250, 200, 252, 211, 252, 212, 252, 213, 252, 214, 252, 215,
- 252,
- 217, 252, 218, 249, 219, 249, 220, 249, 221, 249, 222, 240, 250, 252, 251,
- 252,
- 252, 252, 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0, 14, 252, 0, 32,
- 252, 0, 36, 252,
- 0, 78, 252, 0, 82, 252, 0, 100, 237, 0, 102, 237, 0, 108, 249, 0, 109,
- 252, 0, 112,
- 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0,
- 122, 240,
- 49, 68, 252, 72, 252, 80, 252, 82, 252, 85, 237, 86, 249, 87, 245, 88,
- 249, 90, 240,
- 118, 252, 119, 250, 120, 250, 122, 250, 200, 252, 211, 252, 212, 252, 213,
- 252,
- 214, 252, 215, 252, 217, 252, 218, 249, 219, 249, 220, 249, 221, 249, 222,
- 240,
- 250, 252, 251, 252, 252, 252, 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0,
- 14, 252,
- 0, 32, 252, 0, 36, 252, 0, 78, 252, 0, 82, 252, 0, 100, 237, 0, 102, 237,
- 0, 108, 249,
- 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116,
- 249, 0, 117,
- 252, 0, 122, 240, 3, 45, 252, 47, 252, 22, 45, 250, 47, 250, 66, 254, 85,
- 250, 87,
- 249, 88, 252, 89, 247, 90, 245, 193, 254, 194, 254, 195, 254, 196, 254,
- 197, 254,
- 198, 254, 222, 245, 0, 2, 254, 0, 4, 254, 0, 6, 254, 0, 100, 250, 0, 102,
- 250, 0, 122,
- 245, 22, 45, 250, 47, 250, 66, 254, 85, 250, 87, 249, 88, 252, 89, 247,
- 90, 245, 193,
- 254, 194, 254, 195, 254, 196, 254, 197, 254, 198, 254, 222, 245, 0, 2,
- 254, 0, 4,
- 254, 0, 6, 254, 0, 100, 250, 0, 102, 250, 0, 122, 245, 22, 45, 250, 47,
- 250, 66, 254,
- 85, 250, 87, 249, 88, 252, 89, 247, 90, 245, 193, 254, 194, 254, 195, 254,
- 196, 254,
- 197, 254, 198, 254, 222, 245, 0, 2, 254, 0, 4, 254, 0, 6, 254, 0, 100,
- 250, 0, 102,
- 250, 0, 122, 245, 22, 45, 250, 47, 250, 66, 254, 85, 250, 87, 249, 88,
- 252, 89, 247,
- 90, 245, 193, 254, 194, 254, 195, 254, 196, 254, 197, 254, 198, 254, 222,
- 245, 0,
- 2, 254, 0, 4, 254, 0, 6, 254, 0, 100, 250, 0, 102, 250, 0, 122, 245, 22,
- 45, 250, 47,
- 250, 66, 254, 85, 250, 87, 249, 88, 252, 89, 247, 90, 245, 193, 254, 194,
- 254, 195,
- 254, 196, 254, 197, 254, 198, 254, 222, 245, 0, 2, 254, 0, 4, 254, 0, 6,
- 254, 0, 100,
- 250, 0, 102, 250, 0, 122, 245, 22, 45, 250, 47, 250, 66, 254, 85, 250, 87,
- 249, 88,
- 252, 89, 247, 90, 245, 193, 254, 194, 254, 195, 254, 196, 254, 197, 254,
- 198, 254,
- 222, 245, 0, 2, 254, 0, 4, 254, 0, 6, 254, 0, 100, 250, 0, 102, 250, 0,
- 122, 245, 13,
- 45, 250, 47, 250, 66, 250, 193, 250, 194, 250, 195, 250, 196, 250, 197,
- 250, 198,
- 250, 0, 2, 250, 0, 4, 250, 0, 6, 250, 13, 45, 250, 47, 250, 66, 250, 193,
- 250, 194,
- 250, 195, 250, 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0, 6,
- 250, 13, 45,
- 250, 47, 250, 66, 250, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250,
- 198, 250,
- 0, 2, 250, 0, 4, 250, 0, 6, 250, 13, 45, 250, 47, 250, 66, 250, 193, 250,
- 194, 250,
- 195, 250, 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250,
- 65, 45, 234,
- 46, 234, 47, 234, 59, 247, 60, 247, 66, 239, 80, 243, 98, 234, 102, 234,
- 106, 254,
- 112, 234, 118, 239, 193, 239, 194, 239, 195, 239, 196, 239, 197, 239, 198,
- 239,
- 211, 243, 212, 243, 213, 243, 214, 243, 215, 243, 217, 243, 225, 234, 226,
- 234,
- 227, 234, 228, 245, 229, 234, 230, 234, 233, 234, 234, 234, 235, 234, 236,
- 234,
- 238, 254, 243, 234, 244, 234, 245, 234, 246, 234, 247, 234, 249, 234, 250,
- 239,
- 251, 239, 252, 239, 253, 239, 0, 2, 239, 0, 3, 245, 0, 4, 239, 0, 5, 245,
- 0, 6, 239,
- 0, 7, 234, 0, 21, 245, 0, 25, 234, 0, 27, 234, 0, 29, 234, 0, 49, 254, 0,
- 78, 243, 0,
- 79, 245, 0, 82, 243, 0, 83, 234, 0, 109, 239, 0, 113, 239, 0, 115, 239, 0,
- 117, 239,
- 6, 119, 254, 120, 254, 122, 252, 254, 252, 0, 1, 252, 6, 119, 254, 120,
- 254, 122,
- 252, 254, 252, 0, 1, 252, 6, 119, 254, 120, 254, 122, 252, 254, 252, 0, 1,
- 252, 6,
- 119, 254, 120, 254, 122, 252, 254, 252, 0, 1, 252, 6, 119, 254, 120, 254,
- 122, 252,
- 254, 252, 0, 1, 252, 6, 119, 254, 120, 254, 122, 252, 254, 252, 0, 1, 252,
- 4, 45, 254,
- 108, 254, 0, 57, 254, 9, 45, 254, 47, 254, 119, 252, 120, 254, 121, 252,
- 122, 254,
- 254, 254, 0, 1, 254, 9, 45, 254, 47, 254, 119, 252, 120, 254, 121, 252,
- 122, 254,
- 254, 254, 0, 1, 254, 9, 45, 254, 47, 254, 119, 252, 120, 254, 121, 252,
- 122, 254,
- 254, 254, 0, 1, 254, 9, 45, 254, 47, 254, 119, 252, 120, 254, 121, 252,
- 122, 254,
- 254, 254, 0, 1, 254, 14, 118, 255, 119, 254, 122, 254, 250, 255, 251, 255,
- 252, 255,
- 253, 255, 254, 254, 0, 1, 254, 0, 109, 255, 0, 113, 255, 0, 115, 255, 0,
- 117, 255,
- 9, 45, 250, 47, 250, 119, 254, 120, 254, 121, 252, 122, 252, 254, 252, 0,
- 1, 252,
- 9, 45, 250, 47, 250, 119, 254, 120, 254, 121, 252, 122, 252, 254, 252, 0,
- 1, 252,
- 9, 45, 250, 47, 250, 119, 254, 120, 254, 121, 252, 122, 252, 254, 252, 0,
- 1, 252,
- 9, 45, 250, 47, 250, 119, 254, 120, 254, 121, 252, 122, 252, 254, 252, 0,
- 1, 252,
- 9, 45, 250, 47, 250, 119, 254, 120, 254, 121, 252, 122, 252, 254, 252, 0,
- 1, 252,
- 95, 45, 241, 47, 241, 98, 248, 99, 248, 100, 248, 101, 248, 102, 248, 103,
- 248, 104,
- 248, 105, 248, 106, 248, 107, 248, 108, 248, 109, 248, 110, 248, 111, 248,
- 112,
- 248, 113, 248, 114, 248, 115, 248, 116, 248, 117, 248, 118, 248, 119, 245,
- 120,
- 245, 121, 243, 122, 245, 123, 248, 225, 248, 226, 248, 227, 248, 228, 248,
- 229,
- 248, 230, 248, 232, 248, 233, 248, 234, 248, 235, 248, 236, 248, 237, 248,
- 238,
- 248, 239, 248, 240, 248, 242, 248, 243, 248, 244, 248, 245, 248, 246, 248,
- 247,
- 248, 249, 248, 250, 248, 251, 248, 252, 248, 253, 248, 254, 245, 0, 1,
- 245, 0, 3,
- 248, 0, 5, 248, 0, 7, 248, 0, 9, 248, 0, 15, 248, 0, 19, 248, 0, 21, 248,
- 0, 25, 248,
- 0, 27, 248, 0, 29, 248, 0, 33, 248, 0, 37, 248, 0, 45, 248, 0, 49, 248, 0,
- 57, 248, 0,
- 60, 248, 0, 62, 248, 0, 68, 248, 0, 70, 248, 0, 72, 248, 0, 74, 248, 0,
- 79, 248, 0, 83,
- 248, 0, 87, 248, 0, 89, 248, 0, 91, 248, 0, 93, 248, 0, 97, 248, 0, 99,
- 248, 0, 101,
- 248, 0, 109, 248, 0, 113, 248, 0, 115, 248, 0, 117, 248, 0, 124, 248, 0,
- 126, 248,
- 0, 128, 248, 1, 2, 25, 248, 31, 45, 240, 47, 240, 98, 254, 102, 254, 112,
- 254, 225,
- 254, 226, 254, 227, 254, 228, 254, 229, 254, 230, 254, 233, 254, 234, 254,
- 235,
- 254, 236, 254, 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254,
- 0, 3,
- 254, 0, 5, 254, 0, 7, 254, 0, 21, 254, 0, 25, 254, 0, 27, 254, 0, 29, 254,
- 0, 79, 254,
- 0, 83, 254, 31, 45, 240, 47, 240, 98, 254, 102, 254, 112, 254, 225, 254,
- 226, 254,
- 227, 254, 228, 254, 229, 254, 230, 254, 233, 254, 234, 254, 235, 254, 236,
- 254,
- 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254, 0, 3, 254, 0,
- 5, 254,
- 0, 7, 254, 0, 21, 254, 0, 25, 254, 0, 27, 254, 0, 29, 254, 0, 79, 254, 0,
- 83, 254, 49,
- 68, 252, 72, 252, 80, 252, 82, 252, 85, 237, 86, 249, 87, 245, 88, 249,
- 90, 240, 118,
- 252, 119, 250, 120, 250, 122, 250, 200, 252, 211, 252, 212, 252, 213, 252,
- 214,
- 252, 215, 252, 217, 252, 218, 249, 219, 249, 220, 249, 221, 249, 222, 240,
- 250,
- 252, 251, 252, 252, 252, 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0, 14,
- 252, 0, 32,
- 252, 0, 36, 252, 0, 78, 252, 0, 82, 252, 0, 100, 237, 0, 102, 237, 0, 108,
- 249, 0, 109,
- 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0,
- 117, 252,
- 0, 122, 240, 6, 119, 254, 120, 254, 122, 252, 254, 252, 0, 1, 252, 49, 68,
- 252, 72,
- 252, 80, 252, 82, 252, 85, 237, 86, 249, 87, 245, 88, 249, 90, 240, 118,
- 252, 119,
- 250, 120, 250, 122, 250, 200, 252, 211, 252, 212, 252, 213, 252, 214, 252,
- 215,
- 252, 217, 252, 218, 249, 219, 249, 220, 249, 221, 249, 222, 240, 250, 252,
- 251,
- 252, 252, 252, 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0, 14, 252, 0,
- 32, 252, 0,
- 36, 252, 0, 78, 252, 0, 82, 252, 0, 100, 237, 0, 102, 237, 0, 108, 249, 0,
- 109, 252,
- 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117,
- 252, 0, 122,
- 240, 6, 119, 254, 120, 254, 122, 252, 254, 252, 0, 1, 252, 49, 68, 252,
- 72, 252, 80,
- 252, 82, 252, 85, 237, 86, 249, 87, 245, 88, 249, 90, 240, 118, 252, 119,
- 250, 120,
- 250, 122, 250, 200, 252, 211, 252, 212, 252, 213, 252, 214, 252, 215, 252,
- 217,
- 252, 218, 249, 219, 249, 220, 249, 221, 249, 222, 240, 250, 252, 251, 252,
- 252,
- 252, 253, 252, 254, 250, 0, 1, 250, 0, 8, 252, 0, 14, 252, 0, 32, 252, 0,
- 36, 252, 0,
- 78, 252, 0, 82, 252, 0, 100, 237, 0, 102, 237, 0, 108, 249, 0, 109, 252,
- 0, 112, 249,
- 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0, 122,
- 240, 6, 119,
- 254, 120, 254, 122, 252, 254, 252, 0, 1, 252, 3, 45, 252, 47, 252, 4, 45,
- 254, 108,
- 254, 0, 57, 254, 3, 45, 252, 47, 252, 4, 45, 254, 108, 254, 0, 57, 254,
- 18, 45, 245,
- 47, 245, 66, 250, 87, 245, 88, 250, 90, 242, 193, 250, 194, 250, 195, 250,
- 196, 250,
- 197, 250, 198, 250, 222, 242, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0, 122,
- 242, 18, 45,
- 245, 47, 245, 66, 250, 87, 245, 88, 250, 90, 242, 193, 250, 194, 250, 195,
- 250, 196,
- 250, 197, 250, 198, 250, 222, 242, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0,
- 122, 242, 9,
- 45, 254, 47, 254, 119, 252, 120, 254, 121, 252, 122, 254, 254, 254, 0, 1,
- 254, 9,
- 45, 254, 47, 254, 119, 252, 120, 254, 121, 252, 122, 254, 254, 254, 0, 1,
- 254, 9,
- 45, 254, 47, 254, 119, 252, 120, 254, 121, 252, 122, 254, 254, 254, 0, 1,
- 254, 9,
- 45, 254, 47, 254, 119, 252, 120, 254, 121, 252, 122, 254, 254, 254, 0, 1,
- 254, 5,
- 115, 255, 0, 87, 255, 0, 89, 255, 0, 91, 255, 5, 115, 255, 0, 87, 255, 0,
- 89, 255, 0,
- 91, 255, 40, 80, 249, 102, 250, 112, 250, 118, 252, 122, 249, 211, 249,
- 212, 249,
- 213, 249, 214, 249, 215, 249, 217, 249, 233, 250, 234, 250, 235, 250, 236,
- 250,
- 243, 250, 244, 250, 245, 250, 246, 250, 247, 250, 249, 250, 250, 252, 251,
- 252,
- 252, 252, 253, 252, 254, 249, 0, 1, 249, 0, 21, 250, 0, 25, 250, 0, 27,
- 250, 0, 29,
- 250, 0, 78, 249, 0, 79, 250, 0, 82, 249, 0, 83, 250, 0, 109, 252, 0, 113,
- 252, 0, 115,
- 252, 0, 117, 252, 19, 102, 254, 112, 254, 233, 254, 234, 254, 235, 254,
- 236, 254,
- 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254, 0, 21, 254, 0,
- 25, 254,
- 0, 27, 254, 0, 29, 254, 0, 79, 254, 0, 83, 254, 14, 85, 239, 87, 239, 88,
- 245, 90, 234,
- 122, 252, 222, 234, 254, 252, 0, 1, 252, 0, 100, 239, 0, 102, 239, 0, 122,
- 234, 1,
- 32, 25, 230, 1, 32, 29, 234, 14, 85, 239, 87, 239, 88, 245, 90, 234, 122,
- 252, 222,
- 234, 254, 252, 0, 1, 252, 0, 100, 239, 0, 102, 239, 0, 122, 234, 1, 32,
- 25, 230, 1,
- 32, 29, 234, 14, 85, 239, 87, 239, 88, 245, 90, 234, 122, 252, 222, 234,
- 254, 252,
- 0, 1, 252, 0, 100, 239, 0, 102, 239, 0, 122, 234, 1, 32, 25, 230, 1, 32,
- 29, 234, 14,
- 85, 239, 87, 239, 88, 245, 90, 234, 122, 252, 222, 234, 254, 252, 0, 1,
- 252, 0, 100,
- 239, 0, 102, 239, 0, 122, 234, 1, 32, 25, 230, 1, 32, 29, 234, 14, 118,
- 255, 119, 254,
- 122, 254, 250, 255, 251, 255, 252, 255, 253, 255, 254, 254, 0, 1, 254, 0,
- 109, 255,
- 0, 113, 255, 0, 115, 255, 0, 117, 255, 14, 118, 255, 119, 254, 122, 254,
- 250, 255,
- 251, 255, 252, 255, 253, 255, 254, 254, 0, 1, 254, 0, 109, 255, 0, 113,
- 255, 0, 115,
- 255, 0, 117, 255, 14, 118, 255, 119, 254, 122, 254, 250, 255, 251, 255,
- 252, 255,
- 253, 255, 254, 254, 0, 1, 254, 0, 109, 255, 0, 113, 255, 0, 115, 255, 0,
- 117, 255,
- 22, 45, 250, 47, 250, 66, 254, 85, 250, 87, 249, 88, 252, 89, 247, 90,
- 245, 193, 254,
- 194, 254, 195, 254, 196, 254, 197, 254, 198, 254, 222, 245, 0, 2, 254, 0,
- 4, 254,
- 0, 6, 254, 0, 100, 250, 0, 102, 250, 0, 122, 245, 9, 45, 250, 47, 250,
- 119, 254, 120,
- 254, 121, 252, 122, 252, 254, 252, 0, 1, 252, 22, 45, 250, 47, 250, 66,
- 254, 85, 250,
- 87, 249, 88, 252, 89, 247, 90, 245, 193, 254, 194, 254, 195, 254, 196,
- 254, 197,
- 254, 198, 254, 222, 245, 0, 2, 254, 0, 4, 254, 0, 6, 254, 0, 100, 250, 0,
- 102, 250,
- 0, 122, 245, 9, 45, 250, 47, 250, 119, 254, 120, 254, 121, 252, 122, 252,
- 254, 252,
- 0, 1, 252, 27, 80, 254, 85, 252, 86, 250, 87, 249, 88, 252, 90, 249, 211,
- 254, 212,
- 254, 213, 254, 214, 254, 215, 254, 217, 254, 218, 250, 219, 250, 220, 250,
- 221,
- 250, 222, 249, 0, 78, 254, 0, 82, 254, 0, 100, 252, 0, 102, 252, 0, 108,
- 250, 0, 112,
- 250, 0, 114, 250, 0, 116, 250, 0, 122, 249, 50, 45, 249, 47, 249, 59, 5,
- 60, 5, 98,
- 255, 106, 3, 108, 3, 109, 3, 110, 4, 111, 4, 113, 5, 117, 7, 118, 3, 119,
- 5, 122, 5,
- 225, 255, 226, 255, 227, 255, 228, 255, 229, 255, 230, 255, 237, 3, 238,
- 3, 239,
- 3, 240, 3, 242, 4, 250, 3, 251, 3, 252, 3, 253, 3, 254, 5, 0, 1, 5, 0, 3,
- 255, 0, 5, 255,
- 0, 7, 255, 0, 45, 3, 0, 49, 3, 0, 57, 3, 0, 60, 3, 0, 62, 3, 0, 68, 3, 0,
- 70, 4, 0, 72, 4,
- 0, 74, 4, 0, 101, 7, 0, 109, 3, 0, 113, 3, 0, 115, 3, 0, 117, 3, 27, 80,
- 254, 85, 252,
- 86, 250, 87, 249, 88, 252, 90, 249, 211, 254, 212, 254, 213, 254, 214,
- 254, 215,
- 254, 217, 254, 218, 250, 219, 250, 220, 250, 221, 250, 222, 249, 0, 78,
- 254, 0, 82,
- 254, 0, 100, 252, 0, 102, 252, 0, 108, 250, 0, 112, 250, 0, 114, 250, 0,
- 116, 250,
- 0, 122, 249, 50, 45, 249, 47, 249, 59, 5, 60, 5, 98, 255, 106, 3, 108, 3,
- 109, 3, 110,
- 4, 111, 4, 113, 5, 117, 7, 118, 3, 119, 5, 122, 5, 225, 255, 226, 255,
- 227, 255, 228,
- 255, 229, 255, 230, 255, 237, 3, 238, 3, 239, 3, 240, 3, 242, 4, 250, 3,
- 251, 3, 252,
- 3, 253, 3, 254, 5, 0, 1, 5, 0, 3, 255, 0, 5, 255, 0, 7, 255, 0, 45, 3, 0,
- 49, 3, 0, 57, 3,
- 0, 60, 3, 0, 62, 3, 0, 68, 3, 0, 70, 4, 0, 72, 4, 0, 74, 4, 0, 101, 7, 0,
- 109, 3, 0, 113,
- 3, 0, 115, 3, 0, 117, 3, 27, 80, 254, 85, 252, 86, 250, 87, 249, 88, 252,
- 90, 249, 211,
- 254, 212, 254, 213, 254, 214, 254, 215, 254, 217, 254, 218, 250, 219, 250,
- 220,
- 250, 221, 250, 222, 249, 0, 78, 254, 0, 82, 254, 0, 100, 252, 0, 102, 252,
- 0, 108,
- 250, 0, 112, 250, 0, 114, 250, 0, 116, 250, 0, 122, 249, 50, 45, 249, 47,
- 249, 59,
- 5, 60, 5, 98, 255, 106, 3, 108, 3, 109, 3, 110, 4, 111, 4, 113, 5, 117, 7,
- 118, 3, 119,
- 5, 122, 5, 225, 255, 226, 255, 227, 255, 228, 255, 229, 255, 230, 255,
- 237, 3, 238,
- 3, 239, 3, 240, 3, 242, 4, 250, 3, 251, 3, 252, 3, 253, 3, 254, 5, 0, 1,
- 5, 0, 3, 255,
- 0, 5, 255, 0, 7, 255, 0, 45, 3, 0, 49, 3, 0, 57, 3, 0, 60, 3, 0, 62, 3, 0,
- 68, 3, 0, 70, 4,
- 0, 72, 4, 0, 74, 4, 0, 101, 7, 0, 109, 3, 0, 113, 3, 0, 115, 3, 0, 117, 3,
- 3, 45, 254, 47,
- 254, 4, 45, 254, 47, 254, 120, 252, 3, 45, 254, 47, 254, 4, 45, 254, 47,
- 254, 120,
- 252, 3, 45, 254, 47, 254, 4, 45, 254, 47, 254, 120, 252, 70, 45, 237, 46,
- 234, 47,
- 237, 59, 254, 60, 254, 66, 237, 80, 250, 98, 237, 102, 237, 112, 237, 115,
- 237, 118,
- 237, 120, 237, 122, 237, 193, 237, 194, 237, 195, 237, 196, 237, 197, 237,
- 198,
- 237, 211, 250, 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 225, 237,
- 226,
- 237, 227, 237, 228, 247, 229, 237, 230, 237, 233, 247, 234, 237, 235, 237,
- 236,
- 237, 243, 237, 244, 237, 245, 237, 246, 247, 247, 237, 249, 237, 250, 237,
- 251,
- 237, 252, 237, 253, 237, 254, 237, 0, 1, 247, 0, 2, 237, 0, 3, 247, 0, 4,
- 237, 0, 5,
- 247, 0, 6, 237, 0, 7, 237, 0, 21, 247, 0, 25, 237, 0, 27, 237, 0, 29, 237,
- 0, 78, 250,
- 0, 79, 247, 0, 82, 250, 0, 83, 237, 0, 87, 237, 0, 89, 237, 0, 91, 237, 0,
- 109, 247,
- 0, 113, 237, 0, 115, 237, 0, 117, 237, 70, 45, 237, 46, 234, 47, 237, 59,
- 254, 60,
- 254, 66, 237, 80, 250, 98, 237, 102, 237, 112, 237, 115, 237, 118, 237,
- 120, 237,
- 122, 237, 193, 237, 194, 237, 195, 237, 196, 237, 197, 237, 198, 237, 211,
- 250,
- 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 225, 237, 226, 237, 227,
- 237,
- 228, 247, 229, 237, 230, 237, 233, 247, 234, 237, 235, 237, 236, 237, 243,
- 237,
- 244, 237, 245, 237, 246, 247, 247, 237, 249, 237, 250, 237, 251, 237, 252,
- 237,
- 253, 237, 254, 237, 0, 1, 247, 0, 2, 237, 0, 3, 247, 0, 4, 237, 0, 5, 247,
- 0, 6, 237,
- 0, 7, 237, 0, 21, 247, 0, 25, 237, 0, 27, 237, 0, 29, 237, 0, 78, 250, 0,
- 79, 247, 0,
- 82, 250, 0, 83, 237, 0, 87, 237, 0, 89, 237, 0, 91, 237, 0, 109, 247, 0,
- 113, 237, 0,
- 115, 237, 0, 117, 237, 13, 45, 250, 47, 250, 66, 250, 193, 250, 194, 250,
- 195, 250,
- 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250, 13, 45,
- 250, 47, 250,
- 66, 250, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 0, 2,
- 250, 0,
- 4, 250, 0, 6, 250, 13, 45, 250, 47, 250, 66, 250, 193, 250, 194, 250, 195,
- 250, 196,
- 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250, 13, 45, 250, 47,
- 250, 66,
- 250, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 0, 2,
- 250, 0, 4,
- 250, 0, 6, 250, 65, 45, 234, 46, 234, 47, 234, 59, 247, 60, 247, 66, 239,
- 80, 243,
- 98, 234, 102, 234, 106, 254, 112, 234, 118, 239, 193, 239, 194, 239, 195,
- 239, 196,
- 239, 197, 239, 198, 239, 211, 243, 212, 243, 213, 243, 214, 243, 215, 243,
- 217,
- 243, 225, 234, 226, 234, 227, 234, 228, 245, 229, 234, 230, 234, 233, 234,
- 234,
- 234, 235, 234, 236, 234, 238, 254, 243, 234, 244, 234, 245, 234, 246, 234,
- 247,
- 234, 249, 234, 250, 239, 251, 239, 252, 239, 253, 239, 0, 2, 239, 0, 3,
- 245, 0, 4,
- 239, 0, 5, 245, 0, 6, 239, 0, 7, 234, 0, 21, 245, 0, 25, 234, 0, 27, 234,
- 0, 29, 234,
- 0, 49, 254, 0, 78, 243, 0, 79, 234, 0, 82, 243, 0, 83, 234, 0, 109, 239,
- 0, 113, 239,
- 0, 115, 239, 0, 117, 239, 19, 102, 254, 112, 254, 233, 254, 234, 254, 235,
- 254, 236,
- 254, 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254, 0, 21,
- 254, 0, 25,
- 254, 0, 27, 254, 0, 29, 254, 0, 79, 254, 0, 83, 254, 19, 102, 254, 112,
- 254, 233, 254,
- 234, 254, 235, 254, 236, 254, 243, 254, 244, 254, 245, 254, 246, 254, 247,
- 254,
- 249, 254, 0, 21, 254, 0, 25, 254, 0, 27, 254, 0, 29, 254, 0, 79, 254, 0,
- 83, 254, 19,
- 102, 254, 112, 254, 233, 254, 234, 254, 235, 254, 236, 254, 243, 254, 244,
- 254,
- 245, 254, 246, 254, 247, 254, 249, 254, 0, 21, 254, 0, 25, 254, 0, 27,
- 254, 0, 29,
- 254, 0, 79, 254, 0, 83, 254, 3, 45, 254, 47, 254, 4, 45, 254, 47, 254,
- 120, 252, 2,
- 1, 32, 24, 247, 14, 33, 245, 101, 249, 115, 249, 116, 249, 0, 19, 249, 0,
- 87, 249,
- 0, 89, 249, 0, 91, 249, 0, 93, 249, 0, 97, 249, 0, 99, 249, 1, 2, 25, 249,
- 1, 32, 25,
- 247, 2, 33, 250
-};
-static afm_cuint16 afm_Helvetica_Oblique_highchars_index[] = { /* 220 */
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176,
- 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257,
- 258, 259, 260, 261, 262, 263, 268, 269, 270, 271, 272, 273, 274, 275, 278,
- 279,
- 280, 281, 282, 283, 286, 287, 290, 291, 298, 299, 302, 303, 304, 305, 310,
- 311,
- 313, 314, 315, 316, 317, 318, 321, 322, 323, 324, 325, 326, 327, 328, 332,
- 333,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 350, 351, 352,
- 353,
- 354, 355, 356, 357, 362, 363, 366, 367, 368, 369, 370, 371, 376, 377, 378,
- 379,
- 380, 381, 382, 402, 536, 537, 710, 711, 728, 729, 730, 731, 732, 733,
- 8211, 8212,
- 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8249,
- 8250,
- 8260, 8364, 8482, 8706, 8710, 8721, 8722, 8730, 8800, 8804, 8805, 9674,
- 63171,
- 64257, 64258
-};
-static afm_cunicode afm_Helvetica_Oblique_ligatures[] = { /* 3 */
- 102, 105, 64257
-};
-
-
-/* ------------------------------------------------------------------*/
-/* FontName: ZapfDingbats */
-/* FullName: ITC Zapf Dingbats */
-/* FamilyName: ZapfDingbats */
-static afm_cuint8 afm_ZapfDingbats_widths[] = { /* 202 */
- 46, 162, 160, 162, 163, 120, 132, 132, 132, 115, 160, 157, 92, 143, 152,
- 156, 152,
- 158, 162, 126, 141, 127, 127, 95, 113, 127, 127, 127, 126, 82, 92, 90, 96,
- 115, 131,
- 131, 131, 132, 132, 132, 136, 137, 132, 140, 137, 139, 136, 139, 154, 124,
- 121,
- 125, 132, 132, 116, 129, 128, 132, 127, 118, 118, 114, 117, 138, 136, 132,
- 132,
- 118, 115, 116, 115, 131, 131, 119, 132, 131, 132, 146, 127, 127, 127, 127,
- 127,
- 149, 149, 131, 131, 73, 23, 46, 69, 65, 65, 111, 111, 65, 65, 53, 53, 46,
- 46, 85, 85,
- 68, 68, 39, 39, 56, 56, 122, 91, 91, 152, 111, 127, 127, 129, 99, 116,
- 104, 131, 131,
- 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
- 131,
- 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131,
- 131,
- 131, 131, 131, 131, 131, 131, 149, 140, 169, 76, 125, 154, 125, 153, 155,
- 155, 155,
- 139, 146, 138, 154, 154, 153, 155, 155, 77, 147, 139, 139, 145, 145, 116,
- 116, 146,
- 146, 127, 158, 129, 144, 129, 148, 161, 148, 139, 146, 155, 162, 153
-};
-static afm_cuint16 afm_ZapfDingbats_highchars_index[] = { /* 107 */
- 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 161,
- 162,
- 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177,
- 178,
- 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
- 194,
- 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
- 210,
- 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225,
- 226,
- 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 241, 242,
- 243,
- 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254
-};
-
-
-/* ------------------------------------------------------------------*/
-/* FontName: Symbol */
-/* FullName: Symbol */
-/* FamilyName: Symbol */
-static afm_cuint8 afm_Symbol_widths[] = { /* 251 */
- 42, 56, 0, 83, 0, 139, 130, 0, 56, 56, 0, 92, 42, 0, 42, 46, 83, 83, 83,
- 83, 83, 83, 83,
- 83, 83, 83, 46, 46, 92, 92, 92, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 56, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 33, 80, 0, 119, 67, 92, 96, 92, 92, 83,
- 120, 111, 101, 102,
- 102, 120, 124, 56, 120, 114, 148, 120, 108, 120, 128, 93, 99, 102, 115,
- 127, 120,
- 133, 105, 92, 69, 82, 73, 82, 101, 87, 55, 92, 92, 87, 82, 92, 92, 92, 73,
- 101, 73,
- 96, 87, 92, 114, 114, 105, 103, 101, 119, 77, 167, 41, 69, 28, 125, 114,
- 165, 133,
- 128, 137, 165, 101, 165, 101, 174, 110, 165, 101, 165, 101, 174, 119, 82,
- 92, 137,
- 102, 119, 119, 119, 73, 137, 119, 92, 83, 92, 119, 119, 128, 101, 101,
- 128, 128,
- 46, 144, 92, 92, 92, 92, 92, 92, 92, 119, 119, 119, 119, 119, 128, 128,
- 110, 42, 114,
- 114, 55, 55, 82, 126, 126, 126, 126, 132, 132, 148, 83, 101, 167, 132,
- 132, 131,
- 64, 64, 64, 64, 64, 64, 82, 82, 82, 82, 114, 64, 64, 64, 64, 64, 64, 82,
- 82, 82
-};
-static afm_cuint16 afm_Symbol_highchars_index[] = { /* 156 */
- 172, 176, 177, 181, 215, 247, 402, 913, 914, 915, 917, 918, 919, 920, 921,
- 922,
- 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 945, 946,
- 947,
- 948, 949, 950, 951, 952, 953, 954, 955, 957, 958, 959, 960, 961, 962, 963,
- 964,
- 965, 966, 967, 968, 969, 977, 978, 981, 982, 8226, 8230, 8242, 8243, 8260,
- 8364,
- 8465, 8472, 8476, 8486, 8501, 8592, 8593, 8594, 8595, 8596, 8629, 8656,
- 8657,
- 8658, 8659, 8660, 8704, 8706, 8707, 8709, 8710, 8711, 8712, 8713, 8715,
- 8719,
- 8721, 8722, 8727, 8730, 8733, 8734, 8736, 8743, 8744, 8745, 8746, 8747,
- 8756,
- 8764, 8773, 8776, 8800, 8801, 8804, 8805, 8834, 8835, 8836, 8838, 8839,
- 8853,
- 8855, 8869, 8901, 8992, 8993, 9001, 9002, 9674, 9824, 9827, 9829, 9830,
- 63193,
- 63194, 63195, 63717, 63718, 63719, 63720, 63721, 63722, 63723, 63724,
- 63725,
- 63726, 63727, 63728, 63729, 63730, 63731, 63732, 63733, 63734, 63735,
- 63736,
- 63737, 63738, 63739, 63740, 63741, 63742
-};
-
-
-/* ------------------------------------------------------------------*/
-/* FontName: Times-Bold */
-/* FullName: Times Bold */
-/* FamilyName: Times */
-static afm_cuint8 afm_Times_Bold_widths[] = { /* 315 */
- 42, 56, 93, 83, 83, 167, 139, 46, 56, 56, 83, 95, 42, 56, 42, 46, 83, 83,
- 83, 83, 83,
- 83, 83, 83, 83, 83, 56, 56, 95, 95, 95, 83, 155, 120, 111, 120, 120, 111,
- 102, 130,
- 130, 65, 83, 130, 111, 157, 120, 130, 102, 130, 120, 93, 111, 120, 120,
- 167, 120,
- 120, 111, 56, 46, 56, 97, 83, 56, 83, 93, 74, 93, 74, 56, 83, 93, 46, 56,
- 93, 46, 139,
- 93, 83, 93, 93, 74, 65, 56, 93, 83, 120, 83, 83, 74, 66, 37, 66, 87, 56,
- 83, 83, 83,
- 83, 37, 83, 56, 125, 50, 83, 95, 125, 56, 67, 95, 50, 50, 56, 93, 90, 42,
- 56, 50, 55,
- 83, 125, 125, 125, 83, 120, 120, 120, 120, 120, 120, 167, 120, 111, 111,
- 111, 111,
- 65, 65, 65, 65, 120, 120, 130, 130, 130, 130, 130, 95, 130, 120, 120, 120,
- 120, 120,
- 102, 93, 83, 83, 83, 83, 83, 83, 120, 74, 74, 74, 74, 74, 46, 46, 46, 46,
- 83, 93, 83,
- 83, 83, 83, 83, 95, 83, 93, 93, 93, 93, 83, 93, 83, 120, 83, 120, 83, 120,
- 83, 120,
- 74, 120, 74, 120, 112, 120, 93, 111, 74, 111, 74, 111, 74, 111, 74, 130,
- 83, 130,
- 83, 65, 46, 65, 46, 65, 46, 130, 93, 111, 46, 111, 46, 111, 66, 111, 46,
- 120, 93, 120,
- 93, 120, 93, 130, 83, 130, 83, 167, 120, 120, 74, 120, 74, 120, 74, 93,
- 65, 93, 65,
- 93, 65, 111, 56, 111, 69, 120, 93, 120, 93, 120, 93, 120, 93, 120, 111,
- 74, 111, 74,
- 111, 74, 83, 93, 65, 56, 56, 56, 56, 56, 56, 56, 56, 83, 167, 56, 56, 56,
- 83, 83, 83,
- 83, 83, 58, 167, 167, 56, 56, 28, 83, 167, 82, 102, 100, 95, 92, 92, 92,
- 92, 82, 42,
- 93, 93
-};
-static afm_sint16 afm_Times_Bold_kerning_index[] = { /* 315 */
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 62, 183, 0, 229, 0, 266, 0, 0, 0, 359, 472, 564, 0, 599, 623, 668,
- 761, 786, 0,
- 848, 1016, 1044, 1209, 0, 1364, 0, 0, 0, 0, 0, 0, 0, 1512, 1515, 0, 1544,
- 1547, 1550,
- 1588, 1591, 1599, 0, 1602, 0, 0, 1652, 1655, 0, 0, 1660, 0, 0, 0, 1746,
- 1816, 0, 1841,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1888, 2009, 2130, 2251, 2372, 2493, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 2614, 2638,
- 2683, 2728, 2773, 2818, 0, 2863, 2908, 2936, 2964, 2992, 3020, 0, 0, 3168,
- 3171,
- 3174, 3177, 3180, 3183, 0, 0, 3186, 3189, 3192, 3195, 3198, 3201, 3204,
- 3207,
- 0, 3210, 3213, 3218, 3223, 3228, 3233, 0, 3238, 0, 0, 0, 0, 3243, 0, 3290,
- 3337,
- 3458, 3461, 3582, 3585, 3706, 0, 0, 0, 0, 3709, 0, 3746, 3783, 0, 3786, 0,
- 3789,
- 0, 3792, 0, 3795, 0, 3798, 0, 3801, 0, 3804, 0, 3807, 0, 0, 3810, 3902,
- 3952, 0, 3987,
- 0, 0, 0, 4022, 0, 4057, 4081, 4084, 4108, 4111, 4135, 4138, 4183, 4188,
- 4233, 0,
- 0, 4238, 4300, 4386, 4448, 4534, 4596, 0, 0, 0, 0, 0, 0, 4682, 0, 4850, 0,
- 5018, 0,
- 5046, 0, 5074, 0, 5102, 0, 5130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,
- 5278, 5306, 0, 5346, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0
-};
-static afm_cuint8 afm_Times_Bold_kerning_data[] = { /* 5370 */
- 42, 19, 66, 248, 85, 252, 87, 249, 88, 252, 90, 248, 193, 248, 194, 248,
- 195, 248,
- 196, 248, 197, 248, 198, 248, 222, 248, 0, 2, 248, 0, 4, 248, 0, 6, 248,
- 0, 100, 252,
- 0, 102, 252, 0, 122, 248, 3, 1, 32, 25, 248, 1, 32, 29, 249, 3, 1, 32, 25,
- 248, 1, 32,
- 29, 248, 51, 68, 248, 72, 248, 80, 249, 82, 249, 85, 241, 86, 249, 87,
- 233, 88, 235,
- 90, 240, 113, 253, 118, 249, 119, 240, 120, 242, 122, 245, 200, 248, 211,
- 249, 212,
- 249, 213, 249, 214, 249, 215, 249, 217, 249, 218, 249, 219, 249, 220, 249,
- 221,
- 249, 222, 240, 250, 249, 251, 249, 252, 249, 253, 249, 254, 245, 0, 1,
- 245, 0, 8,
- 248, 0, 14, 248, 0, 32, 248, 0, 36, 248, 0, 78, 249, 0, 82, 249, 0, 100,
- 241, 0, 102,
- 241, 0, 108, 249, 0, 109, 249, 0, 112, 249, 0, 113, 249, 0, 114, 249, 0,
- 115, 249,
- 0, 116, 249, 0, 117, 249, 0, 122, 240, 1, 32, 25, 245, 20, 66, 252, 86,
- 255, 193, 252,
- 194, 252, 195, 252, 196, 252, 197, 252, 198, 252, 218, 255, 219, 255, 220,
- 255,
- 221, 255, 0, 2, 252, 0, 4, 252, 0, 6, 252, 0, 108, 255, 0, 112, 255, 0,
- 114, 255, 0,
- 116, 255, 17, 47, 254, 66, 251, 87, 250, 88, 250, 90, 250, 193, 251, 194,
- 251, 195,
- 251, 196, 251, 197, 251, 198, 251, 222, 250, 0, 2, 251, 0, 4, 251, 0, 6,
- 251, 0, 122,
- 250, 41, 45, 242, 47, 239, 66, 242, 98, 253, 102, 253, 112, 253, 193, 242,
- 194, 242,
- 195, 242, 196, 242, 197, 242, 198, 242, 225, 253, 226, 253, 227, 253, 228,
- 253,
- 229, 253, 230, 253, 233, 253, 234, 253, 235, 253, 236, 253, 243, 253, 244,
- 253,
- 245, 253, 246, 253, 247, 253, 249, 253, 0, 2, 242, 0, 3, 253, 0, 4, 242,
- 0, 5, 253,
- 0, 6, 242, 0, 7, 253, 0, 21, 253, 0, 25, 253, 0, 27, 253, 0, 29, 253, 0,
- 79, 253, 0, 83,
- 253, 49, 47, 254, 66, 252, 98, 254, 102, 254, 112, 254, 118, 254, 193,
- 252, 194,
- 252, 195, 252, 196, 252, 197, 252, 198, 252, 225, 254, 226, 254, 227, 254,
- 228,
- 254, 229, 254, 230, 254, 233, 254, 234, 254, 235, 254, 236, 254, 243, 254,
- 244,
- 254, 245, 254, 246, 254, 247, 254, 249, 254, 250, 254, 251, 254, 252, 254,
- 253,
- 254, 0, 2, 252, 0, 3, 254, 0, 4, 252, 0, 5, 254, 0, 6, 252, 0, 7, 254, 0,
- 21, 254, 0, 25,
- 254, 0, 27, 254, 0, 29, 254, 0, 79, 254, 0, 83, 254, 0, 109, 254, 0, 113,
- 254, 0, 115,
- 254, 0, 117, 254, 40, 80, 252, 102, 253, 112, 253, 118, 254, 122, 249,
- 211, 252,
- 212, 252, 213, 252, 214, 252, 215, 252, 217, 252, 233, 253, 234, 253, 235,
- 253,
- 236, 253, 243, 253, 244, 253, 245, 253, 246, 253, 247, 253, 249, 253, 250,
- 254,
- 251, 254, 252, 254, 253, 254, 254, 249, 0, 1, 249, 0, 21, 253, 0, 25, 253,
- 0, 27, 253,
- 0, 29, 253, 0, 78, 252, 0, 79, 253, 0, 82, 252, 0, 83, 253, 0, 109, 254,
- 0, 113, 254,
- 0, 115, 254, 0, 117, 254, 14, 85, 242, 87, 242, 88, 242, 90, 242, 122,
- 248, 222, 242,
- 254, 248, 0, 1, 248, 0, 100, 242, 0, 102, 242, 0, 122, 242, 1, 32, 25,
- 239, 1, 32, 29,
- 254, 11, 66, 254, 193, 254, 194, 254, 195, 254, 196, 254, 197, 254, 198,
- 254, 0,
- 2, 254, 0, 4, 254, 0, 6, 254, 20, 66, 250, 85, 250, 87, 249, 88, 249, 89,
- 250, 90, 249,
- 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 222, 249, 0,
- 2, 250,
- 0, 4, 250, 0, 6, 250, 0, 100, 250, 0, 102, 250, 0, 122, 249, 41, 45, 242,
- 47, 239, 66,
- 245, 98, 255, 102, 254, 112, 254, 193, 245, 194, 245, 195, 245, 196, 245,
- 197, 245,
- 198, 245, 225, 255, 226, 255, 227, 255, 228, 255, 229, 255, 230, 255, 233,
- 254,
- 234, 254, 235, 254, 236, 254, 243, 254, 244, 254, 245, 254, 246, 254, 247,
- 254,
- 249, 254, 0, 2, 245, 0, 3, 255, 0, 4, 245, 0, 5, 255, 0, 6, 245, 0, 7,
- 255, 0, 21, 254,
- 0, 25, 254, 0, 27, 254, 0, 29, 254, 0, 79, 254, 0, 83, 254, 11, 47, 254,
- 86, 255, 218,
- 255, 219, 255, 220, 255, 221, 255, 0, 108, 255, 0, 112, 255, 0, 114, 255,
- 0, 116,
- 255, 27, 80, 252, 85, 250, 86, 252, 87, 248, 88, 251, 90, 251, 211, 252,
- 212, 252,
- 213, 252, 214, 252, 215, 252, 217, 252, 218, 252, 219, 252, 220, 252, 221,
- 252,
- 222, 251, 0, 78, 252, 0, 82, 252, 0, 100, 250, 0, 102, 250, 0, 108, 252,
- 0, 112, 252,
- 0, 114, 252, 0, 116, 252, 0, 122, 251, 73, 45, 245, 46, 242, 47, 242, 59,
- 245, 60,
- 245, 66, 242, 80, 254, 98, 242, 102, 242, 106, 254, 112, 242, 115, 245,
- 118, 242,
- 120, 245, 122, 251, 193, 242, 194, 242, 195, 242, 196, 242, 197, 242, 198,
- 242,
- 211, 254, 212, 254, 213, 254, 214, 254, 215, 254, 217, 254, 225, 248, 226,
- 242,
- 227, 248, 228, 248, 229, 248, 230, 242, 233, 248, 234, 242, 235, 242, 236,
- 248,
- 238, 254, 243, 242, 244, 242, 245, 242, 246, 242, 247, 242, 249, 242, 250,
- 242,
- 251, 242, 252, 242, 253, 242, 254, 251, 0, 1, 251, 0, 2, 242, 0, 3, 248,
- 0, 4, 242,
- 0, 5, 248, 0, 6, 242, 0, 7, 242, 0, 21, 248, 0, 25, 242, 0, 27, 242, 0,
- 29, 242, 0, 49,
- 254, 0, 78, 254, 0, 79, 242, 0, 82, 254, 0, 83, 242, 0, 87, 245, 0, 89,
- 245, 0, 91, 245,
- 0, 109, 242, 0, 113, 242, 0, 115, 242, 0, 117, 242, 13, 45, 249, 47, 249,
- 66, 247,
- 193, 247, 194, 247, 195, 247, 196, 247, 197, 247, 198, 247, 0, 2, 247, 0,
- 4, 247,
- 0, 6, 247, 72, 45, 235, 46, 245, 47, 233, 59, 242, 60, 242, 66, 234, 72,
- 252, 80, 249,
- 98, 242, 102, 240, 106, 251, 112, 240, 118, 242, 193, 234, 194, 234, 195,
- 234, 196,
- 234, 197, 234, 198, 234, 211, 249, 212, 249, 213, 249, 214, 249, 215, 249,
- 217,
- 249, 225, 242, 226, 242, 227, 242, 228, 242, 229, 242, 230, 242, 233, 240,
- 234,
- 240, 235, 240, 236, 240, 237, 251, 238, 251, 239, 251, 240, 251, 243, 240,
- 244,
- 240, 245, 240, 246, 240, 247, 240, 249, 240, 250, 242, 251, 242, 252, 242,
- 253,
- 242, 0, 2, 234, 0, 3, 242, 0, 4, 234, 0, 5, 242, 0, 6, 234, 0, 7, 242, 0,
- 21, 240, 0, 25,
- 240, 0, 27, 240, 0, 29, 240, 0, 32, 252, 0, 36, 252, 0, 45, 251, 0, 49,
- 251, 0, 78, 249,
- 0, 79, 240, 0, 82, 249, 0, 83, 240, 0, 109, 242, 0, 113, 242, 0, 115, 242,
- 0, 117, 242,
- 68, 45, 242, 46, 251, 47, 242, 59, 248, 60, 248, 66, 237, 80, 255, 98,
- 246, 102, 246,
- 106, 254, 112, 244, 118, 249, 122, 247, 193, 237, 194, 237, 195, 237, 196,
- 237,
- 197, 237, 198, 237, 211, 255, 212, 255, 213, 255, 214, 255, 215, 255, 217,
- 255,
- 225, 246, 226, 246, 227, 246, 228, 246, 229, 246, 230, 246, 233, 246, 234,
- 246,
- 235, 246, 236, 246, 238, 254, 243, 244, 244, 244, 245, 244, 246, 244, 247,
- 244,
- 249, 244, 250, 249, 251, 249, 252, 249, 253, 249, 254, 247, 0, 1, 247, 0,
- 2, 237,
- 0, 3, 246, 0, 4, 237, 0, 5, 246, 0, 6, 237, 0, 7, 246, 0, 21, 246, 0, 25,
- 246, 0, 27, 246,
- 0, 29, 246, 0, 49, 254, 0, 78, 255, 0, 79, 244, 0, 82, 255, 0, 83, 244, 0,
- 109, 249,
- 0, 113, 249, 0, 115, 249, 0, 117, 249, 65, 45, 242, 46, 242, 47, 242, 59,
- 242, 60,
- 242, 66, 239, 80, 251, 98, 243, 102, 238, 106, 251, 112, 238, 118, 242,
- 193, 239,
- 194, 239, 195, 239, 196, 239, 197, 239, 198, 239, 211, 251, 212, 251, 213,
- 251,
- 214, 251, 215, 251, 217, 251, 225, 243, 226, 243, 227, 243, 228, 243, 229,
- 243,
- 230, 243, 233, 245, 234, 238, 235, 238, 236, 245, 238, 251, 243, 238, 244,
- 238,
- 245, 238, 246, 238, 247, 238, 249, 238, 250, 242, 251, 242, 252, 242, 253,
- 242,
- 0, 2, 239, 0, 3, 243, 0, 4, 239, 0, 5, 243, 0, 6, 239, 0, 7, 243, 0, 21,
- 245, 0, 25, 238,
- 0, 27, 238, 0, 29, 238, 0, 49, 251, 0, 78, 251, 0, 79, 238, 0, 82, 251, 0,
- 83, 238, 0,
- 109, 242, 0, 113, 242, 0, 115, 242, 0, 117, 242, 2, 119, 253, 13, 47, 250,
- 99, 255,
- 118, 254, 119, 254, 250, 254, 251, 254, 252, 254, 253, 254, 0, 109, 254,
- 0, 113,
- 254, 0, 115, 254, 0, 117, 254, 2, 120, 254, 2, 119, 254, 16, 45, 254, 47,
- 254, 106,
- 253, 112, 253, 243, 253, 244, 253, 245, 253, 246, 253, 247, 253, 249, 253,
- 0, 51,
- 251, 0, 79, 253, 0, 83, 253, 1, 32, 25, 9, 1, 32, 29, 8, 2, 47, 254, 4,
- 122, 254, 254,
- 254, 0, 1, 254, 2, 119, 255, 22, 102, 255, 112, 254, 122, 254, 233, 255,
- 234, 255,
- 235, 255, 236, 255, 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249,
- 254,
- 254, 254, 0, 1, 254, 0, 21, 255, 0, 25, 255, 0, 27, 255, 0, 29, 255, 0,
- 79, 254, 0, 83,
- 254, 2, 119, 250, 3, 119, 255, 120, 255, 37, 45, 242, 46, 251, 47, 240,
- 100, 254,
- 102, 254, 104, 255, 111, 254, 112, 254, 113, 255, 114, 254, 119, 255, 232,
- 254,
- 233, 254, 234, 254, 235, 254, 236, 254, 242, 254, 243, 254, 244, 254, 245,
- 254,
- 246, 254, 247, 254, 249, 254, 0, 9, 254, 0, 15, 254, 0, 21, 254, 0, 25,
- 254, 0, 27,
- 254, 0, 29, 254, 0, 33, 255, 0, 37, 255, 0, 70, 254, 0, 72, 254, 0, 74,
- 254, 0, 79, 254,
- 0, 83, 254, 31, 45, 248, 47, 245, 98, 255, 102, 255, 112, 255, 225, 255,
- 226, 255,
- 227, 255, 228, 255, 229, 255, 230, 255, 233, 255, 234, 255, 235, 255, 236,
- 255,
- 243, 255, 244, 255, 245, 255, 246, 255, 247, 255, 249, 255, 0, 3, 255, 0,
- 5, 255,
- 0, 7, 255, 0, 21, 255, 0, 25, 255, 0, 27, 255, 0, 29, 255, 0, 79, 255, 0,
- 83, 255, 12,
- 45, 248, 47, 245, 112, 255, 243, 255, 244, 255, 245, 255, 246, 255, 247,
- 255, 249,
- 255, 0, 79, 255, 0, 83, 255, 21, 45, 248, 47, 245, 102, 255, 112, 253,
- 233, 255, 234,
- 255, 235, 255, 236, 255, 243, 253, 244, 253, 245, 253, 246, 253, 247, 253,
- 249,
- 253, 0, 21, 255, 0, 25, 255, 0, 27, 255, 0, 29, 255, 0, 79, 253, 0, 83,
- 253, 51, 68,
- 248, 72, 248, 80, 249, 82, 249, 85, 241, 86, 249, 87, 233, 88, 235, 90,
- 240, 113,
- 253, 118, 249, 119, 240, 120, 242, 122, 245, 200, 248, 211, 249, 212, 249,
- 213,
- 249, 214, 249, 215, 249, 217, 249, 218, 249, 219, 249, 220, 249, 221, 249,
- 222,
- 240, 250, 249, 251, 249, 252, 249, 253, 249, 254, 245, 0, 1, 245, 0, 8,
- 248, 0, 14,
- 248, 0, 32, 248, 0, 36, 248, 0, 78, 249, 0, 82, 249, 0, 100, 241, 0, 102,
- 241, 0, 108,
- 249, 0, 109, 249, 0, 112, 249, 0, 113, 249, 0, 114, 249, 0, 115, 249, 0,
- 116, 249,
- 0, 117, 249, 0, 122, 240, 1, 32, 25, 245, 51, 68, 248, 72, 248, 80, 249,
- 82, 249, 85,
- 241, 86, 249, 87, 233, 88, 235, 90, 240, 113, 253, 118, 249, 119, 240,
- 120, 242,
- 122, 245, 200, 248, 211, 249, 212, 249, 213, 249, 214, 249, 215, 249, 217,
- 249,
- 218, 249, 219, 249, 220, 249, 221, 249, 222, 240, 250, 249, 251, 249, 252,
- 249,
- 253, 249, 254, 245, 0, 1, 245, 0, 8, 248, 0, 14, 248, 0, 32, 248, 0, 36,
- 248, 0, 78,
- 249, 0, 82, 249, 0, 100, 241, 0, 102, 241, 0, 108, 249, 0, 109, 249, 0,
- 112, 249, 0,
- 113, 249, 0, 114, 249, 0, 115, 249, 0, 116, 249, 0, 117, 249, 0, 122, 240,
- 1, 32, 25,
- 245, 51, 68, 248, 72, 248, 80, 249, 82, 249, 85, 241, 86, 249, 87, 233,
- 88, 235, 90,
- 240, 113, 253, 118, 249, 119, 240, 120, 242, 122, 245, 200, 248, 211, 249,
- 212,
- 249, 213, 249, 214, 249, 215, 249, 217, 249, 218, 249, 219, 249, 220, 249,
- 221,
- 249, 222, 240, 250, 249, 251, 249, 252, 249, 253, 249, 254, 245, 0, 1,
- 245, 0, 8,
- 248, 0, 14, 248, 0, 32, 248, 0, 36, 248, 0, 78, 249, 0, 82, 249, 0, 100,
- 241, 0, 102,
- 241, 0, 108, 249, 0, 109, 249, 0, 112, 249, 0, 113, 249, 0, 114, 249, 0,
- 115, 249,
- 0, 116, 249, 0, 117, 249, 0, 122, 240, 1, 32, 25, 245, 51, 68, 248, 72,
- 248, 80, 249,
- 82, 249, 85, 241, 86, 249, 87, 233, 88, 235, 90, 240, 113, 253, 118, 249,
- 119, 240,
- 120, 242, 122, 245, 200, 248, 211, 249, 212, 249, 213, 249, 214, 249, 215,
- 249,
- 217, 249, 218, 249, 219, 249, 220, 249, 221, 249, 222, 240, 250, 249, 251,
- 249,
- 252, 249, 253, 249, 254, 245, 0, 1, 245, 0, 8, 248, 0, 14, 248, 0, 32,
- 248, 0, 36, 248,
- 0, 78, 249, 0, 82, 249, 0, 100, 241, 0, 102, 241, 0, 108, 249, 0, 109,
- 249, 0, 112,
- 249, 0, 113, 249, 0, 114, 249, 0, 115, 249, 0, 116, 249, 0, 117, 249, 0,
- 122, 240,
- 1, 32, 25, 245, 51, 68, 248, 72, 248, 80, 249, 82, 249, 85, 241, 86, 249,
- 87, 233,
- 88, 235, 90, 240, 113, 253, 118, 249, 119, 240, 120, 242, 122, 245, 200,
- 248, 211,
- 249, 212, 249, 213, 249, 214, 249, 215, 249, 217, 249, 218, 249, 219, 249,
- 220,
- 249, 221, 249, 222, 240, 250, 249, 251, 249, 252, 249, 253, 249, 254, 245,
- 0, 1,
- 245, 0, 8, 248, 0, 14, 248, 0, 32, 248, 0, 36, 248, 0, 78, 249, 0, 82,
- 249, 0, 100, 241,
- 0, 102, 241, 0, 108, 249, 0, 109, 249, 0, 112, 249, 0, 113, 249, 0, 114,
- 249, 0, 115,
- 249, 0, 116, 249, 0, 117, 249, 0, 122, 240, 1, 32, 25, 245, 51, 68, 248,
- 72, 248, 80,
- 249, 82, 249, 85, 241, 86, 249, 87, 233, 88, 235, 90, 240, 113, 253, 118,
- 249, 119,
- 240, 120, 242, 122, 245, 200, 248, 211, 249, 212, 249, 213, 249, 214, 249,
- 215,
- 249, 217, 249, 218, 249, 219, 249, 220, 249, 221, 249, 222, 240, 250, 249,
- 251,
- 249, 252, 249, 253, 249, 254, 245, 0, 1, 245, 0, 8, 248, 0, 14, 248, 0,
- 32, 248, 0,
- 36, 248, 0, 78, 249, 0, 82, 249, 0, 100, 241, 0, 102, 241, 0, 108, 249, 0,
- 109, 249,
- 0, 112, 249, 0, 113, 249, 0, 114, 249, 0, 115, 249, 0, 116, 249, 0, 117,
- 249, 0, 122,
- 240, 1, 32, 25, 245, 11, 66, 254, 193, 254, 194, 254, 195, 254, 196, 254,
- 197, 254,
- 198, 254, 0, 2, 254, 0, 4, 254, 0, 6, 254, 20, 66, 250, 85, 250, 87, 249,
- 88, 249, 89,
- 250, 90, 249, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250,
- 222, 249,
- 0, 2, 250, 0, 4, 250, 0, 6, 250, 0, 100, 250, 0, 102, 250, 0, 122, 249,
- 20, 66, 250,
- 85, 250, 87, 249, 88, 249, 89, 250, 90, 249, 193, 250, 194, 250, 195, 250,
- 196, 250,
- 197, 250, 198, 250, 222, 249, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0, 100,
- 250, 0, 102,
- 250, 0, 122, 249, 20, 66, 250, 85, 250, 87, 249, 88, 249, 89, 250, 90,
- 249, 193, 250,
- 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 222, 249, 0, 2, 250, 0,
- 4, 250,
- 0, 6, 250, 0, 100, 250, 0, 102, 250, 0, 122, 249, 20, 66, 250, 85, 250,
- 87, 249, 88,
- 249, 89, 250, 90, 249, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250,
- 198, 250,
- 222, 249, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0, 100, 250, 0, 102, 250, 0,
- 122, 249, 20,
- 66, 250, 85, 250, 87, 249, 88, 249, 89, 250, 90, 249, 193, 250, 194, 250,
- 195, 250,
- 196, 250, 197, 250, 198, 250, 222, 249, 0, 2, 250, 0, 4, 250, 0, 6, 250,
- 0, 100, 250,
- 0, 102, 250, 0, 122, 249, 20, 66, 250, 85, 250, 87, 249, 88, 249, 89, 250,
- 90, 249,
- 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 222, 249, 0,
- 2, 250,
- 0, 4, 250, 0, 6, 250, 0, 100, 250, 0, 102, 250, 0, 122, 249, 13, 45, 249,
- 47, 249, 66,
- 247, 193, 247, 194, 247, 195, 247, 196, 247, 197, 247, 198, 247, 0, 2,
- 247, 0, 4,
- 247, 0, 6, 247, 13, 45, 249, 47, 249, 66, 247, 193, 247, 194, 247, 195,
- 247, 196,
- 247, 197, 247, 198, 247, 0, 2, 247, 0, 4, 247, 0, 6, 247, 13, 45, 249, 47,
- 249, 66,
- 247, 193, 247, 194, 247, 195, 247, 196, 247, 197, 247, 198, 247, 0, 2,
- 247, 0, 4,
- 247, 0, 6, 247, 13, 45, 249, 47, 249, 66, 247, 193, 247, 194, 247, 195,
- 247, 196,
- 247, 197, 247, 198, 247, 0, 2, 247, 0, 4, 247, 0, 6, 247, 65, 45, 242, 46,
- 242, 47,
- 242, 59, 242, 60, 242, 66, 239, 80, 251, 98, 243, 102, 238, 106, 251, 112,
- 238, 118,
- 242, 193, 239, 194, 239, 195, 239, 196, 239, 197, 239, 198, 239, 211, 251,
- 212,
- 251, 213, 251, 214, 251, 215, 251, 217, 251, 225, 243, 226, 243, 227, 243,
- 228,
- 243, 229, 243, 230, 243, 233, 245, 234, 238, 235, 238, 236, 245, 238, 251,
- 243,
- 238, 244, 238, 245, 238, 246, 238, 247, 238, 249, 238, 250, 242, 251, 242,
- 252,
- 242, 253, 242, 0, 2, 239, 0, 3, 243, 0, 4, 239, 0, 5, 243, 0, 6, 239, 0,
- 7, 243, 0, 21,
- 245, 0, 25, 238, 0, 27, 238, 0, 29, 238, 0, 49, 251, 0, 78, 251, 0, 79,
- 238, 0, 82, 251,
- 0, 83, 238, 0, 109, 242, 0, 113, 242, 0, 115, 242, 0, 117, 242, 2, 119,
- 253, 2, 119,
- 253, 2, 119, 253, 2, 119, 253, 2, 119, 253, 2, 119, 253, 2, 119, 254, 2,
- 119, 254,
- 2, 119, 254, 2, 119, 254, 2, 119, 255, 2, 119, 255, 2, 119, 255, 2, 119,
- 255, 2, 119,
- 250, 3, 119, 255, 120, 255, 3, 119, 255, 120, 255, 3, 119, 255, 120, 255,
- 3, 119,
- 255, 120, 255, 3, 119, 255, 120, 255, 3, 119, 255, 120, 255, 21, 45, 248,
- 47, 245,
- 102, 255, 112, 253, 233, 255, 234, 255, 235, 255, 236, 255, 243, 253, 244,
- 253,
- 245, 253, 246, 253, 247, 253, 249, 253, 0, 21, 255, 0, 25, 255, 0, 27,
- 255, 0, 29,
- 255, 0, 79, 253, 0, 83, 253, 21, 45, 248, 47, 245, 102, 255, 112, 253,
- 233, 255, 234,
- 255, 235, 255, 236, 255, 243, 253, 244, 253, 245, 253, 246, 253, 247, 253,
- 249,
- 253, 0, 21, 255, 0, 25, 255, 0, 27, 255, 0, 29, 255, 0, 79, 253, 0, 83,
- 253, 51, 68,
- 248, 72, 248, 80, 249, 82, 249, 85, 241, 86, 249, 87, 233, 88, 235, 90,
- 240, 113,
- 253, 118, 249, 119, 240, 120, 242, 122, 245, 200, 248, 211, 249, 212, 249,
- 213,
- 249, 214, 249, 215, 249, 217, 249, 218, 249, 219, 249, 220, 249, 221, 249,
- 222,
- 240, 250, 249, 251, 249, 252, 249, 253, 249, 254, 245, 0, 1, 245, 0, 8,
- 248, 0, 14,
- 248, 0, 32, 248, 0, 36, 248, 0, 78, 249, 0, 82, 249, 0, 100, 241, 0, 102,
- 241, 0, 108,
- 249, 0, 109, 249, 0, 112, 249, 0, 113, 249, 0, 114, 249, 0, 115, 249, 0,
- 116, 249,
- 0, 117, 249, 0, 122, 240, 1, 32, 25, 245, 2, 119, 253, 51, 68, 248, 72,
- 248, 80, 249,
- 82, 249, 85, 241, 86, 249, 87, 233, 88, 235, 90, 240, 113, 253, 118, 249,
- 119, 240,
- 120, 242, 122, 245, 200, 248, 211, 249, 212, 249, 213, 249, 214, 249, 215,
- 249,
- 217, 249, 218, 249, 219, 249, 220, 249, 221, 249, 222, 240, 250, 249, 251,
- 249,
- 252, 249, 253, 249, 254, 245, 0, 1, 245, 0, 8, 248, 0, 14, 248, 0, 32,
- 248, 0, 36, 248,
- 0, 78, 249, 0, 82, 249, 0, 100, 241, 0, 102, 241, 0, 108, 249, 0, 109,
- 249, 0, 112,
- 249, 0, 113, 249, 0, 114, 249, 0, 115, 249, 0, 116, 249, 0, 117, 249, 0,
- 122, 240,
- 1, 32, 25, 245, 2, 119, 253, 51, 68, 248, 72, 248, 80, 249, 82, 249, 85,
- 241, 86, 249,
- 87, 233, 88, 235, 90, 240, 113, 253, 118, 249, 119, 240, 120, 242, 122,
- 251, 200,
- 248, 211, 249, 212, 249, 213, 249, 214, 249, 215, 249, 217, 249, 218, 249,
- 219,
- 249, 220, 249, 221, 249, 222, 240, 250, 249, 251, 249, 252, 249, 253, 249,
- 254,
- 251, 0, 1, 251, 0, 8, 248, 0, 14, 248, 0, 32, 248, 0, 36, 248, 0, 78, 249,
- 0, 82, 249,
- 0, 100, 241, 0, 102, 241, 0, 108, 249, 0, 109, 249, 0, 112, 249, 0, 113,
- 249, 0, 114,
- 249, 0, 115, 249, 0, 116, 249, 0, 117, 249, 0, 122, 240, 1, 32, 25, 245,
- 2, 119, 253,
- 17, 47, 254, 66, 251, 87, 250, 88, 250, 90, 250, 193, 251, 194, 251, 195,
- 251, 196,
- 251, 197, 251, 198, 251, 222, 250, 0, 2, 251, 0, 4, 251, 0, 6, 251, 0,
- 122, 250, 17,
- 47, 254, 66, 251, 87, 250, 88, 250, 90, 250, 193, 251, 194, 251, 195, 251,
- 196, 251,
- 197, 251, 198, 251, 222, 250, 0, 2, 251, 0, 4, 251, 0, 6, 251, 0, 122,
- 250, 2, 120,
- 254, 2, 119, 254, 2, 119, 254, 2, 119, 254, 2, 119, 254, 2, 47, 254, 2,
- 47, 254, 2,
- 119, 255, 2, 119, 255, 40, 80, 252, 102, 253, 112, 253, 118, 254, 122,
- 249, 211,
- 252, 212, 252, 213, 252, 214, 252, 215, 252, 217, 252, 233, 253, 234, 253,
- 235,
- 253, 236, 253, 243, 253, 244, 253, 245, 253, 246, 253, 247, 253, 249, 253,
- 250,
- 254, 251, 254, 252, 254, 253, 254, 254, 249, 0, 1, 249, 0, 21, 253, 0, 25,
- 253, 0,
- 27, 253, 0, 29, 253, 0, 78, 252, 0, 79, 253, 0, 82, 252, 0, 83, 253, 0,
- 109, 254, 0,
- 113, 254, 0, 115, 254, 0, 117, 254, 22, 102, 255, 112, 254, 122, 254, 233,
- 255, 234,
- 255, 235, 255, 236, 255, 243, 254, 244, 254, 245, 254, 246, 254, 247, 254,
- 249,
- 254, 254, 254, 0, 1, 254, 0, 21, 255, 0, 25, 255, 0, 27, 255, 0, 29, 255,
- 0, 79, 254,
- 0, 83, 254, 14, 85, 242, 87, 242, 88, 242, 90, 242, 122, 248, 222, 242,
- 254, 248,
- 0, 1, 248, 0, 100, 242, 0, 102, 242, 0, 122, 242, 1, 32, 25, 239, 1, 32,
- 29, 254, 14,
- 85, 242, 87, 242, 88, 242, 90, 242, 122, 248, 222, 242, 254, 248, 0, 1,
- 248, 0, 100,
- 242, 0, 102, 242, 0, 122, 242, 1, 32, 25, 239, 1, 32, 29, 254, 14, 85,
- 242, 87, 242,
- 88, 242, 90, 242, 122, 248, 222, 242, 254, 248, 0, 1, 248, 0, 100, 242, 0,
- 102, 242,
- 0, 122, 242, 1, 32, 25, 239, 1, 32, 29, 254, 11, 66, 254, 193, 254, 194,
- 254, 195,
- 254, 196, 254, 197, 254, 198, 254, 0, 2, 254, 0, 4, 254, 0, 6, 254, 2,
- 119, 250, 11,
- 66, 254, 193, 254, 194, 254, 195, 254, 196, 254, 197, 254, 198, 254, 0, 2,
- 254, 0,
- 4, 254, 0, 6, 254, 2, 119, 250, 11, 66, 254, 193, 254, 194, 254, 195, 254,
- 196, 254,
- 197, 254, 198, 254, 0, 2, 254, 0, 4, 254, 0, 6, 254, 2, 119, 250, 20, 66,
- 250, 85, 250,
- 87, 249, 88, 249, 89, 250, 90, 249, 193, 250, 194, 250, 195, 250, 196,
- 250, 197,
- 250, 198, 250, 222, 249, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0, 100, 250, 0,
- 102, 250,
- 0, 122, 249, 3, 119, 255, 120, 255, 20, 66, 250, 85, 250, 87, 249, 88,
- 249, 89, 250,
- 90, 249, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 222,
- 249, 0,
- 2, 250, 0, 4, 250, 0, 6, 250, 0, 100, 250, 0, 102, 250, 0, 122, 249, 3,
- 119, 255, 120,
- 255, 27, 80, 252, 85, 250, 86, 252, 87, 248, 88, 251, 90, 251, 211, 252,
- 212, 252,
- 213, 252, 214, 252, 215, 252, 217, 252, 218, 252, 219, 252, 220, 252, 221,
- 252,
- 222, 251, 0, 78, 252, 0, 82, 252, 0, 100, 250, 0, 102, 250, 0, 108, 252,
- 0, 112, 252,
- 0, 114, 252, 0, 116, 252, 0, 122, 251, 37, 45, 242, 46, 251, 47, 240, 100,
- 254, 102,
- 254, 104, 255, 111, 254, 112, 254, 113, 255, 114, 254, 119, 255, 232, 254,
- 233,
- 254, 234, 254, 235, 254, 236, 254, 242, 254, 243, 254, 244, 254, 245, 254,
- 246,
- 254, 247, 254, 249, 254, 0, 9, 254, 0, 15, 254, 0, 21, 254, 0, 25, 254, 0,
- 27, 254,
- 0, 29, 254, 0, 33, 255, 0, 37, 255, 0, 70, 254, 0, 72, 254, 0, 74, 254, 0,
- 79, 254, 0,
- 83, 254, 27, 80, 252, 85, 250, 86, 252, 87, 248, 88, 251, 90, 251, 211,
- 252, 212,
- 252, 213, 252, 214, 252, 215, 252, 217, 252, 218, 252, 219, 252, 220, 252,
- 221,
- 252, 222, 251, 0, 78, 252, 0, 82, 252, 0, 100, 250, 0, 102, 250, 0, 108,
- 252, 0, 112,
- 252, 0, 114, 252, 0, 116, 252, 0, 122, 251, 37, 45, 242, 46, 251, 47, 240,
- 100, 254,
- 102, 254, 104, 255, 111, 254, 112, 254, 113, 255, 114, 254, 119, 255, 232,
- 254,
- 233, 254, 234, 254, 235, 254, 236, 254, 242, 254, 243, 254, 244, 254, 245,
- 254,
- 246, 254, 247, 254, 249, 254, 0, 9, 254, 0, 15, 254, 0, 21, 254, 0, 25,
- 254, 0, 27,
- 254, 0, 29, 254, 0, 33, 255, 0, 37, 255, 0, 70, 254, 0, 72, 254, 0, 74,
- 254, 0, 79, 254,
- 0, 83, 254, 27, 80, 252, 85, 250, 86, 252, 87, 248, 88, 251, 90, 251, 211,
- 252, 212,
- 252, 213, 252, 214, 252, 215, 252, 217, 252, 218, 252, 219, 252, 220, 252,
- 221,
- 252, 222, 251, 0, 78, 252, 0, 82, 252, 0, 100, 250, 0, 102, 250, 0, 108,
- 252, 0, 112,
- 252, 0, 114, 252, 0, 116, 252, 0, 122, 251, 37, 45, 242, 46, 251, 47, 240,
- 100, 254,
- 102, 254, 104, 255, 111, 254, 112, 254, 113, 255, 114, 254, 119, 255, 232,
- 254,
- 233, 254, 234, 254, 235, 254, 236, 254, 242, 254, 243, 254, 244, 254, 245,
- 254,
- 246, 254, 247, 254, 249, 254, 0, 9, 254, 0, 15, 254, 0, 21, 254, 0, 25,
- 254, 0, 27,
- 254, 0, 29, 254, 0, 33, 255, 0, 37, 255, 0, 70, 254, 0, 72, 254, 0, 74,
- 254, 0, 79, 254,
- 0, 83, 254, 73, 45, 245, 46, 242, 47, 242, 59, 245, 60, 245, 66, 242, 80,
- 254, 98,
- 242, 102, 242, 106, 254, 112, 242, 115, 245, 118, 242, 120, 245, 122, 251,
- 193,
- 242, 194, 242, 195, 242, 196, 242, 197, 242, 198, 242, 211, 254, 212, 254,
- 213,
- 254, 214, 254, 215, 254, 217, 254, 225, 248, 226, 242, 227, 248, 228, 248,
- 229,
- 248, 230, 242, 233, 248, 234, 242, 235, 242, 236, 248, 238, 254, 243, 242,
- 244,
- 242, 245, 242, 246, 242, 247, 242, 249, 242, 250, 242, 251, 242, 252, 242,
- 253,
- 242, 254, 251, 0, 1, 251, 0, 2, 242, 0, 3, 248, 0, 4, 242, 0, 5, 248, 0,
- 6, 242, 0, 7,
- 242, 0, 21, 248, 0, 25, 242, 0, 27, 242, 0, 29, 242, 0, 49, 254, 0, 78,
- 254, 0, 79, 242,
- 0, 82, 254, 0, 83, 242, 0, 87, 245, 0, 89, 245, 0, 91, 245, 0, 109, 242,
- 0, 113, 242,
- 0, 115, 242, 0, 117, 242, 73, 45, 245, 46, 242, 47, 242, 59, 245, 60, 245,
- 66, 242,
- 80, 254, 98, 242, 102, 242, 106, 254, 112, 242, 115, 245, 118, 242, 120,
- 245, 122,
- 251, 193, 242, 194, 242, 195, 242, 196, 242, 197, 242, 198, 242, 211, 254,
- 212,
- 254, 213, 254, 214, 254, 215, 254, 217, 254, 225, 248, 226, 242, 227, 248,
- 228,
- 248, 229, 248, 230, 242, 233, 248, 234, 242, 235, 242, 236, 248, 238, 254,
- 243,
- 242, 244, 242, 245, 242, 246, 242, 247, 242, 249, 242, 250, 242, 251, 242,
- 252,
- 242, 253, 242, 254, 251, 0, 1, 251, 0, 2, 242, 0, 3, 248, 0, 4, 242, 0, 5,
- 248, 0, 6,
- 242, 0, 7, 242, 0, 21, 248, 0, 25, 242, 0, 27, 242, 0, 29, 242, 0, 49,
- 254, 0, 78, 254,
- 0, 79, 242, 0, 82, 254, 0, 83, 242, 0, 87, 245, 0, 89, 245, 0, 91, 245, 0,
- 109, 242,
- 0, 113, 242, 0, 115, 242, 0, 117, 242, 13, 45, 249, 47, 249, 66, 247, 193,
- 247, 194,
- 247, 195, 247, 196, 247, 197, 247, 198, 247, 0, 2, 247, 0, 4, 247, 0, 6,
- 247, 13, 45,
- 249, 47, 249, 66, 247, 193, 247, 194, 247, 195, 247, 196, 247, 197, 247,
- 198, 247,
- 0, 2, 247, 0, 4, 247, 0, 6, 247, 13, 45, 249, 47, 249, 66, 247, 193, 247,
- 194, 247,
- 195, 247, 196, 247, 197, 247, 198, 247, 0, 2, 247, 0, 4, 247, 0, 6, 247,
- 13, 45, 249,
- 47, 249, 66, 247, 193, 247, 194, 247, 195, 247, 196, 247, 197, 247, 198,
- 247, 0,
- 2, 247, 0, 4, 247, 0, 6, 247, 65, 45, 242, 46, 242, 47, 242, 59, 242, 60,
- 242, 66, 239,
- 80, 251, 98, 243, 102, 238, 106, 251, 112, 238, 118, 242, 193, 239, 194,
- 239, 195,
- 239, 196, 239, 197, 239, 198, 239, 211, 251, 212, 251, 213, 251, 214, 251,
- 215,
- 251, 217, 251, 225, 243, 226, 243, 227, 243, 228, 243, 229, 243, 230, 243,
- 233,
- 245, 234, 238, 235, 238, 236, 245, 238, 251, 243, 238, 244, 238, 245, 238,
- 246,
- 238, 247, 238, 249, 238, 250, 242, 251, 242, 252, 242, 253, 242, 0, 2,
- 239, 0, 3,
- 243, 0, 4, 239, 0, 5, 243, 0, 6, 239, 0, 7, 243, 0, 21, 245, 0, 25, 238,
- 0, 27, 238, 0,
- 29, 238, 0, 49, 251, 0, 78, 251, 0, 79, 238, 0, 82, 251, 0, 83, 238, 0,
- 109, 242, 0,
- 113, 242, 0, 115, 242, 0, 117, 242, 12, 66, 255, 193, 255, 194, 255, 195,
- 255, 196,
- 255, 197, 255, 198, 255, 0, 2, 255, 0, 4, 255, 0, 6, 255, 1, 32, 24, 246,
- 15, 33, 245,
- 101, 254, 115, 254, 116, 251, 119, 254, 0, 19, 254, 0, 87, 254, 0, 89,
- 254, 0, 91,
- 254, 0, 93, 251, 0, 97, 251, 0, 99, 251, 1, 2, 25, 251, 1, 32, 25, 246,
- 11, 66, 255,
- 193, 255, 194, 255, 195, 255, 196, 255, 197, 255, 198, 255, 0, 2, 255, 0,
- 4, 255,
- 0, 6, 255
-};
-static afm_cuint16 afm_Times_Bold_highchars_index[] = { /* 220 */
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176,
- 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257,
- 258, 259, 260, 261, 262, 263, 268, 269, 270, 271, 272, 273, 274, 275, 278,
- 279,
- 280, 281, 282, 283, 286, 287, 290, 291, 298, 299, 302, 303, 304, 305, 310,
- 311,
- 313, 314, 315, 316, 317, 318, 321, 322, 323, 324, 325, 326, 327, 328, 332,
- 333,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 350, 351, 352,
- 353,
- 354, 355, 356, 357, 362, 363, 366, 367, 368, 369, 370, 371, 376, 377, 378,
- 379,
- 380, 381, 382, 402, 536, 537, 710, 711, 728, 729, 730, 731, 732, 733,
- 8211, 8212,
- 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8249,
- 8250,
- 8260, 8364, 8482, 8706, 8710, 8721, 8722, 8730, 8800, 8804, 8805, 9674,
- 63171,
- 64257, 64258
-};
-static afm_cunicode afm_Times_Bold_ligatures[] = { /* 3 */
- 102, 105, 64257
-};
-
-
-/* ------------------------------------------------------------------*/
-/* FontName: Times-BoldItalic */
-/* FullName: Times Bold Italic */
-/* FamilyName: Times */
-static afm_cuint8 afm_Times_BoldItalic_widths[] = { /* 315 */
- 42, 65, 93, 83, 83, 139, 130, 46, 56, 56, 83, 95, 42, 56, 42, 46, 83, 83,
- 83, 83, 83,
- 83, 83, 83, 83, 83, 56, 56, 95, 95, 95, 83, 139, 111, 111, 111, 120, 111,
- 111, 120,
- 130, 65, 83, 111, 102, 148, 120, 120, 102, 120, 111, 93, 102, 120, 111,
- 148, 111,
- 102, 102, 56, 46, 56, 95, 83, 56, 83, 83, 74, 83, 74, 56, 83, 93, 46, 46,
- 83, 46, 130,
- 93, 83, 83, 83, 65, 65, 46, 93, 74, 111, 83, 74, 65, 58, 37, 58, 95, 65,
- 83, 83, 83,
- 83, 37, 83, 56, 125, 44, 83, 101, 125, 56, 67, 95, 50, 50, 56, 96, 83, 42,
- 56, 50, 50,
- 83, 125, 125, 125, 83, 111, 111, 111, 111, 111, 111, 157, 111, 111, 111,
- 111, 111,
- 65, 65, 65, 65, 120, 120, 120, 120, 120, 120, 120, 95, 120, 120, 120, 120,
- 120, 102,
- 102, 83, 83, 83, 83, 83, 83, 83, 120, 74, 74, 74, 74, 74, 46, 46, 46, 46,
- 83, 93, 83,
- 83, 83, 83, 83, 95, 83, 93, 93, 93, 93, 74, 83, 74, 111, 83, 111, 83, 111,
- 83, 111,
- 74, 111, 74, 120, 101, 120, 83, 111, 74, 111, 74, 111, 74, 111, 74, 120,
- 83, 120,
- 83, 65, 46, 65, 46, 65, 46, 111, 83, 102, 46, 102, 46, 102, 64, 102, 46,
- 120, 93, 120,
- 93, 120, 93, 120, 83, 120, 83, 157, 120, 111, 65, 111, 65, 111, 65, 93,
- 65, 93, 65,
- 93, 65, 102, 46, 102, 61, 120, 93, 120, 93, 120, 93, 120, 93, 102, 102,
- 65, 102, 65,
- 102, 65, 83, 93, 65, 56, 56, 56, 56, 56, 56, 56, 56, 83, 167, 56, 56, 56,
- 83, 83, 83,
- 83, 83, 58, 167, 167, 56, 56, 28, 83, 167, 82, 102, 100, 101, 92, 92, 92,
- 92, 82, 42,
- 93, 93
-};
-static afm_sint16 afm_Times_BoldItalic_kerning_index[] = { /* 315 */
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 54, 173, 0, 219, 0, 254, 0, 0, 0, 374, 489, 581, 0, 612, 636, 681,
- 774, 797, 0,
- 859, 1027, 1051, 1207, 0, 1362, 0, 0, 0, 0, 0, 0, 0, 0, 1510, 1537, 0,
- 1545, 1548,
- 0, 0, 0, 0, 1587, 0, 0, 1630, 1633, 0, 0, 1647, 0, 0, 0, 1652, 1699, 1769,
- 1792, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1797, 1916, 2035, 2154, 2273, 2392, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2511, 2535,
- 2580, 2625, 2670, 2715, 0, 2760, 2805, 2829, 2853, 2877, 2901, 0, 0, 0, 0,
- 0, 0,
- 0, 0, 0, 3049, 3057, 3060, 3063, 3066, 0, 0, 0, 0, 0, 3069, 3072, 3086,
- 3100, 3114,
- 3128, 0, 3142, 0, 0, 0, 0, 3156, 0, 3161, 3166, 0, 3285, 0, 3404, 0, 0,
- 3523, 0, 3531,
- 3539, 0, 3574, 0, 0, 3609, 0, 3612, 0, 3615, 0, 3618, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3621,
- 3713, 3756, 0, 3787, 0, 0, 0, 3818, 0, 3849, 3873, 3876, 3900, 3903, 3927,
- 3930,
- 3975, 3989, 4034, 0, 0, 4048, 4110, 4115, 4177, 4182, 4244, 0, 0, 0, 0, 0,
- 0, 4249,
- 0, 4417, 0, 4585, 0, 4609, 0, 4633, 0, 4657, 0, 4681, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 4829, 4834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0
-};
-static afm_cuint8 afm_Times_BoldItalic_kerning_data[] = { /* 4879 */
- 42, 16, 66, 251, 87, 245, 88, 245, 90, 245, 193, 251, 194, 251, 195, 251,
- 196, 251,
- 197, 251, 198, 251, 222, 245, 0, 2, 251, 0, 4, 251, 0, 6, 251, 0, 122,
- 245, 3, 1, 32,
- 25, 241, 1, 32, 29, 241, 3, 1, 32, 25, 241, 1, 32, 29, 241, 50, 68, 246,
- 72, 247, 80,
- 249, 82, 248, 85, 248, 86, 249, 87, 241, 88, 240, 90, 245, 118, 252, 119,
- 245, 120,
- 245, 122, 245, 200, 246, 211, 249, 212, 249, 213, 249, 214, 249, 215, 249,
- 217,
- 249, 218, 249, 219, 249, 220, 249, 221, 249, 222, 245, 250, 252, 251, 252,
- 252,
- 252, 253, 252, 254, 245, 0, 1, 245, 0, 8, 246, 0, 14, 246, 0, 32, 247, 0,
- 36, 247, 0,
- 78, 249, 0, 82, 249, 0, 100, 248, 0, 102, 248, 0, 108, 249, 0, 109, 252,
- 0, 112, 249,
- 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0, 122,
- 245, 1, 32,
- 25, 245, 20, 66, 253, 86, 255, 193, 253, 194, 253, 195, 253, 196, 253,
- 197, 253,
- 198, 253, 218, 255, 219, 255, 220, 255, 221, 255, 0, 2, 253, 0, 4, 253, 0,
- 6, 253,
- 0, 108, 255, 0, 112, 255, 0, 114, 255, 0, 116, 255, 16, 66, 253, 87, 249,
- 88, 250,
- 90, 249, 193, 253, 194, 253, 195, 253, 196, 253, 197, 253, 198, 253, 222,
- 249, 0,
- 2, 253, 0, 4, 253, 0, 6, 253, 0, 122, 249, 52, 45, 235, 47, 235, 66, 240,
- 98, 241, 102,
- 240, 106, 250, 112, 245, 115, 249, 193, 240, 194, 240, 195, 240, 196, 240,
- 197,
- 240, 198, 240, 225, 241, 226, 241, 227, 241, 228, 241, 229, 241, 230, 241,
- 233,
- 240, 234, 240, 235, 240, 236, 240, 237, 250, 238, 250, 239, 250, 240, 250,
- 243,
- 245, 244, 245, 245, 245, 246, 245, 247, 245, 249, 245, 0, 2, 240, 0, 3,
- 241, 0, 4,
- 240, 0, 5, 241, 0, 6, 240, 0, 7, 241, 0, 21, 240, 0, 25, 240, 0, 27, 240,
- 0, 29, 240,
- 0, 45, 250, 0, 49, 250, 0, 79, 245, 0, 83, 245, 0, 87, 249, 0, 89, 249, 0,
- 91, 249, 50,
- 45, 255, 47, 255, 66, 253, 98, 250, 102, 250, 112, 250, 118, 250, 193,
- 253, 194,
- 253, 195, 253, 196, 253, 197, 253, 198, 253, 225, 250, 226, 250, 227, 250,
- 228,
- 250, 229, 250, 230, 250, 233, 250, 234, 250, 235, 250, 236, 250, 243, 250,
- 244,
- 250, 245, 250, 246, 250, 247, 250, 249, 250, 250, 250, 251, 250, 252, 250,
- 253,
- 250, 0, 2, 253, 0, 3, 250, 0, 4, 253, 0, 5, 250, 0, 6, 253, 0, 7, 250, 0,
- 21, 250, 0, 25,
- 250, 0, 27, 250, 0, 29, 250, 0, 79, 250, 0, 83, 250, 0, 109, 250, 0, 113,
- 250, 0, 115,
- 250, 0, 117, 250, 40, 80, 252, 102, 253, 112, 253, 118, 254, 122, 254,
- 211, 252,
- 212, 252, 213, 252, 214, 252, 215, 252, 217, 252, 233, 253, 234, 253, 235,
- 253,
- 236, 253, 243, 253, 244, 253, 245, 253, 246, 253, 247, 253, 249, 253, 250,
- 254,
- 251, 254, 252, 254, 253, 254, 254, 254, 0, 1, 254, 0, 21, 253, 0, 25, 253,
- 0, 27, 253,
- 0, 29, 253, 0, 78, 252, 0, 79, 253, 0, 82, 252, 0, 83, 253, 0, 109, 254,
- 0, 113, 254,
- 0, 115, 254, 0, 117, 254, 13, 85, 254, 87, 251, 88, 251, 90, 251, 122,
- 251, 222, 251,
- 254, 251, 0, 1, 251, 0, 100, 254, 0, 102, 254, 0, 122, 251, 1, 32, 25,
- 248, 11, 66,
- 252, 193, 252, 194, 252, 195, 252, 196, 252, 197, 252, 198, 252, 0, 2,
- 252, 0, 4,
- 252, 0, 6, 252, 20, 66, 250, 85, 250, 87, 249, 88, 249, 89, 250, 90, 249,
- 193, 250,
- 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 222, 249, 0, 2, 250, 0,
- 4, 250,
- 0, 6, 250, 0, 100, 250, 0, 102, 250, 0, 122, 249, 41, 45, 235, 47, 235,
- 66, 243, 98,
- 250, 102, 249, 112, 248, 193, 243, 194, 243, 195, 243, 196, 243, 197, 243,
- 198,
- 243, 225, 250, 226, 250, 227, 250, 228, 250, 229, 250, 230, 250, 233, 249,
- 234,
- 249, 235, 249, 236, 249, 243, 248, 244, 248, 245, 248, 246, 248, 247, 248,
- 249,
- 248, 0, 2, 243, 0, 3, 250, 0, 4, 243, 0, 5, 250, 0, 6, 243, 0, 7, 250, 0,
- 21, 249, 0, 25,
- 249, 0, 27, 249, 0, 29, 249, 0, 79, 248, 0, 83, 248, 10, 86, 255, 218,
- 255, 219, 255,
- 220, 255, 221, 255, 0, 108, 255, 0, 112, 255, 0, 114, 255, 0, 116, 255,
- 27, 80, 250,
- 85, 252, 86, 250, 87, 254, 88, 254, 90, 254, 211, 250, 212, 250, 213, 250,
- 214, 250,
- 215, 250, 217, 250, 218, 250, 219, 250, 220, 250, 221, 250, 222, 254, 0,
- 78, 250,
- 0, 82, 250, 0, 100, 252, 0, 102, 252, 0, 108, 250, 0, 112, 250, 0, 114,
- 250, 0, 116,
- 250, 0, 122, 254, 73, 45, 242, 46, 242, 47, 242, 59, 245, 60, 245, 66,
- 248, 80, 254,
- 98, 242, 102, 242, 106, 251, 112, 241, 115, 251, 118, 251, 120, 251, 122,
- 251, 193,
- 248, 194, 248, 195, 248, 196, 248, 197, 248, 198, 248, 211, 254, 212, 254,
- 213,
- 254, 214, 254, 215, 254, 217, 254, 225, 242, 226, 242, 227, 242, 228, 242,
- 229,
- 242, 230, 242, 233, 248, 234, 242, 235, 242, 236, 248, 238, 251, 243, 241,
- 244,
- 241, 245, 241, 246, 241, 247, 241, 249, 241, 250, 251, 251, 251, 252, 251,
- 253,
- 251, 254, 251, 0, 1, 251, 0, 2, 248, 0, 3, 242, 0, 4, 248, 0, 5, 242, 0,
- 6, 248, 0, 7,
- 242, 0, 21, 248, 0, 25, 242, 0, 27, 242, 0, 29, 242, 0, 49, 251, 0, 78,
- 254, 0, 79, 241,
- 0, 82, 254, 0, 83, 241, 0, 87, 251, 0, 89, 251, 0, 91, 251, 0, 109, 251,
- 0, 113, 251,
- 0, 115, 251, 0, 117, 251, 11, 66, 249, 193, 249, 194, 249, 195, 249, 196,
- 249, 197,
- 249, 198, 249, 0, 2, 249, 0, 4, 249, 0, 6, 249, 68, 45, 235, 46, 245, 47,
- 235, 59, 245,
- 60, 245, 66, 243, 72, 255, 80, 252, 98, 238, 102, 238, 106, 248, 112, 238,
- 118, 248,
- 193, 243, 194, 243, 195, 243, 196, 243, 197, 243, 198, 243, 211, 252, 212,
- 252,
- 213, 252, 214, 252, 215, 252, 217, 252, 225, 238, 226, 238, 227, 238, 228,
- 238,
- 229, 238, 230, 238, 233, 245, 234, 238, 235, 238, 236, 245, 238, 248, 243,
- 238,
- 244, 238, 245, 238, 246, 238, 247, 238, 249, 238, 250, 248, 251, 248, 252,
- 248,
- 253, 248, 0, 2, 243, 0, 3, 238, 0, 4, 243, 0, 5, 238, 0, 6, 243, 0, 7,
- 238, 0, 21, 245,
- 0, 25, 238, 0, 27, 238, 0, 29, 238, 0, 32, 255, 0, 36, 255, 0, 49, 248, 0,
- 78, 252, 0,
- 79, 238, 0, 82, 252, 0, 83, 238, 0, 109, 248, 0, 113, 248, 0, 115, 248, 0,
- 117, 248,
- 68, 45, 245, 46, 249, 47, 245, 59, 248, 60, 248, 66, 245, 80, 254, 98,
- 243, 102, 242,
- 106, 251, 112, 244, 118, 248, 122, 248, 193, 245, 194, 245, 195, 245, 196,
- 245,
- 197, 245, 198, 245, 211, 254, 212, 254, 213, 254, 214, 254, 215, 254, 217,
- 254,
- 225, 243, 226, 243, 227, 243, 228, 243, 229, 243, 230, 243, 233, 249, 234,
- 242,
- 235, 242, 236, 249, 238, 251, 243, 244, 244, 244, 245, 244, 246, 244, 247,
- 244,
- 249, 244, 250, 248, 251, 248, 252, 248, 253, 248, 254, 248, 0, 1, 248, 0,
- 2, 245,
- 0, 3, 243, 0, 4, 245, 0, 5, 243, 0, 6, 245, 0, 7, 243, 0, 21, 249, 0, 25,
- 242, 0, 27, 242,
- 0, 29, 242, 0, 49, 251, 0, 78, 254, 0, 79, 244, 0, 82, 254, 0, 83, 244, 0,
- 109, 248,
- 0, 113, 248, 0, 115, 248, 0, 117, 248, 65, 45, 242, 46, 242, 47, 245, 59,
- 242, 60,
- 242, 66, 245, 80, 253, 98, 242, 102, 238, 106, 248, 112, 238, 118, 242,
- 193, 245,
- 194, 245, 195, 245, 196, 245, 197, 245, 198, 245, 211, 253, 212, 253, 213,
- 253,
- 214, 253, 215, 253, 217, 253, 225, 242, 226, 242, 227, 242, 228, 242, 229,
- 242,
- 230, 242, 233, 245, 234, 238, 235, 245, 236, 245, 238, 248, 243, 238, 244,
- 238,
- 245, 238, 246, 238, 247, 238, 249, 238, 250, 242, 251, 242, 252, 242, 253,
- 242,
- 0, 2, 245, 0, 3, 242, 0, 4, 245, 0, 5, 242, 0, 6, 245, 0, 7, 242, 0, 21,
- 245, 0, 25, 238,
- 0, 27, 238, 0, 29, 238, 0, 49, 248, 0, 78, 253, 0, 79, 238, 0, 82, 253, 0,
- 83, 238, 0,
- 109, 242, 0, 113, 242, 0, 115, 242, 0, 117, 242, 12, 47, 250, 99, 255,
- 118, 254, 250,
- 254, 251, 254, 252, 254, 253, 254, 0, 109, 254, 0, 113, 254, 0, 115, 254,
- 0, 117,
- 254, 4, 105, 255, 108, 255, 0, 57, 255, 2, 99, 255, 17, 45, 255, 47, 255,
- 102, 255,
- 103, 254, 112, 255, 234, 255, 243, 255, 244, 255, 245, 255, 246, 255, 249,
- 255,
- 0, 25, 255, 0, 27, 255, 0, 51, 252, 0, 83, 255, 1, 32, 25, 9, 19, 102,
- 252, 112, 255,
- 233, 252, 234, 252, 235, 252, 236, 252, 243, 255, 244, 255, 245, 255, 246,
- 255,
- 247, 255, 249, 255, 0, 21, 252, 0, 25, 252, 0, 27, 252, 0, 29, 252, 0, 79,
- 255, 0, 83,
- 255, 2, 119, 250, 7, 119, 254, 120, 253, 121, 255, 122, 255, 254, 255, 0,
- 1, 255,
- 3, 45, 246, 47, 246, 21, 45, 251, 47, 251, 102, 254, 112, 254, 233, 254,
- 234, 254,
- 235, 254, 236, 254, 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249,
- 254,
- 0, 21, 254, 0, 25, 254, 0, 27, 254, 0, 29, 254, 0, 79, 254, 0, 83, 254,
- 31, 45, 251,
- 47, 251, 98, 255, 102, 255, 112, 254, 225, 255, 226, 255, 227, 255, 228,
- 255, 229,
- 255, 230, 255, 233, 255, 234, 255, 235, 255, 236, 255, 243, 254, 244, 254,
- 245,
- 254, 246, 254, 247, 254, 249, 254, 0, 3, 255, 0, 5, 255, 0, 7, 255, 0, 21,
- 255, 0, 25,
- 255, 0, 27, 255, 0, 29, 255, 0, 79, 254, 0, 83, 254, 10, 102, 255, 233,
- 255, 234, 255,
- 235, 255, 236, 255, 0, 21, 255, 0, 25, 255, 0, 27, 255, 0, 29, 255, 3, 45,
- 251, 47,
- 251, 50, 68, 246, 72, 247, 80, 249, 82, 248, 85, 248, 86, 249, 87, 241,
- 88, 240, 90,
- 245, 118, 252, 119, 245, 120, 245, 122, 245, 200, 246, 211, 249, 212, 249,
- 213,
- 249, 214, 249, 215, 249, 217, 249, 218, 249, 219, 249, 220, 249, 221, 249,
- 222,
- 245, 250, 252, 251, 252, 252, 252, 253, 252, 254, 245, 0, 1, 245, 0, 8,
- 246, 0, 14,
- 246, 0, 32, 247, 0, 36, 247, 0, 78, 249, 0, 82, 249, 0, 100, 248, 0, 102,
- 248, 0, 108,
- 249, 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0,
- 116, 249,
- 0, 117, 252, 0, 122, 245, 1, 32, 25, 245, 50, 68, 246, 72, 247, 80, 249,
- 82, 248, 85,
- 248, 86, 249, 87, 241, 88, 240, 90, 245, 118, 252, 119, 245, 120, 245,
- 122, 245,
- 200, 246, 211, 249, 212, 249, 213, 249, 214, 249, 215, 249, 217, 249, 218,
- 249,
- 219, 249, 220, 249, 221, 249, 222, 245, 250, 252, 251, 252, 252, 252, 253,
- 252,
- 254, 245, 0, 1, 245, 0, 8, 246, 0, 14, 246, 0, 32, 247, 0, 36, 247, 0, 78,
- 249, 0, 82,
- 249, 0, 100, 248, 0, 102, 248, 0, 108, 249, 0, 109, 252, 0, 112, 249, 0,
- 113, 252,
- 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0, 122, 245, 1, 32,
- 25, 245, 50,
- 68, 246, 72, 247, 80, 249, 82, 248, 85, 248, 86, 249, 87, 241, 88, 240,
- 90, 245, 118,
- 252, 119, 245, 120, 245, 122, 245, 200, 246, 211, 249, 212, 249, 213, 249,
- 214,
- 249, 215, 249, 217, 249, 218, 249, 219, 249, 220, 249, 221, 249, 222, 245,
- 250,
- 252, 251, 252, 252, 252, 253, 252, 254, 245, 0, 1, 245, 0, 8, 246, 0, 14,
- 246, 0, 32,
- 247, 0, 36, 247, 0, 78, 249, 0, 82, 249, 0, 100, 248, 0, 102, 248, 0, 108,
- 249, 0, 109,
- 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0,
- 117, 252,
- 0, 122, 245, 1, 32, 25, 245, 50, 68, 246, 72, 247, 80, 249, 82, 248, 85,
- 248, 86, 249,
- 87, 241, 88, 240, 90, 245, 118, 252, 119, 245, 120, 245, 122, 245, 200,
- 246, 211,
- 249, 212, 249, 213, 249, 214, 249, 215, 249, 217, 249, 218, 249, 219, 249,
- 220,
- 249, 221, 249, 222, 245, 250, 252, 251, 252, 252, 252, 253, 252, 254, 245,
- 0, 1,
- 245, 0, 8, 246, 0, 14, 246, 0, 32, 247, 0, 36, 247, 0, 78, 249, 0, 82,
- 249, 0, 100, 248,
- 0, 102, 248, 0, 108, 249, 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114,
- 249, 0, 115,
- 252, 0, 116, 249, 0, 117, 252, 0, 122, 245, 1, 32, 25, 245, 50, 68, 246,
- 72, 247, 80,
- 249, 82, 248, 85, 248, 86, 249, 87, 241, 88, 240, 90, 245, 118, 252, 119,
- 245, 120,
- 245, 122, 245, 200, 246, 211, 249, 212, 249, 213, 249, 214, 249, 215, 249,
- 217,
- 249, 218, 249, 219, 249, 220, 249, 221, 249, 222, 245, 250, 252, 251, 252,
- 252,
- 252, 253, 252, 254, 245, 0, 1, 245, 0, 8, 246, 0, 14, 246, 0, 32, 247, 0,
- 36, 247, 0,
- 78, 249, 0, 82, 249, 0, 100, 248, 0, 102, 248, 0, 108, 249, 0, 109, 252,
- 0, 112, 249,
- 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0, 122,
- 245, 1, 32,
- 25, 245, 50, 68, 246, 72, 247, 80, 249, 82, 248, 85, 248, 86, 249, 87,
- 241, 88, 240,
- 90, 245, 118, 252, 119, 245, 120, 245, 122, 245, 200, 246, 211, 249, 212,
- 249, 213,
- 249, 214, 249, 215, 249, 217, 249, 218, 249, 219, 249, 220, 249, 221, 249,
- 222,
- 245, 250, 252, 251, 252, 252, 252, 253, 252, 254, 245, 0, 1, 245, 0, 8,
- 246, 0, 14,
- 246, 0, 32, 247, 0, 36, 247, 0, 78, 249, 0, 82, 249, 0, 100, 248, 0, 102,
- 248, 0, 108,
- 249, 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0,
- 116, 249,
- 0, 117, 252, 0, 122, 245, 1, 32, 25, 245, 11, 66, 252, 193, 252, 194, 252,
- 195, 252,
- 196, 252, 197, 252, 198, 252, 0, 2, 252, 0, 4, 252, 0, 6, 252, 20, 66,
- 250, 85, 250,
- 87, 249, 88, 249, 89, 250, 90, 249, 193, 250, 194, 250, 195, 250, 196,
- 250, 197,
- 250, 198, 250, 222, 249, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0, 100, 250, 0,
- 102, 250,
- 0, 122, 249, 20, 66, 250, 85, 250, 87, 249, 88, 249, 89, 250, 90, 249,
- 193, 250, 194,
- 250, 195, 250, 196, 250, 197, 250, 198, 250, 222, 249, 0, 2, 250, 0, 4,
- 250, 0, 6,
- 250, 0, 100, 250, 0, 102, 250, 0, 122, 249, 20, 66, 250, 85, 250, 87, 249,
- 88, 249,
- 89, 250, 90, 249, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198,
- 250, 222,
- 249, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0, 100, 250, 0, 102, 250, 0, 122,
- 249, 20, 66,
- 250, 85, 250, 87, 249, 88, 249, 89, 250, 90, 249, 193, 250, 194, 250, 195,
- 250, 196,
- 250, 197, 250, 198, 250, 222, 249, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0,
- 100, 250, 0,
- 102, 250, 0, 122, 249, 20, 66, 250, 85, 250, 87, 249, 88, 249, 89, 250,
- 90, 249, 193,
- 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 222, 249, 0, 2,
- 250, 0, 4,
- 250, 0, 6, 250, 0, 100, 250, 0, 102, 250, 0, 122, 249, 20, 66, 250, 85,
- 250, 87, 249,
- 88, 249, 89, 250, 90, 249, 193, 250, 194, 250, 195, 250, 196, 250, 197,
- 250, 198,
- 250, 222, 249, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0, 100, 250, 0, 102, 250,
- 0, 122, 249,
- 11, 66, 249, 193, 249, 194, 249, 195, 249, 196, 249, 197, 249, 198, 249,
- 0, 2, 249,
- 0, 4, 249, 0, 6, 249, 11, 66, 249, 193, 249, 194, 249, 195, 249, 196, 249,
- 197, 249,
- 198, 249, 0, 2, 249, 0, 4, 249, 0, 6, 249, 11, 66, 249, 193, 249, 194,
- 249, 195, 249,
- 196, 249, 197, 249, 198, 249, 0, 2, 249, 0, 4, 249, 0, 6, 249, 11, 66,
- 249, 193, 249,
- 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 0, 2, 249, 0, 4, 249, 0,
- 6, 249,
- 65, 45, 242, 46, 242, 47, 245, 59, 242, 60, 242, 66, 245, 80, 253, 98,
- 242, 102, 238,
- 106, 248, 112, 238, 118, 242, 193, 245, 194, 245, 195, 245, 196, 245, 197,
- 245,
- 198, 245, 211, 253, 212, 253, 213, 253, 214, 253, 215, 253, 217, 253, 225,
- 242,
- 226, 242, 227, 242, 228, 242, 229, 242, 230, 242, 233, 245, 234, 238, 235,
- 245,
- 236, 245, 238, 248, 243, 238, 244, 238, 245, 238, 246, 238, 247, 238, 249,
- 238,
- 250, 242, 251, 242, 252, 242, 253, 242, 0, 2, 245, 0, 3, 242, 0, 4, 245,
- 0, 5, 242,
- 0, 6, 245, 0, 7, 242, 0, 21, 245, 0, 25, 238, 0, 27, 238, 0, 29, 238, 0,
- 49, 248, 0, 78,
- 253, 0, 79, 238, 0, 82, 253, 0, 83, 238, 0, 109, 242, 0, 113, 242, 0, 115,
- 242, 0, 117,
- 242, 4, 105, 255, 108, 255, 0, 57, 255, 2, 99, 255, 2, 99, 255, 2, 99,
- 255, 2, 99, 255,
- 2, 119, 250, 7, 119, 254, 120, 253, 121, 255, 122, 255, 254, 255, 0, 1,
- 255, 7, 119,
- 254, 120, 253, 121, 255, 122, 255, 254, 255, 0, 1, 255, 7, 119, 254, 120,
- 253, 121,
- 255, 122, 255, 254, 255, 0, 1, 255, 7, 119, 254, 120, 253, 121, 255, 122,
- 255, 254,
- 255, 0, 1, 255, 7, 119, 254, 120, 253, 121, 255, 122, 255, 254, 255, 0, 1,
- 255, 7,
- 119, 254, 120, 253, 121, 255, 122, 255, 254, 255, 0, 1, 255, 3, 45, 251,
- 47, 251,
- 3, 45, 251, 47, 251, 50, 68, 246, 72, 247, 80, 249, 82, 248, 85, 248, 86,
- 249, 87,
- 241, 88, 240, 90, 245, 118, 252, 119, 245, 120, 245, 122, 245, 200, 246,
- 211, 249,
- 212, 249, 213, 249, 214, 249, 215, 249, 217, 249, 218, 249, 219, 249, 220,
- 249,
- 221, 249, 222, 245, 250, 252, 251, 252, 252, 252, 253, 252, 254, 245, 0,
- 1, 245,
- 0, 8, 246, 0, 14, 246, 0, 32, 247, 0, 36, 247, 0, 78, 249, 0, 82, 249, 0,
- 100, 248, 0,
- 102, 248, 0, 108, 249, 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249,
- 0, 115,
- 252, 0, 116, 249, 0, 117, 252, 0, 122, 245, 1, 32, 25, 245, 50, 68, 246,
- 72, 247, 80,
- 249, 82, 248, 85, 248, 86, 249, 87, 241, 88, 240, 90, 245, 118, 252, 119,
- 245, 120,
- 245, 122, 245, 200, 246, 211, 249, 212, 249, 213, 249, 214, 249, 215, 249,
- 217,
- 249, 218, 249, 219, 249, 220, 249, 221, 249, 222, 245, 250, 252, 251, 252,
- 252,
- 252, 253, 252, 254, 245, 0, 1, 245, 0, 8, 246, 0, 14, 246, 0, 32, 247, 0,
- 36, 247, 0,
- 78, 249, 0, 82, 249, 0, 100, 248, 0, 102, 248, 0, 108, 249, 0, 109, 252,
- 0, 112, 249,
- 0, 113, 252, 0, 114, 249, 0, 115, 252, 0, 116, 249, 0, 117, 252, 0, 122,
- 245, 1, 32,
- 25, 245, 50, 68, 246, 72, 247, 80, 249, 82, 248, 85, 248, 86, 249, 87,
- 241, 88, 240,
- 90, 245, 118, 252, 119, 245, 120, 245, 122, 251, 200, 246, 211, 249, 212,
- 249, 213,
- 249, 214, 249, 215, 249, 217, 249, 218, 249, 219, 249, 220, 249, 221, 249,
- 222,
- 245, 250, 252, 251, 252, 252, 252, 253, 252, 254, 251, 0, 1, 251, 0, 8,
- 246, 0, 14,
- 246, 0, 32, 247, 0, 36, 247, 0, 78, 249, 0, 82, 249, 0, 100, 248, 0, 102,
- 248, 0, 108,
- 249, 0, 109, 252, 0, 112, 249, 0, 113, 252, 0, 114, 249, 0, 115, 252, 0,
- 116, 249,
- 0, 117, 252, 0, 122, 245, 1, 32, 25, 245, 4, 105, 255, 108, 255, 0, 57,
- 255, 4, 105,
- 255, 108, 255, 0, 57, 255, 16, 66, 253, 87, 249, 88, 250, 90, 249, 193,
- 253, 194,
- 253, 195, 253, 196, 253, 197, 253, 198, 253, 222, 249, 0, 2, 253, 0, 4,
- 253, 0, 6,
- 253, 0, 122, 249, 16, 66, 253, 87, 249, 88, 250, 90, 249, 193, 253, 194,
- 253, 195,
- 253, 196, 253, 197, 253, 198, 253, 222, 249, 0, 2, 253, 0, 4, 253, 0, 6,
- 253, 0, 122,
- 249, 2, 99, 255, 2, 99, 255, 2, 99, 255, 2, 99, 255, 40, 80, 252, 102,
- 253, 112, 253,
- 118, 254, 122, 254, 211, 252, 212, 252, 213, 252, 214, 252, 215, 252, 217,
- 252,
- 233, 253, 234, 253, 235, 253, 236, 253, 243, 253, 244, 253, 245, 253, 246,
- 253,
- 247, 253, 249, 253, 250, 254, 251, 254, 252, 254, 253, 254, 254, 254, 0,
- 1, 254,
- 0, 21, 253, 0, 25, 253, 0, 27, 253, 0, 29, 253, 0, 78, 252, 0, 79, 253, 0,
- 82, 252, 0,
- 83, 253, 0, 109, 254, 0, 113, 254, 0, 115, 254, 0, 117, 254, 19, 102, 252,
- 112, 255,
- 233, 252, 234, 252, 235, 252, 236, 252, 243, 255, 244, 255, 245, 255, 246,
- 255,
- 247, 255, 249, 255, 0, 21, 252, 0, 25, 252, 0, 27, 252, 0, 29, 252, 0, 79,
- 255, 0, 83,
- 255, 13, 85, 254, 87, 251, 88, 251, 90, 251, 122, 251, 222, 251, 254, 251,
- 0, 1, 251,
- 0, 100, 254, 0, 102, 254, 0, 122, 251, 1, 32, 25, 248, 13, 85, 254, 87,
- 251, 88, 251,
- 90, 251, 122, 251, 222, 251, 254, 251, 0, 1, 251, 0, 100, 254, 0, 102,
- 254, 0, 122,
- 251, 1, 32, 25, 248, 13, 85, 254, 87, 251, 88, 251, 90, 251, 122, 251,
- 222, 251, 254,
- 251, 0, 1, 251, 0, 100, 254, 0, 102, 254, 0, 122, 251, 1, 32, 25, 248, 11,
- 66, 252,
- 193, 252, 194, 252, 195, 252, 196, 252, 197, 252, 198, 252, 0, 2, 252, 0,
- 4, 252,
- 0, 6, 252, 2, 119, 250, 11, 66, 252, 193, 252, 194, 252, 195, 252, 196,
- 252, 197,
- 252, 198, 252, 0, 2, 252, 0, 4, 252, 0, 6, 252, 2, 119, 250, 11, 66, 252,
- 193, 252,
- 194, 252, 195, 252, 196, 252, 197, 252, 198, 252, 0, 2, 252, 0, 4, 252, 0,
- 6, 252,
- 2, 119, 250, 20, 66, 250, 85, 250, 87, 249, 88, 249, 89, 250, 90, 249,
- 193, 250, 194,
- 250, 195, 250, 196, 250, 197, 250, 198, 250, 222, 249, 0, 2, 250, 0, 4,
- 250, 0, 6,
- 250, 0, 100, 250, 0, 102, 250, 0, 122, 249, 7, 119, 254, 120, 253, 121,
- 255, 122,
- 255, 254, 255, 0, 1, 255, 20, 66, 250, 85, 250, 87, 249, 88, 249, 89, 250,
- 90, 249,
- 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 222, 249, 0,
- 2, 250,
- 0, 4, 250, 0, 6, 250, 0, 100, 250, 0, 102, 250, 0, 122, 249, 7, 119, 254,
- 120, 253,
- 121, 255, 122, 255, 254, 255, 0, 1, 255, 27, 80, 250, 85, 252, 86, 250,
- 87, 254, 88,
- 254, 90, 254, 211, 250, 212, 250, 213, 250, 214, 250, 215, 250, 217, 250,
- 218, 250,
- 219, 250, 220, 250, 221, 250, 222, 254, 0, 78, 250, 0, 82, 250, 0, 100,
- 252, 0, 102,
- 252, 0, 108, 250, 0, 112, 250, 0, 114, 250, 0, 116, 250, 0, 122, 254, 3,
- 45, 246, 47,
- 246, 27, 80, 250, 85, 252, 86, 250, 87, 254, 88, 254, 90, 254, 211, 250,
- 212, 250,
- 213, 250, 214, 250, 215, 250, 217, 250, 218, 250, 219, 250, 220, 250, 221,
- 250,
- 222, 254, 0, 78, 250, 0, 82, 250, 0, 100, 252, 0, 102, 252, 0, 108, 250,
- 0, 112, 250,
- 0, 114, 250, 0, 116, 250, 0, 122, 254, 3, 45, 246, 47, 246, 27, 80, 250,
- 85, 252, 86,
- 250, 87, 254, 88, 254, 90, 254, 211, 250, 212, 250, 213, 250, 214, 250,
- 215, 250,
- 217, 250, 218, 250, 219, 250, 220, 250, 221, 250, 222, 254, 0, 78, 250, 0,
- 82, 250,
- 0, 100, 252, 0, 102, 252, 0, 108, 250, 0, 112, 250, 0, 114, 250, 0, 116,
- 250, 0, 122,
- 254, 3, 45, 246, 47, 246, 73, 45, 242, 46, 242, 47, 242, 59, 245, 60, 245,
- 66, 248,
- 80, 254, 98, 242, 102, 242, 106, 251, 112, 241, 115, 251, 118, 251, 120,
- 251, 122,
- 251, 193, 248, 194, 248, 195, 248, 196, 248, 197, 248, 198, 248, 211, 254,
- 212,
- 254, 213, 254, 214, 254, 215, 254, 217, 254, 225, 242, 226, 242, 227, 242,
- 228,
- 242, 229, 242, 230, 242, 233, 248, 234, 242, 235, 242, 236, 248, 238, 251,
- 243,
- 241, 244, 241, 245, 241, 246, 241, 247, 241, 249, 241, 250, 251, 251, 251,
- 252,
- 251, 253, 251, 254, 251, 0, 1, 251, 0, 2, 248, 0, 3, 242, 0, 4, 248, 0, 5,
- 242, 0, 6,
- 248, 0, 7, 242, 0, 21, 248, 0, 25, 242, 0, 27, 242, 0, 29, 242, 0, 49,
- 251, 0, 78, 254,
- 0, 79, 241, 0, 82, 254, 0, 83, 241, 0, 87, 251, 0, 89, 251, 0, 91, 251, 0,
- 109, 251,
- 0, 113, 251, 0, 115, 251, 0, 117, 251, 73, 45, 242, 46, 242, 47, 242, 59,
- 245, 60,
- 245, 66, 248, 80, 254, 98, 242, 102, 242, 106, 251, 112, 241, 115, 251,
- 118, 251,
- 120, 251, 122, 251, 193, 248, 194, 248, 195, 248, 196, 248, 197, 248, 198,
- 248,
- 211, 254, 212, 254, 213, 254, 214, 254, 215, 254, 217, 254, 225, 242, 226,
- 242,
- 227, 242, 228, 242, 229, 242, 230, 242, 233, 248, 234, 242, 235, 242, 236,
- 248,
- 238, 251, 243, 241, 244, 241, 245, 241, 246, 241, 247, 241, 249, 241, 250,
- 251,
- 251, 251, 252, 251, 253, 251, 254, 251, 0, 1, 251, 0, 2, 248, 0, 3, 242,
- 0, 4, 248,
- 0, 5, 242, 0, 6, 248, 0, 7, 242, 0, 21, 248, 0, 25, 242, 0, 27, 242, 0,
- 29, 242, 0, 49,
- 251, 0, 78, 254, 0, 79, 241, 0, 82, 254, 0, 83, 241, 0, 87, 251, 0, 89,
- 251, 0, 91, 251,
- 0, 109, 251, 0, 113, 251, 0, 115, 251, 0, 117, 251, 11, 66, 249, 193, 249,
- 194, 249,
- 195, 249, 196, 249, 197, 249, 198, 249, 0, 2, 249, 0, 4, 249, 0, 6, 249,
- 11, 66, 249,
- 193, 249, 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 0, 2, 249, 0,
- 4, 249,
- 0, 6, 249, 11, 66, 249, 193, 249, 194, 249, 195, 249, 196, 249, 197, 249,
- 198, 249,
- 0, 2, 249, 0, 4, 249, 0, 6, 249, 11, 66, 249, 193, 249, 194, 249, 195,
- 249, 196, 249,
- 197, 249, 198, 249, 0, 2, 249, 0, 4, 249, 0, 6, 249, 65, 45, 242, 46, 242,
- 47, 245,
- 59, 242, 60, 242, 66, 245, 80, 253, 98, 242, 102, 238, 106, 248, 112, 238,
- 118, 242,
- 193, 245, 194, 245, 195, 245, 196, 245, 197, 245, 198, 245, 211, 253, 212,
- 253,
- 213, 253, 214, 253, 215, 253, 217, 253, 225, 242, 226, 242, 227, 242, 228,
- 242,
- 229, 242, 230, 242, 233, 245, 234, 238, 235, 245, 236, 245, 238, 248, 243,
- 238,
- 244, 238, 245, 238, 246, 238, 247, 238, 249, 238, 250, 242, 251, 242, 252,
- 242,
- 253, 242, 0, 2, 245, 0, 3, 242, 0, 4, 245, 0, 5, 242, 0, 6, 245, 0, 7,
- 242, 0, 21, 245,
- 0, 25, 238, 0, 27, 238, 0, 29, 238, 0, 49, 248, 0, 78, 253, 0, 79, 238, 0,
- 82, 253, 0,
- 83, 238, 0, 109, 242, 0, 113, 242, 0, 115, 242, 0, 117, 242, 2, 1, 32, 24,
- 245, 17,
- 33, 245, 101, 254, 115, 254, 116, 245, 117, 251, 119, 254, 0, 19, 254, 0,
- 87, 254,
- 0, 89, 254, 0, 91, 254, 0, 93, 245, 0, 97, 245, 0, 99, 245, 0, 101, 251,
- 1, 2, 25, 245,
- 1, 32, 25, 245
-};
-static afm_cuint16 afm_Times_BoldItalic_highchars_index[] = { /* 220 */
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176,
- 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257,
- 258, 259, 260, 261, 262, 263, 268, 269, 270, 271, 272, 273, 274, 275, 278,
- 279,
- 280, 281, 282, 283, 286, 287, 290, 291, 298, 299, 302, 303, 304, 305, 310,
- 311,
- 313, 314, 315, 316, 317, 318, 321, 322, 323, 324, 325, 326, 327, 328, 332,
- 333,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 350, 351, 352,
- 353,
- 354, 355, 356, 357, 362, 363, 366, 367, 368, 369, 370, 371, 376, 377, 378,
- 379,
- 380, 381, 382, 402, 536, 537, 710, 711, 728, 729, 730, 731, 732, 733,
- 8211, 8212,
- 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8249,
- 8250,
- 8260, 8364, 8482, 8706, 8710, 8721, 8722, 8730, 8800, 8804, 8805, 9674,
- 63171,
- 64257, 64258
-};
-static afm_cunicode afm_Times_BoldItalic_ligatures[] = { /* 3 */
- 102, 105, 64257
-};
-
-
-/* ------------------------------------------------------------------*/
-/* FontName: Times-Italic */
-/* FullName: Times Italic */
-/* FamilyName: Times */
-static afm_cuint8 afm_Times_Italic_widths[] = { /* 315 */
- 42, 56, 70, 83, 83, 139, 130, 36, 56, 56, 83, 113, 42, 56, 42, 46, 83, 83,
- 83, 83, 83,
- 83, 83, 83, 83, 83, 56, 56, 113, 113, 113, 83, 153, 102, 102, 111, 120,
- 102, 102,
- 120, 120, 56, 74, 111, 93, 139, 111, 120, 102, 120, 102, 83, 93, 120, 102,
- 139, 102,
- 93, 93, 65, 46, 65, 70, 83, 56, 83, 83, 74, 83, 74, 46, 83, 83, 46, 46,
- 74, 46, 120,
- 83, 83, 83, 83, 65, 65, 46, 83, 74, 111, 74, 74, 65, 67, 46, 67, 90, 65,
- 83, 83, 83,
- 83, 46, 83, 56, 127, 46, 83, 113, 127, 56, 67, 113, 50, 50, 56, 83, 87,
- 42, 56, 50,
- 52, 83, 125, 125, 125, 83, 102, 102, 102, 102, 102, 102, 148, 111, 102,
- 102, 102,
- 102, 56, 56, 56, 56, 120, 111, 120, 120, 120, 120, 120, 113, 120, 120,
- 120, 120,
- 120, 93, 102, 83, 83, 83, 83, 83, 83, 83, 111, 74, 74, 74, 74, 74, 46, 46,
- 46, 46, 83,
- 83, 83, 83, 83, 83, 83, 113, 83, 83, 83, 83, 83, 74, 83, 74, 102, 83, 102,
- 83, 102,
- 83, 111, 74, 111, 74, 120, 91, 120, 83, 102, 74, 102, 74, 102, 74, 102,
- 74, 120, 83,
- 120, 83, 56, 46, 56, 46, 56, 46, 111, 74, 93, 46, 93, 46, 102, 50, 93, 46,
- 111, 83,
- 111, 83, 111, 83, 120, 83, 120, 83, 157, 111, 102, 65, 102, 65, 102, 65,
- 83, 65, 83,
- 65, 83, 65, 93, 46, 93, 50, 120, 83, 120, 83, 120, 83, 120, 83, 93, 93,
- 65, 93, 65,
- 93, 65, 83, 83, 65, 56, 56, 56, 56, 56, 56, 56, 56, 83, 148, 56, 56, 56,
- 93, 93, 93,
- 83, 83, 58, 148, 167, 56, 56, 28, 83, 163, 79, 102, 100, 113, 76, 92, 92,
- 92, 79, 42,
- 83, 83
-};
-static afm_sint16 afm_Times_Italic_kerning_index[] = { /* 315 */
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 62, 181, 0, 227, 0, 262, 0, 0, 0, 382, 497, 589, 0, 620, 644, 689,
- 782, 805, 0,
- 859, 1027, 1055, 1212, 0, 1367, 0, 0, 0, 0, 0, 0, 0, 1524, 1533, 1558, 0,
- 1566, 1592,
- 1611, 0, 0, 0, 1646, 0, 0, 1696, 1699, 0, 0, 1710, 0, 0, 0, 1822, 1827, 0,
- 1832, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1837, 1956, 2075, 2194, 2313, 2432, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2551, 2575,
- 2620, 2665, 2710, 2755, 0, 2800, 2845, 2873, 2901, 2929, 2957, 0, 0, 3114,
- 3123,
- 3132, 3141, 3150, 3159, 0, 3168, 3176, 3202, 3228, 3254, 0, 0, 0, 0, 0,
- 3280, 3283,
- 3294, 3305, 3316, 3327, 0, 3338, 0, 0, 0, 0, 3349, 0, 3354, 3359, 3478,
- 3487, 3606,
- 3615, 3734, 0, 3743, 0, 3751, 3759, 0, 3794, 0, 0, 3829, 0, 3855, 0, 3881,
- 0, 3907,
- 0, 3933, 0, 3968, 0, 0, 0, 0, 0, 0, 4003, 4095, 4145, 0, 4176, 0, 0, 0,
- 4207, 0, 4238,
- 4262, 4265, 4289, 4292, 4316, 4319, 4364, 4375, 4420, 0, 0, 4431, 4485,
- 4597,
- 4651, 4763, 4817, 0, 0, 0, 0, 0, 0, 4929, 0, 5097, 0, 5265, 0, 5293, 0,
- 5321, 0, 5349,
- 0, 5377, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5534,
- 5539, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-static afm_cuint8 afm_Times_Italic_kerning_data[] = { /* 5584 */
- 42, 19, 66, 254, 85, 254, 87, 251, 88, 250, 90, 244, 193, 254, 194, 254,
- 195, 254,
- 196, 254, 197, 254, 198, 254, 222, 244, 0, 2, 254, 0, 4, 254, 0, 6, 254,
- 0, 100, 254,
- 0, 102, 254, 0, 122, 244, 3, 1, 32, 25, 234, 1, 32, 29, 234, 3, 1, 32, 25,
- 234, 1, 32,
- 29, 234, 50, 68, 252, 72, 251, 80, 250, 82, 250, 85, 251, 86, 249, 87,
- 239, 88, 241,
- 90, 248, 118, 254, 119, 248, 120, 248, 122, 248, 200, 252, 211, 250, 212,
- 250, 213,
- 250, 214, 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249,
- 222,
- 248, 250, 254, 251, 254, 252, 254, 253, 254, 254, 248, 0, 1, 248, 0, 8,
- 252, 0, 14,
- 252, 0, 32, 251, 0, 36, 251, 0, 78, 250, 0, 82, 250, 0, 100, 251, 0, 102,
- 251, 0, 108,
- 249, 0, 109, 254, 0, 112, 249, 0, 113, 254, 0, 114, 249, 0, 115, 254, 0,
- 116, 249,
- 0, 117, 254, 0, 122, 248, 1, 32, 25, 251, 20, 66, 253, 86, 255, 193, 253,
- 194, 253,
- 195, 253, 196, 253, 197, 253, 198, 253, 218, 255, 219, 255, 220, 255, 221,
- 255,
- 0, 2, 253, 0, 4, 253, 0, 6, 253, 0, 108, 255, 0, 112, 255, 0, 114, 255, 0,
- 116, 255,
- 16, 66, 251, 87, 250, 88, 250, 90, 250, 193, 251, 194, 251, 195, 251, 196,
- 251, 197,
- 251, 198, 251, 222, 250, 0, 2, 251, 0, 4, 251, 0, 6, 251, 0, 122, 250, 52,
- 45, 234,
- 47, 234, 66, 238, 98, 244, 102, 244, 106, 249, 112, 239, 115, 248, 193,
- 238, 194,
- 238, 195, 238, 196, 238, 197, 238, 198, 238, 225, 244, 226, 244, 227, 244,
- 228,
- 244, 229, 244, 230, 244, 233, 244, 234, 244, 235, 244, 236, 244, 237, 249,
- 238,
- 249, 239, 249, 240, 249, 243, 239, 244, 239, 245, 239, 246, 239, 247, 239,
- 249,
- 239, 0, 2, 238, 0, 3, 244, 0, 4, 238, 0, 5, 244, 0, 6, 238, 0, 7, 244, 0,
- 21, 244, 0, 25,
- 244, 0, 27, 244, 0, 29, 244, 0, 45, 249, 0, 49, 249, 0, 79, 239, 0, 83,
- 239, 0, 87, 248,
- 0, 89, 248, 0, 91, 248, 50, 45, 253, 47, 253, 66, 250, 98, 251, 102, 253,
- 112, 253,
- 118, 251, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 225,
- 251,
- 226, 251, 227, 251, 228, 251, 229, 251, 230, 251, 233, 253, 234, 253, 235,
- 253,
- 236, 253, 243, 253, 244, 253, 245, 253, 246, 253, 247, 253, 249, 253, 250,
- 251,
- 251, 251, 252, 251, 253, 251, 0, 2, 250, 0, 3, 251, 0, 4, 250, 0, 5, 251,
- 0, 6, 250,
- 0, 7, 251, 0, 21, 253, 0, 25, 253, 0, 27, 253, 0, 29, 253, 0, 79, 253, 0,
- 83, 253, 0,
- 109, 251, 0, 113, 251, 0, 115, 251, 0, 117, 251, 40, 80, 249, 102, 251,
- 112, 250,
- 118, 250, 122, 250, 211, 249, 212, 249, 213, 249, 214, 249, 215, 249, 217,
- 249,
- 233, 251, 234, 251, 235, 251, 236, 251, 243, 250, 244, 250, 245, 250, 246,
- 250,
- 247, 250, 249, 250, 250, 250, 251, 250, 252, 250, 253, 250, 254, 250, 0,
- 1, 250,
- 0, 21, 251, 0, 25, 251, 0, 27, 251, 0, 29, 251, 0, 78, 249, 0, 79, 250, 0,
- 82, 249, 0,
- 83, 250, 0, 109, 250, 0, 113, 250, 0, 115, 250, 0, 117, 250, 13, 85, 254,
- 87, 248,
- 88, 248, 90, 254, 122, 252, 222, 254, 254, 252, 0, 1, 252, 0, 100, 254, 0,
- 102, 254,
- 0, 122, 254, 1, 32, 25, 251, 11, 66, 252, 193, 252, 194, 252, 195, 252,
- 196, 252,
- 197, 252, 198, 252, 0, 2, 252, 0, 4, 252, 0, 6, 252, 20, 66, 248, 85, 250,
- 87, 249,
- 88, 249, 89, 250, 90, 249, 193, 248, 194, 248, 195, 248, 196, 248, 197,
- 248, 198,
- 248, 222, 249, 0, 2, 248, 0, 4, 248, 0, 6, 248, 0, 100, 250, 0, 102, 250,
- 0, 122, 249,
- 41, 45, 234, 47, 234, 66, 242, 98, 244, 102, 244, 112, 244, 193, 242, 194,
- 242, 195,
- 242, 196, 242, 197, 242, 198, 242, 225, 244, 226, 244, 227, 244, 228, 244,
- 229,
- 244, 230, 244, 233, 244, 234, 244, 235, 244, 236, 244, 243, 244, 244, 244,
- 245,
- 244, 246, 244, 247, 244, 249, 244, 0, 2, 242, 0, 3, 244, 0, 4, 242, 0, 5,
- 244, 0, 6,
- 242, 0, 7, 244, 0, 21, 244, 0, 25, 244, 0, 27, 244, 0, 29, 244, 0, 79,
- 244, 0, 83, 244,
- 10, 86, 255, 218, 255, 219, 255, 220, 255, 221, 255, 0, 108, 255, 0, 112,
- 255, 0,
- 114, 255, 0, 116, 255, 24, 80, 250, 86, 250, 87, 254, 88, 254, 90, 254,
- 211, 250,
- 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 218, 250, 219, 250, 220,
- 250,
- 221, 250, 222, 254, 0, 78, 250, 0, 82, 250, 0, 108, 250, 0, 112, 250, 0,
- 114, 250,
- 0, 116, 250, 0, 122, 254, 73, 45, 245, 46, 245, 47, 245, 59, 248, 60, 246,
- 66, 249,
- 80, 254, 98, 242, 102, 242, 106, 248, 112, 242, 115, 248, 118, 248, 120,
- 245, 122,
- 245, 193, 249, 194, 249, 195, 249, 196, 249, 197, 249, 198, 249, 211, 254,
- 212,
- 254, 213, 254, 214, 254, 215, 254, 217, 254, 225, 242, 226, 242, 227, 242,
- 228,
- 242, 229, 242, 230, 242, 233, 248, 234, 242, 235, 248, 236, 248, 238, 248,
- 243,
- 242, 244, 242, 245, 242, 246, 242, 247, 242, 249, 242, 250, 248, 251, 248,
- 252,
- 248, 253, 248, 254, 245, 0, 1, 251, 0, 2, 249, 0, 3, 242, 0, 4, 249, 0, 5,
- 242, 0, 6,
- 249, 0, 7, 242, 0, 21, 248, 0, 25, 242, 0, 27, 242, 0, 29, 242, 0, 49,
- 248, 0, 78, 254,
- 0, 79, 242, 0, 82, 254, 0, 83, 242, 0, 87, 248, 0, 89, 248, 0, 91, 248, 0,
- 109, 248,
- 0, 113, 248, 0, 115, 248, 0, 117, 248, 13, 45, 253, 47, 253, 66, 250, 193,
- 250, 194,
- 250, 195, 250, 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0, 6,
- 250, 69, 45,
- 235, 46, 248, 47, 235, 59, 246, 60, 245, 66, 247, 80, 252, 98, 238, 102,
- 238, 106,
- 245, 112, 238, 118, 245, 193, 247, 194, 247, 195, 247, 196, 247, 197, 247,
- 198,
- 247, 211, 252, 212, 252, 213, 252, 214, 252, 215, 252, 217, 252, 225, 238,
- 226,
- 238, 227, 238, 228, 238, 229, 238, 230, 238, 233, 245, 234, 238, 235, 238,
- 236,
- 245, 237, 251, 238, 245, 239, 251, 240, 251, 243, 238, 244, 238, 245, 238,
- 246,
- 238, 247, 238, 249, 238, 250, 245, 251, 245, 252, 245, 253, 245, 0, 2,
- 247, 0, 3,
- 238, 0, 4, 247, 0, 5, 238, 0, 6, 247, 0, 7, 238, 0, 21, 245, 0, 25, 238,
- 0, 27, 238, 0,
- 29, 238, 0, 45, 251, 0, 49, 245, 0, 78, 252, 0, 79, 238, 0, 82, 252, 0,
- 83, 238, 0, 109,
- 245, 0, 113, 245, 0, 115, 245, 0, 117, 245, 68, 45, 242, 46, 251, 47, 242,
- 59, 246,
- 60, 246, 66, 247, 80, 253, 98, 242, 102, 242, 106, 248, 112, 242, 118,
- 248, 122,
- 245, 193, 247, 194, 247, 195, 247, 196, 247, 197, 247, 198, 247, 211, 253,
- 212,
- 253, 213, 253, 214, 253, 215, 253, 217, 253, 225, 242, 226, 242, 227, 242,
- 228,
- 242, 229, 242, 230, 242, 233, 248, 234, 242, 235, 242, 236, 248, 238, 248,
- 243,
- 242, 244, 242, 245, 242, 246, 242, 247, 242, 249, 242, 250, 248, 251, 248,
- 252,
- 248, 253, 248, 254, 245, 0, 1, 245, 0, 2, 247, 0, 3, 242, 0, 4, 247, 0, 5,
- 242, 0, 6,
- 247, 0, 7, 242, 0, 21, 248, 0, 25, 242, 0, 27, 242, 0, 29, 242, 0, 49,
- 248, 0, 78, 253,
- 0, 79, 242, 0, 82, 253, 0, 83, 242, 0, 109, 248, 0, 113, 248, 0, 115, 248,
- 0, 117, 248,
- 69, 45, 242, 46, 245, 47, 242, 59, 246, 60, 246, 66, 249, 80, 254, 98,
- 242, 102, 242,
- 106, 245, 112, 242, 118, 242, 193, 249, 194, 249, 195, 249, 196, 249, 197,
- 249,
- 198, 249, 211, 254, 212, 254, 213, 254, 214, 254, 215, 254, 217, 254, 225,
- 242,
- 226, 242, 227, 242, 228, 242, 229, 242, 230, 242, 233, 248, 234, 242, 235,
- 242,
- 236, 248, 237, 251, 238, 245, 239, 251, 240, 251, 243, 242, 244, 242, 245,
- 242,
- 246, 242, 247, 242, 249, 242, 250, 242, 251, 242, 252, 242, 253, 242, 0,
- 2, 249,
- 0, 3, 242, 0, 4, 249, 0, 5, 242, 0, 6, 249, 0, 7, 242, 0, 21, 248, 0, 25,
- 242, 0, 27, 242,
- 0, 29, 242, 0, 45, 251, 0, 49, 245, 0, 78, 254, 0, 79, 242, 0, 82, 254, 0,
- 83, 242, 0,
- 109, 242, 0, 113, 242, 0, 115, 242, 0, 117, 242, 4, 104, 255, 0, 33, 255,
- 0, 37, 255,
- 11, 47, 250, 118, 254, 250, 254, 251, 254, 252, 254, 253, 254, 0, 109,
- 254, 0, 113,
- 254, 0, 115, 254, 0, 117, 254, 4, 105, 254, 108, 254, 0, 57, 254, 12, 45,
- 255, 47,
- 254, 104, 250, 119, 254, 120, 254, 121, 254, 122, 252, 254, 252, 0, 1,
- 252, 0, 33,
- 250, 0, 37, 250, 8, 45, 255, 47, 254, 103, 254, 106, 254, 0, 49, 254, 0,
- 51, 247, 1,
- 32, 25, 15, 15, 45, 255, 47, 254, 102, 255, 104, 255, 233, 255, 234, 255,
- 235, 255,
- 236, 255, 0, 21, 255, 0, 25, 255, 0, 27, 255, 0, 29, 255, 0, 33, 255, 0,
- 37, 255, 22,
- 102, 255, 112, 255, 122, 255, 233, 255, 234, 255, 235, 255, 236, 255, 243,
- 255,
- 244, 255, 245, 255, 246, 255, 247, 255, 249, 255, 254, 255, 0, 1, 255, 0,
- 21, 255,
- 0, 25, 255, 0, 27, 255, 0, 29, 255, 0, 79, 255, 0, 83, 255, 2, 119, 250,
- 5, 104, 255,
- 119, 255, 0, 33, 255, 0, 37, 255, 47, 45, 238, 46, 254, 47, 238, 98, 254,
- 100, 251,
- 101, 251, 102, 251, 104, 251, 112, 249, 114, 251, 116, 255, 225, 254, 226,
- 254,
- 227, 254, 228, 254, 229, 254, 230, 254, 232, 251, 233, 251, 234, 251, 235,
- 251,
- 236, 251, 243, 249, 244, 249, 245, 249, 246, 249, 247, 249, 249, 249, 0,
- 3, 254,
- 0, 5, 254, 0, 7, 254, 0, 9, 251, 0, 15, 251, 0, 19, 251, 0, 21, 251, 0,
- 25, 251, 0, 27,
- 251, 0, 29, 251, 0, 33, 251, 0, 37, 251, 0, 79, 249, 0, 83, 249, 0, 93,
- 255, 0, 97, 255,
- 0, 99, 255, 1, 2, 25, 255, 3, 45, 245, 47, 245, 3, 45, 245, 47, 245, 3,
- 45, 248, 47,
- 248, 50, 68, 252, 72, 251, 80, 250, 82, 250, 85, 251, 86, 249, 87, 239,
- 88, 241, 90,
- 248, 118, 254, 119, 248, 120, 248, 122, 248, 200, 252, 211, 250, 212, 250,
- 213,
- 250, 214, 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249,
- 222,
- 248, 250, 254, 251, 254, 252, 254, 253, 254, 254, 248, 0, 1, 248, 0, 8,
- 252, 0, 14,
- 252, 0, 32, 251, 0, 36, 251, 0, 78, 250, 0, 82, 250, 0, 100, 251, 0, 102,
- 251, 0, 108,
- 249, 0, 109, 254, 0, 112, 249, 0, 113, 254, 0, 114, 249, 0, 115, 254, 0,
- 116, 249,
- 0, 117, 254, 0, 122, 248, 1, 32, 25, 251, 50, 68, 252, 72, 251, 80, 250,
- 82, 250, 85,
- 251, 86, 249, 87, 239, 88, 241, 90, 248, 118, 254, 119, 248, 120, 248,
- 122, 248,
- 200, 252, 211, 250, 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 218,
- 249,
- 219, 249, 220, 249, 221, 249, 222, 248, 250, 254, 251, 254, 252, 254, 253,
- 254,
- 254, 248, 0, 1, 248, 0, 8, 252, 0, 14, 252, 0, 32, 251, 0, 36, 251, 0, 78,
- 250, 0, 82,
- 250, 0, 100, 251, 0, 102, 251, 0, 108, 249, 0, 109, 254, 0, 112, 249, 0,
- 113, 254,
- 0, 114, 249, 0, 115, 254, 0, 116, 249, 0, 117, 254, 0, 122, 248, 1, 32,
- 25, 251, 50,
- 68, 252, 72, 251, 80, 250, 82, 250, 85, 251, 86, 249, 87, 239, 88, 241,
- 90, 248, 118,
- 254, 119, 248, 120, 248, 122, 248, 200, 252, 211, 250, 212, 250, 213, 250,
- 214,
- 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249, 222, 248,
- 250,
- 254, 251, 254, 252, 254, 253, 254, 254, 248, 0, 1, 248, 0, 8, 252, 0, 14,
- 252, 0, 32,
- 251, 0, 36, 251, 0, 78, 250, 0, 82, 250, 0, 100, 251, 0, 102, 251, 0, 108,
- 249, 0, 109,
- 254, 0, 112, 249, 0, 113, 254, 0, 114, 249, 0, 115, 254, 0, 116, 249, 0,
- 117, 254,
- 0, 122, 248, 1, 32, 25, 251, 50, 68, 252, 72, 251, 80, 250, 82, 250, 85,
- 251, 86, 249,
- 87, 239, 88, 241, 90, 248, 118, 254, 119, 248, 120, 248, 122, 248, 200,
- 252, 211,
- 250, 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 218, 249, 219, 249,
- 220,
- 249, 221, 249, 222, 248, 250, 254, 251, 254, 252, 254, 253, 254, 254, 248,
- 0, 1,
- 248, 0, 8, 252, 0, 14, 252, 0, 32, 251, 0, 36, 251, 0, 78, 250, 0, 82,
- 250, 0, 100, 251,
- 0, 102, 251, 0, 108, 249, 0, 109, 254, 0, 112, 249, 0, 113, 254, 0, 114,
- 249, 0, 115,
- 254, 0, 116, 249, 0, 117, 254, 0, 122, 248, 1, 32, 25, 251, 50, 68, 252,
- 72, 251, 80,
- 250, 82, 250, 85, 251, 86, 249, 87, 239, 88, 241, 90, 248, 118, 254, 119,
- 248, 120,
- 248, 122, 248, 200, 252, 211, 250, 212, 250, 213, 250, 214, 250, 215, 250,
- 217,
- 250, 218, 249, 219, 249, 220, 249, 221, 249, 222, 248, 250, 254, 251, 254,
- 252,
- 254, 253, 254, 254, 248, 0, 1, 248, 0, 8, 252, 0, 14, 252, 0, 32, 251, 0,
- 36, 251, 0,
- 78, 250, 0, 82, 250, 0, 100, 251, 0, 102, 251, 0, 108, 249, 0, 109, 254,
- 0, 112, 249,
- 0, 113, 254, 0, 114, 249, 0, 115, 254, 0, 116, 249, 0, 117, 254, 0, 122,
- 248, 1, 32,
- 25, 251, 50, 68, 252, 72, 251, 80, 250, 82, 250, 85, 251, 86, 249, 87,
- 239, 88, 241,
- 90, 248, 118, 254, 119, 248, 120, 248, 122, 248, 200, 252, 211, 250, 212,
- 250, 213,
- 250, 214, 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249,
- 222,
- 248, 250, 254, 251, 254, 252, 254, 253, 254, 254, 248, 0, 1, 248, 0, 8,
- 252, 0, 14,
- 252, 0, 32, 251, 0, 36, 251, 0, 78, 250, 0, 82, 250, 0, 100, 251, 0, 102,
- 251, 0, 108,
- 249, 0, 109, 254, 0, 112, 249, 0, 113, 254, 0, 114, 249, 0, 115, 254, 0,
- 116, 249,
- 0, 117, 254, 0, 122, 248, 1, 32, 25, 251, 11, 66, 252, 193, 252, 194, 252,
- 195, 252,
- 196, 252, 197, 252, 198, 252, 0, 2, 252, 0, 4, 252, 0, 6, 252, 20, 66,
- 248, 85, 250,
- 87, 249, 88, 249, 89, 250, 90, 249, 193, 248, 194, 248, 195, 248, 196,
- 248, 197,
- 248, 198, 248, 222, 249, 0, 2, 248, 0, 4, 248, 0, 6, 248, 0, 100, 250, 0,
- 102, 250,
- 0, 122, 249, 20, 66, 248, 85, 250, 87, 249, 88, 249, 89, 250, 90, 249,
- 193, 248, 194,
- 248, 195, 248, 196, 248, 197, 248, 198, 248, 222, 249, 0, 2, 248, 0, 4,
- 248, 0, 6,
- 248, 0, 100, 250, 0, 102, 250, 0, 122, 249, 20, 66, 248, 85, 250, 87, 249,
- 88, 249,
- 89, 250, 90, 249, 193, 248, 194, 248, 195, 248, 196, 248, 197, 248, 198,
- 248, 222,
- 249, 0, 2, 248, 0, 4, 248, 0, 6, 248, 0, 100, 250, 0, 102, 250, 0, 122,
- 249, 20, 66,
- 248, 85, 250, 87, 249, 88, 249, 89, 250, 90, 249, 193, 248, 194, 248, 195,
- 248, 196,
- 248, 197, 248, 198, 248, 222, 249, 0, 2, 248, 0, 4, 248, 0, 6, 248, 0,
- 100, 250, 0,
- 102, 250, 0, 122, 249, 20, 66, 248, 85, 250, 87, 249, 88, 249, 89, 250,
- 90, 249, 193,
- 248, 194, 248, 195, 248, 196, 248, 197, 248, 198, 248, 222, 249, 0, 2,
- 248, 0, 4,
- 248, 0, 6, 248, 0, 100, 250, 0, 102, 250, 0, 122, 249, 20, 66, 248, 85,
- 250, 87, 249,
- 88, 249, 89, 250, 90, 249, 193, 248, 194, 248, 195, 248, 196, 248, 197,
- 248, 198,
- 248, 222, 249, 0, 2, 248, 0, 4, 248, 0, 6, 248, 0, 100, 250, 0, 102, 250,
- 0, 122, 249,
- 13, 45, 253, 47, 253, 66, 250, 193, 250, 194, 250, 195, 250, 196, 250,
- 197, 250,
- 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250, 13, 45, 253, 47, 253, 66, 250,
- 193, 250,
- 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0,
- 6, 250,
- 13, 45, 253, 47, 253, 66, 250, 193, 250, 194, 250, 195, 250, 196, 250,
- 197, 250,
- 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250, 13, 45, 253, 47, 253, 66, 250,
- 193, 250,
- 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0,
- 6, 250,
- 69, 45, 242, 46, 245, 47, 242, 59, 246, 60, 246, 66, 249, 80, 254, 98,
- 242, 102, 242,
- 106, 245, 112, 242, 118, 242, 193, 249, 194, 249, 195, 249, 196, 249, 197,
- 249,
- 198, 249, 211, 254, 212, 254, 213, 254, 214, 254, 215, 254, 217, 254, 225,
- 242,
- 226, 242, 227, 242, 228, 242, 229, 242, 230, 242, 233, 248, 234, 242, 235,
- 242,
- 236, 248, 237, 251, 238, 245, 239, 251, 240, 251, 243, 242, 244, 242, 245,
- 242,
- 246, 242, 247, 242, 249, 242, 250, 242, 251, 242, 252, 242, 253, 242, 0,
- 2, 249,
- 0, 3, 242, 0, 4, 249, 0, 5, 242, 0, 6, 249, 0, 7, 242, 0, 21, 248, 0, 25,
- 242, 0, 27, 242,
- 0, 29, 242, 0, 45, 251, 0, 49, 245, 0, 78, 254, 0, 79, 242, 0, 82, 254, 0,
- 83, 242, 0,
- 109, 242, 0, 113, 242, 0, 115, 242, 0, 117, 242, 4, 104, 255, 0, 33, 255,
- 0, 37, 255,
- 4, 104, 255, 0, 33, 255, 0, 37, 255, 4, 104, 255, 0, 33, 255, 0, 37, 255,
- 4, 104, 255,
- 0, 33, 255, 0, 37, 255, 4, 104, 255, 0, 33, 255, 0, 37, 255, 4, 104, 255,
- 0, 33, 255,
- 0, 37, 255, 4, 105, 254, 108, 254, 0, 57, 254, 12, 45, 255, 47, 254, 104,
- 250, 119,
- 254, 120, 254, 121, 254, 122, 252, 254, 252, 0, 1, 252, 0, 33, 250, 0, 37,
- 250, 12,
- 45, 255, 47, 254, 104, 250, 119, 254, 120, 254, 121, 254, 122, 252, 254,
- 252, 0,
- 1, 252, 0, 33, 250, 0, 37, 250, 12, 45, 255, 47, 254, 104, 250, 119, 254,
- 120, 254,
- 121, 254, 122, 252, 254, 252, 0, 1, 252, 0, 33, 250, 0, 37, 250, 12, 45,
- 255, 47, 254,
- 104, 250, 119, 254, 120, 254, 121, 254, 122, 252, 254, 252, 0, 1, 252, 0,
- 33, 250,
- 0, 37, 250, 2, 119, 250, 5, 104, 255, 119, 255, 0, 33, 255, 0, 37, 255, 5,
- 104, 255,
- 119, 255, 0, 33, 255, 0, 37, 255, 5, 104, 255, 119, 255, 0, 33, 255, 0,
- 37, 255, 5,
- 104, 255, 119, 255, 0, 33, 255, 0, 37, 255, 5, 104, 255, 119, 255, 0, 33,
- 255, 0, 37,
- 255, 5, 104, 255, 119, 255, 0, 33, 255, 0, 37, 255, 3, 45, 248, 47, 248,
- 3, 45, 248,
- 47, 248, 50, 68, 252, 72, 251, 80, 250, 82, 250, 85, 251, 86, 249, 87,
- 239, 88, 241,
- 90, 248, 118, 254, 119, 248, 120, 248, 122, 248, 200, 252, 211, 250, 212,
- 250, 213,
- 250, 214, 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249,
- 222,
- 248, 250, 254, 251, 254, 252, 254, 253, 254, 254, 248, 0, 1, 248, 0, 8,
- 252, 0, 14,
- 252, 0, 32, 251, 0, 36, 251, 0, 78, 250, 0, 82, 250, 0, 100, 251, 0, 102,
- 251, 0, 108,
- 249, 0, 109, 254, 0, 112, 249, 0, 113, 254, 0, 114, 249, 0, 115, 254, 0,
- 116, 249,
- 0, 117, 254, 0, 122, 248, 1, 32, 25, 251, 4, 104, 255, 0, 33, 255, 0, 37,
- 255, 50, 68,
- 252, 72, 251, 80, 250, 82, 250, 85, 251, 86, 249, 87, 239, 88, 241, 90,
- 248, 118,
- 254, 119, 248, 120, 248, 122, 248, 200, 252, 211, 250, 212, 250, 213, 250,
- 214,
- 250, 215, 250, 217, 250, 218, 249, 219, 249, 220, 249, 221, 249, 222, 248,
- 250,
- 254, 251, 254, 252, 254, 253, 254, 254, 248, 0, 1, 248, 0, 8, 252, 0, 14,
- 252, 0, 32,
- 251, 0, 36, 251, 0, 78, 250, 0, 82, 250, 0, 100, 251, 0, 102, 251, 0, 108,
- 249, 0, 109,
- 254, 0, 112, 249, 0, 113, 254, 0, 114, 249, 0, 115, 254, 0, 116, 249, 0,
- 117, 254,
- 0, 122, 248, 1, 32, 25, 251, 4, 104, 255, 0, 33, 255, 0, 37, 255, 50, 68,
- 252, 72, 251,
- 80, 250, 82, 250, 85, 251, 86, 249, 87, 239, 88, 241, 90, 248, 118, 254,
- 119, 248,
- 120, 248, 122, 248, 200, 252, 211, 250, 212, 250, 213, 250, 214, 250, 215,
- 250,
- 217, 250, 218, 249, 219, 249, 220, 249, 221, 249, 222, 248, 250, 254, 251,
- 254,
- 252, 254, 253, 254, 254, 248, 0, 1, 248, 0, 8, 252, 0, 14, 252, 0, 32,
- 251, 0, 36, 251,
- 0, 78, 250, 0, 82, 250, 0, 100, 251, 0, 102, 251, 0, 108, 249, 0, 109,
- 254, 0, 112,
- 249, 0, 113, 254, 0, 114, 249, 0, 115, 254, 0, 116, 249, 0, 117, 254, 0,
- 122, 248,
- 1, 32, 25, 251, 4, 104, 255, 0, 33, 255, 0, 37, 255, 4, 105, 254, 108,
- 254, 0, 57, 254,
- 4, 105, 254, 108, 254, 0, 57, 254, 16, 66, 251, 87, 250, 88, 250, 90, 250,
- 193, 251,
- 194, 251, 195, 251, 196, 251, 197, 251, 198, 251, 222, 250, 0, 2, 251, 0,
- 4, 251,
- 0, 6, 251, 0, 122, 250, 16, 66, 251, 87, 250, 88, 250, 90, 250, 193, 251,
- 194, 251,
- 195, 251, 196, 251, 197, 251, 198, 251, 222, 250, 0, 2, 251, 0, 4, 251, 0,
- 6, 251,
- 0, 122, 250, 12, 45, 255, 47, 254, 104, 250, 119, 254, 120, 254, 121, 254,
- 122, 252,
- 254, 252, 0, 1, 252, 0, 33, 250, 0, 37, 250, 12, 45, 255, 47, 254, 104,
- 250, 119, 254,
- 120, 254, 121, 254, 122, 252, 254, 252, 0, 1, 252, 0, 33, 250, 0, 37, 250,
- 12, 45,
- 255, 47, 254, 104, 250, 119, 254, 120, 254, 121, 254, 122, 252, 254, 252,
- 0, 1, 252,
- 0, 33, 250, 0, 37, 250, 12, 45, 255, 47, 254, 104, 250, 119, 254, 120,
- 254, 121, 254,
- 122, 252, 254, 252, 0, 1, 252, 0, 33, 250, 0, 37, 250, 15, 45, 255, 47,
- 254, 102, 255,
- 104, 255, 233, 255, 234, 255, 235, 255, 236, 255, 0, 21, 255, 0, 25, 255,
- 0, 27, 255,
- 0, 29, 255, 0, 33, 255, 0, 37, 255, 15, 45, 255, 47, 254, 102, 255, 104,
- 255, 233,
- 255, 234, 255, 235, 255, 236, 255, 0, 21, 255, 0, 25, 255, 0, 27, 255, 0,
- 29, 255,
- 0, 33, 255, 0, 37, 255, 40, 80, 249, 102, 251, 112, 250, 118, 250, 122,
- 250, 211,
- 249, 212, 249, 213, 249, 214, 249, 215, 249, 217, 249, 233, 251, 234, 251,
- 235,
- 251, 236, 251, 243, 250, 244, 250, 245, 250, 246, 250, 247, 250, 249, 250,
- 250,
- 250, 251, 250, 252, 250, 253, 250, 254, 250, 0, 1, 250, 0, 21, 251, 0, 25,
- 251, 0,
- 27, 251, 0, 29, 251, 0, 78, 249, 0, 79, 250, 0, 82, 249, 0, 83, 250, 0,
- 109, 250, 0,
- 113, 250, 0, 115, 250, 0, 117, 250, 22, 102, 255, 112, 255, 122, 255, 233,
- 255, 234,
- 255, 235, 255, 236, 255, 243, 255, 244, 255, 245, 255, 246, 255, 247, 255,
- 249,
- 255, 254, 255, 0, 1, 255, 0, 21, 255, 0, 25, 255, 0, 27, 255, 0, 29, 255,
- 0, 79, 255,
- 0, 83, 255, 13, 85, 254, 87, 248, 88, 248, 90, 254, 122, 252, 222, 254,
- 254, 252,
- 0, 1, 252, 0, 100, 254, 0, 102, 254, 0, 122, 254, 1, 32, 25, 251, 13, 85,
- 254, 87, 248,
- 88, 248, 90, 254, 122, 252, 222, 254, 254, 252, 0, 1, 252, 0, 100, 254, 0,
- 102, 254,
- 0, 122, 254, 1, 32, 25, 251, 13, 85, 254, 87, 248, 88, 248, 90, 254, 122,
- 252, 222,
- 254, 254, 252, 0, 1, 252, 0, 100, 254, 0, 102, 254, 0, 122, 254, 1, 32,
- 25, 251, 11,
- 66, 252, 193, 252, 194, 252, 195, 252, 196, 252, 197, 252, 198, 252, 0, 2,
- 252, 0,
- 4, 252, 0, 6, 252, 2, 119, 250, 11, 66, 252, 193, 252, 194, 252, 195, 252,
- 196, 252,
- 197, 252, 198, 252, 0, 2, 252, 0, 4, 252, 0, 6, 252, 2, 119, 250, 11, 66,
- 252, 193,
- 252, 194, 252, 195, 252, 196, 252, 197, 252, 198, 252, 0, 2, 252, 0, 4,
- 252, 0, 6,
- 252, 2, 119, 250, 20, 66, 248, 85, 250, 87, 249, 88, 249, 89, 250, 90,
- 249, 193, 248,
- 194, 248, 195, 248, 196, 248, 197, 248, 198, 248, 222, 249, 0, 2, 248, 0,
- 4, 248,
- 0, 6, 248, 0, 100, 250, 0, 102, 250, 0, 122, 249, 5, 104, 255, 119, 255,
- 0, 33, 255,
- 0, 37, 255, 20, 66, 248, 85, 250, 87, 249, 88, 249, 89, 250, 90, 249, 193,
- 248, 194,
- 248, 195, 248, 196, 248, 197, 248, 198, 248, 222, 249, 0, 2, 248, 0, 4,
- 248, 0, 6,
- 248, 0, 100, 250, 0, 102, 250, 0, 122, 249, 5, 104, 255, 119, 255, 0, 33,
- 255, 0, 37,
- 255, 24, 80, 250, 86, 250, 87, 254, 88, 254, 90, 254, 211, 250, 212, 250,
- 213, 250,
- 214, 250, 215, 250, 217, 250, 218, 250, 219, 250, 220, 250, 221, 250, 222,
- 254,
- 0, 78, 250, 0, 82, 250, 0, 108, 250, 0, 112, 250, 0, 114, 250, 0, 116,
- 250, 0, 122,
- 254, 47, 45, 238, 46, 254, 47, 238, 98, 254, 100, 251, 101, 251, 102, 251,
- 104, 251,
- 112, 249, 114, 251, 116, 255, 225, 254, 226, 254, 227, 254, 228, 254, 229,
- 254,
- 230, 254, 232, 251, 233, 251, 234, 251, 235, 251, 236, 251, 243, 249, 244,
- 249,
- 245, 249, 246, 249, 247, 249, 249, 249, 0, 3, 254, 0, 5, 254, 0, 7, 254,
- 0, 9, 251,
- 0, 15, 251, 0, 19, 251, 0, 21, 251, 0, 25, 251, 0, 27, 251, 0, 29, 251, 0,
- 33, 251, 0,
- 37, 251, 0, 79, 249, 0, 83, 249, 0, 93, 255, 0, 97, 255, 0, 99, 255, 1, 2,
- 25, 255, 24,
- 80, 250, 86, 250, 87, 254, 88, 254, 90, 254, 211, 250, 212, 250, 213, 250,
- 214, 250,
- 215, 250, 217, 250, 218, 250, 219, 250, 220, 250, 221, 250, 222, 254, 0,
- 78, 250,
- 0, 82, 250, 0, 108, 250, 0, 112, 250, 0, 114, 250, 0, 116, 250, 0, 122,
- 254, 47, 45,
- 238, 46, 254, 47, 238, 98, 254, 100, 251, 101, 251, 102, 251, 104, 251,
- 112, 249,
- 114, 251, 116, 255, 225, 254, 226, 254, 227, 254, 228, 254, 229, 254, 230,
- 254,
- 232, 251, 233, 251, 234, 251, 235, 251, 236, 251, 243, 249, 244, 249, 245,
- 249,
- 246, 249, 247, 249, 249, 249, 0, 3, 254, 0, 5, 254, 0, 7, 254, 0, 9, 251,
- 0, 15, 251,
- 0, 19, 251, 0, 21, 251, 0, 25, 251, 0, 27, 251, 0, 29, 251, 0, 33, 251, 0,
- 37, 251, 0,
- 79, 249, 0, 83, 249, 0, 93, 255, 0, 97, 255, 0, 99, 255, 1, 2, 25, 255,
- 24, 80, 250,
- 86, 250, 87, 254, 88, 254, 90, 254, 211, 250, 212, 250, 213, 250, 214,
- 250, 215,
- 250, 217, 250, 218, 250, 219, 250, 220, 250, 221, 250, 222, 254, 0, 78,
- 250, 0, 82,
- 250, 0, 108, 250, 0, 112, 250, 0, 114, 250, 0, 116, 250, 0, 122, 254, 47,
- 45, 238,
- 46, 254, 47, 238, 98, 254, 100, 251, 101, 251, 102, 251, 104, 251, 112,
- 249, 114,
- 251, 116, 255, 225, 254, 226, 254, 227, 254, 228, 254, 229, 254, 230, 254,
- 232,
- 251, 233, 251, 234, 251, 235, 251, 236, 251, 243, 249, 244, 249, 245, 249,
- 246,
- 249, 247, 249, 249, 249, 0, 3, 254, 0, 5, 254, 0, 7, 254, 0, 9, 251, 0,
- 15, 251, 0, 19,
- 251, 0, 21, 251, 0, 25, 251, 0, 27, 251, 0, 29, 251, 0, 33, 251, 0, 37,
- 251, 0, 79, 249,
- 0, 83, 249, 0, 93, 255, 0, 97, 255, 0, 99, 255, 1, 2, 25, 255, 73, 45,
- 245, 46, 245,
- 47, 245, 59, 248, 60, 246, 66, 249, 80, 254, 98, 242, 102, 242, 106, 248,
- 112, 242,
- 115, 248, 118, 248, 120, 245, 122, 245, 193, 249, 194, 249, 195, 249, 196,
- 249,
- 197, 249, 198, 249, 211, 254, 212, 254, 213, 254, 214, 254, 215, 254, 217,
- 254,
- 225, 242, 226, 242, 227, 242, 228, 242, 229, 242, 230, 242, 233, 248, 234,
- 242,
- 235, 248, 236, 248, 238, 248, 243, 242, 244, 242, 245, 242, 246, 242, 247,
- 242,
- 249, 242, 250, 248, 251, 248, 252, 248, 253, 248, 254, 245, 0, 1, 251, 0,
- 2, 249,
- 0, 3, 242, 0, 4, 249, 0, 5, 242, 0, 6, 249, 0, 7, 242, 0, 21, 248, 0, 25,
- 242, 0, 27, 242,
- 0, 29, 242, 0, 49, 248, 0, 78, 254, 0, 79, 242, 0, 82, 254, 0, 83, 242, 0,
- 87, 248, 0,
- 89, 248, 0, 91, 248, 0, 109, 248, 0, 113, 248, 0, 115, 248, 0, 117, 248,
- 73, 45, 245,
- 46, 245, 47, 245, 59, 248, 60, 246, 66, 249, 80, 254, 98, 242, 102, 242,
- 106, 248,
- 112, 242, 115, 248, 118, 248, 120, 245, 122, 245, 193, 249, 194, 249, 195,
- 249,
- 196, 249, 197, 249, 198, 249, 211, 254, 212, 254, 213, 254, 214, 254, 215,
- 254,
- 217, 254, 225, 242, 226, 242, 227, 242, 228, 242, 229, 242, 230, 242, 233,
- 248,
- 234, 242, 235, 248, 236, 248, 238, 248, 243, 242, 244, 242, 245, 242, 246,
- 242,
- 247, 242, 249, 242, 250, 248, 251, 248, 252, 248, 253, 248, 254, 245, 0,
- 1, 251,
- 0, 2, 249, 0, 3, 242, 0, 4, 249, 0, 5, 242, 0, 6, 249, 0, 7, 242, 0, 21,
- 248, 0, 25, 242,
- 0, 27, 242, 0, 29, 242, 0, 49, 248, 0, 78, 254, 0, 79, 242, 0, 82, 254, 0,
- 83, 242, 0,
- 87, 248, 0, 89, 248, 0, 91, 248, 0, 109, 248, 0, 113, 248, 0, 115, 248, 0,
- 117, 248,
- 13, 45, 253, 47, 253, 66, 250, 193, 250, 194, 250, 195, 250, 196, 250,
- 197, 250,
- 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250, 13, 45, 253, 47, 253, 66, 250,
- 193, 250,
- 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0,
- 6, 250,
- 13, 45, 253, 47, 253, 66, 250, 193, 250, 194, 250, 195, 250, 196, 250,
- 197, 250,
- 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250, 13, 45, 253, 47, 253, 66, 250,
- 193, 250,
- 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0,
- 6, 250,
- 69, 45, 242, 46, 245, 47, 242, 59, 246, 60, 246, 66, 249, 80, 254, 98,
- 242, 102, 242,
- 106, 245, 112, 242, 118, 242, 193, 249, 194, 249, 195, 249, 196, 249, 197,
- 249,
- 198, 249, 211, 254, 212, 254, 213, 254, 214, 254, 215, 254, 217, 254, 225,
- 242,
- 226, 242, 227, 242, 228, 242, 229, 242, 230, 242, 233, 248, 234, 242, 235,
- 242,
- 236, 248, 237, 251, 238, 245, 239, 251, 240, 251, 243, 242, 244, 242, 245,
- 242,
- 246, 242, 247, 242, 249, 242, 250, 242, 251, 242, 252, 242, 253, 242, 0,
- 2, 249,
- 0, 3, 242, 0, 4, 249, 0, 5, 242, 0, 6, 249, 0, 7, 242, 0, 21, 248, 0, 25,
- 242, 0, 27, 242,
- 0, 29, 242, 0, 45, 251, 0, 49, 245, 0, 78, 254, 0, 79, 242, 0, 82, 254, 0,
- 83, 242, 0,
- 109, 242, 0, 113, 242, 0, 115, 242, 0, 117, 242, 2, 1, 32, 24, 238, 17,
- 33, 238, 101,
- 253, 115, 253, 116, 250, 117, 252, 119, 255, 0, 19, 253, 0, 87, 253, 0,
- 89, 253, 0,
- 91, 253, 0, 93, 250, 0, 97, 250, 0, 99, 250, 0, 101, 252, 1, 2, 25, 250,
- 1, 32, 25, 238
-};
-static afm_cuint16 afm_Times_Italic_highchars_index[] = { /* 220 */
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176,
- 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257,
- 258, 259, 260, 261, 262, 263, 268, 269, 270, 271, 272, 273, 274, 275, 278,
- 279,
- 280, 281, 282, 283, 286, 287, 290, 291, 298, 299, 302, 303, 304, 305, 310,
- 311,
- 313, 314, 315, 316, 317, 318, 321, 322, 323, 324, 325, 326, 327, 328, 332,
- 333,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 350, 351, 352,
- 353,
- 354, 355, 356, 357, 362, 363, 366, 367, 368, 369, 370, 371, 376, 377, 378,
- 379,
- 380, 381, 382, 402, 536, 537, 710, 711, 728, 729, 730, 731, 732, 733,
- 8211, 8212,
- 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8249,
- 8250,
- 8260, 8364, 8482, 8706, 8710, 8721, 8722, 8730, 8800, 8804, 8805, 9674,
- 63171,
- 64257, 64258
-};
-static afm_cunicode afm_Times_Italic_ligatures[] = { /* 3 */
- 102, 105, 64257
-};
-
-
-/* ------------------------------------------------------------------*/
-/* FontName: Times-Roman */
-/* FullName: Times Roman */
-/* FamilyName: Times */
-static afm_cuint8 afm_Times_Roman_widths[] = { /* 315 */
- 42, 56, 68, 83, 83, 139, 130, 30, 56, 56, 83, 94, 42, 56, 42, 46, 83, 83,
- 83, 83, 83,
- 83, 83, 83, 83, 83, 46, 46, 94, 94, 94, 74, 154, 120, 111, 111, 120, 102,
- 93, 120,
- 120, 56, 65, 120, 102, 148, 120, 120, 93, 120, 111, 93, 102, 120, 120,
- 157, 120,
- 120, 102, 56, 46, 56, 78, 83, 56, 74, 83, 74, 83, 74, 56, 83, 83, 46, 46,
- 83, 46, 130,
- 83, 83, 83, 83, 56, 65, 46, 83, 83, 120, 83, 83, 74, 80, 33, 80, 90, 56,
- 83, 83, 83,
- 83, 33, 83, 56, 127, 46, 83, 94, 127, 56, 67, 94, 50, 50, 56, 83, 76, 42,
- 56, 50, 52,
- 83, 125, 125, 125, 74, 120, 120, 120, 120, 120, 120, 148, 111, 102, 102,
- 102, 102,
- 56, 56, 56, 56, 120, 120, 120, 120, 120, 120, 120, 94, 120, 120, 120, 120,
- 120, 120,
- 93, 83, 74, 74, 74, 74, 74, 74, 111, 74, 74, 74, 74, 74, 46, 46, 46, 46,
- 83, 83, 83,
- 83, 83, 83, 83, 94, 83, 83, 83, 83, 83, 83, 83, 83, 120, 74, 120, 74, 120,
- 74, 111,
- 74, 111, 74, 120, 98, 120, 83, 102, 74, 102, 74, 102, 74, 102, 74, 120,
- 83, 120, 83,
- 56, 46, 56, 46, 56, 46, 120, 83, 102, 46, 102, 46, 102, 57, 102, 46, 120,
- 83, 120,
- 83, 120, 83, 120, 83, 120, 83, 148, 120, 111, 56, 111, 56, 111, 56, 93,
- 65, 93, 65,
- 93, 65, 102, 46, 102, 54, 120, 83, 120, 83, 120, 83, 120, 83, 120, 102,
- 74, 102, 74,
- 102, 74, 83, 93, 65, 56, 56, 56, 56, 56, 56, 56, 56, 83, 167, 56, 56, 56,
- 74, 74, 74,
- 83, 83, 58, 167, 167, 56, 56, 28, 83, 163, 79, 102, 100, 94, 76, 92, 92,
- 92, 79, 42,
- 93, 93
-};
-static afm_sint16 afm_Times_Roman_kerning_index[] = { /* 315 */
- 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 62, 159, 0, 205, 0, 240, 0, 0, 0, 311, 335, 427, 0, 458, 482, 527,
- 578, 601, 0,
- 663, 831, 855, 1020, 0, 1175, 0, 0, 0, 0, 0, 0, 0, 1323, 1328, 1355, 0,
- 1363, 1385,
- 0, 0, 1422, 0, 1425, 1475, 0, 1478, 1488, 1500, 0, 1508, 0, 0, 0, 1523,
- 1593, 1641,
- 1664, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1669, 1766, 1863, 1960, 2057, 2154, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2251,
- 2275, 2320, 2365, 2410, 2455, 0, 2500, 2545, 2569, 2593, 2617, 2641, 0, 0,
- 2789,
- 2794, 2799, 2804, 2809, 2814, 0, 2819, 2827, 2849, 2871, 2893, 2915, 2918,
- 2921,
- 2924, 0, 2927, 2937, 2949, 2961, 2973, 2985, 0, 2997, 0, 0, 0, 0, 3009, 0,
- 3014,
- 3019, 3116, 3121, 3218, 3223, 3320, 0, 3325, 0, 3333, 3341, 0, 3376, 0, 0,
- 3411,
- 0, 3433, 0, 3455, 0, 3477, 0, 0, 0, 0, 0, 3499, 0, 3502, 0, 0, 3505, 3597,
- 3647, 3678,
- 3681, 3712, 3715, 0, 3727, 3758, 3761, 3785, 3795, 3819, 3829, 3853, 3863,
- 3908,
- 3920, 3965, 0, 0, 3977, 4039, 4054, 4116, 4131, 4193, 0, 0, 0, 0, 0, 0,
- 4208, 0, 4376,
- 0, 4544, 0, 4568, 0, 4592, 0, 4616, 0, 4640, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 4788, 4816, 0, 4872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0
-};
-static afm_cuint8 afm_Times_Roman_kerning_data[] = { /* 4896 */
- 42, 19, 66, 248, 85, 254, 87, 249, 88, 252, 90, 242, 193, 248, 194, 248,
- 195, 248,
- 196, 248, 197, 248, 198, 248, 222, 242, 0, 2, 248, 0, 4, 248, 0, 6, 248,
- 0, 100, 254,
- 0, 102, 254, 0, 122, 242, 3, 1, 32, 25, 245, 1, 32, 29, 245, 3, 1, 32, 25,
- 245, 1, 32,
- 29, 245, 41, 68, 250, 72, 250, 80, 248, 82, 248, 85, 238, 86, 248, 87,
- 234, 88, 242,
- 90, 239, 119, 245, 120, 242, 122, 242, 200, 250, 211, 248, 212, 248, 213,
- 248, 214,
- 248, 215, 248, 217, 248, 218, 248, 219, 248, 220, 248, 221, 248, 222, 239,
- 254,
- 242, 0, 1, 242, 0, 8, 250, 0, 14, 250, 0, 32, 250, 0, 36, 250, 0, 78, 248,
- 0, 82, 248,
- 0, 100, 238, 0, 102, 238, 0, 108, 248, 0, 112, 248, 0, 114, 248, 0, 116,
- 248, 0, 122,
- 239, 1, 32, 25, 238, 20, 66, 251, 86, 255, 193, 251, 194, 251, 195, 251,
- 196, 251,
- 197, 251, 198, 251, 218, 255, 219, 255, 220, 255, 221, 255, 0, 2, 251, 0,
- 4, 251,
- 0, 6, 251, 0, 108, 255, 0, 112, 255, 0, 114, 255, 0, 116, 255, 16, 66,
- 250, 87, 250,
- 88, 252, 90, 248, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198,
- 250, 222,
- 248, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0, 122, 248, 32, 45, 244, 47, 244,
- 66, 245, 98,
- 254, 112, 254, 193, 245, 194, 245, 195, 245, 196, 245, 197, 245, 198, 245,
- 225,
- 254, 226, 254, 227, 254, 228, 254, 229, 254, 230, 254, 243, 254, 244, 254,
- 245,
- 254, 246, 254, 247, 254, 249, 254, 0, 2, 245, 0, 3, 254, 0, 4, 245, 0, 5,
- 254, 0, 6,
- 245, 0, 7, 254, 0, 79, 254, 0, 83, 254, 11, 66, 247, 193, 247, 194, 247,
- 195, 247,
- 196, 247, 197, 247, 198, 247, 0, 2, 247, 0, 4, 247, 0, 6, 247, 40, 80,
- 252, 102, 253,
- 112, 251, 118, 254, 122, 253, 211, 252, 212, 252, 213, 252, 214, 252, 215,
- 252,
- 217, 252, 233, 253, 234, 253, 235, 253, 236, 253, 243, 251, 244, 251, 245,
- 251,
- 246, 251, 247, 251, 249, 251, 250, 254, 251, 254, 252, 254, 253, 254, 254,
- 253,
- 0, 1, 253, 0, 21, 253, 0, 25, 253, 0, 27, 253, 0, 29, 253, 0, 78, 252, 0,
- 79, 251, 0,
- 82, 252, 0, 83, 251, 0, 109, 254, 0, 113, 254, 0, 115, 254, 0, 117, 254,
- 13, 85, 242,
- 87, 240, 88, 245, 90, 240, 122, 248, 222, 240, 254, 248, 0, 1, 248, 0,
- 100, 242, 0,
- 102, 242, 0, 122, 240, 1, 32, 25, 242, 11, 66, 251, 193, 251, 194, 251,
- 195, 251,
- 196, 251, 197, 251, 198, 251, 0, 2, 251, 0, 4, 251, 0, 6, 251, 20, 66,
- 251, 85, 250,
- 87, 249, 88, 251, 89, 250, 90, 249, 193, 251, 194, 251, 195, 251, 196,
- 251, 197,
- 251, 198, 251, 222, 249, 0, 2, 251, 0, 4, 251, 0, 6, 251, 0, 100, 250, 0,
- 102, 250,
- 0, 122, 249, 23, 45, 238, 47, 238, 66, 242, 98, 254, 193, 242, 194, 242,
- 195, 242,
- 196, 242, 197, 242, 198, 242, 225, 254, 226, 254, 227, 254, 228, 254, 229,
- 254,
- 230, 254, 0, 2, 242, 0, 3, 254, 0, 4, 242, 0, 5, 254, 0, 6, 242, 0, 7,
- 254, 10, 86, 255,
- 218, 255, 219, 255, 220, 255, 221, 255, 0, 108, 255, 0, 112, 255, 0, 114,
- 255, 0,
- 116, 255, 27, 80, 250, 85, 247, 86, 250, 87, 244, 88, 248, 90, 246, 211,
- 250, 212,
- 250, 213, 250, 214, 250, 215, 250, 217, 250, 218, 250, 219, 250, 220, 250,
- 221,
- 250, 222, 246, 0, 78, 250, 0, 82, 250, 0, 100, 247, 0, 102, 247, 0, 108,
- 250, 0, 112,
- 250, 0, 114, 250, 0, 116, 250, 0, 122, 246, 73, 45, 245, 46, 242, 47, 245,
- 59, 249,
- 60, 248, 66, 241, 80, 254, 98, 244, 102, 245, 106, 251, 112, 244, 115,
- 251, 118,
- 249, 120, 244, 122, 244, 193, 241, 194, 241, 195, 241, 196, 241, 197, 241,
- 198,
- 241, 211, 254, 212, 254, 213, 254, 214, 254, 215, 254, 217, 254, 225, 250,
- 226,
- 244, 227, 244, 228, 250, 229, 250, 230, 244, 233, 245, 234, 245, 235, 245,
- 236,
- 252, 238, 251, 243, 244, 244, 244, 245, 244, 246, 244, 247, 244, 249, 244,
- 250,
- 249, 251, 249, 252, 249, 253, 249, 254, 244, 0, 1, 244, 0, 2, 241, 0, 3,
- 250, 0, 4,
- 241, 0, 5, 244, 0, 6, 241, 0, 7, 244, 0, 21, 252, 0, 25, 245, 0, 27, 245,
- 0, 29, 245,
- 0, 49, 251, 0, 78, 254, 0, 79, 244, 0, 82, 254, 0, 83, 244, 0, 87, 251, 0,
- 89, 251, 0,
- 91, 251, 0, 109, 249, 0, 113, 249, 0, 115, 249, 0, 117, 249, 11, 66, 250,
- 193, 250,
- 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0,
- 6, 250,
- 72, 45, 235, 46, 240, 47, 235, 59, 245, 60, 245, 66, 234, 72, 254, 80,
- 250, 98, 238,
- 102, 238, 106, 247, 112, 235, 118, 244, 193, 234, 194, 234, 195, 234, 196,
- 234,
- 197, 234, 198, 234, 211, 250, 212, 250, 213, 250, 214, 250, 215, 250, 217,
- 250,
- 225, 245, 226, 238, 227, 245, 228, 245, 229, 245, 230, 238, 233, 245, 234,
- 238,
- 235, 245, 236, 245, 237, 254, 238, 247, 239, 254, 240, 254, 243, 242, 244,
- 235,
- 245, 235, 246, 242, 247, 242, 249, 235, 250, 244, 251, 244, 252, 244, 253,
- 244,
- 0, 2, 234, 0, 3, 245, 0, 4, 234, 0, 5, 238, 0, 6, 234, 0, 7, 238, 0, 21,
- 245, 0, 25, 238,
- 0, 27, 238, 0, 29, 245, 0, 32, 254, 0, 36, 254, 0, 45, 254, 0, 49, 247, 0,
- 78, 250, 0,
- 79, 242, 0, 82, 250, 0, 83, 235, 0, 109, 244, 0, 113, 244, 0, 115, 244, 0,
- 117, 244,
- 68, 45, 242, 46, 246, 47, 242, 59, 251, 60, 251, 66, 237, 80, 255, 98,
- 244, 102, 244,
- 106, 250, 112, 244, 118, 249, 122, 245, 193, 237, 194, 237, 195, 237, 196,
- 237,
- 197, 237, 198, 237, 211, 255, 212, 255, 213, 255, 214, 255, 215, 255, 217,
- 255,
- 225, 244, 226, 244, 227, 244, 228, 244, 229, 244, 230, 244, 233, 250, 234,
- 244,
- 235, 244, 236, 250, 238, 250, 243, 244, 244, 244, 245, 244, 246, 244, 247,
- 244,
- 249, 244, 250, 249, 251, 249, 252, 249, 253, 249, 254, 245, 0, 1, 245, 0,
- 2, 237,
- 0, 3, 244, 0, 4, 237, 0, 5, 244, 0, 6, 237, 0, 7, 244, 0, 21, 250, 0, 25,
- 244, 0, 27, 244,
- 0, 29, 244, 0, 49, 250, 0, 78, 255, 0, 79, 244, 0, 82, 255, 0, 83, 244, 0,
- 109, 249,
- 0, 113, 249, 0, 115, 249, 0, 117, 249, 65, 45, 235, 46, 238, 47, 235, 59,
- 242, 60,
- 242, 66, 237, 80, 252, 98, 240, 102, 240, 106, 248, 112, 239, 118, 238,
- 193, 237,
- 194, 237, 195, 237, 196, 237, 197, 237, 198, 237, 211, 252, 212, 252, 213,
- 252,
- 214, 252, 215, 252, 217, 252, 225, 247, 226, 240, 227, 240, 228, 247, 229,
- 247,
- 230, 240, 233, 247, 234, 240, 235, 240, 236, 247, 238, 248, 243, 245, 244,
- 239,
- 245, 239, 246, 245, 247, 245, 249, 239, 250, 245, 251, 238, 252, 238, 253,
- 245,
- 0, 2, 237, 0, 3, 247, 0, 4, 237, 0, 5, 240, 0, 6, 237, 0, 7, 240, 0, 21,
- 247, 0, 25, 240,
- 0, 27, 240, 0, 29, 240, 0, 49, 248, 0, 78, 252, 0, 79, 245, 0, 82, 252, 0,
- 83, 239, 0,
- 109, 245, 0, 113, 238, 0, 115, 238, 0, 117, 238, 3, 119, 254, 120, 254,
- 12, 47, 250,
- 118, 254, 119, 254, 250, 254, 251, 254, 252, 254, 253, 254, 0, 109, 254,
- 0, 113,
- 254, 0, 115, 254, 0, 117, 254, 4, 122, 254, 254, 254, 0, 1, 254, 10, 104,
- 254, 119,
- 253, 120, 253, 121, 254, 122, 254, 254, 254, 0, 1, 254, 0, 33, 254, 0, 37,
- 254, 16,
- 98, 255, 103, 253, 106, 254, 225, 255, 226, 255, 227, 255, 228, 255, 229,
- 255, 230,
- 255, 238, 254, 0, 3, 255, 0, 5, 255, 0, 7, 255, 0, 51, 249, 1, 32, 25, 9,
- 2, 119, 253,
- 22, 102, 255, 112, 255, 122, 254, 233, 255, 234, 255, 235, 255, 236, 255,
- 243, 255,
- 244, 255, 245, 255, 246, 255, 247, 255, 249, 255, 254, 254, 0, 1, 254, 0,
- 21, 255,
- 0, 25, 255, 0, 27, 255, 0, 29, 255, 0, 79, 255, 0, 83, 255, 2, 120, 255,
- 5, 119, 250,
- 122, 254, 254, 254, 0, 1, 254, 6, 119, 254, 120, 253, 122, 255, 254, 255,
- 0, 1, 255,
- 4, 122, 255, 254, 255, 0, 1, 255, 7, 45, 250, 46, 254, 47, 248, 104, 254,
- 0, 33, 254,
- 0, 37, 254, 31, 45, 246, 47, 246, 98, 253, 102, 254, 112, 254, 225, 253,
- 226, 253,
- 227, 253, 228, 253, 229, 253, 230, 253, 233, 254, 234, 254, 235, 254, 236,
- 254,
- 243, 254, 244, 254, 245, 254, 246, 254, 247, 254, 249, 254, 0, 3, 253, 0,
- 5, 253,
- 0, 7, 253, 0, 21, 254, 0, 25, 254, 0, 27, 254, 0, 29, 254, 0, 79, 254, 0,
- 83, 254, 22,
- 45, 246, 47, 246, 98, 255, 112, 255, 225, 255, 226, 255, 227, 255, 228,
- 255, 229,
- 255, 230, 255, 243, 255, 244, 255, 245, 255, 246, 255, 247, 255, 249, 255,
- 0, 3,
- 255, 0, 5, 255, 0, 7, 255, 0, 79, 255, 0, 83, 255, 10, 102, 254, 233, 254,
- 234, 254,
- 235, 254, 236, 254, 0, 21, 254, 0, 25, 254, 0, 27, 254, 0, 29, 254, 3, 45,
- 246, 47,
- 246, 41, 68, 250, 72, 250, 80, 248, 82, 248, 85, 238, 86, 248, 87, 234,
- 88, 242, 90,
- 239, 119, 245, 120, 242, 122, 242, 200, 250, 211, 248, 212, 248, 213, 248,
- 214,
- 248, 215, 248, 217, 248, 218, 248, 219, 248, 220, 248, 221, 248, 222, 239,
- 254,
- 242, 0, 1, 242, 0, 8, 250, 0, 14, 250, 0, 32, 250, 0, 36, 250, 0, 78, 248,
- 0, 82, 248,
- 0, 100, 238, 0, 102, 238, 0, 108, 248, 0, 112, 248, 0, 114, 248, 0, 116,
- 248, 0, 122,
- 239, 1, 32, 25, 238, 41, 68, 250, 72, 250, 80, 248, 82, 248, 85, 238, 86,
- 248, 87,
- 234, 88, 242, 90, 239, 119, 245, 120, 242, 122, 242, 200, 250, 211, 248,
- 212, 248,
- 213, 248, 214, 248, 215, 248, 217, 248, 218, 248, 219, 248, 220, 248, 221,
- 248,
- 222, 239, 254, 242, 0, 1, 242, 0, 8, 250, 0, 14, 250, 0, 32, 250, 0, 36,
- 250, 0, 78,
- 248, 0, 82, 248, 0, 100, 238, 0, 102, 238, 0, 108, 248, 0, 112, 248, 0,
- 114, 248, 0,
- 116, 248, 0, 122, 239, 1, 32, 25, 238, 41, 68, 250, 72, 250, 80, 248, 82,
- 248, 85,
- 238, 86, 248, 87, 234, 88, 242, 90, 239, 119, 245, 120, 242, 122, 242,
- 200, 250,
- 211, 248, 212, 248, 213, 248, 214, 248, 215, 248, 217, 248, 218, 248, 219,
- 248,
- 220, 248, 221, 248, 222, 239, 254, 242, 0, 1, 242, 0, 8, 250, 0, 14, 250,
- 0, 32, 250,
- 0, 36, 250, 0, 78, 248, 0, 82, 248, 0, 100, 238, 0, 102, 238, 0, 108, 248,
- 0, 112, 248,
- 0, 114, 248, 0, 116, 248, 0, 122, 239, 1, 32, 25, 238, 41, 68, 250, 72,
- 250, 80, 248,
- 82, 248, 85, 238, 86, 248, 87, 234, 88, 242, 90, 239, 119, 245, 120, 242,
- 122, 242,
- 200, 250, 211, 248, 212, 248, 213, 248, 214, 248, 215, 248, 217, 248, 218,
- 248,
- 219, 248, 220, 248, 221, 248, 222, 239, 254, 242, 0, 1, 242, 0, 8, 250, 0,
- 14, 250,
- 0, 32, 250, 0, 36, 250, 0, 78, 248, 0, 82, 248, 0, 100, 238, 0, 102, 238,
- 0, 108, 248,
- 0, 112, 248, 0, 114, 248, 0, 116, 248, 0, 122, 239, 1, 32, 25, 238, 41,
- 68, 250, 72,
- 250, 80, 248, 82, 248, 85, 238, 86, 248, 87, 234, 88, 242, 90, 239, 119,
- 245, 120,
- 242, 122, 242, 200, 250, 211, 248, 212, 248, 213, 248, 214, 248, 215, 248,
- 217,
- 248, 218, 248, 219, 248, 220, 248, 221, 248, 222, 239, 254, 242, 0, 1,
- 242, 0, 8,
- 250, 0, 14, 250, 0, 32, 250, 0, 36, 250, 0, 78, 248, 0, 82, 248, 0, 100,
- 238, 0, 102,
- 238, 0, 108, 248, 0, 112, 248, 0, 114, 248, 0, 116, 248, 0, 122, 239, 1,
- 32, 25, 238,
- 41, 68, 250, 72, 250, 80, 248, 82, 248, 85, 238, 86, 248, 87, 234, 88,
- 242, 90, 239,
- 119, 245, 120, 242, 122, 242, 200, 250, 211, 248, 212, 248, 213, 248, 214,
- 248,
- 215, 248, 217, 248, 218, 248, 219, 248, 220, 248, 221, 248, 222, 239, 254,
- 242,
- 0, 1, 242, 0, 8, 250, 0, 14, 250, 0, 32, 250, 0, 36, 250, 0, 78, 248, 0,
- 82, 248, 0, 100,
- 238, 0, 102, 238, 0, 108, 248, 0, 112, 248, 0, 114, 248, 0, 116, 248, 0,
- 122, 239,
- 1, 32, 25, 238, 11, 66, 251, 193, 251, 194, 251, 195, 251, 196, 251, 197,
- 251, 198,
- 251, 0, 2, 251, 0, 4, 251, 0, 6, 251, 20, 66, 251, 85, 250, 87, 249, 88,
- 251, 89, 250,
- 90, 249, 193, 251, 194, 251, 195, 251, 196, 251, 197, 251, 198, 251, 222,
- 249, 0,
- 2, 251, 0, 4, 251, 0, 6, 251, 0, 100, 250, 0, 102, 250, 0, 122, 249, 20,
- 66, 251, 85,
- 250, 87, 249, 88, 251, 89, 250, 90, 249, 193, 251, 194, 251, 195, 251,
- 196, 251,
- 197, 251, 198, 251, 222, 249, 0, 2, 251, 0, 4, 251, 0, 6, 251, 0, 100,
- 250, 0, 102,
- 250, 0, 122, 249, 20, 66, 251, 85, 250, 87, 249, 88, 251, 89, 250, 90,
- 249, 193, 251,
- 194, 251, 195, 251, 196, 251, 197, 251, 198, 251, 222, 249, 0, 2, 251, 0,
- 4, 251,
- 0, 6, 251, 0, 100, 250, 0, 102, 250, 0, 122, 249, 20, 66, 251, 85, 250,
- 87, 249, 88,
- 251, 89, 250, 90, 249, 193, 251, 194, 251, 195, 251, 196, 251, 197, 251,
- 198, 251,
- 222, 249, 0, 2, 251, 0, 4, 251, 0, 6, 251, 0, 100, 250, 0, 102, 250, 0,
- 122, 249, 20,
- 66, 251, 85, 250, 87, 249, 88, 251, 89, 250, 90, 249, 193, 251, 194, 251,
- 195, 251,
- 196, 251, 197, 251, 198, 251, 222, 249, 0, 2, 251, 0, 4, 251, 0, 6, 251,
- 0, 100, 250,
- 0, 102, 250, 0, 122, 249, 20, 66, 251, 85, 250, 87, 249, 88, 251, 89, 250,
- 90, 249,
- 193, 251, 194, 251, 195, 251, 196, 251, 197, 251, 198, 251, 222, 249, 0,
- 2, 251,
- 0, 4, 251, 0, 6, 251, 0, 100, 250, 0, 102, 250, 0, 122, 249, 11, 66, 250,
- 193, 250,
- 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0,
- 6, 250,
- 11, 66, 250, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250,
- 0, 2, 250,
- 0, 4, 250, 0, 6, 250, 11, 66, 250, 193, 250, 194, 250, 195, 250, 196, 250,
- 197, 250,
- 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250, 11, 66, 250, 193, 250, 194,
- 250, 195, 250,
- 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250, 65, 45,
- 235, 46, 238,
- 47, 235, 59, 242, 60, 242, 66, 237, 80, 252, 98, 240, 102, 240, 106, 248,
- 112, 239,
- 118, 238, 193, 237, 194, 237, 195, 237, 196, 237, 197, 237, 198, 237, 211,
- 252,
- 212, 252, 213, 252, 214, 252, 215, 252, 217, 252, 225, 247, 226, 240, 227,
- 240,
- 228, 247, 229, 247, 230, 240, 233, 247, 234, 240, 235, 240, 236, 247, 238,
- 248,
- 243, 245, 244, 239, 245, 239, 246, 245, 247, 245, 249, 239, 250, 245, 251,
- 238,
- 252, 238, 253, 245, 0, 2, 237, 0, 3, 247, 0, 4, 237, 0, 5, 240, 0, 6, 237,
- 0, 7, 240,
- 0, 21, 247, 0, 25, 240, 0, 27, 240, 0, 29, 240, 0, 49, 248, 0, 78, 252, 0,
- 79, 245, 0,
- 82, 252, 0, 83, 239, 0, 109, 245, 0, 113, 238, 0, 115, 238, 0, 117, 238,
- 3, 119, 254,
- 120, 254, 3, 119, 254, 120, 254, 3, 119, 254, 120, 254, 3, 119, 254, 120,
- 254, 3,
- 119, 254, 120, 254, 3, 119, 254, 120, 254, 4, 122, 254, 254, 254, 0, 1,
- 254, 10, 104,
- 254, 119, 253, 120, 253, 121, 254, 122, 254, 254, 254, 0, 1, 254, 0, 33,
- 254, 0, 37,
- 254, 10, 104, 254, 119, 253, 120, 253, 121, 254, 122, 254, 254, 254, 0, 1,
- 254, 0,
- 33, 254, 0, 37, 254, 10, 104, 254, 119, 253, 120, 253, 121, 254, 122, 254,
- 254, 254,
- 0, 1, 254, 0, 33, 254, 0, 37, 254, 10, 104, 254, 119, 253, 120, 253, 121,
- 254, 122,
- 254, 254, 254, 0, 1, 254, 0, 33, 254, 0, 37, 254, 2, 119, 253, 2, 119,
- 253, 2, 119,
- 253, 2, 119, 253, 5, 119, 250, 122, 254, 254, 254, 0, 1, 254, 6, 119, 254,
- 120, 253,
- 122, 255, 254, 255, 0, 1, 255, 6, 119, 254, 120, 253, 122, 255, 254, 255,
- 0, 1, 255,
- 6, 119, 254, 120, 253, 122, 255, 254, 255, 0, 1, 255, 6, 119, 254, 120,
- 253, 122,
- 255, 254, 255, 0, 1, 255, 6, 119, 254, 120, 253, 122, 255, 254, 255, 0, 1,
- 255, 6,
- 119, 254, 120, 253, 122, 255, 254, 255, 0, 1, 255, 3, 45, 246, 47, 246, 3,
- 45, 246,
- 47, 246, 41, 68, 250, 72, 250, 80, 248, 82, 248, 85, 238, 86, 248, 87,
- 234, 88, 242,
- 90, 239, 119, 245, 120, 242, 122, 242, 200, 250, 211, 248, 212, 248, 213,
- 248, 214,
- 248, 215, 248, 217, 248, 218, 248, 219, 248, 220, 248, 221, 248, 222, 239,
- 254,
- 242, 0, 1, 242, 0, 8, 250, 0, 14, 250, 0, 32, 250, 0, 36, 250, 0, 78, 248,
- 0, 82, 248,
- 0, 100, 238, 0, 102, 238, 0, 108, 248, 0, 112, 248, 0, 114, 248, 0, 116,
- 248, 0, 122,
- 239, 1, 32, 25, 238, 3, 119, 254, 120, 254, 41, 68, 250, 72, 250, 80, 248,
- 82, 248,
- 85, 238, 86, 248, 87, 234, 88, 242, 90, 239, 119, 245, 120, 242, 122, 242,
- 200, 250,
- 211, 248, 212, 248, 213, 248, 214, 248, 215, 248, 217, 248, 218, 248, 219,
- 248,
- 220, 248, 221, 248, 222, 239, 254, 242, 0, 1, 242, 0, 8, 250, 0, 14, 250,
- 0, 32, 250,
- 0, 36, 250, 0, 78, 248, 0, 82, 248, 0, 100, 238, 0, 102, 238, 0, 108, 248,
- 0, 112, 248,
- 0, 114, 248, 0, 116, 248, 0, 122, 239, 1, 32, 25, 238, 3, 119, 254, 120,
- 254, 41, 68,
- 250, 72, 250, 80, 248, 82, 248, 85, 238, 86, 248, 87, 234, 88, 242, 90,
- 239, 119,
- 245, 120, 248, 122, 248, 200, 250, 211, 248, 212, 248, 213, 248, 214, 248,
- 215,
- 248, 217, 248, 218, 248, 219, 248, 220, 248, 221, 248, 222, 239, 254, 248,
- 0, 1,
- 248, 0, 8, 250, 0, 14, 250, 0, 32, 250, 0, 36, 250, 0, 78, 248, 0, 82,
- 248, 0, 100, 238,
- 0, 102, 238, 0, 108, 248, 0, 112, 248, 0, 114, 248, 0, 116, 248, 0, 122,
- 239, 1, 32,
- 25, 238, 3, 119, 254, 120, 254, 4, 122, 254, 254, 254, 0, 1, 254, 4, 122,
- 254, 254,
- 254, 0, 1, 254, 16, 66, 250, 87, 250, 88, 252, 90, 248, 193, 250, 194,
- 250, 195, 250,
- 196, 250, 197, 250, 198, 250, 222, 248, 0, 2, 250, 0, 4, 250, 0, 6, 250,
- 0, 122, 248,
- 16, 66, 250, 87, 250, 88, 252, 90, 248, 193, 250, 194, 250, 195, 250, 196,
- 250, 197,
- 250, 198, 250, 222, 248, 0, 2, 250, 0, 4, 250, 0, 6, 250, 0, 122, 248, 10,
- 104, 254,
- 119, 253, 120, 253, 121, 254, 122, 254, 254, 254, 0, 1, 254, 0, 33, 254,
- 0, 37, 254,
- 10, 104, 254, 119, 253, 120, 253, 121, 254, 122, 254, 254, 254, 0, 1, 254,
- 0, 33,
- 254, 0, 37, 254, 10, 104, 254, 119, 253, 120, 253, 121, 254, 122, 254,
- 254, 254,
- 0, 1, 254, 0, 33, 254, 0, 37, 254, 10, 104, 254, 119, 253, 120, 253, 121,
- 254, 122,
- 254, 254, 254, 0, 1, 254, 0, 33, 254, 0, 37, 254, 2, 119, 253, 2, 119,
- 253, 40, 80,
- 252, 102, 253, 112, 251, 118, 254, 122, 253, 211, 252, 212, 252, 213, 252,
- 214,
- 252, 215, 252, 217, 252, 233, 253, 234, 253, 235, 253, 236, 253, 243, 251,
- 244,
- 251, 245, 251, 246, 251, 247, 251, 249, 251, 250, 254, 251, 254, 252, 254,
- 253,
- 254, 254, 253, 0, 1, 253, 0, 21, 253, 0, 25, 253, 0, 27, 253, 0, 29, 253,
- 0, 78, 252,
- 0, 79, 251, 0, 82, 252, 0, 83, 251, 0, 109, 254, 0, 113, 254, 0, 115, 254,
- 0, 117, 254,
- 22, 102, 255, 112, 255, 122, 254, 233, 255, 234, 255, 235, 255, 236, 255,
- 243, 255,
- 244, 255, 245, 255, 246, 255, 247, 255, 249, 255, 254, 254, 0, 1, 254, 0,
- 21, 255,
- 0, 25, 255, 0, 27, 255, 0, 29, 255, 0, 79, 255, 0, 83, 255, 13, 85, 242,
- 87, 240, 88,
- 245, 90, 240, 122, 248, 222, 240, 254, 248, 0, 1, 248, 0, 100, 242, 0,
- 102, 242, 0,
- 122, 240, 1, 32, 25, 242, 2, 120, 255, 13, 85, 242, 87, 240, 88, 245, 90,
- 240, 122,
- 248, 222, 240, 254, 248, 0, 1, 248, 0, 100, 242, 0, 102, 242, 0, 122, 240,
- 1, 32, 25,
- 242, 2, 120, 255, 5, 122, 248, 254, 248, 0, 1, 248, 1, 32, 25, 242, 13,
- 85, 242, 87,
- 240, 88, 245, 90, 240, 122, 248, 222, 240, 254, 248, 0, 1, 248, 0, 100,
- 242, 0, 102,
- 242, 0, 122, 240, 1, 32, 25, 242, 2, 120, 255, 11, 66, 251, 193, 251, 194,
- 251, 195,
- 251, 196, 251, 197, 251, 198, 251, 0, 2, 251, 0, 4, 251, 0, 6, 251, 5,
- 119, 250, 122,
- 254, 254, 254, 0, 1, 254, 11, 66, 251, 193, 251, 194, 251, 195, 251, 196,
- 251, 197,
- 251, 198, 251, 0, 2, 251, 0, 4, 251, 0, 6, 251, 5, 119, 250, 122, 254,
- 254, 254, 0,
- 1, 254, 11, 66, 251, 193, 251, 194, 251, 195, 251, 196, 251, 197, 251,
- 198, 251,
- 0, 2, 251, 0, 4, 251, 0, 6, 251, 5, 119, 250, 122, 254, 254, 254, 0, 1,
- 254, 20, 66,
- 251, 85, 250, 87, 249, 88, 251, 89, 250, 90, 249, 193, 251, 194, 251, 195,
- 251, 196,
- 251, 197, 251, 198, 251, 222, 249, 0, 2, 251, 0, 4, 251, 0, 6, 251, 0,
- 100, 250, 0,
- 102, 250, 0, 122, 249, 6, 119, 254, 120, 253, 122, 255, 254, 255, 0, 1,
- 255, 20, 66,
- 251, 85, 250, 87, 249, 88, 251, 89, 250, 90, 249, 193, 251, 194, 251, 195,
- 251, 196,
- 251, 197, 251, 198, 251, 222, 249, 0, 2, 251, 0, 4, 251, 0, 6, 251, 0,
- 100, 250, 0,
- 102, 250, 0, 122, 249, 6, 119, 254, 120, 253, 122, 255, 254, 255, 0, 1,
- 255, 27, 80,
- 250, 85, 247, 86, 250, 87, 244, 88, 248, 90, 246, 211, 250, 212, 250, 213,
- 250, 214,
- 250, 215, 250, 217, 250, 218, 250, 219, 250, 220, 250, 221, 250, 222, 246,
- 0, 78,
- 250, 0, 82, 250, 0, 100, 247, 0, 102, 247, 0, 108, 250, 0, 112, 250, 0,
- 114, 250, 0,
- 116, 250, 0, 122, 246, 7, 45, 250, 46, 254, 47, 248, 104, 254, 0, 33, 254,
- 0, 37, 254,
- 27, 80, 250, 85, 247, 86, 250, 87, 244, 88, 248, 90, 246, 211, 250, 212,
- 250, 213,
- 250, 214, 250, 215, 250, 217, 250, 218, 250, 219, 250, 220, 250, 221, 250,
- 222,
- 246, 0, 78, 250, 0, 82, 250, 0, 100, 247, 0, 102, 247, 0, 108, 250, 0,
- 112, 250, 0,
- 114, 250, 0, 116, 250, 0, 122, 246, 7, 45, 250, 46, 254, 47, 248, 104,
- 254, 0, 33,
- 254, 0, 37, 254, 27, 80, 250, 85, 247, 86, 250, 87, 244, 88, 248, 90, 246,
- 211, 250,
- 212, 250, 213, 250, 214, 250, 215, 250, 217, 250, 218, 250, 219, 250, 220,
- 250,
- 221, 250, 222, 246, 0, 78, 250, 0, 82, 250, 0, 100, 247, 0, 102, 247, 0,
- 108, 250,
- 0, 112, 250, 0, 114, 250, 0, 116, 250, 0, 122, 246, 7, 45, 250, 46, 254,
- 47, 248, 104,
- 254, 0, 33, 254, 0, 37, 254, 73, 45, 245, 46, 242, 47, 245, 59, 249, 60,
- 248, 66, 241,
- 80, 254, 98, 244, 102, 245, 106, 251, 112, 244, 115, 251, 118, 249, 120,
- 244, 122,
- 244, 193, 241, 194, 241, 195, 241, 196, 241, 197, 241, 198, 241, 211, 254,
- 212,
- 254, 213, 254, 214, 254, 215, 254, 217, 254, 225, 250, 226, 244, 227, 244,
- 228,
- 250, 229, 250, 230, 244, 233, 252, 234, 245, 235, 252, 236, 252, 238, 251,
- 243,
- 244, 244, 244, 245, 244, 246, 244, 247, 244, 249, 244, 250, 249, 251, 249,
- 252,
- 249, 253, 249, 254, 244, 0, 1, 244, 0, 2, 241, 0, 3, 250, 0, 4, 241, 0, 5,
- 244, 0, 6,
- 241, 0, 7, 244, 0, 21, 245, 0, 25, 245, 0, 27, 245, 0, 29, 245, 0, 49,
- 251, 0, 78, 254,
- 0, 79, 244, 0, 82, 254, 0, 83, 244, 0, 87, 251, 0, 89, 251, 0, 91, 251, 0,
- 109, 249,
- 0, 113, 249, 0, 115, 249, 0, 117, 249, 73, 45, 245, 46, 242, 47, 245, 59,
- 249, 60,
- 248, 66, 241, 80, 254, 98, 244, 102, 245, 106, 251, 112, 244, 115, 251,
- 118, 249,
- 120, 244, 122, 244, 193, 241, 194, 241, 195, 241, 196, 241, 197, 241, 198,
- 241,
- 211, 254, 212, 254, 213, 254, 214, 254, 215, 254, 217, 254, 225, 250, 226,
- 244,
- 227, 244, 228, 250, 229, 250, 230, 244, 233, 245, 234, 245, 235, 252, 236,
- 252,
- 238, 251, 243, 244, 244, 244, 245, 244, 246, 244, 247, 244, 249, 244, 250,
- 249,
- 251, 249, 252, 249, 253, 249, 254, 244, 0, 1, 244, 0, 2, 241, 0, 3, 250,
- 0, 4, 241,
- 0, 5, 244, 0, 6, 241, 0, 7, 244, 0, 21, 252, 0, 25, 245, 0, 27, 245, 0,
- 29, 245, 0, 49,
- 251, 0, 78, 254, 0, 79, 244, 0, 82, 254, 0, 83, 244, 0, 87, 251, 0, 89,
- 251, 0, 91, 251,
- 0, 109, 249, 0, 113, 249, 0, 115, 249, 0, 117, 249, 11, 66, 250, 193, 250,
- 194, 250,
- 195, 250, 196, 250, 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250,
- 11, 66, 250,
- 193, 250, 194, 250, 195, 250, 196, 250, 197, 250, 198, 250, 0, 2, 250, 0,
- 4, 250,
- 0, 6, 250, 11, 66, 250, 193, 250, 194, 250, 195, 250, 196, 250, 197, 250,
- 198, 250,
- 0, 2, 250, 0, 4, 250, 0, 6, 250, 11, 66, 250, 193, 250, 194, 250, 195,
- 250, 196, 250,
- 197, 250, 198, 250, 0, 2, 250, 0, 4, 250, 0, 6, 250, 65, 45, 235, 46, 238,
- 47, 235,
- 59, 242, 60, 242, 66, 237, 80, 252, 98, 240, 102, 240, 106, 248, 112, 239,
- 118, 238,
- 193, 237, 194, 237, 195, 237, 196, 237, 197, 237, 198, 237, 211, 252, 212,
- 252,
- 213, 252, 214, 252, 215, 252, 217, 252, 225, 247, 226, 240, 227, 240, 228,
- 240,
- 229, 247, 230, 240, 233, 247, 234, 240, 235, 240, 236, 247, 238, 248, 243,
- 245,
- 244, 239, 245, 239, 246, 245, 247, 245, 249, 239, 250, 245, 251, 238, 252,
- 238,
- 253, 245, 0, 2, 237, 0, 3, 247, 0, 4, 237, 0, 5, 240, 0, 6, 237, 0, 7,
- 240, 0, 21, 247,
- 0, 25, 240, 0, 27, 240, 0, 29, 240, 0, 49, 248, 0, 78, 252, 0, 79, 245, 0,
- 82, 252, 0,
- 83, 239, 0, 109, 245, 0, 113, 238, 0, 115, 238, 0, 117, 238, 12, 66, 244,
- 193, 244,
- 194, 244, 195, 244, 196, 244, 197, 244, 198, 244, 0, 2, 244, 0, 4, 244, 0,
- 6, 244,
- 1, 32, 24, 245, 21, 33, 245, 101, 249, 109, 255, 115, 249, 116, 248, 117,
- 254, 119,
- 249, 0, 19, 249, 0, 60, 255, 0, 62, 255, 0, 68, 255, 0, 87, 249, 0, 89,
- 249, 0, 91, 249,
- 0, 93, 248, 0, 97, 248, 0, 99, 248, 0, 101, 254, 1, 2, 25, 248, 1, 32, 25,
- 245, 11, 66,
- 244, 193, 244, 194, 244, 195, 244, 196, 244, 197, 244, 198, 244, 0, 2,
- 244, 0, 4,
- 244, 0, 6, 244
-};
-static afm_cuint16 afm_Times_Roman_highchars_index[] = { /* 220 */
- 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 174, 175, 176,
- 177,
- 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192,
- 193,
- 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208,
- 209,
- 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224,
- 225,
- 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
- 241,
- 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256,
- 257,
- 258, 259, 260, 261, 262, 263, 268, 269, 270, 271, 272, 273, 274, 275, 278,
- 279,
- 280, 281, 282, 283, 286, 287, 290, 291, 298, 299, 302, 303, 304, 305, 310,
- 311,
- 313, 314, 315, 316, 317, 318, 321, 322, 323, 324, 325, 326, 327, 328, 332,
- 333,
- 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 350, 351, 352,
- 353,
- 354, 355, 356, 357, 362, 363, 366, 367, 368, 369, 370, 371, 376, 377, 378,
- 379,
- 380, 381, 382, 402, 536, 537, 710, 711, 728, 729, 730, 731, 732, 733,
- 8211, 8212,
- 8216, 8217, 8218, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8249,
- 8250,
- 8260, 8364, 8482, 8706, 8710, 8721, 8722, 8730, 8800, 8804, 8805, 9674,
- 63171,
- 64257, 64258
-};
-static afm_cunicode afm_Times_Roman_ligatures[] = { /* 3 */
- 102, 105, 64257
-};
-const afm_fontinfo afm_fontinfolist[] = {
- { /* Courier.afm 761 bytes */
- "Courier", "Courier",
- 629, -157,
- afm_Courier_widths,
- NULL,
- NULL,
- afm_Courier_highchars_index, 220,
- afm_Courier_ligatures, 1},
- { /* Courier-Bold.afm 761 bytes */
- "Courier-Bold", "Courier Bold",
- 629, -157,
- afm_Courier_Bold_widths,
- NULL,
- NULL,
- afm_Courier_Bold_highchars_index, 220,
- afm_Courier_Bold_ligatures, 1},
- { /* Courier-BoldOblique.afm 761 bytes */
- "Courier-BoldOblique", "Courier Bold Oblique",
- 629, -157,
- afm_Courier_BoldOblique_widths,
- NULL,
- NULL,
- afm_Courier_BoldOblique_highchars_index, 220,
- afm_Courier_BoldOblique_ligatures, 1},
- { /* Courier-Oblique.afm 761 bytes */
- "Courier-Oblique", "Courier Oblique",
- 629, -157,
- afm_Courier_Oblique_widths,
- NULL,
- NULL,
- afm_Courier_Oblique_highchars_index, 220,
- afm_Courier_Oblique_ligatures, 1},
- { /* Helvetica.afm 7841 bytes */
- "Helvetica", "Helvetica",
- 718, -207,
- afm_Helvetica_widths,
- afm_Helvetica_kerning_index,
- afm_Helvetica_kerning_data,
- afm_Helvetica_highchars_index, 220,
- afm_Helvetica_ligatures, 1},
- { /* Helvetica-Bold.afm 7336 bytes */
- "Helvetica-Bold", "Helvetica Bold",
- 718, -207,
- afm_Helvetica_Bold_widths,
- afm_Helvetica_Bold_kerning_index,
- afm_Helvetica_Bold_kerning_data,
- afm_Helvetica_Bold_highchars_index, 220,
- afm_Helvetica_Bold_ligatures, 1},
- { /* Helvetica-BoldOblique.afm 7336 bytes */
- "Helvetica-BoldOblique", "Helvetica Bold Oblique",
- 718, -207,
- afm_Helvetica_BoldOblique_widths,
- afm_Helvetica_BoldOblique_kerning_index,
- afm_Helvetica_BoldOblique_kerning_data,
- afm_Helvetica_BoldOblique_highchars_index, 220,
- afm_Helvetica_BoldOblique_ligatures, 1},
- { /* Helvetica-Oblique.afm 7841 bytes */
- "Helvetica-Oblique", "Helvetica Oblique",
- 718, -207,
- afm_Helvetica_Oblique_widths,
- afm_Helvetica_Oblique_kerning_index,
- afm_Helvetica_Oblique_kerning_data,
- afm_Helvetica_Oblique_highchars_index, 220,
- afm_Helvetica_Oblique_ligatures, 1},
- { /* ZapfDingbats.afm 416 bytes */
- "ZapfDingbats", "ITC Zapf Dingbats",
- 0, 0,
- afm_ZapfDingbats_widths,
- NULL,
- NULL,
- afm_ZapfDingbats_highchars_index, 107,
- NULL, 0},
- { /* Symbol.afm 563 bytes */
- "Symbol", "Symbol",
- 0, 0,
- afm_Symbol_widths,
- NULL,
- NULL,
- afm_Symbol_highchars_index, 156,
- NULL, 0},
- { /* Times-Bold.afm 6761 bytes */
- "Times-Bold", "Times Bold",
- 683, -217,
- afm_Times_Bold_widths,
- afm_Times_Bold_kerning_index,
- afm_Times_Bold_kerning_data,
- afm_Times_Bold_highchars_index, 220,
- afm_Times_Bold_ligatures, 1},
- { /* Times-BoldItalic.afm 6270 bytes */
- "Times-BoldItalic", "Times Bold Italic",
- 683, -217,
- afm_Times_BoldItalic_widths,
- afm_Times_BoldItalic_kerning_index,
- afm_Times_BoldItalic_kerning_data,
- afm_Times_BoldItalic_highchars_index, 220,
- afm_Times_BoldItalic_ligatures, 1},
- { /* Times-Italic.afm 6975 bytes */
- "Times-Italic", "Times Italic",
- 683, -217,
- afm_Times_Italic_widths,
- afm_Times_Italic_kerning_index,
- afm_Times_Italic_kerning_data,
- afm_Times_Italic_highchars_index, 220,
- afm_Times_Italic_ligatures, 1},
- { /* Times-Roman.afm 6287 bytes */
- "Times-Roman", "Times Roman",
- 683, -217,
- afm_Times_Roman_widths,
- afm_Times_Roman_kerning_index,
- afm_Times_Roman_kerning_data,
- afm_Times_Roman_highchars_index, 220,
- afm_Times_Roman_ligatures, 1},
- {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
-};
-const int afm_fontinfo_count = 14;
diff --git a/src/rrd_afm_data.h b/src/rrd_afm_data.h
--- a/src/rrd_afm_data.h
+++ /dev/null
@@ -1,191 +0,0 @@
-/****************************************************************************
- * RRDtool 1.2.23 Copyright by Tobi Oetiker, 1997-2007
- ****************************************************************************
- * rrd_afm_data.h Encoded afm (Adobe Font Metrics) for selected fonts.
- ****************************************************************************/
-
-#ifndef RRD_AFM_DATA_H
-#define RRD_AFM_DATA_H
-
-/*
-Description of data structures:
-
- Ideally, the struct should be a list of fonts, and each font
- is a list of character-info.
- Each character has a structure:
- struct charinfo {
- char16 thechar;
- int width;
- struct {
- char16 nextchar;
- int deltawidth;
- } kernings[];
- struct {
- char16 nextchar;
- char16 resultingchar;
- } ligatures[];
- }
-
- The data for typical fonts makes this a very sparse data structure.
- For most fonts, only the letter "f" has ligatures.
- All fonts have all (or almost all) of the characters 32-126,
- most fonts have all 161-255,
- and all fonts have very few 256-65535.
- Most kerning pairs have both chars 32-126.
-
- The most basic design decisionÊis to have all this data as
- const C globals all set up by array/struct initialisers
- so runtime setup overhead is minimal.
- The complete other possibility would be to parse and load
- this info at runtime, but for rrdtool I have preferred
- speed for flexibility as the same few fonts will be used
- zillions of times.
-
- So the idea is to rewrite the above structure into
- something which:
- 1) uses/wastes minimal memory
- 2) is fast for most characters
- 3) supports at least Iso-Latin-1, prefer full unicode.
- 4) doesn't need full precision in char width
- (we can afford to loose 0.2% as rrdtool only needs to calculate
- overall layout of elements, not positioning individual
- characters)
- 5) can be written as constant initialisers to C structs/arrays
- so we don't have runtime overhead starting rrdtool.
- 6) can be easily generated by some script so it is easy
- to select a set of fonts and have the C data updated.
- So adding/removing fonts is a matter of a recompile.
-
-Implementation design:
- All character structs are sorted by unicode value. Info for
- characters below 32 is discarded and the chars are treated
- as a space. Missing characters in the 32-126 range are
- substituted with default values so we can use direct array
- access for those. For characters above 126, binary search
- is used (not yet, liniar now but uses good guess for most latin 1
- characters).
-
- Ligature handling can be discarded as ligatures have very small
- effects on string width. The width of the "fi" ligature
- is the same (or very close) to the width of "f" plus the width
- of "i".
- If implemented, it can be a simple list (global for the font,
- not for each character) because all fonts I've seen that have
- ligatures has max 3 pairs: "fi", "fl", "ffl" and no other.
-
- Most characters has less than 10 kern pairs, few 10-20, and
- extremly few 20-30. This is implemented as a simple
- linear search with characters 256-65536 encoding using a prefix
- so most kern pairs only take 2 bytes:
- unsigned 8 bit char value and signed 8 bit kern width.
- Using a non-packed format would enable binary search, but
- would use almost twice as much memory for a yet unknown
- gain in speed.
-
- Character widths are stored as unsigned bytes. Width of
- one character is font-size * bytevalue * (1000 / 6)
- AFM specifies widths as integers with 1000 representing 1 * font-size.
- Kerning delta widths has same scaling factor, but the value
- is a signed byte as many kerning widths are negative and smaller
- than avarage character width.
-
- Kerning info is stored in a shared packed int8 array
- to reduce the number of structs and memory usage.
- This sets the maximum number of kerning pairs to
- approx 15000.
- The font I have seen with most kern pairs is
- "Bodoni Old Face BE Bold Italic Oldstyle Figures"
- which has 1718 pairs for 62 chars.
- Typical fonts have 100-150 pairs.
- For each character needs then only a 16 bit index
- into this shared table.
- The format of the sub-arrays are:
- count ( unicode deltawidth )
- with the (...) repeated count times.
- The count and the unicode is packed because a lot
- entries is less than 256, and most below 400.
- Therefore an escape sequence is used.
- If the value is >= 510
- 1, high-8bits, low-8bits
- else if the value is >= 254
- 0, value minus 254
- else
- value plus 1
- An index of zero is treated as a NULL pointer,
- and the first byte in a shared array is
- therefore not used (and filled with a dummy value).
- The array is only created if non-empty.
- No entries can be zero (they are redundant),
- and no subarray can be empty (as the index pointer
- then is 0 meaning no sub array).
- The deltawidth is stored as a non-escaped signed byte.
-
- So for each character needed info is:
- width: unsigned 8 bit int.
- kerning-subarray-index: unsigned 16 bit int.
-
- The first 126-32+1 entries are for the characters
- 32-126. If any is missing, a dummy entry is created.
- For characters 126-65535 a font-global
- array of struct {unicode, char-index} is
- used for binary search (not yet, liniar now).
-
- Ligatures can be implemented as a font-global
- array of struct {
- unicode char1, char2, resultingchar;
- }
-
- Font-global info is stored in a struct afm_fontinfo (see below).
-
- The highchars_index and ligatures structures are flattened
- to a simple array to avoid accidental padding between
- structs if the structsize is problematic for some platforms.
-
- All fonts are stored in an array of this struct,
- sorted by fullname for binary search (not yet sorted).
-
- The .afm files are compiled by a perl script which creates
- rrd_afm_data.c
- The only thing rrd_afm_data.c contains is this compiled data.
-
- Compiled on Mac OS X the size of rrd_afm_data.o
- is 67 Kb for the standard 14 postscript fonts,
- and 490 Kb for a set of 276 Adobe fonts.
-*/
-
-typedef unsigned char afm_uint8;
-typedef signed char afm_sint8;
-typedef unsigned short afm_uint16;
-typedef signed short afm_sint16;
-typedef unsigned short afm_unicode;
-
-typedef const afm_uint8 afm_cuint8;
-typedef const afm_sint8 afm_csint8;
-typedef const afm_uint16 afm_cuint16;
-typedef const afm_sint16 afm_csint16;
-typedef const afm_unicode afm_cunicode;
-
-typedef struct afm_fontinfo {
- const char *fullname; /* e.g. "Futura Bold Oblique" */
- const char *postscript_name; /* e.g. "Futura-BoldOblique" */
- afm_cuint16 ascender, descender;
- afm_cuint8 *widths;
- afm_csint16 *kerning_index;
- afm_cuint8 *kerning_data;
- afm_cuint16 *highchars_index;
- afm_cuint16 highchars_count;
- afm_cunicode *ligatures;
- afm_cuint16 ligatures_count;
-} afm_fontinfo;
-
-typedef struct old_afm_fontinfo {
- const char *fontname, *fullname;
- const unsigned short *charinfo, *intarray;
- const unsigned short charinfocount;
- const unsigned short fixedpitch;
-} old_afm_fontinfo;
-
-extern const afm_fontinfo afm_fontinfolist[];
-extern const int afm_fontinfo_count;
-
-#endif
diff --git a/src/rrd_gfx.c b/src/rrd_gfx.c
index 62088ddb1b0c5b4b4cc08f34c40c517c8498a424..ec6a574b131d01539481b0205e0df6b3104bd760 100644 (file)
--- a/src/rrd_gfx.c
+++ b/src/rrd_gfx.c
# define RRDPRINTF(...)
# endif /* DEBUG */
#endif /* _MSC_VER */
-#include "rrd_tool.h"
-#include <png.h>
-#include <ft2build.h>
-#include FT_FREETYPE_H
-#include FT_GLYPH_H
+#include "rrd_tool.h"
#include "rrd_gfx.h"
-#include "rrd_afm.h"
-#include "unused.h"
-
-/* lines are better drawn on the pixle than between pixles */
-#define LINEOFFSET 0.5
-
-#define USE_PDF_FAKE_ALPHA 1
-#define USE_EPS_FAKE_ALPHA 1
-
-typedef struct gfx_char_s *gfx_char;
-struct gfx_char_s {
- FT_UInt index; /* glyph index */
- FT_Vector pos; /* location from baseline in 26.6 */
- FT_Glyph image; /* glyph bitmap */
-};
-
-typedef struct gfx_string_s *gfx_string;
-struct gfx_string_s {
- unsigned int width;
- unsigned int height;
- int count; /* number of characters */
- gfx_char glyphs;
- size_t num_glyphs;
- FT_BBox bbox;
- FT_Matrix transform;
-};
-
-/* compute string bbox */
-static void compute_string_bbox(
- gfx_string string);
-
-/* create a freetype glyph string */
-gfx_string gfx_string_create(
- gfx_canvas_t *canvas,
- FT_Face face,
- const char *text,
- int rotation,
- double tabwidth,
- double size);
-
-/* create a freetype glyph string */
-static void gfx_string_destroy(
- gfx_string string);
-
-static
-gfx_node_t *gfx_new_node(
- gfx_canvas_t *canvas,
- enum gfx_en type)
-{
- gfx_node_t *node = art_new(gfx_node_t, 1);
-
- if (node == NULL)
- return NULL;
- node->type = type;
- node->color = 0x0; /* color of element 0xRRGGBBAA alpha 0xff is solid */
- node->size = 0.0; /* font size, line width */
- node->path = NULL; /* path */
- node->points = 0;
- node->points_max = 0;
- node->closed_path = 0;
- node->filename = NULL; /* font or image filename */
- node->text = NULL;
- node->x = 0.0;
- node->y = 0.0; /* position */
- node->angle = 0;
- node->halign = GFX_H_NULL; /* text alignement */
- node->valign = GFX_V_NULL; /* text alignement */
- node->tabwidth = 0.0;
- node->next = NULL;
- if (canvas->lastnode != NULL) {
- canvas->lastnode->next = node;
- }
- if (canvas->firstnode == NULL) {
- canvas->firstnode = node;
- }
- canvas->lastnode = node;
- return node;
-}
-
-gfx_canvas_t *gfx_new_canvas(
- void)
-{
- gfx_canvas_t *canvas = art_new(gfx_canvas_t, 1);
- canvas->firstnode = NULL;
- canvas->lastnode = NULL;
- canvas->imgformat = IF_PNG; /* we default to PNG output */
- canvas->interlaced = 0;
- canvas->zoom = 1.0;
- canvas->font_aa_threshold = -1.0;
- canvas->aa_type = AA_NORMAL;
- return canvas;
-}
/* create a new line */
-gfx_node_t *gfx_new_line(
- gfx_canvas_t *canvas,
+void gfx_line(
+ cairo_t * cr,
double X0,
double Y0,
double X1,
double width,
gfx_color_t color)
{
- return gfx_new_dashed_line(canvas, X0, Y0, X1, Y1, width, color, 0, 0);
+ gfx_dashed_line(cr, X0, Y0, X1, Y1, width, color, 0, 0);
}
-gfx_node_t *gfx_new_dashed_line(
- gfx_canvas_t *canvas,
+void gfx_dashed_line(
+ cairo_t * cr,
double X0,
double Y0,
double X1,
double dash_on,
double dash_off)
{
-
- gfx_node_t *node;
- ArtVpath *vec;
-
- node = gfx_new_node(canvas, GFX_LINE);
- if (node == NULL)
- return NULL;
- vec = art_new(ArtVpath, 3);
- if (vec == NULL)
- return NULL;
- vec[0].code = ART_MOVETO_OPEN;
- vec[0].x = X0 + LINEOFFSET;
- vec[0].y = Y0 + LINEOFFSET;
- vec[1].code = ART_LINETO;
- vec[1].x = X1 + LINEOFFSET;
- vec[1].y = Y1 + LINEOFFSET;
- vec[2].code = ART_END;
- vec[2].x = 0;
- vec[2].y = 0;
-
- node->points = 3;
- node->points_max = 3;
- node->color = color;
- node->size = width;
- node->dash_on = dash_on;
- node->dash_off = dash_off;
- node->path = vec;
- return node;
+ double dashes[] = { dash_on, dash_off };
+ double x = 0;
+ double y = 0;
+
+ cairo_save(cr);
+ cairo_new_path(cr);
+ cairo_set_line_width(cr, width);
+ gfx_line_fit(cr, &x, &y);
+ gfx_line_fit(cr, &X0, &Y0);
+ cairo_move_to(cr, X0, Y0);
+ gfx_line_fit(cr, &X1, &Y1);
+ cairo_line_to(cr, X1, Y1);
+ if (dash_on > 0 || dash_off > 0)
+ cairo_set_dash(cr, dashes, 2, x);
+ cairo_set_source_rgba(cr, color.red, color.green, color.blue,
+ color.alpha);
+ cairo_stroke(cr);
+ cairo_restore(cr);
}
/* create a new area */
-gfx_node_t *gfx_new_area(
- gfx_canvas_t *canvas,
+void gfx_new_area(
+ cairo_t * cr,
double X0,
double Y0,
double X1,
double Y2,
gfx_color_t color)
{
-
- gfx_node_t *node;
- ArtVpath *vec;
-
- node = gfx_new_node(canvas, GFX_AREA);
- if (node == NULL)
- return NULL;
- vec = art_new(ArtVpath, 5);
- if (vec == NULL)
- return NULL;
- vec[0].code = ART_MOVETO;
- vec[0].x = X0;
- vec[0].y = Y0;
- vec[1].code = ART_LINETO;
- vec[1].x = X1;
- vec[1].y = Y1;
- vec[2].code = ART_LINETO;
- vec[2].x = X2;
- vec[2].y = Y2;
- vec[3].code = ART_LINETO;
- vec[3].x = X0;
- vec[3].y = Y0;
- vec[4].code = ART_END;
- vec[4].x = 0;
- vec[4].y = 0;
-
- node->points = 5;
- node->points_max = 5;
- node->color = color;
- node->path = vec;
-
- return node;
+ cairo_new_path(cr);
+ gfx_area_fit(cr, &X0, &Y0);
+ cairo_move_to(cr, X0, Y0);
+ gfx_area_fit(cr, &X1, &Y1);
+ cairo_line_to(cr, X1, Y1);
+ gfx_area_fit(cr, &X2, &Y2);
+ cairo_line_to(cr, X2, Y2);
+ cairo_set_source_rgba(cr, color.red, color.green, color.blue,
+ color.alpha);
}
/* add a point to a line or to an area */
-int gfx_add_point(
- gfx_node_t *node,
+void gfx_add_point(
+ cairo_t * cr,
double x,
double y)
{
- if (node == NULL)
- return 1;
- if (node->type == GFX_AREA) {
- double X0 = node->path[0].x;
- double Y0 = node->path[0].y;
-
- node->points -= 2;
- art_vpath_add_point(&(node->path),
- &(node->points),
- &(node->points_max), ART_LINETO, x, y);
- art_vpath_add_point(&(node->path),
- &(node->points),
- &(node->points_max), ART_LINETO, X0, Y0);
- art_vpath_add_point(&(node->path),
- &(node->points),
- &(node->points_max), ART_END, 0, 0);
- } else if (node->type == GFX_LINE) {
- node->points -= 1;
- art_vpath_add_point(&(node->path),
- &(node->points),
- &(node->points_max),
- ART_LINETO, x + LINEOFFSET, y + LINEOFFSET);
- art_vpath_add_point(&(node->path),
- &(node->points),
- &(node->points_max), ART_END, 0, 0);
-
- } else {
- /* can only add point to areas and lines */
- return 1;
- }
- return 0;
+ gfx_area_fit(cr, &x, &y);
+ cairo_line_to(cr, x, y);
}
void gfx_close_path(
- gfx_node_t *node)
+ cairo_t * cr)
{
- node->closed_path = 1;
- if (node->path[0].code == ART_MOVETO_OPEN)
- node->path[0].code = ART_MOVETO;
+ cairo_close_path(cr);
+ cairo_fill(cr);
}
/* create a text node */
-gfx_node_t *gfx_new_text(
- gfx_canvas_t *canvas,
+static PangoLayout *gfx_prep_text(
+ cairo_t * cr,
double x,
- double y,
gfx_color_t color,
char *font,
double size,
double tabwidth,
- double angle,
- enum gfx_h_align_en h_align,
- enum gfx_v_align_en v_align,
- char *text)
+ const char *text)
{
- gfx_node_t *node = gfx_new_node(canvas, GFX_TEXT);
+ PangoLayout *layout;
+ PangoFontDescription *font_desc;
- node->text = strdup(text);
- node->size = size;
- node->filename = strdup(font);
- node->x = x;
- node->y = y;
- node->angle = angle;
- node->color = color;
- node->tabwidth = tabwidth;
- node->halign = h_align;
- node->valign = v_align;
-#if 0
- /* debugging: show text anchor
- green is along x-axis, red is downward y-axis */
- if (1) {
- double a = 2 * M_PI * -node->angle / 360.0;
- double cos_a = cos(a);
- double sin_a = sin(a);
- double len = 3;
+ /* for performance reasons we might
+ want todo that only once ... tabs will always
+ be the same */
+ long i;
+ long tab_count = strlen(text);
+ long tab_shift = fmod(x, tabwidth);
- gfx_new_line(canvas,
- x, y, x + len * cos_a, y - len * sin_a, 0.2, 0x00FF0000);
- gfx_new_line(canvas,
- x, y, x + len * sin_a, y + len * cos_a, 0.2, 0xFF000000);
- }
-#endif
- return node;
-}
+ PangoTabArray *tab_array;
-int gfx_render(
- gfx_canvas_t *canvas,
- art_u32 width,
- art_u32 height,
- gfx_color_t background,
- FILE * fp)
-{
- switch (canvas->imgformat) {
- case IF_PNG:
- return gfx_render_png(canvas, width, height, background, fp);
- case IF_SVG:
- return gfx_render_svg(canvas, width, height, background, fp);
- case IF_EPS:
- return gfx_render_eps(canvas, width, height, background, fp);
- case IF_PDF:
- return gfx_render_pdf(canvas, width, height, background, fp);
- default:
- return -1;
+ tab_array = pango_tab_array_new(tab_count, (gboolean) (1));
+ for (i = 1; i <= tab_count; i++) {
+ pango_tab_array_set_tab(tab_array,
+ i, PANGO_TAB_LEFT, tabwidth * i - tab_shift);
}
-}
-
-static void gfx_string_destroy(
- gfx_string string)
-{
- unsigned int n;
+ cairo_new_path(cr);
+ cairo_set_source_rgba(cr, color.red, color.green, color.blue,
+ color.alpha);
+ layout = pango_cairo_create_layout(cr);
- if (string->glyphs) {
- for (n = 0; n < string->num_glyphs; ++n)
- FT_Done_Glyph(string->glyphs[n].image);
- free(string->glyphs);
- }
- free(string);
+ pango_layout_set_tabs(layout, tab_array);
+ font_desc = pango_font_description_from_string(font);
+ pango_font_description_set_size(font_desc, size * PANGO_SCALE);
+ pango_layout_set_font_description(layout, font_desc);
+ pango_layout_set_markup(layout, text, -1);
+ return layout;
}
-
+/* Size Text Node */
double gfx_get_text_width(
- gfx_canvas_t *canvas,
+ cairo_t * cr,
double start,
char *font,
double size,
double tabwidth,
- char *text,
- int rotation)
+ char *text)
{
- switch (canvas->imgformat) {
- case IF_PNG:
- return gfx_get_text_width_libart(canvas, start, font, size, tabwidth,
- text, rotation);
- case IF_SVG: /* fall through */
- case IF_EPS:
- case IF_PDF:
- return afm_get_text_width(start, font, size, tabwidth, text);
- default:
- return size * strlen(text);
+ PangoLayout *layout;
+ PangoRectangle log_rect;
+ gfx_color_t color = { 0, 0, 0, 0 };
+ char *tab;
+
+ /* turn \\t into tab */
+ while (tab = strstr(text, "\\t")) {
+ memmove(tab + 1, tab + 2, strlen(tab + 2));
+ tab[0] = (char) 9;
}
+ layout = gfx_prep_text(cr, start, color, font, size, tabwidth, text);
+ pango_layout_get_pixel_extents(layout, NULL, &log_rect);
+ pango_tab_array_free(pango_layout_get_tabs(layout));
+ g_object_unref(layout);
+ return log_rect.width;
}
-double gfx_get_text_width_libart(
- gfx_canvas_t *canvas,
- double UNUSED(start),
+void gfx_text(
+ cairo_t * cr,
+ double x,
+ double y,
+ gfx_color_t color,
char *font,
double size,
double tabwidth,
- char *text,
- int rotation)
-{
-
- int error;
- double text_width = 0;
- FT_Face face;
- FT_Library library = NULL;
- gfx_string string;
-
- FT_Init_FreeType(&library);
- error = FT_New_Face(library, font, 0, &face);
- if (error) {
- FT_Done_FreeType(library);
- return -1;
- }
- error = FT_Set_Char_Size(face, size * 64, size * 64, 100, 100);
- if (error) {
- FT_Done_FreeType(library);
- return -1;
- }
- string = gfx_string_create(canvas, face, text, rotation, tabwidth, size);
- text_width = string->width;
- gfx_string_destroy(string);
- FT_Done_FreeType(library);
- return text_width / 64;
-}
-
-static void gfx_libart_close_path(
- gfx_node_t *node,
- ArtVpath ** vec)
-{
- /* libart must have end==start for closed paths,
- even if using ART_MOVETO and not ART_MOVETO_OPEN
- so add extra point which is the same as the starting point */
- int points_max = node->points; /* scaled array has exact size */
- int points = node->points - 1;
-
- art_vpath_add_point(vec, &points, &points_max, ART_LINETO,
- (**vec).x, (**vec).y);
- art_vpath_add_point(vec, &points, &points_max, ART_END, 0, 0);
-}
-
-
-/* find bbox of a string */
-static void compute_string_bbox(
- gfx_string string)
-{
- unsigned int n;
- FT_BBox bbox;
-
- bbox.xMin = bbox.yMin = 32000;
- bbox.xMax = bbox.yMax = -32000;
- for (n = 0; n < string->num_glyphs; n++) {
- FT_BBox glyph_bbox;
-
- FT_Glyph_Get_CBox(string->glyphs[n].image, ft_glyph_bbox_gridfit,
- &glyph_bbox);
- if (glyph_bbox.xMin < bbox.xMin) {
- bbox.xMin = glyph_bbox.xMin;
- }
- if (glyph_bbox.yMin < bbox.yMin) {
- bbox.yMin = glyph_bbox.yMin;
- }
- if (glyph_bbox.xMax > bbox.xMax) {
- bbox.xMax = glyph_bbox.xMax;
- }
- if (glyph_bbox.yMax > bbox.yMax) {
- bbox.yMax = glyph_bbox.yMax;
- }
- }
- if (bbox.xMin > bbox.xMax) {
- bbox.xMin = 0;
- bbox.yMin = 0;
- bbox.xMax = 0;
- bbox.yMax = 0;
- }
- string->bbox.xMin = bbox.xMin;
- string->bbox.xMax = bbox.xMax;
- string->bbox.yMin = bbox.yMin;
- string->bbox.yMax = bbox.yMax;
-}
-
-/* create a free type glyph string */
-gfx_string gfx_string_create(
- gfx_canvas_t *canvas,
- FT_Face face,
- const char *text,
- int rotation,
- double tabwidth,
- double size)
-{
-
- FT_GlyphSlot slot = face->glyph; /* a small shortcut */
- FT_Bool use_kerning;
- FT_UInt previous;
- FT_Vector ft_pen;
-
- gfx_string string = (gfx_string) malloc(sizeof(struct gfx_string_s));
-
- gfx_char glyph; /* current glyph in table */
- int n;
- int error;
- int gottab = 0;
-
-#ifdef HAVE_MBSTOWCS
- wchar_t *cstr;
- size_t clen = strlen(text) + 1;
-
- cstr = malloc(sizeof(wchar_t) * clen); /* yes we are allocating probably too much here, I know */
- string->count = mbstowcs(cstr, text, clen);
- if (string->count == -1) {
- /* conversion did not work, so lets fall back to just use what we got */
- string->count = clen - 1;
- for (n = 0; text[n] != '\0'; n++) {
- cstr[n] = (unsigned char) text[n];
- }
- }
-#else
- char *cstr = strdup(text);
-
- string->count = strlen(text);
-#endif
-
- ft_pen.x = 0; /* start at (0,0) !! */
- ft_pen.y = 0;
-
-
- string->width = 0;
- string->height = 0;
- string->glyphs =
- (gfx_char) calloc(string->count, sizeof(struct gfx_char_s));
- string->num_glyphs = 0;
- string->transform.xx =
- (FT_Fixed) (cos(M_PI * (rotation) / 180.0) * 0x10000);
- string->transform.xy =
- (FT_Fixed) (-sin(M_PI * (rotation) / 180.0) * 0x10000);
- string->transform.yx =
- (FT_Fixed) (sin(M_PI * (rotation) / 180.0) * 0x10000);
- string->transform.yy =
- (FT_Fixed) (cos(M_PI * (rotation) / 180.0) * 0x10000);
-
- use_kerning = FT_HAS_KERNING(face);
- previous = 0;
- glyph = string->glyphs;
- for (n = 0; n < string->count; glyph++, n++) {
- FT_Vector vec;
-
- /* handle the tabs ...
- have a witespace glyph inserted, but set its width such that the distance
- of the new right edge is x times tabwidth from 0,0 where x is an integer. */
- unsigned int letter = cstr[n];
-
- letter = afm_fix_osx_charset(letter); /* unsafe macro */
-
- gottab = 0;
- if (letter == '\\' && n + 1 < string->count && cstr[n + 1] == 't') {
- /* we have a tab here so skip the backslash and
- set t to ' ' so that we get a white space */
- gottab = 1;
- n++;
- letter = ' ';
- }
- if (letter == '\t') {
- letter = ' ';
- gottab = 1;
- }
- /* initialize each struct gfx_char_s */
- glyph->index = 0;
- glyph->pos.x = 0;
- glyph->pos.y = 0;
- glyph->image = NULL;
- glyph->index = FT_Get_Char_Index(face, letter);
-
- /* compute glyph origin */
- if (use_kerning && previous && glyph->index) {
- FT_Vector kerning;
-
- FT_Get_Kerning(face, previous, glyph->index,
- ft_kerning_default, &kerning);
- ft_pen.x += kerning.x;
- ft_pen.y += kerning.y;
- }
-
- /* load the glyph image (in its native format) */
- /* for now, we take a monochrome glyph bitmap */
- error =
- FT_Load_Glyph(face, glyph->index,
- size >
- canvas->font_aa_threshold ? canvas->aa_type ==
- AA_NORMAL ? FT_LOAD_TARGET_NORMAL : canvas->
- aa_type ==
- AA_LIGHT ? FT_LOAD_TARGET_LIGHT :
- FT_LOAD_TARGET_MONO : FT_LOAD_TARGET_MONO);
- if (error) {
- RRDPRINTF("couldn't load glyph: %c\n", letter)
- continue;
- }
- error = FT_Get_Glyph(slot, &glyph->image);
- if (error) {
- RRDPRINTF("couldn't get glyph %c from slot %d\n", letter,
- (int) slot)
- continue;
- }
- /* if we are in tabbing mode, we replace the tab with a space and shift the position
- of the space so that its left edge is where the tab was supposed to land us */
- if (gottab) {
- /* we are in gridfitting mode so the calculations happen in 1/64 pixles */
- ft_pen.x =
- tabwidth * 64.0 * (float) (1 +
- (long) (ft_pen.x /
- (tabwidth * 64.0))) -
- slot->advance.x;
- }
- /* store current pen position */
- glyph->pos.x = ft_pen.x;
- glyph->pos.y = ft_pen.y;
-
-
- ft_pen.x += slot->advance.x;
- ft_pen.y += slot->advance.y;
-
- /* rotate glyph */
- vec = glyph->pos;
- FT_Vector_Transform(&vec, &string->transform);
- error = FT_Glyph_Transform(glyph->image, &string->transform, &vec);
- if (error) {
- RRDPRINTF("couldn't transform glyph id %d\n", letter)
- continue;
- }
-
- /* convert to a bitmap - destroy native image */
- error =
- FT_Glyph_To_Bitmap(&glyph->image,
- size >
- canvas->font_aa_threshold ? canvas->aa_type ==
- AA_NORMAL ? FT_RENDER_MODE_NORMAL : canvas->
- aa_type ==
- AA_LIGHT ? FT_RENDER_MODE_LIGHT :
- FT_RENDER_MODE_MONO : FT_RENDER_MODE_MONO, 0,
- 1);
- if (error) {
- RRDPRINTF("couldn't convert glyph id %d to bitmap\n", letter)
- continue;
- }
-
- /* increment number of glyphs */
- previous = glyph->index;
- string->num_glyphs++;
- }
- free(cstr);
-/* printf ("number of glyphs = %d\n", string->num_glyphs);*/
- compute_string_bbox(string);
- /* the last character was a tab */
- /* if (gottab) { */
- string->width = ft_pen.x;
- /* } else {
- string->width = string->bbox.xMax - string->bbox.xMin;
- } */
- string->height = string->bbox.yMax - string->bbox.yMin;
- return string;
-}
-
-
-static int gfx_save_png(
- art_u8 * buffer,
- FILE * fp,
- long width,
- long height,
- long bytes_per_pixel);
-
-/* render grafics into png image */
-
-int gfx_render_png(
- gfx_canvas_t *canvas,
- art_u32 width,
- art_u32 height,
- gfx_color_t background,
- FILE * fp)
-{
-
-
- FT_Library library;
- gfx_node_t *node = canvas->firstnode;
-
- /*
- art_u8 red = background >> 24, green = (background >> 16) & 0xff;
- art_u8 blue = (background >> 8) & 0xff, alpha = ( background & 0xff );
- */
- unsigned long pys_width = width * canvas->zoom;
- unsigned long pys_height = height * canvas->zoom;
- const int bytes_per_pixel = 4;
- unsigned long rowstride = pys_width * bytes_per_pixel; /* bytes per pixel */
-
- /* fill that buffer with out background color */
- gfx_color_t *buffp = art_new(gfx_color_t, pys_width * pys_height);
- art_u8 *buffer = (art_u8 *) buffp;
- unsigned long i;
-
- for (i = 0; i < pys_width * pys_height; i++) {
- *(buffp++) = background;
- }
- FT_Init_FreeType(&library);
- while (node) {
- switch (node->type) {
- case GFX_LINE:
- case GFX_AREA:{
- ArtVpath *vec;
- double dst[6];
- ArtSVP *svp;
-
- art_affine_scale(dst, canvas->zoom, canvas->zoom);
- vec = art_vpath_affine_transform(node->path, dst);
- if (node->closed_path)
- gfx_libart_close_path(node, &vec);
- /* gfx_round_scaled_coordinates(vec); */
- /* pvec = art_vpath_perturb(vec);
- art_free(vec); */
- if (node->type == GFX_LINE) {
- svp = art_svp_vpath_stroke(vec, ART_PATH_STROKE_JOIN_ROUND,
- ART_PATH_STROKE_CAP_ROUND,
- node->size * canvas->zoom, 4,
- 0.25);
- } else {
- svp = art_svp_from_vpath(vec);
- /* this takes time and is unnecessary since we make
- sure elsewhere that the areas are going clock-whise */
- /* svpt = art_svp_uncross( svp );
- art_svp_free(svp);
- svp = art_svp_rewind_uncrossed(svpt,ART_WIND_RULE_NONZERO);
- art_svp_free(svpt);
- */
- }
- art_free(vec);
- /* this is from gnome since libart does not have this yet */
- gnome_print_art_rgba_svp_alpha(svp, 0, 0, pys_width, pys_height,
- node->color, buffer, rowstride,
- NULL);
- art_svp_free(svp);
- break;
- }
- case GFX_TEXT:{
- unsigned int n;
- int error;
- art_u8 fcolor[4], falpha;
- FT_Face face;
- gfx_char glyph;
- gfx_string string;
- FT_Vector vec; /* 26.6 */
-
- float pen_x = 0.0, pen_y = 0.0;
-
- /* double x,y; */
- long ix, iy;
-
- fcolor[0] = node->color >> 24;
- fcolor[1] = (node->color >> 16) & 0xff;
- fcolor[2] = (node->color >> 8) & 0xff;
- falpha = node->color & 0xff;
- error = FT_New_Face(library, (char *) node->filename, 0, &face);
- if (error) {
- rrd_set_error("failed to load %s", node->filename);
-
- break;
- }
- error = FT_Set_Char_Size(face, /* handle to face object */
- (long) (node->size * 64),
- (long) (node->size * 64),
- (long) (100 * canvas->zoom),
- (long) (100 * canvas->zoom));
- if (error) {
- FT_Done_Face(face);
- break;
- }
- pen_x = node->x * canvas->zoom;
- pen_y = node->y * canvas->zoom;
-
- string =
- gfx_string_create(canvas, face, node->text, node->angle,
- node->tabwidth, node->size);
- FT_Done_Face(face);
-
- switch (node->halign) {
- case GFX_H_RIGHT:
- vec.x = -string->bbox.xMax;
- break;
- case GFX_H_CENTER:
- vec.x = abs(string->bbox.xMax) >= abs(string->bbox.xMin) ?
- -string->bbox.xMax / 2 : -string->bbox.xMin / 2;
- break;
- case GFX_H_LEFT:
- vec.x = -string->bbox.xMin;
- break;
- case GFX_H_NULL:
- vec.x = 0;
- break;
- }
-
- switch (node->valign) {
- case GFX_V_TOP:
- vec.y = string->bbox.yMax;
- break;
- case GFX_V_CENTER:
- vec.y = abs(string->bbox.yMax) >= abs(string->bbox.yMin) ?
- string->bbox.yMax / 2 : string->bbox.yMin / 2;
- break;
- case GFX_V_BOTTOM:
- vec.y = 0;
- break;
- case GFX_V_NULL:
- vec.y = 0;
- break;
- }
- pen_x += vec.x / 64;
- pen_y += vec.y / 64;
- glyph = string->glyphs;
- for (n = 0; n < string->num_glyphs; n++, glyph++) {
- int gr;
- FT_Glyph image;
- FT_BitmapGlyph bit;
-
- /* long buf_x,comp_n; */
- /* make copy to transform */
- if (!glyph->image) {
- RRDPRINTF("no image\n")
- continue;
- }
- error = FT_Glyph_Copy(glyph->image, &image);
- if (error) {
- RRDPRINTF("couldn't copy image\n")
- continue;
- }
-
- /* transform it */
- vec = glyph->pos;
- FT_Vector_Transform(&vec, &string->transform);
-
- bit = (FT_BitmapGlyph) image;
- gr = bit->bitmap.num_grays - 1;
-/*
- buf_x = (pen_x + 0.5) + (double)bit->left;
- comp_n = buf_x + bit->bitmap.width > pys_width ? pys_width - buf_x : bit->bitmap.width;
- if (buf_x < 0 || buf_x >= (long)pys_width) continue;
- buf_x *= bytes_per_pixel ;
- for (iy=0; iy < bit->bitmap.rows; iy++){
- long buf_y = iy+(pen_y+0.5)-(double)bit->top;
- if (buf_y < 0 || buf_y >= (long)pys_height) continue;
- buf_y *= rowstride;
- for (ix=0;ix < bit->bitmap.width;ix++){
- *(letter + (ix*bytes_per_pixel+3)) = *(bit->bitmap.buffer + iy * bit->bitmap.width + ix);
- }
- art_rgba_rgba_composite(buffer + buf_y + buf_x ,letter,comp_n);
- }
- art_free(letter);
-*/
- switch (bit->bitmap.pixel_mode) {
- case FT_PIXEL_MODE_GRAY:
- for (iy = 0; iy < bit->bitmap.rows; iy++) {
- long buf_y = iy + (pen_y + 0.5) - bit->top;
-
- if (buf_y < 0 || buf_y >= (long) pys_height)
- continue;
- buf_y *= rowstride;
- for (ix = 0; ix < bit->bitmap.width; ix++) {
- long buf_x =
- ix + (pen_x + 0.5) + (double) bit->left;
- art_u8 font_alpha;
-
- if (buf_x < 0 || buf_x >= (long) pys_width)
- continue;
- buf_x *= bytes_per_pixel;
- font_alpha =
- *(bit->bitmap.buffer +
- iy * bit->bitmap.pitch + ix);
- if (font_alpha > 0) {
- fcolor[3] =
- (art_u8) ((double) font_alpha / gr *
- falpha);
- art_rgba_rgba_composite(buffer + buf_y +
- buf_x, fcolor, 1);
- }
- }
- }
- break;
-
- case FT_PIXEL_MODE_MONO:
- for (iy = 0; iy < bit->bitmap.rows; iy++) {
- long buf_y = iy + (pen_y + 0.5) - bit->top;
-
- if (buf_y < 0 || buf_y >= (long) pys_height)
- continue;
- buf_y *= rowstride;
- for (ix = 0; ix < bit->bitmap.width; ix++) {
- long buf_x =
- ix + (pen_x + 0.5) + (double) bit->left;
-
- if (buf_x < 0 || buf_x >= (long) pys_width)
- continue;
- buf_x *= bytes_per_pixel;
- if ((fcolor[3] =
- falpha *
- ((*
- (bit->bitmap.buffer +
- iy * bit->bitmap.pitch + ix / 8) >> (7 -
- (ix %
- 8)))
- & 1)) > 0)
- art_rgba_rgba_composite(buffer + buf_y +
- buf_x, fcolor, 1);
- }
- }
- break;
-
- default:
- rrd_set_error("unknown freetype pixel mode: %d",
- bit->bitmap.pixel_mode);
- break;
- }
-
-/*
- for (iy=0; iy < bit->bitmap.rows; iy++){
- long buf_y = iy+(pen_y+0.5)-bit->top;
- if (buf_y < 0 || buf_y >= (long)pys_height) continue;
- buf_y *= rowstride;
- for (ix=0;ix < bit->bitmap.width;ix++){
- long buf_x = ix + (pen_x + 0.5) + (double)bit->left ;
- art_u8 font_alpha;
-
- if (buf_x < 0 || buf_x >= (long)pys_width) continue;
- buf_x *= bytes_per_pixel ;
- font_alpha = *(bit->bitmap.buffer + iy * bit->bitmap.width + ix);
- font_alpha = (art_u8)((double)font_alpha / gr * falpha);
- for (iz = 0; iz < 3; iz++){
- art_u8 *orig = buffer + buf_y + buf_x + iz;
- *orig = (art_u8)((double)*orig / gr * ( gr - font_alpha) +
- (double)fcolor[iz] / gr * (font_alpha));
- }
- }
- }
-*/
- FT_Done_Glyph(image);
- }
- gfx_string_destroy(string);
- }
- }
- node = node->next;
- }
- gfx_save_png(buffer, fp, pys_width, pys_height, bytes_per_pixel);
- art_free(buffer);
- FT_Done_FreeType(library);
- return 0;
-}
-
-/* free memory used by nodes this will also remove memory required for
- associated paths and svcs ... but not for text strings */
-int gfx_destroy(
- gfx_canvas_t *canvas)
-{
- gfx_node_t *next, *node = canvas->firstnode;
-
- while (node) {
- next = node->next;
- art_free(node->path);
- free(node->text);
- free(node->filename);
- art_free(node);
- node = next;
- }
- art_free(canvas);
- return 0;
-}
-
-static int gfx_save_png(
- art_u8 * buffer,
- FILE * fp,
- long width,
- long height,
- long bytes_per_pixel)
-{
- png_structp png_ptr = NULL;
- png_infop info_ptr = NULL;
- int i;
- png_bytep *row_pointers;
- int rowstride = width * bytes_per_pixel;
- png_text text[2];
-
- if (fp == NULL)
- return (1);
-
- png_ptr =
- png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
- if (png_ptr == NULL) {
- return (1);
- }
- row_pointers = (png_bytepp) png_malloc(png_ptr,
- height * sizeof(png_bytep));
-
- info_ptr = png_create_info_struct(png_ptr);
-
- if (info_ptr == NULL) {
- png_free(png_ptr, row_pointers);
- png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
- return (1);
- }
-
- if (setjmp(png_jmpbuf(png_ptr))) {
- /* If we get here, we had a problem writing the file */
- png_destroy_write_struct(&png_ptr, &info_ptr);
- return (1);
- }
-
- png_init_io(png_ptr, fp);
- png_set_IHDR(png_ptr, info_ptr, width, height,
- 8, PNG_COLOR_TYPE_RGB_ALPHA,
- PNG_INTERLACE_NONE,
- PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
-
- text[0].key = "Software";
- text[0].text =
- "RRDtool, Tobias Oetiker <tobi@oetike.ch>, http://tobi.oetiker.ch";
- text[0].compression = PNG_TEXT_COMPRESSION_NONE;
- png_set_text(png_ptr, info_ptr, text, 1);
-
- /* lets make this fast while ending up with some increass in image size */
- png_set_filter(png_ptr, 0, PNG_FILTER_NONE);
- /* png_set_filter(png_ptr,0,PNG_FILTER_SUB); */
- png_set_compression_level(png_ptr, 1);
- /* png_set_compression_strategy(png_ptr,Z_HUFFMAN_ONLY); */
- /*
- png_set_filter(png_ptr,PNG_FILTER_TYPE_BASE,PNG_FILTER_SUB);
- png_set_compression_strategy(png_ptr,Z_HUFFMAN_ONLY);
- png_set_compression_level(png_ptr,Z_BEST_SPEED); */
-
- /* Write header data */
- png_write_info(png_ptr, info_ptr);
- for (i = 0; i < height; i++)
- row_pointers[i] = (png_bytep) (buffer + i * rowstride);
-
- png_write_image(png_ptr, row_pointers);
- png_write_end(png_ptr, info_ptr);
- png_free(png_ptr, row_pointers);
- png_destroy_write_struct(&png_ptr, &info_ptr);
- return 1;
-}
-
-
-/* ----- COMMON ROUTINES for pdf, svg and eps */
-#define min3(a, b, c) (a < b ? (a < c ? a : c) : (b < c ? b : c))
-#define max3(a, b, c) (a > b ? (a > c ? a : c) : (b > c ? b : c))
-
-#define PDF_CALC_DEBUG 0
-
-typedef struct pdf_point {
- double x, y;
-} pdf_point;
-
-typedef struct {
- double ascender, descender, baselineY;
- pdf_point sizep, minp, maxp;
- double x, y, tdx, tdy;
- double r, cos_r, sin_r;
- double ma, mb, mc, md, mx, my; /* pdf coord matrix */
- double tmx, tmy; /* last 2 coords of text coord matrix */
-#if PDF_CALC_DEBUG
- int debug;
-#endif
-} pdf_coords;
-
-#if PDF_CALC_DEBUG
-static void pdf_dump_calc(
- gfx_node_t *node,
- pdf_coords * g)
-{
- fprintf(stderr, "PDF CALC =============================\n");
- fprintf(stderr, " '%s' at %f pt\n", node->text, node->size);
- fprintf(stderr, " align h = %s, v = %s, sizep = %f, %f\n",
- (node->halign == GFX_H_RIGHT ? "r" :
- (node->halign == GFX_H_CENTER ? "c" :
- (node->halign == GFX_H_LEFT ? "l" : "N"))),
- (node->valign == GFX_V_TOP ? "t" :
- (node->valign == GFX_V_CENTER ? "c" :
- (node->valign == GFX_V_BOTTOM ? "b" : "N"))),
- g->sizep.x, g->sizep.y);
- fprintf(stderr, " r = %f = %f, cos = %f, sin = %f\n",
- g->r, node->angle, g->cos_r, g->sin_r);
- fprintf(stderr, " ascender = %f, descender = %f, baselineY = %f\n",
- g->ascender, g->descender, g->baselineY);
- fprintf(stderr, " sizep: %f, %f\n", g->sizep.x, g->sizep.y);
- fprintf(stderr, " minp: %f, %f maxp = %f, %f\n",
- g->minp.x, g->minp.y, g->maxp.x, g->maxp.y);
- fprintf(stderr, " x = %f, y = %f\n", g->x, g->y);
- fprintf(stderr, " tdx = %f, tdy = %f\n", g->tdx, g->tdy);
- fprintf(stderr, " GM = %f, %f, %f, %f, %f, %f\n",
- g->ma, g->mb, g->mc, g->md, g->mx, g->my);
- fprintf(stderr, " TM = %f, %f, %f, %f, %f, %f\n",
- g->ma, g->mb, g->mc, g->md, g->tmx, g->tmy);
-}
-#endif
-
-#if PDF_CALC_DEBUG
-#define PDF_DD(x) if (g->debug) x;
-#else
-#define PDF_DD(x)
-#endif
-
-static void pdf_rotate(
- pdf_coords * g,
- pdf_point *p)
-{
- double x2 = g->cos_r * p->x - g->sin_r * p->y;
- double y2 = g->sin_r * p->x + g->cos_r * p->y;
-
- PDF_DD(fprintf
- (stderr, " rotate(%f, %f) -> %f, %f\n", p->x, p->y, x2, y2))
- p->x = x2;
- p->y = y2;
-}
-
-
-static void pdf_calc(
- int page_height,
- gfx_node_t *node,
- pdf_coords * g)
+ double angle,
+ enum gfx_h_align_en h_align,
+ enum gfx_v_align_en v_align,
+ const char *text)
{
- pdf_point a, b, c;
-
-#if PDF_CALC_DEBUG
- /* g->debug = !!strstr(node->text, "RevProxy-1") || !!strstr(node->text, "08:00"); */
- g->debug = !!strstr(node->text, "sekunder")
- || !!strstr(node->text, "Web");
-#endif
- g->x = node->x;
- g->y = page_height - node->y;
- if (node->angle) {
- g->r = 2 * M_PI * node->angle / 360.0;
- g->cos_r = cos(g->r);
- g->sin_r = sin(g->r);
- } else {
- g->r = 0;
- g->cos_r = 1;
- g->sin_r = 0;
- }
- g->ascender = afm_get_ascender(node->filename, node->size);
- g->descender = afm_get_descender(node->filename, node->size);
- g->sizep.x =
- afm_get_text_width(0, node->filename, node->size, node->tabwidth,
- node->text);
- /* seems like libart ignores the descender when doing vertial-align = bottom,
- so we do that too, to get labels v-aligning properly */
- g->sizep.y = -g->ascender; /* + afm_get_descender(font->ps_font, node->size); */
- g->baselineY = -g->ascender - g->sizep.y / 2;
- a.x = g->sizep.x;
- a.y = g->sizep.y;
- b.x = g->sizep.x;
- b.y = 0;
- c.x = 0;
- c.y = g->sizep.y;
- if (node->angle) {
- pdf_rotate(g, &a);
- pdf_rotate(g, &b);
- pdf_rotate(g, &c);
- }
- g->minp.x = min3(a.x, b.x, c.x);
- g->minp.y = min3(a.y, b.y, c.y);
- g->maxp.x = max3(a.x, b.x, c.x);
- g->maxp.y = max3(a.y, b.y, c.y);
- /* The alignment parameters in node->valign and node->halign
- specifies the alignment in the non-rotated coordinate system
- (very unlike pdf/postscript), which complicates matters.
- */
- switch (node->halign) {
+ PangoLayout *layout;
+ PangoRectangle log_rect;
+ PangoRectangle ink_rect;
+ double sx = 0;
+ double sy = 0;
+
+ cairo_save(cr);
+ cairo_translate(cr, x, y);
+/* gfx_line(cr,-2,0,2,0,1,color);
+ gfx_line(cr,0,-2,0,2,1,color); */
+ layout = gfx_prep_text(cr, x, color, font, size, tabwidth, text);
+ pango_layout_get_pixel_extents(layout, &ink_rect, &log_rect);
+ cairo_rotate(cr, -angle * G_PI / 180.0);
+ sx = log_rect.x;
+ sy = ink_rect.y;
+ switch (h_align) {
case GFX_H_RIGHT:
- g->tdx = -g->maxp.x;
+ sx -= log_rect.width;
break;
case GFX_H_CENTER:
- g->tdx = -(g->maxp.x + g->minp.x) / 2;
+ sx -= log_rect.width / 2;
break;
case GFX_H_LEFT:
- g->tdx = -g->minp.x;
break;
case GFX_H_NULL:
- g->tdx = 0;
break;
}
- switch (node->valign) {
+ sy += log_rect.y;
+ switch (v_align) {
case GFX_V_TOP:
- g->tdy = -g->maxp.y;
break;
case GFX_V_CENTER:
- g->tdy = -(g->maxp.y + g->minp.y) / 2;
+ sy -= log_rect.height / 2;
break;
case GFX_V_BOTTOM:
- g->tdy = -g->minp.y;
+ sy -= log_rect.height;
break;
case GFX_V_NULL:
- g->tdy = 0;
break;
}
- g->ma = g->cos_r;
- g->mb = g->sin_r;
- g->mc = -g->sin_r;
- g->md = g->cos_r;
- g->mx = g->x + g->tdx;
- g->my = g->y + g->tdy;
- g->tmx = g->mx - g->ascender * g->mc;
- g->tmy = g->my - g->ascender * g->md;
- PDF_DD(pdf_dump_calc(node, g))
-}
-
-/* ------- SVG -------
- SVG reference:
- http://www.w3.org/TR/SVG/
-*/
-static int svg_indent = 0;
-static int svg_single_line = 0;
-static const char *svg_default_font = "-dummy-";
-typedef struct svg_dash {
- int dash_enable;
- double dash_adjust, dash_len, dash_offset;
- double adjusted_on, adjusted_off;
-} svg_dash;
+ pango_cairo_update_layout(cr, layout);
+ cairo_move_to(cr, sx, sy);
+ pango_cairo_show_layout(cr, layout);
+ pango_tab_array_free(pango_layout_get_tabs(layout));
+ g_object_unref(layout);
+ cairo_restore(cr);
-
-static void svg_print_indent(
- FILE * fp)
-{
- int i;
-
- for (i = svg_indent - svg_single_line; i > 0; i--) {
- putc(' ', fp);
- putc(' ', fp);
- }
}
-static void svg_start_tag(
- FILE * fp,
- const char *name)
+/* convert color */
+struct gfx_color_t gfx_hex_to_col(
+ long unsigned int color)
{
- svg_print_indent(fp);
- putc('<', fp);
- fputs(name, fp);
- svg_indent++;
-}
+ struct gfx_color_t gfx_color;
-static void svg_close_tag_single_line(
- FILE * fp)
-{
- svg_single_line++;
- putc('>', fp);
+ gfx_color.red = 1.0 / 255.0 * ((color & 0xff000000) >> (3 * 8));
+ gfx_color.green = 1.0 / 255.0 * ((color & 0x00ff0000) >> (2 * 8));
+ gfx_color.blue = 1.0 / 255.0 * ((color & 0x0000ff00) >> (1 * 8));
+ gfx_color.alpha = 1.0 / 255.0 * (color & 0x000000ff);
+ return gfx_color;
}
-static void svg_close_tag(
- FILE * fp)
-{
- putc('>', fp);
- if (!svg_single_line)
- putc('\n', fp);
-}
+/* gridfit_lines */
-static void svg_end_tag(
- FILE * fp,
- const char *name)
+void gfx_line_fit(
+ cairo_t * cr,
+ double *x,
+ double *y)
{
- /* name is NULL if closing empty-node tag */
- svg_indent--;
- if (svg_single_line)
- svg_single_line--;
- else if (name)
- svg_print_indent(fp);
- if (name != NULL) {
- fputs("</", fp);
- fputs(name, fp);
- } else {
- putc('/', fp);
- }
- svg_close_tag(fp);
-}
-
-static void svg_close_tag_empty_node(
- FILE * fp)
-{
- svg_end_tag(fp, NULL);
-}
-
-static void svg_write_text(
- FILE * fp,
- const char *text)
-{
-#ifdef HAVE_MBSTOWCS
- size_t clen;
- wchar_t *p, *cstr, ch;
- int text_count;
-
- if (!text)
- return;
- clen = strlen(text) + 1;
- cstr = malloc(sizeof(wchar_t) * clen);
- text_count = mbstowcs(cstr, text, clen);
- if (text_count == -1)
- text_count = mbstowcs(cstr, "Enc-Err", 6);
- p = cstr;
-#else
- unsigned char *p = text;
- unsigned char *cstr;
- char ch;
-
- if (!p)
- return;
-#endif
- while (1) {
- ch = *p++;
- ch = afm_fix_osx_charset(ch); /* unsafe macro */
- switch (ch) {
- case 0:
-#ifdef HAVE_MBSTOWCS
- free(cstr);
-#endif
- return;
- case '&':
- fputs("&", fp);
- break;
- case '<':
- fputs("<", fp);
- break;
- case '>':
- fputs(">", fp);
- break;
- case '"':
- fputs(""", fp);
- break;
- default:
- if (ch == 32) {
-#ifdef HAVE_MBSTOWCS
- if (p <= cstr + 1 || !*p || *p == 32)
- fputs(" ", fp); /* non-breaking space in unicode */
- else
-#endif
- fputc(32, fp);
- } else if (ch < 32 || ch >= 127)
- fprintf(fp, "&#%d;", (int) ch);
- else
- putc((char) ch, fp);
- }
- }
-}
-
-static void svg_format_number(
- char *buf,
- int bufsize,
- double d)
-{
- /* omit decimals if integer to reduce filesize */
- char *p;
-
- snprintf(buf, bufsize, "%.2f", d);
- p = buf; /* doesn't trust snprintf return value */
- while (*p)
- p++;
- while (--p > buf) {
- char ch = *p;
-
- if (ch == '0') {
- *p = '\0'; /* zap trailing zeros */
- continue;
- }
- if (ch == '.')
- *p = '\0'; /* zap trailing dot */
- break;
- }
-}
-
-static void svg_write_number(
- FILE * fp,
- double d)
-{
- char buf[60];
-
- svg_format_number(buf, sizeof(buf), d);
- fputs(buf, fp);
-}
-
-static int svg_color_is_black(
- int c)
-{
- /* gfx_color_t is RRGGBBAA */
- return c == 0x000000FF;
-}
-
-static void svg_write_color(
- FILE * fp,
- gfx_color_t c,
- const char *attr)
-{
- /* gfx_color_t is RRGGBBAA, svg can use #RRGGBB and #RGB like html */
- gfx_color_t rrggbb = (int) ((c >> 8) & 0xFFFFFF);
- gfx_color_t opacity = c & 0xFF;
-
- fprintf(fp, " %s=\"", attr);
- if ((rrggbb & 0x0F0F0F) == ((rrggbb >> 4) & 0x0F0F0F)) {
- /* css2 short form, #rgb is #rrggbb, not #r0g0b0 */
- fprintf(fp, "#%03lX", (((rrggbb >> 8) & 0xF00)
- | ((rrggbb >> 4) & 0x0F0)
- | (rrggbb & 0x00F)));
- } else {
- fprintf(fp, "#%06lX", rrggbb);
- }
- fputs("\"", fp);
- if (opacity != 0xFF) {
- fprintf(fp, " opacity=\"");
- svg_write_number(fp, opacity / 255.0);
- fputs("\"", fp);
- }
-}
-
-static void svg_get_dash(
- gfx_node_t *node,
- svg_dash *d)
-{
- double offset;
- int mult;
-
- if (node->dash_on <= 0 || node->dash_off <= 0) {
- d->dash_enable = 0;
- return;
- }
- d->dash_enable = 1;
- d->dash_len = node->dash_on + node->dash_off;
- /* dash on/off adjustment due to round caps */
- d->dash_adjust = 0.8 * node->size;
- d->adjusted_on = node->dash_on - d->dash_adjust;
- if (d->adjusted_on < 0.01)
- d->adjusted_on = 0.01;
- d->adjusted_off = d->dash_len - d->adjusted_on;
- /* dash offset calc */
- if (node->path[0].x == node->path[1].x) /* only good for horz/vert lines */
- offset = node->path[0].y;
- else
- offset = node->path[0].x;
- mult = (int) fabs(offset / d->dash_len);
- d->dash_offset = offset - mult * d->dash_len;
- if (node->path[0].x < node->path[1].x
- || node->path[0].y < node->path[1].y)
- d->dash_offset = d->dash_len - d->dash_offset;
-}
-
-static int svg_dash_equal(
- svg_dash *a,
- svg_dash *b)
-{
- if (a->dash_enable != b->dash_enable)
- return 0;
- if (a->adjusted_on != b->adjusted_on)
- return 0;
- if (a->adjusted_off != b->adjusted_off)
- return 0;
- /* rest of properties will be the same when on+off are */
- return 1;
-}
-
-static void svg_common_path_attributes(
- FILE * fp,
- gfx_node_t *node)
-{
- svg_dash dash_info;
-
- svg_get_dash(node, &dash_info);
- fputs(" stroke-width=\"", fp);
- svg_write_number(fp, node->size);
- fputs("\"", fp);
- svg_write_color(fp, node->color, "stroke");
- fputs(" fill=\"none\"", fp);
- if (dash_info.dash_enable) {
- if (dash_info.dash_offset != 0) {
- fputs(" stroke-dashoffset=\"", fp);
- svg_write_number(fp, dash_info.dash_offset);
- fputs("\"", fp);
- }
- fputs(" stroke-dasharray=\"", fp);
- svg_write_number(fp, dash_info.adjusted_on);
- fputs(",", fp);
- svg_write_number(fp, dash_info.adjusted_off);
- fputs("\"", fp);
- }
-}
-
-static int svg_is_int_step(
- double a,
- double b)
-{
- double diff = fabs(a - b);
-
- return floor(diff) == diff;
-}
-
-static int svg_path_straight_segment(
- FILE * fp,
- double lastA,
- double currentA,
- double currentB,
- gfx_node_t *node,
- int segment_idx,
- int isx,
- char absChar,
- char relChar)
-{
- if (!svg_is_int_step(lastA, currentA)) {
- putc(absChar, fp);
- svg_write_number(fp, currentA);
- return 0;
- }
- if (segment_idx < node->points - 1) {
- ArtVpath *vec = node->path + segment_idx + 1;
-
- if (vec->code == ART_LINETO) {
- double nextA = (isx ? vec->x : vec->y) - LINEOFFSET;
- double nextB = (isx ? vec->y : vec->x) - LINEOFFSET;
-
- if (nextB == currentB
- && ((currentA >= lastA) == (nextA >= currentA))
- && svg_is_int_step(currentA, nextA)) {
- return 1; /* skip to next as it is a straight line */
- }
- }
- }
- putc(relChar, fp);
- svg_write_number(fp, currentA - lastA);
- return 0;
-}
-
-static void svg_path(
- FILE * fp,
- gfx_node_t *node,
- int multi)
-{
- int i;
- double lastX = 0, lastY = 0;
-
- /* for straight lines <path..> tags take less space than
- <line..> tags because of the efficient packing
- in the 'd' attribute */
- svg_start_tag(fp, "path");
- if (!multi)
- svg_common_path_attributes(fp, node);
- fputs(" d=\"", fp);
- /* specification of the 'd' attribute: */
- /* http://www.w3.org/TR/SVG/paths.html#PathDataGeneralInformation */
- for (i = 0; i < node->points; i++) {
- ArtVpath *vec = node->path + i;
- double x = vec->x - LINEOFFSET;
- double y = vec->y - LINEOFFSET;
-
- switch (vec->code) {
- case ART_MOVETO_OPEN: /* fall-through */
- case ART_MOVETO:
- putc('M', fp);
- svg_write_number(fp, x);
- putc(',', fp);
- svg_write_number(fp, y);
- break;
- case ART_LINETO:
- /* try optimize filesize by using minimal lineto commands */
- /* without introducing rounding errors. */
- if (x == lastX) {
- if (svg_path_straight_segment
- (fp, lastY, y, x, node, i, 0, 'V', 'v'))
- continue;
- } else if (y == lastY) {
- if (svg_path_straight_segment
- (fp, lastX, x, y, node, i, 1, 'H', 'h'))
- continue;
- } else {
- putc('L', fp);
- svg_write_number(fp, x);
- putc(',', fp);
- svg_write_number(fp, y);
- }
- break;
- case ART_CURVETO:
- break; /* unsupported */
- case ART_END:
- break; /* nop */
- }
- lastX = x;
- lastY = y;
- }
- if (node->closed_path)
- fputs(" Z", fp);
- fputs("\"", fp);
- svg_close_tag_empty_node(fp);
-}
-
-static void svg_multi_path(
- FILE * fp,
- gfx_node_t **nodeR)
-{
- /* optimize for multiple paths with the same color, penwidth, etc. */
- int num = 1;
- gfx_node_t *node = *nodeR;
- gfx_node_t *next = node->next;
-
- while (next) {
- if (next->type != node->type
- || next->size != node->size
- || next->color != node->color
- || next->dash_on != node->dash_on
- || next->dash_off != node->dash_off)
- break;
- next = next->next;
- num++;
- }
- if (num == 1) {
- svg_path(fp, node, 0);
- return;
- }
- svg_start_tag(fp, "g");
- svg_common_path_attributes(fp, node);
- svg_close_tag(fp);
- while (num && node) {
- svg_path(fp, node, 1);
- if (!--num)
- break;
- node = node->next;
- *nodeR = node;
- }
- svg_end_tag(fp, "g");
-}
-
-static void svg_area(
- FILE * fp,
- gfx_node_t *node)
-{
- int i;
- double startX = 0, startY = 0;
-
- svg_start_tag(fp, "polygon");
- fputs(" ", fp);
- svg_write_color(fp, node->color, "fill");
- fputs(" points=\"", fp);
- for (i = 0; i < node->points; i++) {
- ArtVpath *vec = node->path + i;
- double x = vec->x - LINEOFFSET;
- double y = vec->y - LINEOFFSET;
-
- switch (vec->code) {
- case ART_MOVETO_OPEN: /* fall-through */
- case ART_MOVETO:
- svg_write_number(fp, x);
- putc(',', fp);
- svg_write_number(fp, y);
- startX = x;
- startY = y;
- break;
- case ART_LINETO:
- if (i == node->points - 2
- && node->path[i + 1].code == ART_END
- && fabs(x - startX) < 0.001 && fabs(y - startY) < 0.001) {
- break; /* poly area always closed, no need for last point */
- }
- putc(' ', fp);
- svg_write_number(fp, x);
- putc(',', fp);
- svg_write_number(fp, y);
- break;
- case ART_CURVETO:
- break; /* unsupported */
- case ART_END:
- break; /* nop */
- }
- }
- fputs("\"", fp);
- svg_close_tag_empty_node(fp);
-}
-
-static void svg_text(
- FILE * fp,
- gfx_node_t *node)
-{
- pdf_coords g;
- const char *fontname;
-
- /* as svg has 0,0 in top-left corner (like most screens) instead of
- bottom-left corner like pdf and eps, we have to fake the coords
- using offset and inverse sin(r) value */
- int page_height = 1000;
-
- pdf_calc(page_height, node, &g);
- if (node->angle != 0) {
- svg_start_tag(fp, "g");
- /* can't use svg_write_number as 2 decimals is far from enough to avoid
- skewed text */
- fprintf(fp, " transform=\"matrix(%f,%f,%f,%f,%f,%f)\"",
- g.ma, -g.mb, -g.mc, g.md, g.tmx, page_height - g.tmy);
- svg_close_tag(fp);
- }
- svg_start_tag(fp, "text");
- if (!node->angle) {
- fputs(" x=\"", fp);
- svg_write_number(fp, g.tmx);
- fputs("\" y=\"", fp);
- svg_write_number(fp, page_height - g.tmy);
- fputs("\"", fp);
- }
- fontname = afm_get_font_name(node->filename);
- if (strcmp(fontname, svg_default_font))
- fprintf(fp, " font-family=\"%s\"", fontname);
- fputs(" font-size=\"", fp);
- svg_write_number(fp, node->size);
- fputs("\"", fp);
- if (!svg_color_is_black(node->color))
- svg_write_color(fp, node->color, "fill");
- svg_close_tag_single_line(fp);
- /* support for node->tabwidth missing */
- svg_write_text(fp, node->text);
- svg_end_tag(fp, "text");
- if (node->angle != 0)
- svg_end_tag(fp, "g");
-}
-
-int gfx_render_svg(
- gfx_canvas_t *canvas,
- art_u32 width,
- art_u32 height,
- gfx_color_t background,
- FILE * fp)
-{
- gfx_node_t *node = canvas->firstnode;
-
- /* Find the first font used, and assume it is the mostly used
- one. It reduces the number of font-familty attributes. */
- while (node) {
- if (node->type == GFX_TEXT && node->filename) {
- svg_default_font = afm_get_font_name(node->filename);
- break;
- }
- node = node->next;
- }
- fputs("<?xml version=\"1.0\" standalone=\"no\"?>\n"
- "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.0//EN\"\n"
- " \"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">\n"
- "<!--\n"
- " SVG file created by\n"
- " RRDtool " PACKAGE_VERSION
- " Tobias Oetiker, http://tobi.oetiker.ch\n" "\n"
- " The width/height attributes in the outhermost svg node\n"
- " are just default sizes for the browser which is used\n"
- " if the svg file is openened directly without being\n"
- " embedded in an html file.\n"
- " The viewBox is the local coord system for rrdtool.\n" "-->\n",
- fp);
- svg_start_tag(fp, "svg");
- fputs(" width=\"", fp);
- svg_write_number(fp, width * canvas->zoom);
- fputs("\" height=\"", fp);
- svg_write_number(fp, height * canvas->zoom);
- fputs("\" x=\"0\" y=\"0\" viewBox=\"", fp);
- svg_write_number(fp, -LINEOFFSET);
- fputs(" ", fp);
- svg_write_number(fp, -LINEOFFSET);
- fputs(" ", fp);
- svg_write_number(fp, width - LINEOFFSET);
- fputs(" ", fp);
- svg_write_number(fp, height - LINEOFFSET);
- fputs("\" preserveAspectRatio=\"xMidYMid\"", fp);
- fprintf(fp, " font-family=\"%s\"", svg_default_font); /* default font */
- fputs(" stroke-linecap=\"round\" stroke-linejoin=\"round\"", fp);
- fputs(" xmlns=\"http://www.w3.org/2000/svg\"", fp);
- fputs(" xmlns:xlink=\"http://www.w3.org/1999/xlink\"", fp);
- svg_close_tag(fp);
- svg_start_tag(fp, "rect");
- fprintf(fp, " x=\"0\" y=\"0\" width=\"%d\" height=\"%d\"", width, height);
- svg_write_color(fp, background, "fill");
- svg_close_tag_empty_node(fp);
- node = canvas->firstnode;
- while (node) {
- switch (node->type) {
- case GFX_LINE:
- svg_multi_path(fp, &node);
- break;
- case GFX_AREA:
- svg_area(fp, node);
- break;
- case GFX_TEXT:
- svg_text(fp, node);
- }
- node = node->next;
- }
- svg_end_tag(fp, "svg");
- return 0;
-}
-
-/* ------- EPS -------
- EPS and Postscript references:
- http://partners.adobe.com/asn/developer/technotes/postscript.html
-*/
-
-typedef struct eps_font {
- const char *ps_font;
- int id;
- struct eps_font *next;
-} eps_font;
-
-typedef struct eps_state {
- FILE *fp;
- gfx_canvas_t *canvas;
- art_u32 page_width, page_height;
- eps_font *font_list;
- /*--*/
- gfx_color_t color;
- const char *font;
- double font_size;
double line_width;
- int linecap, linejoin;
- int has_dash;
-} eps_state;
-
-static void eps_set_color(
- eps_state *state,
- gfx_color_t color)
-{
-#if USE_EPS_FAKE_ALPHA
- double a1, a2;
-#endif
- /* gfx_color_t is RRGGBBAA */
- if (state->color == color)
- return;
-#if USE_EPS_FAKE_ALPHA
- a1 = (color & 255) / 255.0;
- a2 = 255 * (1 - a1);
-#define eps_color_calc(x) (int)( ((x) & 255) * a1 + a2)
-#else
-#define eps_color_calc(x) (int)( (x) & 255)
-#endif
- /* gfx_color_t is RRGGBBAA */
- if (state->color == color)
- return;
- fprintf(state->fp, "%d %d %d Rgb\n",
- eps_color_calc(color >> 24),
- eps_color_calc(color >> 16), eps_color_calc(color >> 8));
- state->color = color;
-}
-
-static int eps_add_font(
- eps_state *state,
- gfx_node_t *node)
-{
- /* The fonts list could be postponed to the end using
- (atend), but let's be nice and have them in the header. */
- const char *ps_font = afm_get_font_postscript_name(node->filename);
- eps_font *ef;
-
- for (ef = state->font_list; ef; ef = ef->next) {
- if (!strcmp(ps_font, ef->ps_font))
- return 0;
- }
- ef = malloc(sizeof(eps_font));
- if (ef == NULL) {
- rrd_set_error("malloc for eps_font");
- return -1;
- }
- ef->next = state->font_list;
- ef->ps_font = ps_font;
- state->font_list = ef;
- return 0;
-}
-
-static void eps_list_fonts(
- eps_state *state,
- const char *dscName)
-{
- eps_font *ef;
- int lineLen = strlen(dscName);
-
- if (!state->font_list)
- return;
- fputs(dscName, state->fp);
- for (ef = state->font_list; ef; ef = ef->next) {
- int nameLen = strlen(ef->ps_font);
-
- if (lineLen + nameLen > 100 && lineLen) {
- fputs("\n", state->fp);
- fputs("%%- \n", state->fp);
- lineLen = 5;
- } else {
- fputs(" ", state->fp);
- lineLen++;
- }
- fputs(ef->ps_font, state->fp);
- lineLen += nameLen;
- }
- fputs("\n", state->fp);
-}
-
-static void eps_define_fonts(
- eps_state *state)
-{
- eps_font *ef;
-
- if (!state->font_list)
- return;
- for (ef = state->font_list; ef; ef = ef->next) {
- /* PostScript¨ LANGUAGE REFERENCE third edition
- page 349 */
- fprintf(state->fp,
- "%%\n"
- "/%s findfont dup length dict begin\n"
- "{ 1 index /FID ne {def} {pop pop} ifelse } forall\n"
- "/Encoding ISOLatin1Encoding def\n"
- "currentdict end\n"
- "/%s-ISOLatin1 exch definefont pop\n"
- "/SetFont-%s { /%s-ISOLatin1 findfont exch scalefont setfont } bd\n",
- ef->ps_font, ef->ps_font, ef->ps_font, ef->ps_font);
- }
-}
-
-static int eps_prologue(
- eps_state *state)
-{
- gfx_node_t *node;
-
- fputs("%!PS-Adobe-3.0 EPSF-3.0\n"
- "%%Creator: RRDtool " PACKAGE_VERSION
- " Tobias Oetiker, http://tobi.oetiker.ch\n"
- /* can't like weird chars here */
- "%%Title: (RRDtool output)\n"
- "%%DocumentData: Clean7Bit\n" "", state->fp);
- fprintf(state->fp, "%%%%BoundingBox: 0 0 %d %d\n",
- state->page_width, state->page_height);
- for (node = state->canvas->firstnode; node; node = node->next) {
- if (node->type == GFX_TEXT && eps_add_font(state, node) == -1)
- return -1;
- }
- eps_list_fonts(state, "%%DocumentFonts:");
- eps_list_fonts(state, "%%DocumentNeededFonts:");
- fputs("%%EndComments\n" "%%BeginProlog\n" "%%EndProlog\n" /* must have, or BoundingBox is ignored */
- "/bd { bind def } bind def\n" "", state->fp);
- fprintf(state->fp, "/X { %.2f add } bd\n", LINEOFFSET);
- fputs("/X2 {X exch X exch} bd\n"
- "/M {X2 moveto} bd\n"
- "/L {X2 lineto} bd\n"
- "/m {moveto} bd\n"
- "/l {lineto} bd\n"
- "/S {stroke} bd\n"
- "/CP {closepath} bd\n"
- "/WS {setlinewidth stroke} bd\n"
- "/F {fill} bd\n"
- "/T1 {gsave} bd\n"
- "/T2 {concat 0 0 moveto show grestore} bd\n"
- "/T {moveto show} bd\n"
- "/Rgb { 255.0 div 3 1 roll\n"
- " 255.0 div 3 1 roll \n"
- " 255.0 div 3 1 roll setrgbcolor } bd\n" "", state->fp);
- eps_define_fonts(state);
- return 0;
-}
-
-static void eps_clear_dash(
- eps_state *state)
-{
- if (!state->has_dash)
- return;
- state->has_dash = 0;
- fputs("[1 0] 0 setdash\n", state->fp);
-}
-
-static void eps_write_linearea(
- eps_state *state,
- gfx_node_t *node)
-{
- int i;
- FILE *fp = state->fp;
- int useOffset = 0;
- int clearDashIfAny = 1;
-
- eps_set_color(state, node->color);
- if (node->type == GFX_LINE) {
- svg_dash dash_info;
-
- if (state->linecap != 1) {
- fputs("1 setlinecap\n", fp);
- state->linecap = 1;
- }
- if (state->linejoin != 1) {
- fputs("1 setlinejoin\n", fp);
- state->linejoin = 1;
- }
- svg_get_dash(node, &dash_info);
- if (dash_info.dash_enable) {
- clearDashIfAny = 0;
- state->has_dash = 1;
- fputs("[", fp);
- svg_write_number(fp, dash_info.adjusted_on);
- fputs(" ", fp);
- svg_write_number(fp, dash_info.adjusted_off);
- fputs("] ", fp);
- svg_write_number(fp, dash_info.dash_offset);
- fputs(" setdash\n", fp);
- }
- }
- if (clearDashIfAny)
- eps_clear_dash(state);
- for (i = 0; i < node->points; i++) {
- ArtVpath *vec = node->path + i;
- double x = vec->x;
- double y = state->page_height - vec->y;
-
- if (vec->code == ART_MOVETO_OPEN || vec->code == ART_MOVETO)
- useOffset = (fabs(x - floor(x) - 0.5) < 0.01
- && fabs(y - floor(y) - 0.5) < 0.01);
- if (useOffset) {
- x -= LINEOFFSET;
- y -= LINEOFFSET;
- }
- switch (vec->code) {
- case ART_MOVETO_OPEN: /* fall-through */
- case ART_MOVETO:
- svg_write_number(fp, x);
- fputc(' ', fp);
- svg_write_number(fp, y);
- fputc(' ', fp);
- fputs(useOffset ? "M\n" : "m\n", fp);
- break;
- case ART_LINETO:
- svg_write_number(fp, x);
- fputc(' ', fp);
- svg_write_number(fp, y);
- fputc(' ', fp);
- fputs(useOffset ? "L\n" : "l\n", fp);
- break;
- case ART_CURVETO:
- break; /* unsupported */
- case ART_END:
- break; /* nop */
- }
- }
- if (node->type == GFX_LINE) {
- if (node->closed_path)
- fputs("CP ", fp);
- if (node->size != state->line_width) {
- state->line_width = node->size;
- svg_write_number(fp, state->line_width);
- fputs(" WS\n", fp);
- } else {
- fputs("S\n", fp);
- }
- } else {
- fputs("F\n", fp);
- }
-}
-
-static void eps_write_text(
- eps_state *state,
- gfx_node_t *node)
-{
- FILE *fp = state->fp;
- const char *ps_font = afm_get_font_postscript_name(node->filename);
- int lineLen = 0;
- pdf_coords g;
-
-#ifdef HAVE_MBSTOWCS
- size_t clen;
- wchar_t *p, *cstr, ch;
- int text_count;
-
- if (!node->text)
- return;
- clen = strlen(node->text) + 1;
- cstr = malloc(sizeof(wchar_t) * clen);
- text_count = mbstowcs(cstr, node->text, clen);
- if (text_count == -1)
- text_count = mbstowcs(cstr, "Enc-Err", 6);
- p = cstr;
-#else
- const unsigned char *p = node->text;
- unsigned char ch;
-
- if (!p)
- return;
-#endif
- pdf_calc(state->page_height, node, &g);
- eps_set_color(state, node->color);
- if (strcmp(ps_font, state->font) || node->size != state->font_size) {
- state->font = ps_font;
- state->font_size = node->size;
- svg_write_number(fp, state->font_size);
- fprintf(fp, " SetFont-%s\n", state->font);
- }
- if (node->angle)
- fputs("T1 ", fp);
- fputs("(", fp);
- lineLen = 20;
- while (1) {
- ch = *p;
- if (!ch)
- break;
- ch = afm_fix_osx_charset(ch); /* unsafe macro */
- if (++lineLen > 70) {
- fputs("\\\n", fp); /* backslash and \n */
- lineLen = 0;
- }
- switch (ch) {
- case '%':
- case '(':
- case ')':
- case '\\':
- fputc('\\', fp);
- fputc(ch, fp);
- break;
- case '\n':
- fputs("\\n", fp);
- break;
- case '\r':
- fputs("\\r", fp);
- break;
- case '\t':
- fputs("\\t", fp);
- break;
- default:
- if (ch > 255) {
- fputc('?', fp);
- } else if (ch >= 126 || ch < 32) {
- fprintf(fp, "\\%03o", (unsigned int) ch);
- lineLen += 3;
- } else {
- fputc(ch, fp);
- }
- }
- p++;
- }
-#ifdef HAVE_MBSTOWCS
- free(cstr);
-#endif
- if (node->angle) {
- /* can't use svg_write_number as 2 decimals is far from enough to avoid
- skewed text */
- fprintf(fp, ") [%f %f %f %f %f %f] T2\n",
- g.ma, g.mb, g.mc, g.md, g.tmx, g.tmy);
- } else {
- fputs(") ", fp);
- svg_write_number(fp, g.tmx);
- fputs(" ", fp);
- svg_write_number(fp, g.tmy);
- fputs(" T\n", fp);
- }
-}
-
-static int eps_write_content(
- eps_state *state)
-{
- gfx_node_t *node;
-
- fputs("%\n", state->fp);
- for (node = state->canvas->firstnode; node; node = node->next) {
- switch (node->type) {
- case GFX_LINE:
- case GFX_AREA:
- eps_write_linearea(state, node);
- break;
- case GFX_TEXT:
- eps_write_text(state, node);
- break;
- }
- }
- return 0;
-}
-
-int gfx_render_eps(
- gfx_canvas_t *canvas,
- art_u32 width,
- art_u32 height,
- gfx_color_t background,
- FILE * fp)
-{
- struct eps_state state;
-
- state.fp = fp;
- state.canvas = canvas;
- state.page_width = width;
- state.page_height = height;
- state.font = "no-default-font";
- state.font_size = -1;
- state.color = 0; /* black */
- state.font_list = NULL;
- state.linecap = -1;
- state.linejoin = -1;
- state.has_dash = 0;
- state.line_width = 1;
- if (eps_prologue(&state) == -1)
- return -1;
- eps_set_color(&state, background);
- fprintf(fp, "0 0 M 0 %d L %d %d L %d 0 L fill\n",
- height, width, height, width);
- if (eps_write_content(&state) == -1)
- return 0;
- fputs("showpage\n", fp);
- fputs("%%EOF\n", fp);
- while (state.font_list) {
- eps_font *next = state.font_list->next;
-
- free(state.font_list);
- state.font_list = next;
- }
- return 0;
-}
-
-/* ------- PDF -------
- PDF references page:
- http://partners.adobe.com/public/developer/pdf/index_reference.html
-*/
-
-typedef struct pdf_buffer {
- int id, is_obj, is_dict, is_stream, pdf_file_pos;
- char *data;
- int alloc_size, current_size;
- struct pdf_buffer *previous_buffer, *next_buffer;
- struct pdf_state *state;
-} pdf_buffer;
-
-typedef struct pdf_font {
- const char *ps_font;
- pdf_buffer obj;
- struct pdf_font *next;
-} pdf_font;
-
-typedef struct pdf_state {
- FILE *fp;
- gfx_canvas_t *canvas;
- art_u32 page_width, page_height;
- pdf_font *font_list;
- pdf_buffer *first_buffer, *last_buffer;
- int pdf_file_pos;
- int has_failed;
- /*--*/
- gfx_color_t stroke_color, fill_color;
- int font_id;
- double font_size;
- double line_width;
- svg_dash dash;
- int linecap, linejoin;
- int last_obj_id;
- /*--*/
- pdf_buffer pdf_header;
- pdf_buffer info_obj, catalog_obj, pages_obj, page1_obj;
- pdf_buffer fontsdict_obj;
- pdf_buffer graph_stream;
-} pdf_state;
-
-static void pdf_init_buffer(
- pdf_state *state,
- pdf_buffer *buf)
-{
- int initial_size = 32;
-
- buf->state = state;
- buf->id = -42;
- buf->alloc_size = 0;
- buf->current_size = 0;
- buf->data = (char *) malloc(initial_size);
- buf->is_obj = 0;
- buf->previous_buffer = NULL;
- buf->next_buffer = NULL;
- if (buf->data == NULL) {
- rrd_set_error("malloc for pdf_buffer data");
- state->has_failed = 1;
- return;
- }
- buf->alloc_size = initial_size;
- if (state->last_buffer)
- state->last_buffer->next_buffer = buf;
- if (state->first_buffer == NULL)
- state->first_buffer = buf;
- buf->previous_buffer = state->last_buffer;
- state->last_buffer = buf;
-}
-
-static void pdf_put(
- pdf_buffer *buf,
- const char *text,
- int len)
-{
- if (len <= 0)
- return;
- if (buf->alloc_size < buf->current_size + len) {
- int new_size = buf->alloc_size;
- char *new_buf;
-
- while (new_size < buf->current_size + len)
- new_size *= 4;
- new_buf = (char *) malloc(new_size);
- if (new_buf == NULL) {
- rrd_set_error("re-malloc for pdf_buffer data");
- buf->state->has_failed = 1;
- return;
- }
- memcpy(new_buf, buf->data, buf->current_size);
- free(buf->data);
- buf->data = new_buf;
- buf->alloc_size = new_size;
- }
- memcpy(buf->data + buf->current_size, text, len);
- buf->current_size += len;
-}
-
-static void pdf_put_char(
- pdf_buffer *buf,
- char c)
-{
- if (buf->alloc_size >= buf->current_size + 1) {
- buf->data[buf->current_size++] = c;
- } else {
- char tmp[1];
-
- tmp[0] = (char) c;
- pdf_put(buf, tmp, 1);
- }
-}
-
-static void pdf_puts(
- pdf_buffer *buf,
- const char *text)
-{
- pdf_put(buf, text, strlen(text));
-}
-
-static void pdf_indent(
- pdf_buffer *buf)
-{
- pdf_puts(buf, "\t");
-}
-
-static void pdf_putsi(
- pdf_buffer *buf,
- const char *text)
-{
- pdf_indent(buf);
- pdf_puts(buf, text);
-}
-
-static void pdf_putint(
- pdf_buffer *buf,
- int i)
-{
- char tmp[20];
-
- sprintf(tmp, "%d", i);
- pdf_puts(buf, tmp);
-}
-
-static void pdf_putnumber(
- pdf_buffer *buf,
- double d)
-{
- char tmp[50];
-
- svg_format_number(tmp, sizeof(tmp), d);
- pdf_puts(buf, tmp);
-}
-
-static void pdf_put_string_contents_wide(
- pdf_buffer *buf,
- const afm_char * text)
-{
- const afm_char *p = text;
-
- while (1) {
- afm_char ch = *p;
-
- ch = afm_fix_osx_charset(ch); /* unsafe macro */
- switch (ch) {
- case 0:
- return;
- case '(':
- pdf_puts(buf, "\\(");
- break;
- case ')':
- pdf_puts(buf, "\\)");
- break;
- case '\\':
- pdf_puts(buf, "\\\\");
- break;
- case '\n':
- pdf_puts(buf, "\\n");
- break;
- case '\r':
- pdf_puts(buf, "\\r");
- break;
- case '\t':
- pdf_puts(buf, "\\t");
- break;
- default:
- if (ch > 255) {
- pdf_put_char(buf, '?');
- } else if (ch > 125 || ch < 32) {
- pdf_put_char(buf, ch);
- } else {
- char tmp[10];
-
- snprintf(tmp, sizeof(tmp), "\\%03o", (int) ch);
- pdf_puts(buf, tmp);
- }
- }
- p++;
- }
-}
-
-static void pdf_put_string_contents(
- pdf_buffer *buf,
- const char *text)
-{
-#ifdef HAVE_MBSTOWCS
- size_t clen = strlen(text) + 1;
- wchar_t *cstr = malloc(sizeof(wchar_t) * clen);
- int text_count = mbstowcs(cstr, text, clen);
-
- if (text_count == -1)
- text_count = mbstowcs(cstr, "Enc-Err", 6);
- pdf_put_string_contents_wide(buf, cstr);
-#if 0
- if (*text == 'W') {
- fprintf(stderr, "Decoding utf8 for '%s'\n", text);
- wchar_t *p = cstr;
- char *pp = text;
-
- fprintf(stderr, "sz wc = %d\n", sizeof(wchar_t));
- while (*p) {
- fprintf(stderr, " %d = %c versus %d = %c\n", *p, (char) *p,
- 255 & (int) *pp, *pp);
- p++;
- pp++;
- }
- }
-#endif
- free(cstr);
-#else
- pdf_put_string_contents_wide(buf, text);
-#endif
-}
-
-static void pdf_init_object(
- pdf_state *state,
- pdf_buffer *buf)
-{
- pdf_init_buffer(state, buf);
- buf->id = ++state->last_obj_id;
- buf->is_obj = 1;
- buf->is_stream = 0;
-}
-
-static void pdf_init_dict(
- pdf_state *state,
- pdf_buffer *buf)
-{
- pdf_init_object(state, buf);
- buf->is_dict = 1;
-}
-
-static void pdf_set_color(
- pdf_buffer *buf,
- gfx_color_t color,
- gfx_color_t *current_color,
- const char *op)
-{
-#if USE_PDF_FAKE_ALPHA
- double a1, a2;
-#endif
- /* gfx_color_t is RRGGBBAA */
- if (*current_color == color)
- return;
-#if USE_PDF_FAKE_ALPHA
- a1 = (color & 255) / 255.0;
- a2 = 1 - a1;
-#define pdf_color_calc(x) ( ((x) & 255) / 255.0 * a1 + a2)
-#else
-#define pdf_color_calc(x) ( ((x) & 255) / 255.0)
-#endif
- pdf_putnumber(buf, pdf_color_calc(color >> 24));
- pdf_puts(buf, " ");
- pdf_putnumber(buf, pdf_color_calc(color >> 16));
- pdf_puts(buf, " ");
- pdf_putnumber(buf, pdf_color_calc(color >> 8));
- pdf_puts(buf, " ");
- pdf_puts(buf, op);
- pdf_puts(buf, "\n");
- *current_color = color;
-}
-
-static void pdf_set_stroke_color(
- pdf_buffer *buf,
- gfx_color_t color)
-{
- pdf_set_color(buf, color, &buf->state->stroke_color, "RG");
-}
-
-static void pdf_set_fill_color(
- pdf_buffer *buf,
- gfx_color_t color)
-{
- pdf_set_color(buf, color, &buf->state->fill_color, "rg");
-}
-
-static pdf_font *pdf_find_font(
- pdf_state *state,
- gfx_node_t *node)
-{
- const char *ps_font = afm_get_font_postscript_name(node->filename);
- pdf_font *ef;
-
- for (ef = state->font_list; ef; ef = ef->next) {
- if (!strcmp(ps_font, ef->ps_font))
- return ef;
- }
- return NULL;
-}
-
-static void pdf_add_font(
- pdf_state *state,
- gfx_node_t *node)
-{
- pdf_font *ef = pdf_find_font(state, node);
-
- if (ef)
- return;
- ef = malloc(sizeof(pdf_font));
- if (ef == NULL) {
- rrd_set_error("malloc for pdf_font");
- state->has_failed = 1;
- return;
- }
- pdf_init_dict(state, &ef->obj);
- ef->next = state->font_list;
- ef->ps_font = afm_get_font_postscript_name(node->filename);
- state->font_list = ef;
- /* fonts dict */
- pdf_putsi(&state->fontsdict_obj, "/F");
- pdf_putint(&state->fontsdict_obj, ef->obj.id);
- pdf_puts(&state->fontsdict_obj, " ");
- pdf_putint(&state->fontsdict_obj, ef->obj.id);
- pdf_puts(&state->fontsdict_obj, " 0 R\n");
- /* fonts def */
- pdf_putsi(&ef->obj, "/Type /Font\n");
- pdf_putsi(&ef->obj, "/Subtype /Type1\n");
- pdf_putsi(&ef->obj, "/Name /F");
- pdf_putint(&ef->obj, ef->obj.id);
- pdf_puts(&ef->obj, "\n");
- pdf_putsi(&ef->obj, "/BaseFont /");
- pdf_puts(&ef->obj, ef->ps_font);
- pdf_puts(&ef->obj, "\n");
- pdf_putsi(&ef->obj, "/Encoding /WinAnsiEncoding\n");
- /* 'Cp1252' (this is latin 1 extended with 27 characters;
- the encoding is also known as 'winansi')
- http://www.lowagie.com/iText/tutorial/ch09.html */
-}
-
-static void pdf_create_fonts(
- pdf_state *state)
-{
- gfx_node_t *node;
-
- for (node = state->canvas->firstnode; node; node = node->next) {
- if (node->type == GFX_TEXT)
- pdf_add_font(state, node);
- }
-}
-
-static void pdf_write_linearea(
- pdf_state *state,
- gfx_node_t *node)
-{
- int i;
- pdf_buffer *s = &state->graph_stream;
-
- if (node->type == GFX_LINE) {
- svg_dash dash_info;
-
- svg_get_dash(node, &dash_info);
- if (!svg_dash_equal(&dash_info, &state->dash)) {
- state->dash = dash_info;
- if (dash_info.dash_enable) {
- pdf_puts(s, "[");
- pdf_putnumber(s, dash_info.adjusted_on);
- pdf_puts(s, " ");
- pdf_putnumber(s, dash_info.adjusted_off);
- pdf_puts(s, "] ");
- pdf_putnumber(s, dash_info.dash_offset);
- pdf_puts(s, " d\n");
- } else {
- pdf_puts(s, "[] 0 d\n");
- }
- }
- pdf_set_stroke_color(s, node->color);
- if (state->linecap != 1) {
- pdf_puts(s, "1 j\n");
- state->linecap = 1;
- }
- if (state->linejoin != 1) {
- pdf_puts(s, "1 J\n");
- state->linejoin = 1;
- }
- if (node->size != state->line_width) {
- state->line_width = node->size;
- pdf_putnumber(s, state->line_width);
- pdf_puts(s, " w\n");
- }
- } else {
- pdf_set_fill_color(s, node->color);
- }
- for (i = 0; i < node->points; i++) {
- ArtVpath *vec = node->path + i;
- double x = vec->x;
- double y = state->page_height - vec->y;
-
- if (node->type == GFX_AREA) {
- x += LINEOFFSET; /* adjust for libart handling of areas */
- y -= LINEOFFSET;
- }
- switch (vec->code) {
- case ART_MOVETO_OPEN: /* fall-through */
- case ART_MOVETO:
- pdf_putnumber(s, x);
- pdf_puts(s, " ");
- pdf_putnumber(s, y);
- pdf_puts(s, " m\n");
- break;
- case ART_LINETO:
- pdf_putnumber(s, x);
- pdf_puts(s, " ");
- pdf_putnumber(s, y);
- pdf_puts(s, " l\n");
- break;
- case ART_CURVETO:
- break; /* unsupported */
- case ART_END:
- break; /* nop */
- }
- }
- if (node->type == GFX_LINE) {
- pdf_puts(s, node->closed_path ? "s\n" : "S\n");
- } else {
- pdf_puts(s, "f\n");
- }
-}
-
-
-static void pdf_write_matrix(
- pdf_state *state,
- gfx_node_t *node,
- pdf_coords * g,
- int useTM)
-{
- char tmp[150];
- pdf_buffer *s = &state->graph_stream;
-
- if (node->angle == 0) {
- pdf_puts(s, "1 0 0 1 ");
- pdf_putnumber(s, useTM ? g->tmx : g->mx);
- pdf_puts(s, " ");
- pdf_putnumber(s, useTM ? g->tmy : g->my);
- } else {
- /* can't use svg_write_number as 2 decimals is far from enough to avoid
- skewed text */
- sprintf(tmp, "%f %f %f %f %f %f",
- g->ma, g->mb, g->mc, g->md,
- useTM ? g->tmx : g->mx, useTM ? g->tmy : g->my);
- pdf_puts(s, tmp);
- }
-}
-
-static void pdf_write_text(
- pdf_state *state,
- gfx_node_t *node,
- int last_was_text,
- int next_is_text)
-{
- pdf_coords g;
- pdf_buffer *s = &state->graph_stream;
- pdf_font *font = pdf_find_font(state, node);
-
- if (font == NULL) {
- rrd_set_error("font disappeared");
- state->has_failed = 1;
- return;
- }
- pdf_calc(state->page_height, node, &g);
-#if PDF_CALC_DEBUG
- pdf_puts(s, "q % debug green box\n");
- pdf_write_matrix(state, node, &g, 0);
- pdf_puts(s, " cm\n");
- pdf_set_fill_color(s, 0x90FF9000);
- pdf_puts(s, "0 0.4 0 rg\n");
- pdf_puts(s, "0 0 ");
- pdf_putnumber(s, g.sizep.x);
- pdf_puts(s, " ");
- pdf_putnumber(s, g.sizep.y);
- pdf_puts(s, " re\n");
- pdf_puts(s, "f\n");
- pdf_puts(s, "Q\n");
-#endif
- pdf_set_fill_color(s, node->color);
- if (PDF_CALC_DEBUG || !last_was_text)
- pdf_puts(s, "BT\n");
- if (state->font_id != font->obj.id || node->size != state->font_size) {
- state->font_id = font->obj.id;
- state->font_size = node->size;
- pdf_puts(s, "/F");
- pdf_putint(s, font->obj.id);
- pdf_puts(s, " ");
- pdf_putnumber(s, node->size);
- pdf_puts(s, " Tf\n");
- }
- pdf_write_matrix(state, node, &g, 1);
- pdf_puts(s, " Tm\n");
- pdf_puts(s, "(");
- pdf_put_string_contents(s, node->text);
- pdf_puts(s, ") Tj\n");
- if (PDF_CALC_DEBUG || !next_is_text)
- pdf_puts(s, "ET\n");
-}
-
-static void pdf_write_content(
- pdf_state *state)
-{
- gfx_node_t *node;
- int last_was_text = 0, next_is_text;
-
- for (node = state->canvas->firstnode; node; node = node->next) {
- switch (node->type) {
- case GFX_LINE:
- case GFX_AREA:
- pdf_write_linearea(state, node);
- break;
- case GFX_TEXT:
- next_is_text = node->next && node->next->type == GFX_TEXT;
- pdf_write_text(state, node, last_was_text, next_is_text);
- break;
- }
- last_was_text = node->type == GFX_TEXT;
- }
-}
-
-static void pdf_init_document(
- pdf_state *state)
-{
- pdf_init_buffer(state, &state->pdf_header);
- pdf_init_dict(state, &state->catalog_obj);
- pdf_init_dict(state, &state->info_obj);
- pdf_init_dict(state, &state->pages_obj);
- pdf_init_dict(state, &state->page1_obj);
- pdf_init_dict(state, &state->fontsdict_obj);
- pdf_create_fonts(state);
- if (state->has_failed)
- return;
- /* make stream last object in file */
- pdf_init_object(state, &state->graph_stream);
- state->graph_stream.is_stream = 1;
-}
-
-static void pdf_setup_document(
- pdf_state *state)
-{
- const char *creator =
- "RRDtool " PACKAGE_VERSION " Tobias Oetiker, http://tobi.oetiker.ch";
- /* all objects created by now, so init code can reference them */
- /* HEADER */
- pdf_puts(&state->pdf_header, "%PDF-1.3\n");
- /* following 8 bit comment is recommended by Adobe for
- indicating binary file to file transfer applications */
- pdf_puts(&state->pdf_header, "%\xE2\xE3\xCF\xD3\n");
- /* INFO */
- pdf_putsi(&state->info_obj, "/Creator (");
- pdf_put_string_contents(&state->info_obj, creator);
- pdf_puts(&state->info_obj, ")\n");
- /* CATALOG */
- pdf_putsi(&state->catalog_obj, "/Type /Catalog\n");
- pdf_putsi(&state->catalog_obj, "/Pages ");
- pdf_putint(&state->catalog_obj, state->pages_obj.id);
- pdf_puts(&state->catalog_obj, " 0 R\n");
- /* PAGES */
- pdf_putsi(&state->pages_obj, "/Type /Pages\n");
- pdf_putsi(&state->pages_obj, "/Kids [");
- pdf_putint(&state->pages_obj, state->page1_obj.id);
- pdf_puts(&state->pages_obj, " 0 R]\n");
- pdf_putsi(&state->pages_obj, "/Count 1\n");
- /* PAGE 1 */
- pdf_putsi(&state->page1_obj, "/Type /Page\n");
- pdf_putsi(&state->page1_obj, "/Parent ");
- pdf_putint(&state->page1_obj, state->pages_obj.id);
- pdf_puts(&state->page1_obj, " 0 R\n");
- pdf_putsi(&state->page1_obj, "/MediaBox [0 0 ");
- pdf_putint(&state->page1_obj, state->page_width);
- pdf_puts(&state->page1_obj, " ");
- pdf_putint(&state->page1_obj, state->page_height);
- pdf_puts(&state->page1_obj, "]\n");
- pdf_putsi(&state->page1_obj, "/Contents ");
- pdf_putint(&state->page1_obj, state->graph_stream.id);
- pdf_puts(&state->page1_obj, " 0 R\n");
- pdf_putsi(&state->page1_obj, "/Resources << /Font ");
- pdf_putint(&state->page1_obj, state->fontsdict_obj.id);
- pdf_puts(&state->page1_obj, " 0 R >>\n");
-}
-
-static void pdf_write_string_to_file(
- pdf_state *state,
- const char *text)
-{
- fputs(text, state->fp);
- state->pdf_file_pos += strlen(text);
-}
-
-static void pdf_write_buf_to_file(
- pdf_state *state,
- pdf_buffer *buf)
-{
- char tmp[40];
-
- buf->pdf_file_pos = state->pdf_file_pos;
- if (buf->is_obj) {
- snprintf(tmp, sizeof(tmp), "%d 0 obj\n", buf->id);
- pdf_write_string_to_file(state, tmp);
- }
- if (buf->is_dict)
- pdf_write_string_to_file(state, "<<\n");
- if (buf->is_stream) {
- snprintf(tmp, sizeof(tmp), "<< /Length %d >>\n", buf->current_size);
- pdf_write_string_to_file(state, tmp);
- pdf_write_string_to_file(state, "stream\n");
- }
- fwrite(buf->data, 1, buf->current_size, state->fp);
- state->pdf_file_pos += buf->current_size;
- if (buf->is_stream)
- pdf_write_string_to_file(state, "endstream\n");
- if (buf->is_dict)
- pdf_write_string_to_file(state, ">>\n");
- if (buf->is_obj)
- pdf_write_string_to_file(state, "endobj\n");
-}
-
-static void pdf_write_to_file(
- pdf_state *state)
-{
- pdf_buffer *buf = state->first_buffer;
- int xref_pos;
-
- state->pdf_file_pos = 0;
- pdf_write_buf_to_file(state, &state->pdf_header);
- while (buf) {
- if (buf->is_obj)
- pdf_write_buf_to_file(state, buf);
- buf = buf->next_buffer;
- }
- xref_pos = state->pdf_file_pos;
- fprintf(state->fp, "xref\n");
- fprintf(state->fp, "%d %d\n", 0, state->last_obj_id + 1);
- /* TOC lines must be exactly 20 bytes including \n */
- fprintf(state->fp, "%010d %05d f\x20\n", 0, 65535);
- for (buf = state->first_buffer; buf; buf = buf->next_buffer) {
- if (buf->is_obj)
- fprintf(state->fp, "%010d %05d n\x20\n", buf->pdf_file_pos, 0);
- }
- fprintf(state->fp, "trailer\n");
- fprintf(state->fp, "<<\n");
- fprintf(state->fp, "\t/Size %d\n", state->last_obj_id + 1);
- fprintf(state->fp, "\t/Root %d 0 R\n", state->catalog_obj.id);
- fprintf(state->fp, "\t/Info %d 0 R\n", state->info_obj.id);
- fprintf(state->fp, ">>\n");
- fprintf(state->fp, "startxref\n");
- fprintf(state->fp, "%d\n", xref_pos);
- fputs("%%EOF\n", state->fp);
-}
-
-static void pdf_free_resources(
- pdf_state *state)
-{
- pdf_buffer *buf = state->first_buffer;
-
- while (buf) {
- free(buf->data);
- buf->data = NULL;
- buf->alloc_size = buf->current_size = 0;
- buf = buf->next_buffer;
- }
- while (state->font_list) {
- pdf_font *next = state->font_list->next;
-
- free(state->font_list);
- state->font_list = next;
- }
-}
-
-int gfx_render_pdf(
- gfx_canvas_t *canvas,
- art_u32 width,
- art_u32 height,
- gfx_color_t UNUSED(background),
- FILE * fp)
-{
- struct pdf_state state;
-
- memset(&state, 0, sizeof(pdf_state));
- state.fp = fp;
- state.canvas = canvas;
- state.page_width = width;
- state.page_height = height;
- state.font_id = -1;
- state.font_size = -1;
- state.font_list = NULL;
- state.linecap = -1;
- state.linejoin = -1;
- pdf_init_document(&state);
- /*
- pdf_set_color(&state, background);
- fprintf(fp, "0 0 M 0 %d L %d %d L %d 0 L fill\n",
- height, width, height, width);
- */
- if (!state.has_failed)
- pdf_write_content(&state);
- if (!state.has_failed)
- pdf_setup_document(&state);
- if (!state.has_failed)
- pdf_write_to_file(&state);
- pdf_free_resources(&state);
- return state.has_failed ? -1 : 0;
+ double line_height;
+
+ cairo_user_to_device(cr, x, y);
+ line_width = cairo_get_line_width(cr);
+ line_height = line_width;
+ cairo_user_to_device_distance(cr, &line_width, &line_height);
+ line_width = line_width / 2.0 - (long) (line_width / 2.0);
+ line_height = line_height / 2.0 - (long) (line_height / 2.0);
+ *x = (double) ((long) (*x + 0.5)) + line_width;
+ *y = (double) ((long) (*y + 0.5)) + line_height;
+ cairo_device_to_user(cr, x, y);
+}
+
+/* gridfit_areas */
+
+void gfx_area_fit(
+ cairo_t * cr,
+ double *x,
+ double *y)
+{
+ cairo_user_to_device(cr, x, y);
+ *x = (double) ((long) (*x + 0.5));
+ *y = (double) ((long) (*y + 0.5));
+ cairo_device_to_user(cr, x, y);
}
diff --git a/src/rrd_gfx.h b/src/rrd_gfx.h
index dacdd694c9206801ff9f8cd677f22241e1bee9c4..c3cd1e3972b44a25e8dc573b3399aabfd8e280e5 100644 (file)
--- a/src/rrd_gfx.h
+++ b/src/rrd_gfx.h
* rrd_gfx.h generic graphics adapter library
****************************************************************************/
-#ifndef RRD_GFX_H
+#ifndef RRD_GFX_H
#define RRD_GFX_H
-#define LIBART_COMPILATION
-#define y0 libart_y0
-#define y1 libart_y1
-#define gamma libart_gamma
-#include <libart_lgpl/libart.h>
-#include <libart_lgpl/art_rgba.h>
-#include "art_rgba_svp.h"
-#undef gamma
-#undef y0
-#undef y1
+#define y0 cairo_y0
+#define y1 cairo_y1
+#define index cairo_index
+#include <cairo-pdf.h>
+#include <cairo-svg.h>
+#include <cairo-ps.h>
+#include <pango/pangocairo.h>
enum gfx_if_en { IF_PNG = 0, IF_SVG, IF_EPS, IF_PDF };
enum gfx_en { GFX_LINE = 0, GFX_AREA, GFX_TEXT };
enum gfx_h_align_en { GFX_H_NULL = 0, GFX_H_LEFT, GFX_H_RIGHT, GFX_H_CENTER };
enum gfx_v_align_en { GFX_V_NULL = 0, GFX_V_TOP, GFX_V_BOTTOM, GFX_V_CENTER };
-enum gfx_aa_type_en { AA_NORMAL = 0, AA_LIGHT, AA_NONE };
-typedef unsigned long gfx_color_t;
-
-typedef struct gfx_node_t {
- enum gfx_en type; /* type of graph element */
- gfx_color_t color; /* color of element 0xRRGGBBAA alpha 0xff is solid */
- double size; /* font size, line width */
- double dash_on, dash_off; /* dash line fragments lengths */
- int closed_path;
- int points;
- int points_max;
- char *filename; /* font or image filename */
- char *text;
- ArtVpath *path; /* path */
- double x, y; /* position */
- double angle; /* text angle */
- enum gfx_h_align_en halign; /* text alignement */
- enum gfx_v_align_en valign; /* text alignement */
- double tabwidth;
- struct gfx_node_t *next;
-} gfx_node_t;
-
-
-typedef struct gfx_canvas_t {
- struct gfx_node_t *firstnode;
- struct gfx_node_t *lastnode;
- enum gfx_if_en imgformat; /* image format */
- int interlaced; /* will the graph be interlaced? */
- double zoom; /* zoom for graph */
- double font_aa_threshold; /* no anti-aliasing for sizes <= */
- enum gfx_aa_type_en aa_type; /* anti-aliasing type (normal/light/none) */
-} gfx_canvas_t;
-
-gfx_canvas_t *gfx_new_canvas(
- void);
+
+/* cairo color components */
+typedef struct gfx_color_t {
+ double red;
+ double green;
+ double blue;
+ double alpha;
+} gfx_color_t;
+
/* create a new line */
-gfx_node_t *gfx_new_line(
- gfx_canvas_t *canvas,
+void gfx_line(
+ cairo_t * cr,
double X0,
double Y0,
double X1,
double width,
gfx_color_t color);
-gfx_node_t *gfx_new_dashed_line(
- gfx_canvas_t *canvas,
+void gfx_dashed_line(
+ cairo_t * cr,
double X0,
double Y0,
double X1,
double dash_off);
/* create a new area */
-gfx_node_t *gfx_new_area(
- gfx_canvas_t *canvas,
+void gfx_new_area(
+ cairo_t * cr,
double X0,
double Y0,
double X1,
gfx_color_t color);
/* add a point to a line or to an area */
-int gfx_add_point(
- gfx_node_t *node,
+void gfx_add_point(
+ cairo_t * cr,
double x,
double y);
/* close current path so it ends at the same point as it started */
void gfx_close_path(
- gfx_node_t *node);
+ cairo_t * cr);
/* create a text node */
-gfx_node_t *gfx_new_text(
- gfx_canvas_t *canvas,
+void gfx_text(
+ cairo_t * cr,
double x,
double y,
gfx_color_t color,
double angle,
enum gfx_h_align_en h_align,
enum gfx_v_align_en v_align,
- char *text);
+ const char *text);
/* measure width of a text string */
double gfx_get_text_width(
- gfx_canvas_t *canvas,
+ cairo_t * cr,
double start,
char *font,
double size,
double tabwidth,
- char *text,
- int rotation);
-
-/* save image to file */
-int gfx_render(
- gfx_canvas_t *canvas,
- art_u32 width,
- art_u32 height,
- gfx_color_t background,
- FILE * fo);
-
-/* free memory used by nodes this will also remove memory required for
- node chain and associated material */
-int gfx_destroy(
- gfx_canvas_t *canvas);
-
-
-/* PNG support*/
-int gfx_render_png(
- gfx_canvas_t *canvas,
- art_u32 width,
- art_u32 height,
- gfx_color_t background,
- FILE * fo);
-double gfx_get_text_width_libart(
- gfx_canvas_t *canvas,
- double start,
- char *font,
- double size,
- double tabwidth,
- char *text,
- int rotation);
-
-/* SVG support */
-int gfx_render_svg(
- gfx_canvas_t *canvas,
- art_u32 width,
- art_u32 height,
- gfx_color_t background,
- FILE * fo);
-
-/* EPS support */
-int gfx_render_eps(
- gfx_canvas_t *canvas,
- art_u32 width,
- art_u32 height,
- gfx_color_t background,
- FILE * fo);
-
-/* PDF support */
-int gfx_render_pdf(
- gfx_canvas_t *canvas,
- art_u32 width,
- art_u32 height,
- gfx_color_t background,
- FILE * fo);
+ char *text);
+
+/* convert color */
+gfx_color_t gfx_hex_to_col(
+ long unsigned int);
+void gfx_line_fit(
+ cairo_t *,
+ double *,
+ double *);
+void gfx_area_fit(
+ cairo_t *,
+ double *,
+ double *);
#endif
diff --git a/src/rrd_graph.c b/src/rrd_graph.c
index f9c7a1141db3eb958db373b617e57eaeaa67ba4f..d23d071683094225157919f9932eb7acd96a129d 100644 (file)
--- a/src/rrd_graph.c
+++ b/src/rrd_graph.c
gfx_color_t graph_col[] = /* default colors */
-{ 0xFFFFFFFF, /* canvas */
- 0xF0F0F0FF, /* background */
- 0xD0D0D0FF, /* shade A */
- 0xA0A0A0FF, /* shade B */
- 0x90909080, /* grid */
- 0xE0505080, /* major grid */
- 0x000000FF, /* font */
- 0x802020FF, /* arrow */
- 0x202020FF, /* axis */
- 0x000000FF /* frame */
+{
+ {1.00, 1.00, 1.00, 1.00}, /* canvas */
+ {0.95, 0.95, 0.95, 1.00}, /* background */
+ {0.81, 0.81, 0.81, 1.00}, /* shade A */
+ {0.62, 0.62, 0.62, 1.00}, /* shade B */
+ {0.56, 0.56, 0.56, 0.75}, /* grid */
+ {0.87, 0.31, 0.31, 0.60}, /* major grid */
+ {0.00, 0.00, 0.00, 1.00}, /* font */
+ {0.50, 0.12, 0.12, 1.00}, /* arrow */
+ {0.12, 0.12, 0.12, 1.00}, /* axis */
+ {0.00, 0.00, 0.00, 1.00} /* frame */
};
char *string)
{
- conv_if(PRINT, GF_PRINT)
- conv_if(GPRINT, GF_GPRINT)
- conv_if(COMMENT, GF_COMMENT)
- conv_if(HRULE, GF_HRULE)
- conv_if(VRULE, GF_VRULE)
- conv_if(LINE, GF_LINE)
- conv_if(AREA, GF_AREA)
- conv_if(STACK, GF_STACK)
- conv_if(TICK, GF_TICK)
- conv_if(DEF, GF_DEF)
- conv_if(CDEF, GF_CDEF)
- conv_if(VDEF, GF_VDEF)
-#ifdef WITH_PIECHART
- conv_if(PART, GF_PART)
-#endif
- conv_if(XPORT, GF_XPORT)
- conv_if(SHIFT, GF_SHIFT)
-
- return (-1);
+ conv_if(PRINT, GF_PRINT);
+ conv_if(GPRINT, GF_GPRINT);
+ conv_if(COMMENT, GF_COMMENT);
+ conv_if(HRULE, GF_HRULE);
+ conv_if(VRULE, GF_VRULE);
+ conv_if(LINE, GF_LINE);
+ conv_if(AREA, GF_AREA);
+ conv_if(STACK, GF_STACK);
+ conv_if(TICK, GF_TICK);
+ conv_if(DEF, GF_DEF);
+ conv_if(CDEF, GF_CDEF);
+ conv_if(VDEF, GF_VDEF);
+ conv_if(XPORT, GF_XPORT);
+ conv_if(SHIFT, GF_SHIFT);
+
+ return (-1);
}
enum gfx_if_en if_conv(
char *string)
{
- conv_if(PNG, IF_PNG)
- conv_if(SVG, IF_SVG)
- conv_if(EPS, IF_EPS)
- conv_if(PDF, IF_PDF)
+ conv_if(PNG, IF_PNG);
+ conv_if(SVG, IF_SVG);
+ conv_if(EPS, IF_EPS);
+ conv_if(PDF, IF_PDF);
- return (-1);
+ return (-1);
}
enum tmt_en tmt_conv(
char *string)
{
- conv_if(SECOND, TMT_SECOND)
- conv_if(MINUTE, TMT_MINUTE)
- conv_if(HOUR, TMT_HOUR)
- conv_if(DAY, TMT_DAY)
- conv_if(WEEK, TMT_WEEK)
- conv_if(MONTH, TMT_MONTH)
- conv_if(YEAR, TMT_YEAR)
- return (-1);
+ conv_if(SECOND, TMT_SECOND);
+ conv_if(MINUTE, TMT_MINUTE);
+ conv_if(HOUR, TMT_HOUR);
+ conv_if(DAY, TMT_DAY);
+ conv_if(WEEK, TMT_WEEK);
+ conv_if(MONTH, TMT_MONTH);
+ conv_if(YEAR, TMT_YEAR);
+ return (-1);
}
enum grc_en grc_conv(
char *string)
{
- conv_if(BACK, GRC_BACK)
- conv_if(CANVAS, GRC_CANVAS)
- conv_if(SHADEA, GRC_SHADEA)
- conv_if(SHADEB, GRC_SHADEB)
- conv_if(GRID, GRC_GRID)
- conv_if(MGRID, GRC_MGRID)
- conv_if(FONT, GRC_FONT)
- conv_if(ARROW, GRC_ARROW)
- conv_if(AXIS, GRC_AXIS)
- conv_if(FRAME, GRC_FRAME)
+ conv_if(BACK, GRC_BACK);
+ conv_if(CANVAS, GRC_CANVAS);
+ conv_if(SHADEA, GRC_SHADEA);
+ conv_if(SHADEB, GRC_SHADEB);
+ conv_if(GRID, GRC_GRID);
+ conv_if(MGRID, GRC_MGRID);
+ conv_if(FONT, GRC_FONT);
+ conv_if(ARROW, GRC_ARROW);
+ conv_if(AXIS, GRC_AXIS);
+ conv_if(FRAME, GRC_FRAME);
- return -1;
+ return -1;
}
enum text_prop_en text_prop_conv(
char *string)
{
- conv_if(DEFAULT, TEXT_PROP_DEFAULT)
- conv_if(TITLE, TEXT_PROP_TITLE)
- conv_if(AXIS, TEXT_PROP_AXIS)
- conv_if(UNIT, TEXT_PROP_UNIT)
- conv_if(LEGEND, TEXT_PROP_LEGEND)
- return -1;
+ conv_if(DEFAULT, TEXT_PROP_DEFAULT);
+ conv_if(TITLE, TEXT_PROP_TITLE);
+ conv_if(AXIS, TEXT_PROP_AXIS);
+ conv_if(UNIT, TEXT_PROP_UNIT);
+ conv_if(LEGEND, TEXT_PROP_LEGEND);
+ return -1;
}
free(im->gdes[i].rpnp);
}
free(im->gdes);
- gfx_destroy(im->canvas);
+ if (im->surface)
+ cairo_surface_destroy(im->surface);
return 0;
}
#endif
}
+
void apply_gridfit(
image_desc_t *im)
{
/* no interleg space if string ends in \g */
fill += legspace[i];
}
- fill += gfx_get_text_width(im->canvas, fill + border,
+ fill += gfx_get_text_width(im->cr, fill + border,
im->text_prop[TEXT_PROP_LEGEND].
font,
im->text_prop[TEXT_PROP_LEGEND].
size, im->tabwidth,
- im->gdes[i].legend, 0);
+ im->gdes[i].legend);
leg_c++;
} else {
legspace[i] = 0;
im->gdes[ii].leg_x = leg_x;
im->gdes[ii].leg_y = leg_y;
leg_x +=
- gfx_get_text_width(im->canvas, leg_x,
+ gfx_get_text_width(im->cr, leg_x,
im->text_prop[TEXT_PROP_LEGEND].
font,
im->text_prop[TEXT_PROP_LEGEND].
size, im->tabwidth,
- im->gdes[ii].legend, 0)
+ im->gdes[ii].legend)
+ legspace[ii]
+ glue;
}
}
nlabels++;
- gfx_new_text(im->canvas,
- X0 - im->text_prop[TEXT_PROP_AXIS].size, Y0,
- im->graph_col[GRC_FONT],
- im->text_prop[TEXT_PROP_AXIS].font,
- im->text_prop[TEXT_PROP_AXIS].size,
- im->tabwidth, 0.0, GFX_H_RIGHT, GFX_V_CENTER,
- graph_label);
- gfx_new_dashed_line(im->canvas,
- X0 - 2, Y0,
- X1 + 2, Y0,
- MGRIDWIDTH, im->graph_col[GRC_MGRID],
- im->grid_dash_on, im->grid_dash_off);
+ gfx_text(im->cr,
+ X0 - im->text_prop[TEXT_PROP_AXIS].size, Y0,
+ im->graph_col[GRC_FONT],
+ im->text_prop[TEXT_PROP_AXIS].font,
+ im->text_prop[TEXT_PROP_AXIS].size,
+ im->tabwidth, 0.0, GFX_H_RIGHT, GFX_V_CENTER,
+ graph_label);
+ gfx_line(im->cr,
+ X0 - 2, Y0,
+ X0, Y0, MGRIDWIDTH, im->graph_col[GRC_MGRID]);
+ gfx_line(im->cr,
+ X1, Y0,
+ X1 + 2, Y0, MGRIDWIDTH, im->graph_col[GRC_MGRID]);
+ gfx_dashed_line(im->cr,
+ X0 - 2, Y0,
+ X1 + 2, Y0,
+ MGRIDWIDTH, im->graph_col[GRC_MGRID],
+ im->grid_dash_on, im->grid_dash_off);
} else if (!(im->extra_flags & NOMINOR)) {
- gfx_new_dashed_line(im->canvas,
- X0 - 1, Y0,
- X1 + 1, Y0,
- GRIDWIDTH, im->graph_col[GRC_GRID],
- im->grid_dash_on, im->grid_dash_off);
+ gfx_line(im->cr,
+ X0 - 2, Y0,
+ X0, Y0, GRIDWIDTH, im->graph_col[GRC_GRID]);
+ gfx_line(im->cr,
+ X1, Y0,
+ X1 + 2, Y0, GRIDWIDTH, im->graph_col[GRC_GRID]);
+ gfx_dashed_line(im->cr,
+ X0 - 1, Y0,
+ X1 + 1, Y0,
+ GRIDWIDTH, im->graph_col[GRC_GRID],
+ im->grid_dash_on, im->grid_dash_off);
}
}
break;
/* major grid line */
- gfx_new_dashed_line(im->canvas,
- X0 - 2, Y0,
- X1 + 2, Y0,
- MGRIDWIDTH, im->graph_col[GRC_MGRID],
- im->grid_dash_on, im->grid_dash_off);
+
+ gfx_line(im->cr,
+ X0 - 2, Y0, X0, Y0, MGRIDWIDTH, im->graph_col[GRC_MGRID]);
+ gfx_line(im->cr,
+ X1, Y0, X1 + 2, Y0, MGRIDWIDTH, im->graph_col[GRC_MGRID]);
+
+
+ gfx_dashed_line(im->cr,
+ X0 - 2, Y0,
+ X1 + 2, Y0,
+ MGRIDWIDTH, im->graph_col[GRC_MGRID],
+ im->grid_dash_on, im->grid_dash_off);
/* label */
if (im->extra_flags & FORCE_UNITS_SI) {
sprintf(graph_label, "%3.0f %c", pvalue, symbol);
} else
sprintf(graph_label, "%3.0e", value);
- gfx_new_text(im->canvas,
- X0 - im->text_prop[TEXT_PROP_AXIS].size, Y0,
- im->graph_col[GRC_FONT],
- im->text_prop[TEXT_PROP_AXIS].font,
- im->text_prop[TEXT_PROP_AXIS].size,
- im->tabwidth, 0.0, GFX_H_RIGHT, GFX_V_CENTER,
- graph_label);
+ gfx_text(im->cr,
+ X0 - im->text_prop[TEXT_PROP_AXIS].size, Y0,
+ im->graph_col[GRC_FONT],
+ im->text_prop[TEXT_PROP_AXIS].font,
+ im->text_prop[TEXT_PROP_AXIS].size,
+ im->tabwidth, 0.0, GFX_H_RIGHT, GFX_V_CENTER, graph_label);
/* minor grid */
if (mid < 4 && exfrac == 1) {
break;
/* draw lines */
- gfx_new_dashed_line(im->canvas,
- X0 - 1, Y0,
- X1 + 1, Y0,
- GRIDWIDTH, im->graph_col[GRC_GRID],
- im->grid_dash_on, im->grid_dash_off);
+ gfx_line(im->cr,
+ X0 - 2, Y0,
+ X0, Y0, GRIDWIDTH, im->graph_col[GRC_GRID]);
+ gfx_line(im->cr,
+ X1, Y0,
+ X1 + 2, Y0, GRIDWIDTH, im->graph_col[GRC_GRID]);
+ gfx_dashed_line(im->cr,
+ X0 - 1, Y0,
+ X1 + 1, Y0,
+ GRIDWIDTH, im->graph_col[GRC_GRID],
+ im->grid_dash_on, im->grid_dash_off);
}
} else if (exfrac > 1) {
for (i = val_exp - exfrac / 3 * 2; i < val_exp; i += exfrac / 3) {
break;
/* draw lines */
- gfx_new_dashed_line(im->canvas,
- X0 - 1, Y0,
- X1 + 1, Y0,
- GRIDWIDTH, im->graph_col[GRC_GRID],
- im->grid_dash_on, im->grid_dash_off);
+ gfx_line(im->cr,
+ X0 - 2, Y0,
+ X0, Y0, GRIDWIDTH, im->graph_col[GRC_GRID]);
+ gfx_line(im->cr,
+ X1, Y0,
+ X1 + 2, Y0, GRIDWIDTH, im->graph_col[GRC_GRID]);
+ gfx_dashed_line(im->cr,
+ X0 - 1, Y0,
+ X1 + 1, Y0,
+ GRIDWIDTH, im->graph_col[GRC_GRID],
+ im->grid_dash_on, im->grid_dash_off);
}
}
break;
/* draw lines */
- gfx_new_dashed_line(im->canvas,
- X0 - 1, Y0,
- X1 + 1, Y0,
- GRIDWIDTH, im->graph_col[GRC_GRID],
- im->grid_dash_on, im->grid_dash_off);
+ gfx_line(im->cr,
+ X0 - 2, Y0, X0, Y0, GRIDWIDTH, im->graph_col[GRC_GRID]);
+ gfx_line(im->cr,
+ X1, Y0, X1 + 2, Y0, GRIDWIDTH, im->graph_col[GRC_GRID]);
+ gfx_dashed_line(im->cr,
+ X0 - 1, Y0,
+ X1 + 1, Y0,
+ GRIDWIDTH, im->graph_col[GRC_GRID],
+ im->grid_dash_on, im->grid_dash_off);
}
}
/* fancy minor gridlines */
break;
/* draw lines */
- gfx_new_dashed_line(im->canvas,
- X0 - 1, Y0,
- X1 + 1, Y0,
- GRIDWIDTH, im->graph_col[GRC_GRID],
- im->grid_dash_on, im->grid_dash_off);
+ gfx_line(im->cr,
+ X0 - 2, Y0, X0, Y0, GRIDWIDTH, im->graph_col[GRC_GRID]);
+ gfx_line(im->cr,
+ X1, Y0, X1 + 2, Y0, GRIDWIDTH, im->graph_col[GRC_GRID]);
+ gfx_dashed_line(im->cr,
+ X0 - 1, Y0,
+ X1 + 1, Y0,
+ GRIDWIDTH, im->graph_col[GRC_GRID],
+ im->grid_dash_on, im->grid_dash_off);
}
}
if (ti == timajor)
continue; /* skip as falls on major grid line */
X0 = xtr(im, ti);
- gfx_new_dashed_line(im->canvas, X0, Y0 + 1, X0, Y1 - 1, GRIDWIDTH,
- im->graph_col[GRC_GRID],
- im->grid_dash_on, im->grid_dash_off);
+ gfx_line(im->cr, X0, Y1 - 2, X0, Y1, GRIDWIDTH,
+ im->graph_col[GRC_GRID]);
+ gfx_line(im->cr, X0, Y0, X0, Y0 + 2, GRIDWIDTH,
+ im->graph_col[GRC_GRID]);
+ gfx_dashed_line(im->cr, X0, Y1 - 1, X0, Y0 + 1, GRIDWIDTH,
+ im->graph_col[GRC_GRID],
+ im->grid_dash_on, im->grid_dash_off);
}
}
if (ti < im->start || ti > im->end)
continue;
X0 = xtr(im, ti);
- gfx_new_dashed_line(im->canvas, X0, Y0 + 3, X0, Y1 - 2, MGRIDWIDTH,
- im->graph_col[GRC_MGRID],
- im->grid_dash_on, im->grid_dash_off);
+ gfx_line(im->cr, X0, Y1 - 2, X0, Y1, MGRIDWIDTH,
+ im->graph_col[GRC_MGRID]);
+ gfx_line(im->cr, X0, Y0, X0, Y0 + 3, MGRIDWIDTH,
+ im->graph_col[GRC_MGRID]);
+ gfx_dashed_line(im->cr, X0, Y1 - 2, X0, Y0 + 3, MGRIDWIDTH,
+ im->graph_col[GRC_MGRID],
+ im->grid_dash_on, im->grid_dash_off);
}
/* paint the labels below the graph */
#else
# error "your libc has no strftime I guess we'll abort the exercise here."
#endif
- gfx_new_text(im->canvas,
- xtr(im, tilab),
- Y0 + im->text_prop[TEXT_PROP_AXIS].size * 1.4 + 5,
- im->graph_col[GRC_FONT],
- im->text_prop[TEXT_PROP_AXIS].font,
- im->text_prop[TEXT_PROP_AXIS].size, im->tabwidth, 0.0,
- GFX_H_CENTER, GFX_V_BOTTOM, graph_label);
+ gfx_text(im->cr,
+ xtr(im, tilab),
+ Y0 + 1,
+ im->graph_col[GRC_FONT],
+ im->text_prop[TEXT_PROP_AXIS].font,
+ im->text_prop[TEXT_PROP_AXIS].size, im->tabwidth, 0.0,
+ GFX_H_CENTER, GFX_V_TOP, graph_label);
}
image_desc_t *im)
{
/* draw x and y axis */
- /* gfx_new_line ( im->canvas, im->xorigin+im->xsize,im->yorigin,
+ /* gfx_line ( im->canvas, im->xorigin+im->xsize,im->yorigin,
im->xorigin+im->xsize,im->yorigin-im->ysize,
GRIDWIDTH, im->graph_col[GRC_AXIS]);
- gfx_new_line ( im->canvas, im->xorigin,im->yorigin-im->ysize,
+ gfx_line ( im->canvas, im->xorigin,im->yorigin-im->ysize,
im->xorigin+im->xsize,im->yorigin-im->ysize,
GRIDWIDTH, im->graph_col[GRC_AXIS]); */
- gfx_new_line(im->canvas, im->xorigin - 4, im->yorigin,
- im->xorigin + im->xsize + 4, im->yorigin,
- MGRIDWIDTH, im->graph_col[GRC_AXIS]);
+ gfx_line(im->cr, im->xorigin - 4, im->yorigin,
+ im->xorigin + im->xsize + 4, im->yorigin,
+ MGRIDWIDTH, im->graph_col[GRC_AXIS]);
- gfx_new_line(im->canvas, im->xorigin, im->yorigin + 4,
- im->xorigin, im->yorigin - im->ysize - 4,
- MGRIDWIDTH, im->graph_col[GRC_AXIS]);
+ gfx_line(im->cr, im->xorigin, im->yorigin + 4,
+ im->xorigin, im->yorigin - im->ysize - 4,
+ MGRIDWIDTH, im->graph_col[GRC_AXIS]);
/* arrow for X and Y axis direction */
- gfx_new_area(im->canvas, im->xorigin + im->xsize + 2, im->yorigin - 2, im->xorigin + im->xsize + 2, im->yorigin + 3, im->xorigin + im->xsize + 7, im->yorigin + 0.5, /* LINEOFFSET */
+ gfx_new_area(im->cr, im->xorigin + im->xsize + 2, im->yorigin - 2, im->xorigin + im->xsize + 2, im->yorigin + 3, im->xorigin + im->xsize + 7, im->yorigin + 0.5, /* LINEOFFSET */
im->graph_col[GRC_ARROW]);
+ gfx_close_path(im->cr);
- gfx_new_area(im->canvas, im->xorigin - 2, im->yorigin - im->ysize - 2, im->xorigin + 3, im->yorigin - im->ysize - 2, im->xorigin + 0.5, im->yorigin - im->ysize - 7, /* LINEOFFSET */
+ gfx_new_area(im->cr, im->xorigin - 2, im->yorigin - im->ysize - 2, im->xorigin + 3, im->yorigin - im->ysize - 2, im->xorigin + 0.5, im->yorigin - im->ysize - 7, /* LINEOFFSET */
im->graph_col[GRC_ARROW]);
+ gfx_close_path(im->cr);
+
}
long i;
int res = 0;
double X0, Y0; /* points for filled graph and more */
- gfx_node_t *node;
+ struct gfx_color_t water_color;
/* draw 3d border */
- node = gfx_new_area(im->canvas, 0, im->yimg,
- 2, im->yimg - 2, 2, 2, im->graph_col[GRC_SHADEA]);
- gfx_add_point(node, im->ximg - 2, 2);
- gfx_add_point(node, im->ximg, 0);
- gfx_add_point(node, 0, 0);
-/* gfx_add_point( node , 0,im->yimg ); */
-
- node = gfx_new_area(im->canvas, 2, im->yimg - 2,
- im->ximg - 2, im->yimg - 2,
- im->ximg - 2, 2, im->graph_col[GRC_SHADEB]);
- gfx_add_point(node, im->ximg, 0);
- gfx_add_point(node, im->ximg, im->yimg);
- gfx_add_point(node, 0, im->yimg);
-/* gfx_add_point( node , 0,im->yimg ); */
+ gfx_new_area(im->cr, 0, im->yimg,
+ 2, im->yimg - 2, 2, 2, im->graph_col[GRC_SHADEA]);
+ gfx_add_point(im->cr, im->ximg - 2, 2);
+ gfx_add_point(im->cr, im->ximg, 0);
+ gfx_add_point(im->cr, 0, 0);
+ gfx_close_path(im->cr);
+
+ gfx_new_area(im->cr, 2, im->yimg - 2,
+ im->ximg - 2, im->yimg - 2,
+ im->ximg - 2, 2, im->graph_col[GRC_SHADEB]);
+ gfx_add_point(im->cr, im->ximg, 0);
+ gfx_add_point(im->cr, im->ximg, im->yimg);
+ gfx_add_point(im->cr, 0, im->yimg);
+ gfx_close_path(im->cr);
if (im->draw_x_grid == 1)
if (!res) {
char *nodata = "No Data found";
- gfx_new_text(im->canvas, im->ximg / 2,
- (2 * im->yorigin - im->ysize) / 2,
- im->graph_col[GRC_FONT],
- im->text_prop[TEXT_PROP_AXIS].font,
- im->text_prop[TEXT_PROP_AXIS].size, im->tabwidth,
- 0.0, GFX_H_CENTER, GFX_V_CENTER, nodata);
+ gfx_text(im->cr, im->ximg / 2,
+ (2 * im->yorigin - im->ysize) / 2,
+ im->graph_col[GRC_FONT],
+ im->text_prop[TEXT_PROP_AXIS].font,
+ im->text_prop[TEXT_PROP_AXIS].size, im->tabwidth,
+ 0.0, GFX_H_CENTER, GFX_V_CENTER, nodata);
}
}
/* yaxis unit description */
- gfx_new_text(im->canvas,
- 10, (im->yorigin - im->ysize / 2),
- im->graph_col[GRC_FONT],
- im->text_prop[TEXT_PROP_UNIT].font,
- im->text_prop[TEXT_PROP_UNIT].size, im->tabwidth,
- RRDGRAPH_YLEGEND_ANGLE,
- GFX_H_LEFT, GFX_V_CENTER, im->ylegend);
+ gfx_text(im->cr,
+ 10, (im->yorigin - im->ysize / 2),
+ im->graph_col[GRC_FONT],
+ im->text_prop[TEXT_PROP_UNIT].font,
+ im->text_prop[TEXT_PROP_UNIT].size, im->tabwidth,
+ RRDGRAPH_YLEGEND_ANGLE, GFX_H_CENTER, GFX_V_CENTER, im->ylegend);
/* graph title */
- gfx_new_text(im->canvas,
- im->ximg / 2, im->text_prop[TEXT_PROP_TITLE].size * 1.3 + 4,
- im->graph_col[GRC_FONT],
- im->text_prop[TEXT_PROP_TITLE].font,
- im->text_prop[TEXT_PROP_TITLE].size, im->tabwidth, 0.0,
- GFX_H_CENTER, GFX_V_CENTER, im->title);
+ gfx_text(im->cr,
+ im->ximg / 2, 4,
+ im->graph_col[GRC_FONT],
+ im->text_prop[TEXT_PROP_TITLE].font,
+ im->text_prop[TEXT_PROP_TITLE].size, im->tabwidth, 0.0,
+ GFX_H_CENTER, GFX_V_TOP, im->title);
/* rrdtool 'logo' */
- gfx_new_text(im->canvas,
- im->ximg - 7, 7,
- (im->graph_col[GRC_FONT] & 0xffffff00) | 0x00000044,
- im->text_prop[TEXT_PROP_AXIS].font,
- 5.5, im->tabwidth, 270,
- GFX_H_RIGHT, GFX_V_TOP, "RRDTOOL / TOBI OETIKER");
+ water_color = im->graph_col[GRC_FONT];
+ water_color.alpha = 0.3;
+ gfx_text(im->cr,
+ im->ximg - 4, 7,
+ water_color,
+ im->text_prop[TEXT_PROP_AXIS].font,
+ 5.5, im->tabwidth, -90,
+ GFX_H_LEFT, GFX_V_TOP, "RRDTOOL / TOBI OETIKER");
/* graph watermark */
if (im->watermark[0] != '\0') {
- gfx_new_text(im->canvas,
- im->ximg / 2, im->yimg - 6,
- (im->graph_col[GRC_FONT] & 0xffffff00) | 0x00000044,
- im->text_prop[TEXT_PROP_AXIS].font,
- 5.5, im->tabwidth, 0,
- GFX_H_CENTER, GFX_V_BOTTOM, im->watermark);
+ gfx_text(im->cr,
+ im->ximg / 2, im->yimg - 6,
+ water_color,
+ im->text_prop[TEXT_PROP_AXIS].font,
+ 5.5, im->tabwidth, 0,
+ GFX_H_CENTER, GFX_V_BOTTOM, im->watermark);
}
/* graph labels */
/* im->gdes[i].leg_y is the bottom of the legend */
X0 = im->gdes[i].leg_x;
Y0 = im->gdes[i].leg_y;
- gfx_new_text(im->canvas, X0, Y0,
- im->graph_col[GRC_FONT],
- im->text_prop[TEXT_PROP_LEGEND].font,
- im->text_prop[TEXT_PROP_LEGEND].size,
- im->tabwidth, 0.0, GFX_H_LEFT, GFX_V_BOTTOM,
- im->gdes[i].legend);
+ gfx_text(im->cr, X0, Y0,
+ im->graph_col[GRC_FONT],
+ im->text_prop[TEXT_PROP_LEGEND].font,
+ im->text_prop[TEXT_PROP_LEGEND].size,
+ im->tabwidth, 0.0, GFX_H_LEFT, GFX_V_BOTTOM,
+ im->gdes[i].legend);
/* The legend for GRAPH items starts with "M " to have
enough space for the box */
if (im->gdes[i].gf != GF_PRINT &&
im->gdes[i].gf != GF_GPRINT && im->gdes[i].gf != GF_COMMENT) {
int boxH, boxV;
- boxH = gfx_get_text_width(im->canvas, 0,
+ boxH = gfx_get_text_width(im->cr, 0,
im->text_prop[TEXT_PROP_LEGEND].
font,
im->text_prop[TEXT_PROP_LEGEND].
- size, im->tabwidth, "o", 0) * 1.2;
+ size, im->tabwidth, "o") * 1.2;
boxV = boxH * 1.1;
+ /* shift the box up a bit */
+ Y0 -= boxV * 0.3;
+
/* make sure transparent colors show up the same way as in the graph */
- node = gfx_new_area(im->canvas,
- X0, Y0 - boxV,
- X0, Y0,
- X0 + boxH, Y0, im->graph_col[GRC_BACK]);
- gfx_add_point(node, X0 + boxH, Y0 - boxV);
-
- node = gfx_new_area(im->canvas,
- X0, Y0 - boxV,
- X0, Y0, X0 + boxH, Y0, im->gdes[i].col);
- gfx_add_point(node, X0 + boxH, Y0 - boxV);
- node = gfx_new_line(im->canvas,
- X0, Y0 - boxV,
- X0, Y0, 1.0, im->graph_col[GRC_FRAME]);
- gfx_add_point(node, X0 + boxH, Y0);
- gfx_add_point(node, X0 + boxH, Y0 - boxV);
- gfx_close_path(node);
+
+ gfx_new_area(im->cr,
+ X0, Y0 - boxV,
+ X0, Y0, X0 + boxH, Y0, im->graph_col[GRC_BACK]);
+ gfx_add_point(im->cr, X0 + boxH, Y0 - boxV);
+ gfx_close_path(im->cr);
+
+ gfx_new_area(im->cr,
+ X0, Y0 - boxV,
+ X0, Y0, X0 + boxH, Y0, im->gdes[i].col);
+ gfx_add_point(im->cr, X0 + boxH, Y0 - boxV);
+ gfx_close_path(im->cr);
+
+ gfx_line(im->cr,
+ X0, Y0 - boxV,
+ X0, Y0, 1.0, im->graph_col[GRC_FRAME]);
+ gfx_line(im->cr,
+ X0, Y0,
+ X0 + boxH, Y0, 1.0, im->graph_col[GRC_FRAME]);
+ gfx_line(im->cr,
+ X0 + boxH, Y0,
+ X0 + boxH, Y0 - boxV, 1.0, im->graph_col[GRC_FRAME]);
+ gfx_line(im->cr,
+ X0 + boxH, Y0 - boxV,
+ X0, Y0 - boxV, 1.0, im->graph_col[GRC_FRAME]);
}
}
}
return 0;
if ((fd = fopen(im->graphfile, "rb")) == NULL)
return 0; /* the file does not exist */
- switch (im->canvas->imgformat) {
+ switch (im->imgformat) {
case IF_PNG:
size = PngSize(fd, &(im->ximg), &(im->yimg));
break;
return size;
}
-#ifdef WITH_PIECHART
-void pie_part(
- image_desc_t *im,
- gfx_color_t color,
- double PieCenterX,
- double PieCenterY,
- double Radius,
- double startangle,
- double endangle)
-{
- gfx_node_t *node;
- double angle;
- double step = M_PI / 50; /* Number of iterations for the circle;
- ** 10 is definitely too low, more than
- ** 50 seems to be overkill
- */
-
- /* Strange but true: we have to work clockwise or else
- ** anti aliasing nor transparency don't work.
- **
- ** This test is here to make sure we do it right, also
- ** this makes the for...next loop more easy to implement.
- ** The return will occur if the user enters a negative number
- ** (which shouldn't be done according to the specs) or if the
- ** programmers do something wrong (which, as we all know, never
- ** happens anyway :)
- */
- if (endangle < startangle)
- return;
-
- /* Hidden feature: Radius decreases each full circle */
- angle = startangle;
- while (angle >= 2 * M_PI) {
- angle -= 2 * M_PI;
- Radius *= 0.8;
- }
-
- node = gfx_new_area(im->canvas,
- PieCenterX + sin(startangle) * Radius,
- PieCenterY - cos(startangle) * Radius,
- PieCenterX,
- PieCenterY,
- PieCenterX + sin(endangle) * Radius,
- PieCenterY - cos(endangle) * Radius, color);
- for (angle = endangle; angle - startangle >= step; angle -= step) {
- gfx_add_point(node,
- PieCenterX + sin(angle) * Radius,
- PieCenterY - cos(angle) * Radius);
- }
-}
-
-#endif
int graph_size_location(
image_desc_t *im,
- int elements
-#ifdef WITH_PIECHART
- ,
- int piechart
-#endif
- )
+ int elements)
{
/* The actual size of the image to draw is determined from
** several sources. The size given on the command line is
*/
int Xvertical = 0, Ytitle = 0, Xylabel = 0, Xmain = 0, Ymain = 0,
-#ifdef WITH_PIECHART
- Xpie = 0, Ypie = 0,
-#endif
- Yxlabel = 0,
-#if 0
- Xlegend = 0, Ylegend = 0,
-#endif
- Xspacing = 15, Yspacing = 15, Ywatermark = 4;
+ Yxlabel = 0, Xspacing = 15, Yspacing = 15, Ywatermark = 4;
if (im->extra_flags & ONLY_GRAPH) {
im->xorigin = 0;
Yxlabel = im->text_prop[TEXT_PROP_AXIS].size * 2.5;
}
if (im->draw_y_grid || im->forceleftspace) {
- Xylabel = gfx_get_text_width(im->canvas, 0,
+ Xylabel = gfx_get_text_width(im->cr, 0,
im->text_prop[TEXT_PROP_AXIS].font,
im->text_prop[TEXT_PROP_AXIS].size,
- im->tabwidth,
- "0", 0) * im->unitslength;
+ im->tabwidth, "0") * im->unitslength;
}
}
im->yorigin += Ytitle;
-#ifdef WITH_PIECHART
- if (piechart) {
- im->piesize = im->xsize < im->ysize ? im->xsize : im->ysize;
- Xpie = im->piesize;
- Ypie = im->piesize;
- }
-#endif
-
/* Now calculate the total size. Insert some spacing where
desired. im->xorigin and im->yorigin need to correspond
with the lower left corner of the main graph area or, if
if (Xmain)
Xmain -= Xspacing; /* put space between main graph area and right edge */
-#ifdef WITH_PIECHART
- Xmain -= Xpie; /* remove pie width from main graph area */
- if (Xpie)
- Xmain -= Xspacing; /* put space between pie and main graph area */
-#endif
-
im->xorigin = Xspacing + Xylabel;
/* the length of the title should not influence with width of the graph
** of the legend and the axis labels.
*/
- if (im->extra_flags & NOLEGEND)
- {
+ if (im->extra_flags & NOLEGEND) {
/* set dimensions correctly if using full size mode with no legend */
- im->yorigin = im->yimg - im->text_prop[TEXT_PROP_AXIS].size * 2.5 - Yspacing;
+ im->yorigin =
+ im->yimg - im->text_prop[TEXT_PROP_AXIS].size * 2.5 -
+ Yspacing;
Ymain = im->yorigin;
- } else
- {
+ } else {
/* Determine where to place the legends onto the image.
- ** Set Ymain and adjust im->yorigin to match the space requirements.
- */
+ ** Set Ymain and adjust im->yorigin to match the space requirements.
+ */
if (leg_place(im, &Ymain) == -1)
- return -1;
+ return -1;
}
-#ifdef WITH_PIECHART
- /* if (im->yimg < Ypie) im->yimg = Ypie; * not sure what do about this */
-#endif
/* remove title space *or* some padding above the graph from the main graph area */
if (Ytitle) {
Xmain = im->xsize;
Ymain = im->ysize;
}
-#ifdef WITH_PIECHART
- if (piechart) {
- im->piesize = im->xsize < im->ysize ? im->xsize : im->ysize;
- Xpie = im->piesize;
- Ypie = im->piesize;
- }
-#endif
-
/* Now calculate the total size. Insert some spacing where
desired. im->xorigin and im->yorigin need to correspond
with the lower left corner of the main graph area or, if
*/
im->ximg = Xylabel + Xmain + 2 * Xspacing;
-#ifdef WITH_PIECHART
- im->ximg += Xpie;
-#endif
-
if (Xmain)
im->ximg += Xspacing;
-#ifdef WITH_PIECHART
- if (Xpie)
- im->ximg += Xspacing;
-#endif
im->xorigin = Xspacing + Xylabel;
im->yimg = Ymain + Yxlabel;
-#ifdef WITH_PIECHART
- if (im->yimg < Ypie)
- im->yimg = Ypie;
-#endif
im->yorigin = im->yimg - Yxlabel;
}
}
-#if 0
- if (Xlegend > im->ximg) {
- im->ximg = Xlegend;
- /* reposition Pie */
- }
-#endif
-
-#ifdef WITH_PIECHART
- /* The pie is placed in the upper right hand corner,
- ** just below the title (if any) and with sufficient
- ** padding.
- */
- if (elements) {
- im->pie_x = im->ximg - Xspacing - Xpie / 2;
- im->pie_y = im->yorigin - Ymain + Ypie / 2;
- } else {
- im->pie_x = im->ximg / 2;
- im->pie_y = im->yorigin - Ypie / 2;
- }
-#endif
-
ytr(im, DNAN);
return 0;
}
int i, ii;
int lazy = lazy_check(im);
-#ifdef WITH_PIECHART
- int piechart = 0;
- double PieStart = 0.0;
-#endif
- FILE *fo;
- gfx_node_t *node;
-
double areazero = 0.0;
+ PangoFontMap *font_map = pango_cairo_font_map_get_default();
+
graph_desc_t *lastgdes = NULL;
/* if we are lazy and there is nothing to PRINT ... quit now */
if (data_calc(im) == -1)
return -1;
-#ifdef WITH_PIECHART
- /* check if we need to draw a piechart */
- for (i = 0; i < im->gdes_c; i++) {
- if (im->gdes[i].gf == GF_PART) {
- piechart = 1;
- break;
- }
- }
-#endif
/* calculate and PRINT and GPRINT definitions. We have to do it at
* this point because it will affect the length of the legends
i = print_calc(im, calcpr);
if (i < 0)
return -1;
- if (((i == 0)
-#ifdef WITH_PIECHART
- && (piechart == 0)
-#endif
- ) || lazy)
+ if ((i == 0) || lazy)
return 0;
-#ifdef WITH_PIECHART
- /* If there's only the pie chart to draw, signal this */
- if (i == 0)
- piechart = 2;
-#endif
-
/**************************************************************
*** Calculating sizes and locations became a bit confusing ***
*** so I moved this into a separate function. ***
**************************************************************/
- if (graph_size_location(im, i
-#ifdef WITH_PIECHART
- , piechart
-#endif
- ) == -1)
+ if (graph_size_location(im, i) == -1)
return -1;
/* get actual drawing data and find min and max values */
/* the actual graph is created by going through the individual
graph elements and then drawing them */
+ cairo_surface_destroy(im->surface);
- node = gfx_new_area(im->canvas,
- 0, 0,
- 0, im->yimg,
- im->ximg, im->yimg, im->graph_col[GRC_BACK]);
+ switch (im->imgformat) {
+ case IF_PNG:
+ im->surface =
+ cairo_image_surface_create(CAIRO_FORMAT_ARGB32,
+ im->ximg * im->zoom,
+ im->yimg * im->zoom);
+ break;
+ case IF_PDF:
+ im->surface =
+ cairo_pdf_surface_create(im->graphfile, im->ximg * im->zoom,
+ im->yimg * im->zoom);
+ break;
+ case IF_EPS:
+ im->surface =
+ cairo_ps_surface_create(im->graphfile, im->ximg * im->zoom,
+ im->yimg * im->zoom);
+ break;
+ case IF_SVG:
+ im->surface =
+ cairo_svg_surface_create(im->graphfile, im->ximg * im->zoom,
+ im->yimg * im->zoom);
+ cairo_svg_surface_restrict_to_version(im->surface,
+ CAIRO_SVG_VERSION_1_1);
+ break;
+ };
+ im->cr = cairo_create(im->surface);
+ pango_cairo_font_map_set_resolution(font_map, 100);
+ cairo_scale(im->cr, im->zoom, im->zoom);
- gfx_add_point(node, im->ximg, 0);
+ gfx_new_area(im->cr,
+ 0, 0,
+ 0, im->yimg, im->ximg, im->yimg, im->graph_col[GRC_BACK]);
-#ifdef WITH_PIECHART
- if (piechart != 2) {
-#endif
- node = gfx_new_area(im->canvas,
- im->xorigin, im->yorigin,
- im->xorigin + im->xsize, im->yorigin,
- im->xorigin + im->xsize, im->yorigin - im->ysize,
- im->graph_col[GRC_CANVAS]);
-
- gfx_add_point(node, im->xorigin, im->yorigin - im->ysize);
-
- if (im->minval > 0.0)
- areazero = im->minval;
- if (im->maxval < 0.0)
- areazero = im->maxval;
-#ifdef WITH_PIECHART
- }
-#endif
+ gfx_add_point(im->cr, im->ximg, 0);
+ gfx_close_path(im->cr);
-#ifdef WITH_PIECHART
- if (piechart) {
- pie_part(im, im->graph_col[GRC_CANVAS], im->pie_x, im->pie_y,
- im->piesize * 0.5, 0, 2 * M_PI);
- }
-#endif
+ gfx_new_area(im->cr,
+ im->xorigin, im->yorigin,
+ im->xorigin + im->xsize, im->yorigin,
+ im->xorigin + im->xsize, im->yorigin - im->ysize,
+ im->graph_col[GRC_CANVAS]);
+
+ gfx_add_point(im->cr, im->xorigin, im->yorigin - im->ysize);
+ gfx_close_path(im->cr);
+
+ if (im->minval > 0.0)
+ areazero = im->minval;
+ if (im->maxval < 0.0)
+ areazero = im->maxval;
for (i = 0; i < im->gdes_c; i++) {
switch (im->gdes[i].gf) {
if (!isnan(im->gdes[i].p_data[ii]) &&
im->gdes[i].p_data[ii] != 0.0) {
if (im->gdes[i].yrule > 0) {
- gfx_new_line(im->canvas,
- im->xorigin + ii, im->yorigin,
- im->xorigin + ii,
- im->yorigin -
- im->gdes[i].yrule * im->ysize, 1.0,
- im->gdes[i].col);
+ gfx_line(im->cr,
+ im->xorigin + ii, im->yorigin,
+ im->xorigin + ii,
+ im->yorigin -
+ im->gdes[i].yrule * im->ysize, 1.0,
+ im->gdes[i].col);
} else if (im->gdes[i].yrule < 0) {
- gfx_new_line(im->canvas,
- im->xorigin + ii,
- im->yorigin - im->ysize,
- im->xorigin + ii,
- im->yorigin - (1 -
- im->gdes[i].yrule) *
- im->ysize, 1.0, im->gdes[i].col);
+ gfx_line(im->cr,
+ im->xorigin + ii,
+ im->yorigin - im->ysize,
+ im->xorigin + ii,
+ im->yorigin - (1 -
+ im->gdes[i].yrule) *
+ im->ysize, 1.0, im->gdes[i].col);
}
}
we draw a square from t-1 to t with the value a.
********************************************************* */
- if (im->gdes[i].col != 0x0) {
+ if (im->gdes[i].col.alpha != 0.0) {
/* GF_LINE and friend */
if (im->gdes[i].gf == GF_LINE) {
double last_y = 0.0;
+ int draw_on = 0;
- node = NULL;
+ cairo_save(im->cr);
+ cairo_new_path(im->cr);
+
+ cairo_set_line_width(im->cr, im->gdes[i].linewidth);
for (ii = 1; ii < im->xsize; ii++) {
if (isnan(im->gdes[i].p_data[ii])
|| (im->slopemode == 1
&& isnan(im->gdes[i].p_data[ii - 1]))) {
- node = NULL;
+ draw_on = 0;
continue;
}
- if (node == NULL) {
+ if (draw_on == 0) {
last_y = ytr(im, im->gdes[i].p_data[ii]);
if (im->slopemode == 0) {
- node = gfx_new_line(im->canvas,
- ii - 1 + im->xorigin,
- last_y, ii + im->xorigin,
- last_y,
- im->gdes[i].linewidth,
- im->gdes[i].col);
+ double x = ii - 1 + im->xorigin;
+ double y = last_y;
+
+ gfx_line_fit(im->cr, &x, &y);
+ cairo_move_to(im->cr, x, y);
+ x = ii + im->xorigin;
+ y = last_y;
+ gfx_line_fit(im->cr, &x, &y);
+ cairo_line_to(im->cr, x, y);
} else {
- node = gfx_new_line(im->canvas,
- ii - 1 + im->xorigin,
- ytr(im,
- im->gdes[i].
- p_data[ii - 1]),
- ii + im->xorigin, last_y,
- im->gdes[i].linewidth,
- im->gdes[i].col);
+ double x = ii - 1 + im->xorigin;
+ double y = ytr(im,
+ im->gdes[i].p_data[ii - 1]);
+
+ gfx_line_fit(im->cr, &x, &y);
+ cairo_move_to(im->cr, x, y);
+ x = ii + im->xorigin;
+ y = last_y;
+ gfx_line_fit(im->cr, &x, &y);
+ cairo_line_to(im->cr, x, y);
}
+ draw_on = 1;
} else {
- double new_y = ytr(im, im->gdes[i].p_data[ii]);
+ double x1 = ii + im->xorigin;
+ double y1 = ytr(im, im->gdes[i].p_data[ii]);
if (im->slopemode == 0
- && !AlmostEqual2sComplement(new_y, last_y,
- 4)) {
- gfx_add_point(node, ii - 1 + im->xorigin,
- new_y);
+ && !AlmostEqual2sComplement(y1, last_y, 4)) {
+ double x = ii - 1 + im->xorigin;
+ double y = y1;
+
+ gfx_line_fit(im->cr, &x, &y);
+ cairo_line_to(im->cr, x, y);
};
- last_y = new_y;
- gfx_add_point(node, ii + im->xorigin, new_y);
+ last_y = y1;
+ gfx_line_fit(im->cr, &x1, &y1);
+ cairo_line_to(im->cr, x1, y1);
};
}
+ cairo_set_source_rgba(im->cr, im->gdes[i].col.red,
+ im->gdes[i].col.green,
+ im->gdes[i].col.blue,
+ im->gdes[i].col.alpha);
+ cairo_set_line_cap(im->cr, CAIRO_LINE_CAP_ROUND);
+ cairo_set_line_join(im->cr, CAIRO_LINE_JOIN_ROUND);
+ cairo_stroke(im->cr);
+ cairo_restore(im->cr);
} else {
int idxI = -1;
double *foreY = malloc(sizeof(double) * im->xsize * 2);
4)) {
cntI++;
}
- node = gfx_new_area(im->canvas,
- backX[0], backY[0],
- foreX[0], foreY[0],
- foreX[cntI], foreY[cntI],
- im->gdes[i].col);
+ gfx_new_area(im->cr,
+ backX[0], backY[0],
+ foreX[0], foreY[0],
+ foreX[cntI], foreY[cntI],
+ im->gdes[i].col);
while (cntI < idxI) {
lastI = cntI;
cntI++;
1], 4)) {
cntI++;
}
- gfx_add_point(node, foreX[cntI], foreY[cntI]);
+ gfx_add_point(im->cr, foreX[cntI],
+ foreY[cntI]);
}
- gfx_add_point(node, backX[idxI], backY[idxI]);
+ gfx_add_point(im->cr, backX[idxI], backY[idxI]);
while (idxI > 1) {
lastI = idxI;
idxI--;
1], 4)) {
idxI--;
}
- gfx_add_point(node, backX[idxI], backY[idxI]);
+ gfx_add_point(im->cr, backX[idxI],
+ backY[idxI]);
}
idxI = -1;
drawem = 0;
+ gfx_close_path(im->cr);
}
if (drawem != 0) {
drawem = 0;
if (ii == im->xsize)
break;
- /* keep things simple for now, just draw these bars
- do not try to build a big and complex area */
-
-
if (im->slopemode == 0 && ii == 0) {
continue;
}
drawem = 1;
continue;
}
- /* every area has to be wound clock-wise,
- so we have to make sur base remains base */
+
if (ybase > ytop) {
double extra = ytop;
}
lastgdes = &(im->gdes[i]);
break;
-#ifdef WITH_PIECHART
- case GF_PART:
- if (isnan(im->gdes[i].yrule)) /* fetch variable */
- im->gdes[i].yrule = im->gdes[im->gdes[i].vidx].vf.val;
-
- if (finite(im->gdes[i].yrule)) { /* even the fetched var can be NaN */
- pie_part(im, im->gdes[i].col,
- im->pie_x, im->pie_y, im->piesize * 0.4,
- M_PI * 2.0 * PieStart / 100.0,
- M_PI * 2.0 * (PieStart + im->gdes[i].yrule) / 100.0);
- PieStart += im->gdes[i].yrule;
- }
- break;
-#endif
case GF_STACK:
rrd_set_error
("STACK should already be turned into LINE or AREA here");
} /* switch */
}
-#ifdef WITH_PIECHART
- if (piechart == 2) {
- im->draw_x_grid = 0;
- im->draw_y_grid = 0;
- }
-#endif
-
/* grid_paint also does the text */
if (!(im->extra_flags & ONLY_GRAPH))
case GF_HRULE:
if (im->gdes[i].yrule >= im->minval
&& im->gdes[i].yrule <= im->maxval)
- gfx_new_line(im->canvas,
- im->xorigin, ytr(im, im->gdes[i].yrule),
- im->xorigin + im->xsize, ytr(im,
- im->gdes[i].yrule),
- 1.0, im->gdes[i].col);
+ gfx_line(im->cr,
+ im->xorigin, ytr(im, im->gdes[i].yrule),
+ im->xorigin + im->xsize, ytr(im,
+ im->gdes[i].yrule),
+ 1.0, im->gdes[i].col);
break;
case GF_VRULE:
if (im->gdes[i].xrule >= im->start
&& im->gdes[i].xrule <= im->end)
- gfx_new_line(im->canvas,
- xtr(im, im->gdes[i].xrule), im->yorigin,
- xtr(im, im->gdes[i].xrule),
- im->yorigin - im->ysize, 1.0, im->gdes[i].col);
+ gfx_line(im->cr,
+ xtr(im, im->gdes[i].xrule), im->yorigin,
+ xtr(im, im->gdes[i].xrule),
+ im->yorigin - im->ysize, 1.0, im->gdes[i].col);
break;
default:
break;
}
- if (strcmp(im->graphfile, "-") == 0) {
- fo = im->graphhandle ? im->graphhandle : stdout;
-#if defined(_WIN32) && !defined(__CYGWIN__) && !defined(__CYGWIN32__)
- /* Change translation mode for stdout to BINARY */
- _setmode(_fileno(fo), O_BINARY);
-#endif
- } else {
- if ((fo = fopen(im->graphfile, "wb")) == NULL) {
- rrd_set_error("Opening '%s' for write: %s", im->graphfile,
- rrd_strerror(errno));
- return (-1);
+ switch (im->imgformat) {
+ case IF_PNG:
+ if (cairo_surface_write_to_png(im->surface, im->graphfile) !=
+ CAIRO_STATUS_SUCCESS) {
+ rrd_set_error("Could not save png to '%s'", im->graphfile);
+ return 1;
}
+ break;
+ default:
+ cairo_show_page(im->cr);
+ break;
}
- gfx_render(im->canvas, im->ximg, im->yimg, 0x00000000, fo);
- if (strcmp(im->graphfile, "-") != 0)
- fclose(fo);
return 0;
}
im->gdes[im->gdes_c - 1].data_first = 0;
im->gdes[im->gdes_c - 1].p_data = NULL;
im->gdes[im->gdes_c - 1].rpnp = NULL;
- im->gdes[im->gdes_c - 1].shift = 0;
- im->gdes[im->gdes_c - 1].col = 0x0;
+ im->gdes[im->gdes_c - 1].shift = 0.0;
+ im->gdes[im->gdes_c - 1].col.red = 0.0;
+ im->gdes[im->gdes_c - 1].col.green = 0.0;
+ im->gdes[im->gdes_c - 1].col.blue = 0.0;
+ im->gdes[im->gdes_c - 1].col.alpha = 0.0;
im->gdes[im->gdes_c - 1].legend[0] = '\0';
im->gdes[im->gdes_c - 1].format[0] = '\0';
im->gdes[im->gdes_c - 1].strftm = 0;
image_desc_t im;
rrd_graph_init(&im);
+
+ /* a dummy surface so that we can measure text sizes for placements */
+ im.surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 10, 10);
+ im.cr = cairo_create(im.surface);
+
+
+ /* not currently using this ... */
im.graphhandle = stream;
rrd_graph_options(argc, argv, &im);
}
sprintf((*prdata)[0], im.imginfo, filename,
- (long) (im.canvas->zoom * im.ximg),
- (long) (im.canvas->zoom * im.yimg));
+ (long) (im.zoom * im.ximg), (long) (im.zoom * im.yimg));
}
im_free(&im);
return 0;
im->forceleftspace = 0;
im->symbol = ' ';
im->viewfactor = 1.0;
+ im->imgformat = IF_PNG;
+ im->cr = NULL;
+ im->surface = NULL;
im->extra_flags = 0;
im->rigid = 0;
im->gridfit = 1;
im->prt_c = 0;
im->gdes_c = 0;
im->gdes = NULL;
- im->canvas = gfx_new_canvas();
im->grid_dash_on = 1;
im->grid_dash_off = 1;
im->tabwidth = 40.0;
+ im->zoom = 1;
for (i = 0; i < DIM(graph_col); i++)
im->graph_col[i] = graph_col[i];
time_t start_tmp = 0, end_tmp = 0;
long long_tmp;
struct rrd_time_value start_tv, end_tv;
- gfx_color_t color;
+ long unsigned int color;
optind = 0;
opterr = 0; /* initialize getopt */
im->extra_flags |= FULL_SIZE_MODE;
break;
case 'i':
- im->canvas->interlaced = 1;
+ /* interlaced png not supported at the moment */
break;
case 'r':
im->rigid = 1;
im->imginfo = optarg;
break;
case 'a':
- if ((int) (im->canvas->imgformat = if_conv(optarg)) == -1) {
+ if ((int) (im->imgformat = if_conv(optarg)) == -1) {
rrd_set_error("unsupported graphics format '%s'", optarg);
return;
}
return;
}
if ((ci = grc_conv(col_nam)) != -1) {
- im->graph_col[ci] = color;
+ im->graph_col[ci] = gfx_hex_to_col(color);
} else {
rrd_set_error("invalid color name '%s'", col_nam);
return;
break;
}
case 'm':
- im->canvas->zoom = atof(optarg);
- if (im->canvas->zoom <= 0.0) {
+ im->zoom = atof(optarg);
+ if (im->zoom <= 0.0) {
rrd_set_error("zoom factor must be > 0");
return;
}
break;
case 'R':
- if (strcmp(optarg, "normal") == 0)
- im->canvas->aa_type = AA_NORMAL;
- else if (strcmp(optarg, "light") == 0)
- im->canvas->aa_type = AA_LIGHT;
- else if (strcmp(optarg, "mono") == 0)
- im->canvas->aa_type = AA_NONE;
- else {
- rrd_set_error("unknown font-render-mode '%s'", optarg);
- return;
- }
+ /* not supported curently */
break;
case 'B':
- im->canvas->font_aa_threshold = atof(optarg);
+ /* not supported curently */
break;
case 'W':
} else {
int n = 0;
char *rest;
- gfx_color_t col;
+ long unsigned int col;
rest = strstr(color, ":");
if (rest != NULL)
}
if (rrd_test_error())
return 0;
- gdp->col = col;
+ gdp->col = gfx_hex_to_col(col);
return n;
}
}
diff --git a/src/rrd_graph.h b/src/rrd_graph.h
index 2c9309beef93057ae9d79f5652ba05a752fe4e19..dd036151712abf26e849c2a322803424f1f14e9a 100644 (file)
--- a/src/rrd_graph.h
+++ b/src/rrd_graph.h
int lfac[4]; /* associated label spacing */
} ylab_t;
-
/* this structure describes the elements which can make up a graph.
because they are quite diverse, not all elements will use all the
possible parts of the structure. */
long ds; /* data source number */
enum cf_en cf; /* consolidation function */
enum cf_en cf_reduce; /* consolidation function for reduce_data() */
- gfx_color_t col; /* graph color */
+ struct gfx_color_t col; /* graph color */
char format[FMT_LEG_LEN + 5]; /* format for PRINT AND GPRINT */
char legend[FMT_LEG_LEN + 5]; /* legend */
int strftm; /* should the VDEF legend be formated with strftime */
#ifdef WITH_PIECHART
long piesize; /* size of the piechart */
#endif
- gfx_color_t graph_col[__GRC_END__]; /* real colors for the graph */
+ struct gfx_color_t graph_col[__GRC_END__]; /* real colors for the graph */
text_prop_t text_prop[TEXT_PROP_LAST]; /* text properties */
char ylegend[210]; /* legend along the yaxis */
char title[210]; /* title for graph */
grindlines falls in integer pixel values */
char *imginfo; /* construct an <IMG ... tag and return
as first retval */
+ enum gfx_if_en imgformat; /* image format */
int lazy; /* only update the image if there is
reasonable probablility that the
existing one is out of date */
long pie_x, pie_y; /* where is the centerpoint */
#endif
long ximg, yimg; /* total size of the image */
+ double zoom;
double magfact; /* numerical magnitude */
long base; /* 1000 or 1024 depending on what we graph */
char symbol; /* magnitude symbol for y-axis */
long prt_c; /* number of print elements */
long gdes_c; /* number of graphics elements */
graph_desc_t *gdes; /* points to an array of graph elements */
- gfx_canvas_t *canvas; /* graphics library */
+ cairo_surface_t *surface; /* graphics library */
+ cairo_t *cr; /* drawin context */
} image_desc_t;
/* Prototypes */
diff --git a/src/rrd_graph_helper.c b/src/rrd_graph_helper.c
index 2ea3a2d2b563a4e6470e96d6be459d8ad68cb71e..0991b3b8c24551162d26e7f0d7af015dd4bdfe00 100644 (file)
--- a/src/rrd_graph_helper.c
+++ b/src/rrd_graph_helper.c
default:
return 1; /* wrong number of digits */
}
- gdp->col = r << 24 | g << 16 | b << 8 | a;
+ gdp->col = gfx_hex_to_col(r << 24 | g << 16 | b << 8 | a);
return 0;
}
static int spacecnt = 0;
if (spacecnt == 0) {
- float one_space = gfx_get_text_width(im->canvas, 0,
+ float one_space = gfx_get_text_width(im->cr, 0,
im->
text_prop[TEXT_PROP_LEGEND].
font,
im->
text_prop[TEXT_PROP_LEGEND].
size,
- im->tabwidth, " ",
- 0) / 4.0;
- float target_space = gfx_get_text_width(im->canvas, 0,
+ im->tabwidth, " ") / 4.0;
+ float target_space = gfx_get_text_width(im->cr, 0,
im->
text_prop
[TEXT_PROP_LEGEND].font,
im->
text_prop
[TEXT_PROP_LEGEND].size,
- im->tabwidth, "oo", 0);
+ im->tabwidth, "oo");
spacecnt = target_space / one_space;
dprintf("- spacecnt: %i onespace: %f targspace: %f\n", spacecnt,
rrd_set_error("Could not parse color in '%s'", &tmpstr[j]);
return 1;
}
- dprintf("- parsed color 0x%08x\n", (unsigned int) gdp->col);
+ dprintf("- parsed color %0.0f,%0.0f,%0.0f,%0.0f\n", gdp->col.red,
+ gdp->col.green, gdp->col.blue, gdp->col.alpha);
colorfound = 1;
} else {
dprintf("- no color present in '%s'\n", tmpstr);