commit 00318a6b5e8e76d8d1f815746c6a655cb777178c Author: mykola2312 <49044616+mykola2312@users.noreply.github.com> Date: Fri Mar 29 00:27:42 2019 +0200 Леночка diff --git a/.bochsrc b/.bochsrc new file mode 100644 index 0000000..2b5f03e --- /dev/null +++ b/.bochsrc @@ -0,0 +1,1265 @@ +# You may now use double quotes around pathnames, in case +# your pathname includes spaces. + +#======================================================================= +# PLUGIN_CTRL: +# Controls the presence of optional device plugins. These plugins are loaded +# directly with this option and some of them install a config option that is +# only available when the plugin device is loaded. The value "1" means to load +# the plugin and "0" will unload it (if loaded before). +# +# These plugins will be loaded by default (if present): 'biosdev', 'extfpuirq', +# 'gameport', 'iodebug','parallel', 'serial', 'speaker' and 'unmapped'. +# +# These plugins are also supported, but they are usually loaded directly with +# their bochsrc option: 'e1000', 'es1370', 'ne2k', 'pcidev', 'pcipnic', 'sb16', +# 'usb_ehci', 'usb_ohci', 'usb_uhci', 'usb_xhci' and 'voodoo'. +#======================================================================= +#plugin_ctrl: unmapped=0, e1000=1 # unload 'unmapped' and load 'e1000' + +#======================================================================= +# CONFIG_INTERFACE +# +# The configuration interface is a series of menus or dialog boxes that +# allows you to change all the settings that control Bochs's behavior. +# Depending on the platform there are up to 3 choices of configuration +# interface: a text mode version called "textconfig" and two graphical versions +# called "win32config" and "wx". The text mode version uses stdin/stdout and +# is always compiled in, unless Bochs is compiled for wx only. The choice +# "win32config" is only available on win32 and it is the default there. +# The choice "wx" is only available when you use "--with-wx" on the configure +# command. If you do not write a config_interface line, Bochs will +# choose a default for you. +# +# NOTE: if you use the "wx" configuration interface, you must also use +# the "wx" display library. +#======================================================================= +#config_interface: textconfig +#config_interface: win32config +#config_interface: wx + +#======================================================================= +# DISPLAY_LIBRARY +# +# The display library is the code that displays the Bochs VGA screen. Bochs +# has a selection of about 10 different display library implementations for +# different platforms. If you run configure with multiple --with-* options, +# the display_library command lets you choose which one you want to run with. +# If you do not write a display_library line, Bochs will choose a default for +# you. +# +# The choices are: +# x use X windows interface, cross platform +# win32 use native win32 libraries +# carbon use Carbon library (for MacOS X) +# macintosh use MacOS pre-10 +# amigaos use native AmigaOS libraries +# sdl use SDL 1.2.x library, cross platform +# sdl2 use SDL 2.x library, cross platform +# svga use SVGALIB library for Linux, allows graphics without X11 +# term text only, uses curses/ncurses library, cross platform +# rfb provides an interface to AT&T's VNC viewer, cross platform +# vncsrv use LibVNCServer for extended RFB(VNC) support +# wx use wxWidgets library, cross platform +# nogui no display at all +# +# NOTE: if you use the "wx" configuration interface, you must also use +# the "wx" display library. +# +# Specific options: +# Some display libraries now support specific options to control their +# behaviour. These options are supported by more than one display library: +# +# "gui_debug" - use GTK debugger gui (sdl, sdl2, x) / Win32 debugger gui (sdl, +# sdl2, win32) +# "hideIPS" - disable IPS output in status bar (rfb, sdl, sdl2, vncsrv, +# win32, wx, x) +# "nokeyrepeat" - turn off host keyboard repeat (sdl, sdl2, win32, x) +# "timeout" - time (in seconds) to wait for client (rfb, vncsrv) +# +# See the examples below for other currently supported options. +#======================================================================= +#display_library: amigaos +#display_library: carbon +#display_library: macintosh +#display_library: nogui +#display_library: rfb +#display_library: sdl, options="fullscreen" # startup in fullscreen mode +#display_library: sdl2, options="fullscreen" # startup in fullscreen mode +#display_library: term +#display_library: vncsrv +#display_library: win32 +#display_library: wx +#display_library: x +display_library: x, options="gui_debug" + +#======================================================================= +# CPU: +# This defines cpu-related parameters inside Bochs: +# +# MODEL: +# Selects CPU configuration to emulate from pre-defined list of all +# supported configurations. When this option is used and the value +# is different from 'bx_generic', the parameters of the CPUID option +# have no effect anymore. +# +# CPU configurations that can be selected: +# ----------------------------------------------------------------- +# pentium Intel Pentium (P54C) +# pentium_mmx Intel Pentium MMX +# amd_k6_2_chomper AMD-K6(tm) 3D processor (Chomper) +# p2_klamath Intel Pentium II (Klamath) +# p3_katmai Intel Pentium III (Katmai) +# p4_willamette Intel(R) Pentium(R) 4 (Willamette) +# core_duo_t2400_yonah Intel(R) Core(TM) Duo CPU T2400 (Yonah) +# atom_n270 Intel(R) Atom(TM) CPU N270 +# p4_prescott_celeron_336 Intel(R) Celeron(R) 336 (Prescott) +# athlon64_clawhammer AMD Athlon(tm) 64 Processor 2800+ (Clawhammer) +# athlon64_venice AMD Athlon(tm) 64 Processor 3000+ (Venice) +# turion64_tyler AMD Turion(tm) 64 X2 Mobile TL-60 (Tyler) +# phenom_8650_toliman AMD Phenom X3 8650 (Toliman) +# core2_penryn_t9600 Intel Mobile Core 2 Duo T9600 (Penryn) +# corei5_lynnfield_750 Intel(R) Core(TM) i5 750 (Lynnfield) +# corei5_arrandale_m520 Intel(R) Core(TM) i5 M 520 (Arrandale) +# corei7_sandy_bridge_2600k Intel(R) Core(TM) i7-2600K (Sandy Bridge) +# zambezi AMD FX(tm)-4100 Quad-Core Processor (Zambezi) +# trinity_apu AMD A8-5600K APU (Trinity) +# ryzen AMD Ryzen 7 1700 +# corei7_ivy_bridge_3770k Intel(R) Core(TM) i7-3770K CPU (Ivy Bridge) +# corei7_haswell_4770 Intel(R) Core(TM) i7-4770 CPU (Haswell) +# broadwell_ult Intel(R) Processor 5Y70 CPU (Broadwell) +# +# COUNT: +# Set the number of processors:cores per processor:threads per core when +# Bochs is compiled for SMP emulation. Bochs currently supports up to +# 14 threads (legacy APIC) or 254 threads (xAPIC or higher) running +# simultaniosly. If Bochs is compiled without SMP support, it won't accept +# values different from 1. +# +# QUANTUM: +# Maximum amount of instructions allowed to execute by processor before +# returning control to another cpu. This option exists only in Bochs +# binary compiled with SMP support. +# +# RESET_ON_TRIPLE_FAULT: +# Reset the CPU when triple fault occur (highly recommended) rather than +# PANIC. Remember that if you trying to continue after triple fault the +# simulation will be completely bogus ! +# +# CPUID_LIMIT_WINNT: +# Determine whether to limit maximum CPUID function to 2. This mode is +# required to workaround WinNT installation and boot issues. +# +# MSRS: +# Define path to user CPU Model Specific Registers (MSRs) specification. +# See example in msrs.def. +# +# IGNORE_BAD_MSRS: +# Ignore MSR references that Bochs does not understand; print a warning +# message instead of generating #GP exception. This option is enabled +# by default but will not be avaiable if configurable MSRs are enabled. +# +# MWAIT_IS_NOP: +# When this option is enabled MWAIT will not put the CPU into a sleep state. +# This option exists only if Bochs compiled with --enable-monitor-mwait. +# +# IPS: +# Emulated Instructions Per Second. This is the number of IPS that bochs +# is capable of running on your machine. You can recompile Bochs with +# --enable-show-ips option enabled, to find your host's capability. +# Measured IPS value will then be logged into your log file or shown +# in the status bar (if supported by the gui). +# +# IPS is used to calibrate many time-dependent events within the bochs +# simulation. For example, changing IPS affects the frequency of VGA +# updates, the duration of time before a key starts to autorepeat, and +# the measurement of BogoMips and other benchmarks. +# +# Examples: +# +# Bochs Machine/Compiler Mips +# ______________________________________________________________________ +# 2.4.6 3.4Ghz Intel Core i7 2600 with Win7x64/g++ 4.5.2 85 to 95 Mips +# 2.3.7 3.2Ghz Intel Core 2 Q9770 with WinXP/g++ 3.4 50 to 55 Mips +# 2.3.7 2.6Ghz Intel Core 2 Duo with WinXP/g++ 3.4 38 to 43 Mips +# 2.2.6 2.6Ghz Intel Core 2 Duo with WinXP/g++ 3.4 21 to 25 Mips +# 2.2.6 2.1Ghz Athlon XP with Linux 2.6/g++ 3.4 12 to 15 Mips +#======================================================================= +cpu: model=core2_penryn_t9600, count=1, ips=50000000, reset_on_triple_fault=1, ignore_bad_msrs=1, msrs="msrs.def" +cpu: cpuid_limit_winnt=0 + +#======================================================================= +# CPUID: +# +# This defines features and functionality supported by Bochs emulated CPU. +# The option has no offect if CPU model was selected in CPU option. +# +# MMX: +# Select MMX instruction set support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 5. +# +# APIC: +# Select APIC configuration (LEGACY/XAPIC/XAPIC_EXT/X2APIC). +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 5. +# +# SEP: +# Select SYSENTER/SYSEXIT instruction set support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# SIMD: +# Select SIMD instructions support. +# Any of NONE/SSE/SSE2/SSE3/SSSE3/SSE4_1/SSE4_2/AVX/AVX2/AVX512 +# could be selected. +# +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# The AVX choises exists only if Bochs compiled with --enable-avx option. +# +# SSE4A: +# Select AMD SSE4A instructions support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# MISALIGNED_SSE: +# Select AMD Misaligned SSE mode support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# AES: +# Select AES instruction set support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# SHA: +# Select SHA instruction set support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# MOVBE: +# Select MOVBE Intel(R) Atom instruction support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# ADX: +# Select ADCX/ADOX instructions support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# XSAVE: +# Select XSAVE extensions support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# XSAVEOPT: +# Select XSAVEOPT instruction support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# AVX_F16C: +# Select AVX float16 convert instructions support. +# This option exists only if Bochs compiled with --enable-avx option. +# +# AVX_FMA: +# Select AVX fused multiply add (FMA) instructions support. +# This option exists only if Bochs compiled with --enable-avx option. +# +# BMI: +# Select BMI1/BMI2 instructions support. +# This option exists only if Bochs compiled with --enable-avx option. +# +# XOP: +# Select AMD XOP instructions support. +# This option exists only if Bochs compiled with --enable-avx option. +# +# FMA4: +# Select AMD four operand FMA instructions support. +# This option exists only if Bochs compiled with --enable-avx option. +# +# TBM: +# Select AMD Trailing Bit Manipulation (TBM) instructions support. +# This option exists only if Bochs compiled with --enable-avx option. +# +# X86-64: +# Enable x86-64 and long mode support. +# This option exists only if Bochs compiled with x86-64 support. +# +# 1G_PAGES: +# Enable 1G page size support in long mode. +# This option exists only if Bochs compiled with x86-64 support. +# +# PCID: +# Enable Process-Context Identifiers (PCID) support in long mode. +# This option exists only if Bochs compiled with x86-64 support. +# +# FSGSBASE: +# Enable GS/GS BASE access instructions support in long mode. +# This option exists only if Bochs compiled with x86-64 support. +# +# SMEP: +# Enable Supervisor Mode Execution Protection (SMEP) support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# SMAP: +# Enable Supervisor Mode Access Prevention (SMAP) support. +# This option exists only if Bochs compiled with BX_CPU_LEVEL >= 6. +# +# MWAIT: +# Select MONITOR/MWAIT instructions support. +# This option exists only if Bochs compiled with --enable-monitor-mwait. +# +# VMX: +# Select VMX extensions emulation support. +# This option exists only if Bochs compiled with --enable-vmx option. +# +# SVM: +# Select AMD SVM (Secure Virtual Machine) extensions emulation support. +# This option exists only if Bochs compiled with --enable-svm option. +# +# VENDOR_STRING: +# Set the CPUID vendor string returned by CPUID(0x0). This should be a +# twelve-character ASCII string. +# +# BRAND_STRING: +# Set the CPUID vendor string returned by CPUID(0x80000002 .. 0x80000004). +# This should be at most a forty-eight-character ASCII string. +# +# LEVEL: +# Set emulated CPU level information returned by CPUID. Default value is +# determined by configure option --enable-cpu-level. Currently supported +# values are 5 (for Pentium and similar processors) and 6 (for P6 and +# later processors). +# +# FAMILY: +# Set model information returned by CPUID. Default family value determined +# by configure option --enable-cpu-level. +# +# MODEL: +# Set model information returned by CPUID. Default model value is 3. +# +# STEPPING: +# Set stepping information returned by CPUID. Default stepping value is 3. +#======================================================================= +#cpuid: x86_64=1, mmx=1, sep=1, simd=sse4_2, apic=xapic, aes=1, movbe=1, xsave=1 +#cpuid: family=6, model=0x1a, stepping=5 + +#======================================================================= +# MEMORY +# Set the amount of physical memory you want to emulate. +# +# GUEST: +# Set amount of guest physical memory to emulate. The default is 32MB, +# the maximum amount limited only by physical address space limitations. +# +# HOST: +# Set amount of host memory you want to allocate for guest RAM emulation. +# It is possible to allocate less memory than you want to emulate in guest +# system. This will fake guest to see the non-existing memory. Once guest +# system touches new memory block it will be dynamically taken from the +# memory pool. You will be warned (by FATAL PANIC) in case guest already +# used all allocated host memory and wants more. +# +#======================================================================= +memory: guest=512, host=256 + +#======================================================================= +# ROMIMAGE: +# The ROM BIOS controls what the PC does when it first powers on. +# Normally, you can use a precompiled BIOS in the source or binary +# distribution called BIOS-bochs-latest. The default ROM BIOS is usually loaded +# starting at address 0xfffe0000, and it is exactly 128k long. The legacy +# version of the Bochs BIOS is usually loaded starting at address 0xffff0000, +# and it is exactly 64k long. +# You can use the environment variable $BXSHARE to specify the location +# of the BIOS. +# The usage of external large BIOS images (up to 512k) at memory top is +# now supported, but we still recommend to use the BIOS distributed with Bochs. +# The start address is optional, since it can be calculated from image size. +# The Bochs BIOS currently supports only the option "fastboot" to skip the +# boot menu delay. +#======================================================================= +romimage: file=$BXSHARE/BIOS-bochs-latest, options=fastboot +#romimage: file=$BXSHARE/bios.bin-1.7.5 # http://www.seabios.org/SeaBIOS +#romimage: file=mybios.bin, address=0xfff80000 # 512k at memory top + +#======================================================================= +# VGAROMIMAGE +# You now need to load a VGA ROM BIOS into C0000. +#======================================================================= +#vgaromimage: file=bios/VGABIOS-elpin-2.40 +vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest +#vgaromimage: file=bios/VGABIOS-lgpl-latest-cirrus + +#======================================================================= +# OPTROMIMAGE[1-4]: +# You may now load up to 4 optional ROM images. Be sure to use a +# read-only area, typically between C8000 and EFFFF. These optional +# ROM images should not overwrite the rombios (located at +# F0000-FFFFF) and the videobios (located at C0000-C7FFF). +# Those ROM images will be initialized by the bios if they contain +# the right signature (0x55AA) and a valid checksum. +# It can also be a convenient way to upload some arbitrary code/data +# in the simulation, that can be retrieved by the boot loader +#======================================================================= +#optromimage1: file=optionalrom.bin, address=0xd0000 +#optromimage2: file=optionalrom.bin, address=0xd1000 +#optromimage3: file=optionalrom.bin, address=0xd2000 +#optromimage4: file=optionalrom.bin, address=0xd3000 + +#optramimage1: file=/path/file1.img, address=0x0010000 +#optramimage2: file=/path/file2.img, address=0x0020000 +#optramimage3: file=/path/file3.img, address=0x0030000 +#optramimage4: file=/path/file4.img, address=0x0040000 + +#======================================================================= +# VGA: +# This defines parameters related to the VGA display +# +# EXTENSION +# Here you can specify the display extension to be used. With the value +# 'none' you can use standard VGA with no extension. Other supported +# values are 'vbe' for Bochs VBE and 'cirrus' for Cirrus SVGA support. +# +# UPDATE_FREQ +# This parameter specifies the number of display updates per second. +# The VGA update timer now uses the realtime engine and the default +# value is 5. This parameter can be changed at runtime. +# +# REALTIME +# If set to 1, the VGA timer is based on realtime, otherwise it is based +# on the ips setting. If the host is slow (low ips, update_freq) and the +# guest uses HLT appropriately, setting this to 0 and "clock: sync=none" +# may improve the responsiveness of the guest GUI when the guest is +# otherwise idle. The default value is 1. +# +# Examples: +# vga: extension=cirrus, update_freq=10 +#======================================================================= +#vga: extension=vbe, update_freq=5, realtime=1 + +#======================================================================= +# VOODOO: +# This defines the Voodoo Graphics emulation (experimental). Currently +# supported models are 'voodoo1' and 'voodoo2'. The Voodoo2 support is +# not yet complete. +# +# Examples: +# voodoo: enabled=1, model=voodoo1 +#======================================================================= +#voodoo: enabled=1, model=voodoo1 + +#======================================================================= +# KEYBOARD: +# This defines parameters related to the emulated keyboard +# +# TYPE: +# Type of keyboard return by a "identify keyboard" command to the +# keyboard controller. It must be one of "xt", "at" or "mf". +# Defaults to "mf". It should be ok for almost everybody. A known +# exception is french macs, that do have a "at"-like keyboard. +# +# SERIAL_DELAY: +# Approximate time in microseconds that it takes one character to +# be transferred from the keyboard to controller over the serial path. +# +# PASTE_DELAY: +# Approximate time in microseconds between attempts to paste +# characters to the keyboard controller. This leaves time for the +# guest os to deal with the flow of characters. The ideal setting +# depends on how your operating system processes characters. The +# default of 100000 usec (.1 seconds) was chosen because it works +# consistently in Windows. +# If your OS is losing characters during a paste, increase the paste +# delay until it stops losing characters. +# +# KEYMAP: +# This enables a remap of a physical localized keyboard to a +# virtualized us keyboard, as the PC architecture expects. +# +# USER_SHORTCUT: +# This defines the keyboard shortcut to be sent when you press the "user" +# button in the headerbar. The shortcut string is a combination of maximum +# 3 key names (listed below) separated with a '-' character. +# Valid key names: +# "alt", "bksl", "bksp", "ctrl", "del", "down", "end", "enter", "esc", +# "f1", ... "f12", "home", "ins", "left", "menu", "minus", "pgdwn", "pgup", +# "plus", "power", "print", "right", "scrlck", "shift", "space", "tab", "up" +# and "win". + +# Examples: +# keyboard: type=mf, serial_delay=200, paste_delay=100000 +# keyboard: keymap=gui/keymaps/x11-pc-de.map +# keyboard: user_shortcut=ctrl-alt-del +#======================================================================= +#keyboard: type=mf, serial_delay=250 + +#======================================================================= +# MOUSE: +# This defines parameters for the emulated mouse type, the initial status +# of the mouse capture and the runtime method to toggle it. +# +# TYPE: +# With the mouse type option you can select the type of mouse to emulate. +# The default value is 'ps2'. The other choices are 'imps2' (wheel mouse +# on PS/2), 'serial', 'serial_wheel', 'serial_msys' (one com port requires +# setting 'mode=mouse') 'inport' and 'bus' (if present). To connect a mouse +# to a USB port, see the 'usb_uhci', 'usb_ohci', 'usb_ehci' or 'usb_xhci' +# options (requires PCI and USB support). +# +# ENABLED: +# The Bochs gui creates mouse "events" unless the 'enabled' option is +# set to 0. The hardware emulation itself is not disabled by this. +# Unless you have a particular reason for enabling the mouse by default, +# it is recommended that you leave it off. You can also toggle the mouse +# usage at runtime (RFB, SDL, Win32, wxWidgets and X11 - see below). +# +# TOGGLE: +# The default method to toggle the mouse capture at runtime is to press the +# CTRL key and the middle mouse button ('ctrl+mbutton'). This option allows +# to change the method to 'ctrl+f10' (like DOSBox), 'ctrl+alt' (like QEMU) +# or 'f12'. +# +# Examples: +# mouse: enabled=1 +# mouse: type=imps2, enabled=1 +# mouse: type=serial, enabled=1 +# mouse: enabled=0, toggle=ctrl+f10 +#======================================================================= +mouse: enabled=0 + +#======================================================================= +# PCI: +# This option controls the presence of a PCI chipset in Bochs. Currently it only +# supports the i430FX and i440FX chipsets. You can also specify the devices +# connected to PCI slots. Up to 5 slots are available. For these combined PCI/ISA +# devices assigning to slot is mandatory if you want to emulate the PCI model: +# cirrus, ne2k and pcivga. These PCI-only devices are also supported, but they +# are auto-assigned if you don't use the slot configuration: e1000, es1370, +# pcidev, pcipnic, usb_ehci, usb_ohci, usb_xhci and voodoo. +# +# Example: +# pci: enabled=1, chipset=i440fx, slot1=pcivga, slot2=ne2k +#======================================================================= +pci: enabled=1, chipset=i440fx + +#======================================================================= +# CLOCK: +# This defines the parameters of the clock inside Bochs: +# +# SYNC: +# This defines the method how to synchronize the Bochs internal time +# with realtime. With the value 'none' the Bochs time relies on the IPS +# value and no host time synchronization is used. The 'slowdown' method +# sacrifices performance to preserve reproducibility while allowing host +# time correlation. The 'realtime' method sacrifices reproducibility to +# preserve performance and host-time correlation. +# It is possible to enable both synchronization methods. +# +# RTC_SYNC: +# If this option is enabled together with the realtime synchronization, +# the RTC runs at realtime speed. This feature is disabled by default. +# +# TIME0: +# Specifies the start (boot) time of the virtual machine. Use a time +# value as returned by the time(2) system call or a string as returned +# by the ctime(3) system call. If no time0 value is set or if time0 +# equal to 1 (special case) or if time0 equal 'local', the simulation +# will be started at the current local host time. If time0 equal to 2 +# (special case) or if time0 equal 'utc', the simulation will be started +# at the current utc time. +# +# Syntax: +# clock: sync=[none|slowdown|realtime|both], time0=[timeValue|local|utc] +# +# Example: +# clock: sync=none, time0=local # Now (localtime) +# clock: sync=slowdown, time0=315529200 # Tue Jan 1 00:00:00 1980 +# clock: sync=none, time0="Mon Jan 1 00:00:00 1990" # 631148400 +# clock: sync=realtime, time0=938581955 # Wed Sep 29 07:12:35 1999 +# clock: sync=realtime, time0="Sat Jan 1 00:00:00 2000" # 946681200 +# clock: sync=none, time0=1 # Now (localtime) +# clock: sync=none, time0=utc # Now (utc/gmt) +# +# Default value are sync=none, rtc_sync=0, time0=local +#======================================================================= +#clock: sync=none, time0=local +clock: sync=slowdown + +#======================================================================= +# CMOSIMAGE: +# This defines a binary image file with size 128 bytes that can be loaded into +# the CMOS RAM at startup. The rtc_init parameter controls whether initialize +# the RTC with values stored in the image. By default the time0 argument given +# to the clock option is used. With 'rtc_init=image' the image is the source +# for the initial time. +# +# Example: +# cmosimage: file=cmos.img, rtc_init=image +#======================================================================= +#cmosimage: file=cmos.img, rtc_init=time0 + +#======================================================================= +# private_colormap: Request that the GUI create and use it's own +# non-shared colormap. This colormap will be used +# when in the bochs window. If not enabled, a +# shared colormap scheme may be used. Not implemented +# on all GUI's. +# +# Examples: +# private_colormap: enabled=1 +# private_colormap: enabled=0 +#======================================================================= +private_colormap: enabled=0 + +#======================================================================= +# FLOPPYA: +# Point this to pathname of floppy image file or device +# This should be of a bootable floppy(image/device) if you're +# booting from 'a' (or 'floppy'). +# +# You can set the initial status of the media to 'ejected' or 'inserted'. +# floppya: 2_88=path, status=ejected (2.88M 3.5" media) +# floppya: 1_44=path, status=inserted (1.44M 3.5" media) +# floppya: 1_2=path, status=ejected (1.2M 5.25" media) +# floppya: 720k=path, status=inserted (720K 3.5" media) +# floppya: 360k=path, status=inserted (360K 5.25" media) +# floppya: 320k=path, status=inserted (320K 5.25" media) +# floppya: 180k=path, status=inserted (180K 5.25" media) +# floppya: 160k=path, status=inserted (160K 5.25" media) +# floppya: image=path, status=inserted (guess media type from image size) +# floppya: 1_44=vvfat:path, status=inserted (use directory as VFAT media) +# floppya: type=1_44 (1.44M 3.5" floppy drive, no media) +# +# The path should be the name of a disk image file. On Unix, you can use a raw +# device name such as /dev/fd0 on Linux. On win32 platforms, use drive letters +# such as a: or b: as the path. The parameter 'image' works with image files +# only. In that case the size must match one of the supported types. +# The parameter 'type' can be used to enable the floppy drive without media +# and status specified. Usually the drive type is set up based on the media type. +# The optional parameter 'write_protected' can be used to control the media +# write protect switch. By default it is turned off. +#======================================================================= +#floppya: 1_44=demo.img, status=inserted +#floppya: image=../1.44, status=inserted +#floppya: 1_44=/dev/fd0H1440, status=inserted +#floppya: 1_2=../1_2, status=inserted +#floppya: 1_44=a:, status=inserted +#floppya: 1_44=a.img, status=inserted, write_protected=1 +#floppya: 1_44=/dev/rfd0a, status=inserted + +#======================================================================= +# FLOPPYB: +# See FLOPPYA above for syntax +#======================================================================= +#floppyb: 1_44=b:, status=inserted +#floppyb: 1_44=b.img, status=inserted + +#======================================================================= +# ATA0, ATA1, ATA2, ATA3 +# ATA controller for hard disks and cdroms +# +# ata[0-3]: enabled=[0|1], ioaddr1=addr, ioaddr2=addr, irq=number +# +# These options enables up to 4 ata channels. For each channel +# the two base io addresses and the irq must be specified. +# +# ata0 and ata1 are enabled by default with the values shown below +# +# Examples: +# ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 +# ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15 +# ata2: enabled=1, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11 +# ata3: enabled=1, ioaddr1=0x168, ioaddr2=0x360, irq=9 +#======================================================================= +ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14 +ata1: enabled=1, ioaddr1=0x170, ioaddr2=0x370, irq=15 +ata2: enabled=0, ioaddr1=0x1e8, ioaddr2=0x3e0, irq=11 +ata3: enabled=0, ioaddr1=0x168, ioaddr2=0x360, irq=9 + +#======================================================================= +# ATA[0-3]-MASTER, ATA[0-3]-SLAVE +# +# This defines the type and characteristics of all attached ata devices: +# type= type of attached device [disk|cdrom] +# mode= only valid for disks [flat|concat|external|dll|sparse|vmware3] +# [vmware4|undoable|growing|volatile|vpc] +# [vbox|vvfat] +# path= path of the image / directory +# cylinders= only valid for disks +# heads= only valid for disks +# spt= only valid for disks +# status= only valid for cdroms [inserted|ejected] +# biosdetect= type of biosdetection [auto|cmos|none] +# translation=type of translation of the bios, only for disks [none|lba|large|rechs|auto] +# model= string returned by identify device command +# journal= optional filename of the redolog for undoable, volatile and vvfat disks +# +# Point this at a hard disk image file, cdrom iso file, or physical cdrom +# device. To create a hard disk image, try running bximage. It will help you +# choose the size and then suggest a line that works with it. +# +# In UNIX it may be possible to use a raw device as a Bochs hard disk, +# but WE DON'T RECOMMEND IT. In Windows there is no easy way. +# +# In windows, the drive letter + colon notation should be used for cdroms. +# Depending on versions of windows and drivers, you may only be able to +# access the "first" cdrom in the system. On MacOSX, use path="drive" +# to access the physical drive. +# +# The path is mandatory for hard disks. Disk geometry autodetection works with +# images created by bximage if CHS is set to 0/0/0 (cylinders are calculated +# using heads=16 and spt=63). For other hard disk images and modes the +# cylinders, heads, and spt are mandatory. In all cases the disk size reported +# from the image must be exactly C*H*S*512. +# +# Default values are: +# mode=flat, biosdetect=auto, translation=auto, model="Generic 1234" +# +# The biosdetect option has currently no effect on the bios +# +# Examples: +# ata0-master: type=disk, mode=flat, path=10M.sample, cylinders=306, heads=4, spt=17 +# ata0-slave: type=disk, mode=flat, path=20M.sample, cylinders=615, heads=4, spt=17 +# ata1-master: type=disk, mode=flat, path=30M.sample, cylinders=615, heads=6, spt=17 +# ata1-slave: type=disk, mode=flat, path=46M.sample, cylinders=940, heads=6, spt=17 +# ata2-master: type=disk, mode=flat, path=62M.sample, cylinders=940, heads=8, spt=17 +# ata2-slave: type=disk, mode=flat, path=112M.sample, cylinders=900, heads=15, spt=17 +# ata3-master: type=disk, mode=flat, path=483M.sample, cylinders=1024, heads=15, spt=63 +# ata3-slave: type=cdrom, path=iso.sample, status=inserted +#======================================================================= +ata0-master: type=disk, mode=flat, path="vm/hdisk.img", cylinders=0 # autodetect +#ata0-master: type=disk, mode=flat, path="30M.sample", cylinders=615, heads=6, spt=17 +#ata0-master: type=disk, mode=flat, path="c.img", cylinders=0 # autodetect +#ata0-slave: type=disk, mode=vvfat, path=/bochs/images/vvfat, journal=vvfat.redolog +#ata0-slave: type=cdrom, path=D:, status=inserted +#ata0-slave: type=cdrom, path=/dev/cdrom, status=inserted +#ata0-slave: type=cdrom, path="drive", status=inserted +#ata0-slave: type=cdrom, path=/dev/rcd0d, status=inserted + +#======================================================================= +# BOOT: +# This defines the boot sequence. Now you can specify up to 3 boot drives, +# which can be 'floppy', 'disk', 'cdrom' or 'network' (boot ROM). +# Legacy 'a' and 'c' are also supported. +# Examples: +# boot: floppy +# boot: cdrom, disk +# boot: network, disk +# boot: cdrom, floppy, disk +#======================================================================= +boot: disk + +#======================================================================= +# FLOPPY_BOOTSIG_CHECK: disabled=[0|1] +# Enables or disables the 0xaa55 signature check on boot floppies +# Defaults to disabled=0 +# Examples: +# floppy_bootsig_check: disabled=0 +# floppy_bootsig_check: disabled=1 +#======================================================================= +floppy_bootsig_check: disabled=0 + +#======================================================================= +# LOG: +# Give the path of the log file you'd like Bochs debug and misc. verbiage +# to be written to. If you don't use this option or set the filename to +# '-' the output is written to the console. If you really don't want it, +# make it "/dev/null" (Unix) or "nul" (win32). :^( +# +# Examples: +# log: ./bochs.out +# log: /dev/tty +#======================================================================= +#log: /dev/null +log: bochsout.txt + +#======================================================================= +# LOGPREFIX: +# This handles the format of the string prepended to each log line. +# You may use those special tokens : +# %t : 11 decimal digits timer tick +# %i : 8 hexadecimal digits of cpu current eip (ignored in SMP configuration) +# %e : 1 character event type ('i'nfo, 'd'ebug, 'p'anic, 'e'rror) +# %d : 5 characters string of the device, between brackets +# +# Default : %t%e%d +# Examples: +# logprefix: %t-%e-@%i-%d +# logprefix: %i%e%d +#======================================================================= +#logprefix: %t%e%d + +#======================================================================= +# LOG CONTROLS +# +# Bochs has four severity levels for event logging. +# panic: cannot proceed. If you choose to continue after a panic, +# don't be surprised if you get strange behavior or crashes. +# error: something went wrong, but it is probably safe to continue the +# simulation. +# info: interesting or useful messages. +# debug: messages useful only when debugging the code. This may +# spit out thousands per second. +# +# For events of each level, you can choose to exit Bochs ('fatal'), 'ask', +# 'warn', 'report' or 'ignore'. The choices 'ask' and 'warn' are not supported +# by all guis, since they should bring up a dialog box. The 'warn' dialog is +# designed to confirm errors and the 'ask' dialog is usually used for panics +# and asks the user how to proceed. +# +# It is also possible to specify the 'action' to do for each Bochs facility +# separately (e.g. crash on panics from everything except the cdrom, and only +# report those). See the 'log function' module list in the user documentation. +# +# If you are experiencing many panics, it can be helpful to change +# the panic action to report instead of fatal. However, be aware +# that anything executed after a panic is uncharted territory and can +# cause bochs to become unstable. The panic is a "graceful exit," so +# if you disable it you may get a spectacular disaster instead. +#======================================================================= +panic: action=ask +error: action=report +info: action=report +debug: action=ignore, pci=report # report BX_DEBUG from module 'pci' + +#======================================================================= +# DEBUGGER_LOG: +# Give the path of the log file you'd like Bochs to log debugger output. +# If you really don't want it, make it /dev/null or '-'. :^( +# +# Examples: +# debugger_log: ./debugger.out +#======================================================================= +#debugger_log: /dev/null +#debugger_log: debugger.out +debugger_log: - + +#======================================================================= +# COM1, COM2, COM3, COM4: +# This defines a serial port (UART type 16550A). In the 'term' mode you can +# specify a device to use as com1. This can be a real serial line, or a pty. +# To use a pty (under X/Unix), create two windows (xterms, usually). One of +# them will run bochs, and the other will act as com1. Find out the tty the com1 +# window using the `tty' command, and use that as the `dev' parameter. +# Then do `sleep 1000000' in the com1 window to keep the shell from +# messing with things, and run bochs in the other window. Serial I/O to +# com1 (port 0x3f8) will all go to the other window. +# In socket* and pipe* (win32 only) modes Bochs becomes either socket/named pipe +# client or server. In client mode it connects to an already running server (if +# connection fails Bochs treats com port as not connected). In server mode it +# opens socket/named pipe and waits until a client application connects to it +# before starting simulation. This mode is useful for remote debugging (e.g. +# with gdb's "target remote host:port" command or windbg's command line option +# -k com:pipe,port=\\.\pipe\pipename). Socket modes use simple TCP communication, +# pipe modes use duplex byte mode pipes. +# Other serial modes are 'null' (no input/output), 'file' (output to a file +# specified as the 'dev' parameter and changeable at runtime), 'raw' (use the +# real serial port - partly implemented on win32), 'mouse' (standard serial +# mouse - requires mouse option setting 'type=serial', 'type=serial_wheel' or +# 'type=serial_msys'). +# +# Examples: +# com1: enabled=1, mode=null +# com1: enabled=1, mode=mouse +# com2: enabled=1, mode=file, dev=serial.out +# com3: enabled=1, mode=raw, dev=com1 +# com3: enabled=1, mode=socket-client, dev=localhost:8888 +# com3: enabled=1, mode=socket-server, dev=localhost:8888 +# com4: enabled=1, mode=pipe-client, dev=\\.\pipe\mypipe +# com4: enabled=1, mode=pipe-server, dev=\\.\pipe\mypipe +#======================================================================= +#com1: enabled=1, mode=term, dev=/dev/ttyp9 + + +#======================================================================= +# PARPORT1, PARPORT2: +# This defines a parallel (printer) port. When turned on and an output file is +# defined the emulated printer port sends characters printed by the guest OS +# into the output file. On some platforms a device filename can be used to +# send the data to the real parallel port (e.g. "/dev/lp0" on Linux, "lpt1" on +# win32 platforms). The output file can be changed at runtime. +# +# Examples: +# parport1: enabled=1, file="parport.out" +# parport2: enabled=1, file="/dev/lp0" +# parport1: enabled=0 +#======================================================================= +parport1: enabled=1, file="parport.out" + +#======================================================================= +# SOUND: +# This defines the lowlevel sound driver(s) for the wave (PCM) input / output +# and the MIDI output feature and (if necessary) the devices to be used. +# It can have several of the following properties. +# All properties are in the format sound: property=value +# +# waveoutdrv: +# This defines the driver to be used for the waveout feature. +# Possible values are 'file' (all wave data sent to file), 'dummy' (no +# output) and the platform-dependant drivers 'alsa', 'oss', 'osx', 'sdl' +# and 'win'. +# waveout: +# This defines the device to be used for wave output (if necessary) or +# the output file for the 'file' driver. +# waveindrv: +# This defines the driver to be used for the wavein feature. +# Possible values are 'dummy' (recording silence) and platform-dependent +# drivers 'alsa', 'oss', 'sdl' and 'win'. +# wavein: +# This defines the device to be used for wave input (if necessary). +# midioutdrv: +# This defines the driver to be used for the MIDI output feature. +# Possible values are 'file' (all MIDI data sent to file), 'dummy' (no +# output) and platform-dependent drivers 'alsa', 'oss', 'osx' and 'win'. +# midiout: +# This defines the device to be used for MIDI output (if necessary). +# driver: +# This defines the driver to be used for all sound features with one +# property. Possible values are 'default' (platform default) and all +# other choices described above. Overriding one or more settings with +# the specific driver parameter is possible. +# +# Example for different drivers: +# sound: waveoutdrv=sdl, waveindrv=alsa, midioutdrv=dummy +#======================================================================= +#sound: driver=default, waveout=/dev/dsp. wavein=, midiout= +#sound: waveoutdrv=sdl, waveindrv=alsa, midioutdrv=dummy + +#======================================================================= +# SPEAKER: +# This defines the PC speaker output mode. In the 'sound' mode the beep +# is generated by the square wave generator which is a part of the +# lowlevel sound support. The 'system' mode is only available on Linux +# and Windows. On Linux /dev/console is used for output and on Windows +# the Beep() function. The 'gui' mode forwards the beep to the related +# gui methods (currently only used by the Carbon gui). +#======================================================================= +speaker: enabled=1, mode=sound + +#======================================================================= +# SB16: +# This defines the SB16 sound emulation. It can have several of the +# following properties. +# All properties are in the format sb16: property=value +# +# enabled: +# This optional property controls the presence of the SB16 emulation. +# The emulation is turned on unless this property is used and set to 0. +# midimode: This parameter specifies what to do with the MIDI output. +# 0 = no output +# 1 = output to device specified with the sound option (system dependent) +# 2 = MIDI or raw data output to file (depends on file name extension) +# 3 = dual output (mode 1 and 2 at the same time) +# midifile: This is the file where the midi output is stored (midimode 2 or 3). +# wavemode: This parameter specifies what to do with the PCM output. +# 0 = no output +# 1 = output to device specified with the sound option (system dependent) +# 2 = VOC, WAV or raw data output to file (depends on file name extension) +# 3 = dual output (mode 1 and 2 at the same time) +# wavefile: This is the file where the wave output is stored (wavemode 2 or 3). +# loglevel: +# 0=no log +# 1=resource changes, midi program and bank changes +# 2=severe errors +# 3=all errors +# 4=all errors plus all port accesses +# 5=all errors and port accesses plus a lot of extra info +# log: The file to write the sb16 emulator messages to. +# dmatimer: +# microseconds per second for a DMA cycle. Make it smaller to fix +# non-continuous sound. 750000 is usually a good value. This needs a +# reasonably correct setting for the IPS parameter of the CPU option. +# +# Examples for output modes: +# sb16: midimode=2, midifile="output.mid", wavemode=1 # MIDI to file +# sb16: midimode=1, wavemode=3, wavefile="output.wav" # wave to file and device +#======================================================================= +#sb16: enabled=1, midimode=1, wavemode=1, loglevel=5, log=sb16.log, dmatimer=600000 + +#======================================================================= +# ES1370: +# This defines the ES1370 sound emulation (recording and playback - except +# DAC1+DAC2 output at the same time). The parameter 'enabled' controls the +# presence of the device. The wave and MIDI output can be sent to device, file +# or both using the parameters 'wavemode', 'wavefile', 'midimode' and +# 'midifile'. See the description of these parameters at the SB16 directive. +# +# Examples: +# es1370: enabled=1, wavemode=1 # use 'sound' parameters +# es1370: enabled=1, wavemode=2, wavefile=output.voc # send output to file +#======================================================================= +#es1370: enabled=1, wavemode=1 + +#======================================================================= +# ne2k: NE2000 compatible ethernet adapter +# +# Format: +# ne2k: enabled=1, ioaddr=IOADDR, irq=IRQ, mac=MACADDR, ethmod=MODULE, +# ethdev=DEVICE, script=SCRIPT, bootrom=BOOTROM +# +# IOADDR, IRQ: You probably won't need to change ioaddr and irq, unless there +# are IRQ conflicts. These arguments are ignored when assign the ne2k to a +# PCI slot. +# +# MAC: The MAC address MUST NOT match the address of any machine on the net. +# Also, the first byte must be an even number (bit 0 set means a multicast +# address), and you cannot use ff:ff:ff:ff:ff:ff because that's the broadcast +# address. For the ethertap module, you must use fe:fd:00:00:00:01. There may +# be other restrictions too. To be safe, just use the b0:c4... address. +# +# ETHDEV: The ethdev value is the name of the network interface on your host +# platform. On UNIX machines, you can get the name by running ifconfig. On +# Windows machines, you must run niclist to get the name of the ethdev. +# Niclist source code is in misc/niclist.c and it is included in Windows +# binary releases. +# The 'socket' module uses this parameter to specify the UDP port for +# receiving packets and (optional) the host to connect. +# +# SCRIPT: The script value is optional, and is the name of a script that +# is executed after bochs initialize the network interface. You can use +# this script to configure this network interface, or enable masquerading. +# This is mainly useful for the tun/tap devices that only exist during +# Bochs execution. The network interface name is supplied to the script +# as first parameter. +# The 'slirp' module uses this parameter to specify a config file for +# setting up an alternative IP configuration or additional features. +# The 'vnet' module uses this parameter to specify an alternative +# log file name. +# +# BOOTROM: The bootrom value is optional, and is the name of the ROM image +# to load. Note that this feature is only implemented for the PCI version of +# the NE2000. +# +# If you don't want to make connections to any physical networks, +# you can use the following 'ethmod's to simulate a virtual network. +# null: All packets are discarded, but logged to a few files. +# vde: Virtual Distributed Ethernet +# vnet: ARP, ICMP-echo(ping), DHCP and read/write TFTP are simulated. +# The virtual host uses 192.168.10.1. +# DHCP assigns 192.168.10.2 to the guest. +# TFTP uses the 'ethdev' value for the root directory and doesn't +# overwrite files. +# socket: Connect up to 6 Bochs instances with external program 'bxhub' +# (simulating an ethernet hub). It provides the same services as the +# 'vnet' module and assigns IP addresses like 'slirp' (10.0.2.x). +# +#======================================================================= +# ne2k: ioaddr=0x300, irq=9, mac=fe:fd:00:00:00:01, ethmod=fbsd, ethdev=en0 #macosx +# ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:00, ethmod=fbsd, ethdev=xl0 +# ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:00, ethmod=linux, ethdev=eth0 +# ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:01, ethmod=win32, ethdev=MYCARD +# ne2k: ioaddr=0x300, irq=9, mac=fe:fd:00:00:00:01, ethmod=tap, ethdev=tap0 +# ne2k: ioaddr=0x300, irq=9, mac=fe:fd:00:00:00:01, ethmod=tuntap, ethdev=/dev/net/tun0, script=./tunconfig +# ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:01, ethmod=null, ethdev=eth0 +# ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:01, ethmod=vde, ethdev="/tmp/vde.ctl" +# ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:01, ethmod=vnet, ethdev="c:/temp" +# ne2k: mac=b0:c4:20:00:00:01, ethmod=socket, ethdev=40000 # use localhost +# ne2k: mac=b0:c4:20:00:00:01, ethmod=socket, ethdev=mymachine:40000 +# ne2k: mac=b0:c4:20:00:00:01, ethmod=slirp, script=slirp.conf, bootrom=ne2k_pci.rom + +#======================================================================= +# pcipnic: Bochs/Etherboot pseudo-NIC +# +# Format: +# pcipnic: enabled=1, mac=MACADDR, ethmod=MODULE, ethdev=DEVICE, script=SCRIPT, +# bootrom=BOOTROM +# +# The pseudo-NIC accepts the same syntax (for mac, ethmod, ethdev, script, +# bootrom) and supports the same networking modules as the NE2000 adapter. +#======================================================================= +#pcipnic: enabled=1, mac=b0:c4:20:00:00:00, ethmod=vnet + +#======================================================================= +# e1000: Intel(R) 82540EM Gigabit Ethernet adapter +# +# Format: +# e1000: enabled=1, mac=MACADDR, ethmod=MODULE, ethdev=DEVICE, script=SCRIPT +# bootrom=BOOTROM +# +# The E1000 accepts the same syntax (for mac, ethmod, ethdev, script, bootrom) +# and supports the same networking modules as the NE2000 adapter. +#======================================================================= +#e1000: enabled=1, mac=52:54:00:12:34:56, ethmod=slirp, script=slirp.conf + +#======================================================================= +# USB_UHCI: +# This option controls the presence of the USB root hub which is a part +# of the i440FX PCI chipset. With the portX parameter you can connect devices +# to the hub (currently supported: 'mouse', 'tablet', 'keypad', 'disk', 'cdrom', +# 'floppy', 'hub' and 'printer'). +# +# If you connect the mouse or tablet to one of the ports, Bochs forwards the +# mouse movement data to the USB device instead of the selected mouse type. +# When connecting the keypad to one of the ports, Bochs forwards the input of +# the numeric keypad to the USB device instead of the PS/2 keyboard. +# +# To connect a 'flat' mode image as a USB hardisk you can use the 'disk' device +# with the path to the image separated with a colon. To use other disk image modes +# similar to ATA disks the syntax 'disk:mode:filename' must be used (see below). +# +# To emulate a USB cdrom you can use the 'cdrom' device name and the path to +# an ISO image or raw device name also separated with a colon. An option to +# insert/eject media is available in the runtime configuration. +# +# To emulate a USB floppy you can use the 'floppy' device with the path to the +# image separated with a colon. To use the VVFAT image mode similar to the +# legacy floppy the syntax 'floppy:vvfat:directory' must be used (see below). +# An option to insert/eject media is available in the runtime configuration. +# +# The device name 'hub' connects an external hub with max. 8 ports (default: 4) +# to the root hub. To specify the number of ports you have to add the value +# separated with a colon. Connecting devices to the external hub ports is only +# available in the runtime configuration. +# +# The device 'printer' emulates the HP Deskjet 920C printer. The PCL data is +# sent to a file specified in bochsrc.txt. The current code appends the PCL +# code to the file if the file already existed. The output file can be +# changed at runtime. +# +# The optionsX parameter can be used to assign specific options to the device +# connected to the corresponding USB port. Currently this feature is used to +# set the speed reported by device ('low', 'full', 'high' or 'super'). The +# availabe speed choices depend on both HC and device. The option 'debug' turns +# on debug output for the device at connection time. +# For the USB 'disk' device the optionsX parameter can be used to specify an +# alternative redolog file (journal) of some image modes. For 'vvfat' mode USB +# disks the optionsX parameter can be used to specify the disk size (range +# 128M ... 128G). If the size is not specified, it defaults to 504M. +# For the USB 'floppy' device the optionsX parameter can be used to specify an +# alternative device ID to be reported. Currently only the model "teac" is +# supported (can fix hw detection in some guest OS). The USB floppy also +# accepts the parameter "write_protected" with valid values 0 and 1 to select +# the access mode (default is 0). +#======================================================================= +#usb_uhci: enabled=1 +#usb_uhci: enabled=1, port1=mouse, port2=disk:usbstick.img +#usb_uhci: enabled=1, port1=hub:7, port2=disk:growing:usbdisk.img +#usb_uhci: enabled=1, port2=disk:undoable:usbdisk.img, options2=journal:redo.log +#usb_uhci: enabled=1, port2=disk:vvfat:vvfat, options2="debug,speed:full" +#usb_uhci: enabled=1, port1=printer:printdata.bin, port2=cdrom:image.iso +#usb_uhci: enabled=1, port2=floppy:vvfat:diskette, options2="model:teac" + +#======================================================================= +# USB_OHCI: +# This option controls the presence of the USB OHCI host controller with a +# 2-port hub. The portX parameter accepts the same device types with the same +# syntax as the UHCI controller (see above). The optionsX parameter is also +# available on OHCI. +#======================================================================= +#usb_ohci: enabled=1 +#usb_ohci: enabled=1, port1=printer:usbprinter.bin + +#======================================================================= +# USB_EHCI: +# This option controls the presence of the USB EHCI host controller with a +# 6-port hub. The portX parameter accepts the same device types with the +# same syntax as the UHCI controller (see above). The optionsX parameter is +# also available on EHCI. +#======================================================================= +#usb_ehci: enabled=1 + +#======================================================================= +# USB_XHCI: +# This option controls the presence of the USB xHCI host controller with a +# 4-port hub. The portX parameter accepts the same device types with the +# same syntax as the UHCI controller (see above). The optionsX parameter is +# also available on xHCI. NOTE: port 1 and 2 are USB3 and only support +# super-speed devices, but port 3 and 4 are USB2 and support speed settings +# low, full and high. +#======================================================================= +#usb_xhci: enabled=1 + +#======================================================================= +# PCIDEV: +# PCI host device mapping +# WARNING: This Bochs feature is not maintained yet and may fail. +#======================================================================= +#pcidev: vendor=0x1234, device=0x5678 + +#======================================================================= +# GDBSTUB: +# Enable GDB stub. See user documentation for details. +# Default value is enabled=0. +# WARNING: This Bochs feature is not maintained yet and may fail. +#======================================================================= +#gdbstub: enabled=0, port=1234, text_base=0, data_base=0, bss_base=0 + +#======================================================================= +# MAGIC_BREAK: +# This enables the "magic breakpoint" feature when using the debugger. +# The useless cpu instruction XCHG BX, BX causes Bochs to enter the +# debugger mode. This might be useful for software development. +# +# Example: +# magic_break: enabled=1 +#======================================================================= +#magic_break: enabled=1 + +#======================================================================= +# DEBUG_SYMBOLS: +# This loads symbols from the specified file for use in Bochs' internal +# debugger. Symbols are loaded into global context. This is equivalent to +# issuing ldsym debugger command at start up. +# +# Example: +# debug_symbols: file="kernel.sym" +# debug_symbols: file="kernel.sym", offset=0x80000000 +#======================================================================= +#debug_symbols: file="kernel.sym" + +#print_timestamps: enabled=1 + +#======================================================================= +# PORT_E9_HACK: +# The 0xE9 port doesn't exists in normal ISA architecture. However, we +# define a convention here, to display on the console of the system running +# Bochs anything that is written to it. The idea is to provide debug output +# very early when writing BIOS or OS code for example, without having to +# bother with setting up a serial port or etc. Reading from port 0xE9 will +# will return 0xe9 to let you know if the feature is available. +# Leave this 0 unless you have a reason to use it. +# +# Example: +# port_e9_hack: enabled=1 +#======================================================================= +#port_e9_hack: enabled=1 + +#======================================================================= +# other stuff +#======================================================================= +# WARNING: This Bochs feature is not maintained yet. Is it still used ? +#load32bitOSImage: os=nullkernel, path=../kernel.img, iolog=../vga_io.log +#load32bitOSImage: os=linux, path=../linux.img, iolog=../vga_io.log, initrd=../initrd.img + +#======================================================================= +# fullscreen: ONLY IMPLEMENTED ON AMIGA +# Request that Bochs occupy the entire screen instead of a +# window. +# +# Examples: +# fullscreen: enabled=0 +# fullscreen: enabled=1 +#======================================================================= +#fullscreen: enabled=0 +#screenmode: name="sample" + +#======================================================================= +# USER_PLUGIN: +# Load user-defined plugin. This option is available only if Bochs is +# compiled with plugin support. Maximum 8 different plugins are supported. +# See the example in the Bochs sources how to write a plugin device. +#======================================================================= +#user_plugin: name=testdev + +#======================================================================= +# for Macintosh, use the style of pathnames in the following +# examples. +# +# vgaromimage: :bios:VGABIOS-elpin-2.40 +# romimage: file=:bios:BIOS-bochs-latest, address=0xf0000 +# floppya: 1_44=[fd:], status=inserted +#======================================================================= + +#======================================================================= +# MEGS +# Set the number of Megabytes of physical memory you want to emulate. +# The default is 32MB, most OS's won't need more than that. +# The maximum amount of memory supported is 2048Mb. +# The 'MEGS' option is deprecated. Use 'MEMORY' option instead. +#======================================================================= +#megs: 256 +#megs: 128 +#megs: 64 +#megs: 32 +#megs: 16 +#megs: 8 diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0e0eaef --- /dev/null +++ b/Makefile @@ -0,0 +1,124 @@ +OLD_KOBJ=multiboot.o kmain.o vga_terminal.o stdlib.o x86stdlib.o \ + gdt.o x86gdt.o pic.o idt.o x86idt.o x86int.o string.o \ + paging.o x86utils.o x86_utils.o keyboard.o exceptions.o \ + memory.o pci.o x86io.o pit.o ahci.o + +KOBJ=start.o kmain.o x64io.o stdlib.o string.o vga_terminal.o \ + x64stdlib.o va_list.o idt.o x64idt.o x64ints.o pic.o pit.o \ + exceptions.o keyboard.o paging.o multiboot.o lvalloc.o \ + pci.o ahci.o disk.o fat.o heap.o x64utils.o file.o \ + x64font.o video.o bmp.o +LOBJ=loader.o lmain.o x86io.o x86stdlib.o x86gdt.o stdlib.o \ + string.o vga_terminal.o gdt.o x86enter64.o memory.o idt.o \ + exceptions.o x86idt.o x86int.o + +KSRC_DIR=kernel/ +LSRC_DIR=loader/ +KOBJ_DIR=kobj/ +LOBJ_DIR=lobj/ +INCLUDE=kernel/ +LINCLUDE=loader/ + +TOOLCHAIN32=/home/adriane/opt/cross +HDISK=/home/adriane/lenochka_vm/hdisk.img +CC32=$(TOOLCHAIN32)/bin/i686-elf-gcc +AS32=nasm +LD32=$(TOOLCHAIN32)/i686-elf/bin/ld + +TOOLCHAIN=/home/adriane/opt64/cross +CC=$(TOOLCHAIN)/bin/x86_64-elf-gcc +AS=nasm +LD=$(TOOLCHAIN)/x86_64-elf/bin/ld + +# 32 bit +OPT_C32=-O0 -Wall -std=c99 -nostdlib -nostartfiles -nodefaultlibs \ + -Wimplicit-function-declaration -fno-stack-protector +OPT_ASM32=-s -f elf32 +OPT_LD32=-T loader.ld --build-id=none -m elf_i386 -Map lmap.txt + +# 64 bit +OPT_C=-m64 -ffreestanding -z max-page-size=0x1000 -mno-red-zone \ + -mno-mmx -mno-sse -mno-sse2 -std=gnu99 -O0 -Wall -Wextra \ + -nostdlib -nostartfiles -nodefaultlibs -mcmodel=large +OPT_ASM=-s -f elf64 +OPT_LD=-T lenochka.ld --build-id=none -m elf_x86_64 -Map kmap.txt \ + -z max-page-size=0x1000 + +%.o: $(KSRC_DIR)%.c + $(CC) $(OPT_C) -c $< -o $(KOBJ_DIR)$@ -I$(INCLUDE) +%.o: $(KSRC_DIR)%.asm + $(AS) $(OPT_ASM) $< -o $(KOBJ_DIR)$@ + +loader.elf: + $(AS32) $(OPT_ASM32) $(LSRC_DIR)loader.asm -o $(LOBJ_DIR)loader.o + $(AS32) $(OPT_ASM32) $(LSRC_DIR)x86io.asm -o $(LOBJ_DIR)x86io.o + $(AS32) $(OPT_ASM32) $(LSRC_DIR)x86stdlib.asm -o $(LOBJ_DIR)x86stdlib.o + $(AS32) $(OPT_ASM32) $(LSRC_DIR)x86gdt.asm -o $(LOBJ_DIR)x86gdt.o + $(AS32) $(OPT_ASM32) $(LSRC_DIR)x86idt.asm -o $(LOBJ_DIR)x86idt.o + $(AS32) $(OPT_ASM32) $(LSRC_DIR)x86int.asm -o $(LOBJ_DIR)x86int.o + + $(CC32) $(OPT_C32) -c $(LSRC_DIR)stdlib.c -o $(LOBJ_DIR)stdlib.o -I$(LINCLUDE) + $(CC32) $(OPT_C32) -c $(LSRC_DIR)gdt.c -o $(LOBJ_DIR)gdt.o -I$(LINCLUDE) + $(CC32) $(OPT_C32) -c $(LSRC_DIR)vga_terminal.c -o $(LOBJ_DIR)vga_terminal.o -I$(LINCLUDE) + $(CC32) $(OPT_C32) -c $(LSRC_DIR)string.c -o $(LOBJ_DIR)string.o -I$(LINCLUDE) + $(CC32) $(OPT_C32) -c $(LSRC_DIR)memory.c -o $(LOBJ_DIR)memory.o -I$(LINCLUDE) + $(CC32) $(OPT_C32) -c $(LSRC_DIR)idt.c -o $(LOBJ_DIR)idt.o -I$(LINCLUDE) + $(CC32) $(OPT_C32) -c $(LSRC_DIR)exceptions.c -o $(LOBJ_DIR)exceptions.o -I$(LINCLUDE) + $(CC32) $(OPT_C32) -c $(LSRC_DIR)lmain.c -o $(LOBJ_DIR)lmain.o -I$(LINCLUDE) + + $(AS32) $(OPT_ASM32) $(LSRC_DIR)x86enter64.asm -o $(LOBJ_DIR)x86enter64.o + + $(LD32) $(OPT_LD32) -o os/loader.elf $(addprefix $(LOBJ_DIR),$(LOBJ)) + +lenochka.elf: $(KOBJ) + $(LD) $(OPT_LD) -o os/lenochka.elf $(addprefix $(KOBJ_DIR),$(KOBJ)) + +mkbootldr: + nasm -f bin boot/stage1.asm -o boot/boot.bin + nasm -f bin boot/stage2.asm -o os/BOOTLOAD.BIN + +format: + dd if=/dev/zero of=vm/hdisk.img bs=1M count=64 + mkdosfs -F 16 vm/hdisk.img + +mount: + losetup /dev/loop0 $(HDISK) + losetup /dev/loop1 $(HDISK) -o 1048576 + losetup /dev/loop2 $(HDISK) -o 34603008 + mount -o umask=000 /dev/loop1 /media/img + mount -o umask=000 /dev/loop2 /media/disk1 + +update: + cp os/loader.elf /media/img/boot/loader.elf + cp os/lenochka.elf /media/img/boot/lenochka.elf + +unmount: + umount /media/img + umount /media/disk1 + losetup -d /dev/loop0 + losetup -d /dev/loop1 + losetup -d /dev/loop2 + +unmount1: + losetup -d /dev/loop0 + losetup -d /dev/loop1 + losetup -d /dev/loop2 + +install-usb: + mount -o umask=000 /dev/sdb1 /media/usb_3 + cp os/loader.elf /media/usb_3/boot/loader.elf + cp os/lenochka.elf /media/usb_3/boot/lenochka.elf + umount /media/usb_3 + +run-qemu: + qemu-system-x86_64 -hda $(HDISK) -m 512M -machine q35 + +run-qemu-debug: + qemu-system-x86_64 -hda $(HDISK) -m 512M -machine q35 -d int \ + -no-shutdown -no-reboot -d guest_errors + +clean: + rm -rf kobj/* + rm -rf lobj/* + +all: lenochka.elf diff --git a/bdf2bin b/bdf2bin new file mode 100644 index 0000000..e1ddff9 Binary files /dev/null and b/bdf2bin differ diff --git a/bdf2bin.c b/bdf2bin.c new file mode 100644 index 0000000..5a52d0f --- /dev/null +++ b/bdf2bin.c @@ -0,0 +1,95 @@ +#include +#include +#include +#include + +//align(8) chars = amount of characters +//align(8) encoding table - 2 byte array [chars] +//align(8) bitmap table - 16 byte array [chars] + +#define ROUND2_UP(val,bit) (( (val>>bit) \ + + ( (val&((1<cmd & SCMD_ST)) + port->cmd |= SCMD_ST; + port->cmd |= (1<<28); + + port->serr = port->serr; + port->is = port->is; + + //If idle, reset PxCMD + /*if(port->cmd & (0x7F<<23)) + { + port->cmd &= ~SCMD_ST; + + port->cmd |= SCMD_ST|SCMD_FRE|(1<<3); + }*/ + + port->ci = (1<tfd & ATA_DEV_BUSY) + { + } +} + +u64 ahci_read_sectors(hba_port_t* port,u64 lba,u64 sectors, + u64 __phys buf) +{ + hba_cmd_header_t* cmdhdr = (hba_cmd_header_t*)port->clb; + hba_cmd_tbl_t* cmdtbl = (hba_cmd_tbl_t*)cmdhdr->ctba; + fis_reg_h2d_t* fis = (fis_reg_h2d_t*)&cmdtbl->cfis; + + port->is = 0xFFFFFFFF; + + cmdhdr->cfl = sizeof(fis_reg_h2d_t)/sizeof(u32); + cmdhdr->w = 0; + cmdhdr->prdtl = (sectors>>4)+1; + + kmemzero(cmdtbl, sizeof(hba_cmd_tbl_t) + + (cmdhdr->prdtl-1)*sizeof(hba_prdt_entry_t)); + kmemzero(fis,sizeof(fis_reg_h2d_t)); + + fis->fis_type = FIS_TYPE_REG_H2D; + fis->c = 1; + fis->command = ATA_CMD_READ_DMA_EX; + + fis->lba0 = lba&0xFF; + fis->lba1 = (lba>>8)&0xFF; + fis->lba2 = (lba>>16)&0xFF; + fis->device = ATA_LBA_MODE; + fis->lba3 = (lba>>24)&0xFF; + fis->lba4 = (lba>>32)&0xFF; + fis->lba5 = (lba>>36)&0xFF; + + fis->countl = sectors&0xFF; + fis->counth = (sectors>>8)&0xFF; + + u64 i; + for(i = 0; i < (u64)(cmdhdr->prdtl-1); i++) + { + kmemzero(&cmdtbl->prdt_entry[i],sizeof(hba_prdt_entry_t)); + cmdtbl->prdt_entry[i].dba = buf; + cmdtbl->prdt_entry[i].dbc = 8191; + cmdtbl->prdt_entry[i].i = 1; + + buf += 8192; + sectors -= 16; + } + cmdtbl->prdt_entry[i].dba = buf; + cmdtbl->prdt_entry[i].dbc = (sectors<<9)-1; + cmdtbl->prdt_entry[i].i = 1; + + ahci_issue_cmd(port,0); + if(port->is & (1<<30)) + { + kprintf("disk read error!\n"); + return 1; + } + return 0; +} + +u64 ahci_identify(hba_port_t* port) +{ + hba_cmd_header_t* cmdhdr = (hba_cmd_header_t*)port->clb; + hba_cmd_tbl_t* cmdtbl = (hba_cmd_tbl_t*)cmdhdr->ctba; + fis_reg_h2d_t* fis = (fis_reg_h2d_t*)&cmdtbl->cfis; + + port->is = 0xFFFFFFFF; + + cmdhdr->cfl = sizeof(fis_reg_h2d_t)/sizeof(u32); + cmdhdr->w = 0; + cmdhdr->prdtl = 1; + + kmemzero(cmdtbl, sizeof(hba_cmd_tbl_t) + + (cmdhdr->prdtl-1)*sizeof(hba_prdt_entry_t)); + kmemzero(fis,sizeof(fis_reg_h2d_t)); + + fis->fis_type = FIS_TYPE_REG_H2D; + fis->c = 1; + fis->command = ATA_CMD_IDENTIFY; + + fis->lba0 = 0; + fis->lba1 = 0; + fis->lba2 = 0; + fis->device = ATA_LBA_MODE; + fis->lba3 = 0; + fis->lba4 = 0; + fis->lba5 = 0; + + fis->countl = 1; + fis->counth = 0; + + cmdtbl->prdt_entry[0].dba = (u64)s_ahci.buf; + cmdtbl->prdt_entry[0].dbc = 511; + cmdtbl->prdt_entry[0].i = 1; + + ahci_issue_cmd(port,0); + + return *(u64*)(&s_ahci.buf[100]); +} + +void port_start(hba_port_t* port) +{ + //while(port->cmd & (1<<15)){__asm("nop");} + + port->cmd |= SCMD_ST; + port->cmd |= SCMD_FRE; +} + +void port_stop(hba_port_t* port) +{ + if(!(port->cmd & SCMD_ST)) return; + + port->cmd &= ~SCMD_ST; + + port->cmd &= ~SCMD_ST; + while(port->cmd & SCMD_CR) + { + sleep(1000); + } + + port->cmd &= ~SCMD_FRE; + while(port->cmd & SCMD_FR) + { + sleep(1000); + } + + port->cmd &= ~SCMD_FRE; +} + +void port_rebase(hba_port_t* port) +{ + port_stop(port); + + + port->clb = (u64)lvalloc(4096); + port->fb = (u64)lvalloc(4096); + + for(u64 i = 0; i < 32; i++) + { + hba_cmd_header_t* cmdhdr = &((hba_cmd_header_t*)port->clb)[i]; + + cmdhdr->prdtl = 8; + cmdhdr->ctba = (u64)lvalloc(4096); + } + + port_start(port); +} + +hba_port_t* ahci_get_sata() +{ + return s_ahci.sata; +} + +hba_port_t* ahci_get_atapi() +{ + return s_ahci.atapi; +} + +void ahci_init() +{ + pci_device_t ahci; + u32 bar; + + //Use PCI + ahci = pci_find_device(0x01,0x06); + if(ahci == 0) + { + kprintf("AHCI not found!\n"); + return; + } + bar = pci_read_config_word_dev(ahci,0x24); + s_ahci.hba_phys = (u64)(bar & 0xFFFFFFF0); + + kprintf("HBA %x\n",s_ahci.hba_phys); + //Identity map + page_map((void*)s_ahci.hba_phys,(void*)s_ahci.hba_phys, + 16384); + HBA = (hba_mem_t*)s_ahci.hba_phys; + + HBA->ghc |= (1<<31); //Enable GHC.AE + if(HBA->cap & (1<<27)) + { + kprintf("AHCI supports stagered spin-up\n"); + } + if(HBA->cap & (1<<31)) + { + kprintf("AHCI supports 64-bit mode\n"); + } + + s_ahci.sata = NULL; + s_ahci.atapi = NULL; + //kprintf("pi %x\n",HBA->pi); + for(u32 i = 0; i < 32; i++) + { + hba_port_t* port = &HBA->ports[i]; + if(!((HBA->pi>>i)&1)) continue; + switch(port->sig) + { + case SATA_SIG_ATA: s_ahci.sata = port; break; + case SATA_SIG_ATAPI: s_ahci.atapi = port; break; + } + + if(port->cmd & (SCMD_ST|SCMD_FR|SCMD_CR|SCMD_FRE)) //Isn't IDLE + { + port->cmd &= ~SCMD_ST; + while(port->cmd & SCMD_CR) + { + sleep(1000); + } + + port->cmd &= ~SCMD_FRE; + while(port->cmd & SCMD_FR) + { + sleep(1000); + } + } + + //spin-up + port->cmd |= (1<<1); + + //Start it again + //port->cmd |= SCMD_ST|SCMD_FRE|(1<<2); + + //Initialize port + port_rebase(port); + + port->is = 0xFFFFFFFF; //RWC + //port->is = 0xFD8000AF; + + //power on + port->cmd |= (1<<2); + } + + s_ahci.buf = (u16*)lvalloc(4096); + + ahci_identify(s_ahci.sata); +} diff --git a/kernel/ahci.h b/kernel/ahci.h new file mode 100644 index 0000000..c1a3069 --- /dev/null +++ b/kernel/ahci.h @@ -0,0 +1,326 @@ +#ifndef __AHCI_H +#define __AHCI_H + +#include "os.h" + +#define SATA_SIG_ATA 0x00000101 // SATA drive +#define SATA_SIG_ATAPI 0xEB140101 // SATAPI drive +#define SATA_SIG_SEMB 0xC33C0101 // Enclosure management bridge +#define SATA_SIG_PM 0x96690101 // Port multiplier + +#define ATA_DEV_BUSY (1<<7) +#define ATA_DEV_DRQ (1<<3) + +typedef struct { + //u32 clb; // 0x00, command list base address, 1K-byte aligned + //u32 clbu; // 0x04, command list base address upper 32 bits + u64 clb; + u64 fb; + + u32 is; // 0x10, interrupt status + u32 ie; // 0x14, interrupt enable + u32 cmd; // 0x18, command and status + u32 rsv0; // 0x1C, Reserved + u32 tfd; // 0x20, task file data + u32 sig; // 0x24, signature + u32 ssts; // 0x28, SATA status (SCR0:SStatus) + u32 sctl; // 0x2C, SATA control (SCR2:SControl) + u32 serr; // 0x30, SATA error (SCR1:SError) + u32 sact; // 0x34, SATA active (SCR3:SActive) + u32 ci; // 0x38, command issue + u32 sntf; // 0x3C, SATA notification (SCR4:SNotification) + u32 fbs; // 0x40, FIS-based switch control + u32 rsv1[11]; // 0x44 ~ 0x6F, Reserved + u32 vendor[4]; // 0x70 ~ 0x7F, vendor specific +} hba_port_t; + +typedef struct +{ + // 0x00 - 0x2B, Generic Host Control + u32 cap; // 0x00, Host capability + u32 ghc; // 0x04, Global host control + u32 is; // 0x08, Interrupt status + u32 pi; // 0x0C, Port implemented + u32 vs; // 0x10, Version + u32 ccc_ctl; // 0x14, Command completion coalescing control + u32 ccc_pts; // 0x18, Command completion coalescing ports + u32 em_loc; // 0x1C, Enclosure management location + u32 em_ctl; // 0x20, Enclosure management control + u32 cap2; // 0x24, Host capabilities extended + u32 bohc; // 0x28, BIOS/OS handoff control and status + + // 0x2C - 0x9F, Reserved + u8 rsv[116]; + + // 0xA0 - 0xFF, Vendor specific registers + u8 vendor[96]; + + // 0x100 - 0x10FF, Port control registers + hba_port_t ports[32]; +} hba_mem_t; + +typedef enum +{ + FIS_TYPE_REG_H2D = 0x27, // Register FIS - host to device + FIS_TYPE_REG_D2H = 0x34, // Register FIS - device to host + FIS_TYPE_DMA_ACT = 0x39, // DMA activate FIS - device to host + FIS_TYPE_DMA_SETUP = 0x41, // DMA setup FIS - bidirectional + FIS_TYPE_DATA = 0x46, // Data FIS - bidirectional + FIS_TYPE_BIST = 0x58, // BIST activate FIS - bidirectional + FIS_TYPE_PIO_SETUP = 0x5F, // PIO setup FIS - device to host + FIS_TYPE_DEV_BITS = 0xA1, // Set device bits FIS - device to host +} fis_type_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_REG_H2D + + u8 pmport:4; // Port multiplier + u8 rsv0:3; // Reserved + u8 c:1; // 1: Command, 0: Control + + u8 command; // Command register + u8 featurel; // Feature register, 7:0 + + // DWORD 1 + u8 lba0; // LBA low register, 7:0 + u8 lba1; // LBA mid register, 15:8 + u8 lba2; // LBA high register, 23:16 + u8 device; // Device register + + // DWORD 2 + u8 lba3; // LBA register, 31:24 + u8 lba4; // LBA register, 39:32 + u8 lba5; // LBA register, 47:40 + u8 featureh; // Feature register, 15:8 + + // DWORD 3 + u8 countl; // Count register, 7:0 + u8 counth; // Count register, 15:8 + u8 icc; // Isochronous command completion + u8 control; // Control register + + // DWORD 4 + u8 rsv1[4]; // Reserved +} fis_reg_h2d_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_REG_D2H + + u8 pmport:4; // Port multiplier + u8 rsv0:2; // Reserved + u8 i:1; // Interrupt bit + u8 rsv1:1; // Reserved + + u8 status; // Status register + u8 error; // Error register + + // DWORD 1 + u8 lba0; // LBA low register, 7:0 + u8 lba1; // LBA mid register, 15:8 + u8 lba2; // LBA high register, 23:16 + u8 device; // Device register + + // DWORD 2 + u8 lba3; // LBA register, 31:24 + u8 lba4; // LBA register, 39:32 + u8 lba5; // LBA register, 47:40 + u8 rsv2; // Reserved + + // DWORD 3 + u8 countl; // Count register, 7:0 + u8 counth; // Count register, 15:8 + u8 rsv3[2]; // Reserved + + // DWORD 4 + u8 rsv4[4]; // Reserved +} fis_reg_d2h_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_DATA + + u8 pmport:4; // Port multiplier + u8 rsv0:4; // Reserved + + u8 rsv1[2]; // Reserved + + // DWORD 1 ~ N + u32 data[1]; // Payload +} fis_data_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_PIO_SETUP + + u8 pmport:4; // Port multiplier + u8 rsv0:1; // Reserved + u8 d:1; // Data transfer direction, 1 - device to host + u8 i:1; // Interrupt bit + u8 rsv1:1; + + u8 status; // Status register + u8 error; // Error register + + // DWORD 1 + u8 lba0; // LBA low register, 7:0 + u8 lba1; // LBA mid register, 15:8 + u8 lba2; // LBA high register, 23:16 + u8 device; // Device register + + // DWORD 2 + u8 lba3; // LBA register, 31:24 + u8 lba4; // LBA register, 39:32 + u8 lba5; // LBA register, 47:40 + u8 rsv2; // Reserved + + // DWORD 3 + u8 countl; // Count register, 7:0 + u8 counth; // Count register, 15:8 + u8 rsv3; // Reserved + u8 e_status; // New value of status register + + // DWORD 4 + u16 tc; // Transfer count + u8 rsv4[2]; // Reserved +} fis_pio_setup_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_DMA_SETUP + + u8 pmport:4; // Port multiplier + u8 rsv0:1; // Reserved + u8 d:1; // Data transfer direction, 1 - device to host + u8 i:1; // Interrupt bit + u8 a:1; // Auto-activate. Specifies if DMA Activate FIS is needed + + u8 rsved[2]; // Reserved + + //DWORD 1&2 + + u64 DMAbufferID; // DMA Buffer Identifier. Used to Identify DMA buffer in host memory. SATA Spec says host specific and not in Spec. Trying AHCI spec might work. + + //DWORD 3 + u32 rsvd; //More reserved + + //DWORD 4 + u32 DMAbufOffset; //Byte offset into buffer. First 2 bits must be 0 + + //DWORD 5 + u32 TransferCount; //Number of bytes to transfer. Bit 0 must be 0 + + //DWORD 6 + u32 resvd; //Reserved + +} fis_dma_setup_t; + +typedef struct +{ + // 0x00 + fis_dma_setup_t dsfis; // DMA Setup FIS + u8 pad0[4]; + + // 0x20 + fis_pio_setup_t psfis; // PIO Setup FIS + u8 pad1[12]; + + // 0x40 + fis_reg_d2h_t rfis; // Register – Device to Host FIS + u8 pad2[4]; + + // 0x58 + u64 sdbfis; // Set Device Bit FIS + + // 0x60 + u8 ufis[64]; + + // 0xA0 + u8 rsv[0x100-0xA0]; +} hba_fis_t; + +typedef struct +{ + // DW0 + u8 cfl:5; // Command FIS length in DWORDS, 2 ~ 16 + u8 a:1; // ATAPI + u8 w:1; // Write, 1: H2D, 0: D2H + u8 p:1; // Prefetchable + + u8 r:1; // Reset + u8 b:1; // BIST + u8 c:1; // Clear busy upon R_OK + u8 rsv0:1; // Reserved + u8 pmp:4; // Port multiplier port + + u16 prdtl; // Physical region descriptor table length in entries + + // DW1 + u32 prdbc; // Physical region descriptor byte count transferred + + // DW2, 3 + //u32 ctba; // Command table descriptor base address + //u32 ctbau; // Command table descriptor base address upper 32 bits + u64 ctba; + + // DW4 - 7 + u32 rsv1[4]; // Reserved +} hba_cmd_header_t; + +typedef struct +{ + //u32 dba; // Data base address + //u32 dbau; // Data base address upper 32 bits + u64 dba; + u32 rsv0; // Reserved + + // DW3 + u32 dbc:22; // Byte count, 4M max + u32 rsv1:9; // Reserved + u32 i:1; // Interrupt on completion +} hba_prdt_entry_t; + +typedef struct +{ + // 0x00 + u8 cfis[64]; // Command FIS + + // 0x40 + u8 acmd[16]; // ATAPI command, 12 or 16 bytes + + // 0x50 + u8 rsv[48]; // Reserved + + // 0x80 + hba_prdt_entry_t prdt_entry[1]; // Physical region descriptor table entries, 0 ~ 65535 +} hba_cmd_tbl_t; + +u64 ahci_read_sectors(hba_port_t* port,u64 lba,u64 sectors, + u64 __phys buf); + +u64 ahci_identify(hba_port_t* port); + +hba_port_t* ahci_get_sata(); +hba_port_t* ahci_get_atapi(); + +void ahci_init(); + +#define AHCI_CLB_SIZE ((sizeof(hba_cmd_header_t)*32)+4096) +#define AHCI_FB_SIZE ((sizeof(hba_fis_t)*32)+4096) + +#define SCMD_ST (1<<0) +#define SCMD_CR (1<<15) +#define SCMD_FR (1<<14) +#define SCMD_FRE (1<<4) + +#define ATA_LBA_MODE 0x40 +#define ATA_CMD_IDENTIFY 0xEC +#define ATA_CMD_READ_DMA_EX 0x25 + +#endif diff --git a/kernel/bmp.c b/kernel/bmp.c new file mode 100644 index 0000000..eb5d376 --- /dev/null +++ b/kernel/bmp.c @@ -0,0 +1,51 @@ +#include "bmp.h" +#include "heap.h" +#include "video.h" +#include "stdlib.h" +#include "defines.h" + +void bmp_draw(u64 px,u64 py,u64 w,u64 h,u8* bmp) +{ + u32 offbits = *(u32*)(bmp+0x0A); + u64 bw,bh,stride; + u64 bc; + u8* bmap = bmp+offbits; + + w = MIN(w,lmem->v_width); + h = MIN(h,lmem->v_height); + + bw = *(u32*)(bmp+0x12); + bh = *(u32*)(bmp+0x16); + bc = *(u16*)(bmp+0x1C)>>3; + + stride = ROUND2_UP((bw*bc),2); + + u64 f_w,f_h; + if(!w) f_w = 0x00010000; + else f_w = (w<<32) / (bw<<16); + if(!h) f_h = 0x00010000; + else f_h = (h<<32) / (bh<<16); + + u64 c_y = 0; + for(u64 y = 0; y < bh; y++) + { + u64 c_x = 0; + u8* line = &bmap[(bh-y-1)*stride]; + for(u64 x = 0; x < bw; x++) + { + u8 r,g,b; + r = *line++; + g = *line++; + b = *line++; + u32 color = (b<<16|g<<8|r); + for(u64 i = 0; i < (f_w>>16); i++) + { + video_pixel(px+c_x+i,py+c_y,color); + for(u64 j = 1; j < (f_h>>16); j++) + video_pixel(px+c_x+i,py+c_y+j,color); + } + c_x = ((c_x<<16) + f_w) >> 16; + } + c_y = ((c_y<<16) + f_h) >> 16; + } +} diff --git a/kernel/bmp.h b/kernel/bmp.h new file mode 100644 index 0000000..56d5eb9 --- /dev/null +++ b/kernel/bmp.h @@ -0,0 +1,8 @@ +#ifndef __BMP_H +#define __BMP_H + +#include "os.h" + +void bmp_draw(u64 px,u64 py,u64 w,u64 h,u8* bmp); + +#endif diff --git a/kernel/defines.h b/kernel/defines.h new file mode 100644 index 0000000..c9f187f --- /dev/null +++ b/kernel/defines.h @@ -0,0 +1,10 @@ +#ifndef __DEFINES_H +#define __DEFINES_H + +#define ROUND2_UP(val,bit) (( (val>>bit) \ + + ( (val&((1<= 26) return NULL; + return &s_diskhost.disk[idx]; +} + +u32 disk_available() +{ + u32 disks; + for(u64 i = 0; i < 26; i++) + { + if(s_diskhost.disk[i].phys.type != DISK_INVALID) + disks |= (1<phys.type) + { + case DISK_INVALID: break; + case DISK_AHCI: + do { + ret = ahci_read_sectors(disk->phys.hba_port,lba,sectors, + (u64)page_v2p((void*)buf)); + if(ret) sleep(1000); + } while(ret != 0 || attempts++ < 2); + break; + } + return (attempts == 2); +} + +u64 disk_write_ex(disk_t* disk,u64 lba,u64 sectors,void* __virt buf) +{ + u64 ret,attempts = 0; + switch(disk->phys.type) + { + case DISK_INVALID: break; + case DISK_AHCI: + do { + ret = ahci_read_sectors(disk->phys.hba_port,lba,sectors, + (u64)page_v2p((void*)buf)); + if(ret) sleep(1000); + } while(ret != 0 || attempts++ < 2); + break; + } + return (attempts == 2); +} + +u64 disk_read(disk_t* disk,u64 lba,u64 sectors,void* __virt buf) +{ + kmemzero(buf,sectors<<9); + if((lba+sectors) >= disk->parts[disk->cur_part].lba_num) + { + kprintf("disk_read out of bounds!\n"); + return 1; + } + + return disk_read_ex(disk,lba+(u64)disk->parts[disk->cur_part].lba_start, + sectors,buf); +} + +u64 disk_write(disk_t* disk,u64 lba,u64 sectors,void* __virt buf) +{ + if((lba+sectors) >= disk->parts[disk->cur_part].lba_num) + { + kprintf("disk_write out of bounds!\n"); + return 1; + } + + return disk_write_ex(disk,lba+(u64)disk->parts[disk->cur_part].lba_start, + sectors,buf); +} + +void disk_setup(disk_t* disk) +{ + disk->phys_totalsectors = ahci_identify(disk->phys.hba_port); + disk_read_ex(disk,0,1,mbr); + + kmemcpy(&disk->uid,&mbr[0x1B4],10); + kmemcpy(disk->parts,&mbr[0x1BE],64); + + //Determine which partition we should use + disk->cur_part = 0; + do { + disk_read(disk,0,1,mbr); + if(!kmemcmp((char*)&mbr[71],"DISK1",5)) + { + //That's FAT32 + break; + } + disk->cur_part = disk->cur_part + 1; + } while(disk->cur_part < 4); +} + +void disk_init() +{ + disk_t* disk; + + //s_diskhost.mbr = (u8*)lvalloc(4096); + //kmemzero(&s_diskhost,sizeof(s_diskhost)); + ahci_init(); + + //SATA (D) + disk = &s_diskhost.disk[disk_chr2idx('D')]; + disk->phys.type = DISK_AHCI; + disk->phys.hba_port = ahci_get_sata(); + //get sectors + + //ATAPI (E) + disk = &s_diskhost.disk[disk_chr2idx('E')]; + disk->phys.type = DISK_AHCI; + disk->phys.hba_port = ahci_get_atapi(); +} diff --git a/kernel/disk.h b/kernel/disk.h new file mode 100644 index 0000000..e904a72 --- /dev/null +++ b/kernel/disk.h @@ -0,0 +1,50 @@ +#ifndef __DISK_H +#define __DISK_H + +#include "os.h" +#include "ahci.h" + +typedef enum { + DISK_INVALID = 0, + DISK_AHCI = 1, +} disk_type_t; + +struct disk_phys_t { + disk_type_t type; + union { + hba_port_t* hba_port; + }; +}; + +typedef struct { + u8 attributes; + u8 chs_start[3]; + + u8 type; + u8 chs_last[3]; + + u32 lba_start; + u32 lba_num; +} __packed partition_t; + +typedef struct { + struct disk_phys_t phys; + char disk_name; //ASCII char A-Z + u64 phys_totalsectors; + u8 uid[10]; + partition_t parts[4]; + u64 cur_part; +} disk_t; + +disk_t* disk_get(char name); +u32 disk_available(); //return bitmap A-Z (26 bits) +u64 disk_read_ex(disk_t* disk,u64 lba,u64 sectors,void* __virt buf); +u64 disk_write_ex(disk_t* disk,u64 lba,u64 sectors,void* __virt buf); + +u64 disk_read(disk_t* disk,u64 lba,u64 sectors,void* __virt buf); +u64 disk_write(disk_t* disk,u64 lba,u64 sectors,void* __virt buf); + +void disk_setup(disk_t* disk); +void disk_init(); + +#endif diff --git a/kernel/exceptions.c b/kernel/exceptions.c new file mode 100644 index 0000000..8ac6f4f --- /dev/null +++ b/kernel/exceptions.c @@ -0,0 +1,141 @@ +#include "exceptions.h" +#include "vga_terminal.h" +#include "stdlib.h" +#include "idt.h" +#include "pit.h" +//#include "x86utils.h" + +/* We need to implement those excpetions: + * 0 Division by zero + * 3 Breakpoint + * 6 Invalid opcode + * 7 Device not available + * 8 Double Fault + * 10 Invalid TSS + * 11 Segment not present + * 12 Stack segment fault + * 13 General protection fault + * 14 Page fault + * + */ + +static void hang() +{ + //x86_print_regs(); + while(1){__asm("nop");} +} + +//extern void command_interpreter(); +//extern void _load_legacy_stack(); + +void _enter_rescue_mode() +{ + /*_load_legacy_stack(); + sleep(500); + command_interpreter();*/ +} + +void enter_rescue_mode(int skip_check) +{ + if(!skip_check) + { + chg_color(VGA_COLOR_LIGHT_CYAN); + kprintf("Rollback to terminal? (y - yes, n - no): "); + u8 ans = kgetc(); + if(ans == 'y' || skip_check) + { + kputc('\n'); + chg_color(VGA_COLOR_MAGENTA); + _enter_rescue_mode(); + } + chg_color(VGA_COLOR_MAGENTA); + } + else + { + cls(); + kprintf("Terminal reloaded\n"); + _enter_rescue_mode(); + } +} + +void exception0() +{ + kprintf("[Exception] Division by zero\n"); + hang(); +} + +void exception3() +{ + kprintf("[Exception] Debug\n"); + hang(); +} + +void exception6() +{ + kprintf("[Exception] Invalid opcode\n"); + hang(); +} + +void exception7() +{ + kprintf("[Exception] Device not available\n"); + hang(); +} + +void exception8() +{ + kprintf("[Exception] Double fault\n"); + hang(); +} + +void exception10() +{ + kprintf("[Exception] Invalid TSS\n"); + hang(); +} + +void exception11() +{ + kprintf("[Exception] Segment not present\n"); + hang(); +} + +void exception12() +{ + kprintf("[Exception] Stack segment fault\n"); + hang(); +} + +extern u64 x64_get_cr2(); + +void exception13() +{ + kprintf("[Exception] General protection fault (%x)\n", + x64_get_cr2()); + hang(); +} + +void exception14() +{ + //x64_rax_n_stop(x64_get_cr2()); + kprintf("[Exception] Page fault (%x)\n",x64_get_cr2()); + //x86_print_regs(); + //Do we want to rollback in command interpreter + + enter_rescue_mode(0); + while(1){__asm("hlt");} +} + +void install_exceptions() +{ + idt_set_handler(0,exception0,IDT_TYPE_TRAP); + idt_set_handler(3,exception3,IDT_TYPE_TRAP); + idt_set_handler(6,exception6,IDT_TYPE_TRAP); + idt_set_handler(7,exception7,IDT_TYPE_TRAP); + idt_set_handler(8,exception8,IDT_TYPE_TRAP); + idt_set_handler(10,exception10,IDT_TYPE_TRAP); + idt_set_handler(11,exception11,IDT_TYPE_TRAP); + idt_set_handler(12,exception12,IDT_TYPE_TRAP); + idt_set_handler(13,exception13,IDT_TYPE_TRAP); + idt_set_handler(14,exception14,IDT_TYPE_TRAP); +} diff --git a/kernel/exceptions.h b/kernel/exceptions.h new file mode 100644 index 0000000..42f6e49 --- /dev/null +++ b/kernel/exceptions.h @@ -0,0 +1,9 @@ +#ifndef __EXCEPTIONS_H +#define __EXCEPTIONS_H + +#include "os.h" + +void enter_rescue_mode(); +void install_exceptions(); + +#endif diff --git a/kernel/fat.c b/kernel/fat.c new file mode 100644 index 0000000..3ed2875 --- /dev/null +++ b/kernel/fat.c @@ -0,0 +1,331 @@ +#include "fat.h" +#include "string.h" +#include "stdlib.h" +#include "lvalloc.h" +#include "defines.h" + +fat_t g_fat; + +void fat_read_cluster(fat_t* fat,u32 clus) +{ + if(!IS_VALID_FAT(fat)) return; + + disk_read(fat->disk,fat->datasec+((clus-2)*fat->spc),fat->spc, + fat->clusbuf); +} + +static u32 fat_dir_clus(fat_dir_t* dir) +{ + return (dir->dir_fstclushi<<16)|dir->dir_fstcluslo; +} + +static u32 fat_dir_or_root_clus(fat_t* fat,fat_dir_t* dir) +{ + if(dir != NULL) + return fat_dir_clus(dir); + return fat->rootclus; +} + +u32 fat_table_read_entry(fat_t* fat,u32 idx) +{ + //Do some caching + u32 clus = idx / fat->fatentperclus; + u32 offset = idx % fat->fatentperclus; + + //if(!IS_VALID_FAT(fat)) return 0; + + //kprintf("entry clus %u offset %u\n", + // fat->fatsec+(clus*fat->spc),offset); + if(clus == fat->curfatclus) + { + disk_read(fat->disk,fat->fatsec+(clus*fat->spc),fat->spc,fat->fatbuf); + fat->curfatclus = clus; + } + + idx = FAT_CLUSTER(fat->fatbuf[offset]); + //kprintf("fat->fatbuf[offset] %u\n",idx); + //kprintf("%p\n",fat->fatbuf); + return FAT_CLUSTER(fat->fatbuf[offset]); + //kprintf("fat->fatbuf[offset] %u\n",(u64)FAT_CLUSTER(fat->fatbuf[offset])); + //return FAT_CLUSTER(fat->fatbuf[offset]); +} + +void fat_read_file(fat_t* fat,fat_dir_t* file,u8* __virt buf) +{ + if(!IS_VALID_FAT(fat)) return; + + u32 clus = fat_dir_clus(file); + u32 size = file->dir_filesize; + u32 csize = fat->bps*fat->spc; + do { + u32 _size = MIN(size,csize); + + fat_read_cluster(fat,clus); + kmemcpy(buf,fat->clusbuf,_size); + buf += _size; + size -= _size; + + clus = fat_table_read_entry(fat,clus); + } while(!IS_FAT_CLUS_EOF(clus)); +} + +void fat_nametofmt38(const char* name,char* out) +{ + char* d = out; + const char* s = name; + size_t slen = kstrlen(name); + + for(u64 i = 0; i < 11; i++) + out[i] = ' '; + while(*s != '.' && (size_t)(d-out) < slen) + *d++ = ktoupper(*s++); + if((d-out) == 11) return; + d = &out[8]; + s++; + for(u64 i = 0; i < 3 && *s; i++) + *d++ = ktoupper(*s++); +} + +void fat_fmt38toname(const char* name,char* out) +{ + char* d = out; + const char* s = name; + + for(u64 i = 0; *s != ' ' && i < 11; i++) + *d++ = *s++; + if(name[8] != ' ' || name[9] != ' ' || name[10] != ' ') + { + *d++ = '.'; + s = &name[8]; + for(u64 i = 0; i < 3 && *s != ' '; i++) + *d++ = *s++; + } + *d++ = '\0'; +} + +int fat_is_valid_file(fat_dir_t* file) +{ + if(file->dir_name[0] != 0 && file->dir_name[0] != (char)0xE5 + && file->dir_attr != FAT_ATTR_LONG_NAME + && file->dir_attr != FAT_ATTR_VOLUME_ID) + { + return 1; + } + return 0; +} + +u64 fat_first_file(fat_t* fat,fat_dir_t* parent,fat_dir_t* file, + char* longname) +{ + char* d; + int load_long = 1; + + u32 dir_clus = fat_dir_or_root_clus(fat,parent); + do { + fat_read_cluster(fat,dir_clus); + for(u32 i = 0; i < fat->dirsperclus; i++) + { + union { + fat_dir_t* file; + fat_ldir_t* ldir; + } tmp; + tmp.file = &((fat_dir_t*)fat->clusbuf)[i]; + if(tmp.ldir->ldir_attr == FAT_ATTR_LONG_NAME && load_long) + { + if(IS_FAT_LDIR_LAST(tmp.ldir->ldir_ord)) + { + tmp.ldir->ldir_ord &= ~(1<<6); + load_long = 0; + } + d = longname+(13*(tmp.ldir->ldir_ord-1)); + for(u32 j = 0; j < 5; j++) + { + if(tmp.ldir->ldir_name1[j] == 0xFFFF) + { + load_long = 0; + continue; + } + *d++ = DBCS2SBCS(tmp.ldir->ldir_name1[j]); + } + for(u32 j = 0; j < 6; j++) + { + if(tmp.ldir->ldir_name2[j] == 0xFFFF) + { + load_long = 0; + continue; + } + *d++ = DBCS2SBCS(tmp.ldir->ldir_name2[j]); + } + for(u32 j = 0; j < 2; j++) + { + if(tmp.ldir->ldir_name3[j] == 0xFFFF) + { + load_long = 0; + continue; + } + *d++ = DBCS2SBCS(tmp.ldir->ldir_name3[j]); + } + } + else if(fat_is_valid_file(tmp.file)) + { + kmemcpy(file,tmp.file,sizeof(fat_dir_t)); + return ((u64)dir_clus<<32)|(i+1); + } + } + + dir_clus = fat_table_read_entry(fat,dir_clus); + } while(!IS_FAT_CLUS_EOF(dir_clus)); + return 0; +} + +u64 fat_next_file(fat_t* fat,u64 val,fat_dir_t* file,char* longname) +{ + char* d; + int load_long = 1; + + u32 dir_clus = val>>32; + u32 offset = val&0xFFFFFFFF; + if(offset == fat->dirsperclus) + { + offset = 0; + dir_clus = fat_table_read_entry(fat,dir_clus); + } + + while(!IS_FAT_CLUS_EOF(dir_clus)) + { + u32 i = 0; + if(offset) + { + i = offset; + offset = 0; + } + + fat_read_cluster(fat,dir_clus); + for(;i < fat->dirsperclus; i++) + { + union { + fat_dir_t* file; + fat_ldir_t* ldir; + } tmp; + tmp.file = &((fat_dir_t*)fat->clusbuf)[i]; + if(tmp.ldir->ldir_attr == FAT_ATTR_LONG_NAME && load_long) + { + if(IS_FAT_LDIR_LAST(tmp.ldir->ldir_ord)) + { + tmp.ldir->ldir_ord &= ~(1<<6); + load_long = 0; + } + d = longname+(13*(tmp.ldir->ldir_ord-1)); + for(u32 j = 0; j < 5; j++) + { + if(tmp.ldir->ldir_name1[j] == 0xFFFF) + { + load_long = 0; + continue; + } + *d++ = DBCS2SBCS(tmp.ldir->ldir_name1[j]); + } + for(u32 j = 0; j < 6; j++) + { + if(tmp.ldir->ldir_name2[j] == 0xFFFF) + { + load_long = 0; + continue; + } + *d++ = DBCS2SBCS(tmp.ldir->ldir_name2[j]); + } + for(u32 j = 0; j < 2; j++) + { + if(tmp.ldir->ldir_name3[j] == 0xFFFF) + { + load_long = 0; + continue; + } + *d++ = DBCS2SBCS(tmp.ldir->ldir_name3[j]); + } + } + else if(fat_is_valid_file(tmp.file)) + { + kmemcpy(file,tmp.file,sizeof(fat_dir_t)); + return ((u64)dir_clus<<32)|(i+1); + } + } + + dir_clus = fat_table_read_entry(fat,dir_clus); + } + return 0; +} + +int fat_find_file(fat_t* fat,fat_dir_t* parent,char* name, + fat_dir_t* out) +{ + u64 handle; + fat_dir_t file; + char longname[256]; + char name38[11]; + if(!IS_VALID_FAT(fat)) return 0; + fat_nametofmt38(name,name38); + + kmemzero(longname,sizeof(longname)); + handle = fat_first_file(fat,parent,&file,longname); + if(handle) + { + do { + if(*longname != '\0') + { + if(!kstrcmp(longname,name)) + { + kmemcpy(out,&file,sizeof(fat_dir_t)); + return 1; + } + } + else + { + if(!kmemcmp(file.dir_name,name38,11)) + { + kmemcpy(out,&file,sizeof(fat_dir_t)); + return 1; + } + } + kmemzero(longname,sizeof(longname)); + } while((handle = fat_next_file(fat,handle,&file,longname))); + } + + return 0; +} + +void fat_init(fat_t* fat,disk_t* disk) +{ + fat->disk = disk; + fat->secbuf = (u8*)lvalloc(4096); + + if(disk_read(fat->disk,0,1,fat->secbuf)) + { + kprintf("Failed to init fat!\n"); + fat->disk = NULL; + return; + } + + fat->bps = *(u16*)(&fat->secbuf[11]); + fat->spc = *(u8*)(&fat->secbuf[13]); + fat->rsvdsec = *(u16*)(&fat->secbuf[14]); + fat->fatnum = *(u8*)(&fat->secbuf[16]); + + fat->rootentcnt = *(u16*)(&fat->secbuf[17]); + fat->totsec = *(u32*)(&fat->secbuf[32]); + fat->fatsz = *(u32*)(&fat->secbuf[36]); + fat->rootclus = *(u32*)(&fat->secbuf[44]); + + fat->clusbuf = (u8*)lvalloc(fat->spc*fat->bps); + fat->fatbuf = (u32*)lvalloc(fat->spc*fat->bps); + + fat->fatsec = fat->rsvdsec; + fat->datasec = fat->fatsec+(fat->fatsz*fat->fatnum); + + fat->fatentperclus = (fat->bps>>2)*fat->spc; + fat->dirsperclus = (fat->bps>>5)*fat->spc; + + fat->cursec = 0; + fat->curclus = 0; + fat->curfatclus = 0; +} diff --git a/kernel/fat.h b/kernel/fat.h new file mode 100644 index 0000000..f80f0a6 --- /dev/null +++ b/kernel/fat.h @@ -0,0 +1,102 @@ +#ifndef __FAT_H +#define __FAT_H + +#include "os.h" +#include "disk.h" +#include "string.h" + +#define FAT_BAD_CLUSTER 0xFFFFFF7 +#define IS_FAT_CLUS_RESVD(a) (a >= 0xFFFFFF8 && a <= 0xFFFFFFE) +#define FAT_END_CLUSTER 0xFFFFFFF + +#define FAT_CLUSTER(a) (a&0x0FFFFFFF) +#define IS_FAT_CLUS_EOF(clus) ((clus >= FAT_BAD_CLUSTER) || (clus == 0)) + +#define FAT_ATTR_READONLY 0x01 +#define FAT_ATTR_HIDDEN 0x02 +#define FAT_ATTR_SYSTEM 0x04 +#define FAT_ATTR_VOLUME_ID 0x08 +#define FAT_ATTR_DIRECTORY 0x10 +#define FAT_ATTR_ARCHIVE 0x20 +#define FAT_ATTR_LONG_NAME (FAT_ATTR_READONLY \ + |FAT_ATTR_HIDDEN \ + |FAT_ATTR_SYSTEM \ + |FAT_ATTR_VOLUME_ID) + +#define IS_VALID_FAT(fat) (fat->disk != NULL) + +typedef struct { + disk_t* disk; + + u32 bps; //11 2 + u32 spc; //13 1 + u32 rsvdsec; //14 2 + u32 fatnum; //16 1 + + u32 rootentcnt; //17 2 + u32 totsec; //32 4 + u32 fatsz; //36 4 + u32 rootclus; //44 4 + + u32 fatentperclus; + u32 dirsperclus; + + u32 fatsec; + u32 datasec; + + u8* secbuf; + u8* clusbuf; + u8* clusbuf_ex; + u32* fatbuf; + + u32 cursec; + u32 curclus; + u32 curfatclus; +} fat_t; + +typedef struct { + char dir_name[11]; + u8 dir_attr; + u8 dir_ntres; + u8 dir_crttimetenth; + u16 dir_crttime; + u16 dir_crtdate; + u16 dir_lstaccdate; + u16 dir_fstclushi; + u16 dir_wrttime; + u16 dir_wrtdate; + u16 dir_fstcluslo; + u32 dir_filesize; +} __packed fat_dir_t; + +#define IS_FAT_LDIR_LAST(ord) (ord&0x40) + +typedef struct { + u8 ldir_ord; + dbcs_t ldir_name1[5]; + u8 ldir_attr; + u8 ldir_type; + u8 ldir_chksum; + dbcs_t ldir_name2[6]; + u16 ldir_fstcluslo; + dbcs_t ldir_name3[2]; +} __packed fat_ldir_t; + +void fat_init(fat_t* fat,disk_t* disk); + +void fat_read_cluster(fat_t* fat,u32 clus); +u32 fat_table_read_entry(fat_t* fat,u32 idx); +void fat_read_file(fat_t* fat,fat_dir_t* file,u8* __virt buf); +void fat_nametofmt38(const char* name,char* out); +void fat_fmt38toname(const char* name,char* out); +int fat_is_valid_file(fat_dir_t* file); + +u64 fat_first_file(fat_t* fat,fat_dir_t* parent,fat_dir_t* file, + char* longname); +u64 fat_next_file(fat_t* fat,u64 val,fat_dir_t* file,char* longname); +int fat_find_file(fat_t* fat,fat_dir_t* parent,char* name, + fat_dir_t* out); + +extern fat_t g_fat; + +#endif diff --git a/kernel/file.c b/kernel/file.c new file mode 100644 index 0000000..d942c41 --- /dev/null +++ b/kernel/file.c @@ -0,0 +1,86 @@ +#include "file.h" +#include "stdlib.h" +#include "string.h" +#include "defines.h" +#include "heap.h" + +// /dir/file.txt + +static int file_find(fat_t* fat,fat_dir_t* out,const char* filename) +{ + char name[512]; + const char* s = filename; + char* d = name; + fat_dir_t _parent; + fat_dir_t file; + fat_dir_t* parent; + + parent = NULL; + kmemzero(&file,sizeof(file)); + kmemzero(&_parent,sizeof(_parent)); + kmemzero(name,sizeof(name)); + do { + if(*s != '/') + *d++ = *s; + s++; + if(*s == '/') + { + //kprintf("name %s\n",name); + //Find directory + if(kstrchr(s+1,'/')) + { + fat_find_file(fat,parent,name,&_parent); + if(_parent.dir_fstcluslo == 0) return 0; + } + kmemzero(name,sizeof(name)); + d = name; + } + if(!kstrchr(s+1,'/')) //Check if we hit file name + { + fat_find_file(fat,parent,name,&file); + if(file.dir_fstcluslo != 0) + { + //kprintf("file %s\n",name); + kmemcpy(out,&file,sizeof(file)); + return 1; + } + } + } while(*s); + return 0; +} + +void* file_load(fat_t* fat,u32* psize,const char* name) +{ + fat_dir_t file; + u32 clus; + u32 size; + u8* buf,*ptr; + kmemzero(&file,sizeof(file)); + if(!file_find(fat,&file,name)) + { + kprintf("File \"%s\" not found!\n",name); + return NULL; + } + + size = file.dir_filesize; + if(psize) *psize = size; + buf = (u8*)kmalloc(size); + if(!buf) + { + kprintf("Not enough memory for \"%s\"!\n",name); + return NULL; + } + ptr = buf; + + clus = (file.dir_fstclushi<<16)|file.dir_fstcluslo; + do { + u32 csize = MIN(size,(fat->spc*fat->bps)); + fat_read_cluster(fat,clus); + kmemcpy(ptr,fat->clusbuf,csize); + + ptr += csize; + csize -= csize; + clus = fat_table_read_entry(fat,clus); + } while(!IS_FAT_CLUS_EOF(clus)); + return buf; +} diff --git a/kernel/file.h b/kernel/file.h new file mode 100644 index 0000000..135f4ab --- /dev/null +++ b/kernel/file.h @@ -0,0 +1,9 @@ +#ifndef __FILE_H +#define __FILE_H + +#include "os.h" +#include "fat.h" + +void* file_load(fat_t* fat,u32* size,const char* name); + +#endif diff --git a/kernel/heap.c b/kernel/heap.c new file mode 100644 index 0000000..83da80a --- /dev/null +++ b/kernel/heap.c @@ -0,0 +1,194 @@ +#include "heap.h" +#include "defines.h" +#include "lvalloc.h" +#include "paging.h" +#include "stdlib.h" + +#define MBLOCK_ATTR_ALLOC (1<<0) + +#define IS_MBLOCK_ALLOC(mblock) (mblock->size & MBLOCK_ATTR_ALLOC) + +//static mheap_t s_heap; //heap for all available RAM + +/*void heap_init(mheap_t* heap,u64 size) +{ + heap->heapsz = size>>21; + heap->heap = (u64*)mmap(NULL,(heap->heapsz<<21), + PROT_READ|PROT_WRITE, + MAP_ANONYMOUS|MAP_PRIVATE, + -1, + 0 + ); + memset(heap->heap,0,(heap->heapsz<<21)); +}*/ + +static mblock_t* mblock_get_next(mblock_t* block) +{ + return (mblock_t*)((u8*)block+(block->size & ~7)); +} + +static mblock_t* mblock_by_data(void* data) +{ + return (mblock_t*)((u8*)data-24); +} + +static u64 mblock_get_size(mblock_t* block) +{ + return block->size & ~7; +} + +void heap_join(mblock_t* start,int dir) +{ + mblock_t* cur; + u64 blk_size; + + blk_size = 0; + cur = start; + while(cur != NULL && !IS_MBLOCK_ALLOC(cur)) + { + blk_size += mblock_get_size(cur); + cur->size = 0; + if(dir > 0) cur = cur->next; + else if(dir < 0) cur = cur->prev; + } + + if(dir > 0) + { + start->next = cur; + start->size = blk_size & ~7; + if(cur) + { + if(cur->next) cur->next->prev = start; + } + } + else if(dir < 0) + { + if(cur) + { + cur = cur->next; + cur->size = blk_size & ~7; + cur->next = start->next; + } + } +} + +void heap_split(mblock_t* block,u64 req_size) +{ + u64 tot_size = mblock_get_size(block); + mblock_t* split; + + block->size = (req_size)|MBLOCK_ATTR_ALLOC; + split = mblock_get_next(block); + + //Init prev and next + split->prev = block; + split->next = block->next; + block->next = split; + + split->size = (tot_size-req_size) & ~7; +} + +void* heap_alloc(mheap_t* heap,u64 size) +{ + mblock_t* start,*block,*prev; + size = ROUND2_UP((size+24),5); + + /*for(i = 0; i < heap->heapsz; i++) + { + start = (mblock_t*)((u8*)heap->heap+(i<<21)); + if(!(start->size & MBLOCK_ATTR_ALLOC_2MB)) break; + } + if(i == heap->heapsz) return NULL;*/ + start = (mblock_t*)heap->heap; + + //Find free block + prev = NULL; + block = start; + do { + if((!IS_MBLOCK_ALLOC(block) && mblock_get_size(block) >= size) + || block->size == 0) + break; + prev = block; + if(block->next) block = block->next; + else break; + } while(block); + if(prev == block) prev = NULL; + //Allocate + if(block->size == 0) //Unformatted + { + block->size = size|MBLOCK_ATTR_ALLOC; + block->prev = prev; + block->next = mblock_get_next(block); + } + else heap_split(block,size); + + if(prev && !prev->next) prev->next = block; + + return block->data; +} + +void heap_free(mheap_t* heap,void* mem) +{ + mblock_t* block = (mblock_t*)((u8*)mem-24); + (void)heap; + + //Unlink + block->size &= ~MBLOCK_ATTR_ALLOC; + //Link free blocks prev and next + heap_join(block,1); + heap_join(block,-1); +} + +void heap_init() +{ + ram_pool_t* pool; + u64 addr = (u64)lvalloc_get_next_addr(); + u64 i; + + //Decide in which mapping we have lvalloc mapped and kernel + for(i = 0; i < lmem->ram_pools; i++) + { + pool = &lmem->ram_pool[i]; + if(addr >= pool->start && addr < pool->end) + break; + } + if(i == lmem->ram_pools) + { + kprintf("heap_init failed!\n"); + return; + } + + lmem->heap.heap = (u64*)addr; + lmem->heap.heapsz = (((pool->end - addr)>>21) - 1); + + kprintf("heap %p heapsz %u\n",lmem->heap.heap,lmem->heap.heapsz<<21); + + //Identity page map + //page_map(s_heap.heap,s_heap.heap,s_heap.heapsz<<21); + for(u64 i = 0; i < (lmem->heap.heapsz<<21)>>12; i++) + { + page_map((u8*)lmem->heap.heap+(i<<12),(u8*)lmem->heap.heap+(i<<12), + 4096); + } + + kmemzero(lmem->heap.heap,lmem->heap.heapsz<<21); +} + +void* kmalloc(u64 size) +{ + return heap_alloc(&lmem->heap,size); +} + +void* krealloc(void* addr,u64 newsize) +{ + void* newaddr = kmalloc(newsize); + if(!newaddr) return NULL; + kmemcpy(newaddr,addr,mblock_get_size(mblock_by_data(addr))-24); + kfree(addr); + return newaddr; +} + +void kfree(void* addr) +{ + heap_free(&lmem->heap,addr); +} diff --git a/kernel/heap.h b/kernel/heap.h new file mode 100644 index 0000000..86dfab8 --- /dev/null +++ b/kernel/heap.h @@ -0,0 +1,12 @@ +#ifndef __HEAP_H +#define __HEAP_H + +#include "os.h" + +void heap_init(); + +void* kmalloc(u64 size); +void* krealloc(void* addr,u64 newsize); +void kfree(void* addr); + +#endif diff --git a/kernel/idt.c b/kernel/idt.c new file mode 100644 index 0000000..18b5105 --- /dev/null +++ b/kernel/idt.c @@ -0,0 +1,91 @@ +#include "idt.h" +#include "stdlib.h" + +extern void int0_handler(); +extern void int1_handler(); +extern void int2_handler(); +extern void int3_handler(); +extern void int4_handler(); +extern void int5_handler(); +extern void int6_handler(); +extern void int7_handler(); +extern void int8_handler(); +extern void int9_handler(); +extern void int10_handler(); +extern void int11_handler(); +extern void int12_handler(); +extern void int13_handler(); +extern void int14_handler(); +extern void int15_handler(); +extern void int16_handler(); +extern void int17_handler(); +extern void int18_handler(); +extern void int19_handler(); +extern void int20_handler(); +extern void int21_handler(); +extern void int22_handler(); +extern void int23_handler(); +extern void int24_handler(); +extern void int25_handler(); +extern void int26_handler(); +extern void int27_handler(); +extern void int28_handler(); +extern void int29_handler(); +extern void int30_handler(); +extern void int31_handler(); + +static u32 idt_table[1024]; +static inthandler_t inthandlers[256]; +static inthandler_t handlers[32] = { + int0_handler,int1_handler,int2_handler,int3_handler, + int4_handler,int5_handler,int6_handler,int7_handler, + int8_handler,int9_handler,int10_handler,int11_handler, + int12_handler,int13_handler,int14_handler,int15_handler, + int16_handler,int17_handler,int18_handler,int19_handler, + int20_handler,int21_handler,int22_handler,int23_handler, + int24_handler,int25_handler,int26_handler,int27_handler, + int28_handler,int29_handler,int30_handler,int31_handler +}; +static u64 cur_handler = 0; + +void idt_set_handler(u8 idx,inthandler_t hndr,u8 type) +{ + u32* item = (u32*)(&idt_table[idx<<2]); + u64 addr; + + if(cur_handler == 32) + { + kprintf("idt_set_handler: no free handlers!\n"); + return; + } + inthandlers[cur_handler] = hndr; + addr = (u64)handlers[cur_handler++]; + + item[0] = (OS_CODE_SELECTOR<<16)|(addr&0xFFFF); + item[1] = (((addr>>16)&0xFFFF)<<16)|(1<<15)|((type&0x0F)<<8); + item[2] = (addr>>32); + item[3] = 0; + +} + +void idt_call_handler(u8 handler) +{ + if(inthandlers[handler]) + { + inthandlers[handler](); + } +} + +extern void _idt_install(void* table,u64 limit); +void idt_install() +{ + kmemzero(idt_table,sizeof(idt_table)); + kmemzero(inthandlers,sizeof(inthandlers)); + + _idt_install(idt_table,sizeof(idt_table)); +} + +void idt_enable_interrupts() +{ + __asm("sti"); +} diff --git a/kernel/idt.h b/kernel/idt.h new file mode 100644 index 0000000..bf17062 --- /dev/null +++ b/kernel/idt.h @@ -0,0 +1,17 @@ +#ifndef __IDT_H +#define __IDT_H + +#include "os.h" + +#define IDT_TYPE_INTR 0x0E +#define IDT_TYPE_TRAP 0x0F + +typedef void (*inthandler_t)(); + +void idt_set_handler(u8 idx,inthandler_t hndr,u8 type); +void idt_call_handler(u8 idx); + +void idt_install(); +void idt_enable_interrupts(); + +#endif diff --git a/kernel/io.h b/kernel/io.h new file mode 100644 index 0000000..a412717 --- /dev/null +++ b/kernel/io.h @@ -0,0 +1,21 @@ +#ifndef __IO_H +#define __IO_H + +#include "os.h" + +extern u8 inb(u16 port); +extern void outb(u16 port,u8 data); + +extern u16 inw(u16 port); +extern void outw(u16 port,u16 data); + +extern u32 inl(u16 port); +extern void outl(u16 port,u32 data); + +extern void _insw(u16 port,u8* buffer,u32 count); +extern void _outsw(u16 port,u8* buffer,u32 count); + +extern void _insw256(u16 port,u8* buffer); +extern void _outsw256(u16 port,u8* buffer); + +#endif diff --git a/kernel/keyboard.c b/kernel/keyboard.c new file mode 100644 index 0000000..a9f288f --- /dev/null +++ b/kernel/keyboard.c @@ -0,0 +1,174 @@ +#include "keyboard.h" +#include "exceptions.h" +#include "idt.h" +#include "pic.h" +#include "pit.h" +#include "stdlib.h" +#include "vga_terminal.h" + +static u8 s_i8keycode = 0; +static u8 s_i8keycode2 = 0; +static u32 s_ctrlkeys = 0; + +static u8 s_keymap[128] = { + 0, 0x1B, + '1','2', + '3','4','5','6', + '7','8','9','0', + '-','=', + 0x08, + 0x09, + 'Q','W','E','R', + 'T','Y','U','I', + 'O','P','[',']', + 0x0A,0, + 'A','S','D','F', + 'G','H','J','K', + 'L',';','\'','`', + 0, + '\\', + 'Z','X','C','V', + 'B','N','M',',', + '.','/', + 0, + '*', + 0, + ' ', + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0, +}; + +static char* eng_layout = "qwertyuiop[]\\asdfghjkl;'zxcvbnm`,./"; +static char* rus_layout = "йцукенгшщзхъ\\фывапролджэячсмитьёбю."; +static int cur_layout = 0; + +static char* shift_numbers = "!@#$%^&*()_+"; + +static void check_keys() +{ + if((s_ctrlkeys & (CTRLKEYS_LSHIFT|CTRLKEYS_LALT)) + == (CTRLKEYS_LSHIFT|CTRLKEYS_LALT)) + cur_layout = !cur_layout; +} + +static void _keyboard_ctrlkeys_update(u8 keychar,u8 event) +{ + u8 ctrlkey; + + ctrlkey = 0; + if(keychar == KEY_RSHIFT) ctrlkey = CTRLKEYS_RSHIFT; + else if(keychar == KEY_LSHIFT) ctrlkey = CTRLKEYS_LSHIFT; + else if(keychar == KEY_LALT) ctrlkey = CTRLKEYS_LALT; + + if(event) s_ctrlkeys &= ~ctrlkey; //Released + else s_ctrlkeys |= ctrlkey; //Pressed +} + +void keyboard_interrupt() +{ + u8 status; + u8 keycode,keychar; + + status = inb(0x64); + if(status & 1) + { + keycode = inb(0x60); + keychar = keycode & ~0x80; + s_i8keycode2 = keychar; + if(keychar == KEY_RSHIFT + || keychar == KEY_LSHIFT + || keychar == KEY_LALT) + { + _keyboard_ctrlkeys_update(keychar,keycode>>7); + s_i8keycode = 0; + } + else if(!(keycode & 0x80)) + { + s_i8keycode = keychar; + //kprintf("%c",keyboard_ascii()); + } + } + check_keys(); + + pic_send_eoi(1); +} + +u8 keyboard_scan_code() +{ + return s_i8keycode; +} + +u8 keyboard_ascii() +{ + u8 ascii; + + if(s_i8keycode >= sizeof(s_keymap)) return 0; + ascii = s_keymap[s_i8keycode]; + + if(s_ctrlkeys & (CTRLKEYS_LSHIFT|CTRLKEYS_RSHIFT)) + { + if((s_i8keycode >= 0x02) && (s_i8keycode <= 0x0D)) + { + if(s_i8keycode >= 2) + ascii = shift_numbers[s_i8keycode-2]; + } + if(ascii == '[') ascii = '{'; + else if(ascii == ']') ascii = '}'; + else if(ascii == '\\') ascii = '|'; + else if(ascii == ';') ascii = ':'; + else if(ascii == '\'') ascii = '"'; + else if(ascii == ',') ascii = '<'; + else if(ascii == '.') ascii = '>'; + else if(ascii == '/') ascii = '?'; + else if(ascii == '`') ascii = '~'; + } + else if(ascii >= 0x41 && ascii <= 0x5A) ascii += 0x20; + + return ascii; +} + +static dbcs_t keyboard_layout_get_sym(u8 _chr) +{ + u64 i; + u8 chr = ktolower(_chr); + for(i = 0; i < 34; i++) + if(eng_layout[i] == chr) break; + if(i == 34) return (dbcs_t)_chr; + if(cur_layout == 1) + { + char* sym = rus_layout; + while(i--) + sym += kchrlen(*sym); + return kchr2dbcs(sym); + } + + return (dbcs_t)_chr; +} + +dbcs_t keyboard_sym() +{ + return keyboard_layout_get_sym(keyboard_ascii()); +} + +void keyboard_reset_irq1_vars() +{ + s_i8keycode = 0; +} + +void keyboard_enable() +{ + pic_set_mask(1,1); +} + +void keyboard_disable() +{ + pic_set_mask(1,0); +} + +void keyboard_install() +{ + pic_set_mask(1,1); + idt_set_handler(33,keyboard_interrupt,IDT_TYPE_INTR); +} diff --git a/kernel/keyboard.h b/kernel/keyboard.h new file mode 100644 index 0000000..c50f310 --- /dev/null +++ b/kernel/keyboard.h @@ -0,0 +1,52 @@ +#ifndef __KEYBOARD_H +#define __KEYBAORD_H + +#include "os.h" +#include "string.h" + +#define CTRLKEYS_LSHIFT (1<<0) +#define CTRLKEYS_RSHIFT (1<<1) +#define CTRLKEYS_LALT (1<<2) + +typedef enum { + //Controls keys + KEY_LSHIFT = 0x2A, + KEY_RSHIFT = 0x36, + KEY_LALT = 0x38, + + //Numpad + KEY_NP_7 = 0x47, + KEY_NP_8, + KEY_NP_9, + KEY_NP_MINUS, + KEY_NP_4, + KEY_NP_5, + KEY_NP_6, + KEY_NP_PLUS, + KEY_NP_DOT, + //Functions + KEY_F1 = 0x3B, + KEY_F2, + KEY_F3, + KEY_F4, + KEY_F5, + KEY_F6, + KEY_F7, + KEY_F8, + KEY_F9, + KEY_F10, + KEY_F11 = 0x57, + KEY_F12 +} kb_keys_t; + +void keyboard_install(); +u8 keyboard_scan_code(); +u8 keyboard_ascii(); +dbcs_t keyboard_sym(); + +void keyboard_enable(); +void keyboard_disable(); + +void keyboard_reset_irq1_vars(); + +#endif diff --git a/kernel/kmain.c b/kernel/kmain.c new file mode 100644 index 0000000..9f63d1a --- /dev/null +++ b/kernel/kmain.c @@ -0,0 +1,250 @@ +#include "os.h" +#include "stdlib.h" +#include "string.h" +#include "idt.h" +#include "pic.h" +#include "pit.h" +#include "pci.h" +#include "exceptions.h" +#include "keyboard.h" +#include "paging.h" +#include "lvalloc.h" +#include "multiboot.h" +#include "disk.h" +#include "heap.h" +#include "file.h" +#include "fat.h" +#include "video.h" + +// IDT +// PIC +// PIT +// paging +// keyboard + +static char* xnums = "0123456789ABCDEF"; + +lmem_t* lmem; +disk_t* disk1; + +void command_interpreter() +{ + dbcs_t _command[64]; + char command[128]; + char name[512]; + char* buf = (char*)kmalloc(4096); + + while(1) + { + kputc('>'); + kgets(_command,64); + kdbcs2str(_command,command,sizeof(command)); + /*if(!kstrncmp(command,"ram_map")) + { + ram_map_t* ram = ram_get_map(); + kprintf("RAM size = %u\nRAM pools %u\n", + ram->ram_total_size,ram->ram_pool_count); + for(u32 i = 0; i < ram->ram_pool_count; i++) + { + kprintf("\t%p\t%p\n",ram->ram_pools[i].start, + ram->ram_pools[i].end); + } + } + else if(!kstrncmp(command,"page_map")) + { + u32 virt,phys,size; + ksscanf(command,"page_map %p %p %u",&virt,&phys,&size); + page_map(virt,phys,size,PAGE_TABLE_READWRITE); + } + else if(!kstrncmp(command,"page_unmap")) + { + u32 virt,size; + ksscanf(command,"page_unmap %p %u",&virt,&size); + page_unmap(virt,size); + } + else if(!kstrncmp(command,"page_v2p")) + { + u32 virt; + ksscanf(command,"page_v2p %p",&virt); + kprintf("VIRT %p -> PHYS %p\n",virt,page_v2p(virt)); + } + else */ + if(!kstrncmp(command,"ram_map")) + { + kprintf("RAM size = %u\nRAM pools %u\n", + lmem->ram_size,lmem->ram_pools); + for(u32 i = 0; i < lmem->ram_pools; i++) + { + kprintf("\t%p\t%p\n",lmem->ram_pool[i].start, + lmem->ram_pool[i].end); + } + } + else if(!kstrncmp(command,"dump")) + { + u64 lines,virt; + ksscanf(command,"dump %u %p",&lines,&virt); + for(u64 i = 0; i < lines; i++) + { + kprintf("%p: ",virt); + for(u64 j = 0; j < 16; j++) + { + u8 byte; + byte = *(u8*)(virt+j); + kprintf("%c%c ",xnums[byte>>4],xnums[byte&0x0F]); + } + kprintf("\n"); + virt += 16; + } + } + else if(!kstrncmp(command,"pci_dump")) + { + pci_dump(); + } + else if(!kstrncmp(command,"hang")) + { + while(1){__asm("nop");} + } + else if(!kstrncmp(command,"lvalloc")) + { + u64 size; + ksscanf(command,"lvalloc %u",&size); + kprintf(":\t%p\n",lvalloc(size)); + } + else if(!kstrncmp(command,"memcpy")) + { + u64 dst,src,size; + ksscanf(command,"memecpy %p %p %u",&dst,&src,&size); + kmemcpy((void*)dst,(const void*)src,size); + } + else if(!kstrncmp(command,"vcopy")) + { + char* src; + u64 size; + ksscanf(command,"vcopy %p %u",&src,&size); + for(u64 i = 0; i < size; i++) kputc(src[i]); + } + else if(!kstrncmp(command,"disk_read")) + { + char name[2]; + u64 lba,num; + disk_t* disk; + + ksscanf(command,"disk_read \"%s\" %u %u",name,2,&lba,&num); + disk = disk_get(name[0]); + disk_read(disk,lba,num,buf); + kprintf(":\tbuf %p\n",buf); + } + else if(!kstrncmp(command,"disk_info")) + { + kprintf("UID: %x %x\n",*(u64*)&disk1->uid, + *((u64*)(&disk1->uid)+1)); + for(u64 i = 0; i < 4; i++) + { + kprintf("%x\t%x\n",disk1->parts[i].lba_start, + disk1->parts[i].lba_num); + kprintf("%x\t%x\n\n",disk1->parts[i].attributes, + disk1->parts[i].type); + } + } + else if(!kstrncmp(command,"malloc")) + { + u64 size; + ksscanf(command,"malloc %u",&size); + kprintf(":\t%p\n",kmalloc(size)); + } + else if(!kstrncmp(command,"free")) + { + u64 addr; + ksscanf(command,"free %p",&addr); + kfree((void*)addr); + } + else if(!kstrncmp(command,"file_load")) + { + u32 size; + kmemzero(name,sizeof(name)); + ksscanf(command,"load_file \"%s\"", + name,sizeof(name)); + void* addr = file_load(&g_fat,&size,name); + kprintf(":\t%p\t%u\n",addr,size); + } + else if(!kstrncmp(command,"тестовая_команда")) + { + kprintf("Работает :D\n"); + } + else if(!kstrncmp(command,"draw")) + { + ksscanf(command,"draw \"%s\"",name,sizeof(name)); + u8* bmp = file_load(&g_fat,NULL,name); + if(!bmp) + { + kprintf("Ошибка!\n"); + continue; + } + printbmp(bmp); + kfree(bmp); + } + /*else if(!kstrncmp(command,"sata_identify")) + { + sata_identify(); + }*/ + } +} + + +void kmain(lmem_t* lptr) +{ + lmem = lptr; + + cls(); + chg_color(VGA_COLOR_LIGHT_MAGENTA); + + idt_install(); + idt_enable_interrupts(); + + pic_init(0x20,0x28); + pit_init(); + + install_exceptions(); + keyboard_install(); + __asm("sti"); + + mbt_scan_memory(); + lvalloc_init(); + pci_detect_hardware(); + + disk_init(); + disk1 = disk_get('D'); + disk_setup(disk1); + + kprintf("disk1 size %f GB (%u MB)\n", + (((disk1->phys_totalsectors<<9)>>20)<<16)>>10, + (disk1->phys_totalsectors<<9)>>20); + kprintf("sizeof(lmem_t) %u\n",sizeof(lmem_t)); + + if(lmem->ram_size < (1073741824ULL)) + { + //We're running under QEMU + disk1->cur_part = 1; + } + + fat_init(&g_fat,disk1); + + //Initialize heap. Since heap was intitialized, we can't use + //linear allocator (lvalloc) anymore + heap_init(); + + video_init(); + vga_terminal_init(); + + u8* logo = file_load(&g_fat,NULL,"/logo.bmp"); + bmp_draw((lmem->v_width>>1)-80, + 0,160,lmem->vt_charh*10,logo); + kfree(logo); + + for(u64 i = 0; i < 10; i++) kputc('\n'); + kprintf("Леночка x86-64\n"); + + command_interpreter(); + + while(1){__asm("hlt");} //Should never return! +} diff --git a/kernel/lvalloc.c b/kernel/lvalloc.c new file mode 100644 index 0000000..5e4a392 --- /dev/null +++ b/kernel/lvalloc.c @@ -0,0 +1,38 @@ +#include "lvalloc.h" +#include "paging.h" +#include "defines.h" +#include "stdlib.h" + +void* lvalloc(size_t size) +{ + u64 addr; + + addr = (u64)lvalloc_get_next_addr(); + page_map((void*)addr,(void*)addr,size); + + lmem->lv_current += (ROUND2_UP(size,12) >> 12); + + kmemzero((void*)addr,ROUND2_UP(size,12)); + return (void*)addr; +} + +void* lvalloc_get_next_addr() +{ + return (void*)((u64)lmem->lv_start+(lmem->lv_current<<12)); +} + +void lvalloc_push() +{ + lmem->lv_stack[--lmem->lv_sp] = lmem->lv_current; +} + +void lvalloc_pop() +{ + lmem->lv_current = lmem->lv_stack[lmem->lv_sp++]; +} + +void lvalloc_init() +{ + lmem->lv_sp = MAX_LV_SSIZE; + lmem->lv_start = (u8*)(lmem->kernel_phys_addr + KERNEL_SIZE); +} diff --git a/kernel/lvalloc.h b/kernel/lvalloc.h new file mode 100644 index 0000000..6431a84 --- /dev/null +++ b/kernel/lvalloc.h @@ -0,0 +1,15 @@ +#ifndef __LVALLOC_H +#define __LVALLOC_H + +#include "os.h" + +void* lvalloc(size_t size); + +void lvalloc_push(); +void lvalloc_pop(); + +void* lvalloc_get_next_addr(); + +void lvalloc_init(); + +#endif diff --git a/kernel/multiboot.c b/kernel/multiboot.c new file mode 100644 index 0000000..cf76bd1 --- /dev/null +++ b/kernel/multiboot.c @@ -0,0 +1,36 @@ +#include "os.h" +#include "multiboot.h" +#include "stdlib.h" + +void mbt_scan_memory() +{ + lmem->ram_size = 0; + lmem->ram_pools = 0; + + multiboot_hdr_t* mbt = (multiboot_hdr_t*)((u64)lmem->multiboot); + multiboot_mmap_t* mmap = (multiboot_mmap_t*)((u64)mbt->mmap_addr); + + while((u64)mmap < mbt->mmap_addr + mbt->mmap_length) + { + if(mmap->type == 1) + { + ram_pool_t* pool; + if(lmem->ram_pools == MAX_RAM_POOLS) + break; + pool = &lmem->ram_pool[lmem->ram_pools++]; + + pool->start = mmap->base_addr; + pool->end = mmap->base_addr + mmap->length; + + lmem->ram_size += mmap->length; + } + mmap = (multiboot_mmap_t*)((u64)mmap + mmap->size + 4); + } + + kprintf("RAM size %f\n",((lmem->ram_size>>20)<<16)>>10); + for(u64 i = 0; i < lmem->ram_pools; i++) + { + kprintf("RAM %x - %x\n",lmem->ram_pool[i].start, + lmem->ram_pool[i].end); + } +} diff --git a/kernel/multiboot.h b/kernel/multiboot.h new file mode 100644 index 0000000..0f9146c --- /dev/null +++ b/kernel/multiboot.h @@ -0,0 +1,61 @@ +#ifndef __MULTIBOOT_H +#define __MULTIBOOT_H + +#include "os.h" + +typedef struct { + u32 flags; + + u32 mem_lower; + u32 mem_upper; + + u32 boot_device; + + u32 cmd_line; + + u32 mods_count; + u32 mods_addr; + + u32 syms[4]; + + u32 mmap_length; + u32 mmap_addr; + + u32 drives_length; + u32 drives_addr; + + u32 config_table; + + u32 boot_loader_name; + + u32 apm_table; + + u32 vbe_control_info; + u32 vbe_mode_info; + u16 vbe_mode; + u16 vbe_interface_seg; + u16 vbe_interface_off; + u16 vbe_interface_len; + + u64 framebuffer_addr; + u32 framebuffer_pitch; + u32 framebuffer_width; + u32 framebuffer_height; + u8 framebuffer_bpp; + u8 framebuffer_type; + u8 color_info[5]; + +} __attribute__((packed)) multiboot_hdr_t; + +#define MBT_MMAP_TYPE_RAM 1 + +typedef struct { + u32 size; + u64 base_addr; + u64 length; + u32 type; +} __packed multiboot_mmap_t; + +void mbt_scan_memory(); + +#endif diff --git a/kernel/os.h b/kernel/os.h new file mode 100644 index 0000000..1d4c038 --- /dev/null +++ b/kernel/os.h @@ -0,0 +1,133 @@ +#ifndef __OS_H +#define __OS_H + +#define OS_NULL_SELECTOR 0x00 +#define OS_CODE_SELECTOR 0x08 +#define OS_DATA_SELECTOR 0x10 + +#define OS_PM86_MEM_SIZE_4K (1024*1024) + +//#define OS_VIDEO_BUFFER 0xC10B8000 +#define OS_VIDEO_BUFFER 0x00000000000B8000 + +#define __packed __attribute__((packed)) +#define __align(N) __attribute__((aligned(N))) +#define __format_arg(N) __attribute__((format_arg(N))) + +#define __phys +#define __virt + +#define NULL (void*)0 + +#define KERNEL_SIZE 0x1000000 + +#define MAX_RAM_POOLS 8 +#define MAX_LV_SSIZE 8 + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned int u32; +typedef unsigned long u64; + +typedef char i8; +typedef short i16; +typedef int i32; +typedef long i64; + +typedef unsigned long size_t; +typedef unsigned long ulong; +typedef long ilong; + +typedef struct { + u64 __phys start; + u64 __phys end; +} ram_pool_t; + +typedef struct mblock_s { + struct mblock_s* prev; + struct mblock_s* next; + u64 size; + u32 data[1]; +} mblock_t; + +typedef struct { + u64* heap; //heap ptr + u64 heapsz; //heap size in 2 MB blocks +} mheap_t; + +typedef struct { + //LOADER + + u64 gdt_entry[8]; + + //Paging + u64* p_pml4; //[512] + u64* p_pdp; //[OS_MAX_MEM_GBS] + u64* p_dir; //[512*OS_MAX_MEM_GBS] + u64* p_table; //[512*512*OS_MAX_MEM_GBS] + + //Loader + u64 elf_ptr; + u64 paging_size; + u64 multiboot; + u64 gdt_limit; + + u64 kernel_phys_base; + u64 kernel_phys_page; + u64 kernel_phys_addr; + u64 kernel_virt_addr; + + //KERNEL + + //RAM + u64 ram_size; + u64 ram_pools; + ram_pool_t ram_pool[MAX_RAM_POOLS]; + + //lvalloc + u8* lv_start; + u64 lv_current; + u64 lv_sp; + u64 lv_stack[8]; + + //heap + mheap_t heap; + + //video + u64 v_stride; + u64 v_width; + u64 v_height; + u8* v_mem; + + u64 v_bpp; + u64 v_size; + + u64 v_r_p; + u64 v_r_s; + + u64 v_g_p; + u64 v_g_s; + + u64 v_b_p; + u64 v_b_s; + + //video text + u64 vf_chars; + u64 vf_wchar; //fixed point + u64 vf_hchar; //fixed point + + u16* vf_encodings; + u8* vf_bitmaps; + + //text + u64 vt_charw; + u64 vt_charh; + u64 vt_chars; + u64 vt_lines; +} __packed lmem_t; + +extern lmem_t* lmem; + +extern void x64_rax_n_stop(u64 rax); + +#endif diff --git a/kernel/paging.c b/kernel/paging.c new file mode 100644 index 0000000..e2c4024 --- /dev/null +++ b/kernel/paging.c @@ -0,0 +1,131 @@ +#include "paging.h" +#include "defines.h" + +//1 table entry - 4KB, entire table - 2 MB +//1 dir entry - 2 MB, entire directory - 1 GB +//1 pdp entry - 1 GB, entire PDP dir - 512 GB +//1 PML4 entry - 512 GB, entire PML4 dir - 256 TB + +/* +void page_map(u64 virt,u64 phys) +{ + u32 table_idx,dir_idx,pdp_idx; + u64 addr; + + table_idx = (virt>>12) & 0x7FFFFFF; + dir_idx = table_idx>>9; + pdp_idx = dir_idx>>9; + + if(!(lmem->p_pdp[pdp_idx] & 3)) + { + addr = (u64)((u32)&lmem->p_dir[dir_idx]); + //kprintf("addr %l\n",&addr); + lmem->p_pdp[pdp_idx] = (addr&0xFFFFFFFFFFFFF000)|3; + } + + if(!(lmem->p_dir[dir_idx] & 3)) + { + addr = (u64)((u32)&lmem->p_table[table_idx]); + lmem->p_dir[dir_idx] = (addr&0xFFFFFFFFFFFFF000)|3; + } + + lmem->p_table[table_idx] = (phys&0xFFFFFFFFFFFFF000)|3; +}*/ + +// RESERVED PML4 PDP DIR TABLE OFFSET +//0000000000000000 000000000 001111111 000000000 000000000 000000000000 + +void page_map(void* __virt virt,void* __phys phys,size_t size) +{ + u64 table_idx,dir_idx,pdp_idx; + u64 table_cnt,dir_cnt,pdp_cnt; + u64 vaddr,paddr; + + vaddr = (u64)virt; + paddr = (u64)phys; + + table_idx = (vaddr>>12) & 0x7FFFFFF; + dir_idx = table_idx>>9; + pdp_idx = dir_idx>>9; + + table_cnt = ROUND2_UP(size,12) >> 12; + dir_cnt = ROUND1_ADD((table_cnt>>9)); + pdp_cnt = ROUND1_ADD((dir_cnt>>9)); + + for(u64 i = 0; i < table_cnt; i++) + { + lmem->p_table[table_idx+i] = + ((paddr+(i<<12))&0xFFFFFFFFFFFFF000) | PAGE_TABLE_FLAGS; + } + + for(u64 i = 0; i < dir_cnt; i++) + { + u64 addr; + addr = (u64)(&lmem->p_table[(dir_idx+i)<<9]); + lmem->p_dir[dir_idx+i] = (addr&0xFFFFFFFFFFFFF000) | PAGE_TABLE_FLAGS; + } + + for(u64 i = 0; i < pdp_cnt; i++) + { + u64 addr; + addr = (u64)(&lmem->p_dir[(pdp_idx+i)<<9]); + lmem->p_pdp[pdp_idx+i] = (addr&0xFFFFFFFFFFFFF000) | PAGE_TABLE_FLAGS; + } +} + +void page_unmap(void* __virt virt,size_t size) +{ + u64 table_idx,dir_idx,pdp_idx; + u64 table_cnt,dir_cnt,pdp_cnt; + u64 vaddr; + + vaddr = (u64)virt; + + table_idx = (vaddr>>12) & 0x7FFFFFF; + dir_idx = table_idx>>9; + pdp_idx = dir_idx>>9; + + table_cnt = ROUND2_UP(size,12) >> 12; + dir_cnt = ROUND1_ADD((table_cnt>>9)); + pdp_cnt = ROUND1_ADD((dir_cnt>>9)); + + for(u64 i = 0; i < table_cnt; i++) + lmem->p_table[table_idx+i] = 0; + + for(u64 i = 0; i < dir_cnt; i++) + { + u64 j; + //Check if directory empty + for(j = 0; j < 512; j++) + { + if(lmem->p_table[((dir_idx+i)<<9)+j] & PAGE_TABLE_FLAGS) + break; + } + //Empty + if(j == 512) lmem->p_dir[dir_idx+i] = 0; + } + + for(u64 i = 0; i < pdp_cnt; i++) + { + u64 j; + //Check if PDP empty + for(j = 0 ; j < 512; j++) + { + if(lmem->p_dir[((pdp_idx+i)<<9)+j] & PAGE_TABLE_FLAGS) + break; + } + //Empty + if(j == 512) lmem->p_pdp[pdp_idx+i] = 0; + } +} + +u64 __phys page_v2p(void* __virt virt) +{ + u64 table_idx,page; + + table_idx = (((u64)virt)>>12) & 0x7FFFFFF; + page = lmem->p_table[table_idx]; + + if(page & PAGE_TABLE_FLAGS) return page & 0xFFFFFFFFFFFFF000; + return -1; +} diff --git a/kernel/paging.h b/kernel/paging.h new file mode 100644 index 0000000..8b477cf --- /dev/null +++ b/kernel/paging.h @@ -0,0 +1,14 @@ +#ifndef __PAGING_H +#define __PAGING_H + +#include "os.h" + +#define PAGE_TABLE_RRESENT (1<<0) +#define PAGE_TABLE_READWRITE (1<<1) +#define PAGE_TABLE_FLAGS (PAGE_TABLE_RRESENT|PAGE_TABLE_READWRITE) + +void page_map(void* __virt virt,void* __phys phys,size_t size); +void page_unmap(void* __virt virt,size_t size); +u64 __phys page_v2p(void* __virt virt); + +#endif diff --git a/kernel/pci.c b/kernel/pci.c new file mode 100644 index 0000000..35e7529 --- /dev/null +++ b/kernel/pci.c @@ -0,0 +1,251 @@ +#include "pci.h" +#include "vga_terminal.h" +#include "stdlib.h" +#include "io.h" + +typedef struct { + u32 device_count; + pci_device_t devices[MAX_PCI_DEVICES]; +} pci_hardware_t; + +static pci_hardware_t s_pci; + +struct pci_class_s { + u32 len; + const char* name; +}; + +static struct pci_class_s s_classes[] = { + {2,"Unclassified"}, + {9,"Mass Storage Controller"}, + {9,"Network Controller"}, + {3,"Display Controller"}, + {4,"Multimedia Controller"}, + {2,"Memory controller"}, + {11,"Bridge Device"}, + {6,"Simple Communication Controller"}, + {7,"Base System Peripheral"}, + {5,"Input Device Controller"}, + {0,"Docking Station"}, + {0,"Processor"}, + {10,"Serial Bus Controller"}, + {0,"Wireless Controller"}, + {0,"Intelligent Controller"}, + {0,"Satellite Communication Controller"}, + {0,"Encryption Controller"}, + {0,"Signal Processing Controller"}, + {0,"Processing Accelerator"}, + {0,"Non-Essential Instrumentation"} +}; + +static char* s_subclasses[] = { + "Non-VGA-Compatible devices", + "VGA-Compatible Device", + + "SCSI Bus Controller", + "IDE Controller", + "Floppy Disk Controller", + "IPI Bus Controller", + "RAID Controller", + "ATA Controller", + "Serial ATA", + "Serial Attached SCSI", + "Non-Volatile Memory Controller", + + "Ethernet Controller", + "Token Ring Controller", + "FDDI Controller", + "ATM Controller", + "ISDN Controller", + "WorldFip Controller", + "PICMG 2.14 Multi Computing", + "Infiniband Controller", + "Fabric Controller", + + "VGA Compatible Controller", + "XGA Controller", + "3D Controller (Not VGA-Compatible)", + + "Multimedia Video Controller", + "Multimedia Audio Controller", + "Computer Telephony Device", + "Audio Device", + + "RAM Controller", + "Flash Controller", + + "Host Bridge", + "ISA Bridge", + "EISA Bridge", + "MCA Bridge", + "PCI-to-PCI Bridge", + "PCMCIA Bridge", + "NuBus Bridge", + "CardBus Bridge", + "RACEway Bridge", + "PCI-to-PCI Bridge", + "InfiniBand-to-PCI Host Bridge", + + "Serial Controller", + "Parallel Controller", + "Multiport Serial Controller", + "Modem", + "IEEE 488.1/2 (GPIB) Controller", + "Smart Card", + + "PIC", + "DMA Controller", + "Timer", + "RTC Controller", + "PCI Hot-Plug Controller", + "SD Host controller", + "IOMMU", + + "Keyboard Controller", + "Digitizer Pen", + "Mouse Controller", + "Scanner Controller", + "Gameport Controller", + + "FireWire (IEEE 1394) Controller", + "ACCESS Bus", + "SSA", + "USB Controller", + "Fibre Channel", + "SMBus", + "InfiniBand", + "IPMI Interface", + "SERCOS Interface (IEC 61491)", + "CANbus" + +}; + +u32 pci_read_config_word(u32 bus,u32 device,u32 function,u32 offset) +{ + u32 address; + + bus &= 0xFF; // 8 bit + device &= 0x1F; // 5 bit + function &= 0x07; // 3 bit + offset &= 0xFC; // 6 bit + + address = 0x80000000UL|(bus<<16)|(device<<11)|(function<<8)|(offset); + + outl(PCI_CONFIG_ADDRESS,address); + return inl(PCI_CONFIG_DATA); +} + +u32 pci_read_config_word_dev(pci_device_t dev,u32 offset) +{ + u32 address; + + offset &= 0xFC; // 6 bit + + address = 0x80000000|((dev&0xFFFF0000)>>8)|(offset); + + outl(PCI_CONFIG_ADDRESS,address); + return inl(PCI_CONFIG_DATA); +} + +const char* pci_get_class(u32 class) +{ + if(class >= sizeof(s_classes)/sizeof(struct pci_class_s)) + return "Unknown"; + return s_classes[class].name; +} + +const char* pci_get_subclass(u32 class,u32 subclass) +{ + u32 i,index; + + if(class >= sizeof(s_classes)/sizeof(struct pci_class_s)) + return "Unknown"; + if(subclass >= sizeof(s_subclasses)/sizeof(const char*)) + return "Unknown"; + else if(subclass == 0x80) return "Other"; + + index = 0; + for(i = 0; i < class; i++) + index += s_classes[i].len; + if(i == class && subclass >= s_classes[i].len) return "Unknown"; + + return s_subclasses[index+subclass]; +} + +void pci_dump() +{ + for(u32 i = 0; i < s_pci.device_count; i++) + { + u32 class,subclass; + + class = (s_pci.devices[i]>>8)&0xFF; + subclass = s_pci.devices[i] & 0xFF; + kprintf("%x\t%s\t%s\n", + s_pci.devices[i], + pci_get_class(class), + pci_get_subclass(class,subclass)); + } +} + +static void pci_add_device(u32 bus,u32 device,u32 func, + u32 class,u32 subclass) +{ + pci_device_t dev; + + dev = (bus<<24)|(device<<19)|(func<<16)|(class<<8)|(subclass); + if(s_pci.device_count < MAX_PCI_DEVICES) + s_pci.devices[s_pci.device_count++] = dev; +} + +static void pci_scan_bus(u32 bus); + +static void pci_scan_device(u32 bus,u32 dev,u32 func) +{ + u32 class = pci_read_config_word(bus,dev,func,0x08) >> 16; + u32 hdr = (pci_read_config_word(bus,dev,func,0x0C) >> 16) & 0xFF; + + if(class == 0x0604) //PCI-to-PCI bridge + { + pci_scan_bus((pci_read_config_word( + bus,dev,func,0x18) >> 8) & 0xFF); + } + if(hdr & 0x80 && func == 0) //Multifunction + { + for(u32 i = 1; i < 8; i++) + { + u32 vendor = pci_read_config_word(bus,dev,i,0x00) & 0xFFFF; + if(vendor != 0xFFFF) + pci_scan_device(bus,dev,i); + } + } + + pci_add_device(bus,dev,func,class>>8,class&0xFF); +} + +static void pci_scan_bus(u32 bus) +{ + for(u32 i = 0; i < 32; i++) + { + u32 vendor = pci_read_config_word(bus,i,0,0x00) & 0xFFFF; + if(vendor != 0xFFFF) + pci_scan_device(bus,i,0); + } +} + +void pci_detect_hardware() +{ + s_pci.device_count = 0; + for(u32 i = 0; i < 256; i++) + pci_scan_bus(i); +} + +pci_device_t pci_find_device(u32 class,u32 subclass) +{ + u32 data = class<<8|subclass; + for(u32 i = 0; i < s_pci.device_count; i++) + { + if((s_pci.devices[i] & 0xFFFF) == data) + return s_pci.devices[i]; + } + return 0; +} diff --git a/kernel/pci.h b/kernel/pci.h new file mode 100644 index 0000000..86c05c4 --- /dev/null +++ b/kernel/pci.h @@ -0,0 +1,24 @@ +#ifndef __PCI_H +#define __PCI_H + +#include "os.h" + +#define PCI_CONFIG_ADDRESS 0xCF8 +#define PCI_CONFIG_DATA 0xCFC + +#define MAX_PCI_DEVICES 256 + +// bbbbbbbbdddddfffccccccccssssssss +typedef u32 pci_device_t; + +u32 pci_read_config_word(u32 bus,u32 device,u32 function,u32 hword); +u32 pci_read_config_word_dev(pci_device_t dev,u32 hword); + +void pci_dump(); +void pci_detect_hardware(); + +//Returns device index +//-1 for NOTFOUND +pci_device_t pci_find_device(u32 class,u32 subclass); + +#endif diff --git a/kernel/pic.c b/kernel/pic.c new file mode 100644 index 0000000..896f5bb --- /dev/null +++ b/kernel/pic.c @@ -0,0 +1,45 @@ +#include "pic.h" + +void pic_init(int master,int slave) +{ + outb(PIC1,ICW1); + outb(PIC2,ICW1); + + outb(PIC1+1,master&0xFF); + outb(PIC2+1,slave&0xFF); + + outb(PIC1+1,4); + outb(PIC2+1,2); + + outb(PIC1+1,ICW4); + outb(PIC2+1,ICW4); + + //Disable all IRQs + outb(PIC1+1,0xFF); + outb(PIC2+1,0xFF); +} + +void pic_set_mask(int irq,int enabled) +{ + u16 pic; + u8 mask; + + if(irq >= 8) + { + pic = PIC2+1; + irq -= 8; + } + else pic = PIC1+1; + + mask = inb(pic); + if(enabled) mask &= ~(1<= 8) outb(PIC2,0x20); + outb(PIC1,0x20); +} diff --git a/kernel/pic.h b/kernel/pic.h new file mode 100644 index 0000000..5a5f167 --- /dev/null +++ b/kernel/pic.h @@ -0,0 +1,16 @@ +#ifndef __PIC_H +#define __PIC_H + +#include "io.h" + +#define PIC1 0x20 +#define PIC2 0xA0 + +#define ICW1 0x11 +#define ICW4 0x01 + +void pic_init(int master,int slave); +void pic_set_mask(int irq,int enabled); +void pic_send_eoi(int irq); + +#endif diff --git a/kernel/pit.c b/kernel/pit.c new file mode 100644 index 0000000..41fc725 --- /dev/null +++ b/kernel/pit.c @@ -0,0 +1,36 @@ +#include "pit.h" +#include "pic.h" +#include "idt.h" + +static u64 s_counter = 0; + +void timer_interrupt() +{ + if(s_counter) s_counter--; + pic_send_eoi(0); +} + +void sleep(u64 msecs) +{ + __asm("cli"); + if(msecs < 55) msecs = 55; + s_counter = msecs/55; + __asm("sti"); + //pic_set_mask(0,1); + do { + __asm("hlt"); //Wait for IRQ + } while(s_counter); + //pic_set_mask(0,0); +} + +void pit_init() +{ + //Setup IRQ + idt_set_handler(32,timer_interrupt,IDT_TYPE_INTR); + pic_set_mask(0,1); + + //Init PIT + outb(0x43,0x36); + outb(0x40,0x00); + outb(0x40,0x00); +} diff --git a/kernel/pit.h b/kernel/pit.h new file mode 100644 index 0000000..fc7aa1f --- /dev/null +++ b/kernel/pit.h @@ -0,0 +1,10 @@ +#ifndef __PIT_H +#define __PIT_H + +#include "io.h" + +void sleep(u64 msecs); + +void pit_init(); + +#endif diff --git a/kernel/start.asm b/kernel/start.asm new file mode 100644 index 0000000..5565866 --- /dev/null +++ b/kernel/start.asm @@ -0,0 +1,17 @@ +use64 +section .bss +align 16 +resb 65536 ; 64 KiB stack +stack_top: + +section .text +global _start +extern kmain + +_start: + cli + mov rsp,stack_top + call kmain + + cli + hlt diff --git a/kernel/stdlib.c b/kernel/stdlib.c new file mode 100644 index 0000000..8a5e007 --- /dev/null +++ b/kernel/stdlib.c @@ -0,0 +1,444 @@ +#include "stdlib.h" +#include "vga_terminal.h" +#include "keyboard.h" +#include "string.h" +#include "va_list.h" + +void iprint(i64 number) +{ + //18446744073709551615 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number >= 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + s--; + while(s >= num) printchar(*s--); +} + +void uprint(u64 number) +{ + //18446744073709551615 + char num[32]; + char* s = num; + while(number >= 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + s--; + while(s >= num) printchar(*s--); +} + +static char* xnums = "0123456789ABCDEF"; + +void xprint(u64 number) +{ + //FFFFFFFFFFFFFFFF + char num[32]; + char* s = num; + + while(s-num < 15) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + s--; + while(s >= num) printchar(*s--); +} + +void fprint(u64 number) +{ + u64 val; + char num[64]; + int i; + + //decimal + i = 0; + val = number>>16; + while(val != 0) + { + num[i++] = '0'+(val%10); + val /= 10; + } + num[i++] = '0'+(val%10); + while(i != 0) printchar(num[--i]); + + //fraction + i = 0; + val = number&0xFFFF; + printchar('.'); + while(val != 0) + { + val *= 10; + printchar('0'+(val>>16)); + val &= 0xFFFF; + } +} + +void iprints(char* outs,i64 number) +{ + //18446744073709551615 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number >= 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void uprints(char* outs,u64 number) +{ + //18446744073709551615 + char num[32]; + char* s = num; + while(number >= 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void xprints(char* outs,u64 number) +{ + //FFFFFFFFFFFFFFFF + char num[32]; + char* s = num; + + while(s-num < 15) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void kprint(char* str) +{ + print(str); +} + +void ksprintf(char* dst,size_t maxLen,const char* fmt,...) +{ + va_list ap; + va_start(&ap); + + u64 idx; + char* cur,*end,c; + char numbuf[64]; + + idx = 1; + cur = dst; + end = dst+maxLen; + while((c = *fmt++) && cur != end) + { + if(c == '%') + { + char* p = numbuf; + c = *fmt++; + if(c == 'd') + { + iprints(numbuf,(ilong)va_arg(&ap,idx++)); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'u') + { + uprints(numbuf,(ilong)va_arg(&ap,idx++)); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'p' || c == 'x') + { + xprints(numbuf,(ulong)va_arg(&ap,idx++)); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 's') + { + const char* str = (const char*)va_arg(&ap,idx++); + while((*cur++ = *str++)) + if(cur == end) break; + cur--; + } + else if(c == '%') + { + if(cur != end) *cur++ = '%'; + } + } + else + { + if(cur == end) break; + *cur++ = c; + } + } + if(cur == end) + *(end-1) = '\0'; +} + +void kprintf(const char* fmt,...) +{ + va_list ap; + va_start(&ap); + + u64 idx; + dbcs_t c; + + idx = 1; + //while((c = *fmt++)) + do + { + c = kchr2dbcs(fmt); + if(!c) break; + fmt += kchrlen(*fmt); + if(c == '%') + { + //c = *fmt++; + c = kchr2dbcs(fmt); + fmt += kchrlen(*fmt); + switch(c) + { + case 'd': iprint((i64)va_arg(&ap,idx++)); break; + case 'u': uprint((u64)va_arg(&ap,idx++)); break; + case 'p': + case 'x': xprint((u64)va_arg(&ap,idx++)); break; + case 'c': printchar((char)(va_arg(&ap,idx++))); break; + case 's': kprint((char*)(va_arg(&ap,idx++))); break; + case 'f': fprint((u64)(va_arg(&ap,idx++))); break; + case '%': printchar('%'); break; + } + } + else printchar(c); + } while(c); +} + +u8 kgetch() +{ + u8 key; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + key = keyboard_scan_code(); + keyboard_reset_irq1_vars(); + return key; +} + +dbcs_t kgetc() +{ + dbcs_t ascii; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + ascii = keyboard_sym(); + keyboard_reset_irq1_vars(); + return ascii; +} + +void kgets(dbcs_t* buf,size_t cMax) +{ + dbcs_t ch; + dbcs_t* ptr,*end; + + ptr = buf; + end = buf + cMax; + *ptr = '\0'; + while((ch = kgetc()) != '\n') + { + if(ch == '\b') + { + if(ptr != buf) *ptr-- = '\0'; + printchar('\b'); + } + else if(ptr != end-1) + { + *ptr++ = ch; + printchar(ch); + } + } + printchar('\n'); + if(ptr == end) ptr--; + *ptr = '\0'; +} + +//static char* katoi_base = "0123456789ABCDEF"; + +static i64 _katoi(char* str,int base,size_t len) +{ + char* end; + i64 i,pow; + i64 num; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == '-') + { + num *= -1; + break; + } + else if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == xnums[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +static u64 _katou(char* str,int base,u64 len) +{ + char* end; + u64 pow,num; + i64 i; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == xnums[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +i64 katoi(char* str,int base) +{ + return _katoi(str,base,kstrlen(str)); +} + +u64 katou(char* str,int base) +{ + return _katou(str,base,kstrlen(str)); +} + +static u64 _kstrchr_delim(char* buf,u32 base) +{ + u64 i,len; + char c; + + len = 0; + while(*buf) + { + c = *buf; + for(i = 0; i < base; i++) + { + if(c == xnums[i]) break; + } + if(i == base && c != '-') break; + buf++; + len++; + } + return len; +} + +void ksscanf(char* buf,char* fmt,...) +{ + //ulong* argp; + va_list ap; + va_start(&ap); + + u64 idx; + ulong len,maxLen; + union { + i64* iptr; + u64* uptr; + char* sptr; + } u; + char c,*stk; + + idx = 2; + while((c = *fmt)) + { + //kprintf("%c %c\n",c,*buf); + if(c == '%') + { + c = *++fmt; + switch(c) + { + case 'u': + case 'd': + len = _kstrchr_delim(buf,10); + u.iptr = (i64*)(va_arg(&ap,idx++)); + *u.iptr = _katoi(buf,10,len); + buf += len; //we decrement because it will +1 + break; + case 'p': + case 'x': + buf += 2; //Skip 0x part + len = _kstrchr_delim(buf,16); + u.iptr = (i64*)(va_arg(&ap,idx++)); + *u.iptr = _katoi(buf,16,len); + buf += len; //we decrement because it will +1 + break; + case 's': + stk = (char*)kstrchr(buf,*(fmt+1)); + u.sptr = (char*)(va_arg(&ap,idx++)); + maxLen = (ulong)(va_arg(&ap,idx++)); + if(!stk) + { + u.sptr[0] = '\0'; + break; + } + len = (u64)stk-(u64)buf; + if(len > maxLen) len = maxLen; + kmemcpy(u.sptr,buf,len); + u.sptr[len] = '\0'; + buf += len; + break; + } + + } else buf++; + fmt++; + } +} diff --git a/kernel/stdlib.h b/kernel/stdlib.h new file mode 100644 index 0000000..dae4129 --- /dev/null +++ b/kernel/stdlib.h @@ -0,0 +1,45 @@ +#ifndef __STDLIB_H +#define __STDLIB_H + +#include "os.h" +#include "vga_terminal.h" +#include "string.h" + +//stdlib.h + +extern void kmemcpy(void* dst,const void* src,size_t len); +extern int kmemcmp(const void* dst,const void* src,size_t len); +extern void kmemzero(void* dst,size_t len); + +//termlib.h +#define kputc printchar + +void iprint(i64 number); +void uprint(u64 number); +void xprint(u64 number); + +void iprints(char* str,i64 number); +void uprints(char* str,u64 number); +void xprints(char* str,u64 number); + +void kprint(char* str); + +void ksprintf(char* dst,size_t maxLen,const char* fmt,...); +void kprintf(const char* fmt,...); + +//termio.h + +u8 kgetch(); //Wait for key scan code +dbcs_t kgetc(); //Wait for ASCII character + +void kgets(dbcs_t* buf,size_t cMax); + +i64 katoi(char* str,int base); + +void ksscanf(char* buf,char* fmt,...); + +#define _debug() \ + kprintf("_debug at %s:%u\n",__FILE__,__LINE__); \ + kgetc(); + +#endif diff --git a/kernel/string.c b/kernel/string.c new file mode 100644 index 0000000..b2e098a --- /dev/null +++ b/kernel/string.c @@ -0,0 +1,142 @@ +#include "string.h" +#include "stdlib.h" + +size_t kstrlen(const char* str) +{ + u32 len = 0; + while(*str++) len++; + return len; +} + +void kstrcpy(char* dst,const char* src) +{ + while((*dst++ = *src++)){} +} + +void kstrncpy(char* dst,const char* src,size_t maxLen) +{ + maxLen=-1; + while((*dst++ = *src++) && --maxLen){} + if(!maxLen) dst[maxLen] = '\0'; +} + +const char* kstrchr(const char* src,char chr) +{ + while(*src) + { + if(*src == chr) return src; + src++; + } + return NULL; +} + +const char* kstrrchr(const char* src,char chr) +{ + const char* ptr; + + ptr = src+kstrlen(src)-1; + while(ptr != src) + { + if(*ptr == chr) return ptr; + ptr--; + } + return NULL; +} + +int kstrcmp(const char* src,const char* dst) +{ + if(kstrlen(src) != kstrlen(dst)) return 1; + while(*src) + if(*src++ != *dst++) return 1; + return 0; +} + +int kstrncmp(const char* haystack,char* needle) +{ + return kmemcmp(haystack,needle,kstrlen(needle)); +} + +int kstrcasecmp(const char* src,const char* dst) +{ + if(kstrlen(src) != kstrlen(dst)) return 1; + while(*src) + { + kprintf("%c %c\n",ktolower(*src),ktolower(*dst)); + if(ktolower(*src++) != ktolower(*dst++)) return 1; + } + return 0; +} + +char ktoupper(char c) +{ + if(c >= 0x61 && c <= 0x7A) return c&0xDF; + return c; +} + +char ktolower(char c) +{ + if(c >= 0x41 && c <= 0x5A) return c|(1<<5); + return c; +} + +size_t kchrlen(char cchr) +{ + u8 chr = (u8)cchr; + + if(chr & 0b10000000) + { + if((chr>>5) == 0b110) return 2; + else if((chr>>4) == 0b1110) return 3; + else if((chr>>5) == 0b11110) return 4; + } + return 1; +} + +dbcs_t kchr2dbcs(const char* ptr) +{ + const u8* chr = (u8*)ptr; + + switch(kchrlen(chr[0])) + { + case 1: return chr[0]&0x7F; + case 2: return ((chr[0]&0x1F)<<6)|(chr[1]&0x3F); + case 3: return ((chr[0]&0x0F)<<12)|((chr[1]&0x3F)<<6)|(chr[2]&0x3F); + default: return 0x003F; + } +} + +size_t kdbcslen(dbcs_t chr) +{ + if(chr > 0x7FF) return 3; + else if(chr > 0x7F) return 2; + return 1; +} + +void kdbcs2str(dbcs_t* dbcs,char* str,size_t maxStr) +{ + char* end = str + maxStr - 1; + dbcs_t wc; + + while((wc = *dbcs++) && str != end) + { + size_t len = kdbcslen(wc); + if((str+len) >= end) break; + switch(len) + { + case 1: + *str++ = wc&0x7F; + break; + case 2: + *str++ = 0b11000000|((wc>>6)&0x1F); + *str++ = 0b10000000|((wc)&0x3F); + break; + case 3: + *str++ = 0b11100000|((wc>>12)&0x0F); + *str++ = 0b10000000|((wc>>6)&0x3F); + *str++ = 0b10000000|((wc)&0x3F); + break; + default: *str++ = '?'; + } + } + *str++ = '\0'; +} diff --git a/kernel/string.h b/kernel/string.h new file mode 100644 index 0000000..12fad8a --- /dev/null +++ b/kernel/string.h @@ -0,0 +1,31 @@ +#ifndef __STRING_H +#define __STRING_H + +#include "os.h" + +#define DBCS2SBCS(dbcs) ((char)(dbcs&0xFF)) + +typedef u16 dbcs_t; + +size_t kstrlen(const char* str); + +void kstrcpy(char* dst,const char* src); +void kstrncpy(char* dst,const char* src,size_t maxLen); + +const char* kstrchr(const char* src,char chr); +const char* kstrrchr(const char* src,char chr); + +int kstrcmp(const char* src,const char* dst); +int kstrncmp(const char* haystack,char* needle); +int kstrcasecmp(const char* src,const char* dst); + +char ktoupper(char c); +char ktolower(char c); + +size_t kchrlen(char chr); +dbcs_t kchr2dbcs(const char* chr); + +size_t kdbcslen(dbcs_t chr); +void kdbcs2str(dbcs_t* dbcs,char* str,size_t maxStr); + +#endif diff --git a/kernel/va_list.asm b/kernel/va_list.asm new file mode 100644 index 0000000..8673eb2 --- /dev/null +++ b/kernel/va_list.asm @@ -0,0 +1,41 @@ +section .text +global va_start +global va_arg + +va_start: + ; RDI va_list + mov rax,rsp + mov rsp,rdi + add rsp,0x30 + + push r9 + push r8 + push rcx + push rdx + push rsi + push rdi + + mov rsp,rax + ret + +va_arg: + ; RDI va_list + ; RSI index + push rbx + mov rbx,rsi + shl rbx,3 + + cmp rsi,6 + jge .va_stack + + mov rax,[rdi+rbx] + + pop rbx + ret +.va_stack: + sub rbx,0x30 + add rbx,0x10 + mov rax,[rbp+rbx] + + pop rbx + ret diff --git a/kernel/va_list.h b/kernel/va_list.h new file mode 100644 index 0000000..19ed40a --- /dev/null +++ b/kernel/va_list.h @@ -0,0 +1,13 @@ +#ifndef __VA_LIST_H +#define __VA_LIST_H + +#include "os.h" + +typedef struct { + u64 args[6]; +} va_list; + +extern void va_start(va_list*); +extern u64 va_arg(va_list*,u64); + +#endif diff --git a/kernel/vga_terminal.c b/kernel/vga_terminal.c new file mode 100644 index 0000000..1b7b164 --- /dev/null +++ b/kernel/vga_terminal.c @@ -0,0 +1,175 @@ +#include "vga_terminal.h" +//#include "paging.h" +#include "video.h" +#include "heap.h" +#include "string.h" +#include "stdlib.h" +#include "defines.h" +#include "bmp.h" +#include "os.h" +#include "io.h" + +static u8 s_cCurAttr = DEFAULT_COLOR; +u32 s_iX; +u32 s_iY; + +static u16* s_video_buffer = 0; +static int s_video_init = 0; + +static void draw_char(u16 sym,u32 color); + +static u32 vga_palette[] = { + 0x000000, + 0x0000AA, + 0x00AA00, + 0x00AAAA, + 0xAA0000, + 0xAA00AA, + 0xAA5500, + 0xAAAAAA, + + 0x555555, + 0x5555FF, + 0x55FF55, + 0x55FFFF, + 0xFF5555, + 0xFF55FF, + 0xFFFF55, + 0xFFFFFF, +}; + +void vga_terminal_init() +{ + s_video_buffer = (u16*)kmalloc(4000); + s_video_init = 1; + + lmem->vt_chars = 80; + lmem->vt_lines = 25; + lmem->vt_charw = lmem->v_width/lmem->vt_chars; + lmem->vt_charh = lmem->v_height/lmem->vt_lines; + + s_iX = 0; + s_iY = 0; +} + +void update_cursor() +{ + /*u16 pos; + pos = s_iY * 80 + s_iX; + + outb(0x3D4, 0x0F); + outb(0x3D5, (u8) (pos & 0xFF)); + outb(0x3D4, 0x0E); + outb(0x3D5, (u8) ((pos >> 8) & 0xFF));*/ +} + +void cls() +{ + if(!s_video_init) return; + //kmemzero((void*)s_video_buffer,sizeof(u16)*80*25); + video_clear(); + s_iX = s_iY = 0; + update_cursor(); +} + +void shiftscreen(); + +static void draw_char(u16 sym,u32 color) +{ + if(!sym && !color) + { + video_rect_zero(s_iX*lmem->vt_charw,s_iY*lmem->vt_charh, + lmem->vt_charw,lmem->vt_charh); + } + video_char(s_iX*lmem->vt_charw,s_iY*lmem->vt_charh, + lmem->vt_charw,lmem->vt_charh,color,sym); +} + +void printchar(u16 c) +{ + if(!s_video_init) return; + if(c == '\n' || c == '\r' || c == '\t' || c == '\b') // Control characters + { + if(c == '\r') s_iX = 0; + else if(c == '\n') s_iX = SCR_CHARS; + else if(c == '\t') s_iX = (s_iX + 8) & ~7; + else if(c == '\b') + { + if(s_iX) s_iX--; + else if(s_iY) + { + s_iY--; + s_iX = SCR_CHARS-1; + } + //Remove character + //SCR_TEXT_BUF[s_iY*SCR_CHARS+s_iX] = SCR_ENTRY(0,s_cCurAttr); + draw_char(0,0); + } + } + else // Text characters + { + //SCR_TEXT_BUF[s_iY*SCR_CHARS+s_iX++] = SCR_ENTRY(c,s_cCurAttr); + draw_char(c,vga_palette[s_cCurAttr]); + s_iX++; + } + + if(s_iX > SCR_CHARS-1) + { + s_iX = 0; + if(s_iY < SCR_LINES-1) + s_iY++; + else shiftscreen(); + } + + update_cursor(); +} + +void printbmp(u8* bmp) +{ + //scroll + //u64 scroll = s_iY + u32 h = *(u32*)(bmp+0x16); + h = MIN(h,lmem->v_height); + u64 lines = (h/lmem->vt_charh) + 1; + kprintf("lines %u\n",lines); + for(u64 i = 0; i < lines; i++) kputc('\n'); + bmp_draw(s_iX*lmem->vt_charw,(s_iY-lines-1)*lmem->vt_charh, + 0,h,bmp); +} + +void shiftscreen() +{ + u32 y; + if(!s_video_init) return; + video_line_zero(0,lmem->vt_charh); + for(y = 1; y < lmem->vt_lines; y++) + { + video_line_copy(y*lmem->vt_charh,(y-1)*lmem->vt_charh, + lmem->vt_charh); + } + + video_line_zero(lmem->vt_charh*(lmem->vt_lines-1), + lmem->vt_charh); +} + +void chg_color(u8 color) +{ + s_cCurAttr = color; +} + +void print(const char* str) +{ + while(*str) + { + printchar(kchr2dbcs(str)); + str += kchrlen(*str); + } +} + +void move_to_next_char(){} +void move_to_next_line(){} +void locate(int h, int w) +{ + s_iX = w; + s_iY = h; +} diff --git a/kernel/vga_terminal.h b/kernel/vga_terminal.h new file mode 100644 index 0000000..2e39272 --- /dev/null +++ b/kernel/vga_terminal.h @@ -0,0 +1,68 @@ +#ifndef __VGA_TERMINAL_H +#define __VGA_TERMINAL_H + +#include "os.h" + +#define SCR_CHARS 80 +#define SCR_LINES 25 +//#define SCR_TEXT_BUF ((u16*)0xB8000) +#define SCR_TEXT_BUF ((u16*)OS_VIDEO_BUFFER) +#define SCR_ENTRY(ch,col) ((col<<8)|ch) + +#define BLACK 0 +#define BLUE 1 +#define GREEN 2 +#define CYAN 2 +#define RED 4 +#define GRAY 8 +#define WHITE 15 +#define MAGENTA 13 + +#define BG_BLACK (0<<4) +#define BG_BLUE (1<<4) +#define BG_GREEN (2<<4) +#define BG_RED (4<<4) +#define BG_GRAY (8<<4) +#define BG_WHITE (15<<4) + +#define DEFAULT_COLOR BG_BLACK|7 + +enum vga_color { + VGA_COLOR_BLACK = 0, + VGA_COLOR_BLUE = 1, + VGA_COLOR_GREEN = 2, + VGA_COLOR_CYAN = 3, + VGA_COLOR_RED = 4, + VGA_COLOR_MAGENTA = 5, + VGA_COLOR_BROWN = 6, + VGA_COLOR_LIGHT_GREY = 7, + VGA_COLOR_DARK_GREY = 8, + VGA_COLOR_LIGHT_BLUE = 9, + VGA_COLOR_LIGHT_GREEN = 10, + VGA_COLOR_LIGHT_CYAN = 11, + VGA_COLOR_LIGHT_RED = 12, + VGA_COLOR_LIGHT_MAGENTA = 13, + VGA_COLOR_LIGHT_BROWN = 14, + VGA_COLOR_WHITE = 15, +}; + +static inline u8 vga_entry_color(enum vga_color fg, enum vga_color bg) { + return fg | bg << 4; +} + +static inline u16 vga_entry(unsigned char uc, u8 color) { + return (u16) uc | (u16) color << 8; +} + +void vga_terminal_init(); + +void cls(); +void shiftscreen(); +void printchar(u16 c); +void printbmp(u8* bmp); +void chg_color(u8 color); +void print(const char* str); +void locate(int h, int w); + + +#endif diff --git a/kernel/video.c b/kernel/video.c new file mode 100644 index 0000000..0c8a703 --- /dev/null +++ b/kernel/video.c @@ -0,0 +1,140 @@ +#include "video.h" +#include "heap.h" +#include "paging.h" +#include "stdlib.h" +#include "defines.h" +#include "multiboot.h" +#include "string.h" + +extern u8* x64_get_font(); + +void video_pixel(u64 x,u64 y,u32 color) +{ + u64 off = (y*lmem->v_stride) + (x*lmem->v_bpp); + + if(lmem->v_bpp == 3) + { + u32 dat = (*(u32*)&lmem->v_mem[off]) & 0xFF000000; + lmem->v_mem[off] = (color & 0x00FFFFFF) | dat; + } + else *(u32*)(lmem->v_mem+off) = color; +} + +static u8* video_font_get_bitmap(u16 sym) +{ + u64 i; + for(i = 0; i < lmem->vf_chars; i++) + if(lmem->vf_encodings[i] == sym) break; + if(i == lmem->vf_chars) return NULL; + return &lmem->vf_bitmaps[i<<4]; +} + +void video_char(u64 x,u64 y,u64 sizew,u64 sizeh,u32 color,u16 sym) +{ + //h size is always twice + u64 f_w = (sizew<<32) / (8ULL<<16ULL); + u64 f_h = (sizeh<<32) / (16ULL<<16ULL); + u8* bmap; + + bmap = video_font_get_bitmap(sym); + if(!bmap) + { + x64_rax_n_stop(0xDEADBEEF); + return; + } + u64 c_y = y; + for(u64 i = 0; i < 16; i++) + { + u64 c_x = x; + for(u64 j = 0; j < 8; j++) + { + if((bmap[i]>>(7-j)) & 1) + { + for(u64 k = 0; k < (f_w>>16); k++) + { + video_pixel(c_x+k,c_y,color); + for(u64 l = 1; l < (f_h>>16); l++) + video_pixel(c_x+k,c_y+l,color); + } + } + c_x = ((c_x<<16) + f_w) >> 16; + } + c_y = ((c_y<<16) + f_h) >> 16; + } +} + +void video_rect_zero(u64 x,u64 y,u64 w,u64 h) +{ + u64 len = w*lmem->v_bpp; + for(u32 i = 0; i < h; i++) + { + u32* line = (u32*)&lmem->v_mem[(y+i)*lmem->v_stride+(x*lmem->v_bpp)]; + kmemzero(line,len); + } +} + +void video_line_copy(u64 ysrc,u64 ydst,u64 height) +{ + kmemcpy(lmem->v_mem+(ydst*lmem->v_stride), + lmem->v_mem+(ysrc*lmem->v_stride), + lmem->v_stride*height); +} + +void video_line_zero(u64 y,u64 height) +{ + kmemzero(lmem->v_mem+(y*lmem->v_stride), + height*lmem->v_stride); +} + +void video_clear() +{ + kmemzero(lmem->v_mem,lmem->v_size); +} + +void video_swap() +{ + //kmemcpy(lmem->v_mem,lmem->v_mem,lmem->v_size); +} + +void video_init() +{ + multiboot_hdr_t* hdr = (multiboot_hdr_t*)lmem->multiboot; + + lmem->v_stride = hdr->framebuffer_pitch; + lmem->v_width = hdr->framebuffer_width; + lmem->v_height = hdr->framebuffer_height; + lmem->v_mem = (u8*)hdr->framebuffer_addr; + lmem->v_bpp = hdr->framebuffer_bpp>>3; + lmem->v_size = lmem->v_stride*lmem->v_height; + + lmem->v_r_p = *((u8*)hdr+110); + lmem->v_r_s = *((u8*)hdr+111); + lmem->v_g_p = *((u8*)hdr+112); + lmem->v_g_s = *((u8*)hdr+113); + lmem->v_b_p = *((u8*)hdr+114); + lmem->v_b_s = *((u8*)hdr+115); + + u64 size = lmem->v_stride*lmem->v_height; + for(u64 i = 0; i < (size>>12)+1; i++) + { + page_map((void*)((u64)lmem->v_mem+(i<<12)), + (void*)((u64)lmem->v_mem+(i<<12)),4096); + } + + u8* font = x64_get_font(); + + lmem->vf_chars = *(u64*)font; + lmem->vf_wchar = (8ULL<<32ULL) / (lmem->v_width<<16); + lmem->vf_hchar = (16ULL<<32ULL) / (lmem->v_height<<16); + + //lmem->vf_encodings = (u16*)(font + 8); + //lmem->vf_bitmaps = (u8*)ROUND2_UP(((u64)lmem->vf_encodings + // + (lmem->vf_chars<<1)),3); + lmem->vf_encodings = (u16*)kmalloc(lmem->vf_chars<<1); + lmem->vf_bitmaps = (u8*)kmalloc(lmem->vf_chars<<4); + + kmemcpy(lmem->vf_encodings,font+8,lmem->vf_chars<<1); + kmemcpy(lmem->vf_bitmaps,font+8+(lmem->vf_chars<<1),lmem->vf_chars<<4); + + //video_char(0,0,400,228,0x00FF00FF,kchr2dbcs("й")); +} diff --git a/kernel/video.h b/kernel/video.h new file mode 100644 index 0000000..6adfcd9 --- /dev/null +++ b/kernel/video.h @@ -0,0 +1,16 @@ +#ifndef __VIDEO_H +#define __VIDEO_H + +#include "os.h" + +void video_pixel(u64 x,u64 y,u32 color); +void video_char(u64 x,u64 y,u64 sizew,u64 sizeh,u32 color,u16 sym); +void video_rect_zero(u64 x,u64 y,u64 w,u64 h); +void video_line_copy(u64 ysrc,u64 ydst,u64 height); +void video_line_zero(u64 y,u64 height); +void video_clear(); + +void video_swap(); +void video_init(); + +#endif diff --git a/kernel/x64font.asm b/kernel/x64font.asm new file mode 100644 index 0000000..00a7ce3 --- /dev/null +++ b/kernel/x64font.asm @@ -0,0 +1,12 @@ +section .rdata +global x64_get_font + +align 8 +x64_font_bin: + incbin "font.bin" + +section .text + +x64_get_font: + mov rax,x64_font_bin + ret diff --git a/kernel/x64idt.asm b/kernel/x64idt.asm new file mode 100644 index 0000000..d33e603 --- /dev/null +++ b/kernel/x64idt.asm @@ -0,0 +1,18 @@ +section .text +global _idt_install + +_idt_install: + mov rax,idt_base + mov qword [rax],rdi + mov rax,idt_limit + mov word [rax],si + + mov rax,idt_desc + lidt [rax] + ret + +section .data +align 16 +idt_desc: + idt_limit dw 0 + idt_base dq 0 diff --git a/kernel/x64ints.asm b/kernel/x64ints.asm new file mode 100644 index 0000000..68d2da6 --- /dev/null +++ b/kernel/x64ints.asm @@ -0,0 +1,89 @@ +section .text +extern idt_call_handler + +%macro push_regs 0 + pushfq + push rax + push rbx + push rcx + push rdx + push rsi + push rdi + push rbp + ;push rsp + push r8 + push r9 + push r10 + push r11 + push r12 + push r13 + push r14 + push r15 +%endmacro + +%macro pop_regs 0 + pop r15 + pop r14 + pop r13 + pop r12 + pop r11 + pop r10 + pop r9 + pop r8 + ;pop rsp + pop rbp + pop rdi + pop rsi + pop rdx + pop rcx + pop rbx + pop rax + popfq +%endmacro + +%macro int_handler 1 +global int%1_handler + +int%1_handler: + push_regs + + mov rdi,%1 + call idt_call_handler + + pop_regs + iretq + +%endmacro + +int_handler 0 +int_handler 1 +int_handler 2 +int_handler 3 +int_handler 4 +int_handler 5 +int_handler 6 +int_handler 7 +int_handler 8 +int_handler 9 +int_handler 10 +int_handler 11 +int_handler 12 +int_handler 13 +int_handler 14 +int_handler 15 +int_handler 16 +int_handler 17 +int_handler 18 +int_handler 19 +int_handler 20 +int_handler 21 +int_handler 22 +int_handler 23 +int_handler 24 +int_handler 25 +int_handler 26 +int_handler 27 +int_handler 28 +int_handler 29 +int_handler 30 +int_handler 31 diff --git a/kernel/x64io.asm b/kernel/x64io.asm new file mode 100644 index 0000000..d9f1d17 --- /dev/null +++ b/kernel/x64io.asm @@ -0,0 +1,80 @@ +section .text +global inb +global outb +global inw +global outw +global inl +global outl +global _insw +global _outsw +global _insw256 +global _outsw256 + +inb: + mov rdx,rdi + in al,dx + ret + +outb: + mov rdx,rdi + mov rax,rsi + out dx,al + ret + +inw: + mov rdx,rdi + in ax,dx + ret + +outw: + mov rdx,rdi + mov rax,rsi + out dx,ax + ret + +inl: + mov rdx,rdi + in eax,dx + ret + +outl: + mov rdx,rdi + mov rax,rsi + out dx,eax + ret + +_insw: + ; 1 - RDI port + ; 2 - RSI buf + ; 3 - RDX count + mov rcx,rdx + mov rdx,rdi + mov rdi,rsi + rep insw + ret + +_outsw: + ; 1 - RDI port + ; 2 - RSI buf + ; 3 - RDX count + mov rcx,rdx + mov rdx,rdi + rep outsw + ret + +_insw256: + ; 1 - RDI port + ; 2 - RSI buf + mov rdx,rdi + mov rdi,rsi + mov rcx,0x100 + rep insw + ret + +_outsw256: + ; 1 - RDI port + ; 2 - RSI buf + mov rdx,rdi + mov rcx,0x100 + rep outsw + ret diff --git a/kernel/x64stdlib.asm b/kernel/x64stdlib.asm new file mode 100644 index 0000000..2dcaa0a --- /dev/null +++ b/kernel/x64stdlib.asm @@ -0,0 +1,56 @@ +section .text +global kmemcpy +global kmemcmp +global kmemzero + +kmemcpy: + ; RDI dst + ; RSI src + ; RDX size + mov rcx,rdx + shr rcx,3 + rep movsq + + mov rcx,rdx + and rcx,7 + rep movsb + ret + +kmemcmp: + mov rcx,rdx + shr rcx,3 + jz .test1 +.cmp8: + cmpsq + jnz .not_equal + loop .cmp8 + +.test1: + mov rcx,rdx + and rcx,7 +.cmp1: + cmpsb + jnz .not_equal + loop .cmp1 + + jmp .equal +.not_equal: + xor eax,eax + inc eax + ret +.equal: + xor eax,eax + ret + +kmemzero: + xor rax,rax + + mov rcx,rsi + shr rcx,3 + rep stosq + + mov rcx,rsi + and rcx,7 + rep stosb + + ret diff --git a/kernel/x64utils.asm b/kernel/x64utils.asm new file mode 100644 index 0000000..abdd784 --- /dev/null +++ b/kernel/x64utils.asm @@ -0,0 +1,10 @@ +section .text +global x64_get_cr2 +global x64_rax_n_stop + +x64_get_cr2: + mov rax,cr2 + ret +x64_rax_n_stop: + mov rax,rdi + jmp $ diff --git a/kernel_old/ahci.c b/kernel_old/ahci.c new file mode 100644 index 0000000..7d51d91 --- /dev/null +++ b/kernel_old/ahci.c @@ -0,0 +1,169 @@ +#include "ahci.h" +#include "pci.h" +#include "pit.h" +#include "io.h" +#include "paging.h" +#include "stdlib.h" + +typedef struct { + u32 hba_phys; + hba_port_t* sata; + hba_port_t* atapi; +} ahci_t; + +static ahci_t s_ahci; +static hba_mem_t* HBA; + +static __align(4096) u16 buf[256]; + +void sata_identify() +{ + hba_cmd_header_t* cmdhdr = (hba_cmd_header_t*)s_ahci.sata->clb; + hba_cmd_tbl_t* cmdtbl = (hba_cmd_tbl_t*)cmdhdr->ctba; + fis_reg_h2d_t* fis = (fis_reg_h2d_t*)&cmdtbl->cfis; + kprintf("cmdhdr %x cmdtbl %x fis %x\n",cmdhdr,cmdtbl,fis); + s_ahci.sata->is = 0xFFFFFFFF; + + cmdhdr->cfl = sizeof(fis_reg_h2d_t)/sizeof(u32); + cmdhdr->w = 0; + cmdhdr->prdtl = 1; + + kmemzero(cmdtbl, sizeof(hba_cmd_tbl_t) + + (cmdhdr->prdtl-1)*sizeof(hba_prdt_entry_t)); + + kmemzero(fis,sizeof(fis_reg_h2d_t)); + /*fis->fis_type = FIS_TYPE_REG_H2D; + fis->c = 1; + fis->command = ATA_CMD_IDENTIFY; + fis->device = ATA_LBA_MODE; // Master*/ + + fis->fis_type = FIS_TYPE_REG_H2D; + fis->c = 1; + fis->command = 0xEC; + + fis->lba0 = 0; + fis->lba1 = 0; + fis->lba2 = 0; + fis->device = ATA_LBA_MODE; + fis->lba3 = 0; + fis->lba4 = 0; + fis->lba5 = 0; + + fis->countl = 1; + fis->counth = 0; + + kmemzero(&cmdtbl->prdt_entry[0],sizeof(hba_prdt_entry_t)); + cmdtbl->prdt_entry[0].dba = page_v2p((u32)buf); + cmdtbl->prdt_entry[0].dbc = 511; // 512 bytes + cmdtbl->prdt_entry[0].i = 0; + + kprintf("s_ahci.sata->tfd %x\n",s_ahci.sata->tfd); + kprintf("s_ahci.sata->ci %x\n",s_ahci.sata->ci); + kprintf("s_ahci.sata->sact %x\n",s_ahci.sata->sact); + _debug(); + + //Wait before executing new commands + while(s_ahci.sata->tfd & (ATA_DEV_BUSY|ATA_DEV_DRQ)) + { + kprintf("wait to issue cmd\n"); + } + + s_ahci.sata->ci = (1<<0); + + while((s_ahci.sata->ci & (1<<0)) != 0) + { + if(s_ahci.sata->is & (1<<5)) + { + kprintf("disk error\n"); + return; + } + kprintf("wait\n"); + } + + kprintf("IDENTIFY command executed!\n"); + kprintf("%x %x %u",buf,buf[83],*(u32*)&buf[60]); + +} + + + +void ahci_init() +{ + pci_device_t ahci; + u32 bar; + + //Use PCI + ahci = pci_find_device(0x01,0x06); + if(ahci == 0) + { + kprintf("AHCI not found!\n"); + return; + } + bar = pci_read_config_word_dev(ahci,0x24); + s_ahci.hba_phys = bar & 0xFFFFFFF0; + + kprintf("HBA %x\n",s_ahci.hba_phys); + //Identity map + page_map(s_ahci.hba_phys,s_ahci.hba_phys, + 16384,PAGE_TABLE_READWRITE); + HBA = (hba_mem_t*)s_ahci.hba_phys; + + HBA->ghc |= (1<<31); //Enable GHC.AE + if(HBA->cap & (1<<27)) + { + kprintf("AHCI supports stagered spin-up\n"); + } + + //kprintf("pi %x\n",HBA->pi); + for(u32 i = 0; i < 32; i++) + { + hba_port_t* port = &HBA->ports[i]; + if(!((HBA->pi>>i)&1)) continue; + switch(port->sig) + { + case SATA_SIG_ATA: s_ahci.sata = port; break; + case SATA_SIG_ATAPI: s_ahci.atapi = port; break; + } + + //Initialize port + if(port->cmd & (SCMD_ST|SCMD_FR|SCMD_CR|SCMD_FRE)) //Isn't IDLE + { + port->cmd &= ~SCMD_ST; + while(port->cmd & SCMD_CR) + { + sleep(1000); + } + + port->cmd &= ~SCMD_FRE; + while(port->cmd & SCMD_FR) + { + sleep(1000); + } + } + + //Start it again + port->cmd |= SCMD_ST|SCMD_FRE; + + //Clear SERR + port->serr = 0xFFFFFFFF; + port->ie = 0; + + u32 data = port->is; + port->is = data; + } + + HBA->is = 0; + + page_map(s_ahci.sata->clb,s_ahci.sata->clb, + AHCI_CLB_SIZE,PAGE_DIR_READWRITE); + page_map(s_ahci.sata->fb,s_ahci.sata->fb, + AHCI_FB_SIZE,PAGE_DIR_READWRITE); + + page_map(s_ahci.atapi->clb,s_ahci.sata->clb, + AHCI_CLB_SIZE,PAGE_DIR_READWRITE); + page_map(s_ahci.atapi->fb,s_ahci.sata->fb, + AHCI_FB_SIZE,PAGE_DIR_READWRITE); + + //Initialize SATA and ATAPI + //sata_identify(); +} diff --git a/kernel_old/ahci.h b/kernel_old/ahci.h new file mode 100644 index 0000000..b4436dd --- /dev/null +++ b/kernel_old/ahci.h @@ -0,0 +1,315 @@ +#ifndef __AHCI_H +#define __AHCI_H + +#include "os.h" + +#define SATA_SIG_ATA 0x00000101 // SATA drive +#define SATA_SIG_ATAPI 0xEB140101 // SATAPI drive +#define SATA_SIG_SEMB 0xC33C0101 // Enclosure management bridge +#define SATA_SIG_PM 0x96690101 // Port multiplier + +#define ATA_DEV_BUSY (1<<7) +#define ATA_DEV_DRQ (1<<3) + +typedef struct { + u32 clb; // 0x00, command list base address, 1K-byte aligned + u32 clbu; // 0x04, command list base address upper 32 bits + u32 fb; // 0x08, FIS base address, 256-byte aligned + u32 fbu; // 0x0C, FIS base address upper 32 bits + u32 is; // 0x10, interrupt status + u32 ie; // 0x14, interrupt enable + u32 cmd; // 0x18, command and status + u32 rsv0; // 0x1C, Reserved + u32 tfd; // 0x20, task file data + u32 sig; // 0x24, signature + u32 ssts; // 0x28, SATA status (SCR0:SStatus) + u32 sctl; // 0x2C, SATA control (SCR2:SControl) + u32 serr; // 0x30, SATA error (SCR1:SError) + u32 sact; // 0x34, SATA active (SCR3:SActive) + u32 ci; // 0x38, command issue + u32 sntf; // 0x3C, SATA notification (SCR4:SNotification) + u32 fbs; // 0x40, FIS-based switch control + u32 rsv1[11]; // 0x44 ~ 0x6F, Reserved + u32 vendor[4]; // 0x70 ~ 0x7F, vendor specific +} hba_port_t; + +typedef struct +{ + // 0x00 - 0x2B, Generic Host Control + u32 cap; // 0x00, Host capability + u32 ghc; // 0x04, Global host control + u32 is; // 0x08, Interrupt status + u32 pi; // 0x0C, Port implemented + u32 vs; // 0x10, Version + u32 ccc_ctl; // 0x14, Command completion coalescing control + u32 ccc_pts; // 0x18, Command completion coalescing ports + u32 em_loc; // 0x1C, Enclosure management location + u32 em_ctl; // 0x20, Enclosure management control + u32 cap2; // 0x24, Host capabilities extended + u32 bohc; // 0x28, BIOS/OS handoff control and status + + // 0x2C - 0x9F, Reserved + u8 rsv[116]; + + // 0xA0 - 0xFF, Vendor specific registers + u8 vendor[96]; + + // 0x100 - 0x10FF, Port control registers + hba_port_t ports[32]; +} hba_mem_t; + +typedef enum +{ + FIS_TYPE_REG_H2D = 0x27, // Register FIS - host to device + FIS_TYPE_REG_D2H = 0x34, // Register FIS - device to host + FIS_TYPE_DMA_ACT = 0x39, // DMA activate FIS - device to host + FIS_TYPE_DMA_SETUP = 0x41, // DMA setup FIS - bidirectional + FIS_TYPE_DATA = 0x46, // Data FIS - bidirectional + FIS_TYPE_BIST = 0x58, // BIST activate FIS - bidirectional + FIS_TYPE_PIO_SETUP = 0x5F, // PIO setup FIS - device to host + FIS_TYPE_DEV_BITS = 0xA1, // Set device bits FIS - device to host +} fis_type_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_REG_H2D + + u8 pmport:4; // Port multiplier + u8 rsv0:3; // Reserved + u8 c:1; // 1: Command, 0: Control + + u8 command; // Command register + u8 featurel; // Feature register, 7:0 + + // DWORD 1 + u8 lba0; // LBA low register, 7:0 + u8 lba1; // LBA mid register, 15:8 + u8 lba2; // LBA high register, 23:16 + u8 device; // Device register + + // DWORD 2 + u8 lba3; // LBA register, 31:24 + u8 lba4; // LBA register, 39:32 + u8 lba5; // LBA register, 47:40 + u8 featureh; // Feature register, 15:8 + + // DWORD 3 + u8 countl; // Count register, 7:0 + u8 counth; // Count register, 15:8 + u8 icc; // Isochronous command completion + u8 control; // Control register + + // DWORD 4 + u8 rsv1[4]; // Reserved +} fis_reg_h2d_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_REG_D2H + + u8 pmport:4; // Port multiplier + u8 rsv0:2; // Reserved + u8 i:1; // Interrupt bit + u8 rsv1:1; // Reserved + + u8 status; // Status register + u8 error; // Error register + + // DWORD 1 + u8 lba0; // LBA low register, 7:0 + u8 lba1; // LBA mid register, 15:8 + u8 lba2; // LBA high register, 23:16 + u8 device; // Device register + + // DWORD 2 + u8 lba3; // LBA register, 31:24 + u8 lba4; // LBA register, 39:32 + u8 lba5; // LBA register, 47:40 + u8 rsv2; // Reserved + + // DWORD 3 + u8 countl; // Count register, 7:0 + u8 counth; // Count register, 15:8 + u8 rsv3[2]; // Reserved + + // DWORD 4 + u8 rsv4[4]; // Reserved +} fis_reg_d2h_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_DATA + + u8 pmport:4; // Port multiplier + u8 rsv0:4; // Reserved + + u8 rsv1[2]; // Reserved + + // DWORD 1 ~ N + u32 data[1]; // Payload +} fis_data_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_PIO_SETUP + + u8 pmport:4; // Port multiplier + u8 rsv0:1; // Reserved + u8 d:1; // Data transfer direction, 1 - device to host + u8 i:1; // Interrupt bit + u8 rsv1:1; + + u8 status; // Status register + u8 error; // Error register + + // DWORD 1 + u8 lba0; // LBA low register, 7:0 + u8 lba1; // LBA mid register, 15:8 + u8 lba2; // LBA high register, 23:16 + u8 device; // Device register + + // DWORD 2 + u8 lba3; // LBA register, 31:24 + u8 lba4; // LBA register, 39:32 + u8 lba5; // LBA register, 47:40 + u8 rsv2; // Reserved + + // DWORD 3 + u8 countl; // Count register, 7:0 + u8 counth; // Count register, 15:8 + u8 rsv3; // Reserved + u8 e_status; // New value of status register + + // DWORD 4 + u16 tc; // Transfer count + u8 rsv4[2]; // Reserved +} fis_pio_setup_t; + +typedef struct +{ + // DWORD 0 + u8 fis_type; // FIS_TYPE_DMA_SETUP + + u8 pmport:4; // Port multiplier + u8 rsv0:1; // Reserved + u8 d:1; // Data transfer direction, 1 - device to host + u8 i:1; // Interrupt bit + u8 a:1; // Auto-activate. Specifies if DMA Activate FIS is needed + + u8 rsved[2]; // Reserved + + //DWORD 1&2 + + u64 DMAbufferID; // DMA Buffer Identifier. Used to Identify DMA buffer in host memory. SATA Spec says host specific and not in Spec. Trying AHCI spec might work. + + //DWORD 3 + u32 rsvd; //More reserved + + //DWORD 4 + u32 DMAbufOffset; //Byte offset into buffer. First 2 bits must be 0 + + //DWORD 5 + u32 TransferCount; //Number of bytes to transfer. Bit 0 must be 0 + + //DWORD 6 + u32 resvd; //Reserved + +} fis_dma_setup_t; + +typedef struct +{ + // 0x00 + fis_dma_setup_t dsfis; // DMA Setup FIS + u8 pad0[4]; + + // 0x20 + fis_pio_setup_t psfis; // PIO Setup FIS + u8 pad1[12]; + + // 0x40 + fis_reg_d2h_t rfis; // Register – Device to Host FIS + u8 pad2[4]; + + // 0x58 + u64 sdbfis; // Set Device Bit FIS + + // 0x60 + u8 ufis[64]; + + // 0xA0 + u8 rsv[0x100-0xA0]; +} hba_fis_t; + +typedef struct +{ + // DW0 + u8 cfl:5; // Command FIS length in DWORDS, 2 ~ 16 + u8 a:1; // ATAPI + u8 w:1; // Write, 1: H2D, 0: D2H + u8 p:1; // Prefetchable + + u8 r:1; // Reset + u8 b:1; // BIST + u8 c:1; // Clear busy upon R_OK + u8 rsv0:1; // Reserved + u8 pmp:4; // Port multiplier port + + u16 prdtl; // Physical region descriptor table length in entries + + // DW1 + u32 prdbc; // Physical region descriptor byte count transferred + + // DW2, 3 + u32 ctba; // Command table descriptor base address + u32 ctbau; // Command table descriptor base address upper 32 bits + + // DW4 - 7 + u32 rsv1[4]; // Reserved +} hba_cmd_header_t; + +typedef struct +{ + u32 dba; // Data base address + u32 dbau; // Data base address upper 32 bits + u32 rsv0; // Reserved + + // DW3 + u32 dbc:22; // Byte count, 4M max + u32 rsv1:9; // Reserved + u32 i:1; // Interrupt on completion +} hba_prdt_entry_t; + +typedef struct +{ + // 0x00 + u8 cfis[64]; // Command FIS + + // 0x40 + u8 acmd[16]; // ATAPI command, 12 or 16 bytes + + // 0x50 + u8 rsv[48]; // Reserved + + // 0x80 + hba_prdt_entry_t prdt_entry[1]; // Physical region descriptor table entries, 0 ~ 65535 +} hba_cmd_tbl_t; + +void sata_identify(); +void ahci_init(); + +#define AHCI_CLB_SIZE ((sizeof(hba_cmd_header_t)*32)+4096) +#define AHCI_FB_SIZE ((sizeof(hba_fis_t)*32)+4096) + +#define SCMD_ST (1<<0) +#define SCMD_CR (1<<15) +#define SCMD_FR (1<<14) +#define SCMD_FRE (1<<4) + +#define ATA_LBA_MODE 0x40 +#define ATA_CMD_IDENTIFY 0xEC + +#endif diff --git a/kernel_old/ata_pio.c b/kernel_old/ata_pio.c new file mode 100644 index 0000000..bdba235 --- /dev/null +++ b/kernel_old/ata_pio.c @@ -0,0 +1,122 @@ +#include "ata_pio.h" +#include "io.h" +#include "pic.h" +#include "idt.h" +#include "pci.h" +#include "exceptions.h" +#include "stdlib.h" + +typedef struct { + u8 buf[512]; + u16 io_base; + u16 ctrl_base; + u32 slavebit; + u32 wait; +} ata_pio_t; + +static ata_pio_t s_ata; + +void ata_interrupt_master(int idx) +{ + s_ata.wait = 0; + kprintf("interrupt happend\n"); +} + +void ata_wait() +{ + __asm("cli"); + s_ata.wait = 1; + __asm("sti"); + do { + __asm("hlt"); + } while(s_ata.wait); +} + +void ata_init_drive(u8 drv,u8 slavebit) +{ + u8 poll; + + if(!slavebit) + { + s_ata.io_base = slavebit ? 0x170 : 0xC080; + s_ata.ctrl_base = 0x3E6; + } + else + { + s_ata.io_base = slavebit ? 0x168 : 0x1E8; + s_ata.ctrl_base = 0x366; + } + + kprintf("s_ata.io_base %x\ns_ata.ctrl_base %x\n", + s_ata.io_base,s_ata.ctrl_base); + + outb(s_ata.io_base + ATA_DRV,slavebit ? 0xB0 : 0xA0); + + outb(s_ata.io_base + ATA_LBALO,0); + outb(s_ata.io_base + ATA_LBAMID,0); + outb(s_ata.io_base + ATA_LBAHI,0); + + outb(s_ata.io_base + ATA_COMMAND,ATA_CMD_IDENTIFY); + + if(inb(s_ata.io_base + ATA_STATUS) == 0) return; + // Poll status + while((poll=inb(s_ata.io_base + ATA_STATUS)) & ATA_STS_BSY) + { + if(poll == 0xFF) + { + kprintf("ATA Drive not found!\n"); + return; + } + kprintf("polling 1 (%x)\n",inb(s_ata.io_base + ATA_STATUS)); + } + if(inb(s_ata.io_base + ATA_LBAMID) | s_ata.io_base + ATA_LBAHI) + { + kprintf("Non-ATA\n"); + return; // Non-ATA + } + // Wait DRQ + while((inb(s_ata.io_base + ATA_STATUS) & ATA_STS_DRQ) == 0) + { + kprintf("polling 2\n"); + if(inb(s_ata.io_base + ATA_STATUS) & ATA_STS_ERR) + { + kprintf("ATA_STS_ERR\n"); + return; + } + } + // Read data + _insw256(s_ata.io_base + ATA_DATA,s_ata.buf); + + kprintf("LBA size %u\n",*(u32*)(&s_ata.buf[0xC0])); +} + +void ata_init() +{ + pci_device_t sata; + u32 irq; + u32 bar[6]; + + + //Use PCI + sata = pci_find_device(0x01,0x06); + if(sata == 0) + { + kprintf("Serial ATA not found!\n"); + return; + } + + kprintf("SATA %x\n",sata); + for(u32 i = 0; i < 6; i++) + { + bar[i] = pci_read_config_word_dev(sata,0x10+(i<<2)); + kprintf("bar%u %x\n",i,bar[i]); + } + irq = pci_read_config_word_dev(sata,0x3C)&0xFF; + kprintf("SATA irq %u\n",irq); + kprintf("SATA prog_if %x\n",(pci_read_config_word_dev(sata,0x08)&0x0000FF00)>>8); + + pic_set_mask(14,1); + idt_setup(_int14_handler,ata_interrupt_master, + 46,IDT_TYPE_INTERRUPT); + +} diff --git a/kernel_old/ata_pio.h b/kernel_old/ata_pio.h new file mode 100644 index 0000000..bbae4ad --- /dev/null +++ b/kernel_old/ata_pio.h @@ -0,0 +1,59 @@ +#ifndef __ATA_PIO_H +#define __ATA_PIO_H + +#include "os.h" + +#define ATA_MASTER_DRIVE 0xA0 +#define ATA_SLAVE_DRIVE 0xB0 + +#define ATA_ERR_AMNF (1<<0) +#define ATA_ERR_TKZNF (1<<1) +#define ATA_ERR_ABRT (1<<2) +#define ATA_ERR_MCR (1<<3) +#define ATA_ERR_IDNF (1<<4) +#define ATA_ERR_MC (1<<5) +#define ATA_ERR_UNC (1<<6) +#define ATA_ERR_BBK (1<<7) + +#define ATA_DRIVE_REG(lba,drv) (0x80|((drv&0x01)<<4)|((lba)&0x0F)) + +#define ATA_STS_ERR (1<<0) +#define ATA_STS_IDX (1<<1) +#define ATA_STS_CORR (1<<2) +#define ATA_STS_DRQ (1<<3) +#define ATA_STS_SRV (1<<4) +#define ATA_STS_FD (1<<5) +#define ATA_STS_RDY (1<<6) +#define ATA_STS_BSY (1<<7) + +#define ATA_DCR_NIEN (1<<1) +#define ATA_DCR_SRST (1<<2) +#define ATA_DCR_HOB (1<<7) + +#define ATA_PRIMARY_IO_BASE 0x1F0 +#define ATA_PRIMARY_CTRL_BASE 0x3F6 + +#define ATA_SECONDARY_IO_BASE 0x170 +#define ATA_SECONDARY_CTRL_BASE 0x376 + +// Port map + +#define ATA_DATA 0 +#define ATA_ERR 1 +#define ATA_FEAT 1 +#define ATA_SEC 2 +#define ATA_LBALO 3 +#define ATA_LBAMID 4 +#define ATA_LBAHI 5 +#define ATA_DRV 6 +#define ATA_STATUS 7 +#define ATA_COMMAND 7 + +// Commands + +#define ATA_CMD_IDENTIFY 0xEC + +void ata_init(); +void ata_init_drive(u8 drv,u8 slavebit); + +#endif diff --git a/kernel_old/exceptions.c b/kernel_old/exceptions.c new file mode 100644 index 0000000..2ad21c9 --- /dev/null +++ b/kernel_old/exceptions.c @@ -0,0 +1,138 @@ +#include "exceptions.h" +#include "vga_terminal.h" +#include "termlib.h" +#include "idt.h" +#include "pit.h" +#include "x86utils.h" + +/* We need to implement those excpetions: + * 0 Division by zero + * 3 Breakpoint + * 6 Invalid opcode + * 7 Device not available + * 8 Double Fault + * 10 Invalid TSS + * 11 Segment not present + * 12 Stack segment fault + * 13 General protection fault + * 14 Page fault + * + */ + +static void hang() +{ + x86_print_regs(); + while(1){__asm("hlt");} +} + +extern void command_interpreter(); +extern void _load_legacy_stack(); + +void _enter_rescue_mode() +{ + _load_legacy_stack(); + sleep(500); + command_interpreter(); +} + +void enter_rescue_mode(int skip_check) +{ + if(!skip_check) + { + chg_color(VGA_COLOR_LIGHT_CYAN); + kprintf("Rollback to terminal? (y - yes, n - no): "); + u8 ans = kgetc(); + if(ans == 'y' || skip_check) + { + kputc('\n'); + chg_color(VGA_COLOR_MAGENTA); + _enter_rescue_mode(); + } + chg_color(VGA_COLOR_MAGENTA); + } + else + { + cls(); + kprintf("Terminal reloaded\n"); + _enter_rescue_mode(); + } +} + +void exception0(int idx) +{ + kprintf("[Exception] Division by zero\n"); + hang(); +} + +void exception3(int idx) +{ + kprintf("[Exception] Debug\n"); + hang(); +} + +void exception6(int idx) +{ + kprintf("[Exception] Invalid opcode\n"); + hang(); +} + +void exception7(int idx) +{ + kprintf("[Exception] Device not available\n"); + hang(); +} + +void exception8(int idx) +{ + kprintf("[Exception] Double fault\n"); + hang(); +} + +void exception10(int idx) +{ + kprintf("[Exception] Invalid TSS\n"); + hang(); +} + +void exception11(int idx) +{ + kprintf("[Exception] Segment not present\n"); + hang(); +} + +void exception12(int idx) +{ + kprintf("[Exception] Stack segment fault\n"); + hang(); +} + +void exception13(int idx) +{ + kprintf("[Exception] General protection fault\n"); + hang(); +} + +void exception14(int idx) +{ + kprintf("[Exception] Page fault\n"); + x86_print_regs(); + //Do we want to rollback in command interpreter + + enter_rescue_mode(0); + while(1){__asm("hlt");} +} + +void install_exceptions() +{ + idt_setup(_int0_handler,exception0,0,IDT_TYPE_TRAP); + idt_setup(_int3_handler,exception3,3,IDT_TYPE_TRAP); + idt_setup(_int6_handler,exception6,6,IDT_TYPE_TRAP); + idt_setup(_int7_handler,exception7,7,IDT_TYPE_TRAP); + idt_setup(_int8_handler,exception8,8,IDT_TYPE_TRAP); + //idt_setup(_int9_handler,exception9,9,IDT_TYPE_TRAP); + idt_setup(_int10_handler,exception10,10,IDT_TYPE_TRAP); + idt_setup(_int11_handler,exception11,11,IDT_TYPE_TRAP); + idt_setup(_int12_handler,exception12,12,IDT_TYPE_TRAP); + idt_setup(_int13_handler,exception13,13,IDT_TYPE_TRAP); + idt_setup(_int14_handler,exception14,14,IDT_TYPE_TRAP); +} diff --git a/kernel_old/exceptions.h b/kernel_old/exceptions.h new file mode 100644 index 0000000..42f6e49 --- /dev/null +++ b/kernel_old/exceptions.h @@ -0,0 +1,9 @@ +#ifndef __EXCEPTIONS_H +#define __EXCEPTIONS_H + +#include "os.h" + +void enter_rescue_mode(); +void install_exceptions(); + +#endif diff --git a/kernel_old/gdt.c b/kernel_old/gdt.c new file mode 100644 index 0000000..41c73ac --- /dev/null +++ b/kernel_old/gdt.c @@ -0,0 +1,39 @@ +#include "gdt.h" + +static u64 gdt_table[GDT_MAX]; + +u64 gdt_create(u32 base,u32 limit,u32 type) +{ + u64 desc; + u8 access_byte; + u8 flags; + + access_byte = GDT_AB_PR|GDT_AB_S|GDT_AB_RW; + if(type == GDT_CODE) + { + access_byte |= GDT_AB_EX; + } + + flags = GDT_FLAGS_GR|GDT_FLAGS_SZ; + + desc = 0; + desc |= (u64)(limit & 0xFFFF) << 0; + desc |= (u64)(base & 0xFFFF) << 16; + desc |= (u64)((base>>16) & 0xFF) << 32; + desc |= (u64)(access_byte & 0xFF) << 40; + desc |= (u64)((limit>>16) & 0x0F) << 48; + desc |= (u64)(flags & 0x0F) << 52; + desc |= (u64)((base>>24) & 0xFF) << 56; + + return desc; +} + +void gdt_install() +{ + // Protected Mode Flat Model + gdt_table[GDT_NULL] = gdt_create(0,0,0); + gdt_table[GDT_CODE] = gdt_create(0,0x000FFFFF,GDT_CODE); + gdt_table[GDT_DATA] = gdt_create(0,0x000FFFFF,GDT_DATA); + + _gdt_install(gdt_table,sizeof(gdt_table)-1); +} diff --git a/kernel_old/gdt.h b/kernel_old/gdt.h new file mode 100644 index 0000000..f614906 --- /dev/null +++ b/kernel_old/gdt.h @@ -0,0 +1,29 @@ +#ifndef __GDT_H +#define __GDT_H + +#include "os.h" + +#define GDT_AB_PR (1<<7) +#define GDT_AB_PRIVL (1<<5) +#define GDT_AB_S (1<<4) +#define GDT_AB_EX (1<<3) +#define GDT_AB_DC (1<<2) +#define GDT_AB_RW (1<<1) +#define GDB_AB_AC (1<<0) + +#define GDT_FLAGS_GR (1<<3) +#define GDT_FLAGS_SZ (1<<2) + +enum { + GDT_NULL = 0, + GDT_CODE, + GDT_DATA, + GDT_MAX, +}; + +u64 gdt_create(u32 base,u32 limit,u32 type); +void gdt_install(); + +extern void _gdt_install(void* gdt,int size); + +#endif diff --git a/kernel_old/idt.c b/kernel_old/idt.c new file mode 100644 index 0000000..67c5b71 --- /dev/null +++ b/kernel_old/idt.c @@ -0,0 +1,72 @@ +#include "idt.h" +#include "termlib.h" + +static u64 idt_table[256]; //256 entries lol +static idt_handler idt_handlers[256]; + +u64 idt_create(void* handler,int type) +{ + u64 desc; + u32 addr; + + addr = (u32)handler; + + desc = 0; + desc |= (u64)(addr&0xFFFF) << 0; + desc |= (u64)(OS_CODE_SELECTOR&0xFFFF) << 16; + desc |= (u64)(type&0x0F) << 40; + desc |= (u64)(1) << 47; + desc |= (u64)(addr>>16) << 48; + + return desc; +} + +void idt_setup(void* int_handler,idt_handler handler,int idx,int type) +{ + idt_table[idx] = idt_create(int_handler,type); + idt_handlers[idx] = handler; +} + +static void* idt_get_addr(int i) +{ + return (void*)(((u32)((idt_table[i]>>48)<<16)|(u32)(idt_table[i]&0xFFFF))); +} + +int idt_irq_by_addr(void* addr) +{ + int i; + + for(i = 0; i < 256; i++) + if(idt_get_addr(i) == addr) return i; + + return -1; +} + +void idt_handler_entry(void* addr) +{ + int idx; + + idx = idt_irq_by_addr(addr); + if(idx == -1) + { + kprintf("No IDT entry some INT!\n"); + return; + } + + //Call handler + idt_handlers[idx](idx); +} + +void idt_install() +{ + int i; + + for(i = 0; i < 256; i++) idt_table[i] = 0; + + _idt_install(idt_table,sizeof(idt_table)-1); +} + +void idt_enable_interrupts() +{ + __asm("sti"); +} diff --git a/kernel_old/idt.h b/kernel_old/idt.h new file mode 100644 index 0000000..abfce5f --- /dev/null +++ b/kernel_old/idt.h @@ -0,0 +1,60 @@ +#ifndef __IDT_H +#define __IDT_H + +#include "os.h" + +typedef enum { + IDT_TYPE_TASK = 5, + IDT_TYPE_16_INTERRUPT = 6, + IDT_TYPE_16_TRAP = 7, + IDT_TYPE_INTERRUPT = 14, + IDT_TYPE_TRAP = 15, +} idt_type; + +typedef void (*idt_handler)(int irq); + +u64 idt_create(void* handler,int type); +void idt_setup(void* int_handler,idt_handler handler,int idx,int type); +int idt_irq_by_addr(void* addr); + +void idt_handler_entry(void* addr); + +void idt_install(); +extern void _idt_install(void* idt,int limit); + +void idt_enable_interrupts(); + +extern void _int0_handler(); +extern void _int1_handler(); +extern void _int2_handler(); +extern void _int3_handler(); +extern void _int4_handler(); +extern void _int5_handler(); +extern void _int6_handler(); +extern void _int7_handler(); +extern void _int8_handler(); +extern void _int9_handler(); +extern void _int10_handler(); +extern void _int11_handler(); +extern void _int12_handler(); +extern void _int13_handler(); +extern void _int14_handler(); +extern void _int15_handler(); +extern void _int16_handler(); +extern void _int17_handler(); +extern void _int18_handler(); +extern void _int19_handler(); +extern void _int20_handler(); +extern void _int21_handler(); +extern void _int22_handler(); +extern void _int23_handler(); +extern void _int24_handler(); +extern void _int25_handler(); +extern void _int26_handler(); +extern void _int27_handler(); +extern void _int28_handler(); +extern void _int29_handler(); +extern void _int30_handler(); +extern void _int31_handler(); + +#endif diff --git a/kernel_old/io.h b/kernel_old/io.h new file mode 100644 index 0000000..a412717 --- /dev/null +++ b/kernel_old/io.h @@ -0,0 +1,21 @@ +#ifndef __IO_H +#define __IO_H + +#include "os.h" + +extern u8 inb(u16 port); +extern void outb(u16 port,u8 data); + +extern u16 inw(u16 port); +extern void outw(u16 port,u16 data); + +extern u32 inl(u16 port); +extern void outl(u16 port,u32 data); + +extern void _insw(u16 port,u8* buffer,u32 count); +extern void _outsw(u16 port,u8* buffer,u32 count); + +extern void _insw256(u16 port,u8* buffer); +extern void _outsw256(u16 port,u8* buffer); + +#endif diff --git a/kernel_old/keyboard.c b/kernel_old/keyboard.c new file mode 100644 index 0000000..f870313 --- /dev/null +++ b/kernel_old/keyboard.c @@ -0,0 +1,151 @@ +#include "keyboard.h" +#include "exceptions.h" +#include "idt.h" +#include "pic.h" +#include "pit.h" +#include "termlib.h" +#include "vga_terminal.h" + +static u8 s_i8keycode = 0; +static u8 s_i8keycode2 = 0; +static u32 s_ctrlkeys = 0; + +static u8 s_keymap[128] = { + 0, 0x1B, + '1','2', + '3','4','5','6', + '7','8','9','0', + '-','=', + 0x08, + 0x09, + 'Q','W','E','R', + 'T','Y','U','I', + 'O','P','[',']', + 0x0A,0, + 'A','S','D','F', + 'G','H','J','K', + 'L',';','\'','`', + 0, + '\\', + 'Z','X','C','V', + 'B','N','M',',', + '.','/', + 0, + '*', + 0, + ' ', + 0,0,0,0, + 0,0,0,0, + 0,0,0,0, + 0, +}; + +static char* shift_numbers = "!@#$%^&*()_+"; + +static void check_keys() +{ + if((s_ctrlkeys & (KEY_LSHIFT|KEY_LALT) == (KEY_LSHIFT|KEY_LALT)) + && s_i8keycode2 == 0x2C) + { + //If we're entering rescue mode, we must send EOI! + pic_send_eoi(1); + enter_rescue_mode(1); + } +} + +static void _keyboard_ctrlkeys_update(u8 keychar,u8 event) +{ + u8 ctrlkey; + + ctrlkey = 0; + if(keychar == KEY_RSHIFT) ctrlkey = CTRLKEYS_RSHIFT; + else if(keychar == KEY_LSHIFT) ctrlkey = CTRLKEYS_LSHIFT; + else if(keychar == KEY_LALT) ctrlkey = CTRLKEYS_LALT; + + if(event) s_ctrlkeys &= ~ctrlkey; //Released + else s_ctrlkeys |= ctrlkey; //Pressed +} + +void keyboard_interrupt(int idx) +{ + u8 status; + u8 keycode,keychar; + + status = inb(0x64); + if(status & 1) + { + keycode = inb(0x60); + keychar = keycode & ~0x80; + s_i8keycode2 = keychar; + if(keychar == KEY_RSHIFT + || keychar == KEY_LSHIFT + || keychar == KEY_LALT) + { + _keyboard_ctrlkeys_update(keychar,keycode>>7); + s_i8keycode = 0; + } + else if(!(keycode & 0x80)) + { + s_i8keycode = keychar; + //kprintf("%c",keyboard_ascii()); + } + } + check_keys(); + + pic_send_eoi(1); +} + +u8 keyboard_scan_code() +{ + return s_i8keycode; +} + +u8 keyboard_ascii() +{ + u8 ascii; + + if(s_i8keycode >= sizeof(s_keymap)) return 0; + ascii = s_keymap[s_i8keycode]; + + if(s_ctrlkeys & (CTRLKEYS_LSHIFT|CTRLKEYS_RSHIFT)) + { + if((s_i8keycode >= 0x02) && (s_i8keycode <= 0x0D)) + { + if(s_i8keycode >= 2) + ascii = shift_numbers[s_i8keycode-2]; + } + if(ascii == '[') ascii = '{'; + else if(ascii == ']') ascii = '}'; + else if(ascii == '\\') ascii = '|'; + else if(ascii == ';') ascii = ':'; + else if(ascii == '\'') ascii = '"'; + else if(ascii == ',') ascii = '<'; + else if(ascii == '.') ascii = '>'; + else if(ascii == '/') ascii = '?'; + else if(ascii == '`') ascii = '~'; + } + else if(ascii >= 0x41 && ascii <= 0x5A) ascii += 0x20; + + return ascii; +} + +void keyboard_reset_irq1_vars() +{ + s_i8keycode = 0; +} + +void keyboard_enable() +{ + pic_set_mask(1,1); +} + +void keyboard_disable() +{ + pic_set_mask(1,0); +} + +void keyboard_install() +{ + pic_set_mask(1,1); + idt_setup(_int9_handler,keyboard_interrupt,33,IDT_TYPE_INTERRUPT); +} diff --git a/kernel_old/keyboard.h b/kernel_old/keyboard.h new file mode 100644 index 0000000..df46746 --- /dev/null +++ b/kernel_old/keyboard.h @@ -0,0 +1,50 @@ +#ifndef __KEYBOARD_H +#define __KEYBAORD_H + +#include "os.h" + +#define CTRLKEYS_LSHIFT (1<<0) +#define CTRLKEYS_RSHIFT (1<<1) +#define CTRLKEYS_LALT (1<<2) + +typedef enum { + //Controls keys + KEY_LSHIFT = 0x2A, + KEY_RSHIFT = 0x36, + KEY_LALT = 0x38, + + //Numpad + KEY_NP_7 = 0x47, + KEY_NP_8, + KEY_NP_9, + KEY_NP_MINUS, + KEY_NP_4, + KEY_NP_5, + KEY_NP_6, + KEY_NP_PLUS, + KEY_NP_DOT, + //Functions + KEY_F1 = 0x3B, + KEY_F2, + KEY_F3, + KEY_F4, + KEY_F5, + KEY_F6, + KEY_F7, + KEY_F8, + KEY_F9, + KEY_F10, + KEY_F11 = 0x57, + KEY_F12 +} kb_keys_t; + +void keyboard_install(); +u8 keyboard_scan_code(); +u8 keyboard_ascii(); + +void keyboard_enable(); +void keyboard_disable(); + +void keyboard_reset_irq1_vars(); + +#endif diff --git a/kernel_old/kmain.c b/kernel_old/kmain.c new file mode 100644 index 0000000..fbf4dd9 --- /dev/null +++ b/kernel_old/kmain.c @@ -0,0 +1,142 @@ +#include "os.h" +#include "memory.h" +#include "vga_terminal.h" +#include "gdt.h" +#include "idt.h" +#include "pic.h" +#include "pit.h" +#include "pci.h" +#include "ahci.h" +#include "exceptions.h" +#include "paging.h" +#include "keyboard.h" +#include "x86utils.h" +#include "stdlib.h" +#include "string.h" + +static char* xnums = "0123456789ABCDEF"; + +void command_interpreter() +{ + char command[64]; + + while(1) + { + kputc('>'); + kgets(command,sizeof(command)); + if(!kstrncmp(command,"ram_map")) + { + ram_map_t* ram = ram_get_map(); + kprintf("RAM size = %u\nRAM pools %u\n", + ram->ram_total_size,ram->ram_pool_count); + for(u32 i = 0; i < ram->ram_pool_count; i++) + { + kprintf("\t%p\t%p\n",ram->ram_pools[i].start, + ram->ram_pools[i].end); + } + } + else if(!kstrncmp(command,"page_map")) + { + u32 virt,phys,size; + ksscanf(command,"page_map %p %p %u",&virt,&phys,&size); + page_map(virt,phys,size,PAGE_TABLE_READWRITE); + } + else if(!kstrncmp(command,"page_unmap")) + { + u32 virt,size; + ksscanf(command,"page_unmap %p %u",&virt,&size); + page_unmap(virt,size); + } + else if(!kstrncmp(command,"page_v2p")) + { + u32 virt; + ksscanf(command,"page_v2p %p",&virt); + kprintf("VIRT %p -> PHYS %p\n",virt,page_v2p(virt)); + } + else if(!kstrncmp(command,"dump")) + { + u32 lines,virt; + ksscanf(command,"dump %u %p",&lines,&virt); + for(u32 i = 0; i < lines; i++) + { + kprintf("%p: ",virt); + for(u32 j = 0; j < 16; j++) + { + u8 byte; + byte = *(u8*)(virt+j); + kprintf("%c%c ",xnums[byte>>8],xnums[byte&0x0F]); + } + kprintf("\n"); + virt += 16; + } + } + else if(!kstrncmp(command,"pci_dump")) + { + pci_dump(); + } + else if(!kstrncmp(command,"hang")) + { + while(1){__asm("nop");} + } + else if(!kstrncmp(command,"sata_identify")) + { + sata_identify(); + } + } +} + +void kernel_main(multiboot_hdr_t* mbt,int magic) +{ + //Unmap first 16 MB + //Before we unmap first 16 MB, we need to know all about MBT + mbt_mmap_init(mbt); + page_unmap(0,1024*1024*16); + //Map video buffer + vga_terminal_init(); + //Fix MBT address + + cls(); + chg_color(VGA_COLOR_MAGENTA); + vga_terminal_init(); + + kprintf("GRUB loaded Lenochka!\n"); + kprintf("MBT %p magic %x\n",mbt,magic); + kprintf("%u KB RAM\n",ram_get_size()>>10); + + chg_color(VGA_COLOR_WHITE); + kprintf("\nOS_VIDEO_BUFFER %x\n\n",OS_VIDEO_BUFFER); + chg_color(VGA_COLOR_MAGENTA); + + kprintf("Installing GDT\n"); + + gdt_install(); + + for(int i = 0; i < 10; i++) kprintf("%d ",i); + kprintf("\nGDT Installed\n"); + + kprintf("Init PIC\n"); + pic_init(0x20,0x28); + + kprintf("Installing IDT\n"); + idt_install(); + + for(int i = 0; i < 10; i++) kprintf("%d ",i); + kprintf("\nIDT Installed\n"); + + install_exceptions(); + kprintf("Exceptions installed\n"); + + pit_init(); + keyboard_install(); + idt_enable_interrupts(); //IRQs and exceptions + + pci_detect_hardware(); + pci_dump(); + ahci_init(); + + kprintf("\n\n"); + + command_interpreter(); + + while(1){__asm("hlt");} +} diff --git a/kernel_old/memory.c b/kernel_old/memory.c new file mode 100644 index 0000000..8ce0e9d --- /dev/null +++ b/kernel_old/memory.c @@ -0,0 +1,36 @@ +#include "memory.h" + +static ram_map_t s_RAMmap; + +void mbt_mmap_init(multiboot_hdr_t* mbt) +{ + s_RAMmap.ram_total_size = 0; + s_RAMmap.ram_pool_count = 0; + multiboot_mmap_t* mmap = (multiboot_mmap_t*)mbt->mmap_addr; + while((u32)mmap < (u32)mbt->mmap_addr + mbt->mmap_length) + { + if(mmap->type == 1) + { + ram_pool_t* pool; + if(s_RAMmap.ram_pool_count == MAX_RAM_POOLS) + break; + pool = &s_RAMmap.ram_pools[s_RAMmap.ram_pool_count++]; + + pool->start = (u32)mmap->base_addr; + pool->end = pool->start + (u32)mmap->length; + + s_RAMmap.ram_total_size += mmap->length; + } + mmap = (multiboot_mmap_t*)((u32)mmap + mmap->size + 4); + } +} + +ram_map_t* ram_get_map() +{ + return &s_RAMmap; +} + +u32 ram_get_size() +{ + return s_RAMmap.ram_total_size; +} diff --git a/kernel_old/memory.h b/kernel_old/memory.h new file mode 100644 index 0000000..96a67a2 --- /dev/null +++ b/kernel_old/memory.h @@ -0,0 +1,25 @@ +#ifndef __MEMORY_H +#define __MEMORY_H + +#include "os.h" +#include "multiboot.h" + +#define MAX_RAM_POOLS 32 + +typedef struct { + u32 __phys start; + u32 __phys end; +} ram_pool_t; + +typedef struct { + u32 ram_total_size; + u32 ram_pool_count; + ram_pool_t ram_pools[MAX_RAM_POOLS]; +} ram_map_t; + +//It must be called before first 1 MB got unpaged +void mbt_mmap_init(multiboot_hdr_t* mbt); +ram_map_t* ram_get_map(); +u32 ram_get_size(); + +#endif diff --git a/kernel_old/multiboot.asm b/kernel_old/multiboot.asm new file mode 100644 index 0000000..b78cc46 --- /dev/null +++ b/kernel_old/multiboot.asm @@ -0,0 +1,101 @@ +MBALIGN equ 1 << 0 +MEMINFO equ 1 << 1 +FLAGS equ MBALIGN|MEMINFO +MAGIC equ 0x1BADB002 +CHECKSUM equ -(MAGIC+FLAGS) + +section .multiboot +align 4 + dd MAGIC + dd FLAGS + dd CHECKSUM + +section .bss +global page_directories +global page_tables +global legacy_esp + +align 4096 +page_directories resb 4096 +page_tables resb 4194304 + +align 16 +stack_bottom: +resb 32768 ; 32 KiB +stack_top: +legacy_esp resd 1 + +section .text +global _start +_start: + mov esp,(stack_bottom - 0xC0000000 + 0x7FFC) + + push eax + push ebx + + cld + ; Our kernel will be mapped for 16M, or 4 dirs + mov edi,(page_directories - 0xC0000000 + 0xC00) + xor ecx,ecx +_dir_set: + xor edx,edx + mov eax,4096 + mul ecx + add eax,(page_tables - 0xC0000000 + 0xC0000) + or eax,3 ; Present + RW + stosd + inc ecx + cmp ecx,4 + jne _dir_set + + ; Setup tables - map from 0 to 16M + mov edi,(page_tables - 0xC0000000 + 0xC0000) + xor ebx,ebx ; Physical address + + mov ecx,4096 +_table_set: + mov eax,ebx + add eax,3 + stosd + + add ebx,4096 + loop _table_set + + ; Identity map also first 4 MB + + mov esi,(page_directories - 0xC0000000 + 0xC00) + mov edi,(page_directories - 0xC0000000) + mov cx,4 +_copy_map: + lodsd + stosd + loop _copy_map + + mov eax,(page_directories - 0xC0000000 + 0xC00) + mov ebx,(page_directories - 0xC0000000) + mov ecx,(page_tables - 0xC0000000 + 0xC0000) + + ; Enable paging + mov eax,(page_directories - 0xC0000000) + mov cr3,eax + + mov eax,cr0 + or eax,0x80010000 + mov cr0,eax + + mov eax,_paging_enter + jmp eax + +_paging_enter: + extern kernel_main + + add esp,0xC0000000 + mov dword [legacy_esp],esp + + ;push eax + ;push ebx + call kernel_main + add esp,8 + cli + hlt +.end: diff --git a/kernel_old/multiboot.h b/kernel_old/multiboot.h new file mode 100644 index 0000000..de4e53d --- /dev/null +++ b/kernel_old/multiboot.h @@ -0,0 +1,58 @@ +#ifndef __MULTIBOOT_H +#define __MULTIBOOT_H + +#include "os.h" + +typedef struct { + u32 flags; + + u32 mem_lower; + u32 mem_upper; + + u32 boot_device; + + u32 cmd_line; + + u32 mods_count; + u32 mods_addr; + + u32 syms[4]; + + u32 mmap_length; + u32 mmap_addr; + + u32 drives_length; + u32 drives_addr; + + u32 config_table; + + u32 boot_loader_name; + + u32 apm_table; + + u32 vbe_control_info; + u32 vbe_mode_info; + u32 vbe_mode; + u32 vbe_interface_seg; + u32 vbe_interface_off; + u32 vbe_interface_len; + + u32 framebuffer_addr; + u32 framebuffer_pitch; + u32 framebuffer_width; + u32 framebuffer_height; + u8 framebuffer_bpp; + u8 color_info[5]; + +} __attribute__((packed)) multiboot_hdr_t; + +#define MBT_MMAP_TYPE_RAM 1 + +typedef struct { + u32 size; + u64 base_addr; + u64 length; + u32 type; +} __packed multiboot_mmap_t; + +#endif diff --git a/kernel_old/os.h b/kernel_old/os.h new file mode 100644 index 0000000..446b444 --- /dev/null +++ b/kernel_old/os.h @@ -0,0 +1,36 @@ +#ifndef __OS_H +#define __OS_H + +#define OS_NULL_SELECTOR 0x00 +#define OS_CODE_SELECTOR 0x08 +#define OS_DATA_SELECTOR 0x10 + +#define OS_PHYS_MAPPING 0x00100000 +#define OS_VIRT_MAPPING 0xC0000000 +#define OS_PM86_MEM_SIZE_4K (1024*1024) +#define OS_PHYS_ADDR(virt) (virt-OS_VIRT_MAPPING) + +#define OS_VIDEO_BUFFER 0xC10B8000 +#define OS_PROG_MAPPING 0x01000000 + +#define __packed __attribute__((packed)) +#define __align(N) __attribute__((aligned(N))) + +#define __phys +#define __virt + +#define NULL (void*)0 + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned long u32; +typedef unsigned long long u64; + +typedef char i8; +typedef short i16; +typedef long i32; +typedef long long i64; + +typedef unsigned long size_t; + +#endif diff --git a/kernel_old/paging.c b/kernel_old/paging.c new file mode 100644 index 0000000..08fb7ad --- /dev/null +++ b/kernel_old/paging.c @@ -0,0 +1,93 @@ +#include "paging.h" +#include "termlib.h" + +// Allocate some space for page directories & tables +//static u32 page_directories[PAGE_DIR_NUM] __align(4096); +//static u32 page_tables[PAGE_TABLE_NUM] __align(4096); + +void page_map(u32 __virt virt,u32 __phys phys,u32 size,u32 flags) +{ + u32 num_dirs,num_pages; + u32 dir_index,table_index; + u32 i; + + num_pages = (size>>12) + ((size&0xFFF) ? 1 : 0); + num_dirs = (num_pages>>10) + ((num_pages&0x3FFF) ? 1 : 0); + + table_index = virt>>12; + dir_index = table_index>>10; + + //Make directories present + for(i = 0; i < num_dirs; i++) + { + if(!(page_directories[dir_index+i] & PAGE_DIR_PRESENT)) + { + page_directories[dir_index+i] = PAGE_DIR_ENTRY( + OS_PHYS_ADDR( (u32)(&page_tables[(dir_index+i)<<10]) ), + PAGE_DIR_PRESENT + | PAGE_DIR_READWRITE + ); + } + } + + //Make tables present + for(i = 0; i < num_pages; i++) + { + page_tables[table_index+i] = PAGE_TABLE_ENTRY( + (u32)(phys+i*4096), + flags|PAGE_TABLE_PRESENT + ); + } +} + +extern void x86_reload_cr3(); + +void page_unmap(u32 __virt virt,u32 size) +{ + u32 num_dirs,num_pages; + u32 dir_index,table_index; + u32 i,reload_cr3; + + num_pages = (size>>12) + ((size&0xFFF) ? 1 : 0); + num_dirs = (num_pages>>10) + ((num_pages&0x3FFF) ? 1 : 0); + + table_index = virt>>12; + dir_index = table_index>>10; + + for(i = 0; i < num_pages; i++) + page_tables[table_index+i] = 0; + + //Check directories + reload_cr3 = 0; + for(i = 0; i < num_dirs; i++) + { + u32 j; + + for(j = 0; j < 1024; j++) + { + if(page_tables[((dir_index+i)<<10) + j] & PAGE_TABLE_PRESENT) + break; + } + + //Directory empty + if(j == 1024) + { + page_directories[dir_index+i] = 0; + reload_cr3 = 1; + } + } + if(reload_cr3) x86_reload_cr3(); +} + +__phys u32 page_v2p(u32 __virt virt) +{ + u32 index,dir_entry; + u32* table; + + index = virt>>12; + dir_entry = page_directories[index>>10]; + if(!(dir_entry & PAGE_DIR_PRESENT)) return 0; + table = (u32*)((dir_entry&0xFFFFF000) + OS_VIRT_MAPPING); + + return table[index&0x3FF] & 0xFFFFF000; +} diff --git a/kernel_old/paging.h b/kernel_old/paging.h new file mode 100644 index 0000000..691b9c5 --- /dev/null +++ b/kernel_old/paging.h @@ -0,0 +1,37 @@ +#ifndef __PAGING_H +#define __PAGING_H + +#include "os.h" + +#define PAGE_DIR_PRESENT (1<<0) +#define PAGE_DIR_READWRITE (1<<1) +#define PAGE_DIR_USERMODE (1<<2) +#define PAGE_DIR_WRITECACHE (1<<3) +#define PAGE_DIR_NOCACHE (1<<4) +#define PAGE_DIR_ACCESSED (1<<5) +#define PAGE_DIR_PAGESIZE (1<<7) + +#define PAGE_DIR_ENTRY(phys,flags) ((phys&0xFFFFF000)|flags) + +#define PAGE_TABLE_PRESENT (1<<0) +#define PAGE_TABLE_READWRITE (1<<1) +#define PAGE_TABLE_USERMODE (1<<2) +#define PAGE_TABLE_WRITECACHE (1<<3) +#define PAGE_TABLE_CACHE (1<<4) +#define PAGE_TABLE_GLOBAL (1<<8) + +#define PAGE_TABLE_ENTRY(phys,flags) ((phys&0xFFFFF000)|flags) + +#define PAGE_DIR_NUM 1024 +#define PAGE_TABLE_NUM OS_PM86_MEM_SIZE_4K + +//Map physical address to virtual +void page_map(u32 __virt virt,u32 __phys phys,u32 size,u32 flags); + +void page_unmap(u32 __virt virt,u32 size); +__phys u32 page_v2p(u32 __virt virt); + +extern u32 page_directories[PAGE_DIR_NUM]; +extern u32 page_tables[PAGE_TABLE_NUM]; + +#endif diff --git a/kernel_old/pci.c b/kernel_old/pci.c new file mode 100644 index 0000000..242474d --- /dev/null +++ b/kernel_old/pci.c @@ -0,0 +1,251 @@ +#include "pci.h" +#include "vga_terminal.h" +#include "stdlib.h" +#include "io.h" + +typedef struct { + u32 device_count; + pci_device_t devices[MAX_PCI_DEVICES]; +} pci_hardware_t; + +static pci_hardware_t s_pci; + +struct pci_class_s { + int len; + const char* name; +}; + +static struct pci_class_s s_classes[] = { + {2,"Unclassified"}, + {9,"Mass Storage Controller"}, + {9,"Network Controller"}, + {3,"Display Controller"}, + {4,"Multimedia Controller"}, + {2,"Memory controller"}, + {11,"Bridge Device"}, + {6,"Simple Communication Controller"}, + {7,"Base System Peripheral"}, + {5,"Input Device Controller"}, + {0,"Docking Station"}, + {0,"Processor"}, + {10,"Serial Bus Controller"}, + {0,"Wireless Controller"}, + {0,"Intelligent Controller"}, + {0,"Satellite Communication Controller"}, + {0,"Encryption Controller"}, + {0,"Signal Processing Controller"}, + {0,"Processing Accelerator"}, + {0,"Non-Essential Instrumentation"} +}; + +static char* s_subclasses[] = { + "Non-VGA-Compatible devices", + "VGA-Compatible Device", + + "SCSI Bus Controller", + "IDE Controller", + "Floppy Disk Controller", + "IPI Bus Controller", + "RAID Controller", + "ATA Controller", + "Serial ATA", + "Serial Attached SCSI", + "Non-Volatile Memory Controller", + + "Ethernet Controller", + "Token Ring Controller", + "FDDI Controller", + "ATM Controller", + "ISDN Controller", + "WorldFip Controller", + "PICMG 2.14 Multi Computing", + "Infiniband Controller", + "Fabric Controller", + + "VGA Compatible Controller", + "XGA Controller", + "3D Controller (Not VGA-Compatible)", + + "Multimedia Video Controller", + "Multimedia Audio Controller", + "Computer Telephony Device", + "Audio Device", + + "RAM Controller", + "Flash Controller", + + "Host Bridge", + "ISA Bridge", + "EISA Bridge", + "MCA Bridge", + "PCI-to-PCI Bridge", + "PCMCIA Bridge", + "NuBus Bridge", + "CardBus Bridge", + "RACEway Bridge", + "PCI-to-PCI Bridge", + "InfiniBand-to-PCI Host Bridge", + + "Serial Controller", + "Parallel Controller", + "Multiport Serial Controller", + "Modem", + "IEEE 488.1/2 (GPIB) Controller", + "Smart Card", + + "PIC", + "DMA Controller", + "Timer", + "RTC Controller", + "PCI Hot-Plug Controller", + "SD Host controller", + "IOMMU", + + "Keyboard Controller", + "Digitizer Pen", + "Mouse Controller", + "Scanner Controller", + "Gameport Controller", + + "FireWire (IEEE 1394) Controller", + "ACCESS Bus", + "SSA", + "USB Controller", + "Fibre Channel", + "SMBus", + "InfiniBand", + "IPMI Interface", + "SERCOS Interface (IEC 61491)", + "CANbus" + +}; + +u32 pci_read_config_word(u32 bus,u32 device,u32 function,u32 offset) +{ + u32 address; + + bus &= 0xFF; // 8 bit + device &= 0x1F; // 5 bit + function &= 0x07; // 3 bit + offset &= 0xFC; // 6 bit + + address = 0x80000000UL|(bus<<16)|(device<<11)|(function<<8)|(offset); + + outl(PCI_CONFIG_ADDRESS,address); + return inl(PCI_CONFIG_DATA); +} + +u32 pci_read_config_word_dev(pci_device_t dev,u32 offset) +{ + u32 address; + + offset &= 0xFC; // 6 bit + + address = 0x80000000|((dev&0xFFFF0000)>>8)|(offset); + + outl(PCI_CONFIG_ADDRESS,address); + return inl(PCI_CONFIG_DATA); +} + +const char* pci_get_class(u32 class) +{ + if(class >= sizeof(s_classes)/sizeof(struct pci_class_s)) + return "Unknown"; + return s_classes[class].name; +} + +const char* pci_get_subclass(u32 class,u32 subclass) +{ + u32 i,index; + + if(class >= sizeof(s_classes)/sizeof(struct pci_class_s)) + return "Unknown"; + if(subclass >= sizeof(s_subclasses)/sizeof(const char*)) + return "Unknown"; + else if(subclass == 0x80) return "Other"; + + index = 0; + for(i = 0; i < class; i++) + index += s_classes[i].len; + if(i == class && subclass >= s_classes[i].len) return "Unknown"; + + return s_subclasses[index+subclass]; +} + +void pci_dump() +{ + for(u32 i = 0; i < s_pci.device_count; i++) + { + u32 class,subclass; + + class = (s_pci.devices[i]>>8)&0xFF; + subclass = s_pci.devices[i] & 0xFF; + kprintf("%x\t%s\t%s\n", + s_pci.devices[i], + pci_get_class(class), + pci_get_subclass(class,subclass)); + } +} + +static void pci_add_device(u32 bus,u32 device,u32 func, + u32 class,u32 subclass) +{ + pci_device_t dev; + + dev = (bus<<24)|(device<<19)|(func<<16)|(class<<8)|(subclass); + if(s_pci.device_count < MAX_PCI_DEVICES) + s_pci.devices[s_pci.device_count++] = dev; +} + +static void pci_scan_bus(u32 bus); + +static void pci_scan_device(u32 bus,u32 dev,u32 func) +{ + u32 class = pci_read_config_word(bus,dev,func,0x08) >> 16; + u32 hdr = (pci_read_config_word(bus,dev,func,0x0C) >> 16) & 0xFF; + + if(class == 0x0604) //PCI-to-PCI bridge + { + pci_scan_bus((pci_read_config_word( + bus,dev,func,0x18) >> 8) & 0xFF); + } + if(hdr & 0x80 && func == 0) //Multifunction + { + for(u32 i = 1; i < 8; i++) + { + u32 vendor = pci_read_config_word(bus,dev,i,0x00) & 0xFFFF; + if(vendor != 0xFFFF) + pci_scan_device(bus,dev,i); + } + } + + pci_add_device(bus,dev,func,class>>8,class&0xFF); +} + +static void pci_scan_bus(u32 bus) +{ + for(u32 i = 0; i < 32; i++) + { + u32 vendor = pci_read_config_word(bus,i,0,0x00) & 0xFFFF; + if(vendor != 0xFFFF) + pci_scan_device(bus,i,0); + } +} + +void pci_detect_hardware() +{ + s_pci.device_count = 0; + for(u32 i = 0; i < 256; i++) + pci_scan_bus(i); +} + +pci_device_t pci_find_device(u32 class,u32 subclass) +{ + u32 data = class<<8|subclass; + for(u32 i = 0; i < s_pci.device_count; i++) + { + if((s_pci.devices[i] & 0xFFFF) == data) + return s_pci.devices[i]; + } + return 0; +} diff --git a/kernel_old/pci.h b/kernel_old/pci.h new file mode 100644 index 0000000..86c05c4 --- /dev/null +++ b/kernel_old/pci.h @@ -0,0 +1,24 @@ +#ifndef __PCI_H +#define __PCI_H + +#include "os.h" + +#define PCI_CONFIG_ADDRESS 0xCF8 +#define PCI_CONFIG_DATA 0xCFC + +#define MAX_PCI_DEVICES 256 + +// bbbbbbbbdddddfffccccccccssssssss +typedef u32 pci_device_t; + +u32 pci_read_config_word(u32 bus,u32 device,u32 function,u32 hword); +u32 pci_read_config_word_dev(pci_device_t dev,u32 hword); + +void pci_dump(); +void pci_detect_hardware(); + +//Returns device index +//-1 for NOTFOUND +pci_device_t pci_find_device(u32 class,u32 subclass); + +#endif diff --git a/kernel_old/pic.c b/kernel_old/pic.c new file mode 100644 index 0000000..896f5bb --- /dev/null +++ b/kernel_old/pic.c @@ -0,0 +1,45 @@ +#include "pic.h" + +void pic_init(int master,int slave) +{ + outb(PIC1,ICW1); + outb(PIC2,ICW1); + + outb(PIC1+1,master&0xFF); + outb(PIC2+1,slave&0xFF); + + outb(PIC1+1,4); + outb(PIC2+1,2); + + outb(PIC1+1,ICW4); + outb(PIC2+1,ICW4); + + //Disable all IRQs + outb(PIC1+1,0xFF); + outb(PIC2+1,0xFF); +} + +void pic_set_mask(int irq,int enabled) +{ + u16 pic; + u8 mask; + + if(irq >= 8) + { + pic = PIC2+1; + irq -= 8; + } + else pic = PIC1+1; + + mask = inb(pic); + if(enabled) mask &= ~(1<= 8) outb(PIC2,0x20); + outb(PIC1,0x20); +} diff --git a/kernel_old/pic.h b/kernel_old/pic.h new file mode 100644 index 0000000..5a5f167 --- /dev/null +++ b/kernel_old/pic.h @@ -0,0 +1,16 @@ +#ifndef __PIC_H +#define __PIC_H + +#include "io.h" + +#define PIC1 0x20 +#define PIC2 0xA0 + +#define ICW1 0x11 +#define ICW4 0x01 + +void pic_init(int master,int slave); +void pic_set_mask(int irq,int enabled); +void pic_send_eoi(int irq); + +#endif diff --git a/kernel_old/pit.c b/kernel_old/pit.c new file mode 100644 index 0000000..98f730f --- /dev/null +++ b/kernel_old/pit.c @@ -0,0 +1,36 @@ +#include "pit.h" +#include "pic.h" +#include "idt.h" + +static u32 s_counter = 0; + +void timer_interrupt(int idx) +{ + if(s_counter) s_counter--; + pic_send_eoi(0); +} + +void sleep(u32 msecs) +{ + __asm("cli"); + if(msecs < 55) msecs = 55; + s_counter = msecs/55; + __asm("sti"); + //pic_set_mask(0,1); + do { + __asm("hlt"); //Wait for IRQ + } while(s_counter); + //pic_set_mask(0,0); +} + +void pit_init() +{ + //Setup IRQ + pic_set_mask(0,1); + idt_setup(_int15_handler,timer_interrupt,32,IDT_TYPE_INTERRUPT); + + //Init PIT + outb(0x43,0x36); + outb(0x40,0x00); + outb(0x40,0x00); +} diff --git a/kernel_old/pit.h b/kernel_old/pit.h new file mode 100644 index 0000000..3d4c7d7 --- /dev/null +++ b/kernel_old/pit.h @@ -0,0 +1,10 @@ +#ifndef __PIT_H +#define __PIT_H + +#include "io.h" + +void sleep(u32 msecs); + +void pit_init(); + +#endif diff --git a/kernel_old/stdlib.c b/kernel_old/stdlib.c new file mode 100644 index 0000000..726e8e2 --- /dev/null +++ b/kernel_old/stdlib.c @@ -0,0 +1,398 @@ +#include "stdlib.h" +#include "vga_terminal.h" +#include "keyboard.h" +#include "string.h" + +void iprint(int number) +{ + //4294967295 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + s--; + while(s >= num) printchar(*s--); +} + +void uprint(u32 number) +{ + //4294967295 + char num[32]; + char* s = num; + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + s--; + while(s >= num) printchar(*s--); +} + +static char* xnums = "0123456789ABCDEF"; + +void xprint(u32 number) +{ + //FFFFFFFF + char num[16]; + char* s = num; + + while(s-num < 7) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + s--; + while(s >= num) printchar(*s--); +} + +void iprints(char* outs,int number) +{ + //4294967295 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void uprints(char* outs,u32 number) +{ + //4294967295 + char num[32]; + char* s = num; + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void xprints(char* outs,u32 number) +{ + //FFFFFFFF + char num[16]; + char* s = num; + + while(s-num < 7) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void kprint(char* str) +{ + while(*str) printchar(*str++); +} + +void ksprintf(char* dst,u32 maxLen,const char* fmt,...) +{ + u32* argp; + char* cur,*end,c; + char numbuf[64]; + + argp = ((u32*)&fmt)+1; + cur = dst; + end = dst+maxLen; + while((c = *fmt++) && cur != end) + { + if(c == '%') + { + char* p = numbuf; + c = *fmt++; + if(c == 'd') + { + iprints(numbuf,*(int*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'u') + { + uprints(numbuf,*(int*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'p' || c == 'x') + { + xprints(numbuf,*(u32*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 's') + { + const char* str = *(const char**)argp++; + while((*cur++ = *str++)) + if(cur == end) break; + cur--; + } + else if(c == '%') + { + if(cur != end) *cur++ = '%'; + } + } + else + { + if(cur == end) break; + *cur++ = c; + } + } + if(cur == end) + *(end-1) = '\0'; +} + +void kprintf(const char* fmt,...) +{ + u32* argp; + char c; + + argp = ((u32*)&fmt)+1; + while((c = *fmt++)) + { + if(c == '%') + { + c = *fmt++; + switch(c) + { + case 'd': iprint(*(int*)argp++); break; + case 'u': uprint(*(u32*)argp++); break; + case 'p': + case 'x': xprint(*(u32*)argp++); break; + case 'c': printchar((char)(*(u32*)argp++)); break; + case 's': kprint((char*)(*(u32*)argp++)); break; + case '%': printchar('%'); break; + } + } + else printchar(c); + } +} + + +u8 kgetch() +{ + u8 key; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + key = keyboard_scan_code(); + keyboard_reset_irq1_vars(); + return key; +} + +u8 kgetc() +{ + u8 ascii; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + ascii = keyboard_ascii(); + keyboard_reset_irq1_vars(); + return ascii; +} + +void kgets(char* buf,size_t max) +{ + u8 ch; + char* ptr,*end; + + ptr = buf; + end = buf + max; + *ptr = '\0'; + while((ch = kgetc()) != '\n') + { + if(ch == '\b') + { + if(ptr != buf) *ptr-- = '\0'; + printchar('\b'); + } + else if(ptr != end-1) + { + *ptr++ = ch; + printchar(ch); + } + } + printchar('\n'); + if(ptr == end) ptr--; + *ptr = '\0'; +} + +//static char* katoi_base = "0123456789ABCDEF"; + +static i32 _katoi(char* str,int base,u32 len) +{ + char* end; + i32 i,pow; + i32 num; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == '-') + { + num *= -1; + break; + } + else if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == xnums[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +static u32 _katou(char* str,int base,u32 len) +{ + char* end; + u32 i,pow; + u32 num; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == xnums[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +i32 katoi(char* str,int base) +{ + return _katoi(str,base,kstrlen(str)); +} + +u32 katou(char* str,int base) +{ + return _katou(str,base,kstrlen(str)); +} + +static u32 _kstrchr_delim(char* buf,u32 base) +{ + u32 i,len; + char c; + + len = 0; + while(*buf) + { + c = *buf; + for(i = 0; i < base; i++) + { + if(c == xnums[i]) break; + } + if(i == base && c != '-') break; + buf++; + len++; + } + return len; +} + +void ksscanf(char* buf,char* fmt,...) +{ + u32* argp; + u32 len,maxLen; + union { + i32* iptr; + u32* uptr; + char* sptr; + } u; + char c,*stk; + + argp = ((u32*)&fmt)+1; + while((c = *fmt)) + { + //kprintf("%c %c\n",c,*buf); + if(c == '%') + { + c = *++fmt; + switch(c) + { + case 'u': + case 'd': + len = _kstrchr_delim(buf,10); + u.iptr = (i32*)(*(u32*)argp++); + *u.iptr = _katoi(buf,10,len); + buf += len; //we decrement because it will +1 + break; + case 'p': + case 'x': + buf += 2; //Skip 0x part + len = _kstrchr_delim(buf,16); + u.iptr = (i32*)(*(u32*)argp++); + *u.iptr = _katoi(buf,16,len); + buf += len; //we decrement because it will +1 + break; + case 's': + stk = kstrchr(buf,*(fmt+1)); + u.sptr = (char*)(*(u32*)argp++); + maxLen = (*(u32*)argp++); + if(!stk) + { + u.sptr[0] = '\0'; + break; + } + len = (u32)stk-(u32)buf; + if(len > maxLen) len = maxLen; + kmemcpy(u.sptr,buf,len); + u.sptr[len] = '\0'; + buf += len; + break; + } + + } else buf++; + fmt++; + } +} diff --git a/kernel_old/stdlib.h b/kernel_old/stdlib.h new file mode 100644 index 0000000..29fec14 --- /dev/null +++ b/kernel_old/stdlib.h @@ -0,0 +1,44 @@ +#ifndef __STDLIB_H +#define __STDLIB_H + +#include "os.h" +#include "vga_terminal.h" + +//stdlib.h + +extern void kmemcpy(void* dst,const void* src,u32 len); +extern int kmemcmp(const void* dst,const void* src,u32 len); +extern void kmemzero(void* dst,u32 len); + +//termlib.h +#define kputc printchar + +void iprint(int number); +void uprint(u32 number); +void xprint(u32 number); + +void iprints(char* str,int number); +void uprints(char* str,u32 number); +void xprints(char* str,u32 number); + +void kprint(char* str); + +void ksprintf(char* dst,u32 maxLen,const char* fmt,...); +void kprintf(const char* fmt,...); + +//termio.h + +u8 kgetch(); //Wait for key scan code +u8 kgetc(); //Wait for ASCII character + +void kgets(char* buf,size_t max); + +i32 katoi(char* str,int base); + +void ksscanf(char* buf,char* fmt,...); + +#define _debug() \ + kprintf("_debug at %s:%u\n",__FILE__,__LINE__); \ + kgetc(); + +#endif diff --git a/kernel_old/string.c b/kernel_old/string.c new file mode 100644 index 0000000..9c439cf --- /dev/null +++ b/kernel_old/string.c @@ -0,0 +1,49 @@ +#include "string.h" +#include "stdlib.h" + +u32 kstrlen(const char* str) +{ + u32 len = 0; + while(*str++) len++; + return len; +} + +void kstrcpy(char* dst,const char* src) +{ + while((*dst++ = *src++)){} +} + +void kstrncpy(char* dst,const char* src,u32 maxLen) +{ + maxLen=-1; + while((*dst++ = *src++) && --maxLen){} + if(!maxLen) dst[maxLen] = '\0'; +} + +char* kstrchr(char* src,char chr) +{ + while(*src) + { + if(*src == chr) return src; + src++; + } + return NULL; +} + +char* kstrrchr(char* src,char chr) +{ + char* ptr; + + ptr = src+kstrlen(src)-1; + while(ptr != src) + { + if(*ptr == chr) return ptr; + ptr--; + } + return NULL; +} + +int kstrncmp(const char* haystack,char* needle) +{ + return kmemcmp(haystack,needle,kstrlen(needle)); +} diff --git a/kernel_old/string.h b/kernel_old/string.h new file mode 100644 index 0000000..25af14f --- /dev/null +++ b/kernel_old/string.h @@ -0,0 +1,16 @@ +#ifndef __STRING_H +#define __STRING_H + +#include "os.h" + +u32 kstrlen(const char* str); + +void kstrcpy(char* dst,const char* src); +void kstrncpy(char* dst,const char* src,u32 maxLen); + +char* kstrchr(char* src,char chr); +char* kstrrchr(char* src,char chr); + +int kstrncmp(const char* haystack,char* needle); + +#endif diff --git a/kernel_old/termio.c b/kernel_old/termio.c new file mode 100644 index 0000000..57920dc --- /dev/null +++ b/kernel_old/termio.c @@ -0,0 +1,175 @@ +#include "termio.h" +#include "keyboard.h" +#include "vga_terminal.h" +#include "string.h" + +u8 kgetch() +{ + u8 key; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + key = keyboard_scan_code(); + keyboard_reset_irq1_vars(); + return key; +} + +u8 kgetc() +{ + u8 ascii; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + ascii = keyboard_ascii(); + keyboard_reset_irq1_vars(); + return ascii; +} + +void kgets(char* buf,size_t max) +{ + u8 ch; + char* ptr,*end; + + ptr = buf; + end = buf + max; + *ptr = '\0'; + while((ch = kgetc()) != '\n') + { + if(ch == '\b') + { + if(ptr != buf) *ptr-- = '\0'; + printchar('\b'); + } + else if(ptr != end-1) + { + *ptr++ = ch; + printchar(ch); + } + } + printchar('\n'); + if(ptr == end) ptr--; + *ptr = '\0'; +} + +static char* katoi_base = "0123456789ABCDEF"; + +static i32 _katoi(char* str,int base,u32 len) +{ + char* end; + i32 i,pow; + i32 num; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == '-') + { + num *= -1; + break; + } + else if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == katoi_base[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +static u32 _katou(char* str,int base,u32 len) +{ + char* end; + u32 i,pow; + u32 num; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == katoi_base[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +i32 katoi(char* str,int base) +{ + return _katoi(str,base,kstrlen(str)); +} + +u32 katou(char* str,int base) +{ + return _katou(str,base,kstrlen(str)); +} + +static u32 _kstrchr_delim(char* buf,u32 base) +{ + u32 i,len; + char c; + + len = 0; + while(*buf) + { + c = *buf; + for(i = 0; i < base; i++) + { + if(c == katoi_base[i]) break; + } + if(i == base && c != '-') break; + buf++; + len++; + } + return len; +} + +void ksscanf(char* buf,char* fmt,...) +{ + u32* argp; + u32 len; + i32* iptr; + u32* uptr; + char c,*stk; + + argp = ((u32*)&fmt)+1; + while((c = *fmt)) + { + //kprintf("%c %c\n",c,*buf); + if(c == '%') + { + c = *++fmt; + switch(c) + { + case 'u': + case 'd': + len = _kstrchr_delim(buf,10); + iptr = (i32*)(*(u32*)argp++); + *iptr = _katoi(buf,10,len); + buf += len; //we decrement because it will +1 + break; + case 'p': + case 'x': + buf += 2; //Skip 0x part + len = _kstrchr_delim(buf,16); + iptr = (i32*)(*(u32*)argp++); + *iptr = _katoi(buf,16,len); + buf += len; //we decrement because it will +1 + } + + } else buf++; + fmt++; + } +} diff --git a/kernel_old/termio.h b/kernel_old/termio.h new file mode 100644 index 0000000..2cf77ce --- /dev/null +++ b/kernel_old/termio.h @@ -0,0 +1,7 @@ +#ifndef __TERMIO_H +#define __TERMIO_H + +#include "os.h" +#include "stdlib.h" //redirect to stdlib.h + +#endif diff --git a/kernel_old/termlib.c b/kernel_old/termlib.c new file mode 100644 index 0000000..37a613e --- /dev/null +++ b/kernel_old/termlib.c @@ -0,0 +1,201 @@ +#include "termlib.h" +#include "vga_terminal.h" +#include "string.h" + +void iprint(int number) +{ + //4294967295 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + s--; + while(s >= num) printchar(*s--); +} + +void uprint(u32 number) +{ + //4294967295 + char num[32]; + char* s = num; + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + s--; + while(s >= num) printchar(*s--); +} + +const char* xnums = "0123456789ABCDEF"; + +void xprint(u32 number) +{ + //FFFFFFFF + char num[16]; + char* s = num; + + while(s-num < 7) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + s--; + while(s >= num) printchar(*s--); +} + +void iprints(char* outs,int number) +{ + //4294967295 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void uprints(char* outs,u32 number) +{ + //4294967295 + char num[32]; + char* s = num; + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void xprints(char* outs,u32 number) +{ + //FFFFFFFF + char num[16]; + char* s = num; + + while(s-num < 7) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void kprint(char* str) +{ + while(*str) printchar(*str++); +} + +void ksprintf(char* dst,u32 maxLen,const char* fmt,...) +{ + u32* argp; + char* cur,*end,c; + char numbuf[64]; + + argp = ((u32*)&fmt)+1; + cur = dst; + end = dst+maxLen; + while((c = *fmt++) && cur != end) + { + if(c == '%') + { + char* p = numbuf; + c = *fmt++; + if(c == 'd') + { + iprints(numbuf,*(int*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'u') + { + uprints(numbuf,*(int*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'p' || c == 'x') + { + xprints(numbuf,*(u32*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 's') + { + const char* str = *(const char**)argp++; + while((*cur++ = *str++)) + if(cur == end) break; + cur--; + } + } + else + { + if(cur == end) break; + *cur++ = c; + } + } + if(cur == end) + *(end-1) = '\0'; +} + +void kprintf(const char* fmt,...) +{ + u32* argp; + char c; + + argp = ((u32*)&fmt)+1; + while((c = *fmt++)) + { + if(c == '%') + { + c = *fmt++; + switch(c) + { + case 'd': iprint(*(int*)argp++); break; + case 'u': uprint(*(u32*)argp++); break; + case 'p': + case 'x': xprint(*(u32*)argp++); break; + case 'c': printchar((char)(*(u32*)argp++)); break; + case 's': kprint((char*)(*(u32*)argp++)); break; + } + } + else printchar(c); + } +} diff --git a/kernel_old/termlib.h b/kernel_old/termlib.h new file mode 100644 index 0000000..30b9462 --- /dev/null +++ b/kernel_old/termlib.h @@ -0,0 +1,7 @@ +#ifndef __TERMLIB_H +#define __TERMLIB_H + +#include "os.h" +#include "stdlib.h" //redirect to stdlib.h + +#endif diff --git a/kernel_old/vga_terminal.c b/kernel_old/vga_terminal.c new file mode 100644 index 0000000..fdf0bc5 --- /dev/null +++ b/kernel_old/vga_terminal.c @@ -0,0 +1,107 @@ +#include "vga_terminal.h" +#include "paging.h" +#include "os.h" +#include "io.h" + +static u8 s_cCurAttr = DEFAULT_COLOR; +u32 s_iX; +u32 s_iY; + +void vga_terminal_init() +{ + //Map 0xB8000 to 0xC100B8000 + page_map(OS_VIDEO_BUFFER,0x000B8000,80*25,PAGE_TABLE_READWRITE); +} + +void update_cursor() +{ + u16 pos; + pos = s_iY * 80 + s_iX; + + outb(0x3D4, 0x0F); + outb(0x3D5, (u8) (pos & 0xFF)); + outb(0x3D4, 0x0E); + outb(0x3D5, (u8) ((pos >> 8) & 0xFF)); +} + +void cls() +{ + u32 i; + for(i = 0; i < SCR_CHARS*SCR_LINES; i++) + SCR_TEXT_BUF[i] = SCR_ENTRY(0,DEFAULT_COLOR); + s_iX = s_iY = 0; + update_cursor(); +} + +void shiftscreen(); + +void printchar(unsigned char c) +{ + if(c == '\n' || c == '\r' || c == '\t' || c == '\b') // Control characters + { + if(c == '\r') s_iX = 0; + else if(c == '\n') s_iX = SCR_CHARS; + else if(c == '\t') s_iX = (s_iX + 8) & ~7; + else if(c == '\b') + { + if(s_iX) s_iX--; + else if(s_iY) + { + s_iY--; + s_iX = SCR_CHARS-1; + } + //Remove character + SCR_TEXT_BUF[s_iY*SCR_CHARS+s_iX] = SCR_ENTRY(0,s_cCurAttr); + } + } + else // Text characters + SCR_TEXT_BUF[s_iY*SCR_CHARS+s_iX++] = SCR_ENTRY(c,s_cCurAttr); + + if(s_iX > SCR_CHARS-1) + { + s_iX = 0; + if(s_iY < SCR_LINES-1) + s_iY++; + else shiftscreen(); + } + + update_cursor(); +} + +void shiftscreen() +{ + //cls(); + u32 x,y; + for(y = 1; y < SCR_LINES; y++) + { + for(x = 0; x < SCR_CHARS; x++) + { + SCR_TEXT_BUF[(y-1)*SCR_CHARS+x] + = SCR_TEXT_BUF[y*SCR_CHARS+x]; + } + } + + for(x = 0; x < SCR_CHARS; x++) + { + SCR_TEXT_BUF[(SCR_LINES-1)*SCR_CHARS+x] + = SCR_ENTRY(0,DEFAULT_COLOR); + } +} + +void chg_color(u8 color) +{ + s_cCurAttr = color; +} + +void print(const char* str) +{ + while(*str) printchar(*str++); +} + +void move_to_next_char(){} +void move_to_next_line(){} +void locate(int h, int w) +{ + s_iX = w; + s_iY = h; +} diff --git a/kernel_old/vga_terminal.h b/kernel_old/vga_terminal.h new file mode 100644 index 0000000..58267f2 --- /dev/null +++ b/kernel_old/vga_terminal.h @@ -0,0 +1,67 @@ +#ifndef __VGA_TERMINAL_H +#define __VGA_TERMINAL_H + +#include "os.h" + +#define SCR_CHARS 80 +#define SCR_LINES 25 +//#define SCR_TEXT_BUF ((u16*)0xB8000) +#define SCR_TEXT_BUF ((u16*)OS_VIDEO_BUFFER) +#define SCR_ENTRY(ch,col) ((col<<8)|ch) + +#define BLACK 0 +#define BLUE 1 +#define GREEN 2 +#define CYAN 2 +#define RED 4 +#define GRAY 8 +#define WHITE 15 +#define MAGENTA 13 + +#define BG_BLACK (0<<4) +#define BG_BLUE (1<<4) +#define BG_GREEN (2<<4) +#define BG_RED (4<<4) +#define BG_GRAY (8<<4) +#define BG_WHITE (15<<4) + +#define DEFAULT_COLOR BG_BLACK|7 + +enum vga_color { + VGA_COLOR_BLACK = 0, + VGA_COLOR_BLUE = 1, + VGA_COLOR_GREEN = 2, + VGA_COLOR_CYAN = 3, + VGA_COLOR_RED = 4, + VGA_COLOR_MAGENTA = 5, + VGA_COLOR_BROWN = 6, + VGA_COLOR_LIGHT_GREY = 7, + VGA_COLOR_DARK_GREY = 8, + VGA_COLOR_LIGHT_BLUE = 9, + VGA_COLOR_LIGHT_GREEN = 10, + VGA_COLOR_LIGHT_CYAN = 11, + VGA_COLOR_LIGHT_RED = 12, + VGA_COLOR_LIGHT_MAGENTA = 13, + VGA_COLOR_LIGHT_BROWN = 14, + VGA_COLOR_WHITE = 15, +}; + +static inline u8 vga_entry_color(enum vga_color fg, enum vga_color bg) { + return fg | bg << 4; +} + +static inline u16 vga_entry(unsigned char uc, u8 color) { + return (u16) uc | (u16) color << 8; +} + +void vga_terminal_init(); + +void cls(); +void shiftscreen(); +void printchar(unsigned char c); +void chg_color(u8 color); +void print(const char* str); +void locate(int h, int w); + + +#endif diff --git a/kernel_old/x86_utils.c b/kernel_old/x86_utils.c new file mode 100644 index 0000000..5513ea8 --- /dev/null +++ b/kernel_old/x86_utils.c @@ -0,0 +1,37 @@ +#include "x86utils.h" +#include "vga_terminal.h" +#include "termlib.h" + +void x86_print_regs() +{ + struct regs_s regs; + x86_get_regs(®s); + + chg_color(VGA_COLOR_WHITE); + kprintf( + "[========\t\tx86 register dump\t\t========]\n" + "\tEAX\t%x\tECX\t%x\n\tEDX\t%x\tEBX\t%x\n" + "\tESP\t%x\tEBP\t%x\n\tESI\t%x\tEDI\t%x\n" + "\n\tEIP\t%x\n" + "\tEFLAGS\t%x\n" + "\n\tCS %x DS %x SS %x\n" + "\tES %x FS %x GS %x\n" + "\n\tGDT\t%x\n\tIDT\t%x\n\tLDT\t%x\n\tTR\t%x\n" + "\n\tCR0\t%x\tCR2\t%x\n" + "\tCR3\t%x\tCR4\t%x\n" + "[========\t\tx86 register dump\t\t========]\n", + regs.eax,regs.ecx,regs.edx,regs.ebx, + regs.esp,regs.ebp,regs.esi,regs.edi, + regs.eip, + regs.eflags, + regs.cs,regs.ds,regs.ss, + regs.es,regs.fs,regs.gs, + regs.gdt, + regs.idt, + regs.ldt, + regs.tr, + regs.cr0,regs.cr2, + regs.cr3,regs.cr4 + ); + chg_color(VGA_COLOR_MAGENTA); +} diff --git a/kernel_old/x86gdt.asm b/kernel_old/x86gdt.asm new file mode 100644 index 0000000..05c98fc --- /dev/null +++ b/kernel_old/x86gdt.asm @@ -0,0 +1,36 @@ +section .text +global _gdt_install +_gdt_install: + push ebp + mov ebp,esp + + ; [ebp+0x08] = GDT table ptr + ; [ebp+0x0C] = GDT limit + mov eax,dword [ebp+0x08] + mov dword [gdt_base],eax + mov eax,dword [ebp+0x0C] + mov word [gdt_limit],ax + + lgdt [x86gdt] + ; 0x00 - NULL desc + ; 0x08 - CODE desc + ; 0x10 - DATA desc + + ; Reloads segments + jmp 0x08:reload_cs +reload_cs: + mov ax,0x10 + mov ds,ax + mov es,ax + mov ss,ax + mov gs,ax + mov fs,ax + + mov esp,ebp + pop ebp + ret + +section .data +x86gdt: + gdt_limit dw 0 + gdt_base dd 0 diff --git a/kernel_old/x86idt.asm b/kernel_old/x86idt.asm new file mode 100644 index 0000000..bf873d7 --- /dev/null +++ b/kernel_old/x86idt.asm @@ -0,0 +1,23 @@ +section .text +global _idt_install +_idt_install: + push ebp + mov ebp,esp + + ; [ebp+0x08] = base + ; [ebp+0x0C] = limit + mov eax,dword [ebp+0x08] + mov dword [idt_base],eax + mov eax,dword [ebp+0x0C] + mov word [idt_limit],ax + + lidt [idt_desc] + + mov esp,ebp + pop ebp + ret + +section .data +idt_desc: + idt_limit dw 0 + idt_base dd 0 diff --git a/kernel_old/x86int.asm b/kernel_old/x86int.asm new file mode 100644 index 0000000..90de371 --- /dev/null +++ b/kernel_old/x86int.asm @@ -0,0 +1,483 @@ +section .text + +global _int0_handler +global _int1_handler +global _int2_handler +global _int3_handler +global _int4_handler +global _int5_handler +global _int6_handler +global _int7_handler +global _int8_handler +global _int9_handler +global _int10_handler +global _int11_handler +global _int12_handler +global _int13_handler +global _int14_handler +global _int15_handler +global _int16_handler +global _int17_handler +global _int18_handler +global _int19_handler +global _int20_handler +global _int21_handler +global _int22_handler +global _int23_handler +global _int24_handler +global _int25_handler +global _int26_handler +global _int27_handler +global _int28_handler +global _int29_handler +global _int30_handler +global _int31_handler +extern idt_handler_entry + +_int0_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int1_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int2_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int3_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int4_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int5_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int6_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int7_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int8_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int9_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int10_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int11_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int12_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int13_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int14_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int15_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int16_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int17_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int18_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int19_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int20_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int21_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int22_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int23_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int24_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int25_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int26_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int27_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int28_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int29_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int30_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int31_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd diff --git a/kernel_old/x86io.asm b/kernel_old/x86io.asm new file mode 100644 index 0000000..cf397c7 --- /dev/null +++ b/kernel_old/x86io.asm @@ -0,0 +1,112 @@ +section .text +global inb +global outb +global inw +global outw +global inl +global outl +global _insw +global _outsw +global _insw256 +global _outsw256 + +inb: + mov edx,dword [esp+0x04] + in al,dx + + ret + +outb: + mov edx,dword [esp+0x04] + mov eax,dword [esp+0x08] + out dx,al + ret + +inw: + mov edx,dword [esp+0x04] + in ax,dx + ret + +outw: + mov edx,dword [esp+0x04] + mov eax,dword [esp+0x08] + out dx,ax + ret + +inl: + mov edx,dword [esp+0x04] + in eax,dx + ret + +outl: + mov edx,dword [esp+0x04] + mov eax,dword [esp+0x08] + out dx,eax + ret + +_insw: + push ebp + mov ebp,esp + + ; [ebp+0x08] - port + ; [ebp+0x0C] - buffer + ; [ebp+0x10] - count + + push edi + push ecx + + mov edx,dword [ebp+0x08] + mov edi,dword [ebp+0x0C] + mov ecx,dword [ebp+0x10] + + rep insw + + pop ecx + pop edi + + mov esp,ebp + pop ebp + ret + +_outsw: + push ebp + mov ebp,esp + + ; [ebp+0x08] - port + ; [ebp+0x0C] - buffer + ; [ebp+0x10] - count + + push esi + push ecx + + mov edx,dword [ebp+0x08] + mov esi,dword [ebp+0x0C] + mov ecx,dword [ebp+0x10] + + rep outsw + + pop ecx + pop esi + + mov esp,ebp + pop ebp + ret + +_insw256: + push edi + push ecx + mov edi,dword [esp+0x0C] + mov ecx,256 + rep insw + pop ecx + pop edi + ret + +_outsw256: + push esi + push ecx + mov esi,dword [esp+0x0C] + rep outsw + pop ecx + pop edi + ret diff --git a/kernel_old/x86stdlib.asm b/kernel_old/x86stdlib.asm new file mode 100644 index 0000000..7536ef1 --- /dev/null +++ b/kernel_old/x86stdlib.asm @@ -0,0 +1,124 @@ +section .text +global kmemcpy +global kmemcmp +global kmemzero + +kmemcpy: + push ebp + mov ebp,esp + + ; [ebp+0x08] = dst + ; [ebp+0x0C] = src + ; [ebp+0x10] = size + + push edi + push esi + + mov edi,dword [ebp+0x08] + mov esi,dword [ebp+0x0C] + + mov ecx,dword [ebp+0x10] + shr ecx,2 ; Div by 4 + jz .cp_loop4_skip +.cp_loop4: + lodsd + stosd + loop .cp_loop4 +.cp_loop4_skip: + + mov ecx,dword [ebp+0x10] + and ecx,3 ; Remainder by 4 + jz .cp_loop1_skip +.cp_loop1: + lodsb + stosb + loop .cp_loop1 +.cp_loop1_skip: + + pop esi + pop edi + + mov esp,ebp + pop ebp + ret + +kmemcmp: + push ebp + mov ebp,esp + + xor eax,eax + ; [ebp+0x08] = dst + ; [ebp+0x0C] = src + ; [ebp+0x10] = size + + push edi + push esi + + mov edi,dword [ebp+0x08] + mov esi,dword [ebp+0x0C] + + mov ecx,dword [ebp+0x10] + shr ecx,2 ; Div by 4 + jz .cm_loop4_skip +.cm_loop4: + lodsd + cmp eax,dword [edi] + jnz .cm_inequal + add edi,4 + loop .cm_loop4 +.cm_loop4_skip: + + mov ecx,dword [ebp+0x10] + and ecx,3 ; Remainder by 4 + jz .cm_loop1_skip +.cm_loop1: + lodsb + cmp al,byte [edi] + jnz .cm_inequal + inc edi + loop .cm_loop1 +.cm_loop1_skip: + + xor eax,eax + jmp .cm_equal +.cm_inequal: + xor eax,eax + inc eax +.cm_equal: + pop esi + pop edi + + mov esp,ebp + pop ebp + ret + +kmemzero: + push ebp + mov ebp,esp + + ; [ebp+0x08] - dst + ; [ebp+0x0C] - size + + push edi + push ecx + + mov edi,dword [ebp+0x08] + + mov ecx,dword [ebp+0x0C] + shr ecx,2 ; Dividy by 4 + jz .skip4 + + xor eax,eax + rep stosd +.skip4: + + mov ecx,dword [ebp+0x0C] + and ecx,3 + rep stosd + + pop ecx + pop edi + + mov ebp,esp + pop ebp + ret diff --git a/kernel_old/x86utils.asm b/kernel_old/x86utils.asm new file mode 100644 index 0000000..7fe4ab5 --- /dev/null +++ b/kernel_old/x86utils.asm @@ -0,0 +1,96 @@ +section .text +global x86_get_regs +global x86_reload_cr3 +global _load_legacy_stack +extern legacy_esp + +x86_get_regs: + push ebp + mov ebp,esp + sub esp,8 + + ; [ebp+0x08] - struct regs + ; [ebp-0x04] - saved edi + ; [ebp-0x08] - saved ecx + + ;mov edx,0xCAFEBABE + + mov dword [ebp-0x04],edi + mov dword [ebp-0x08],ecx + ;mov esi,esp + ;lea esi,[esp-76] + mov edi,dword [ebp+0x08] + + pushad ; Push all general-purpose registers + pushfd ; Push flags + + ; Get selectors + push cs + push ds + push ss + push es + push gs + push fs + + ; Store GDT + sub esp,4 + sgdt [esp] + ; Store IDT + sub esp,4 + sidt [esp] + ; Store LDT + sub esp,4 + sldt [esp] + ; Store TR + sub esp,4 + str [esp] + ; Store machine status word + ;sub esp,4 + ;smsw [esp] + + mov eax,cr0 + push eax + mov eax,cr2 + push eax + mov eax,cr3 + push eax + mov eax,cr4 + push eax + + mov ecx,23 ; 8 regs + eflags + 6 segs + control regs +.pop_loop: + pop eax + stosd + loop .pop_loop + + ; Restore everything + mov edi,dword [ebp-0x04] + mov ecx,dword [ebp-0x08] + + mov eax,dword [ebp+0x08] + mov dword [eax+44],edi + mov dword [eax+68],ecx + + mov esp,ebp + pop ebp + + ; Restore EBP,ESP,EIP + mov dword [eax+52],ebp + mov dword [eax+56],esp + add dword [eax+56],8 ; Skip ret + 1st arg + + ; pop EIP and push it again to to do ret + pop dword [eax+76] + push dword [eax+76] + + ret + +x86_reload_cr3: + mov eax,cr3 + mov cr3,eax + ret + +_load_legacy_stack: + pop eax + mov esp,dword [legacy_esp] + jmp eax diff --git a/kernel_old/x86utils.h b/kernel_old/x86utils.h new file mode 100644 index 0000000..f1f91a6 --- /dev/null +++ b/kernel_old/x86utils.h @@ -0,0 +1,41 @@ +#ifndef __X86_UTILS_H +#define __X86_UTILS_H + +#include "os.h" + +struct __packed regs_s { + u32 cr4; + u32 cr3; + u32 cr2; + u32 cr0; + + u32 tr; + u32 ldt; + u32 idt; + u32 gdt; + + u32 fs; + u32 gs; + u32 es; + u32 ss; + u32 ds; + u32 cs; + + u32 eflags; + + u32 edi; + u32 esi; + u32 ebp; + u32 esp; + u32 ebx; + u32 edx; + u32 ecx; + u32 eax; + + u32 eip; +}; + +void x86_get_regs(struct regs_s* regs); +void x86_print_regs(); + +#endif diff --git a/kmap.txt b/kmap.txt new file mode 100644 index 0000000..d6ab59c --- /dev/null +++ b/kmap.txt @@ -0,0 +1,437 @@ + +Allocating common symbols +Common symbol size file + +lmem 0x8 kobj/kmain.o +s_iY 0x4 kobj/vga_terminal.o +g_fat 0x68 kobj/fat.o +disk1 0x8 kobj/kmain.o +s_iX 0x4 kobj/vga_terminal.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x0000001fc0000000 . = 0x1fc0000000 + +.text 0x0000001fc0000000 0x885d + *(.text) + .text 0x0000001fc0000000 0x12 kobj/start.o + 0x0000001fc0000000 _start + .text 0x0000001fc0000012 0xd0a kobj/kmain.o + 0x0000001fc0000012 command_interpreter + 0x0000001fc00009f4 kmain + *fill* 0x0000001fc0000d1c 0x4 + .text 0x0000001fc0000d20 0x5b kobj/x64io.o + 0x0000001fc0000d20 inb + 0x0000001fc0000d25 outb + 0x0000001fc0000d2d inw + 0x0000001fc0000d33 outw + 0x0000001fc0000d3c inl + 0x0000001fc0000d41 outl + 0x0000001fc0000d49 _insw + 0x0000001fc0000d56 _outsw + 0x0000001fc0000d60 _insw256 + 0x0000001fc0000d6f _outsw256 + .text 0x0000001fc0000d7b 0x1441 kobj/stdlib.o + 0x0000001fc0000d7b iprint + 0x0000001fc0000ebd uprint + 0x0000001fc0000fac xprint + 0x0000001fc0001088 fprint + 0x0000001fc00011df iprints + 0x0000001fc0001327 uprints + 0x0000001fc000141c xprints + 0x0000001fc00014fe kprint + 0x0000001fc0001520 ksprintf + 0x0000001fc000183b kprintf + 0x0000001fc0001ac4 kgetch + 0x0000001fc0001b0f kgetc + 0x0000001fc0001b5b kgets + 0x0000001fc0001dde katoi + 0x0000001fc0001e1d katou + 0x0000001fc0001ee3 ksscanf + .text 0x0000001fc00021bc 0x642 kobj/string.o + 0x0000001fc00021bc kstrlen + 0x0000001fc00021ed kstrcpy + 0x0000001fc0002225 kstrncpy + 0x0000001fc000228a kstrchr + 0x0000001fc00022c6 kstrrchr + 0x0000001fc0002323 kstrcmp + 0x0000001fc00023a9 kstrncmp + 0x0000001fc00023eb kstrcasecmp + 0x0000001fc00024f5 ktoupper + 0x0000001fc000251d ktolower + 0x0000001fc0002545 kchrlen + 0x0000001fc000259e kchr2dbcs + 0x0000001fc0002655 kdbcslen + 0x0000001fc0002687 kdbcs2str + .text 0x0000001fc00027fe 0x7bb kobj/vga_terminal.o + 0x0000001fc00027fe vga_terminal_init + 0x0000001fc000290e update_cursor + 0x0000001fc0002915 cls + 0x0000001fc0002ab5 printchar + 0x0000001fc0002cae printbmp + 0x0000001fc0002dd3 shiftscreen + 0x0000001fc0002f00 chg_color + 0x0000001fc0002f20 print + 0x0000001fc0002f7c move_to_next_char + 0x0000001fc0002f83 move_to_next_line + 0x0000001fc0002f8a locate + *fill* 0x0000001fc0002fb9 0x7 + .text 0x0000001fc0002fc0 0x50 kobj/x64stdlib.o + 0x0000001fc0002fc0 kmemcpy + 0x0000001fc0002fd4 kmemcmp + 0x0000001fc0002ff9 kmemzero + .text 0x0000001fc0003010 0x39 kobj/va_list.o + 0x0000001fc0003010 va_start + 0x0000001fc0003026 va_arg + .text 0x0000001fc0003049 0x1c0 kobj/idt.o + 0x0000001fc0003049 idt_set_handler + 0x0000001fc0003163 idt_call_handler + 0x0000001fc00031a9 idt_install + 0x0000001fc0003201 idt_enable_interrupts + *fill* 0x0000001fc0003209 0x7 + .text 0x0000001fc0003210 0x28 kobj/x64idt.o + 0x0000001fc0003210 _idt_install + *fill* 0x0000001fc0003238 0x8 + .text 0x0000001fc0003240 0x780 kobj/x64ints.o + 0x0000001fc0003240 int0_handler + 0x0000001fc000327c int1_handler + 0x0000001fc00032b8 int2_handler + 0x0000001fc00032f4 int3_handler + 0x0000001fc0003330 int4_handler + 0x0000001fc000336c int5_handler + 0x0000001fc00033a8 int6_handler + 0x0000001fc00033e4 int7_handler + 0x0000001fc0003420 int8_handler + 0x0000001fc000345c int9_handler + 0x0000001fc0003498 int10_handler + 0x0000001fc00034d4 int11_handler + 0x0000001fc0003510 int12_handler + 0x0000001fc000354c int13_handler + 0x0000001fc0003588 int14_handler + 0x0000001fc00035c4 int15_handler + 0x0000001fc0003600 int16_handler + 0x0000001fc000363c int17_handler + 0x0000001fc0003678 int18_handler + 0x0000001fc00036b4 int19_handler + 0x0000001fc00036f0 int20_handler + 0x0000001fc000372c int21_handler + 0x0000001fc0003768 int22_handler + 0x0000001fc00037a4 int23_handler + 0x0000001fc00037e0 int24_handler + 0x0000001fc000381c int25_handler + 0x0000001fc0003858 int26_handler + 0x0000001fc0003894 int27_handler + 0x0000001fc00038d0 int28_handler + 0x0000001fc000390c int29_handler + 0x0000001fc0003948 int30_handler + 0x0000001fc0003984 int31_handler + .text 0x0000001fc00039c0 0x1c5 kobj/pic.o + 0x0000001fc00039c0 pic_init + 0x0000001fc0003ab3 pic_set_mask + 0x0000001fc0003b45 pic_send_eoi + .text 0x0000001fc0003b85 0x12e kobj/pit.o + 0x0000001fc0003b85 timer_interrupt + 0x0000001fc0003bcd sleep + 0x0000001fc0003c34 pit_init + .text 0x0000001fc0003cb3 0x462 kobj/exceptions.o + 0x0000001fc0003cba _enter_rescue_mode + 0x0000001fc0003cc1 enter_rescue_mode + 0x0000001fc0003da8 exception0 + 0x0000001fc0003ddb exception3 + 0x0000001fc0003e0e exception6 + 0x0000001fc0003e41 exception7 + 0x0000001fc0003e74 exception8 + 0x0000001fc0003ea7 exception10 + 0x0000001fc0003eda exception11 + 0x0000001fc0003f0d exception12 + 0x0000001fc0003f40 exception13 + 0x0000001fc0003f87 exception14 + 0x0000001fc0003fce install_exceptions + .text 0x0000001fc0004115 0x46e kobj/keyboard.o + 0x0000001fc00041d3 keyboard_interrupt + 0x0000001fc00042a8 keyboard_scan_code + 0x0000001fc00042bb keyboard_ascii + 0x0000001fc00044d0 keyboard_sym + 0x0000001fc00044f8 keyboard_reset_irq1_vars + 0x0000001fc000450c keyboard_enable + 0x0000001fc0004529 keyboard_disable + 0x0000001fc0004546 keyboard_install + .text 0x0000001fc0004583 0x4e3 kobj/paging.o + 0x0000001fc0004583 page_map + 0x0000001fc00047ad page_unmap + 0x0000001fc0004a05 page_v2p + .text 0x0000001fc0004a66 0x225 kobj/multiboot.o + 0x0000001fc0004a66 mbt_scan_memory + .text 0x0000001fc0004c8b 0x217 kobj/lvalloc.o + 0x0000001fc0004c8b lvalloc + 0x0000001fc0004d75 lvalloc_get_next_addr + 0x0000001fc0004dad lvalloc_push + 0x0000001fc0004e04 lvalloc_pop + 0x0000001fc0004e54 lvalloc_init + .text 0x0000001fc0004ea2 0x55f kobj/pci.o + 0x0000001fc0004ea2 pci_read_config_word + 0x0000001fc0004f18 pci_read_config_word_dev + 0x0000001fc0004f6c pci_get_class + 0x0000001fc0004fa6 pci_get_subclass + 0x0000001fc0005071 pci_dump + 0x0000001fc0005354 pci_detect_hardware + 0x0000001fc0005396 pci_find_device + .text 0x0000001fc0005401 0x9fe kobj/ahci.o + 0x0000001fc0005401 ahci_issue_cmd + 0x0000001fc000548f ahci_read_sectors + 0x0000001fc000576c ahci_identify + 0x0000001fc00058f0 port_start + 0x0000001fc0005925 port_stop + 0x0000001fc00059da port_rebase + 0x0000001fc0005a9b ahci_get_sata + 0x0000001fc0005aaf ahci_get_atapi + 0x0000001fc0005ac3 ahci_init + .text 0x0000001fc0005dff 0x589 kobj/disk.o + 0x0000001fc0005e15 disk_get + 0x0000001fc0005e68 disk_available + 0x0000001fc0005ec6 disk_read_ex + 0x0000001fc0005f72 disk_write_ex + 0x0000001fc000601e disk_read + 0x0000001fc00060e7 disk_write + 0x0000001fc000618f disk_setup + 0x0000001fc00062b4 disk_init + .text 0x0000001fc0006388 0xda4 kobj/fat.o + 0x0000001fc0006388 fat_read_cluster + 0x0000001fc0006450 fat_table_read_entry + 0x0000001fc0006517 fat_read_file + 0x0000001fc00065f1 fat_nametofmt38 + 0x0000001fc000671a fat_fmt38toname + 0x0000001fc0006810 fat_is_valid_file + 0x0000001fc0006858 fat_first_file + 0x0000001fc0006ab4 fat_next_file + 0x0000001fc0006d4f fat_find_file + 0x0000001fc0006f01 fat_init + .text 0x0000001fc000712c 0x6cf kobj/heap.o + 0x0000001fc0007180 heap_join + 0x0000001fc0007289 heap_split + 0x0000001fc000731b heap_alloc + 0x0000001fc000747e heap_free + 0x0000001fc00074e4 heap_init + 0x0000001fc00076fc kmalloc + 0x0000001fc0007734 krealloc + 0x0000001fc00077c2 kfree + *fill* 0x0000001fc00077fb 0x5 + .text 0x0000001fc0007800 0x9 kobj/x64utils.o + 0x0000001fc0007800 x64_get_cr2 + 0x0000001fc0007804 x64_rax_n_stop + .text 0x0000001fc0007809 0x36e kobj/file.o + 0x0000001fc00079e8 file_load + *fill* 0x0000001fc0007b77 0x9 + .text 0x0000001fc0007b80 0xb kobj/x64font.o + 0x0000001fc0007b80 x64_get_font + .text 0x0000001fc0007b8b 0x99e kobj/video.o + 0x0000001fc0007b8b video_pixel + 0x0000001fc0007d0c video_char + 0x0000001fc0007ec0 video_rect_zero + 0x0000001fc0007f84 video_line_copy + 0x0000001fc0008027 video_line_zero + 0x0000001fc0008095 video_clear + 0x0000001fc00080d6 video_swap + 0x0000001fc00080dd video_init + .text 0x0000001fc0008529 0x334 kobj/bmp.o + 0x0000001fc0008529 bmp_draw + +.iplt 0x0000001fc0008860 0x0 + .iplt 0x0000001fc0008860 0x0 kobj/start.o + +.rodata 0x0000001fc0009000 0xc9c + *(.rodata) + .rodata 0x0000001fc0009000 0x1e1 kobj/kmain.o + *fill* 0x0000001fc00091e1 0x7 + .rodata 0x0000001fc00091e8 0xc0 kobj/stdlib.o + .rodata 0x0000001fc00092a8 0x7 kobj/string.o + .rodata 0x0000001fc00092af 0xa kobj/vga_terminal.o + *fill* 0x0000001fc00092b9 0x7 + .rodata 0x0000001fc00092c0 0x24 kobj/idt.o + *fill* 0x0000001fc00092e4 0x4 + .rodata 0x0000001fc00092e8 0x180 kobj/exceptions.o + .rodata 0x0000001fc0009468 0x7a kobj/keyboard.o + .rodata 0x0000001fc00094e2 0x1a kobj/multiboot.o + *fill* 0x0000001fc00094fc 0x4 + .rodata 0x0000001fc0009500 0x688 kobj/pci.o + .rodata 0x0000001fc0009b88 0x6b kobj/ahci.o + .rodata 0x0000001fc0009bf3 0x3b kobj/disk.o + .rodata 0x0000001fc0009c2e 0x15 kobj/fat.o + .rodata 0x0000001fc0009c43 0x26 kobj/heap.o + .rodata 0x0000001fc0009c69 0x33 kobj/file.o + +.eh_frame 0x0000001fc0009ca0 0x1388 + .eh_frame 0x0000001fc0009ca0 0x58 kobj/kmain.o + 0x50 (size before relaxing) + .eh_frame 0x0000001fc0009cf8 0x268 kobj/stdlib.o + 0x280 (size before relaxing) + .eh_frame 0x0000001fc0009f60 0x1d0 kobj/string.o + 0x1e0 (size before relaxing) + .eh_frame 0x0000001fc000a130 0x180 kobj/vga_terminal.o + 0x198 (size before relaxing) + .eh_frame 0x0000001fc000a2b0 0x80 kobj/idt.o + 0x98 (size before relaxing) + .eh_frame 0x0000001fc000a330 0x60 kobj/pic.o + 0x78 (size before relaxing) + .eh_frame 0x0000001fc000a390 0x60 kobj/pit.o + 0x78 (size before relaxing) + .eh_frame 0x0000001fc000a3f0 0x1c0 kobj/exceptions.o + 0x1d0 (size before relaxing) + .eh_frame 0x0000001fc000a5b0 0x160 kobj/keyboard.o + 0x178 (size before relaxing) + .eh_frame 0x0000001fc000a710 0x60 kobj/paging.o + 0x78 (size before relaxing) + .eh_frame 0x0000001fc000a770 0x20 kobj/multiboot.o + 0x38 (size before relaxing) + .eh_frame 0x0000001fc000a790 0xa0 kobj/lvalloc.o + 0xb8 (size before relaxing) + .eh_frame 0x0000001fc000a830 0x148 kobj/pci.o + 0x160 (size before relaxing) + .eh_frame 0x0000001fc000a978 0x120 kobj/ahci.o + 0x138 (size before relaxing) + .eh_frame 0x0000001fc000aa98 0x120 kobj/disk.o + 0x138 (size before relaxing) + .eh_frame 0x0000001fc000abb8 0x188 kobj/fat.o + 0x1a0 (size before relaxing) + .eh_frame 0x0000001fc000ad40 0x160 kobj/heap.o + 0x178 (size before relaxing) + .eh_frame 0x0000001fc000aea0 0x40 kobj/file.o + 0x58 (size before relaxing) + .eh_frame 0x0000001fc000aee0 0x128 kobj/video.o + 0x140 (size before relaxing) + .eh_frame 0x0000001fc000b008 0x20 kobj/bmp.o + 0x38 (size before relaxing) + +.rdata 0x0000001fc000b028 0xcbde + .rdata 0x0000001fc000b028 0xcbde kobj/x64font.o + +.rela.dyn 0x0000001fc0017c08 0x0 + .rela.iplt 0x0000001fc0017c08 0x0 kobj/start.o + .rela.text 0x0000001fc0017c08 0x0 kobj/start.o + .rela.data 0x0000001fc0017c08 0x0 kobj/start.o + +.data 0x0000001fc0018000 0x5a0 + *(.data) + .data 0x0000001fc0018000 0x8 kobj/kmain.o + .data 0x0000001fc0018008 0x8 kobj/stdlib.o + .data 0x0000001fc0018010 0x0 kobj/string.o + *fill* 0x0000001fc0018010 0x10 + .data 0x0000001fc0018020 0x60 kobj/vga_terminal.o + .data 0x0000001fc0018080 0x100 kobj/idt.o + .data 0x0000001fc0018180 0xa kobj/x64idt.o + .data 0x0000001fc001818a 0x0 kobj/pic.o + .data 0x0000001fc001818a 0x0 kobj/pit.o + .data 0x0000001fc001818a 0x0 kobj/exceptions.o + *fill* 0x0000001fc001818a 0x16 + .data 0x0000001fc00181a0 0x98 kobj/keyboard.o + .data 0x0000001fc0018238 0x0 kobj/paging.o + .data 0x0000001fc0018238 0x0 kobj/multiboot.o + .data 0x0000001fc0018238 0x0 kobj/lvalloc.o + *fill* 0x0000001fc0018238 0x8 + .data 0x0000001fc0018240 0x360 kobj/pci.o + .data 0x0000001fc00185a0 0x0 kobj/ahci.o + .data 0x0000001fc00185a0 0x0 kobj/disk.o + .data 0x0000001fc00185a0 0x0 kobj/fat.o + .data 0x0000001fc00185a0 0x0 kobj/heap.o + .data 0x0000001fc00185a0 0x0 kobj/file.o + .data 0x0000001fc00185a0 0x0 kobj/video.o + .data 0x0000001fc00185a0 0x0 kobj/bmp.o + +.igot.plt 0x0000001fc00185a0 0x0 + .igot.plt 0x0000001fc00185a0 0x0 kobj/start.o + +.bss 0x0000001fc0019000 0x13200 + *(COMMON) + COMMON 0x0000001fc0019000 0x10 kobj/kmain.o + 0x0000001fc0019000 lmem + 0x0000001fc0019008 disk1 + COMMON 0x0000001fc0019010 0x8 kobj/vga_terminal.o + 0x0000001fc0019010 s_iY + 0x0000001fc0019014 s_iX + *fill* 0x0000001fc0019018 0x8 + COMMON 0x0000001fc0019020 0x68 kobj/fat.o + 0x0000001fc0019020 g_fat + *(.bss) + *fill* 0x0000001fc0019088 0x8 + .bss 0x0000001fc0019090 0x10000 kobj/start.o + .bss 0x0000001fc0029090 0x0 kobj/kmain.o + .bss 0x0000001fc0029090 0x0 kobj/stdlib.o + .bss 0x0000001fc0029090 0x0 kobj/string.o + .bss 0x0000001fc0029090 0xc kobj/vga_terminal.o + *fill* 0x0000001fc002909c 0x4 + .bss 0x0000001fc00290a0 0x1808 kobj/idt.o + .bss 0x0000001fc002a8a8 0x0 kobj/pic.o + .bss 0x0000001fc002a8a8 0x8 kobj/pit.o + .bss 0x0000001fc002a8b0 0x0 kobj/exceptions.o + .bss 0x0000001fc002a8b0 0xc kobj/keyboard.o + .bss 0x0000001fc002a8bc 0x0 kobj/paging.o + .bss 0x0000001fc002a8bc 0x0 kobj/multiboot.o + .bss 0x0000001fc002a8bc 0x0 kobj/lvalloc.o + *fill* 0x0000001fc002a8bc 0x4 + .bss 0x0000001fc002a8c0 0x404 kobj/pci.o + *fill* 0x0000001fc002acc4 0x1c + .bss 0x0000001fc002ace0 0x28 kobj/ahci.o + *fill* 0x0000001fc002ad08 0x2f8 + .bss 0x0000001fc002b000 0x1200 kobj/disk.o + .bss 0x0000001fc002c200 0x0 kobj/fat.o + .bss 0x0000001fc002c200 0x0 kobj/heap.o + .bss 0x0000001fc002c200 0x0 kobj/file.o + .bss 0x0000001fc002c200 0x0 kobj/video.o + .bss 0x0000001fc002c200 0x0 kobj/bmp.o +LOAD kobj/start.o +LOAD kobj/kmain.o +LOAD kobj/x64io.o +LOAD kobj/stdlib.o +LOAD kobj/string.o +LOAD kobj/vga_terminal.o +LOAD kobj/x64stdlib.o +LOAD kobj/va_list.o +LOAD kobj/idt.o +LOAD kobj/x64idt.o +LOAD kobj/x64ints.o +LOAD kobj/pic.o +LOAD kobj/pit.o +LOAD kobj/exceptions.o +LOAD kobj/keyboard.o +LOAD kobj/paging.o +LOAD kobj/multiboot.o +LOAD kobj/lvalloc.o +LOAD kobj/pci.o +LOAD kobj/ahci.o +LOAD kobj/disk.o +LOAD kobj/fat.o +LOAD kobj/heap.o +LOAD kobj/x64utils.o +LOAD kobj/file.o +LOAD kobj/x64font.o +LOAD kobj/video.o +LOAD kobj/bmp.o +OUTPUT(os/lenochka.elf elf64-x86-64) + +.comment 0x0000000000000000 0x11 + .comment 0x0000000000000000 0x11 kobj/kmain.o + 0x12 (size before relaxing) + .comment 0x0000000000000011 0x12 kobj/stdlib.o + .comment 0x0000000000000011 0x12 kobj/string.o + .comment 0x0000000000000011 0x12 kobj/vga_terminal.o + .comment 0x0000000000000011 0x12 kobj/idt.o + .comment 0x0000000000000011 0x12 kobj/pic.o + .comment 0x0000000000000011 0x12 kobj/pit.o + .comment 0x0000000000000011 0x12 kobj/exceptions.o + .comment 0x0000000000000011 0x12 kobj/keyboard.o + .comment 0x0000000000000011 0x12 kobj/paging.o + .comment 0x0000000000000011 0x12 kobj/multiboot.o + .comment 0x0000000000000011 0x12 kobj/lvalloc.o + .comment 0x0000000000000011 0x12 kobj/pci.o + .comment 0x0000000000000011 0x12 kobj/ahci.o + .comment 0x0000000000000011 0x12 kobj/disk.o + .comment 0x0000000000000011 0x12 kobj/fat.o + .comment 0x0000000000000011 0x12 kobj/heap.o + .comment 0x0000000000000011 0x12 kobj/file.o + .comment 0x0000000000000011 0x12 kobj/video.o + .comment 0x0000000000000011 0x12 kobj/bmp.o diff --git a/kobj/ahci.o b/kobj/ahci.o new file mode 100644 index 0000000..41ff4f6 Binary files /dev/null and b/kobj/ahci.o differ diff --git a/kobj/bmp.o b/kobj/bmp.o new file mode 100644 index 0000000..748ebb4 Binary files /dev/null and b/kobj/bmp.o differ diff --git a/kobj/disk.o b/kobj/disk.o new file mode 100644 index 0000000..c908fc8 Binary files /dev/null and b/kobj/disk.o differ diff --git a/kobj/exceptions.o b/kobj/exceptions.o new file mode 100644 index 0000000..505dde4 Binary files /dev/null and b/kobj/exceptions.o differ diff --git a/kobj/fat.o b/kobj/fat.o new file mode 100644 index 0000000..2a5e941 Binary files /dev/null and b/kobj/fat.o differ diff --git a/kobj/file.o b/kobj/file.o new file mode 100644 index 0000000..8a52702 Binary files /dev/null and b/kobj/file.o differ diff --git a/kobj/heap.o b/kobj/heap.o new file mode 100644 index 0000000..37fc81d Binary files /dev/null and b/kobj/heap.o differ diff --git a/kobj/idt.o b/kobj/idt.o new file mode 100644 index 0000000..cfe8c75 Binary files /dev/null and b/kobj/idt.o differ diff --git a/kobj/keyboard.o b/kobj/keyboard.o new file mode 100644 index 0000000..a42325f Binary files /dev/null and b/kobj/keyboard.o differ diff --git a/kobj/kmain.o b/kobj/kmain.o new file mode 100644 index 0000000..9419c8d Binary files /dev/null and b/kobj/kmain.o differ diff --git a/kobj/lvalloc.o b/kobj/lvalloc.o new file mode 100644 index 0000000..80b39fd Binary files /dev/null and b/kobj/lvalloc.o differ diff --git a/kobj/multiboot.o b/kobj/multiboot.o new file mode 100644 index 0000000..a5ca2c2 Binary files /dev/null and b/kobj/multiboot.o differ diff --git a/kobj/paging.o b/kobj/paging.o new file mode 100644 index 0000000..2944019 Binary files /dev/null and b/kobj/paging.o differ diff --git a/kobj/pci.o b/kobj/pci.o new file mode 100644 index 0000000..449e986 Binary files /dev/null and b/kobj/pci.o differ diff --git a/kobj/pic.o b/kobj/pic.o new file mode 100644 index 0000000..cb9e251 Binary files /dev/null and b/kobj/pic.o differ diff --git a/kobj/pit.o b/kobj/pit.o new file mode 100644 index 0000000..0813aee Binary files /dev/null and b/kobj/pit.o differ diff --git a/kobj/start.o b/kobj/start.o new file mode 100644 index 0000000..1eadeb4 Binary files /dev/null and b/kobj/start.o differ diff --git a/kobj/stdlib.o b/kobj/stdlib.o new file mode 100644 index 0000000..9bdb835 Binary files /dev/null and b/kobj/stdlib.o differ diff --git a/kobj/string.o b/kobj/string.o new file mode 100644 index 0000000..39b7dbb Binary files /dev/null and b/kobj/string.o differ diff --git a/kobj/va_list.o b/kobj/va_list.o new file mode 100644 index 0000000..f14018d Binary files /dev/null and b/kobj/va_list.o differ diff --git a/kobj/vga_terminal.o b/kobj/vga_terminal.o new file mode 100644 index 0000000..3232b74 Binary files /dev/null and b/kobj/vga_terminal.o differ diff --git a/kobj/video.o b/kobj/video.o new file mode 100644 index 0000000..22db157 Binary files /dev/null and b/kobj/video.o differ diff --git a/kobj/x64font.o b/kobj/x64font.o new file mode 100644 index 0000000..0ec9dd9 Binary files /dev/null and b/kobj/x64font.o differ diff --git a/kobj/x64idt.o b/kobj/x64idt.o new file mode 100644 index 0000000..9d9fc96 Binary files /dev/null and b/kobj/x64idt.o differ diff --git a/kobj/x64ints.o b/kobj/x64ints.o new file mode 100644 index 0000000..5a40c3b Binary files /dev/null and b/kobj/x64ints.o differ diff --git a/kobj/x64io.o b/kobj/x64io.o new file mode 100644 index 0000000..f50ce29 Binary files /dev/null and b/kobj/x64io.o differ diff --git a/kobj/x64stdlib.o b/kobj/x64stdlib.o new file mode 100644 index 0000000..c5d62ec Binary files /dev/null and b/kobj/x64stdlib.o differ diff --git a/kobj/x64utils.o b/kobj/x64utils.o new file mode 100644 index 0000000..2b13421 Binary files /dev/null and b/kobj/x64utils.o differ diff --git a/lenochka.ld b/lenochka.ld new file mode 100644 index 0000000..5dd6a47 --- /dev/null +++ b/lenochka.ld @@ -0,0 +1,29 @@ +ENTRY(_start) + +SECTIONS +{ + . = 0x1FC0000000; + + .text BLOCK(4K) : ALIGN(4K) + { + *(.text) + } + + .rodata BLOCK(4K) : ALIGN(4K) + { + *(.rodata) + } + + .data BLOCK(4K) : ALIGN(4K) + { + *(.data) + } + + .bss BLOCK(4K) : ALIGN(4K) + { + *(COMMON) + *(.bss) + } + + +} diff --git a/lenochka/.gitattributes b/lenochka/.gitattributes new file mode 100644 index 0000000..dfe0770 --- /dev/null +++ b/lenochka/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/lenochka/LICENSE b/lenochka/LICENSE new file mode 100644 index 0000000..61d1860 --- /dev/null +++ b/lenochka/LICENSE @@ -0,0 +1,674 @@ +GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. \ No newline at end of file diff --git a/lenochka/README.md b/lenochka/README.md new file mode 100644 index 0000000..be8cf93 --- /dev/null +++ b/lenochka/README.md @@ -0,0 +1 @@ +# lenochka diff --git a/lmap.txt b/lmap.txt new file mode 100644 index 0000000..bd838c3 --- /dev/null +++ b/lmap.txt @@ -0,0 +1,254 @@ + +Allocating common symbols +Common symbol size file + +s_iY 0x4 lobj/vga_terminal.o +s_iX 0x4 lobj/vga_terminal.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x0000000000100000 . = 0x100000 + +.text 0x0000000000100000 0x3890 + *(.multiboot) + .multiboot 0x0000000000100000 0x30 lobj/loader.o + *(.text) + .text 0x0000000000100030 0x19 lobj/loader.o + 0x0000000000100030 _start + .text 0x0000000000100049 0xae4 lobj/lmain.o + 0x0000000000100073 page_map + 0x0000000000100281 elf64_load + 0x0000000000100454 identity_map + 0x00000000001004a4 map_loader + 0x000000000010055a gdt64_entry + 0x0000000000100600 gdt64_setup + 0x000000000010067b scan_memory + 0x0000000000100714 init_memory + 0x0000000000100919 lmain + *fill* 0x0000000000100b2d 0x3 + .text 0x0000000000100b30 0x7d lobj/x86io.o + 0x0000000000100b30 inb + 0x0000000000100b36 outb + 0x0000000000100b40 inw + 0x0000000000100b47 outw + 0x0000000000100b52 inl + 0x0000000000100b58 outl + 0x0000000000100b62 _insw + 0x0000000000100b79 _outsw + 0x0000000000100b90 _insw256 + 0x0000000000100ba1 _outsw256 + *fill* 0x0000000000100bad 0x3 + .text 0x0000000000100bb0 0x87 lobj/x86stdlib.o + 0x0000000000100bb0 kmemcpy + 0x0000000000100bd9 kmemcmp + 0x0000000000100c15 kmemzero + *fill* 0x0000000000100c37 0x9 + .text 0x0000000000100c40 0x34 lobj/x86gdt.o + 0x0000000000100c40 _gdt_install + .text 0x0000000000100c74 0xcdc lobj/stdlib.o + 0x0000000000100c74 iprint + 0x0000000000100d62 uprint + 0x0000000000100e10 xprint + 0x0000000000100eb2 lprint + 0x0000000000100f72 iprints + 0x0000000000101062 uprints + 0x0000000000101112 xprints + 0x00000000001011b6 kprint + 0x00000000001011e6 ksprintf + 0x00000000001013d3 kprintf + 0x0000000000101536 kgetch + 0x0000000000101540 kgetc + 0x000000000010154a kgets + 0x0000000000101719 katoi + 0x0000000000101741 katou + 0x00000000001017d4 ksscanf + .text 0x0000000000101950 0x133 lobj/string.o + 0x0000000000101950 kstrlen + 0x0000000000101978 kstrcpy + 0x000000000010199d kstrncpy + 0x00000000001019e4 kstrchr + 0x0000000000101a17 kstrrchr + 0x0000000000101a5e kstrncmp + .text 0x0000000000101a83 0x339 lobj/vga_terminal.o + 0x0000000000101a83 vga_terminal_init + 0x0000000000101a89 update_cursor + 0x0000000000101b08 cls + 0x0000000000101b4f printchar + 0x0000000000101cb9 shiftscreen + 0x0000000000101d52 chg_color + 0x0000000000101d6a print + 0x0000000000101d9a move_to_next_char + 0x0000000000101da0 move_to_next_line + 0x0000000000101da6 locate + .text 0x0000000000101dbc 0x1d7 lobj/gdt.o + 0x0000000000101dbc gdt_create + 0x0000000000101f1e gdt_install + *fill* 0x0000000000101f93 0x6d + .text 0x0000000000102000 0x102b lobj/x86enter64.o + 0x0000000000102000 x86enter64 + .text 0x000000000010302b 0xdd lobj/memory.o + 0x000000000010302b mbt_mmap_init + 0x00000000001030f4 ram_get_map + 0x00000000001030fe ram_get_size + .text 0x0000000000103108 0x1ed lobj/idt.o + 0x0000000000103108 idt_create + 0x00000000001031b0 idt_setup + 0x0000000000103220 idt_irq_by_addr + 0x000000000010325b idt_handler_entry + 0x00000000001032a1 idt_install + 0x00000000001032ee idt_enable_interrupts + .text 0x00000000001032f5 0x2d9 lobj/exceptions.o + 0x00000000001032fb _enter_rescue_mode + 0x0000000000103301 enter_rescue_mode + 0x0000000000103389 exception0 + 0x00000000001033a7 exception1 + 0x00000000001033c5 exception3 + 0x00000000001033e3 exception6 + 0x0000000000103401 exception7 + 0x000000000010341f exception8 + 0x000000000010343d exception10 + 0x000000000010345b exception11 + 0x0000000000103479 exception12 + 0x0000000000103497 exception13 + 0x00000000001034b5 exception14 + 0x00000000001034d3 install_exceptions + *fill* 0x00000000001035ce 0x2 + .text 0x00000000001035d0 0x1f lobj/x86idt.o + 0x00000000001035d0 _idt_install + *fill* 0x00000000001035ef 0x1 + .text 0x00000000001035f0 0x2a0 lobj/x86int.o + 0x00000000001035f0 _int0_handler + 0x0000000000103605 _int1_handler + 0x000000000010361a _int2_handler + 0x000000000010362f _int3_handler + 0x0000000000103644 _int4_handler + 0x0000000000103659 _int5_handler + 0x000000000010366e _int6_handler + 0x0000000000103683 _int7_handler + 0x0000000000103698 _int8_handler + 0x00000000001036ad _int9_handler + 0x00000000001036c2 _int10_handler + 0x00000000001036d7 _int11_handler + 0x00000000001036ec _int12_handler + 0x0000000000103701 _int13_handler + 0x0000000000103716 _int14_handler + 0x000000000010372b _int15_handler + 0x0000000000103740 _int16_handler + 0x0000000000103755 _int17_handler + 0x000000000010376a _int18_handler + 0x000000000010377f _int19_handler + 0x0000000000103794 _int20_handler + 0x00000000001037a9 _int21_handler + 0x00000000001037be _int22_handler + 0x00000000001037d3 _int23_handler + 0x00000000001037e8 _int24_handler + 0x00000000001037fd _int25_handler + 0x0000000000103812 _int26_handler + 0x0000000000103827 _int27_handler + 0x000000000010383c _int28_handler + 0x0000000000103851 _int29_handler + 0x0000000000103866 _int30_handler + 0x000000000010387b _int31_handler + +.iplt 0x0000000000103890 0x0 + .iplt 0x0000000000103890 0x0 lobj/loader.o + +.rodata 0x0000000000104000 0x312 + *(.rodata) + .rodata 0x0000000000104000 0x10e lobj/lmain.o + *fill* 0x000000000010410e 0x2 + .rodata 0x0000000000104110 0x68 lobj/stdlib.o + .rodata 0x0000000000104178 0x18 lobj/idt.o + .rodata 0x0000000000104190 0x182 lobj/exceptions.o + +.eh_frame 0x0000000000104314 0x99c + .eh_frame 0x0000000000104314 0x1b0 lobj/lmain.o + .eh_frame 0x00000000001044c4 0x268 lobj/stdlib.o + 0x280 (size before relaxing) + .eh_frame 0x000000000010472c 0xc0 lobj/string.o + 0xd8 (size before relaxing) + .eh_frame 0x00000000001047ec 0x148 lobj/vga_terminal.o + 0x160 (size before relaxing) + .eh_frame 0x0000000000104934 0x50 lobj/gdt.o + 0x68 (size before relaxing) + .eh_frame 0x0000000000104984 0x60 lobj/memory.o + 0x78 (size before relaxing) + .eh_frame 0x00000000001049e4 0xf0 lobj/idt.o + 0x108 (size before relaxing) + .eh_frame 0x0000000000104ad4 0x1dc lobj/exceptions.o + 0x1f4 (size before relaxing) + +.rel.dyn 0x0000000000104cb0 0x0 + .rel.iplt 0x0000000000104cb0 0x0 lobj/loader.o + .rel.text 0x0000000000104cb0 0x0 lobj/loader.o + +.data 0x0000000000105000 0x1016 + *(.data) + .data 0x0000000000105000 0x0 lobj/lmain.o + .data 0x0000000000105000 0x6 lobj/x86gdt.o + *fill* 0x0000000000105006 0x2 + .data 0x0000000000105008 0x4 lobj/stdlib.o + .data 0x000000000010500c 0x0 lobj/string.o + .data 0x000000000010500c 0x1 lobj/vga_terminal.o + .data 0x000000000010500d 0x0 lobj/gdt.o + *fill* 0x000000000010500d 0xff3 + .data 0x0000000000106000 0xe lobj/x86enter64.o + .data 0x000000000010600e 0x0 lobj/memory.o + .data 0x000000000010600e 0x0 lobj/idt.o + .data 0x000000000010600e 0x0 lobj/exceptions.o + *fill* 0x000000000010600e 0x2 + .data 0x0000000000106010 0x6 lobj/x86idt.o + +.igot.plt 0x0000000000106018 0x0 + .igot.plt 0x0000000000106018 0x0 lobj/loader.o + +.bss 0x0000000000107000 0x8d60 + *(COMMON) + COMMON 0x0000000000107000 0x8 lobj/vga_terminal.o + 0x0000000000107000 s_iY + 0x0000000000107004 s_iX + *(.bss) + *fill* 0x0000000000107008 0x8 + .bss 0x0000000000107010 0x8000 lobj/loader.o + .bss 0x000000000010f010 0x8 lobj/lmain.o + .bss 0x000000000010f018 0x0 lobj/stdlib.o + .bss 0x000000000010f018 0x0 lobj/string.o + .bss 0x000000000010f018 0x0 lobj/vga_terminal.o + .bss 0x000000000010f018 0x18 lobj/gdt.o + *fill* 0x000000000010f030 0x10 + .bss 0x000000000010f040 0x108 lobj/memory.o + *fill* 0x000000000010f148 0x18 + .bss 0x000000000010f160 0xc00 lobj/idt.o + .bss 0x000000000010fd60 0x0 lobj/exceptions.o +LOAD lobj/loader.o +LOAD lobj/lmain.o +LOAD lobj/x86io.o +LOAD lobj/x86stdlib.o +LOAD lobj/x86gdt.o +LOAD lobj/stdlib.o +LOAD lobj/string.o +LOAD lobj/vga_terminal.o +LOAD lobj/gdt.o +LOAD lobj/x86enter64.o +LOAD lobj/memory.o +LOAD lobj/idt.o +LOAD lobj/exceptions.o +LOAD lobj/x86idt.o +LOAD lobj/x86int.o +OUTPUT(os/loader.elf elf32-i386) + +.comment 0x0000000000000000 0x11 + .comment 0x0000000000000000 0x11 lobj/lmain.o + 0x12 (size before relaxing) + .comment 0x0000000000000011 0x12 lobj/stdlib.o + .comment 0x0000000000000011 0x12 lobj/string.o + .comment 0x0000000000000011 0x12 lobj/vga_terminal.o + .comment 0x0000000000000011 0x12 lobj/gdt.o + .comment 0x0000000000000011 0x12 lobj/memory.o + .comment 0x0000000000000011 0x12 lobj/idt.o + .comment 0x0000000000000011 0x12 lobj/exceptions.o diff --git a/loader.ld b/loader.ld new file mode 100644 index 0000000..01a17fa --- /dev/null +++ b/loader.ld @@ -0,0 +1,28 @@ +ENTRY(_start) + +SECTIONS +{ + . = 1M; + + .text BLOCK(4K) : ALIGN(4K) + { + *(.multiboot) + *(.text) + } + + .rodata BLOCK(4K) : ALIGN(4K) + { + *(.rodata) + } + + .data BLOCK(4K) : ALIGN(4K) + { + *(.data) + } + + .bss BLOCK(4K) : ALIGN(4K) + { + *(COMMON) + *(.bss) + } +} diff --git a/loader.sh b/loader.sh new file mode 100644 index 0000000..75443b3 --- /dev/null +++ b/loader.sh @@ -0,0 +1,2 @@ +#!/usr/bin/bash +make loader.elf && make mount && make update && make unmount diff --git a/loader/elf64.h b/loader/elf64.h new file mode 100644 index 0000000..06964b8 --- /dev/null +++ b/loader/elf64.h @@ -0,0 +1,46 @@ +#ifndef __ELF64_H +#define __ELF64_H + +#include "os.h" + +#define ELF64_P_EXEC (1<<0) + +typedef u64 Elf64_Addr; +typedef u64 Elf64_Off; +typedef u16 Elf64_Half; +typedef u32 Elf64_Word; +typedef i32 Elf64_Sword; +typedef u64 Elf64_Xword; +typedef i64 Elf64_Sxword; + +typedef struct +{ + unsigned char e_ident[16]; /* ELF identification */ + Elf64_Half e_type; /* Object file type */ + Elf64_Half e_machine; /* Machine type */ + Elf64_Word e_version; /* Object file version */ + Elf64_Addr e_entry; /* Entry point address */ + Elf64_Off e_phoff; /* Program header offset */ + Elf64_Off e_shoff; /* Section header offset */ + Elf64_Word e_flags; /* Processor-specific flags */ + Elf64_Half e_ehsize; /* ELF header size */ + Elf64_Half e_phentsize; /* Size of program header entry */ + Elf64_Half e_phnum; /* Number of program header entries */ + Elf64_Half e_shentsize; /* Size of section header entry */ + Elf64_Half e_shnum; /* Number of section header entries */ + Elf64_Half e_shstrndx; /* Section name string table index */ +} Elf64_Ehdr; + +typedef struct +{ + Elf64_Word p_type; /* Type of segment */ + Elf64_Word p_flags; /* Segment attributes */ + Elf64_Off p_offset; /* Offset in file */ + Elf64_Addr p_vaddr; /* Virtual address in memory */ + Elf64_Addr p_paddr; /* Reserved */ + Elf64_Xword p_filesz; /* Size of segment in file */ + Elf64_Xword p_memsz; /* Size of segment in memory */ + Elf64_Xword p_align; /* Alignment of segment */ +} Elf64_Phdr; + +#endif diff --git a/loader/exceptions.c b/loader/exceptions.c new file mode 100644 index 0000000..b1ef518 --- /dev/null +++ b/loader/exceptions.c @@ -0,0 +1,135 @@ +#include "exceptions.h" +#include "vga_terminal.h" +#include "stdlib.h" +#include "idt.h" + +/* We need to implement those excpetions: + * 0 Division by zero + * 3 Breakpoint + * 6 Invalid opcode + * 7 Device not available + * 8 Double Fault + * 10 Invalid TSS + * 11 Segment not present + * 12 Stack segment fault + * 13 General protection fault + * 14 Page fault + * + */ + +static void hang() +{ + //x86_print_regs(); + while(1){__asm("nop");} +} + +void _enter_rescue_mode() +{ +} + +void enter_rescue_mode(int skip_check) +{ + if(!skip_check) + { + chg_color(VGA_COLOR_LIGHT_CYAN); + kprintf("Rollback to terminal? (y - yes, n - no): "); + u8 ans = kgetc(); + if(ans == 'y' || skip_check) + { + kputc('\n'); + chg_color(VGA_COLOR_MAGENTA); + _enter_rescue_mode(); + } + chg_color(VGA_COLOR_MAGENTA); + } + else + { + cls(); + kprintf("Terminal reloaded\n"); + _enter_rescue_mode(); + } +} + +void exception0(int idx) +{ + kprintf("[Exception] Division by zero\n"); + hang(); +} + +void exception1(int idx) +{ + kprintf("[Exception] Debug Trap\n"); + hang(); +} + +void exception3(int idx) +{ + kprintf("[Exception] Debug\n"); + hang(); +} + +void exception6(int idx) +{ + kprintf("[Exception] Invalid opcode\n"); + hang(); +} + +void exception7(int idx) +{ + kprintf("[Exception] Device not available\n"); + hang(); +} + +void exception8(int idx) +{ + kprintf("[Exception] Double fault\n"); + hang(); +} + +void exception10(int idx) +{ + kprintf("[Exception] Invalid TSS\n"); + hang(); +} + +void exception11(int idx) +{ + kprintf("[Exception] Segment not present\n"); + hang(); +} + +void exception12(int idx) +{ + kprintf("[Exception] Stack segment fault\n"); + hang(); +} + +void exception13(int idx) +{ + kprintf("[Exception] General protection fault\n"); + hang(); +} + +void exception14(int idx) +{ + kprintf("[Exception] Page fault\n"); + //Do we want to rollback in command interpreter + + hang(); +} + +void install_exceptions() +{ + idt_setup(_int0_handler,exception0,0,IDT_TYPE_TRAP); + idt_setup(_int1_handler,exception1,1,IDT_TYPE_TRAP); + idt_setup(_int3_handler,exception3,3,IDT_TYPE_TRAP); + idt_setup(_int6_handler,exception6,6,IDT_TYPE_TRAP); + idt_setup(_int7_handler,exception7,7,IDT_TYPE_TRAP); + idt_setup(_int8_handler,exception8,8,IDT_TYPE_TRAP); + //idt_setup(_int9_handler,exception9,9,IDT_TYPE_TRAP); + idt_setup(_int10_handler,exception10,10,IDT_TYPE_TRAP); + idt_setup(_int11_handler,exception11,11,IDT_TYPE_TRAP); + idt_setup(_int12_handler,exception12,12,IDT_TYPE_TRAP); + idt_setup(_int13_handler,exception13,13,IDT_TYPE_TRAP); + idt_setup(_int14_handler,exception14,14,IDT_TYPE_TRAP); +} diff --git a/loader/exceptions.h b/loader/exceptions.h new file mode 100644 index 0000000..42f6e49 --- /dev/null +++ b/loader/exceptions.h @@ -0,0 +1,9 @@ +#ifndef __EXCEPTIONS_H +#define __EXCEPTIONS_H + +#include "os.h" + +void enter_rescue_mode(); +void install_exceptions(); + +#endif diff --git a/loader/gdt.c b/loader/gdt.c new file mode 100644 index 0000000..41c73ac --- /dev/null +++ b/loader/gdt.c @@ -0,0 +1,39 @@ +#include "gdt.h" + +static u64 gdt_table[GDT_MAX]; + +u64 gdt_create(u32 base,u32 limit,u32 type) +{ + u64 desc; + u8 access_byte; + u8 flags; + + access_byte = GDT_AB_PR|GDT_AB_S|GDT_AB_RW; + if(type == GDT_CODE) + { + access_byte |= GDT_AB_EX; + } + + flags = GDT_FLAGS_GR|GDT_FLAGS_SZ; + + desc = 0; + desc |= (u64)(limit & 0xFFFF) << 0; + desc |= (u64)(base & 0xFFFF) << 16; + desc |= (u64)((base>>16) & 0xFF) << 32; + desc |= (u64)(access_byte & 0xFF) << 40; + desc |= (u64)((limit>>16) & 0x0F) << 48; + desc |= (u64)(flags & 0x0F) << 52; + desc |= (u64)((base>>24) & 0xFF) << 56; + + return desc; +} + +void gdt_install() +{ + // Protected Mode Flat Model + gdt_table[GDT_NULL] = gdt_create(0,0,0); + gdt_table[GDT_CODE] = gdt_create(0,0x000FFFFF,GDT_CODE); + gdt_table[GDT_DATA] = gdt_create(0,0x000FFFFF,GDT_DATA); + + _gdt_install(gdt_table,sizeof(gdt_table)-1); +} diff --git a/loader/gdt.h b/loader/gdt.h new file mode 100644 index 0000000..40eff92 --- /dev/null +++ b/loader/gdt.h @@ -0,0 +1,30 @@ +#ifndef __GDT_H +#define __GDT_H + +#include "os.h" + +#define GDT_AB_PR (1<<7) +#define GDT_AB_PRIVL (1<<5) +#define GDT_AB_S (1<<4) +#define GDT_AB_EX (1<<3) +#define GDT_AB_DC (1<<2) +#define GDT_AB_RW (1<<1) +#define GDB_AB_AC (1<<0) + +#define GDT_FLAGS_GR (1<<3) +#define GDT_FLAGS_SZ (1<<2) +#define GDT_FLAGS_LONG (1<<1) + +enum { + GDT_NULL = 0, + GDT_CODE, + GDT_DATA, + GDT_MAX, +}; + +u64 gdt_create(u32 base,u32 limit,u32 type); +void gdt_install(); + +extern void _gdt_install(void* gdt,int size); + +#endif diff --git a/loader/idt.c b/loader/idt.c new file mode 100644 index 0000000..939c581 --- /dev/null +++ b/loader/idt.c @@ -0,0 +1,72 @@ +#include "idt.h" +#include "stdlib.h" + +static u64 idt_table[256]; //256 entries lol +static idt_handler idt_handlers[256]; + +u64 idt_create(void* handler,int type) +{ + u64 desc; + u32 addr; + + addr = (u32)handler; + + desc = 0; + desc |= (u64)(addr&0xFFFF) << 0; + desc |= (u64)(OS_CODE_SELECTOR&0xFFFF) << 16; + desc |= (u64)(type&0x0F) << 40; + desc |= (u64)(1) << 47; + desc |= (u64)(addr>>16) << 48; + + return desc; +} + +void idt_setup(void* int_handler,idt_handler handler,int idx,int type) +{ + idt_table[idx] = idt_create(int_handler,type); + idt_handlers[idx] = handler; +} + +static void* idt_get_addr(int i) +{ + return (void*)(((u32)((idt_table[i]>>48)<<16)|(u32)(idt_table[i]&0xFFFF))); +} + +int idt_irq_by_addr(void* addr) +{ + int i; + + for(i = 0; i < 256; i++) + if(idt_get_addr(i) == addr) return i; + + return -1; +} + +void idt_handler_entry(void* addr) +{ + int idx; + + idx = idt_irq_by_addr(addr); + if(idx == -1) + { + kprintf("No IDT entry some INT!\n"); + return; + } + + //Call handler + idt_handlers[idx](idx); +} + +void idt_install() +{ + int i; + + for(i = 0; i < 256; i++) idt_table[i] = 0; + + _idt_install(idt_table,sizeof(idt_table)-1); +} + +void idt_enable_interrupts() +{ + __asm("sti"); +} diff --git a/loader/idt.h b/loader/idt.h new file mode 100644 index 0000000..abfce5f --- /dev/null +++ b/loader/idt.h @@ -0,0 +1,60 @@ +#ifndef __IDT_H +#define __IDT_H + +#include "os.h" + +typedef enum { + IDT_TYPE_TASK = 5, + IDT_TYPE_16_INTERRUPT = 6, + IDT_TYPE_16_TRAP = 7, + IDT_TYPE_INTERRUPT = 14, + IDT_TYPE_TRAP = 15, +} idt_type; + +typedef void (*idt_handler)(int irq); + +u64 idt_create(void* handler,int type); +void idt_setup(void* int_handler,idt_handler handler,int idx,int type); +int idt_irq_by_addr(void* addr); + +void idt_handler_entry(void* addr); + +void idt_install(); +extern void _idt_install(void* idt,int limit); + +void idt_enable_interrupts(); + +extern void _int0_handler(); +extern void _int1_handler(); +extern void _int2_handler(); +extern void _int3_handler(); +extern void _int4_handler(); +extern void _int5_handler(); +extern void _int6_handler(); +extern void _int7_handler(); +extern void _int8_handler(); +extern void _int9_handler(); +extern void _int10_handler(); +extern void _int11_handler(); +extern void _int12_handler(); +extern void _int13_handler(); +extern void _int14_handler(); +extern void _int15_handler(); +extern void _int16_handler(); +extern void _int17_handler(); +extern void _int18_handler(); +extern void _int19_handler(); +extern void _int20_handler(); +extern void _int21_handler(); +extern void _int22_handler(); +extern void _int23_handler(); +extern void _int24_handler(); +extern void _int25_handler(); +extern void _int26_handler(); +extern void _int27_handler(); +extern void _int28_handler(); +extern void _int29_handler(); +extern void _int30_handler(); +extern void _int31_handler(); + +#endif diff --git a/loader/io.h b/loader/io.h new file mode 100644 index 0000000..a412717 --- /dev/null +++ b/loader/io.h @@ -0,0 +1,21 @@ +#ifndef __IO_H +#define __IO_H + +#include "os.h" + +extern u8 inb(u16 port); +extern void outb(u16 port,u8 data); + +extern u16 inw(u16 port); +extern void outw(u16 port,u16 data); + +extern u32 inl(u16 port); +extern void outl(u16 port,u32 data); + +extern void _insw(u16 port,u8* buffer,u32 count); +extern void _outsw(u16 port,u8* buffer,u32 count); + +extern void _insw256(u16 port,u8* buffer); +extern void _outsw256(u16 port,u8* buffer); + +#endif diff --git a/loader/lmain.c b/loader/lmain.c new file mode 100644 index 0000000..8fab84c --- /dev/null +++ b/loader/lmain.c @@ -0,0 +1,311 @@ +#include "multiboot.h" +#include "stdlib.h" +#include "string.h" +#include "io.h" +#include "gdt.h" +#include "idt.h" +#include "exceptions.h" +#include "memory.h" +#include "elf64.h" + +//1 table entry - 4KB, entire table - 2 MB +//1 dir entry - 2 MB, entire directory - 1 GB +//1 pdp entry - 1 GB, entire PDP dir - 512 GB +//1 PML4 entry - 512 GB, entire PML4 dir - 256 TB + +//kernel start 0b0000000000000000 000000000 001111111 000000000 000000000 000000000000 +//0000000000000000000000000001111111000000000000000000000000000000 +//kernel start 0x3FC0000000 + +//1111111111111111111111111111111111000000000000000000000000000000 + +#define OS_VIRT_KERNEL64 0x1FC0000000ULL + +#define PAGE_TABLE_RRESENT (1<<0) +#define PAGE_TABLE_READWRITE (1<<1) +#define PAGE_TABLE_FLAGS PAGE_TABLE_RRESENT|PAGE_TABLE_READWRITE + +#define OS_MAX_MEM_GBS 128 + +typedef struct { + u64 gdt_entry[8]; + + //Paging + u64* p_pml4; //[512] + u32 res1; + u64* p_pdp; //[OS_MAX_MEM_GBS] + u32 res2; + u64* p_dir; //[512*OS_MAX_MEM_GBS] + u32 res3; + u64* p_table; //[512*512*OS_MAX_MEM_GBS] + u32 res4; + + //Loader + u64 elf_ptr; + u64 paging_size; + u64 multiboot; + u64 gdt_limit; + + u64 kernel_phys_base; + u64 kernel_phys_page; + u64 kernel_phys_addr; + u64 kernel_virt_addr; +} __packed lmem_t; + +static lmem_t* lmem;// = (lmem_t*)OS_PHYS_LMEM; + +static u32 base_phys_addr; + +static u32 get_aligned_size(u32 size) +{ + return ((size>>12) + ((size&0xFFF) ? 1 : 0))<<12; +} + +void page_map(u64 virt,u64 phys,u64 flags) +{ + u32 table_idx,dir_idx,pdp_idx; + u64 addr; + + table_idx = (virt>>12) & 0x7FFFFFF; + dir_idx = table_idx>>9; + pdp_idx = dir_idx>>9; + + if(!(lmem->p_pdp[pdp_idx] & 3)) + { + addr = (u64)((u32)&lmem->p_dir[dir_idx]); + //kprintf("addr %l\n",&addr); + lmem->p_pdp[pdp_idx] = (addr&0xFFFFFFFFFFFFF000)|3; + } + + if(!(lmem->p_dir[dir_idx] & 3)) + { + addr = (u64)((u32)&lmem->p_table[table_idx]); + lmem->p_dir[dir_idx] = (addr&0xFFFFFFFFFFFFF000)|3; + } + + lmem->p_table[table_idx] = (phys&0xFFFFFFFFFFFFF000)|flags; +} + +void elf64_load(u32 base,u32 start,u32 end) +{ + u32 kernel_phys_addr = base; + //At this point we need write 64 bit kernel + Elf64_Ehdr* elf = (Elf64_Ehdr*)start; + Elf64_Phdr* ph = (Elf64_Phdr*)((u8*)start+elf->e_phoff); + lmem->elf_ptr = start; + + //Actually, out align will be always 4KB + kprintf("ELF entry %l\n",&elf->e_entry); + kprintf("Loading kernel at %x\n",kernel_phys_addr); + for(u32 i = 0; i < elf->e_phnum; i++) + { + u32 size = get_aligned_size((u32)ph->p_memsz); + u32 pflags = (ph->p_flags & ELF64_P_EXEC) ? PAGE_TABLE_RRESENT + : (PAGE_TABLE_RRESENT|PAGE_TABLE_READWRITE); + + kprintf("%l %l %l %l %u %u\n",&ph->p_vaddr,&ph->p_offset, + &ph->p_memsz,&ph->p_align,ph->p_type,ph->p_flags); + kmemzero((void*)kernel_phys_addr,size); + if(ph->p_type == 1) //PT_LOAD + { + kmemcpy((void*)kernel_phys_addr,(const void*) + (u32)(start+ph->p_offset),(u32)ph->p_filesz); + + //Map + for(u32 i = 0; i < size>>12; i++) + { + page_map(ph->p_vaddr+(u64)(i<<12), + (u64)kernel_phys_addr+(u64)(i<<12),pflags); + } + + kernel_phys_addr += size; + } + + ph++; + } +} + +void identity_map() +{ + u64 addr = 0; + for(u32 i = 0; i < 1024; i++) + { + page_map(addr,addr,PAGE_TABLE_RRESENT|PAGE_TABLE_READWRITE); + addr += 4096; + } +} + +/* +void map_kernel(u32 base,u32 size) +{ + u64 kernel_base = lmem->kernel_virt_addr; + u64 kernel_phys = (u64)base; + + kprintf("map_kernel %x %u\n",base,size); + for(u32 i = 0; i < (size>>12); i++) + { + page_map(kernel_base,kernel_phys); + kernel_base += 0x1000; + kernel_phys += 0x1000; + } +} +*/ + +void map_loader() +{ + page_map(lmem->kernel_phys_base,lmem->kernel_phys_base, + PAGE_TABLE_RRESENT|PAGE_TABLE_READWRITE); + u32 phys = lmem->kernel_phys_page; + for(u32 i = 0; i < (lmem->paging_size>>12); i++) + { + page_map(phys,phys,PAGE_TABLE_RRESENT|PAGE_TABLE_READWRITE); + phys += 0x1000; + } +} + +u64 gdt64_entry(u32 base,u32 limit,int is_code) +{ + u32 low,high; + u8 access_byte; + u8 flags; + + access_byte = GDT_AB_PR|GDT_AB_S|GDT_AB_RW; + if(is_code) access_byte |= GDT_AB_EX; + + flags = GDT_FLAGS_GR|GDT_FLAGS_LONG; + + low = ((base&0xFFFF)<<16)|(limit&0xFFFF); + high = (base>>16)&0xFF; + high |= (access_byte&0xFF)<<8; + high |= ((limit>>16)&0x0F)<<16; + high |= (flags&0x0F)<<20; + high |= ((base>>24)&0xFF)<<24; + + return ((u64)high<<32)|(u64)low; +} + +void gdt64_setup() +{ + lmem->gdt_entry[0] = 0; + lmem->gdt_entry[1] = gdt64_entry(0,0xFFFFFFFF,1); + lmem->gdt_entry[2] = gdt64_entry(0,0xFFFFFFFF,0); + + kprintf("CS %l DS %l\n",&lmem->gdt_entry[1],&lmem->gdt_entry[2]); +} + +void scan_memory(multiboot_hdr_t* hdr) +{ + mbt_mmap_init(hdr); + ram_map_t* map = ram_get_map(); + u32 i; + + for(i = 0; i < map->ram_pool_count; i++) + { + ram_pool_t* pool = &map->ram_pools[i]; + //We need at least 280 Megs + kprintf("scan_memory %x\t%x\n",pool->start,pool->end); + if((pool->end - pool->start) >= (280*1024*1024) + && pool->start != 0) + { + // Add space so we don't override loader + base_phys_addr = pool->start + 1048576UL; + break; + } + } +} + +// Initializes memory pointers +void init_memory() +{ + lmem = (lmem_t*)((u32)base_phys_addr); + kmemzero((void*)((u32)base_phys_addr),0x1000); + + //lmem->kernel_phys_page = (u64)(base_phys_addr + 0x1000); + lmem->kernel_phys_base = (u64)base_phys_addr; + lmem->kernel_phys_page = lmem->kernel_phys_base + 0x1000ULL; + lmem->kernel_virt_addr = OS_VIRT_KERNEL64; + + lmem->p_pml4 = (u64*)((u32)lmem->kernel_phys_page); + lmem->p_pdp = (u64*)((u8*)lmem->p_pml4 + + get_aligned_size(512*sizeof(u64))); + lmem->p_dir = (u64*)((u8*)lmem->p_pdp + + get_aligned_size(OS_MAX_MEM_GBS*sizeof(u64))); + lmem->p_table = (u64*)((u8*)lmem->p_dir + + get_aligned_size(512*OS_MAX_MEM_GBS*sizeof(u64))); + //kprintf("%x %x %x %x\n",lmem->p_pml4,lmem->p_pdp, + // lmem->p_dir,lmem->p_table); + + lmem->paging_size = ((u64)((u32)lmem->p_table) + - (u64)((u32)lmem->p_pml4)) + + (u64)(512*512*OS_MAX_MEM_GBS*sizeof(u64)); + kmemzero((void*)((u32)lmem->kernel_phys_page),lmem->paging_size); + + lmem->p_pml4[0] = (((u64)((u32)&lmem->p_pdp[0]))&0xFFFFFFFFFF000)|3; + //kprintf("page->pml4[0] %x\n",&lmem->p_pml4[0]); + + lmem->kernel_phys_addr = lmem->kernel_phys_page + + get_aligned_size(lmem->paging_size) + 0x1000ULL; +} + +extern void x86enter64(u32 base); + +void lmain(multiboot_hdr_t* hdr,u32 magic) +{ + outb(0x21,0xFF); + outb(0xA1,0xFF); + + gdt_install(); + idt_install(); + + chg_color(VGA_COLOR_MAGENTA); + kprintf("PM32 LENOCHKA LOADER\n"); + kprintf("hdr %p magic %x\n",hdr,magic); + + scan_memory(hdr); + init_memory(); + lmem->multiboot = (u64)hdr; + + install_exceptions(); + //idt_enable_interrupts(); + + multiboot_module_t* mod = (multiboot_module_t*)hdr->mods_addr; + for(u32 i = 0; i < hdr->mods_count; i++) + { + kprintf("%s\t%p\t%p\t%s\n",(const char*)mod[i].cmd_line, + mod[i].mod_start,mod[i].mod_end, + mod[i].mod_start); + if(!kstrncmp((const char*)mod[i].cmd_line,"LENOCHKA")) + break; + } + kprintf("\nLENOCHKA MOD %p\n",mod); + kprintf("page tables size %x\n",lmem->paging_size); + + elf64_load((u32)lmem->kernel_phys_addr, + mod->mod_start,mod->mod_end); + identity_map(); + map_loader(); + //map_kernel((u32)lmem->kernel_phys_addr,size); + gdt64_setup(); + + kprintf("entry %l %x\n",&((Elf64_Ehdr*)((u32)lmem->elf_ptr))->e_entry); + + kprintf("base_phys_addr %x\nkernel_phys_page %l\nkernel_phys_addr %l\n", + base_phys_addr,&lmem->kernel_phys_page,&lmem->kernel_phys_addr); + + /*kprintf("lmem->p_pml4 %x\n",lmem->p_pml4); + kprintf("lmem->p_pdp %x\n",lmem->p_pdp); + kprintf("lmem->p_dir %x\n",lmem->p_dir); + kprintf("lmem->p_table %x\n",lmem->p_table); + kprintf("lmem->kernel_phys_base %l\n",&lmem->kernel_phys_base); + kprintf("lmem->kernel_phys_page %l\n",&lmem->kernel_phys_page); + kprintf("lmem->kernel_phys_addr %l\n",&lmem->kernel_phys_addr); + kprintf("lmem->kernel_virt_addr %l\n",&lmem->kernel_virt_addr);*/ + + kprintf("lmem_t %u\n",sizeof(lmem_t)); + + //kprintf("%u\n",(u32)(&((Elf64_Ehdr*)lmem->elf_ptr)->e_entry)-(u32)lmem->elf_ptr); + + //ENTER + //while(1){__asm("hlt");} + x86enter64(base_phys_addr); +} diff --git a/loader/loader.asm b/loader/loader.asm new file mode 100644 index 0000000..16d3ddd --- /dev/null +++ b/loader/loader.asm @@ -0,0 +1,43 @@ +MBALIGN equ 1 << 0 +MEMINFO equ 1 << 1 +MEMVIDEO equ 1 << 2 + +FLAGS equ MBALIGN|MEMINFO|MEMVIDEO +MAGIC equ 0x1BADB002 +CHECKSUM equ -(MAGIC+FLAGS) + +section .multiboot +align 4 + dd MAGIC + dd FLAGS + dd CHECKSUM + times 5 dd 0 + mode_type dd 0 + width dd 0 + height dd 0 + depth dd 0 + +section .bss +align 16 +stack_bottom: +resb 32768 ; 32 KiB +stack_top: + +section .text +global _start:function (_start.end - _start) +_start: + mov esp,stack_bottom + add esp,0x7FFC ; 4 byte align + + push eax + push ebx + + extern lmain + call lmain + add esp,8 + + cli +.hang: + hlt + jmp .hang +.end: diff --git a/loader/memory.c b/loader/memory.c new file mode 100644 index 0000000..8ce0e9d --- /dev/null +++ b/loader/memory.c @@ -0,0 +1,36 @@ +#include "memory.h" + +static ram_map_t s_RAMmap; + +void mbt_mmap_init(multiboot_hdr_t* mbt) +{ + s_RAMmap.ram_total_size = 0; + s_RAMmap.ram_pool_count = 0; + multiboot_mmap_t* mmap = (multiboot_mmap_t*)mbt->mmap_addr; + while((u32)mmap < (u32)mbt->mmap_addr + mbt->mmap_length) + { + if(mmap->type == 1) + { + ram_pool_t* pool; + if(s_RAMmap.ram_pool_count == MAX_RAM_POOLS) + break; + pool = &s_RAMmap.ram_pools[s_RAMmap.ram_pool_count++]; + + pool->start = (u32)mmap->base_addr; + pool->end = pool->start + (u32)mmap->length; + + s_RAMmap.ram_total_size += mmap->length; + } + mmap = (multiboot_mmap_t*)((u32)mmap + mmap->size + 4); + } +} + +ram_map_t* ram_get_map() +{ + return &s_RAMmap; +} + +u32 ram_get_size() +{ + return s_RAMmap.ram_total_size; +} diff --git a/loader/memory.h b/loader/memory.h new file mode 100644 index 0000000..96a67a2 --- /dev/null +++ b/loader/memory.h @@ -0,0 +1,25 @@ +#ifndef __MEMORY_H +#define __MEMORY_H + +#include "os.h" +#include "multiboot.h" + +#define MAX_RAM_POOLS 32 + +typedef struct { + u32 __phys start; + u32 __phys end; +} ram_pool_t; + +typedef struct { + u32 ram_total_size; + u32 ram_pool_count; + ram_pool_t ram_pools[MAX_RAM_POOLS]; +} ram_map_t; + +//It must be called before first 1 MB got unpaged +void mbt_mmap_init(multiboot_hdr_t* mbt); +ram_map_t* ram_get_map(); +u32 ram_get_size(); + +#endif diff --git a/loader/multiboot.h b/loader/multiboot.h new file mode 100644 index 0000000..97979a6 --- /dev/null +++ b/loader/multiboot.h @@ -0,0 +1,66 @@ +#ifndef __MULTIBOOT_H +#define __MULTIBOOT_H + +#include "os.h" + +typedef struct { + u32 flags; + + u32 mem_lower; + u32 mem_upper; + + u32 boot_device; + + u32 cmd_line; + + u32 mods_count; + u32 mods_addr; + + u32 syms[4]; + + u32 mmap_length; + u32 mmap_addr; + + u32 drives_length; + u32 drives_addr; + + u32 config_table; + + u32 boot_loader_name; + + u32 apm_table; + + u32 vbe_control_info; + u32 vbe_mode_info; + u32 vbe_mode; + u32 vbe_interface_seg; + u32 vbe_interface_off; + u32 vbe_interface_len; + + u32 framebuffer_addr; + u32 framebuffer_pitch; + u32 framebuffer_width; + u32 framebuffer_height; + u8 framebuffer_bpp; + u8 color_info[5]; + +} __attribute__((packed)) multiboot_hdr_t; + +#define MBT_MMAP_TYPE_RAM 1 + +typedef struct { + u32 size; + u64 base_addr; + u64 length; + u32 type; +} __packed multiboot_mmap_t; + +typedef struct { + u32 mod_start; + u32 mod_end; + + u32 cmd_line; + u32 pad; +} __packed multiboot_module_t; + +#endif diff --git a/loader/os.h b/loader/os.h new file mode 100644 index 0000000..b27c21c --- /dev/null +++ b/loader/os.h @@ -0,0 +1,36 @@ +#ifndef __OS_H +#define __OS_H + +#define OS_NULL_SELECTOR 0x00 +#define OS_CODE_SELECTOR 0x08 +#define OS_DATA_SELECTOR 0x10 + +#define OS_PHYS_MAPPING 0x00100000 +#define OS_VIRT_MAPPING 0xC0000000 +#define OS_PM86_MEM_SIZE_4K (1024*1024) +#define OS_PHYS_ADDR(virt) (virt-OS_VIRT_MAPPING) + +#define OS_VIDEO_BUFFER 0x000B8000 +#define OS_PROG_MAPPING 0x01000000 + +#define __packed __attribute__((packed)) +#define __align(N) __attribute__((aligned(N))) + +#define __phys +#define __virt + +#define NULL (void*)0 + +typedef unsigned char u8; +typedef unsigned short u16; +typedef unsigned long u32; +typedef unsigned long long u64; + +typedef char i8; +typedef short i16; +typedef long i32; +typedef long long i64; + +typedef unsigned long size_t; + +#endif diff --git a/loader/stdlib.c b/loader/stdlib.c new file mode 100644 index 0000000..433b389 --- /dev/null +++ b/loader/stdlib.c @@ -0,0 +1,419 @@ +#include "stdlib.h" +#include "vga_terminal.h" +//#include "keyboard.h" +#include "string.h" + +void iprint(int number) +{ + //4294967295 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + s--; + while(s >= num) printchar(*s--); +} + +void uprint(u32 number) +{ + //4294967295 + char num[32]; + char* s = num; + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + s--; + while(s >= num) printchar(*s--); +} + +static char* xnums = "0123456789ABCDEF"; + +void xprint(u32 number) +{ + //FFFFFFFF + char num[16]; + char* s = num; + + while(s-num < 7) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + s--; + while(s >= num) printchar(*s--); +} + +void lprint(u64 number) +{ + //FFFFFFFFFFFFFFFF + char num[32]; + char* s = num; + + while(s-num < 15) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + s--; + while(s >= num) printchar(*s--); +} + +void iprints(char* outs,int number) +{ + //4294967295 + char num[32]; + char* s = num; + int uns = 0; + + if(number < 0) + { + uns = 1; + number *= -1; + } + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + if(uns) *s++ = '-'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void uprints(char* outs,u32 number) +{ + //4294967295 + char num[32]; + char* s = num; + while(number > 10) + { + *s++ = '0'+(number%10); + number/=10; + } + *s++ = '0'+(number%10); + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void xprints(char* outs,u32 number) +{ + //FFFFFFFF + char num[16]; + char* s = num; + + while(s-num < 7) + { + *s++ = xnums[(number%16)]; + number/=16; + } + *s++ = xnums[(number%16)]; + *s++ = 'x'; + *s++ = '0'; + while(s >= num) *outs++ = *--s; + *outs++ = '\0'; +} + +void kprint(char* str) +{ + while(*str) printchar(*str++); +} + +void ksprintf(char* dst,u32 maxLen,const char* fmt,...) +{ + u32* argp; + char* cur,*end,c; + char numbuf[64]; + + argp = ((u32*)&fmt)+1; + cur = dst; + end = dst+maxLen; + while((c = *fmt++) && cur != end) + { + if(c == '%') + { + char* p = numbuf; + c = *fmt++; + if(c == 'd') + { + iprints(numbuf,*(int*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'u') + { + uprints(numbuf,*(int*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 'p' || c == 'x') + { + xprints(numbuf,*(u32*)argp++); + while((*cur++ = *p++)) + if(cur == end) break; + cur--; + } + else if(c == 's') + { + const char* str = *(const char**)argp++; + while((*cur++ = *str++)) + if(cur == end) break; + cur--; + } + else if(c == '%') + { + if(cur != end) *cur++ = '%'; + } + } + else + { + if(cur == end) break; + *cur++ = c; + } + } + if(cur == end) + *(end-1) = '\0'; +} + +void kprintf(const char* fmt,...) +{ + u32* argp; + char c; + + argp = ((u32*)&fmt)+1; + while((c = *fmt++)) + { + if(c == '%') + { + c = *fmt++; + switch(c) + { + case 'd': iprint(*(int*)argp++); break; + case 'u': uprint(*(u32*)argp++); break; + case 'p': + case 'x': xprint(*(u32*)argp++); break; + case 'l': lprint(*(u64*)(*(u32*)argp++)); break; + case 'c': printchar((char)(*(u32*)argp++)); break; + case 's': kprint((char*)(*(u32*)argp++)); break; + case '%': printchar('%'); break; + } + } + else printchar(c); + } +} + + +u8 kgetch() +{ + /*u8 key; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + key = keyboard_scan_code(); + keyboard_reset_irq1_vars(); + return key;*/ + return 0; +} + +u8 kgetc() +{ + /*u8 ascii; + while(keyboard_scan_code() == 0) + {__asm("hlt");} + ascii = keyboard_ascii(); + keyboard_reset_irq1_vars(); + return ascii;*/ + return 0; +} + +void kgets(char* buf,size_t max) +{ + u8 ch; + char* ptr,*end; + + ptr = buf; + end = buf + max; + *ptr = '\0'; + while((ch = kgetc()) != '\n') + { + if(ch == '\b') + { + if(ptr != buf) *ptr-- = '\0'; + printchar('\b'); + } + else if(ptr != end-1) + { + *ptr++ = ch; + printchar(ch); + } + } + printchar('\n'); + if(ptr == end) ptr--; + *ptr = '\0'; +} + +//static char* katoi_base = "0123456789ABCDEF"; + +static i32 _katoi(char* str,int base,u32 len) +{ + char* end; + i32 i,pow; + i32 num; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == '-') + { + num *= -1; + break; + } + else if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == xnums[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +static u32 _katou(char* str,int base,u32 len) +{ + char* end; + u32 i,pow; + u32 num; + + i = 0; + num = 0; + pow = 1; + end = str+len-1; + while(1) + { + if(*end == 'x') break; + for(i = 0; i < base; i++) + if(*end == xnums[i]) break; + num += i*pow; + pow *= base; + + if(end == str) break; + end--; + } + + return num; +} + +i32 katoi(char* str,int base) +{ + return _katoi(str,base,kstrlen(str)); +} + +u32 katou(char* str,int base) +{ + return _katou(str,base,kstrlen(str)); +} + +static u32 _kstrchr_delim(char* buf,u32 base) +{ + u32 i,len; + char c; + + len = 0; + while(*buf) + { + c = *buf; + for(i = 0; i < base; i++) + { + if(c == xnums[i]) break; + } + if(i == base && c != '-') break; + buf++; + len++; + } + return len; +} + +void ksscanf(char* buf,char* fmt,...) +{ + u32* argp; + u32 len,maxLen; + union { + i32* iptr; + u32* uptr; + char* sptr; + } u; + char c,*stk; + + argp = ((u32*)&fmt)+1; + while((c = *fmt)) + { + //kprintf("%c %c\n",c,*buf); + if(c == '%') + { + c = *++fmt; + switch(c) + { + case 'u': + case 'd': + len = _kstrchr_delim(buf,10); + u.iptr = (i32*)(*(u32*)argp++); + *u.iptr = _katoi(buf,10,len); + buf += len; //we decrement because it will +1 + break; + case 'p': + case 'x': + buf += 2; //Skip 0x part + len = _kstrchr_delim(buf,16); + u.iptr = (i32*)(*(u32*)argp++); + *u.iptr = _katoi(buf,16,len); + buf += len; //we decrement because it will +1 + break; + case 's': + stk = kstrchr(buf,*(fmt+1)); + u.sptr = (char*)(*(u32*)argp++); + maxLen = (*(u32*)argp++); + if(!stk) + { + u.sptr[0] = '\0'; + break; + } + len = (u32)stk-(u32)buf; + if(len > maxLen) len = maxLen; + kmemcpy(u.sptr,buf,len); + u.sptr[len] = '\0'; + buf += len; + break; + } + + } else buf++; + fmt++; + } +} diff --git a/loader/stdlib.h b/loader/stdlib.h new file mode 100644 index 0000000..29fec14 --- /dev/null +++ b/loader/stdlib.h @@ -0,0 +1,44 @@ +#ifndef __STDLIB_H +#define __STDLIB_H + +#include "os.h" +#include "vga_terminal.h" + +//stdlib.h + +extern void kmemcpy(void* dst,const void* src,u32 len); +extern int kmemcmp(const void* dst,const void* src,u32 len); +extern void kmemzero(void* dst,u32 len); + +//termlib.h +#define kputc printchar + +void iprint(int number); +void uprint(u32 number); +void xprint(u32 number); + +void iprints(char* str,int number); +void uprints(char* str,u32 number); +void xprints(char* str,u32 number); + +void kprint(char* str); + +void ksprintf(char* dst,u32 maxLen,const char* fmt,...); +void kprintf(const char* fmt,...); + +//termio.h + +u8 kgetch(); //Wait for key scan code +u8 kgetc(); //Wait for ASCII character + +void kgets(char* buf,size_t max); + +i32 katoi(char* str,int base); + +void ksscanf(char* buf,char* fmt,...); + +#define _debug() \ + kprintf("_debug at %s:%u\n",__FILE__,__LINE__); \ + kgetc(); + +#endif diff --git a/loader/string.c b/loader/string.c new file mode 100644 index 0000000..9c439cf --- /dev/null +++ b/loader/string.c @@ -0,0 +1,49 @@ +#include "string.h" +#include "stdlib.h" + +u32 kstrlen(const char* str) +{ + u32 len = 0; + while(*str++) len++; + return len; +} + +void kstrcpy(char* dst,const char* src) +{ + while((*dst++ = *src++)){} +} + +void kstrncpy(char* dst,const char* src,u32 maxLen) +{ + maxLen=-1; + while((*dst++ = *src++) && --maxLen){} + if(!maxLen) dst[maxLen] = '\0'; +} + +char* kstrchr(char* src,char chr) +{ + while(*src) + { + if(*src == chr) return src; + src++; + } + return NULL; +} + +char* kstrrchr(char* src,char chr) +{ + char* ptr; + + ptr = src+kstrlen(src)-1; + while(ptr != src) + { + if(*ptr == chr) return ptr; + ptr--; + } + return NULL; +} + +int kstrncmp(const char* haystack,char* needle) +{ + return kmemcmp(haystack,needle,kstrlen(needle)); +} diff --git a/loader/string.h b/loader/string.h new file mode 100644 index 0000000..25af14f --- /dev/null +++ b/loader/string.h @@ -0,0 +1,16 @@ +#ifndef __STRING_H +#define __STRING_H + +#include "os.h" + +u32 kstrlen(const char* str); + +void kstrcpy(char* dst,const char* src); +void kstrncpy(char* dst,const char* src,u32 maxLen); + +char* kstrchr(char* src,char chr); +char* kstrrchr(char* src,char chr); + +int kstrncmp(const char* haystack,char* needle); + +#endif diff --git a/loader/vga_terminal.c b/loader/vga_terminal.c new file mode 100644 index 0000000..fe23ab2 --- /dev/null +++ b/loader/vga_terminal.c @@ -0,0 +1,107 @@ +#include "vga_terminal.h" +#include "os.h" +#include "io.h" + +static u8 s_cCurAttr = DEFAULT_COLOR; +u32 s_iX; +u32 s_iY; + +void vga_terminal_init() +{ + //Map 0xB8000 to 0xC100B8000 + //page_map(OS_VIDEO_BUFFER,0x000B8000,80*25,PAGE_TABLE_READWRITE); + +} + +void update_cursor() +{ + u16 pos; + pos = s_iY * 80 + s_iX; + + outb(0x3D4, 0x0F); + outb(0x3D5, (u8) (pos & 0xFF)); + outb(0x3D4, 0x0E); + outb(0x3D5, (u8) ((pos >> 8) & 0xFF)); +} + +void cls() +{ + u32 i; + for(i = 0; i < SCR_CHARS*SCR_LINES; i++) + SCR_TEXT_BUF[i] = SCR_ENTRY(0,DEFAULT_COLOR); + s_iX = s_iY = 0; + update_cursor(); +} + +void shiftscreen(); + +void printchar(unsigned char c) +{ + if(c == '\n' || c == '\r' || c == '\t' || c == '\b') // Control characters + { + if(c == '\r') s_iX = 0; + else if(c == '\n') s_iX = SCR_CHARS; + else if(c == '\t') s_iX = (s_iX + 8) & ~7; + else if(c == '\b') + { + if(s_iX) s_iX--; + else if(s_iY) + { + s_iY--; + s_iX = SCR_CHARS-1; + } + //Remove character + SCR_TEXT_BUF[s_iY*SCR_CHARS+s_iX] = SCR_ENTRY(0,s_cCurAttr); + } + } + else // Text characters + SCR_TEXT_BUF[s_iY*SCR_CHARS+s_iX++] = SCR_ENTRY(c,s_cCurAttr); + + if(s_iX > SCR_CHARS-1) + { + s_iX = 0; + if(s_iY < SCR_LINES-1) + s_iY++; + else shiftscreen(); + } + + update_cursor(); +} + +void shiftscreen() +{ + //cls(); + u32 x,y; + for(y = 1; y < SCR_LINES; y++) + { + for(x = 0; x < SCR_CHARS; x++) + { + SCR_TEXT_BUF[(y-1)*SCR_CHARS+x] + = SCR_TEXT_BUF[y*SCR_CHARS+x]; + } + } + + for(x = 0; x < SCR_CHARS; x++) + { + SCR_TEXT_BUF[(SCR_LINES-1)*SCR_CHARS+x] + = SCR_ENTRY(0,DEFAULT_COLOR); + } +} + +void chg_color(u8 color) +{ + s_cCurAttr = color; +} + +void print(const char* str) +{ + while(*str) printchar(*str++); +} + +void move_to_next_char(){} +void move_to_next_line(){} +void locate(int h, int w) +{ + s_iX = w; + s_iY = h; +} diff --git a/loader/vga_terminal.h b/loader/vga_terminal.h new file mode 100644 index 0000000..58267f2 --- /dev/null +++ b/loader/vga_terminal.h @@ -0,0 +1,67 @@ +#ifndef __VGA_TERMINAL_H +#define __VGA_TERMINAL_H + +#include "os.h" + +#define SCR_CHARS 80 +#define SCR_LINES 25 +//#define SCR_TEXT_BUF ((u16*)0xB8000) +#define SCR_TEXT_BUF ((u16*)OS_VIDEO_BUFFER) +#define SCR_ENTRY(ch,col) ((col<<8)|ch) + +#define BLACK 0 +#define BLUE 1 +#define GREEN 2 +#define CYAN 2 +#define RED 4 +#define GRAY 8 +#define WHITE 15 +#define MAGENTA 13 + +#define BG_BLACK (0<<4) +#define BG_BLUE (1<<4) +#define BG_GREEN (2<<4) +#define BG_RED (4<<4) +#define BG_GRAY (8<<4) +#define BG_WHITE (15<<4) + +#define DEFAULT_COLOR BG_BLACK|7 + +enum vga_color { + VGA_COLOR_BLACK = 0, + VGA_COLOR_BLUE = 1, + VGA_COLOR_GREEN = 2, + VGA_COLOR_CYAN = 3, + VGA_COLOR_RED = 4, + VGA_COLOR_MAGENTA = 5, + VGA_COLOR_BROWN = 6, + VGA_COLOR_LIGHT_GREY = 7, + VGA_COLOR_DARK_GREY = 8, + VGA_COLOR_LIGHT_BLUE = 9, + VGA_COLOR_LIGHT_GREEN = 10, + VGA_COLOR_LIGHT_CYAN = 11, + VGA_COLOR_LIGHT_RED = 12, + VGA_COLOR_LIGHT_MAGENTA = 13, + VGA_COLOR_LIGHT_BROWN = 14, + VGA_COLOR_WHITE = 15, +}; + +static inline u8 vga_entry_color(enum vga_color fg, enum vga_color bg) { + return fg | bg << 4; +} + +static inline u16 vga_entry(unsigned char uc, u8 color) { + return (u16) uc | (u16) color << 8; +} + +void vga_terminal_init(); + +void cls(); +void shiftscreen(); +void printchar(unsigned char c); +void chg_color(u8 color); +void print(const char* str); +void locate(int h, int w); + + +#endif diff --git a/loader/x86debug.asm b/loader/x86debug.asm new file mode 100644 index 0000000..e4416dc --- /dev/null +++ b/loader/x86debug.asm @@ -0,0 +1,12 @@ +section .text +global x86set_wr_breakpoint + +x86set_wr_breakpoint: + mov eax,[esp+4] + ; Setup debug registers + mov dr0,eax + ;10 01 00000000000000 10 + mov eax,11010000000000000010b + mov dr7,eax ; 1st global breakpoint + + ret diff --git a/loader/x86enter64.asm b/loader/x86enter64.asm new file mode 100644 index 0000000..794fccf --- /dev/null +++ b/loader/x86enter64.asm @@ -0,0 +1,75 @@ +extern gdt_ptr + +section .data +align 4096 +gdt_limit dw 64 +gdt_base dd 0 + +base_phys dq 0 + +section .text +global x86enter64 + +x86enter64: + ; [esp+4] - base phys addr + mov ebx,[esp+4] + mov dword [base_phys],ebx + xor eax,eax + mov dword [base_phys+4],eax + + ;cli + ; Disable paging + mov eax,cr0 + and eax,0x7FFFFFFF + mov cr0,eax + ; Enable PAE + mov eax,cr4 + or eax,(1<<5) + mov cr4,eax + ; Setup CR3 + mov eax,dword [base_phys] + add eax,0x1000 + mov cr3,eax + ; Enter Long Mode + mov ecx,0xC0000080 + rdmsr + or eax,(1<<8) + wrmsr + ; Enable paging + mov eax,cr0 + or eax,0x80000000 + mov cr0,eax + ; Enable Write-Protect + mov eax,cr0 + or eax,(1<<16) + mov cr0,eax + ; Setup GDT + mov eax,dword [base_phys] + mov dword [gdt_base],eax + + lgdt [gdt_limit] + ; Jump! + + jmp 0x08:_kernel_64 + + ;db 0xEA + ;dd _kernel_64 + ;dw 8 +use64 +align 4096 +_kernel_64: + mov ax,0x10 + mov ds,ax + mov ss,ax + mov es,ax + mov fs,ax + mov gs,ax + + mov rax,base_phys + mov rax,qword [rax] + mov rdi,rax + add rax,96 + mov rax,qword [rax] ; ELF ptr + mov rax,qword [rax+24] + + jmp rax diff --git a/loader/x86gdt.asm b/loader/x86gdt.asm new file mode 100644 index 0000000..05c98fc --- /dev/null +++ b/loader/x86gdt.asm @@ -0,0 +1,36 @@ +section .text +global _gdt_install +_gdt_install: + push ebp + mov ebp,esp + + ; [ebp+0x08] = GDT table ptr + ; [ebp+0x0C] = GDT limit + mov eax,dword [ebp+0x08] + mov dword [gdt_base],eax + mov eax,dword [ebp+0x0C] + mov word [gdt_limit],ax + + lgdt [x86gdt] + ; 0x00 - NULL desc + ; 0x08 - CODE desc + ; 0x10 - DATA desc + + ; Reloads segments + jmp 0x08:reload_cs +reload_cs: + mov ax,0x10 + mov ds,ax + mov es,ax + mov ss,ax + mov gs,ax + mov fs,ax + + mov esp,ebp + pop ebp + ret + +section .data +x86gdt: + gdt_limit dw 0 + gdt_base dd 0 diff --git a/loader/x86idt.asm b/loader/x86idt.asm new file mode 100644 index 0000000..bf873d7 --- /dev/null +++ b/loader/x86idt.asm @@ -0,0 +1,23 @@ +section .text +global _idt_install +_idt_install: + push ebp + mov ebp,esp + + ; [ebp+0x08] = base + ; [ebp+0x0C] = limit + mov eax,dword [ebp+0x08] + mov dword [idt_base],eax + mov eax,dword [ebp+0x0C] + mov word [idt_limit],ax + + lidt [idt_desc] + + mov esp,ebp + pop ebp + ret + +section .data +idt_desc: + idt_limit dw 0 + idt_base dd 0 diff --git a/loader/x86int.asm b/loader/x86int.asm new file mode 100644 index 0000000..90de371 --- /dev/null +++ b/loader/x86int.asm @@ -0,0 +1,483 @@ +section .text + +global _int0_handler +global _int1_handler +global _int2_handler +global _int3_handler +global _int4_handler +global _int5_handler +global _int6_handler +global _int7_handler +global _int8_handler +global _int9_handler +global _int10_handler +global _int11_handler +global _int12_handler +global _int13_handler +global _int14_handler +global _int15_handler +global _int16_handler +global _int17_handler +global _int18_handler +global _int19_handler +global _int20_handler +global _int21_handler +global _int22_handler +global _int23_handler +global _int24_handler +global _int25_handler +global _int26_handler +global _int27_handler +global _int28_handler +global _int29_handler +global _int30_handler +global _int31_handler +extern idt_handler_entry + +_int0_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int1_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int2_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int3_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int4_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int5_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int6_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int7_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int8_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int9_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int10_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int11_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int12_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int13_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int14_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int15_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int16_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int17_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int18_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int19_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int20_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int21_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int22_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int23_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int24_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int25_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int26_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int27_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int28_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int29_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int30_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd + +_int31_handler: + pushad + call near .fun1 +.fun1: + pop eax + sub eax,6 ; call instruction size + + push eax + call idt_handler_entry + add esp,4 + + popad + iretd diff --git a/loader/x86io.asm b/loader/x86io.asm new file mode 100644 index 0000000..cf397c7 --- /dev/null +++ b/loader/x86io.asm @@ -0,0 +1,112 @@ +section .text +global inb +global outb +global inw +global outw +global inl +global outl +global _insw +global _outsw +global _insw256 +global _outsw256 + +inb: + mov edx,dword [esp+0x04] + in al,dx + + ret + +outb: + mov edx,dword [esp+0x04] + mov eax,dword [esp+0x08] + out dx,al + ret + +inw: + mov edx,dword [esp+0x04] + in ax,dx + ret + +outw: + mov edx,dword [esp+0x04] + mov eax,dword [esp+0x08] + out dx,ax + ret + +inl: + mov edx,dword [esp+0x04] + in eax,dx + ret + +outl: + mov edx,dword [esp+0x04] + mov eax,dword [esp+0x08] + out dx,eax + ret + +_insw: + push ebp + mov ebp,esp + + ; [ebp+0x08] - port + ; [ebp+0x0C] - buffer + ; [ebp+0x10] - count + + push edi + push ecx + + mov edx,dword [ebp+0x08] + mov edi,dword [ebp+0x0C] + mov ecx,dword [ebp+0x10] + + rep insw + + pop ecx + pop edi + + mov esp,ebp + pop ebp + ret + +_outsw: + push ebp + mov ebp,esp + + ; [ebp+0x08] - port + ; [ebp+0x0C] - buffer + ; [ebp+0x10] - count + + push esi + push ecx + + mov edx,dword [ebp+0x08] + mov esi,dword [ebp+0x0C] + mov ecx,dword [ebp+0x10] + + rep outsw + + pop ecx + pop esi + + mov esp,ebp + pop ebp + ret + +_insw256: + push edi + push ecx + mov edi,dword [esp+0x0C] + mov ecx,256 + rep insw + pop ecx + pop edi + ret + +_outsw256: + push esi + push ecx + mov esi,dword [esp+0x0C] + rep outsw + pop ecx + pop edi + ret diff --git a/loader/x86stdlib.asm b/loader/x86stdlib.asm new file mode 100644 index 0000000..7536ef1 --- /dev/null +++ b/loader/x86stdlib.asm @@ -0,0 +1,124 @@ +section .text +global kmemcpy +global kmemcmp +global kmemzero + +kmemcpy: + push ebp + mov ebp,esp + + ; [ebp+0x08] = dst + ; [ebp+0x0C] = src + ; [ebp+0x10] = size + + push edi + push esi + + mov edi,dword [ebp+0x08] + mov esi,dword [ebp+0x0C] + + mov ecx,dword [ebp+0x10] + shr ecx,2 ; Div by 4 + jz .cp_loop4_skip +.cp_loop4: + lodsd + stosd + loop .cp_loop4 +.cp_loop4_skip: + + mov ecx,dword [ebp+0x10] + and ecx,3 ; Remainder by 4 + jz .cp_loop1_skip +.cp_loop1: + lodsb + stosb + loop .cp_loop1 +.cp_loop1_skip: + + pop esi + pop edi + + mov esp,ebp + pop ebp + ret + +kmemcmp: + push ebp + mov ebp,esp + + xor eax,eax + ; [ebp+0x08] = dst + ; [ebp+0x0C] = src + ; [ebp+0x10] = size + + push edi + push esi + + mov edi,dword [ebp+0x08] + mov esi,dword [ebp+0x0C] + + mov ecx,dword [ebp+0x10] + shr ecx,2 ; Div by 4 + jz .cm_loop4_skip +.cm_loop4: + lodsd + cmp eax,dword [edi] + jnz .cm_inequal + add edi,4 + loop .cm_loop4 +.cm_loop4_skip: + + mov ecx,dword [ebp+0x10] + and ecx,3 ; Remainder by 4 + jz .cm_loop1_skip +.cm_loop1: + lodsb + cmp al,byte [edi] + jnz .cm_inequal + inc edi + loop .cm_loop1 +.cm_loop1_skip: + + xor eax,eax + jmp .cm_equal +.cm_inequal: + xor eax,eax + inc eax +.cm_equal: + pop esi + pop edi + + mov esp,ebp + pop ebp + ret + +kmemzero: + push ebp + mov ebp,esp + + ; [ebp+0x08] - dst + ; [ebp+0x0C] - size + + push edi + push ecx + + mov edi,dword [ebp+0x08] + + mov ecx,dword [ebp+0x0C] + shr ecx,2 ; Dividy by 4 + jz .skip4 + + xor eax,eax + rep stosd +.skip4: + + mov ecx,dword [ebp+0x0C] + and ecx,3 + rep stosd + + pop ecx + pop edi + + mov ebp,esp + pop ebp + ret diff --git a/lobj/exceptions.o b/lobj/exceptions.o new file mode 100644 index 0000000..9c25e6e Binary files /dev/null and b/lobj/exceptions.o differ diff --git a/lobj/gdt.o b/lobj/gdt.o new file mode 100644 index 0000000..fae9664 Binary files /dev/null and b/lobj/gdt.o differ diff --git a/lobj/idt.o b/lobj/idt.o new file mode 100644 index 0000000..76f0617 Binary files /dev/null and b/lobj/idt.o differ diff --git a/lobj/lmain.o b/lobj/lmain.o new file mode 100644 index 0000000..0017692 Binary files /dev/null and b/lobj/lmain.o differ diff --git a/lobj/loader.o b/lobj/loader.o new file mode 100644 index 0000000..4232573 Binary files /dev/null and b/lobj/loader.o differ diff --git a/lobj/memory.o b/lobj/memory.o new file mode 100644 index 0000000..7d78c2b Binary files /dev/null and b/lobj/memory.o differ diff --git a/lobj/stdlib.o b/lobj/stdlib.o new file mode 100644 index 0000000..23cab64 Binary files /dev/null and b/lobj/stdlib.o differ diff --git a/lobj/string.o b/lobj/string.o new file mode 100644 index 0000000..70ff286 Binary files /dev/null and b/lobj/string.o differ diff --git a/lobj/vga_terminal.o b/lobj/vga_terminal.o new file mode 100644 index 0000000..bc195d8 Binary files /dev/null and b/lobj/vga_terminal.o differ diff --git a/lobj/x86enter64.o b/lobj/x86enter64.o new file mode 100644 index 0000000..0182dda Binary files /dev/null and b/lobj/x86enter64.o differ diff --git a/lobj/x86gdt.o b/lobj/x86gdt.o new file mode 100644 index 0000000..80ab6ad Binary files /dev/null and b/lobj/x86gdt.o differ diff --git a/lobj/x86idt.o b/lobj/x86idt.o new file mode 100644 index 0000000..e812ac1 Binary files /dev/null and b/lobj/x86idt.o differ diff --git a/lobj/x86int.o b/lobj/x86int.o new file mode 100644 index 0000000..d7f635d Binary files /dev/null and b/lobj/x86int.o differ diff --git a/lobj/x86io.o b/lobj/x86io.o new file mode 100644 index 0000000..478ad2c Binary files /dev/null and b/lobj/x86io.o differ diff --git a/lobj/x86stdlib.o b/lobj/x86stdlib.o new file mode 100644 index 0000000..469bffb Binary files /dev/null and b/lobj/x86stdlib.o differ diff --git a/logo.bmp b/logo.bmp new file mode 100644 index 0000000..5a7f2ed Binary files /dev/null and b/logo.bmp differ diff --git a/logo.png b/logo.png new file mode 100644 index 0000000..ba09254 Binary files /dev/null and b/logo.png differ diff --git a/logo.xcf b/logo.xcf new file mode 100644 index 0000000..9d76230 Binary files /dev/null and b/logo.xcf differ diff --git a/map.txt b/map.txt new file mode 100644 index 0000000..0b2b1b7 --- /dev/null +++ b/map.txt @@ -0,0 +1,335 @@ + +Allocating common symbols +Common symbol size file + +s_iY 0x4 obj/vga_terminal.o +s_iX 0x4 obj/vga_terminal.o + +Memory Configuration + +Name Origin Length Attributes +*default* 0x0000000000000000 0xffffffffffffffff + +Linker script and memory map + + 0x00000000c0100000 . = 0xc0100000 + 0x00000000c0100000 _kernel_start = . + +.text 0x00000000c0100000 0x32a6 load address 0x0000000000100000 + *(.multiboot) + .multiboot 0x00000000c0100000 0xc obj/multiboot.o + *(.text) + *fill* 0x00000000c010000c 0x4 + .text 0x00000000c0100010 0x92 obj/multiboot.o + 0x00000000c0100010 _start + .text 0x00000000c01000a2 0x48f obj/kmain.o + 0x00000000c01000a2 command_interpreter + 0x00000000c0100381 kernel_main + .text 0x00000000c0100531 0x355 obj/vga_terminal.o + 0x00000000c0100531 vga_terminal_init + 0x00000000c0100553 update_cursor + 0x00000000c01005d2 cls + 0x00000000c0100619 printchar + 0x00000000c0100783 shiftscreen + 0x00000000c010081c chg_color + 0x00000000c0100834 print + 0x00000000c0100864 move_to_next_char + 0x00000000c010086a move_to_next_line + 0x00000000c0100870 locate + .text 0x00000000c0100886 0xc15 obj/stdlib.o + 0x00000000c0100886 iprint + 0x00000000c0100974 uprint + 0x00000000c0100a22 xprint + 0x00000000c0100ac4 iprints + 0x00000000c0100bb4 uprints + 0x00000000c0100c64 xprints + 0x00000000c0100d08 kprint + 0x00000000c0100d38 ksprintf + 0x00000000c0100f25 kprintf + 0x00000000c010104b kgetch + 0x00000000c0101070 kgetc + 0x00000000c0101095 kgets + 0x00000000c0101264 katoi + 0x00000000c010128c katou + 0x00000000c010131f ksscanf + *fill* 0x00000000c010149b 0x5 + .text 0x00000000c01014a0 0x87 obj/x86stdlib.o + 0x00000000c01014a0 kmemcpy + 0x00000000c01014c9 kmemcmp + 0x00000000c0101505 kmemzero + .text 0x00000000c0101527 0x1d7 obj/gdt.o + 0x00000000c0101527 gdt_create + 0x00000000c0101689 gdt_install + *fill* 0x00000000c01016fe 0x2 + .text 0x00000000c0101700 0x34 obj/x86gdt.o + 0x00000000c0101700 _gdt_install + .text 0x00000000c0101734 0x173 obj/pic.o + 0x00000000c0101734 pic_init + 0x00000000c01017f2 pic_set_mask + 0x00000000c0101877 pic_send_eoi + .text 0x00000000c01018a7 0x1ed obj/idt.o + 0x00000000c01018a7 idt_create + 0x00000000c010194f idt_setup + 0x00000000c01019bf idt_irq_by_addr + 0x00000000c01019fa idt_handler_entry + 0x00000000c0101a40 idt_install + 0x00000000c0101a8d idt_enable_interrupts + *fill* 0x00000000c0101a94 0xc + .text 0x00000000c0101aa0 0x1f obj/x86idt.o + 0x00000000c0101aa0 _idt_install + *fill* 0x00000000c0101abf 0x1 + .text 0x00000000c0101ac0 0x2a0 obj/x86int.o + 0x00000000c0101ac0 _int0_handler + 0x00000000c0101ad5 _int1_handler + 0x00000000c0101aea _int2_handler + 0x00000000c0101aff _int3_handler + 0x00000000c0101b14 _int4_handler + 0x00000000c0101b29 _int5_handler + 0x00000000c0101b3e _int6_handler + 0x00000000c0101b53 _int7_handler + 0x00000000c0101b68 _int8_handler + 0x00000000c0101b7d _int9_handler + 0x00000000c0101b92 _int10_handler + 0x00000000c0101ba7 _int11_handler + 0x00000000c0101bbc _int12_handler + 0x00000000c0101bd1 _int13_handler + 0x00000000c0101be6 _int14_handler + 0x00000000c0101bfb _int15_handler + 0x00000000c0101c10 _int16_handler + 0x00000000c0101c25 _int17_handler + 0x00000000c0101c3a _int18_handler + 0x00000000c0101c4f _int19_handler + 0x00000000c0101c64 _int20_handler + 0x00000000c0101c79 _int21_handler + 0x00000000c0101c8e _int22_handler + 0x00000000c0101ca3 _int23_handler + 0x00000000c0101cb8 _int24_handler + 0x00000000c0101ccd _int25_handler + 0x00000000c0101ce2 _int26_handler + 0x00000000c0101cf7 _int27_handler + 0x00000000c0101d0c _int28_handler + 0x00000000c0101d21 _int29_handler + 0x00000000c0101d36 _int30_handler + 0x00000000c0101d4b _int31_handler + .text 0x00000000c0101d60 0x133 obj/string.o + 0x00000000c0101d60 kstrlen + 0x00000000c0101d88 kstrcpy + 0x00000000c0101dad kstrncpy + 0x00000000c0101df4 kstrchr + 0x00000000c0101e27 kstrrchr + 0x00000000c0101e6e kstrncmp + .text 0x00000000c0101e93 0x26e obj/paging.o + 0x00000000c0101e93 page_map + 0x00000000c0101f94 page_unmap + 0x00000000c01020a4 page_v2p + *fill* 0x00000000c0102101 0xf + .text 0x00000000c0102110 0x81 obj/x86utils.o + 0x00000000c0102110 x86_get_regs + 0x00000000c0102181 x86_reload_cr3 + 0x00000000c0102188 _load_legacy_stack + .text 0x00000000c0102191 0x168 obj/x86_utils.o + 0x00000000c0102191 x86_print_regs + .text 0x00000000c01022f9 0x2b4 obj/keyboard.o + 0x00000000c010239a keyboard_interrupt + 0x00000000c010243a keyboard_scan_code + 0x00000000c0102446 keyboard_ascii + 0x00000000c0102542 keyboard_reset_irq1_vars + 0x00000000c010254f keyboard_enable + 0x00000000c0102567 keyboard_disable + 0x00000000c010257f keyboard_install + .text 0x00000000c01025ad 0x2d7 obj/exceptions.o + 0x00000000c01025bb _enter_rescue_mode + 0x00000000c01025de enter_rescue_mode + 0x00000000c0102666 exception0 + 0x00000000c0102684 exception3 + 0x00000000c01026a2 exception6 + 0x00000000c01026c0 exception7 + 0x00000000c01026de exception8 + 0x00000000c01026fc exception10 + 0x00000000c010271a exception11 + 0x00000000c0102738 exception12 + 0x00000000c0102756 exception13 + 0x00000000c0102774 exception14 + 0x00000000c010279f install_exceptions + .text 0x00000000c0102884 0xdd obj/memory.o + 0x00000000c0102884 mbt_mmap_init + 0x00000000c010294d ram_get_map + 0x00000000c0102957 ram_get_size + .text 0x00000000c0102961 0x3e9 obj/pci.o + 0x00000000c0102961 pci_read_config_word + 0x00000000c01029c5 pci_read_config_word_dev + 0x00000000c0102a0d pci_get_class + 0x00000000c0102a29 pci_get_subclass + 0x00000000c0102ab1 pci_dump + 0x00000000c0102cc5 pci_detect_hardware + 0x00000000c0102cfc pci_find_device + *fill* 0x00000000c0102d4a 0x6 + .text 0x00000000c0102d50 0x7d obj/x86io.o + 0x00000000c0102d50 inb + 0x00000000c0102d56 outb + 0x00000000c0102d60 inw + 0x00000000c0102d67 outw + 0x00000000c0102d72 inl + 0x00000000c0102d78 outl + 0x00000000c0102d82 _insw + 0x00000000c0102d99 _outsw + 0x00000000c0102db0 _insw256 + 0x00000000c0102dc1 _outsw256 + .text 0x00000000c0102dcd 0xc2 obj/pit.o + 0x00000000c0102dcd timer_interrupt + 0x00000000c0102df9 sleep + 0x00000000c0102e34 pit_init + .text 0x00000000c0102e8f 0x417 obj/ahci.o + 0x00000000c0102e8f sata_identify + 0x00000000c01030e7 ahci_init + +.iplt 0x00000000c01032b0 0x0 load address 0x00000000001032b0 + .iplt 0x00000000c01032b0 0x0 obj/multiboot.o + +.rodata 0x00000000c0104000 0xc04 load address 0x0000000000104000 + *(.rodata) + .rodata 0x00000000c0104000 0x186 obj/kmain.o + *fill* 0x00000000c0104186 0x2 + .rodata 0x00000000c0104188 0x68 obj/stdlib.o + .rodata 0x00000000c01041f0 0x18 obj/idt.o + .rodata 0x00000000c0104208 0x107 obj/x86_utils.o + .rodata 0x00000000c010430f 0xd obj/keyboard.o + .rodata 0x00000000c010431c 0x16a obj/exceptions.o + *fill* 0x00000000c0104486 0x2 + .rodata 0x00000000c0104488 0x67c obj/pci.o + .rodata 0x00000000c0104b04 0x100 obj/ahci.o + +.eh_frame 0x00000000c0104c04 0xbe8 load address 0x0000000000104c04 + .eh_frame 0x00000000c0104c04 0x50 obj/kmain.o + .eh_frame 0x00000000c0104c54 0x148 obj/vga_terminal.o + 0x160 (size before relaxing) + .eh_frame 0x00000000c0104d9c 0x244 obj/stdlib.o + 0x25c (size before relaxing) + .eh_frame 0x00000000c0104fe0 0x50 obj/gdt.o + 0x68 (size before relaxing) + .eh_frame 0x00000000c0105030 0x60 obj/pic.o + 0x78 (size before relaxing) + .eh_frame 0x00000000c0105090 0xf0 obj/idt.o + 0x108 (size before relaxing) + .eh_frame 0x00000000c0105180 0xc0 obj/string.o + 0xd8 (size before relaxing) + .eh_frame 0x00000000c0105240 0x60 obj/paging.o + 0x78 (size before relaxing) + .eh_frame 0x00000000c01052a0 0x30 obj/x86_utils.o + 0x48 (size before relaxing) + .eh_frame 0x00000000c01052d0 0x120 obj/keyboard.o + 0x138 (size before relaxing) + .eh_frame 0x00000000c01053f0 0x1b8 obj/exceptions.o + 0x1d0 (size before relaxing) + .eh_frame 0x00000000c01055a8 0x60 obj/memory.o + 0x78 (size before relaxing) + .eh_frame 0x00000000c0105608 0x144 obj/pci.o + 0x15c (size before relaxing) + .eh_frame 0x00000000c010574c 0x60 obj/pit.o + 0x78 (size before relaxing) + .eh_frame 0x00000000c01057ac 0x40 obj/ahci.o + 0x58 (size before relaxing) + +.rel.dyn 0x00000000c01057ec 0x0 load address 0x00000000001057ec + .rel.iplt 0x00000000c01057ec 0x0 obj/multiboot.o + .rel.text 0x00000000c01057ec 0x0 obj/multiboot.o + +.data 0x00000000c0106000 0x270 load address 0x0000000000106000 + *(.data) + .data 0x00000000c0106000 0x4 obj/kmain.o + .data 0x00000000c0106004 0x1 obj/vga_terminal.o + *fill* 0x00000000c0106005 0x3 + .data 0x00000000c0106008 0x4 obj/stdlib.o + .data 0x00000000c010600c 0x0 obj/gdt.o + .data 0x00000000c010600c 0x6 obj/x86gdt.o + .data 0x00000000c0106012 0x0 obj/pic.o + .data 0x00000000c0106012 0x0 obj/idt.o + *fill* 0x00000000c0106012 0x2 + .data 0x00000000c0106014 0x6 obj/x86idt.o + .data 0x00000000c010601a 0x0 obj/string.o + .data 0x00000000c010601a 0x0 obj/paging.o + .data 0x00000000c010601a 0x0 obj/x86_utils.o + *fill* 0x00000000c010601a 0x6 + .data 0x00000000c0106020 0x84 obj/keyboard.o + .data 0x00000000c01060a4 0x0 obj/exceptions.o + .data 0x00000000c01060a4 0x0 obj/memory.o + *fill* 0x00000000c01060a4 0x1c + .data 0x00000000c01060c0 0x1b0 obj/pci.o + .data 0x00000000c0106270 0x0 obj/pit.o + .data 0x00000000c0106270 0x0 obj/ahci.o + +.igot.plt 0x00000000c0106270 0x0 load address 0x0000000000106270 + .igot.plt 0x00000000c0106270 0x0 obj/multiboot.o + +.bss 0x00000000c0107000 0x40d200 load address 0x0000000000107000 + *(COMMON) + COMMON 0x00000000c0107000 0x8 obj/vga_terminal.o + 0x00000000c0107000 s_iY + 0x00000000c0107004 s_iX + *(.bss) + *fill* 0x00000000c0107008 0xff8 + .bss 0x00000000c0108000 0x409004 obj/multiboot.o + 0x00000000c0108000 page_directories + 0x00000000c0109000 page_tables + 0x00000000c0511000 legacy_esp + .bss 0x00000000c0511004 0x0 obj/kmain.o + .bss 0x00000000c0511004 0x0 obj/vga_terminal.o + .bss 0x00000000c0511004 0x0 obj/stdlib.o + *fill* 0x00000000c0511004 0x4 + .bss 0x00000000c0511008 0x18 obj/gdt.o + .bss 0x00000000c0511020 0x0 obj/pic.o + .bss 0x00000000c0511020 0xc00 obj/idt.o + .bss 0x00000000c0511c20 0x0 obj/string.o + .bss 0x00000000c0511c20 0x0 obj/paging.o + .bss 0x00000000c0511c20 0x0 obj/x86_utils.o + .bss 0x00000000c0511c20 0x8 obj/keyboard.o + .bss 0x00000000c0511c28 0x0 obj/exceptions.o + *fill* 0x00000000c0511c28 0x18 + .bss 0x00000000c0511c40 0x108 obj/memory.o + *fill* 0x00000000c0511d48 0x18 + .bss 0x00000000c0511d60 0x404 obj/pci.o + .bss 0x00000000c0512164 0x4 obj/pit.o + *fill* 0x00000000c0512168 0xe98 + .bss 0x00000000c0513000 0x1200 obj/ahci.o + 0x00000000c0514200 _kernel_end = . +LOAD obj/multiboot.o +LOAD obj/kmain.o +LOAD obj/vga_terminal.o +LOAD obj/stdlib.o +LOAD obj/x86stdlib.o +LOAD obj/gdt.o +LOAD obj/x86gdt.o +LOAD obj/pic.o +LOAD obj/idt.o +LOAD obj/x86idt.o +LOAD obj/x86int.o +LOAD obj/string.o +LOAD obj/paging.o +LOAD obj/x86utils.o +LOAD obj/x86_utils.o +LOAD obj/keyboard.o +LOAD obj/exceptions.o +LOAD obj/memory.o +LOAD obj/pci.o +LOAD obj/x86io.o +LOAD obj/pit.o +LOAD obj/ahci.o +OUTPUT(os/lenochka.bin elf32-i386) + +.comment 0x0000000000000000 0x11 + .comment 0x0000000000000000 0x11 obj/kmain.o + 0x12 (size before relaxing) + .comment 0x0000000000000011 0x12 obj/vga_terminal.o + .comment 0x0000000000000011 0x12 obj/stdlib.o + .comment 0x0000000000000011 0x12 obj/gdt.o + .comment 0x0000000000000011 0x12 obj/pic.o + .comment 0x0000000000000011 0x12 obj/idt.o + .comment 0x0000000000000011 0x12 obj/string.o + .comment 0x0000000000000011 0x12 obj/paging.o + .comment 0x0000000000000011 0x12 obj/x86_utils.o + .comment 0x0000000000000011 0x12 obj/keyboard.o + .comment 0x0000000000000011 0x12 obj/exceptions.o + .comment 0x0000000000000011 0x12 obj/memory.o + .comment 0x0000000000000011 0x12 obj/pci.o + .comment 0x0000000000000011 0x12 obj/pit.o + .comment 0x0000000000000011 0x12 obj/ahci.o diff --git a/memory_map.txt b/memory_map.txt new file mode 100644 index 0000000..6cebabc --- /dev/null +++ b/memory_map.txt @@ -0,0 +1,3 @@ +0xC0000000 - 0xC1000000 - kernel +0xC1000000 - 0xC10B8000 - free kernel memory (736 KB) +0xC10B8000 - 0xC10B9000 - video buf diff --git a/os/grub2.cfg b/os/grub2.cfg new file mode 100644 index 0000000..85e5474 --- /dev/null +++ b/os/grub2.cfg @@ -0,0 +1,7 @@ +set timeout=15 +set default=0 + +menuentry "Lenochka" { + multiboot /boot/lenochka.bin + boot +} diff --git a/os/lenochka.elf b/os/lenochka.elf new file mode 100644 index 0000000..d0ba03e Binary files /dev/null and b/os/lenochka.elf differ diff --git a/os/loader.elf b/os/loader.elf new file mode 100644 index 0000000..a4c69bb Binary files /dev/null and b/os/loader.elf differ diff --git a/u_vga16.bdf b/u_vga16.bdf new file mode 100644 index 0000000..4108a6d --- /dev/null +++ b/u_vga16.bdf @@ -0,0 +1,66709 @@ +STARTFONT 2.1 +FONT -Bolkhov-VGA-Medium-R-Normal--16-160-75-75-C-80-iso10646-1 +SIZE 16 75 75 +FONTBOUNDINGBOX 8 16 0 -4 +STARTPROPERTIES 24 +FOUNDRY "Bolkhov" +FAMILY_NAME "VGA" +WEIGHT_NAME "Medium" +SLANT "R" +SETWIDTH_NAME "Normal" +ADD_STYLE_NAME "" +PIXEL_SIZE 16 +POINT_SIZE 160 +RESOLUTION_X 75 +RESOLUTION_Y 75 +SPACING "C" +AVERAGE_WIDTH 80 +CHARSET_REGISTRY "iso10646" +CHARSET_ENCODING "1" +CAP_HEIGHT 10 +X_HEIGHT 7 +FONT_ASCENT 12 +FONT_DESCENT 4 +FACE_NAME "Vga Unicode" +COPYRIGHT "Copyright (c) 2000 Dmitry Bolkhovityanov, bolkhov@inp.nsk.su" +HOMEPAGE "http://www.inp.nsk.su/~bolkhov/files/fonts/univga/" +NOTICE "VGA is a trademark of IBM Corporation." +DEFAULT_CHAR 0 +_XMBDFED_INFO "Edited with xmbdfed 4.4." +ENDPROPERTIES +CHARS 2899 +STARTCHAR char0 +ENCODING 0 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DA +02 +80 +82 +02 +80 +82 +02 +80 +B6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR space +ENCODING 32 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR exclam +ENCODING 33 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +3C +3C +18 +18 +18 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotedbl +ENCODING 34 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +66 +66 +66 +24 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR numbersign +ENCODING 35 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +6C +6C +FE +6C +6C +6C +FE +6C +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR dollar +ENCODING 36 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +7C +C6 +C2 +C0 +7C +06 +06 +86 +C6 +7C +18 +18 +00 +00 +ENDCHAR +STARTCHAR percent +ENCODING 37 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C2 +C6 +0C +18 +30 +60 +C6 +86 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ampersand +ENCODING 38 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +6C +38 +76 +DC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotesingle +ENCODING 39 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +30 +30 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR parenleft +ENCODING 40 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +30 +30 +30 +30 +30 +30 +18 +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR parenright +ENCODING 41 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +18 +0C +0C +0C +0C +0C +0C +18 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR asterisk +ENCODING 42 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +3C +FF +3C +66 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR plus +ENCODING 43 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +18 +7E +18 +18 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR comma +ENCODING 44 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +18 +30 +00 +00 +00 +ENDCHAR +STARTCHAR hyphen +ENCODING 45 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FE +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR period +ENCODING 46 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR slash +ENCODING 47 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +02 +06 +0C +18 +30 +60 +C0 +80 +00 +00 +00 +00 +ENDCHAR +STARTCHAR zero +ENCODING 48 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +C6 +C6 +D6 +D6 +C6 +C6 +6C +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR one +ENCODING 49 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +38 +78 +18 +18 +18 +18 +18 +18 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR two +ENCODING 50 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +06 +0C +18 +30 +60 +C0 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR three +ENCODING 51 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +06 +06 +3C +06 +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR four +ENCODING 52 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +1C +3C +6C +CC +FE +0C +0C +0C +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR five +ENCODING 53 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C0 +C0 +C0 +FC +06 +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR six +ENCODING 54 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +60 +C0 +C0 +FC +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR seven +ENCODING 55 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +06 +06 +0C +18 +30 +30 +30 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR eight +ENCODING 56 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +7C +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR nine +ENCODING 57 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +7E +06 +06 +06 +0C +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR colon +ENCODING 58 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +00 +00 +00 +18 +18 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR semicolon +ENCODING 59 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +00 +00 +00 +18 +18 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR less +ENCODING 60 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +06 +0C +18 +30 +60 +30 +18 +0C +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR equal +ENCODING 61 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +00 +00 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR greater +ENCODING 62 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +60 +30 +18 +0C +06 +0C +18 +30 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR question +ENCODING 63 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +0C +18 +18 +18 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR at +ENCODING 64 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +C6 +C6 +DE +DE +DE +DC +C0 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR A +ENCODING 65 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR B +ENCODING 66 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR C +ENCODING 67 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR D +ENCODING 68 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +66 +66 +66 +66 +6C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR E +ENCODING 69 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR F +ENCODING 70 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR G +ENCODING 71 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR H +ENCODING 72 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR I +ENCODING 73 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR J +ENCODING 74 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +0C +0C +0C +0C +0C +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR K +ENCODING 75 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR L +ENCODING 76 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +60 +60 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR M +ENCODING 77 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR N +ENCODING 78 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR O +ENCODING 79 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR P +ENCODING 80 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Q +ENCODING 81 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +D6 +DE +7C +0C +0E +00 +00 +ENDCHAR +STARTCHAR R +ENCODING 82 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +6C +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR S +ENCODING 83 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +60 +38 +0C +06 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR T +ENCODING 84 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR U +ENCODING 85 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR V +ENCODING 86 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +6C +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR W +ENCODING 87 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +D6 +D6 +D6 +FE +EE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR X +ENCODING 88 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +6C +7C +38 +38 +7C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Y +ENCODING 89 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Z +ENCODING 90 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +86 +0C +18 +30 +60 +C2 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR bracketleft +ENCODING 91 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +30 +30 +30 +30 +30 +30 +30 +30 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR backslash +ENCODING 92 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +80 +C0 +E0 +70 +38 +1C +0E +06 +02 +00 +00 +00 +00 +ENDCHAR +STARTCHAR bracketright +ENCODING 93 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +0C +0C +0C +0C +0C +0C +0C +0C +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR asciicircum +ENCODING 94 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +6C +C6 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR underscore +ENCODING 95 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +ENDCHAR +STARTCHAR grave +ENCODING 96 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR a +ENCODING 97 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR b +ENCODING 98 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +78 +6C +66 +66 +66 +66 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR c +ENCODING 99 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR d +ENCODING 100 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR e +ENCODING 101 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR f +ENCODING 102 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +64 +60 +F0 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR g +ENCODING 103 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR h +ENCODING 104 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR i +ENCODING 105 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR j +ENCODING 106 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +06 +00 +0E +06 +06 +06 +06 +06 +06 +66 +66 +3C +00 +ENDCHAR +STARTCHAR k +ENCODING 107 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +66 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR l +ENCODING 108 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR m +ENCODING 109 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +EC +FE +D6 +D6 +D6 +D6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR n +ENCODING 110 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR o +ENCODING 111 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR p +ENCODING 112 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +7C +60 +60 +F0 +00 +ENDCHAR +STARTCHAR q +ENCODING 113 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +CC +CC +CC +CC +CC +7C +0C +0C +1E +00 +ENDCHAR +STARTCHAR r +ENCODING 114 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR s +ENCODING 115 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR t +ENCODING 116 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR u +ENCODING 117 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR v +ENCODING 118 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +66 +66 +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR w +ENCODING 119 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR x +ENCODING 120 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +6C +38 +38 +38 +6C +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR y +ENCODING 121 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR z +ENCODING 122 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +CC +18 +30 +60 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR braceleft +ENCODING 123 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0E +18 +18 +18 +70 +18 +18 +18 +18 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR bar +ENCODING 124 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +00 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR braceright +ENCODING 125 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +18 +18 +18 +0E +18 +18 +18 +18 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR asciitilde +ENCODING 126 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR char127 +ENCODING 127 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +38 +6C +C6 +C6 +C6 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR space +ENCODING 160 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR exclamdown +ENCODING 161 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +18 +18 +18 +3C +3C +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR cent +ENCODING 162 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +18 +3C +66 +60 +60 +60 +66 +3C +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR sterling +ENCODING 163 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +64 +60 +F0 +60 +60 +60 +60 +E6 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR currency +ENCODING 164 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +66 +3C +66 +66 +66 +3C +66 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR yen +ENCODING 165 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +3C +18 +7E +18 +7E +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR brokenbar +ENCODING 166 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +00 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR section +ENCODING 167 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +C6 +60 +38 +6C +C6 +C6 +6C +38 +0C +C6 +7C +00 +00 +00 +ENDCHAR +STARTCHAR dieresis +ENCODING 168 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR copyright +ENCODING 169 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +99 +A5 +A1 +A1 +A5 +99 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ordfeminine +ENCODING 170 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +3C +6C +6C +3E +00 +7E +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR guillemotleft +ENCODING 171 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +36 +6C +D8 +6C +36 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR logicalnot +ENCODING 172 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FE +06 +06 +06 +06 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR hyphen +ENCODING 173 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +3C +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR registered +ENCODING 174 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +44 +BA +B2 +AA +44 +38 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR macron +ENCODING 175 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR degree +ENCODING 176 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +6C +38 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR plusminus +ENCODING 177 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +7E +18 +18 +00 +7E +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR twosuperior +ENCODING 178 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +D8 +30 +60 +C8 +F8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR threesuperior +ENCODING 179 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +D8 +30 +18 +D8 +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR acute +ENCODING 180 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR mu +ENCODING 181 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +F6 +C0 +C0 +C0 +00 +ENDCHAR +STARTCHAR paragraph +ENCODING 182 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7F +DB +DB +DB +7B +1B +1B +1B +1B +1B +00 +00 +00 +00 +ENDCHAR +STARTCHAR periodcentered +ENCODING 183 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR cedilla +ENCODING 184 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +0C +38 +00 +ENDCHAR +STARTCHAR onesuperior +ENCODING 185 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +70 +30 +30 +30 +78 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ordmasculine +ENCODING 186 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +6C +38 +00 +7C +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR guillemotright +ENCODING 187 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +D8 +6C +36 +6C +D8 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR onequarter +ENCODING 188 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +C2 +C6 +CC +18 +30 +66 +CE +9E +3E +06 +06 +00 +00 +ENDCHAR +STARTCHAR onehalf +ENCODING 189 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +C2 +C6 +CC +18 +30 +60 +DC +86 +0C +18 +3E +00 +00 +ENDCHAR +STARTCHAR threequarters +ENCODING 190 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +E0 +30 +62 +36 +EC +18 +30 +66 +CE +9E +3E +06 +06 +00 +00 +ENDCHAR +STARTCHAR questiondown +ENCODING 191 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +30 +30 +60 +C0 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Agrave +ENCODING 192 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Aacute +ENCODING 193 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Acircumflex +ENCODING 194 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +6C +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Atilde +ENCODING 195 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Adieresis +ENCODING 196 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Aring +ENCODING 197 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +38 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR AE +ENCODING 198 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3E +6C +CC +CC +FE +CC +CC +CC +CC +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ccedilla +ENCODING 199 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +C0 +C0 +C2 +66 +3C +18 +0C +38 +00 +ENDCHAR +STARTCHAR Egrave +ENCODING 200 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +18 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Eacute +ENCODING 201 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ecircumflex +ENCODING 202 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Edieresis +ENCODING 203 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Igrave +ENCODING 204 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +18 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Iacute +ENCODING 205 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Icircumflex +ENCODING 206 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +3C +42 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Idieresis +ENCODING 207 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +66 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Eth +ENCODING 208 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +F6 +66 +66 +66 +6C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ntilde +ENCODING 209 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ograve +ENCODING 210 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Oacute +ENCODING 211 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ocircumflex +ENCODING 212 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Otilde +ENCODING 213 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Odieresis +ENCODING 214 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR multiply +ENCODING 215 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +3C +18 +3C +66 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Oslash +ENCODING 216 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7A +C4 +CE +CE +D6 +D6 +E6 +E6 +46 +BC +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ugrave +ENCODING 217 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Uacute +ENCODING 218 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ucircumflex +ENCODING 219 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Udieresis +ENCODING 220 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Yacute +ENCODING 221 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Thorn +ENCODING 222 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +7C +66 +66 +66 +66 +7C +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR germandbls +ENCODING 223 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +6C +66 +66 +66 +66 +EC +00 +00 +00 +00 +ENDCHAR +STARTCHAR agrave +ENCODING 224 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR aacute +ENCODING 225 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +30 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR acircumflex +ENCODING 226 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR atilde +ENCODING 227 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR adieresis +ENCODING 228 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR aring +ENCODING 229 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ae +ENCODING 230 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +76 +36 +7E +D8 +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR ccedilla +ENCODING 231 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +18 +0C +38 +00 +ENDCHAR +STARTCHAR egrave +ENCODING 232 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR eacute +ENCODING 233 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ecircumflex +ENCODING 234 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR edieresis +ENCODING 235 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR igrave +ENCODING 236 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +18 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR iacute +ENCODING 237 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR icircumflex +ENCODING 238 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR idieresis +ENCODING 239 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR eth +ENCODING 240 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +1C +3C +06 +7E +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ntilde +ENCODING 241 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +DC +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ograve +ENCODING 242 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR oacute +ENCODING 243 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ocircumflex +ENCODING 244 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR otilde +ENCODING 245 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR odieresis +ENCODING 246 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR divide +ENCODING 247 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +00 +7E +00 +18 +18 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR oslash +ENCODING 248 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7A +C4 +CE +D6 +E6 +46 +BC +00 +00 +00 +00 +ENDCHAR +STARTCHAR ugrave +ENCODING 249 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uacute +ENCODING 250 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +30 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ucircumflex +ENCODING 251 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR udieresis +ENCODING 252 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +CC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR yacute +ENCODING 253 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR thorn +ENCODING 254 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +7C +66 +66 +66 +66 +66 +7C +60 +60 +F0 +00 +ENDCHAR +STARTCHAR ydieresis +ENCODING 255 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR Amacron +ENCODING 256 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR amacron +ENCODING 257 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Abreve +ENCODING 258 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR abreve +ENCODING 259 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Aogonek +ENCODING 260 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +C6 +0C +18 +0E +00 +ENDCHAR +STARTCHAR aogonek +ENCODING 261 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +0C +7C +CC +CC +CC +76 +0C +18 +0E +00 +ENDCHAR +STARTCHAR Cacute +ENCODING 262 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +3C +66 +C2 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR cacute +ENCODING 263 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ccircumflex +ENCODING 264 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +3C +66 +C2 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ccircumflex +ENCODING 265 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Cdotaccent +ENCODING 266 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +3C +66 +C2 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR cdotaccent +ENCODING 267 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ccaron +ENCODING 268 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +3C +66 +C2 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ccaron +ENCODING 269 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Dcaron +ENCODING 270 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +F8 +6C +66 +66 +66 +66 +66 +6C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dcaron +ENCODING 271 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +0C +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Dcroat +ENCODING 272 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +F6 +66 +66 +66 +6C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dcroat +ENCODING 273 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +3E +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Emacron +ENCODING 274 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR emacron +ENCODING 275 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ebreve +ENCODING 276 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR ebreve +ENCODING 277 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Edotaccent +ENCODING 278 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR edotaccent +ENCODING 279 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Eogonek +ENCODING 280 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +18 +30 +1C +00 +ENDCHAR +STARTCHAR eogonek +ENCODING 281 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR Ecaron +ENCODING 282 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR ecaron +ENCODING 283 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Gcircumflex +ENCODING 284 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +3C +66 +C2 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR gcircumflex +ENCODING 285 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR Gbreve +ENCODING 286 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +3C +66 +C2 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR gbreve +ENCODING 287 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR Gdotaccent +ENCODING 288 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +3C +66 +C2 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR gdotaccent +ENCODING 289 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR Gcommaaccent +ENCODING 290 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +DE +C6 +C6 +66 +3A +00 +18 +18 +30 +ENDCHAR +STARTCHAR gcommaaccent +ENCODING 291 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +30 +30 +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR Hcircumflex +ENCODING 292 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR hcircumflex +ENCODING 293 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +E0 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Hbar +ENCODING 294 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +FF +66 +66 +7E +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR hbar +ENCODING 295 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +F8 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Itilde +ENCODING 296 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR itilde +ENCODING 297 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Imacron +ENCODING 298 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7E +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR imacron +ENCODING 299 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7E +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ibreve +ENCODING 300 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +3C +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ibreve +ENCODING 301 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +3C +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Iogonek +ENCODING 302 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +18 +30 +1C +00 +ENDCHAR +STARTCHAR iogonek +ENCODING 303 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +38 +18 +18 +18 +18 +18 +3C +18 +30 +1C +00 +ENDCHAR +STARTCHAR Idotaccent +ENCODING 304 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR dotlessi +ENCODING 305 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR IJ +ENCODING 306 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F7 +63 +63 +63 +63 +63 +63 +7B +7B +EE +00 +00 +00 +00 +ENDCHAR +STARTCHAR ij +ENCODING 307 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +00 +EE +66 +66 +66 +66 +66 +F6 +06 +66 +3C +00 +ENDCHAR +STARTCHAR Jcircumflex +ENCODING 308 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +1C +22 +1E +0C +0C +0C +0C +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR jcircumflex +ENCODING 309 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +04 +0E +1B +00 +0E +06 +06 +06 +06 +06 +06 +66 +66 +3C +00 +ENDCHAR +STARTCHAR Kcommaaccent +ENCODING 310 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +00 +18 +18 +30 +ENDCHAR +STARTCHAR kcommaaccent +ENCODING 311 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +66 +6C +78 +78 +6C +66 +E6 +00 +18 +18 +30 +ENDCHAR +STARTCHAR kgreenlandic +ENCODING 312 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +E6 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Lacute +ENCODING 313 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +30 +00 +F0 +60 +60 +60 +60 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR lacute +ENCODING 314 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +38 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Lcommaaccent +ENCODING 315 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +60 +60 +60 +62 +66 +FE +00 +18 +18 +30 +ENDCHAR +STARTCHAR lcommaaccent +ENCODING 316 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +18 +18 +30 +ENDCHAR +STARTCHAR Lcaron +ENCODING 317 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +F0 +60 +60 +60 +60 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR lcaron +ENCODING 318 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +38 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ldot +ENCODING 319 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +66 +66 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR ldot +ENCODING 320 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +30 +30 +30 +36 +36 +30 +30 +30 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Lslash +ENCODING 321 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +78 +E0 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR lslash +ENCODING 322 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +1E +78 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Nacute +ENCODING 323 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR nacute +ENCODING 324 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +DC +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ncommaaccent +ENCODING 325 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +C6 +00 +18 +18 +30 +ENDCHAR +STARTCHAR ncommaaccent +ENCODING 326 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +00 +18 +18 +30 +ENDCHAR +STARTCHAR Ncaron +ENCODING 327 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ncaron +ENCODING 328 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +DC +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR napostrophe +ENCODING 329 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +60 +60 +C0 +00 +DC +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Eng +ENCODING 330 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +C6 +06 +06 +1C +00 +ENDCHAR +STARTCHAR eng +ENCODING 331 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +06 +06 +1C +00 +ENDCHAR +STARTCHAR Omacron +ENCODING 332 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR omacron +ENCODING 333 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Obreve +ENCODING 334 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR obreve +ENCODING 335 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ohungarumlaut +ENCODING 336 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +CC +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ohungarumlaut +ENCODING 337 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +CC +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR OE +ENCODING 338 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6E +D8 +D8 +D8 +DE +D8 +D8 +D8 +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR oe +ENCODING 339 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +D6 +D6 +DE +D8 +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR Racute +ENCODING 340 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +FC +66 +66 +66 +7C +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR racute +ENCODING 341 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Rcommaaccent +ENCODING 342 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +6C +66 +66 +66 +E6 +00 +18 +18 +30 +ENDCHAR +STARTCHAR rcommaaccent +ENCODING 343 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +18 +18 +30 +ENDCHAR +STARTCHAR Rcaron +ENCODING 344 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +FC +66 +66 +66 +7C +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR rcaron +ENCODING 345 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Sacute +ENCODING 346 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +7C +C6 +C6 +60 +38 +0C +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR sacute +ENCODING 347 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Scircumflex +ENCODING 348 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +7C +C6 +C6 +60 +38 +0C +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR scircumflex +ENCODING 349 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Scedilla +ENCODING 350 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +C6 +C6 +60 +38 +0C +C6 +C6 +7C +18 +0C +38 +00 +ENDCHAR +STARTCHAR scedilla +ENCODING 351 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +60 +38 +0C +C6 +7C +18 +0C +38 +00 +ENDCHAR +STARTCHAR Scaron +ENCODING 352 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +7C +C6 +C6 +60 +38 +0C +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR scaron +ENCODING 353 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Tcommaaccent +ENCODING 354 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +18 +0C +38 +00 +ENDCHAR +STARTCHAR tcommaaccent +ENCODING 355 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +36 +1C +18 +0C +38 +00 +ENDCHAR +STARTCHAR Tcaron +ENCODING 356 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +7E +7E +5A +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR tcaron +ENCODING 357 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +10 +30 +FC +30 +30 +30 +30 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Tbar +ENCODING 358 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +3C +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR tbar +ENCODING 359 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +FC +30 +30 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Utilde +ENCODING 360 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR utilde +ENCODING 361 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Umacron +ENCODING 362 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR umacron +ENCODING 363 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +78 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ubreve +ENCODING 364 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ubreve +ENCODING 365 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +78 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Uring +ENCODING 366 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +38 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uring +ENCODING 367 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +38 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Uhungarumlaut +ENCODING 368 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +CC +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uhungarumlaut +ENCODING 369 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +CC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Uogonek +ENCODING 370 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR uogonek +ENCODING 371 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +76 +30 +60 +38 +00 +ENDCHAR +STARTCHAR Wcircumflex +ENCODING 372 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +C6 +C6 +C6 +D6 +D6 +D6 +FE +EE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR wcircumflex +ENCODING 373 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ycircumflex +ENCODING 374 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ycircumflex +ENCODING 375 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR Ydieresis +ENCODING 376 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +66 +00 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Zacute +ENCODING 377 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +FE +C6 +8C +18 +30 +60 +C2 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR zacute +ENCODING 378 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +FE +CC +18 +30 +60 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Zdotaccent +ENCODING 379 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +FE +C6 +8C +18 +30 +60 +C2 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR zdotaccent +ENCODING 380 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +FE +CC +18 +30 +60 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Zcaron +ENCODING 381 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +FE +C6 +8C +18 +30 +60 +C2 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR zcaron +ENCODING 382 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +FE +CC +18 +30 +60 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR longs +ENCODING 383 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +64 +60 +60 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0180 +ENCODING 384 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +F8 +60 +78 +6C +66 +66 +66 +66 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0181 +ENCODING 385 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +B3 +B3 +33 +3E +33 +33 +33 +33 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0182 +ENCODING 386 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +64 +60 +60 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0183 +ENCODING 387 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +62 +60 +78 +6C +66 +66 +66 +66 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0184 +ENCODING 388 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +E6 +E6 +66 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0185 +ENCODING 389 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +E0 +E0 +78 +6C +66 +66 +66 +66 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0186 +ENCODING 390 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +86 +06 +06 +06 +06 +86 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0187 +ENCODING 391 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +03 +3E +66 +C2 +C0 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0188 +ENCODING 392 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +03 +7E +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0189 +ENCODING 393 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +F6 +66 +66 +66 +6C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni018A +ENCODING 394 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +B6 +B3 +33 +33 +33 +33 +33 +36 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni018B +ENCODING 395 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +4C +0C +0C +7C +CC +CC +CC +CC +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni018C +ENCODING 396 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +4C +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni018D +ENCODING 397 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +7C +30 +18 +CC +78 +00 +ENDCHAR +STARTCHAR uni018E +ENCODING 398 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +CC +8C +2C +3C +2C +0C +8C +CC +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni018F +ENCODING 399 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +06 +06 +06 +FE +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0190 +ENCODING 400 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C2 +C0 +78 +C0 +C0 +C2 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0191 +ENCODING 401 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +60 +60 +60 +60 +60 +C0 +00 +ENDCHAR +STARTCHAR florin +ENCODING 402 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +36 +32 +30 +78 +30 +30 +30 +30 +30 +30 +30 +E0 +00 +ENDCHAR +STARTCHAR uni0193 +ENCODING 403 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +03 +3E +66 +C2 +C0 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0194 +ENCODING 404 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +6C +6C +6C +38 +38 +10 +38 +6C +38 +00 +00 +ENDCHAR +STARTCHAR uni0195 +ENCODING 405 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +C0 +F3 +DB +DB +DB +DB +DB +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0196 +ENCODING 406 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +30 +30 +30 +30 +30 +30 +30 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0197 +ENCODING 407 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0198 +ENCODING 408 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +6D +6C +78 +70 +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0199 +ENCODING 409 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +60 +66 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni019A +ENCODING 410 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni019B +ENCODING 411 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C8 +38 +70 +D0 +38 +38 +6C +64 +C6 +C2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni019C +ENCODING 412 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D6 +D6 +D6 +D6 +D6 +D6 +D6 +D6 +FE +EC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni019D +ENCODING 413 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +76 +7E +7E +6E +66 +66 +66 +66 +60 +60 +C0 +00 +ENDCHAR +STARTCHAR uni019E +ENCODING 414 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +06 +06 +06 +00 +ENDCHAR +STARTCHAR uni019F +ENCODING 415 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ohorn +ENCODING 416 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +03 +7A +CC +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ohorn +ENCODING 417 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +06 +78 +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01A2 +ENCODING 418 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +73 +DF +DB +DB +DB +DB +DB +DB +DB +73 +03 +03 +03 +00 +ENDCHAR +STARTCHAR uni01A3 +ENCODING 419 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +73 +DF +DB +DB +DB +DB +73 +03 +03 +03 +00 +ENDCHAR +STARTCHAR uni01A4 +ENCODING 420 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +B3 +B3 +33 +3E +30 +30 +30 +30 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01A5 +ENCODING 421 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +60 +7C +66 +66 +66 +66 +66 +7C +60 +60 +F0 +00 +ENDCHAR +STARTCHAR uni01A6 +ENCODING 422 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +7C +66 +66 +7C +78 +6C +6C +E6 +06 +00 +00 +00 +ENDCHAR +STARTCHAR uni01A7 +ENCODING 423 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +0C +38 +60 +C0 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01A8 +ENCODING 424 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +0C +38 +60 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01A9 +ENCODING 425 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +62 +30 +18 +18 +30 +62 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01AA +ENCODING 426 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D8 +78 +18 +18 +18 +18 +18 +18 +18 +18 +1B +0E +00 +ENDCHAR +STARTCHAR uni01AB +ENCODING 427 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +36 +1C +0C +6C +38 +00 +ENDCHAR +STARTCHAR uni01AC +ENCODING 428 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +FE +9A +58 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01AD +ENCODING 429 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +36 +30 +FC +30 +30 +30 +30 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01AE +ENCODING 430 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +18 +18 +18 +0E +00 +ENDCHAR +STARTCHAR Uhorn +ENCODING 431 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +03 +CE +CC +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uhorn +ENCODING 432 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +06 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01B1 +ENCODING 433 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +EE +6C +6C +6C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01B2 +ENCODING 434 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +C6 +C6 +C6 +C6 +C6 +C6 +C6 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01B3 +ENCODING 435 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +63 +B3 +B3 +33 +1E +0C +0C +0C +0C +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01B4 +ENCODING 436 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +06 +0D +CC +CC +CC +CC +CC +CC +7C +0C +18 +F0 +00 +ENDCHAR +STARTCHAR uni01B5 +ENCODING 437 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +86 +0C +7E +30 +60 +C2 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01B6 +ENCODING 438 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +CC +18 +FC +60 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01B7 +ENCODING 439 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +06 +0C +18 +30 +7C +06 +06 +06 +06 +C6 +7C +00 +00 +ENDCHAR +STARTCHAR uni01B8 +ENCODING 440 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C0 +60 +30 +18 +7C +C0 +C0 +C0 +C0 +C6 +7C +00 +00 +ENDCHAR +STARTCHAR uni01B9 +ENCODING 441 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +C0 +60 +30 +78 +C0 +C0 +C0 +C6 +7C +00 +ENDCHAR +STARTCHAR uni01BA +ENCODING 442 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +06 +0C +18 +3C +06 +7C +C0 +C6 +7C +00 +ENDCHAR +STARTCHAR uni01BB +ENCODING 443 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +06 +0C +7E +30 +60 +C0 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01BC +ENCODING 444 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +60 +60 +78 +0C +06 +06 +06 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01BD +ENCODING 445 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +60 +78 +0C +06 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01BE +ENCODING 446 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +18 +4C +6C +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01BF +ENCODING 447 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +6C +78 +70 +60 +60 +F0 +00 +ENDCHAR +STARTCHAR uni01C0 +ENCODING 448 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C1 +ENCODING 449 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +6C +6C +6C +6C +6C +6C +6C +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C2 +ENCODING 450 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +7E +18 +7E +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C3 +ENCODING 451 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +3C +3C +18 +18 +18 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C4 +ENCODING 452 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1B +0E +04 +F7 +D9 +D9 +DA +DA +DA +DC +DC +F7 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C5 +ENCODING 453 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F5 +DA +D8 +DF +D9 +DA +DA +DA +DC +F7 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C6 +ENCODING 454 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3D +1A +18 +7F +D9 +DA +DA +DA +DC +6F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C7 +ENCODING 455 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C7 +C3 +C3 +C3 +C3 +C3 +C3 +C3 +CB +F6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01C8 +ENCODING 456 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F3 +63 +60 +67 +63 +63 +63 +67 +6F +FF +03 +1B +0E +00 +ENDCHAR +STARTCHAR uni01C9 +ENCODING 457 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E3 +63 +60 +67 +63 +63 +63 +63 +63 +F3 +03 +33 +1E +00 +ENDCHAR +STARTCHAR uni01CA +ENCODING 458 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +FB +FB +FB +DB +DB +DB +DB +DE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01CB +ENCODING 459 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +F8 +FF +FB +FB +DB +DB +DB +DB +03 +33 +1E +00 +ENDCHAR +STARTCHAR uni01CC +ENCODING 460 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +00 +B7 +DB +DB +DB +DB +DB +DB +03 +33 +1E +00 +ENDCHAR +STARTCHAR uni01CD +ENCODING 461 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01CE +ENCODING 462 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01CF +ENCODING 463 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D0 +ENCODING 464 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D1 +ENCODING 465 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D2 +ENCODING 466 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D3 +ENCODING 467 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D4 +ENCODING 468 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D5 +ENCODING 469 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +00 +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D6 +ENCODING 470 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +78 +00 +CC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D7 +ENCODING 471 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +10 +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D8 +ENCODING 472 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +30 +00 +CC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01D9 +ENCODING 473 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +28 +10 +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01DA +ENCODING 474 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +78 +30 +00 +CC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01DB +ENCODING 475 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +20 +10 +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01DC +ENCODING 476 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +CC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01DD +ENCODING 477 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +06 +FE +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01DE +ENCODING 478 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +00 +6C +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01DF +ENCODING 479 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01E0 +ENCODING 480 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +30 +30 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01E1 +ENCODING 481 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +30 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01E2 +ENCODING 482 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +3E +6C +CC +CC +FE +CC +CC +CC +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01E3 +ENCODING 483 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +CC +76 +36 +7E +D8 +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01E4 +ENCODING 484 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +DE +C6 +DF +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01E5 +ENCODING 485 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +CC +CC +CC +CC +7C +0C +3E +CC +78 +00 +ENDCHAR +STARTCHAR Gcaron +ENCODING 486 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +3C +66 +C2 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR gcaron +ENCODING 487 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR uni01E8 +ENCODING 488 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +E6 +66 +66 +6C +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01E9 +ENCODING 489 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +E0 +60 +66 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01EA +ENCODING 490 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR uni01EB +ENCODING 491 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR uni01EC +ENCODING 492 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR uni01ED +ENCODING 493 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR uni01EE +ENCODING 494 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +FE +0C +18 +30 +7C +06 +06 +06 +06 +C6 +7C +00 +00 +ENDCHAR +STARTCHAR uni01EF +ENCODING 495 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +FE +06 +0C +18 +3C +06 +06 +06 +C6 +7C +00 +ENDCHAR +STARTCHAR uni01F0 +ENCODING 496 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +1B +0E +04 +00 +0E +06 +06 +06 +06 +06 +06 +66 +66 +3C +00 +ENDCHAR +STARTCHAR uni01F1 +ENCODING 497 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F7 +D9 +D9 +DA +DA +DA +DA +DC +DC +F7 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01F2 +ENCODING 498 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +D8 +D8 +DF +D9 +DA +DA +DA +DC +F7 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01F3 +ENCODING 499 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +7F +D9 +DA +DA +DA +DC +6F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01F4 +ENCODING 500 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +3C +66 +C2 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01F5 +ENCODING 501 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +30 +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR uni01F6 +ENCODING 502 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D8 +D8 +D8 +DB +FB +DB +DB +DB +DB +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01F7 +ENCODING 503 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +66 +6C +78 +70 +60 +60 +60 +60 +E0 +00 +ENDCHAR +STARTCHAR uni01F8 +ENCODING 504 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni01F9 +ENCODING 505 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +18 +00 +DC +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Aringacute +ENCODING 506 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +38 +6C +38 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR aringacute +ENCODING 507 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +38 +6C +38 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR AEacute +ENCODING 508 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +3E +6C +CC +CC +FE +CC +CC +CC +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR aeacute +ENCODING 509 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +CC +76 +36 +7E +D8 +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR Oslashacute +ENCODING 510 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +7A +C4 +CE +CE +D6 +E6 +E6 +46 +BC +00 +00 +00 +00 +ENDCHAR +STARTCHAR oslashacute +ENCODING 511 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7A +C4 +CE +D6 +E6 +46 +BC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0200 +ENCODING 512 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +66 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0201 +ENCODING 513 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +66 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0202 +ENCODING 514 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0203 +ENCODING 515 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0204 +ENCODING 516 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +66 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0205 +ENCODING 517 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +66 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0206 +ENCODING 518 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0207 +ENCODING 519 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0208 +ENCODING 520 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +66 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0209 +ENCODING 521 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +66 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni020A +ENCODING 522 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +3C +66 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni020B +ENCODING 523 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni020C +ENCODING 524 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +66 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni020D +ENCODING 525 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +66 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni020E +ENCODING 526 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni020F +ENCODING 527 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0210 +ENCODING 528 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +66 +00 +FC +66 +66 +66 +7C +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0211 +ENCODING 529 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +66 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0212 +ENCODING 530 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +00 +FC +66 +66 +66 +7C +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0213 +ENCODING 531 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +00 +DC +76 +66 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0214 +ENCODING 532 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +66 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0215 +ENCODING 533 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +66 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0216 +ENCODING 534 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0217 +ENCODING 535 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Scommaaccent +ENCODING 536 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +60 +38 +0C +06 +C6 +C6 +7C +00 +18 +18 +30 +ENDCHAR +STARTCHAR scommaaccent +ENCODING 537 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +18 +18 +30 +ENDCHAR +STARTCHAR Tcommaaccent +ENCODING 538 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +00 +18 +18 +30 +ENDCHAR +STARTCHAR tcommaaccent +ENCODING 539 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +36 +1C +00 +18 +18 +30 +ENDCHAR +STARTCHAR uni021C +ENCODING 540 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +86 +06 +1C +74 +06 +06 +06 +06 +1C +F0 +00 +00 +ENDCHAR +STARTCHAR uni021D +ENCODING 541 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +0E +3C +06 +06 +1C +F0 +00 +00 +ENDCHAR +STARTCHAR uni021E +ENCODING 542 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni021F +ENCODING 543 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +E0 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0222 +ENCODING 546 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +C6 +C6 +C6 +7C +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0223 +ENCODING 547 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +66 +66 +66 +3C +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0224 +ENCODING 548 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +86 +0C +18 +30 +60 +C0 +C0 +FC +06 +0C +00 +00 +ENDCHAR +STARTCHAR uni0225 +ENCODING 549 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +CC +18 +30 +60 +C0 +FC +06 +0C +00 +00 +ENDCHAR +STARTCHAR uni0226 +ENCODING 550 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0227 +ENCODING 551 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0228 +ENCODING 552 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +62 +66 +FE +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni0229 +ENCODING 553 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni022A +ENCODING 554 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +00 +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni022B +ENCODING 555 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni022C +ENCODING 556 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +00 +72 +9C +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni022D +ENCODING 557 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +00 +76 +DC +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni022E +ENCODING 558 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni022F +ENCODING 559 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0230 +ENCODING 560 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +00 +30 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0231 +ENCODING 561 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +30 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0232 +ENCODING 562 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +3C +00 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0233 +ENCODING 563 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni0250 +ENCODING 592 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +7C +60 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0251 +ENCODING 593 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +74 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0252 +ENCODING 594 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +5C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0253 +ENCODING 595 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +60 +78 +6C +66 +66 +66 +66 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0254 +ENCODING 596 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0255 +ENCODING 597 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +DC +E6 +7C +80 +00 +00 +00 +ENDCHAR +STARTCHAR uni0256 +ENCODING 598 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +7C +0C +0D +06 +00 +ENDCHAR +STARTCHAR uni0257 +ENCODING 599 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +0D +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0258 +ENCODING 600 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0259 +ENCODING 601 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +06 +FE +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni025A +ENCODING 602 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3B +6C +8E +16 +26 +6C +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni025B +ENCODING 603 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +78 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni025C +ENCODING 604 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +3C +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni025D +ENCODING 605 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7A +CD +0D +38 +0C +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni025E +ENCODING 606 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +DC +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni025F +ENCODING 607 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0E +06 +06 +1F +06 +06 +06 +66 +66 +3C +00 +ENDCHAR +STARTCHAR uni0260 +ENCODING 608 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +06 +0D +7C +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR uni0261 +ENCODING 609 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR uni0262 +ENCODING 610 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +CE +C6 +C6 +7A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0263 +ENCODING 611 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +46 +6C +2C +2C +38 +18 +18 +18 +18 +00 +ENDCHAR +STARTCHAR uni0264 +ENCODING 612 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C2 +64 +28 +38 +38 +6C +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0265 +ENCODING 613 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CE +CC +CC +CC +CC +DC +6C +0C +0C +0E +00 +ENDCHAR +STARTCHAR uni0266 +ENCODING 614 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0267 +ENCODING 615 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +60 +6C +76 +66 +66 +66 +66 +E6 +06 +06 +1C +00 +ENDCHAR +STARTCHAR uni0268 +ENCODING 616 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +38 +18 +18 +3C +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0269 +ENCODING 617 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +18 +18 +18 +18 +18 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni026A +ENCODING 618 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni026B +ENCODING 619 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +7B +DE +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni026C +ENCODING 620 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +78 +58 +3E +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni026D +ENCODING 621 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +1B +0E +00 +ENDCHAR +STARTCHAR uni026E +ENCODING 622 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +7F +63 +66 +6C +7E +63 +F3 +03 +33 +1E +00 +ENDCHAR +STARTCHAR uni026F +ENCODING 623 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +D6 +D6 +D6 +D6 +FE +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0270 +ENCODING 624 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +D6 +D6 +D6 +D6 +FE +6E +06 +06 +06 +00 +ENDCHAR +STARTCHAR uni0271 +ENCODING 625 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +EC +FE +D6 +D6 +D6 +D6 +C6 +06 +06 +1C +00 +ENDCHAR +STARTCHAR uni0272 +ENCODING 626 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +60 +60 +C0 +00 +ENDCHAR +STARTCHAR uni0273 +ENCODING 627 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +06 +06 +03 +00 +ENDCHAR +STARTCHAR uni0274 +ENCODING 628 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0275 +ENCODING 629 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +FE +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0276 +ENCODING 630 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6E +D8 +D8 +DE +D8 +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0277 +ENCODING 631 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +C6 +D6 +D6 +D6 +D6 +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0278 +ENCODING 632 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +10 +7C +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +10 +00 +ENDCHAR +STARTCHAR uni0279 +ENCODING 633 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +1E +0C +0C +0C +CC +DC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni027A +ENCODING 634 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +0C +0C +0C +0C +0C +0C +CC +DC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni027B +ENCODING 635 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +1E +0C +0C +0C +CC +DC +6C +0C +0D +06 +00 +ENDCHAR +STARTCHAR uni027C +ENCODING 636 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +76 +66 +60 +60 +60 +60 +60 +60 +F0 +00 +ENDCHAR +STARTCHAR uni027D +ENCODING 637 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +76 +66 +60 +60 +60 +60 +60 +6C +38 +00 +ENDCHAR +STARTCHAR uni027E +ENCODING 638 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +66 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni027F +ENCODING 639 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +CC +CC +0C +0C +0C +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0280 +ENCODING 640 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FC +66 +66 +7C +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0281 +ENCODING 641 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +E6 +66 +6C +7C +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0282 +ENCODING 642 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +60 +38 +0C +C6 +FC +C0 +D8 +70 +00 +ENDCHAR +STARTCHAR uni0283 +ENCODING 643 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0E +1B +19 +18 +18 +18 +18 +18 +18 +18 +98 +D8 +70 +00 +ENDCHAR +STARTCHAR uni0284 +ENCODING 644 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0E +1B +19 +18 +18 +18 +18 +18 +18 +3C +98 +D8 +70 +00 +ENDCHAR +STARTCHAR uni0285 +ENCODING 645 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +D8 +18 +18 +18 +18 +1B +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0286 +ENCODING 646 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0E +1B +18 +18 +18 +18 +18 +18 +7E +D8 +70 +00 +ENDCHAR +STARTCHAR uni0287 +ENCODING 647 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D8 +18 +18 +18 +18 +7E +18 +18 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0288 +ENCODING 648 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +30 +30 +30 +36 +1C +00 +ENDCHAR +STARTCHAR uni0289 +ENCODING 649 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +FF +66 +66 +3B +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni028A +ENCODING 650 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +EE +6C +6C +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni028B +ENCODING 651 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni028C +ENCODING 652 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +3C +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni028D +ENCODING 653 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +FE +D6 +D6 +D6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni028E +ENCODING 654 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3E +60 +C0 +FC +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni028F +ENCODING 655 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +3C +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0290 +ENCODING 656 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +CC +18 +30 +60 +C6 +FE +06 +06 +03 +00 +ENDCHAR +STARTCHAR uni0291 +ENCODING 657 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +CC +18 +30 +66 +CB +FE +10 +00 +00 +00 +ENDCHAR +STARTCHAR uni0292 +ENCODING 658 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +06 +0C +18 +3C +06 +06 +06 +C6 +7C +00 +ENDCHAR +STARTCHAR uni0293 +ENCODING 659 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +06 +0C +18 +3C +06 +06 +7E +C7 +7C +00 +ENDCHAR +STARTCHAR uni0294 +ENCODING 660 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +06 +1C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0295 +ENCODING 661 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C0 +70 +30 +30 +30 +30 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0296 +ENCODING 662 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +1C +06 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0297 +ENCODING 663 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C0 +C0 +C0 +C6 +7C +00 +ENDCHAR +STARTCHAR uni0298 +ENCODING 664 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C3 +C3 +DB +DB +C3 +C3 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0299 +ENCODING 665 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FC +66 +66 +7C +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni029A +ENCODING 666 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +76 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni029B +ENCODING 667 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +03 +7E +C6 +C0 +CE +C6 +C6 +7A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni029C +ENCODING 668 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR j +ENCODING 669 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +0C +00 +1C +0C +0C +0C +0C +0C +0C +7E +CC +78 +00 +ENDCHAR +STARTCHAR uni029D +ENCODING 670 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CE +CC +6C +3C +3C +6C +CC +0C +0C +0E +00 +ENDCHAR +STARTCHAR uni029E +ENCODING 671 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F0 +60 +60 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni029F +ENCODING 672 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +06 +0D +7C +CC +CC +CC +CC +CC +7C +0C +0C +1E +00 +ENDCHAR +STARTCHAR uni02A0 +ENCODING 673 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +06 +1C +18 +7E +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02A1 +ENCODING 674 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C0 +70 +30 +FC +30 +30 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02A2 +ENCODING 675 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +7F +D9 +DA +DA +DA +DC +6F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02A3 +ENCODING 676 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +7F +DB +DB +DE +DE +DB +6B +03 +1B +0E +00 +ENDCHAR +STARTCHAR uni02A4 +ENCODING 677 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +7F +D9 +DA +DA +DB +DD +6F +04 +00 +00 +00 +ENDCHAR +STARTCHAR uni02A5 +ENCODING 678 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +60 +60 +F6 +6D +6C +66 +63 +6B +36 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02A6 +ENCODING 679 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +26 +6D +6C +FC +6C +6C +6C +6C +6C +3C +0C +2C +18 +00 +ENDCHAR +STARTCHAR uni02A7 +ENCODING 680 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +60 +60 +F6 +6D +6C +6C +6E +6D +36 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02A8 +ENCODING 681 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D8 +C0 +FE +DB +DB +DB +DB +DB +DB +03 +03 +0E +00 +ENDCHAR +STARTCHAR uni02A9 +ENCODING 682 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +66 +6D +6C +66 +63 +6B +F6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02AA +ENCODING 683 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +6F +6B +63 +66 +6C +6D +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02AB +ENCODING 684 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +D6 +7C +6C +28 +C6 +D6 +7C +6C +28 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02AC +ENCODING 685 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +C6 +C6 +00 +00 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B0 +ENCODING 688 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +F0 +D8 +D8 +D8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B1 +ENCODING 689 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +C0 +F0 +D8 +D8 +D8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B2 +ENCODING 690 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +00 +38 +18 +18 +D8 +70 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B3 +ENCODING 691 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +B0 +D8 +C0 +C0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B4 +ENCODING 692 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +18 +D8 +68 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B5 +ENCODING 693 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +18 +D8 +68 +0C +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B6 +ENCODING 694 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +D8 +D8 +F0 +D8 +D8 +F0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B7 +ENCODING 695 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C6 +D6 +7C +6C +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B8 +ENCODING 696 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +D8 +D8 +78 +18 +70 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02B9 +ENCODING 697 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +30 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02BA +ENCODING 698 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +36 +6C +D8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02BB +ENCODING 699 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +30 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57929 +ENCODING 700 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +18 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii64937 +ENCODING 701 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +30 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02BE +ENCODING 702 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +0C +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02BF +ENCODING 703 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +60 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02C0 +ENCODING 704 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D8 +18 +30 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02C1 +ENCODING 705 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D8 +C0 +60 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02C2 +ENCODING 706 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +70 +C0 +70 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02C3 +ENCODING 707 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +70 +18 +70 +C0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02C4 +ENCODING 708 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +20 +20 +70 +70 +D8 +D8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02C5 +ENCODING 709 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +D8 +D8 +70 +70 +20 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR circumflex +ENCODING 710 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR caron +ENCODING 711 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02C8 +ENCODING 712 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +18 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR macron +ENCODING 713 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02CA +ENCODING 714 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02CB +ENCODING 715 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02CC +ENCODING 716 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +18 +00 +ENDCHAR +STARTCHAR uni02CD +ENCODING 717 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni02CE +ENCODING 718 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +0C +00 +ENDCHAR +STARTCHAR uni02CF +ENCODING 719 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +30 +60 +00 +ENDCHAR +STARTCHAR breve +ENCODING 728 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dotaccent +ENCODING 729 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ring +ENCODING 730 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +38 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ogonek +ENCODING 731 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +30 +1C +00 +ENDCHAR +STARTCHAR tilde +ENCODING 732 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR hungarumlaut +ENCODING 733 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +CC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni02EE +ENCODING 750 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +6C +6C +48 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR gravecomb +ENCODING 768 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR acutecomb +ENCODING 769 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR tildecomb +ENCODING 771 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +34 +58 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR hookabovecomb +ENCODING 777 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +18 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0312 +ENCODING 786 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +30 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0313 +ENCODING 787 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +18 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0314 +ENCODING 788 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +30 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dotbelowcomb +ENCODING 803 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni0340 +ENCODING 832 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0341 +ENCODING 833 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +06 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0374 +ENCODING 884 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +20 +40 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0375 +ENCODING 885 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +20 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uni037A +ENCODING 890 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +30 +34 +18 +00 +ENDCHAR +STARTCHAR uni037E +ENCODING 894 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +00 +00 +00 +18 +18 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR tonos +ENCODING 900 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dieresistonos +ENCODING 901 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +6C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Alphatonos +ENCODING 902 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR anoteleia +ENCODING 903 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Epsilontonos +ENCODING 904 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +3E +32 +30 +34 +3C +34 +30 +30 +32 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR Etatonos +ENCODING 905 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +33 +33 +33 +33 +3F +33 +33 +33 +33 +33 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Iotatonos +ENCODING 906 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Omicrontonos +ENCODING 908 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +3C +66 +66 +66 +66 +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Upsilontonos +ENCODING 910 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +66 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Omegatonos +ENCODING 911 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +3E +63 +63 +63 +63 +63 +36 +36 +36 +77 +00 +00 +00 +00 +ENDCHAR +STARTCHAR iotadieresistonos +ENCODING 912 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +6C +00 +38 +18 +18 +18 +18 +18 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR Alpha +ENCODING 913 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Beta +ENCODING 914 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR Gamma +ENCODING 915 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +60 +60 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Delta +ENCODING 916 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +38 +38 +6C +6C +C6 +C6 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Epsilon +ENCODING 917 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Zeta +ENCODING 918 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +86 +0C +18 +30 +60 +C2 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Eta +ENCODING 919 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Theta +ENCODING 920 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Iota +ENCODING 921 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Kappa +ENCODING 922 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Lambda +ENCODING 923 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +38 +38 +6C +6C +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Mu +ENCODING 924 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Nu +ENCODING 925 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Xi +ENCODING 926 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +82 +44 +7C +44 +00 +82 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Omicron +ENCODING 927 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Pi +ENCODING 928 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Rho +ENCODING 929 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Sigma +ENCODING 931 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +62 +30 +18 +18 +30 +62 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Tau +ENCODING 932 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Upsilon +ENCODING 933 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Phi +ENCODING 934 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +7C +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Chi +ENCODING 935 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +6C +7C +38 +38 +7C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Psi +ENCODING 936 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +92 +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Omega +ENCODING 937 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +6C +6C +6C +EE +00 +00 +00 +00 +ENDCHAR +STARTCHAR Iotadieresis +ENCODING 938 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +66 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Upsilondieresis +ENCODING 939 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +66 +00 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR alphatonos +ENCODING 940 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR epsilontonos +ENCODING 941 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7C +C6 +C0 +78 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR etatonos +ENCODING 942 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +DC +66 +66 +66 +66 +66 +66 +06 +06 +06 +00 +ENDCHAR +STARTCHAR iotatonos +ENCODING 943 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +38 +18 +18 +18 +18 +18 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR upsilondieresistonos +ENCODING 944 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +6C +00 +CC +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR alpha +ENCODING 945 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR beta +ENCODING 946 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +6C +66 +66 +66 +66 +6C +60 +60 +60 +00 +ENDCHAR +STARTCHAR gamma +ENCODING 947 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +46 +6C +2C +2C +38 +18 +18 +18 +18 +00 +ENDCHAR +STARTCHAR delta +ENCODING 948 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +30 +18 +7C +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR epsilon +ENCODING 949 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +78 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR zeta +ENCODING 950 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +46 +7C +18 +30 +60 +60 +C0 +C0 +C0 +7C +06 +06 +1C +00 +ENDCHAR +STARTCHAR eta +ENCODING 951 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +06 +06 +06 +00 +ENDCHAR +STARTCHAR theta +ENCODING 952 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +7E +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR iota +ENCODING 953 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +18 +18 +18 +18 +18 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR kappa +ENCODING 954 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +E6 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR lambda +ENCODING 955 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +20 +30 +10 +38 +38 +6C +64 +C6 +C2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR mu +ENCODING 956 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +F6 +C0 +C0 +C0 +00 +ENDCHAR +STARTCHAR nu +ENCODING 957 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +66 +6C +3C +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR xi +ENCODING 958 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +3C +30 +60 +3C +60 +C0 +C0 +C0 +7C +06 +06 +1C +00 +ENDCHAR +STARTCHAR omicron +ENCODING 959 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR pi +ENCODING 960 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +6C +6C +6C +6C +6C +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR rho +ENCODING 961 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +66 +66 +66 +66 +7C +60 +60 +60 +00 +ENDCHAR +STARTCHAR sigma1 +ENCODING 962 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +7C +06 +06 +1C +00 +00 +ENDCHAR +STARTCHAR sigma +ENCODING 963 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR tau +ENCODING 964 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +18 +18 +18 +18 +18 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR upsilon +ENCODING 965 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR phi +ENCODING 966 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +10 +00 +ENDCHAR +STARTCHAR chi +ENCODING 967 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +86 +46 +2C +2C +18 +30 +68 +68 +C4 +C2 +00 +ENDCHAR +STARTCHAR psi +ENCODING 968 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +92 +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +10 +00 +ENDCHAR +STARTCHAR omega +ENCODING 969 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +C6 +D6 +D6 +D6 +D6 +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR iotadieresis +ENCODING 970 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +00 +38 +18 +18 +18 +18 +18 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR upsilondieresis +ENCODING 971 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +CC +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR omicrontonos +ENCODING 972 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR upsilontonos +ENCODING 973 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +CC +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR omegatonos +ENCODING 974 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +6C +C6 +D6 +D6 +D6 +D6 +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03D0 +ENCODING 976 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +6C +7C +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR theta1 +ENCODING 977 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +36 +1E +C6 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Upsilon1 +ENCODING 978 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C2 +65 +24 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03D3 +ENCODING 979 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +C0 +21 +32 +12 +1C +0C +0C +0C +0C +0C +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03D4 +ENCODING 980 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C2 +65 +24 +38 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR phi1 +ENCODING 981 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +10 +7C +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +10 +00 +ENDCHAR +STARTCHAR omega1 +ENCODING 982 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +6C +C6 +D6 +D6 +D6 +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03D7 +ENCODING 983 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +46 +A6 +2C +38 +68 +CA +C4 +0C +18 +00 +00 +ENDCHAR +STARTCHAR uni03DA +ENCODING 986 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +C0 +C0 +60 +3C +06 +06 +1C +00 +00 +ENDCHAR +STARTCHAR uni03DB +ENCODING 987 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +C0 +C0 +C0 +C0 +C0 +7C +06 +06 +1C +00 +ENDCHAR +STARTCHAR uni03DC +ENCODING 988 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +60 +78 +68 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03DD +ENCODING 989 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +32 +30 +30 +3C +34 +30 +30 +30 +30 +00 +ENDCHAR +STARTCHAR uni03DE +ENCODING 990 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +60 +30 +30 +60 +63 +FF +C6 +06 +0C +0C +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03DF +ENCODING 991 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +60 +60 +FE +FE +0C +0C +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03E0 +ENCODING 992 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +AC +26 +26 +0B +0B +1B +1B +1B +1B +03 +02 +04 +00 +ENDCHAR +STARTCHAR uni03E1 +ENCODING 993 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C0 +60 +30 +18 +28 +4C +14 +24 +06 +02 +02 +00 +ENDCHAR +STARTCHAR uni03E2 +ENCODING 994 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +DB +DB +DB +DB +DB +DB +DB +6D +03 +3E +00 +00 +ENDCHAR +STARTCHAR uni03E3 +ENCODING 995 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DB +DB +DB +DB +DB +DB +6D +03 +7E +00 +00 +ENDCHAR +STARTCHAR uni03E4 +ENCODING 996 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +D6 +C6 +C6 +C6 +7E +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03E5 +ENCODING 997 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +36 +66 +66 +66 +66 +3E +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03E6 +ENCODING 998 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +C0 +C0 +FC +C6 +C6 +C6 +C6 +C6 +06 +76 +9C +00 +ENDCHAR +STARTCHAR uni03E7 +ENCODING 999 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +7C +D6 +66 +06 +06 +66 +BC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03E8 +ENCODING 1000 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +06 +3C +60 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03E9 +ENCODING 1001 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +26 +1C +70 +C0 +C2 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03EA +ENCODING 1002 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +68 +38 +30 +38 +38 +4C +4C +86 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03EB +ENCODING 1003 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +64 +BA +30 +38 +28 +4C +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03EC +ENCODING 1004 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +C0 +CC +D6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03ED +ENCODING 1005 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +C0 +DC +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03EE +ENCODING 1006 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +7E +99 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03EF +ENCODING 1007 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +1C +18 +7E +58 +18 +18 +18 +38 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03F0 +ENCODING 1008 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +46 +A6 +2C +38 +68 +CA +C4 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03F1 +ENCODING 1009 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +FC +C0 +60 +3C +06 +00 +ENDCHAR +STARTCHAR uni03F2 +ENCODING 1010 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni03F3 +ENCODING 1011 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +06 +00 +0E +06 +06 +06 +06 +06 +06 +66 +66 +3C +00 +ENDCHAR +STARTCHAR uni0400 +ENCODING 1024 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +18 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10023 +ENCODING 1025 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10051 +ENCODING 1026 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +B2 +30 +3E +33 +33 +33 +33 +33 +33 +03 +06 +00 +00 +ENDCHAR +STARTCHAR afii10052 +ENCODING 1027 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +FE +66 +62 +60 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10053 +ENCODING 1028 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +F8 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10054 +ENCODING 1029 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +60 +38 +0C +06 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10055 +ENCODING 1030 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10056 +ENCODING 1031 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +66 +00 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10057 +ENCODING 1032 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +0C +0C +0C +0C +0C +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10058 +ENCODING 1033 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +D8 +D8 +D8 +DE +DB +DB +DB +DB +DE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10059 +ENCODING 1034 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D8 +D8 +D8 +D8 +FE +DB +DB +DB +DB +DE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10060 +ENCODING 1035 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +B2 +30 +3E +33 +33 +33 +33 +33 +33 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10061 +ENCODING 1036 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +E6 +66 +66 +6C +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni040D +ENCODING 1037 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +18 +00 +C6 +C6 +CE +DE +FE +F6 +E6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10062 +ENCODING 1038 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +C6 +C6 +C6 +C6 +7E +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10145 +ENCODING 1039 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +FE +38 +10 +10 +00 +ENDCHAR +STARTCHAR afii10017 +ENCODING 1040 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10018 +ENCODING 1041 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +60 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10019 +ENCODING 1042 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10020 +ENCODING 1043 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +60 +60 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10021 +ENCODING 1044 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +6C +6C +6C +6C +6C +6C +6C +6C +FE +C6 +82 +00 +00 +ENDCHAR +STARTCHAR afii10022 +ENCODING 1045 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10024 +ENCODING 1046 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D6 +D6 +D6 +7C +38 +7C +D6 +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10025 +ENCODING 1047 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +86 +06 +3C +06 +06 +86 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10026 +ENCODING 1048 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +CE +DE +FE +F6 +E6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10027 +ENCODING 1049 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +C6 +C6 +C6 +CE +DE +FE +F6 +E6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10028 +ENCODING 1050 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10029 +ENCODING 1051 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3E +66 +66 +66 +66 +66 +66 +66 +66 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10030 +ENCODING 1052 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10031 +ENCODING 1053 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10032 +ENCODING 1054 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10033 +ENCODING 1055 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10034 +ENCODING 1056 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10035 +ENCODING 1057 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10036 +ENCODING 1058 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10037 +ENCODING 1059 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +7E +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10038 +ENCODING 1060 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +7C +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10039 +ENCODING 1061 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +6C +7C +38 +38 +7C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10040 +ENCODING 1062 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +CC +CC +CC +CC +CC +CC +CC +CC +FE +06 +02 +00 +00 +ENDCHAR +STARTCHAR afii10041 +ENCODING 1063 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +7E +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10042 +ENCODING 1064 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +D6 +D6 +D6 +D6 +D6 +D6 +D6 +D6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10043 +ENCODING 1065 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +D6 +D6 +D6 +D6 +D6 +D6 +D6 +D6 +FF +03 +01 +00 +00 +ENDCHAR +STARTCHAR afii10044 +ENCODING 1066 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +B0 +B0 +30 +3C +36 +36 +36 +36 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10045 +ENCODING 1067 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C3 +C3 +C3 +C3 +F3 +DB +DB +DB +DB +F3 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10046 +ENCODING 1068 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10047 +ENCODING 1069 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +86 +06 +3E +06 +06 +86 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10048 +ENCODING 1070 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +9C +B6 +B6 +B6 +F6 +B6 +B6 +B6 +B6 +9C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10049 +ENCODING 1071 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +CC +CC +CC +7C +6C +6C +6C +6C +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10065 +ENCODING 1072 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10066 +ENCODING 1073 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +7C +C0 +C0 +FC +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10067 +ENCODING 1074 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FC +66 +66 +7C +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10068 +ENCODING 1075 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +66 +62 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10069 +ENCODING 1076 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +6C +6C +6C +6C +6C +FE +C6 +82 +00 +00 +ENDCHAR +STARTCHAR afii10070 +ENCODING 1077 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10072 +ENCODING 1078 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +D6 +D6 +D6 +7C +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10073 +ENCODING 1079 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +3C +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10074 +ENCODING 1080 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +CE +DE +FE +F6 +E6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10075 +ENCODING 1081 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +C6 +CE +DE +FE +F6 +E6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10076 +ENCODING 1082 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +E6 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10077 +ENCODING 1083 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3E +66 +66 +66 +66 +66 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10078 +ENCODING 1084 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10079 +ENCODING 1085 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10080 +ENCODING 1086 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10081 +ENCODING 1087 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10082 +ENCODING 1088 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +7C +60 +60 +F0 +00 +ENDCHAR +STARTCHAR afii10083 +ENCODING 1089 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10084 +ENCODING 1090 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +5A +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10085 +ENCODING 1091 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR afii10086 +ENCODING 1092 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +7C +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +10 +00 +ENDCHAR +STARTCHAR afii10087 +ENCODING 1093 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +6C +38 +38 +38 +6C +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10088 +ENCODING 1094 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +FE +06 +02 +00 +00 +ENDCHAR +STARTCHAR afii10089 +ENCODING 1095 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +7E +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10090 +ENCODING 1096 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +D6 +D6 +D6 +D6 +D6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10091 +ENCODING 1097 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +D6 +D6 +D6 +D6 +D6 +FF +03 +01 +00 +00 +ENDCHAR +STARTCHAR afii10092 +ENCODING 1098 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F8 +B0 +30 +3C +36 +36 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10093 +ENCODING 1099 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C3 +C3 +C3 +F3 +DB +DB +F3 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10094 +ENCODING 1100 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F0 +60 +60 +7C +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10095 +ENCODING 1101 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +3E +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10096 +ENCODING 1102 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +9C +B6 +B6 +F6 +B6 +B6 +9C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10097 +ENCODING 1103 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +CC +CC +7C +6C +6C +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0450 +ENCODING 1104 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10071 +ENCODING 1105 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10099 +ENCODING 1106 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +F8 +60 +6C +76 +66 +66 +66 +66 +E6 +06 +06 +1C +00 +ENDCHAR +STARTCHAR afii10100 +ENCODING 1107 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +FE +66 +62 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10101 +ENCODING 1108 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +F8 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10102 +ENCODING 1109 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10103 +ENCODING 1110 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10104 +ENCODING 1111 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10105 +ENCODING 1112 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +06 +00 +0E +06 +06 +06 +06 +06 +06 +66 +66 +3C +00 +ENDCHAR +STARTCHAR afii10106 +ENCODING 1113 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +D8 +D8 +DE +DB +DB +DE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10107 +ENCODING 1114 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +D8 +D8 +D8 +FE +DB +DB +DE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10108 +ENCODING 1115 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +F8 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10109 +ENCODING 1116 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +E6 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni045D +ENCODING 1117 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +C6 +CE +DE +FE +F6 +E6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10110 +ENCODING 1118 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR afii10193 +ENCODING 1119 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +FE +38 +10 +10 +00 +ENDCHAR +STARTCHAR uni0460 +ENCODING 1120 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +C6 +C6 +D6 +D6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0461 +ENCODING 1121 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10146 +ENCODING 1122 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +FC +B4 +30 +3C +36 +36 +36 +36 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10194 +ENCODING 1123 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +30 +FC +B4 +30 +3C +36 +36 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0464 +ENCODING 1124 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CE +DB +D9 +D8 +FE +D8 +D8 +D9 +DB +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0465 +ENCODING 1125 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CE +DB +D8 +FE +D8 +DB +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0466 +ENCODING 1126 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +38 +6C +6C +6C +FE +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0467 +ENCODING 1127 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +38 +38 +6C +7C +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0468 +ENCODING 1128 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +88 +8C +9C +96 +F6 +B6 +BF +AB +EB +EB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0469 +ENCODING 1129 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +88 +8C +9C +F6 +BE +AB +EB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni046A +ENCODING 1130 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +6C +6C +38 +7C +D6 +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni046B +ENCODING 1131 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +C6 +6C +7C +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni046C +ENCODING 1132 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +A3 +B2 +96 +FC +9C +BE +AA +AB +EB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni046D +ENCODING 1133 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +BF +A3 +96 +FE +AB +AB +EB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni046E +ENCODING 1134 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +10 +7C +C6 +06 +06 +7C +06 +06 +06 +7C +C0 +7C +00 +00 +ENDCHAR +STARTCHAR uni046F +ENCODING 1135 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +6C +38 +10 +00 +7C +86 +06 +7C +06 +06 +7C +C0 +7C +00 +00 +ENDCHAR +STARTCHAR uni0470 +ENCODING 1136 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +96 +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0471 +ENCODING 1137 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +10 +96 +D6 +D6 +D6 +D6 +D6 +7C +10 +10 +10 +00 +ENDCHAR +STARTCHAR afii10147 +ENCODING 1138 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10195 +ENCODING 1139 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +FE +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10148 +ENCODING 1140 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C2 +C6 +C6 +C4 +CC +6C +68 +78 +38 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10196 +ENCODING 1141 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C2 +C6 +64 +6C +38 +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0476 +ENCODING 1142 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +66 +00 +C2 +C6 +C4 +C4 +6C +68 +78 +38 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0477 +ENCODING 1143 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +66 +00 +C2 +C6 +64 +6C +38 +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0478 +ENCODING 1144 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D8 +D8 +DB +DB +DB +DB +DB +DB +6F +03 +06 +1C +00 +ENDCHAR +STARTCHAR uni0479 +ENCODING 1145 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +73 +DB +DB +DB +DB +DB +6F +03 +06 +1C +00 +ENDCHAR +STARTCHAR uni047A +ENCODING 1146 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +7C +D6 +C6 +C6 +C6 +C6 +C6 +C6 +D6 +7C +10 +00 +00 +00 +ENDCHAR +STARTCHAR uni047B +ENCODING 1147 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +7C +D6 +C6 +C6 +C6 +D6 +7C +10 +00 +00 +00 +ENDCHAR +STARTCHAR uni047C +ENCODING 1148 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +7C +40 +6C +C6 +C6 +D6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni047D +ENCODING 1149 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +04 +7C +40 +00 +6C +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni047E +ENCODING 1150 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +54 +00 +6C +C6 +C6 +D6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni047F +ENCODING 1151 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +54 +00 +6C +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0480 +ENCODING 1152 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +C0 +C0 +C0 +60 +3C +0C +0C +0C +00 +ENDCHAR +STARTCHAR uni0481 +ENCODING 1153 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C0 +78 +18 +18 +00 +00 +ENDCHAR +STARTCHAR uni0482 +ENCODING 1154 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +06 +3C +0F +18 +18 +F0 +3C +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0483 +ENCODING 1155 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +04 +7C +40 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0484 +ENCODING 1156 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +24 +44 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0485 +ENCODING 1157 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +40 +7C +40 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0486 +ENCODING 1158 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +04 +7C +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0488 +ENCODING 1160 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +66 +00 +C3 +00 +66 +18 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0489 +ENCODING 1161 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +50 +46 +00 +82 +41 +00 +62 +0A +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni048A +ENCODING 1162 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +C6 +C6 +C6 +CE +DE +FE +F6 +E6 +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni048B +ENCODING 1163 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +C6 +CE +DE +FE +F6 +E6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni048C +ENCODING 1164 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +60 +F0 +60 +60 +60 +7C +66 +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni048D +ENCODING 1165 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +60 +F0 +60 +60 +7C +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni048E +ENCODING 1166 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +6E +64 +7A +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni048F +ENCODING 1167 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +6E +64 +7A +60 +60 +F0 +00 +ENDCHAR +STARTCHAR afii10050 +ENCODING 1168 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +02 +06 +FE +60 +60 +60 +60 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10098 +ENCODING 1169 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +02 +06 +FE +60 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0492 +ENCODING 1170 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +60 +F8 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0493 +ENCODING 1171 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +66 +62 +F8 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0494 +ENCODING 1172 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +60 +7C +66 +66 +66 +66 +F6 +06 +16 +0C +00 +ENDCHAR +STARTCHAR uni0495 +ENCODING 1173 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +66 +62 +78 +6C +66 +F6 +06 +16 +0C +00 +ENDCHAR +STARTCHAR uni0496 +ENCODING 1174 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D6 +D6 +D6 +7C +38 +7C +D6 +D6 +D6 +D7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni0497 +ENCODING 1175 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +D6 +D6 +D6 +7C +D6 +D6 +D7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni0498 +ENCODING 1176 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +86 +06 +3C +06 +06 +86 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR uni0499 +ENCODING 1177 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +3C +06 +C6 +7C +30 +60 +38 +00 +ENDCHAR +STARTCHAR uni049A +ENCODING 1178 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni049B +ENCODING 1179 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +E6 +6C +78 +78 +6C +66 +E7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni049C +ENCODING 1180 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +D6 +D6 +DC +F8 +DC +D6 +D6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni049D +ENCODING 1181 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +D6 +DC +F8 +DC +D6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni049E +ENCODING 1182 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +F6 +6C +78 +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni049F +ENCODING 1183 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +F0 +66 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04A0 +ENCODING 1184 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F3 +B3 +B3 +36 +3C +3C +36 +33 +33 +73 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04A1 +ENCODING 1185 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F3 +B6 +BC +3C +36 +33 +73 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04A2 +ENCODING 1186 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04A3 +ENCODING 1187 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +FE +C6 +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04A4 +ENCODING 1188 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DF +DB +D9 +D8 +F8 +D8 +D8 +D8 +D8 +D8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04A5 +ENCODING 1189 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DF +DB +D9 +F8 +D8 +D8 +D8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04A6 +ENCODING 1190 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +D8 +D8 +D8 +DE +DB +DB +DB +DB +DB +03 +0B +06 +00 +ENDCHAR +STARTCHAR uni04A7 +ENCODING 1191 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +D8 +D8 +D8 +FE +DB +DB +DB +03 +0B +06 +00 +ENDCHAR +STARTCHAR uni04A8 +ENCODING 1192 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C2 +CC +D6 +D6 +D6 +D6 +D6 +CC +7A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04A9 +ENCODING 1193 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C2 +CC +D6 +D6 +CC +7A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04AA +ENCODING 1194 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +C0 +C0 +C2 +66 +3C +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni04AB +ENCODING 1195 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni04AC +ENCODING 1196 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +0C +04 +00 +00 +ENDCHAR +STARTCHAR uni04AD +ENCODING 1197 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +5A +18 +18 +18 +18 +3C +0C +04 +00 +00 +ENDCHAR +STARTCHAR uni04AE +ENCODING 1198 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04AF +ENCODING 1199 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +66 +66 +3C +18 +18 +18 +3C +00 +ENDCHAR +STARTCHAR uni04B0 +ENCODING 1200 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +66 +66 +3C +18 +7E +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04B1 +ENCODING 1201 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +66 +66 +3C +18 +7E +18 +3C +00 +ENDCHAR +STARTCHAR uni04B2 +ENCODING 1202 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +6C +7C +38 +38 +7C +6C +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04B3 +ENCODING 1203 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +6C +38 +38 +38 +6C +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04B4 +ENCODING 1204 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F6 +66 +66 +66 +66 +66 +66 +66 +66 +7F +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04B5 +ENCODING 1205 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F6 +66 +66 +66 +66 +66 +7F +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04B6 +ENCODING 1206 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +7E +06 +06 +06 +07 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04B7 +ENCODING 1207 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +7E +06 +06 +07 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04B8 +ENCODING 1208 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +D6 +D6 +7E +16 +16 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04B9 +ENCODING 1209 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +D6 +D6 +7E +16 +16 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04BA +ENCODING 1210 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +C0 +C0 +FC +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04BB +ENCODING 1211 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C0 +C0 +C0 +FC +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04BC +ENCODING 1212 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +33 +B3 +B3 +7F +30 +30 +30 +33 +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04BD +ENCODING 1213 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +9E +B3 +7F +30 +30 +33 +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04BE +ENCODING 1214 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +33 +B3 +B3 +7F +30 +30 +30 +33 +1E +0C +18 +0E +00 +ENDCHAR +STARTCHAR uni04BF +ENCODING 1215 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +9E +B3 +7F +30 +30 +33 +1E +0C +18 +0E +00 +ENDCHAR +STARTCHAR uni04C0 +ENCODING 1216 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04C1 +ENCODING 1217 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +D6 +D6 +D6 +7C +38 +7C +D6 +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04C2 +ENCODING 1218 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +D6 +D6 +D6 +7C +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04C3 +ENCODING 1219 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +06 +16 +0C +00 +ENDCHAR +STARTCHAR uni04C4 +ENCODING 1220 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +E6 +6C +78 +78 +6C +66 +E6 +06 +16 +0C +00 +ENDCHAR +STARTCHAR uni04C5 +ENCODING 1221 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3E +66 +66 +66 +66 +66 +66 +66 +66 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04C6 +ENCODING 1222 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3E +66 +66 +66 +66 +66 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04C7 +ENCODING 1223 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C6 +06 +16 +0C +00 +ENDCHAR +STARTCHAR uni04C8 +ENCODING 1224 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +FE +C6 +C6 +C6 +06 +16 +0C +00 +ENDCHAR +STARTCHAR uni04C9 +ENCODING 1225 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04CA +ENCODING 1226 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +FE +C6 +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04CB +ENCODING 1227 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +7E +06 +06 +06 +0E +0C +08 +00 +00 +ENDCHAR +STARTCHAR uni04CC +ENCODING 1228 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +7E +06 +06 +0E +0C +08 +00 +00 +ENDCHAR +STARTCHAR uni04CD +ENCODING 1229 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04CE +ENCODING 1230 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +EE +FE +FE +D6 +C6 +C7 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni04D0 +ENCODING 1232 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D1 +ENCODING 1233 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D2 +ENCODING 1234 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D3 +ENCODING 1235 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D4 +ENCODING 1236 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3E +6C +CC +CC +FE +CC +CC +CC +CC +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D5 +ENCODING 1237 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +76 +36 +7E +D8 +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D6 +ENCODING 1238 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D7 +ENCODING 1239 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04D8 +ENCODING 1240 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +06 +06 +06 +FE +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii10846 +ENCODING 1241 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +06 +FE +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04DA +ENCODING 1242 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +7C +C6 +06 +06 +FE +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04DB +ENCODING 1243 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +06 +06 +FE +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04DC +ENCODING 1244 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +D6 +D6 +D6 +7C +38 +7C +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04DD +ENCODING 1245 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +D6 +D6 +D6 +7C +D6 +D6 +D6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04DE +ENCODING 1246 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +7C +C6 +86 +06 +3C +06 +86 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04DF +ENCODING 1247 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +06 +3C +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E0 +ENCODING 1248 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +06 +0C +18 +3C +06 +06 +86 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E1 +ENCODING 1249 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +06 +0C +18 +3C +06 +06 +06 +C6 +7C +00 +ENDCHAR +STARTCHAR uni04E2 +ENCODING 1250 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +C6 +C6 +CE +DE +FE +F6 +E6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E3 +ENCODING 1251 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +C6 +CE +DE +FE +F6 +E6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E4 +ENCODING 1252 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C6 +C6 +CE +DE +FE +F6 +E6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E5 +ENCODING 1253 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +C6 +CE +DE +FE +F6 +E6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E6 +ENCODING 1254 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E7 +ENCODING 1255 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E8 +ENCODING 1256 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04E9 +ENCODING 1257 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +FE +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04EA +ENCODING 1258 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +7C +C6 +C6 +C6 +FE +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04EB +ENCODING 1259 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +C6 +FE +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04EC +ENCODING 1260 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +78 +CC +86 +06 +3E +06 +86 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04ED +ENCODING 1261 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +7C +C6 +06 +3E +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04EE +ENCODING 1262 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +C6 +C6 +C6 +C6 +7E +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04EF +ENCODING 1263 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni04F0 +ENCODING 1264 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C6 +C6 +C6 +C6 +7E +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04F1 +ENCODING 1265 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni04F2 +ENCODING 1266 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +66 +CC +00 +C6 +C6 +C6 +C6 +7E +06 +06 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04F3 +ENCODING 1267 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +CC +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni04F4 +ENCODING 1268 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C6 +C6 +C6 +C6 +7E +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04F5 +ENCODING 1269 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +C6 +C6 +C6 +7E +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04F8 +ENCODING 1272 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C3 +C3 +C3 +F3 +DB +DB +DB +DB +F3 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni04F9 +ENCODING 1273 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +C3 +C3 +C3 +F3 +DB +DB +F3 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0500 +ENCODING 1280 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +0C +0C +0C +7C +CC +CC +CC +CC +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0501 +ENCODING 1281 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0502 +ENCODING 1282 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +0C +0C +0C +7C +CD +CD +CD +CD +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0503 +ENCODING 1283 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CD +CD +CD +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0504 +ENCODING 1284 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +8C +0C +38 +0D +0D +0D +0D +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0505 +ENCODING 1285 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +CC +0C +39 +0D +0D +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0506 +ENCODING 1286 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +86 +06 +3C +06 +06 +06 +06 +07 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni0507 +ENCODING 1287 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +06 +3C +06 +06 +07 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni0508 +ENCODING 1288 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +6C +6C +6C +6C +6D +6D +6D +6D +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0509 +ENCODING 1289 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +6C +6C +6D +6D +6D +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni050A +ENCODING 1290 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +CC +CC +CC +FC +CD +CD +CD +CD +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni050B +ENCODING 1291 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +FD +CD +CD +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni050C +ENCODING 1292 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +CE +C6 +C6 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni050D +ENCODING 1293 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +CE +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni050E +ENCODING 1294 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +1B +1B +1B +1B +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni050F +ENCODING 1295 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7E +5A +18 +1B +1B +1B +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0530 +ENCODING 1328 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +64 +94 +BA +52 +4C +30 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0531 +ENCODING 1329 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +CC +CC +CC +CC +CC +CC +CC +CF +7B +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0532 +ENCODING 1330 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +60 +60 +7E +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0533 +ENCODING 1331 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +CC +CC +CC +7F +0C +0C +0C +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0534 +ENCODING 1332 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +CC +CC +CC +CF +0C +0C +0C +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0535 +ENCODING 1333 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +7E +60 +60 +66 +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0536 +ENCODING 1334 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +3E +06 +0C +D8 +FE +C3 +00 +00 +00 +ENDCHAR +STARTCHAR uni0537 +ENCODING 1335 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +7E +60 +60 +60 +60 +60 +60 +7C +06 +00 +00 +00 +ENDCHAR +STARTCHAR uni0538 +ENCODING 1336 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +66 +60 +60 +60 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0539 +ENCODING 1337 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +CF +D6 +D6 +D6 +D6 +CC +C0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni053A +ENCODING 1338 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +0C +0C +0C +7F +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni053B +ENCODING 1339 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +7C +66 +66 +66 +66 +66 +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni053C +ENCODING 1340 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +60 +60 +60 +60 +60 +60 +60 +7C +06 +00 +00 +00 +ENDCHAR +STARTCHAR uni053D +ENCODING 1341 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +F6 +D6 +D6 +D6 +D6 +CC +C0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni053E +ENCODING 1342 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +7F +24 +66 +66 +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni053F +ENCODING 1343 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +66 +66 +66 +66 +66 +3E +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0540 +ENCODING 1344 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +30 +18 +0C +18 +30 +60 +F0 +3C +0E +04 +00 +00 +00 +ENDCHAR +STARTCHAR uni0541 +ENCODING 1345 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +06 +06 +06 +6C +D8 +6E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0542 +ENCODING 1346 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +CC +CC +CC +CC +0C +0C +0C +0F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0543 +ENCODING 1347 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +30 +60 +F8 +6C +66 +66 +66 +66 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0544 +ENCODING 1348 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CF +CC +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0545 +ENCODING 1349 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +06 +06 +7C +06 +06 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0546 +ENCODING 1350 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +60 +66 +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0547 +ENCODING 1351 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +06 +3E +66 +60 +60 +60 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0548 +ENCODING 1352 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0549 +ENCODING 1353 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +06 +06 +06 +6C +38 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni054A +ENCODING 1354 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +D6 +D6 +D6 +D6 +D6 +16 +16 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni054B +ENCODING 1355 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +76 +1E +0E +0C +D8 +FE +C3 +00 +00 +00 +ENDCHAR +STARTCHAR uni054C +ENCODING 1356 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +CC +CC +CC +CF +CC +CC +CC +CC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni054D +ENCODING 1357 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +66 +66 +66 +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni054E +ENCODING 1358 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +0C +CC +CC +CC +CC +7C +0C +0C +0F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni054F +ENCODING 1359 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +60 +30 +18 +0C +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0550 +ENCODING 1360 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +66 +60 +60 +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0551 +ENCODING 1361 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +3C +66 +06 +06 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0552 +ENCODING 1362 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +7C +66 +66 +66 +66 +63 +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0553 +ENCODING 1363 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +7C +D6 +D6 +D6 +D6 +D6 +D6 +7C +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0554 +ENCODING 1364 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +7C +60 +60 +FE +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0555 +ENCODING 1365 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0556 +ENCODING 1366 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D0 +D0 +D0 +7C +16 +16 +16 +D6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0559 +ENCODING 1369 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +30 +30 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni055A +ENCODING 1370 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +18 +18 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni055B +ENCODING 1371 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +30 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni055C +ENCODING 1372 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +06 +3C +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni055D +ENCODING 1373 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +18 +0C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni055E +ENCODING 1374 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +1C +36 +6C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni055F +ENCODING 1375 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +60 +3E +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0561 +ENCODING 1377 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +D6 +D6 +D6 +D6 +D6 +D6 +6A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0562 +ENCODING 1378 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +66 +66 +66 +60 +60 +7E +60 +60 +60 +00 +ENDCHAR +STARTCHAR uni0563 +ENCODING 1379 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +CC +CC +CC +CC +CC +7F +0C +0C +0C +00 +ENDCHAR +STARTCHAR uni0564 +ENCODING 1380 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F8 +CC +CC +CC +CC +CC +CF +0C +0C +0C +00 +ENDCHAR +STARTCHAR uni0565 +ENCODING 1381 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +7E +60 +60 +66 +66 +66 +66 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0566 +ENCODING 1382 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +CC +CC +CC +CC +CC +7C +0C +0C +0F +00 +ENDCHAR +STARTCHAR uni0567 +ENCODING 1383 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +60 +7C +60 +60 +60 +60 +60 +78 +0C +18 +00 +00 +ENDCHAR +STARTCHAR uni0568 +ENCODING 1384 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +66 +66 +66 +66 +66 +66 +60 +60 +7E +00 +ENDCHAR +STARTCHAR uni0569 +ENCODING 1385 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FC +C6 +C6 +CF +D6 +D6 +CC +C0 +C0 +C0 +00 +ENDCHAR +STARTCHAR uni056A +ENCODING 1386 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +0C +0C +7F +CC +CC +CC +CC +CC +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni056B +ENCODING 1387 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +60 +7C +66 +66 +66 +66 +66 +66 +60 +60 +60 +00 +ENDCHAR +STARTCHAR uni056C +ENCODING 1388 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +30 +30 +30 +30 +30 +30 +30 +30 +30 +3E +00 +ENDCHAR +STARTCHAR uni056D +ENCODING 1389 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +C0 +F6 +D6 +D6 +D6 +D6 +D6 +CA +C0 +C0 +C0 +00 +ENDCHAR +STARTCHAR uni056E +ENCODING 1390 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +38 +0C +7F +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni056F +ENCODING 1391 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +60 +66 +66 +66 +66 +66 +66 +3E +06 +06 +06 +00 +ENDCHAR +STARTCHAR uni0570 +ENCODING 1392 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +60 +7C +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0571 +ENCODING 1393 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +1C +0C +18 +3C +64 +66 +62 +63 +3D +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0572 +ENCODING 1394 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F8 +CC +CC +CC +CC +CC +CC +0C +0C +0F +00 +ENDCHAR +STARTCHAR uni0573 +ENCODING 1395 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0E +18 +30 +F8 +6C +66 +66 +66 +66 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0574 +ENCODING 1396 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0F +0C +0C +CC +CC +CC +CC +CC +CC +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0575 +ENCODING 1397 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +0C +0C +0C +0C +0C +0C +0C +6C +38 +00 +ENDCHAR +STARTCHAR uni0576 +ENCODING 1398 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +66 +66 +66 +66 +66 +66 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0577 +ENCODING 1399 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +66 +66 +06 +0C +18 +30 +60 +3E +00 +ENDCHAR +STARTCHAR uni0578 +ENCODING 1400 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0579 +ENCODING 1401 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +18 +18 +0C +06 +0C +18 +30 +60 +3E +00 +ENDCHAR +STARTCHAR uni057A +ENCODING 1402 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +D6 +D6 +D6 +D6 +D6 +D6 +7E +06 +06 +06 +00 +ENDCHAR +STARTCHAR uni057B +ENCODING 1403 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +66 +66 +76 +1C +18 +30 +60 +3E +00 +ENDCHAR +STARTCHAR uni057C +ENCODING 1404 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +F8 +CC +CC +CC +CC +CC +CF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni057D +ENCODING 1405 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +66 +66 +66 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni057E +ENCODING 1406 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +0C +0C +CC +CC +CC +CC +CC +CC +7C +0C +0C +0F +00 +ENDCHAR +STARTCHAR uni057F +ENCODING 1407 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +D6 +D6 +D6 +D6 +D6 +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0580 +ENCODING 1408 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +66 +66 +66 +66 +66 +66 +60 +60 +60 +00 +ENDCHAR +STARTCHAR uni0581 +ENCODING 1409 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3E +66 +66 +66 +66 +66 +3E +06 +66 +3C +00 +ENDCHAR +STARTCHAR uni0582 +ENCODING 1410 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +30 +30 +30 +30 +30 +30 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0583 +ENCODING 1411 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +10 +DC +D6 +D6 +D6 +D6 +D6 +76 +10 +10 +10 +00 +ENDCHAR +STARTCHAR uni0584 +ENCODING 1412 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +66 +66 +66 +66 +7C +60 +FE +60 +60 +00 +ENDCHAR +STARTCHAR uni0585 +ENCODING 1413 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0586 +ENCODING 1414 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +D0 +D0 +7C +16 +16 +16 +16 +D6 +7C +10 +10 +10 +00 +ENDCHAR +STARTCHAR uni0587 +ENCODING 1415 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +C0 +C0 +C0 +CC +CC +CC +CC +77 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0589 +ENCODING 1417 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni058A +ENCODING 1418 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C0 +C6 +7C +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0591 +ENCODING 1425 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +10 +38 +6C +ENDCHAR +STARTCHAR uni0592 +ENCODING 1426 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +00 +66 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0593 +ENCODING 1427 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +38 +10 +38 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0594 +ENCODING 1428 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +00 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0595 +ENCODING 1429 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +60 +6C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0596 +ENCODING 1430 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +18 +0C +00 +ENDCHAR +STARTCHAR uni0597 +ENCODING 1431 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0598 +ENCODING 1432 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +74 +D6 +5C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0599 +ENCODING 1433 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +60 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni059A +ENCODING 1434 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +03 +06 +03 +00 +ENDCHAR +STARTCHAR uni059B +ENCODING 1435 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +28 +18 +30 +00 +ENDCHAR +STARTCHAR uni059C +ENCODING 1436 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni059D +ENCODING 1437 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +06 +04 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni059E +ENCODING 1438 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1B +36 +24 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni059F +ENCODING 1439 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +44 +AA +6C +28 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05A0 +ENCODING 1440 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +0A +0C +08 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05A1 +ENCODING 1441 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +40 +50 +E0 +80 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05A3 +ENCODING 1443 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0C +0C +3C +00 +ENDCHAR +STARTCHAR uni05A4 +ENCODING 1444 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +30 +18 +00 +ENDCHAR +STARTCHAR uni05A5 +ENCODING 1445 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +30 +60 +00 +ENDCHAR +STARTCHAR uni05A6 +ENCODING 1446 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +24 +6C +D8 +00 +ENDCHAR +STARTCHAR uni05A7 +ENCODING 1447 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +30 +08 +30 +ENDCHAR +STARTCHAR uni05A8 +ENCODING 1448 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05A9 +ENCODING 1449 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +40 +A0 +60 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05AA +ENCODING 1450 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +6C +38 +10 +10 +ENDCHAR +STARTCHAR uni05AB +ENCODING 1451 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +30 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05AC +ENCODING 1452 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +3C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05AD +ENCODING 1453 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +04 +06 +03 +00 +ENDCHAR +STARTCHAR uni05AE +ENCODING 1454 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +48 +A8 +90 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05AF +ENCODING 1455 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +38 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57799 +ENCODING 1456 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +00 +18 +00 +ENDCHAR +STARTCHAR afii57801 +ENCODING 1457 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +DB +00 +33 +00 +ENDCHAR +STARTCHAR afii57800 +ENCODING 1458 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +F6 +00 +06 +00 +ENDCHAR +STARTCHAR afii57802 +ENCODING 1459 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +F6 +60 +66 +00 +ENDCHAR +STARTCHAR afii57793 +ENCODING 1460 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +00 +00 +00 +ENDCHAR +STARTCHAR afii57794 +ENCODING 1461 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +66 +00 +00 +00 +ENDCHAR +STARTCHAR afii57795 +ENCODING 1462 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +66 +00 +18 +00 +ENDCHAR +STARTCHAR afii57798 +ENCODING 1463 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +7E +00 +00 +ENDCHAR +STARTCHAR afii57797 +ENCODING 1464 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +7E +18 +18 +ENDCHAR +STARTCHAR afii57806 +ENCODING 1465 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +60 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57796 +ENCODING 1467 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +C0 +18 +03 +00 +ENDCHAR +STARTCHAR afii57807 +ENCODING 1468 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57839 +ENCODING 1469 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +18 +ENDCHAR +STARTCHAR afii57645 +ENCODING 1470 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7E +FC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57841 +ENCODING 1471 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57842 +ENCODING 1472 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57804 +ENCODING 1473 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +06 +06 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57803 +ENCODING 1474 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57658 +ENCODING 1475 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05C4 +ENCODING 1476 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57664 +ENCODING 1488 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C6 +C6 +66 +76 +DC +CC +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57665 +ENCODING 1489 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +F8 +0C +0C +0C +0C +0C +0C +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57666 +ENCODING 1490 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +0C +0C +0C +0C +1C +36 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57667 +ENCODING 1491 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +0C +0C +0C +0C +0C +0C +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57668 +ENCODING 1492 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +06 +06 +06 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57669 +ENCODING 1493 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57670 +ENCODING 1494 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +7E +18 +18 +18 +0C +0C +18 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57671 +ENCODING 1495 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +66 +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57672 +ENCODING 1496 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +CC +D6 +D6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57673 +ENCODING 1497 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +18 +18 +18 +30 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57674 +ENCODING 1498 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +06 +06 +06 +0C +0C +0C +0C +0C +0C +0E +00 +ENDCHAR +STARTCHAR afii57675 +ENCODING 1499 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +06 +06 +06 +06 +06 +06 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57676 +ENCODING 1500 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +FC +06 +06 +06 +06 +0C +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57677 +ENCODING 1501 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +66 +C6 +C6 +C6 +C6 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57678 +ENCODING 1502 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +DC +76 +66 +C6 +C6 +C6 +C6 +DE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57679 +ENCODING 1503 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +0C +0C +18 +18 +18 +18 +18 +18 +18 +1C +00 +ENDCHAR +STARTCHAR afii57680 +ENCODING 1504 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +0C +0C +0C +0C +0C +0C +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57681 +ENCODING 1505 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +66 +C6 +C6 +C6 +C6 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57682 +ENCODING 1506 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +EE +66 +66 +66 +66 +66 +2C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57683 +ENCODING 1507 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +F8 +4C +CC +CC +EC +0C +0C +0C +0C +0C +0E +00 +ENDCHAR +STARTCHAR afii57684 +ENCODING 1508 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +46 +C6 +C6 +E6 +06 +06 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57685 +ENCODING 1509 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +EE +66 +66 +6C +78 +60 +60 +60 +60 +60 +70 +00 +ENDCHAR +STARTCHAR afii57686 +ENCODING 1510 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +EE +66 +66 +34 +18 +0C +06 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57687 +ENCODING 1511 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +06 +06 +66 +64 +6C +6E +60 +60 +60 +60 +00 +ENDCHAR +STARTCHAR afii57688 +ENCODING 1512 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +06 +06 +06 +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57689 +ENCODING 1513 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +D6 +D6 +D6 +D6 +D6 +F6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57690 +ENCODING 1514 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +66 +66 +66 +66 +66 +E6 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57716 +ENCODING 1520 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +CC +66 +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57717 +ENCODING 1521 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +CC +66 +66 +66 +C6 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57718 +ENCODING 1522 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +CC +66 +66 +66 +CC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05F3 +ENCODING 1523 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni05F4 +ENCODING 1524 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +CC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57388 +ENCODING 1548 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +10 +18 +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57403 +ENCODING 1563 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +18 +00 +00 +00 +18 +18 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57407 +ENCODING 1567 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +22 +20 +10 +08 +08 +00 +08 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57409 +ENCODING 1569 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +24 +20 +1E +20 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57410 +ENCODING 1570 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +02 +3C +40 +10 +10 +10 +10 +10 +10 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57411 +ENCODING 1571 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +20 +1C +20 +08 +08 +08 +08 +08 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57412 +ENCODING 1572 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +1C +20 +1C +20 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57413 +ENCODING 1573 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +08 +08 +08 +08 +08 +00 +18 +20 +1C +20 +00 +00 +ENDCHAR +STARTCHAR afii57414 +ENCODING 1574 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +40 +38 +40 +07 +08 +88 +86 +81 +82 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57415 +ENCODING 1575 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +08 +08 +08 +08 +08 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57416 +ENCODING 1576 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +00 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57417 +ENCODING 1577 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +28 +00 +00 +18 +24 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57418 +ENCODING 1578 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +14 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57419 +ENCODING 1579 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57420 +ENCODING 1580 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +80 +88 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR afii57421 +ENCODING 1581 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +80 +80 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR afii57422 +ENCODING 1582 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +20 +00 +00 +70 +8F +30 +40 +80 +80 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR afii57423 +ENCODING 1583 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57424 +ENCODING 1584 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57425 +ENCODING 1585 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57426 +ENCODING 1586 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57427 +ENCODING 1587 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +01 +15 +88 +84 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57428 +ENCODING 1588 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +01 +15 +88 +84 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57429 +ENCODING 1589 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +09 +31 +9E +88 +88 +70 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57430 +ENCODING 1590 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +09 +31 +9E +88 +88 +70 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57431 +ENCODING 1591 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +20 +20 +2C +32 +A2 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57432 +ENCODING 1592 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +20 +20 +2C +32 +A2 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57433 +ENCODING 1593 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +80 +8C +70 +40 +80 +80 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR afii57434 +ENCODING 1594 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +40 +00 +00 +70 +80 +8C +70 +40 +80 +80 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR afii57440 +ENCODING 1600 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57441 +ENCODING 1601 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +49 +85 +83 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57442 +ENCODING 1602 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0A +00 +06 +09 +09 +47 +81 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR afii57443 +ENCODING 1603 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +19 +21 +19 +21 +01 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57444 +ENCODING 1604 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +02 +02 +02 +02 +02 +42 +82 +82 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57445 +ENCODING 1605 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0C +12 +12 +3C +40 +40 +40 +40 +40 +40 +00 +00 +ENDCHAR +STARTCHAR afii57446 +ENCODING 1606 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +00 +41 +81 +81 +81 +42 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57470 +ENCODING 1607 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +40 +30 +4E +49 +39 +E6 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57448 +ENCODING 1608 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57449 +ENCODING 1609 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57450 +ENCODING 1610 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +81 +7E +00 +00 +24 +00 +ENDCHAR +STARTCHAR afii57451 +ENCODING 1611 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +0C +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57452 +ENCODING 1612 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +12 +CA +2C +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57453 +ENCODING 1613 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0C +30 +0C +30 +00 +00 +ENDCHAR +STARTCHAR afii57454 +ENCODING 1614 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57455 +ENCODING 1615 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +14 +0C +08 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57456 +ENCODING 1616 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0C +30 +00 +00 +ENDCHAR +STARTCHAR afii57457 +ENCODING 1617 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0A +2A +2C +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57458 +ENCODING 1618 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +24 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0653 +ENCODING 1619 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +01 +7E +80 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0654 +ENCODING 1620 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +10 +0C +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0655 +ENCODING 1621 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0C +10 +0C +10 +ENDCHAR +STARTCHAR afii57392 +ENCODING 1632 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +30 +78 +30 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57393 +ENCODING 1633 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +70 +70 +38 +18 +18 +08 +08 +08 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57394 +ENCODING 1634 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +44 +FC +F8 +60 +30 +30 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57395 +ENCODING 1635 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +4A +FE +F4 +60 +30 +30 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57396 +ENCODING 1636 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +20 +40 +30 +10 +20 +42 +7C +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57397 +ENCODING 1637 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +2C +44 +42 +82 +82 +FE +7C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57398 +ENCODING 1638 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +80 +F8 +78 +08 +08 +08 +0C +0E +06 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57399 +ENCODING 1639 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +82 +C6 +C6 +6C +28 +38 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57400 +ENCODING 1640 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +10 +38 +28 +6C +C6 +C6 +82 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57401 +ENCODING 1641 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +F8 +88 +F8 +78 +08 +0C +0E +06 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57381 +ENCODING 1642 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +91 +92 +64 +08 +10 +26 +49 +89 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni066B +ENCODING 1643 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +30 +30 +60 +60 +00 +00 +ENDCHAR +STARTCHAR uni066C +ENCODING 1644 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +18 +10 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii63167 +ENCODING 1645 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +38 +FE +7C +38 +6C +44 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0670 +ENCODING 1648 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +10 +10 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0671 +ENCODING 1649 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +06 +29 +5E +00 +04 +04 +04 +04 +04 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0672 +ENCODING 1650 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +06 +28 +5E +00 +04 +04 +04 +04 +04 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0673 +ENCODING 1651 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +04 +04 +04 +04 +04 +00 +06 +28 +5E +00 +00 +00 +ENDCHAR +STARTCHAR uni0674 +ENCODING 1652 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +07 +08 +07 +08 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0675 +ENCODING 1653 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +04 +03 +14 +10 +10 +10 +10 +10 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0676 +ENCODING 1654 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +04 +03 +04 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0677 +ENCODING 1655 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +23 +54 +33 +24 +40 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0678 +ENCODING 1656 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +04 +03 +04 +00 +07 +08 +88 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57511 +ENCODING 1657 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni067A +ENCODING 1658 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +08 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni067B +ENCODING 1659 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uni067C +ENCODING 1660 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +14 +40 +81 +81 +7E +08 +14 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni067D +ENCODING 1661 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +08 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57506 +ENCODING 1662 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +00 +14 +00 +08 +00 +00 +ENDCHAR +STARTCHAR uni067F +ENCODING 1663 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +14 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0680 +ENCODING 1664 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +00 +14 +00 +14 +00 +00 +ENDCHAR +STARTCHAR uni0681 +ENCODING 1665 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +06 +08 +06 +08 +70 +8F +30 +40 +80 +80 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uni0682 +ENCODING 1666 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +08 +00 +70 +8F +30 +40 +80 +80 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uni0683 +ENCODING 1667 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +80 +94 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uni0684 +ENCODING 1668 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +88 +80 +88 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uni0685 +ENCODING 1669 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +70 +8F +30 +40 +80 +80 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR afii57507 +ENCODING 1670 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +94 +80 +88 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uni0687 +ENCODING 1671 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +94 +80 +94 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR afii57512 +ENCODING 1672 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +20 +38 +28 +70 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0689 +ENCODING 1673 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +04 +02 +42 +3C +08 +14 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni068A +ENCODING 1674 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +04 +02 +42 +3C +00 +00 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni068B +ENCODING 1675 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +20 +38 +28 +70 +08 +04 +02 +42 +3C +00 +00 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni068C +ENCODING 1676 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni068D +ENCODING 1677 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +04 +02 +42 +3C +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni068E +ENCODING 1678 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni068F +ENCODING 1679 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +14 +00 +08 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0690 +ENCODING 1680 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +14 +00 +14 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57513 +ENCODING 1681 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0692 +ENCODING 1682 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +08 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0693 +ENCODING 1683 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +04 +02 +02 +04 +1C +6A +04 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0694 +ENCODING 1684 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +04 +02 +02 +04 +18 +62 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0695 +ENCODING 1685 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +04 +02 +02 +04 +18 +60 +00 +14 +08 +00 +00 +ENDCHAR +STARTCHAR uni0696 +ENCODING 1686 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +04 +02 +12 +04 +18 +62 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0697 +ENCODING 1687 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +14 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57508 +ENCODING 1688 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni0699 +ENCODING 1689 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +14 +00 +14 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni069A +ENCODING 1690 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +00 +01 +15 +88 +88 +8A +70 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni069B +ENCODING 1691 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +01 +15 +88 +88 +90 +65 +00 +02 +00 +00 +00 +ENDCHAR +STARTCHAR uni069C +ENCODING 1692 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +04 +00 +0A +00 +01 +15 +88 +88 +90 +65 +00 +02 +00 +00 +00 +ENDCHAR +STARTCHAR uni069D +ENCODING 1693 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +09 +31 +9E +88 +90 +65 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni069E +ENCODING 1694 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +00 +0A +00 +06 +09 +31 +9E +88 +88 +70 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni069F +ENCODING 1695 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +00 +2A +20 +20 +2C +32 +A2 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06A0 +ENCODING 1696 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +20 +00 +50 +00 +70 +80 +8C +70 +40 +80 +80 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR uni06A1 +ENCODING 1697 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +49 +85 +83 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06A2 +ENCODING 1698 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +49 +85 +83 +7E +00 +02 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06A3 +ENCODING 1699 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +49 +85 +83 +7E +00 +08 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57505 +ENCODING 1700 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +00 +0A +00 +06 +49 +85 +83 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06A5 +ENCODING 1701 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +49 +85 +83 +7E +00 +0A +00 +04 +00 +00 +00 +ENDCHAR +STARTCHAR uni06A6 +ENCODING 1702 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0A +00 +0A +00 +06 +49 +85 +83 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06A7 +ENCODING 1703 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +09 +09 +47 +81 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uni06A8 +ENCODING 1704 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +00 +0A +00 +06 +09 +09 +47 +81 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uni06A9 +ENCODING 1705 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +01 +02 +04 +08 +44 +82 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06AA +ENCODING 1706 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +20 +40 +3E +01 +81 +7E +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06AB +ENCODING 1707 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +01 +02 +05 +0B +48 +84 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06AC +ENCODING 1708 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +00 +19 +21 +19 +21 +01 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06AD +ENCODING 1709 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +00 +29 +01 +19 +21 +19 +A1 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06AE +ENCODING 1710 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +19 +21 +19 +21 +01 +81 +7E +00 +14 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR afii57509 +ENCODING 1711 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +04 +08 +44 +82 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B0 +ENCODING 1712 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +05 +0B +48 +84 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B1 +ENCODING 1713 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +A4 +09 +12 +04 +08 +44 +82 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B2 +ENCODING 1714 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +04 +08 +44 +82 +82 +7C +00 +14 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B3 +ENCODING 1715 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +04 +08 +44 +82 +82 +7C +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B4 +ENCODING 1716 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +44 +09 +A2 +04 +08 +44 +82 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B5 +ENCODING 1717 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +14 +08 +02 +02 +02 +02 +42 +82 +82 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B6 +ENCODING 1718 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +02 +02 +02 +02 +02 +42 +82 +82 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B7 +ENCODING 1719 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +02 +2A +02 +02 +02 +42 +82 +82 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06B8 +ENCODING 1720 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +02 +02 +02 +02 +02 +42 +82 +82 +84 +78 +00 +14 +00 +08 +00 +ENDCHAR +STARTCHAR uni06B9 +ENCODING 1721 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +00 +00 +41 +81 +81 +81 +42 +3C +00 +00 +04 +00 +00 +ENDCHAR +STARTCHAR afii57514 +ENCODING 1722 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +41 +81 +81 +81 +42 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06BB +ENCODING 1723 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +41 +81 +81 +81 +42 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06BC +ENCODING 1724 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +00 +41 +81 +81 +81 +42 +3C +08 +14 +08 +00 +00 +ENDCHAR +STARTCHAR uni06BD +ENCODING 1725 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +00 +41 +81 +81 +81 +42 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06BE +ENCODING 1726 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +38 +4C +52 +32 +3C +40 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06BF +ENCODING 1727 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +00 +70 +8F +30 +40 +94 +80 +88 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uni06C0 +ENCODING 1728 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +40 +38 +40 +18 +24 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C1 +ENCODING 1729 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +0C +13 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C2 +ENCODING 1730 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +40 +38 +40 +00 +0C +13 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C3 +ENCODING 1731 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +14 +00 +00 +00 +0C +13 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C4 +ENCODING 1732 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +12 +0E +12 +2C +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C5 +ENCODING 1733 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +12 +0E +02 +3C +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C6 +ENCODING 1734 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +08 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C7 +ENCODING 1735 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +28 +18 +10 +20 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C8 +ENCODING 1736 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +08 +08 +08 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06C9 +ENCODING 1737 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +14 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06CA +ENCODING 1738 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +14 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06CB +ENCODING 1739 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06CC +ENCODING 1740 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06CD +ENCODING 1741 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +20 +47 +88 +08 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06CE +ENCODING 1742 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +50 +20 +07 +08 +88 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06CF +ENCODING 1743 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06D0 +ENCODING 1744 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +82 +7C +00 +08 +00 +08 +ENDCHAR +STARTCHAR uni06D1 +ENCODING 1745 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +82 +7C +00 +14 +00 +08 +ENDCHAR +STARTCHAR afii57519 +ENCODING 1746 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +14 +60 +80 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06D3 +ENCODING 1747 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +80 +60 +80 +08 +14 +60 +80 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06D4 +ENCODING 1748 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +3C +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57534 +ENCODING 1749 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +24 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06D6 +ENCODING 1750 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +40 +40 +43 +55 +7E +80 +7C +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06D7 +ENCODING 1751 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +2A +20 +26 +2A +7C +80 +7C +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06D8 +ENCODING 1752 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0E +1C +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06D9 +ENCODING 1753 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +14 +14 +08 +14 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06DA +ENCODING 1754 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +2C +10 +28 +22 +1C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06DB +ENCODING 1755 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06DC +ENCODING 1756 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +15 +8A +90 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06DD +ENCODING 1757 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +5A +A5 +66 +5B +81 +81 +81 +81 +81 +81 +5A +66 +A5 +5A +00 +ENDCHAR +STARTCHAR uni06DE +ENCODING 1758 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +66 +42 +42 +81 +99 +99 +81 +42 +42 +66 +18 +00 +00 +ENDCHAR +STARTCHAR uni06DF +ENCODING 1759 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +1C +08 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E0 +ENCODING 1760 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E1 +ENCODING 1761 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +26 +08 +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E2 +ENCODING 1762 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +10 +10 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E3 +ENCODING 1763 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +15 +8A +90 +60 +ENDCHAR +STARTCHAR uni06E4 +ENCODING 1764 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +32 +2C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E5 +ENCODING 1765 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +14 +0C +04 +08 +30 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E6 +ENCODING 1766 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +10 +30 +40 +3E +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E7 +ENCODING 1767 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +30 +40 +3E +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E8 +ENCODING 1768 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06E9 +ENCODING 1769 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +28 +54 +AA +92 +54 +54 +54 +54 +54 +54 +54 +82 +FE +00 +00 +ENDCHAR +STARTCHAR uni06EA +ENCODING 1770 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +08 +14 +22 +14 +08 +ENDCHAR +STARTCHAR uni06EB +ENCODING 1771 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +14 +22 +14 +08 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06EC +ENCODING 1772 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +3C +3C +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06ED +ENCODING 1773 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0C +0C +10 +10 +10 +ENDCHAR +STARTCHAR uni06F0 +ENCODING 1776 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +44 +44 +38 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F1 +ENCODING 1777 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +70 +70 +38 +18 +18 +08 +08 +08 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F2 +ENCODING 1778 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +44 +FC +F8 +60 +30 +30 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F3 +ENCODING 1779 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +4A +FE +F4 +60 +30 +30 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F4 +ENCODING 1780 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +4E +F0 +FE +7C +30 +30 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F5 +ENCODING 1781 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +38 +2C +44 +42 +82 +92 +FE +6C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F6 +ENCODING 1782 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +60 +7E +3C +30 +60 +40 +80 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F7 +ENCODING 1783 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +82 +C6 +C6 +6C +28 +38 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F8 +ENCODING 1784 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +10 +38 +28 +6C +C6 +C6 +82 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06F9 +ENCODING 1785 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +F8 +88 +F8 +78 +08 +0C +0E +06 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06FA +ENCODING 1786 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +01 +15 +88 +88 +88 +72 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06FB +ENCODING 1787 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +09 +31 +9E +88 +88 +72 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni06FC +ENCODING 1788 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +40 +00 +00 +70 +80 +8C +70 +40 +80 +88 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR uni06FD +ENCODING 1789 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +24 +20 +1E +20 +00 +14 +14 +14 +14 +00 +00 +ENDCHAR +STARTCHAR uni06FE +ENCODING 1790 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0C +12 +12 +3C +40 +54 +54 +54 +54 +40 +00 +00 +ENDCHAR +STARTCHAR m +ENCODING 4307 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +92 +92 +92 +92 +92 +4C +30 +4C +02 +00 +ENDCHAR +STARTCHAR m +ENCODING 4311 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +92 +92 +92 +92 +92 +64 +00 +00 +00 +00 +ENDCHAR +STARTCHAR m +ENCODING 4314 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +54 +AA +AA +AA +82 +82 +40 +30 +4C +02 +00 +ENDCHAR +STARTCHAR m +ENCODING 4317 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +92 +92 +92 +82 +82 +44 +00 +00 +00 +00 +ENDCHAR +STARTCHAR m +ENCODING 4326 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +92 +92 +92 +82 +82 +40 +30 +4C +02 +00 +ENDCHAR +STARTCHAR uni1E00 +ENCODING 7680 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +38 +6C +38 +ENDCHAR +STARTCHAR uni1E01 +ENCODING 7681 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +0C +7C +CC +CC +CC +76 +00 +38 +6C +38 +ENDCHAR +STARTCHAR uni1E02 +ENCODING 7682 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +FC +66 +66 +66 +7C +66 +66 +66 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E03 +ENCODING 7683 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +0C +EC +60 +60 +78 +6C +66 +66 +66 +66 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E04 +ENCODING 7684 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +66 +66 +66 +66 +FC +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E05 +ENCODING 7685 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +78 +6C +66 +66 +66 +66 +7C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E06 +ENCODING 7686 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +66 +66 +66 +66 +FC +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E07 +ENCODING 7687 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +78 +6C +66 +66 +66 +66 +7C +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E08 +ENCODING 7688 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +3C +66 +C2 +C0 +C0 +C0 +C2 +66 +3C +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni1E09 +ENCODING 7689 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni1E0A +ENCODING 7690 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +F8 +6C +66 +66 +66 +66 +66 +6C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E0B +ENCODING 7691 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +60 +0C +0C +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E0C +ENCODING 7692 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +66 +66 +66 +66 +6C +F8 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E0D +ENCODING 7693 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +76 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E0E +ENCODING 7694 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +66 +66 +66 +66 +6C +F8 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E0F +ENCODING 7695 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +76 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E10 +ENCODING 7696 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +66 +66 +66 +66 +6C +F8 +30 +18 +70 +00 +ENDCHAR +STARTCHAR uni1E11 +ENCODING 7697 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +76 +30 +18 +70 +00 +ENDCHAR +STARTCHAR uni1E12 +ENCODING 7698 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +66 +66 +66 +66 +6C +F8 +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E13 +ENCODING 7699 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +76 +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E14 +ENCODING 7700 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +7C +00 +FE +62 +68 +78 +68 +62 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E15 +ENCODING 7701 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +7C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E16 +ENCODING 7702 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +7C +00 +FE +62 +68 +78 +68 +62 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E17 +ENCODING 7703 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +7C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E18 +ENCODING 7704 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +62 +66 +FE +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E19 +ENCODING 7705 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E1A +ENCODING 7706 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +62 +66 +FE +00 +76 +DC +00 +ENDCHAR +STARTCHAR uni1E1B +ENCODING 7707 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +76 +DC +00 +ENDCHAR +STARTCHAR uni1E1C +ENCODING 7708 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni1E1D +ENCODING 7709 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +18 +0C +38 +00 +ENDCHAR +STARTCHAR uni1E1E +ENCODING 7710 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +FE +66 +62 +68 +78 +68 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E1F +ENCODING 7711 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +38 +6C +64 +F0 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E20 +ENCODING 7712 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +3C +66 +C2 +C0 +DE +C6 +C6 +66 +3A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E21 +ENCODING 7713 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +76 +CC +CC +CC +CC +CC +7C +0C +CC +78 +00 +ENDCHAR +STARTCHAR uni1E22 +ENCODING 7714 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E23 +ENCODING 7715 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +E0 +60 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E24 +ENCODING 7716 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C6 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E25 +ENCODING 7717 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E26 +ENCODING 7718 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E27 +ENCODING 7719 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +E0 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E28 +ENCODING 7720 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C6 +60 +30 +E0 +00 +ENDCHAR +STARTCHAR uni1E29 +ENCODING 7721 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +6C +76 +66 +66 +66 +66 +E6 +30 +18 +70 +00 +ENDCHAR +STARTCHAR uni1E2A +ENCODING 7722 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +FE +C6 +C6 +C6 +C6 +C6 +00 +6C +38 +00 +ENDCHAR +STARTCHAR uni1E2B +ENCODING 7723 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +6C +38 +00 +ENDCHAR +STARTCHAR uni1E2C +ENCODING 7724 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +76 +DC +00 +ENDCHAR +STARTCHAR uni1E2D +ENCODING 7725 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +38 +18 +18 +18 +18 +18 +3C +00 +76 +DC +00 +ENDCHAR +STARTCHAR uni1E2E +ENCODING 7726 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +66 +00 +3C +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E2F +ENCODING 7727 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +66 +66 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E30 +ENCODING 7728 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +E6 +66 +66 +6C +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E31 +ENCODING 7729 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +0C +EC +60 +60 +66 +6C +78 +78 +6C +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E32 +ENCODING 7730 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E33 +ENCODING 7731 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +66 +6C +78 +78 +6C +66 +E6 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E34 +ENCODING 7732 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E35 +ENCODING 7733 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +66 +6C +78 +78 +6C +66 +E6 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E36 +ENCODING 7734 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +60 +60 +60 +62 +66 +FE +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E37 +ENCODING 7735 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E38 +ENCODING 7736 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +F0 +60 +60 +60 +60 +60 +62 +66 +FE +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E39 +ENCODING 7737 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +38 +18 +18 +18 +18 +18 +18 +18 +3C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E3A +ENCODING 7738 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +60 +60 +60 +62 +66 +FE +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E3B +ENCODING 7739 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +7E +00 +00 +ENDCHAR +STARTCHAR uni1E3C +ENCODING 7740 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +60 +60 +60 +62 +66 +FE +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E3D +ENCODING 7741 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +18 +18 +18 +18 +18 +3C +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E3E +ENCODING 7742 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E3F +ENCODING 7743 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +EC +FE +D6 +D6 +D6 +D6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E40 +ENCODING 7744 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E41 +ENCODING 7745 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +EC +FE +D6 +D6 +D6 +D6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E42 +ENCODING 7746 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +C6 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E43 +ENCODING 7747 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +EC +FE +D6 +D6 +D6 +D6 +C6 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E44 +ENCODING 7748 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E45 +ENCODING 7749 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +DC +66 +66 +66 +66 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E46 +ENCODING 7750 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +C6 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E47 +ENCODING 7751 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E48 +ENCODING 7752 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +C6 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E49 +ENCODING 7753 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E4A +ENCODING 7754 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +E6 +F6 +FE +DE +CE +C6 +C6 +C6 +C6 +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E4B +ENCODING 7755 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +66 +66 +66 +66 +66 +66 +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E4C +ENCODING 7756 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +72 +9C +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E4D +ENCODING 7757 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +76 +DC +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E4E +ENCODING 7758 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +00 +72 +9C +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E4F +ENCODING 7759 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +00 +76 +DC +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E50 +ENCODING 7760 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E51 +ENCODING 7761 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E52 +ENCODING 7762 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E53 +ENCODING 7763 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +7C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E54 +ENCODING 7764 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +FC +66 +66 +66 +7C +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E55 +ENCODING 7765 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +DC +66 +66 +66 +66 +66 +7C +60 +60 +F0 +00 +ENDCHAR +STARTCHAR uni1E56 +ENCODING 7766 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +FC +66 +66 +66 +7C +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E57 +ENCODING 7767 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +DC +66 +66 +66 +66 +66 +7C +60 +60 +F0 +00 +ENDCHAR +STARTCHAR uni1E58 +ENCODING 7768 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +FC +66 +66 +66 +7C +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E59 +ENCODING 7769 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E5A +ENCODING 7770 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +6C +66 +66 +66 +E6 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E5B +ENCODING 7771 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E5C +ENCODING 7772 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +00 +FC +66 +66 +66 +7C +6C +66 +66 +E6 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E5D +ENCODING 7773 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +00 +DC +76 +66 +60 +60 +60 +F0 +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E5E +ENCODING 7774 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +6C +66 +66 +66 +E6 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E5F +ENCODING 7775 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +76 +66 +60 +60 +60 +F0 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E60 +ENCODING 7776 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +7C +C6 +C6 +60 +38 +0C +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E61 +ENCODING 7777 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E62 +ENCODING 7778 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +60 +38 +0C +06 +C6 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E63 +ENCODING 7779 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E64 +ENCODING 7780 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +6C +18 +00 +7C +C6 +C6 +70 +1C +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E65 +ENCODING 7781 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +60 +0C +18 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E66 +ENCODING 7782 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +44 +38 +10 +7C +C6 +C6 +70 +1C +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E67 +ENCODING 7783 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +44 +38 +10 +7C +C6 +60 +38 +0C +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E68 +ENCODING 7784 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +7C +C6 +C6 +60 +38 +0C +C6 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E69 +ENCODING 7785 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +7C +C6 +60 +38 +0C +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E6A +ENCODING 7786 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +7E +7E +5A +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E6B +ENCODING 7787 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +06 +16 +30 +30 +FC +30 +30 +30 +30 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E6C +ENCODING 7788 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E6D +ENCODING 7789 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +36 +1C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1E6E +ENCODING 7790 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +00 +7E +00 +00 +ENDCHAR +STARTCHAR uni1E6F +ENCODING 7791 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +36 +1C +00 +7E +00 +00 +ENDCHAR +STARTCHAR uni1E70 +ENCODING 7792 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +18 +18 +18 +18 +18 +3C +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E71 +ENCODING 7793 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +30 +30 +FC +30 +30 +30 +30 +36 +1C +08 +1C +36 +00 +ENDCHAR +STARTCHAR uni1E72 +ENCODING 7794 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +6C +6C +00 +ENDCHAR +STARTCHAR uni1E73 +ENCODING 7795 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +76 +00 +6C +6C +00 +ENDCHAR +STARTCHAR uni1E74 +ENCODING 7796 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +76 +DC +00 +ENDCHAR +STARTCHAR uni1E75 +ENCODING 7797 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +76 +00 +76 +DC +00 +ENDCHAR +STARTCHAR uni1E76 +ENCODING 7798 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E77 +ENCODING 7799 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +76 +10 +38 +6C +00 +ENDCHAR +STARTCHAR uni1E78 +ENCODING 7800 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +72 +9C +00 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E79 +ENCODING 7801 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +76 +DC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E7A +ENCODING 7802 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +00 +7C +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E7B +ENCODING 7803 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +CC +CC +00 +FC +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E7C +ENCODING 7804 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +00 +C6 +C6 +C6 +C6 +C6 +C6 +6C +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E7D +ENCODING 7805 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +66 +66 +66 +66 +66 +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E7E +ENCODING 7806 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +6C +38 +10 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E7F +ENCODING 7807 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +66 +66 +3C +18 +00 +18 +18 +00 +ENDCHAR +STARTCHAR Wgrave +ENCODING 7808 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +00 +C6 +C6 +C6 +D6 +D6 +D6 +FE +EE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR wgrave +ENCODING 7809 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Wacute +ENCODING 7810 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +00 +C6 +C6 +C6 +D6 +D6 +D6 +FE +EE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR wacute +ENCODING 7811 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +18 +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR Wdieresis +ENCODING 7812 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C6 +C6 +C6 +D6 +D6 +D6 +FE +EE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR wdieresis +ENCODING 7813 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E86 +ENCODING 7814 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +C6 +C6 +C6 +D6 +D6 +D6 +FE +EE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E87 +ENCODING 7815 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E88 +ENCODING 7816 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +D6 +D6 +D6 +FE +EE +6C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E89 +ENCODING 7817 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E8A +ENCODING 7818 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +C6 +C6 +6C +7C +38 +7C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E8B +ENCODING 7819 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +C6 +6C +38 +38 +38 +6C +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E8C +ENCODING 7820 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +C6 +C6 +6C +7C +38 +7C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E8D +ENCODING 7821 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +C6 +6C +38 +38 +38 +6C +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E8E +ENCODING 7822 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +00 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E8F +ENCODING 7823 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni1E90 +ENCODING 7824 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +FE +C6 +8C +18 +30 +60 +C2 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E91 +ENCODING 7825 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +FE +CC +18 +30 +60 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E92 +ENCODING 7826 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +86 +0C +18 +30 +60 +C2 +C6 +FE +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E93 +ENCODING 7827 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +CC +18 +30 +60 +C6 +FE +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1E94 +ENCODING 7828 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +86 +0C +18 +30 +60 +C2 +C6 +FE +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E95 +ENCODING 7829 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +CC +18 +30 +60 +C6 +FE +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E96 +ENCODING 7830 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +60 +60 +6C +76 +66 +66 +66 +66 +E6 +00 +7C +00 +00 +ENDCHAR +STARTCHAR uni1E97 +ENCODING 7831 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +6C +00 +10 +30 +FC +30 +30 +30 +30 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E98 +ENCODING 7832 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +38 +00 +C6 +C6 +D6 +D6 +D6 +FE +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E99 +ENCODING 7833 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +6C +38 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni1E9A +ENCODING 7834 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +0C +18 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1E9B +ENCODING 7835 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +00 +38 +6C +64 +60 +60 +60 +60 +60 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA0 +ENCODING 7840 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +C6 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EA1 +ENCODING 7841 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +78 +0C +7C +CC +CC +CC +76 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EA2 +ENCODING 7842 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +0C +18 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA3 +ENCODING 7843 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +0C +18 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA4 +ENCODING 7844 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +16 +38 +6C +10 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA5 +ENCODING 7845 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +16 +38 +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA6 +ENCODING 7846 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +68 +1C +36 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA7 +ENCODING 7847 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +68 +1C +36 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA8 +ENCODING 7848 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0E +13 +3A +6C +10 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EA9 +ENCODING 7849 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0E +13 +3A +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EAA +ENCODING 7850 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +10 +28 +54 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EAB +ENCODING 7851 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +10 +38 +44 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EAC +ENCODING 7852 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +6C +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EAD +ENCODING 7853 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +78 +0C +7C +CC +CC +CC +76 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EAE +ENCODING 7854 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +44 +38 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EAF +ENCODING 7855 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +18 +44 +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EB0 +ENCODING 7856 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +44 +38 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EB1 +ENCODING 7857 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +30 +44 +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EB2 +ENCODING 7858 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +08 +54 +38 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EB3 +ENCODING 7859 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +08 +54 +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EB4 +ENCODING 7860 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +72 +9C +44 +38 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EB5 +ENCODING 7861 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +72 +9C +44 +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EB6 +ENCODING 7862 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +6C +38 +00 +10 +38 +6C +C6 +C6 +FE +C6 +C6 +C6 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EB7 +ENCODING 7863 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +38 +00 +78 +0C +7C +CC +CC +CC +76 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EB8 +ENCODING 7864 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +66 +62 +68 +78 +68 +60 +62 +66 +FE +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1EB9 +ENCODING 7865 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EBA +ENCODING 7866 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +0C +18 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EBB +ENCODING 7867 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +0C +18 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EBC +ENCODING 7868 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +00 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EBD +ENCODING 7869 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EBE +ENCODING 7870 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +23 +76 +88 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EBF +ENCODING 7871 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +26 +70 +D8 +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC0 +ENCODING 7872 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C4 +6E +11 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC1 +ENCODING 7873 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +64 +0E +1B +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC2 +ENCODING 7874 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0E +13 +3A +6C +00 +FE +62 +68 +78 +68 +62 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC3 +ENCODING 7875 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0E +13 +3A +6C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC4 +ENCODING 7876 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +10 +38 +44 +FE +62 +68 +78 +68 +62 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC5 +ENCODING 7877 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +10 +38 +44 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC6 +ENCODING 7878 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +FE +66 +62 +68 +78 +68 +62 +66 +FE +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1EC7 +ENCODING 7879 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +7C +C6 +FE +C0 +C0 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EC8 +ENCODING 7880 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +0C +18 +3C +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EC9 +ENCODING 7881 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +0C +18 +00 +38 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ECA +ENCODING 7882 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1ECB +ENCODING 7883 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +38 +18 +18 +18 +18 +18 +3C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1ECC +ENCODING 7884 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1ECD +ENCODING 7885 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1ECE +ENCODING 7886 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +0C +18 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ECF +ENCODING 7887 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +0C +18 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED0 +ENCODING 7888 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +23 +76 +88 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED1 +ENCODING 7889 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +26 +70 +D8 +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED2 +ENCODING 7890 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C4 +6E +11 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED3 +ENCODING 7891 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +64 +0E +1B +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED4 +ENCODING 7892 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0E +13 +3A +44 +7C +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED5 +ENCODING 7893 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0E +13 +3A +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED6 +ENCODING 7894 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +10 +28 +44 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED7 +ENCODING 7895 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +76 +DC +10 +38 +44 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1ED8 +ENCODING 7896 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +38 +44 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1ED9 +ENCODING 7897 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +38 +6C +00 +7C +C6 +C6 +C6 +C6 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EDA +ENCODING 7898 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +33 +03 +7A +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EDB +ENCODING 7899 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1B +33 +06 +78 +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EDC +ENCODING 7900 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +33 +03 +7A +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EDD +ENCODING 7901 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +63 +33 +06 +78 +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EDE +ENCODING 7902 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +70 +1B +33 +7A +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EDF +ENCODING 7903 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +1B +33 +06 +78 +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EE0 +ENCODING 7904 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +68 +B3 +03 +7A +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EE1 +ENCODING 7905 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +68 +B3 +03 +06 +78 +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EE2 +ENCODING 7906 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +03 +7A +CC +CC +CC +CC +CC +CC +CC +CC +78 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EE3 +ENCODING 7907 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +06 +78 +CC +CC +CC +CC +CC +78 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EE4 +ENCODING 7908 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EE5 +ENCODING 7909 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +CC +CC +CC +CC +CC +76 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EE6 +ENCODING 7910 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +0C +18 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EE7 +ENCODING 7911 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +18 +30 +00 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EE8 +ENCODING 7912 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +33 +03 +CE +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EE9 +ENCODING 7913 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1B +33 +06 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EEA +ENCODING 7914 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +33 +03 +CE +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EEB +ENCODING 7915 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +63 +33 +06 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EEC +ENCODING 7916 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +70 +1B +33 +CE +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EED +ENCODING 7917 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +1B +33 +06 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EEE +ENCODING 7918 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +68 +B3 +03 +CE +CC +CC +CC +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EEF +ENCODING 7919 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +68 +B3 +03 +06 +CC +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EF0 +ENCODING 7920 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +03 +CE +CC +CC +CC +CC +CC +CC +CC +CC +78 +00 +30 +30 +00 +ENDCHAR +STARTCHAR uni1EF1 +ENCODING 7921 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +06 +CC +CC +CC +CC +CC +CC +76 +00 +30 +30 +00 +ENDCHAR +STARTCHAR Ygrave +ENCODING 7922 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +18 +00 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR ygrave +ENCODING 7923 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +30 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni1EF4 +ENCODING 7924 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +18 +18 +00 +ENDCHAR +STARTCHAR uni1EF5 +ENCODING 7925 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +7E +0C +18 +F6 +06 +00 +ENDCHAR +STARTCHAR uni1EF6 +ENCODING 7926 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +0C +18 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EF7 +ENCODING 7927 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +0C +18 +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni1EF8 +ENCODING 7928 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +3A +5C +00 +66 +66 +66 +3C +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1EF9 +ENCODING 7929 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +76 +DC +00 +C6 +C6 +C6 +C6 +C6 +C6 +7E +06 +0C +F8 +00 +ENDCHAR +STARTCHAR uni1F00 +ENCODING 7936 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +18 +30 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1F01 +ENCODING 7937 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +30 +18 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1F02 +ENCODING 7938 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +60 +6C +C6 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1F03 +ENCODING 7939 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +CC +66 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1F04 +ENCODING 7940 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +60 +66 +CC +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1F05 +ENCODING 7941 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C6 +6C +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1F06 +ENCODING 7942 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +34 +58 +0C +18 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni1F07 +ENCODING 7943 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +34 +58 +30 +18 +00 +76 +CC +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8192 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +A4 +AA +EA +EA +A6 +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8193 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +A4 +EA +AA +AA +A6 +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8194 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +EA +8A +CE +8E +EA +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8195 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +EA +8E +CA +8A +EA +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8196 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +CA +2E +4A +2A +CA +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8197 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +AA +AE +EA +2A +2A +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8198 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +6A +8E +CA +AA +4A +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8199 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +38 +20 +30 +20 +20 +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8200 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +30 +28 +30 +20 +20 +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8201 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +EA +4A +4E +4A +4A +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8202 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +28 +28 +38 +28 +28 +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8203 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +EA +2A +4E +8E +EE +00 +6C +8A +4C +28 +C8 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8204 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +EA +2A +4E +8E +EE +00 +A2 +A2 +E2 +EA +A4 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8205 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +EA +2A +4E +8E +EE +00 +08 +08 +08 +28 +10 +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8206 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +80 +80 +80 +F0 +28 +30 +28 +0A +0E +0E +0A +00 +FE +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 8207 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +00 +C0 +A0 +C0 +A0 +20 +20 +38 +0A +0E +0E +0A +00 +FE +00 +ENDCHAR +STARTCHAR uni2010 +ENCODING 8208 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7C +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2011 +ENCODING 8209 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +9C +D2 +BC +92 +9C +00 +3C +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR figuredash +ENCODING 8210 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7E +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR endash +ENCODING 8211 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7E +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR emdash +ENCODING 8212 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii00208 +ENCODING 8213 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2016 +ENCODING 8214 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +6C +6C +6C +6C +6C +6C +6C +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR underscoredbl +ENCODING 8215 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FE +00 +FE +00 +ENDCHAR +STARTCHAR quoteleft +ENCODING 8216 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +30 +30 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quoteright +ENCODING 8217 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +18 +18 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotesinglbase +ENCODING 8218 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +18 +30 +00 +00 +ENDCHAR +STARTCHAR quotereversed +ENCODING 8219 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +30 +30 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotedblleft +ENCODING 8220 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +66 +CC +CC +CC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotedblright +ENCODING 8221 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +66 +66 +66 +CC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR quotedblbase +ENCODING 8222 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +66 +66 +66 +CC +00 +00 +ENDCHAR +STARTCHAR uni201F +ENCODING 8223 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +CC +CC +CC +66 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dagger +ENCODING 8224 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +7E +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR daggerdbl +ENCODING 8225 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +7E +18 +18 +7E +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR bullet +ENCODING 8226 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +18 +3C +3C +18 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2023 +ENCODING 8227 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +20 +30 +38 +3C +38 +30 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR onedotenleader +ENCODING 8228 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR twodotenleader +ENCODING 8229 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ellipsis +ENCODING 8230 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +DB +DB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2027 +ENCODING 8231 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR perthousand +ENCODING 8240 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +C6 +0C +18 +30 +60 +C0 +36 +36 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2031 +ENCODING 8241 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +C6 +0C +18 +30 +60 +C0 +6B +6B +00 +00 +00 +00 +ENDCHAR +STARTCHAR minute +ENCODING 8242 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR second +ENCODING 8243 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +48 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2034 +ENCODING 8244 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +92 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2035 +ENCODING 8245 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +08 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2036 +ENCODING 8246 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +24 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2037 +ENCODING 8247 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +49 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2038 +ENCODING 8248 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +38 +6C +C6 +00 +ENDCHAR +STARTCHAR guilsinglleft +ENCODING 8249 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0C +18 +30 +60 +30 +18 +0C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR guilsinglright +ENCODING 8250 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +60 +30 +18 +0C +18 +30 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni203B +ENCODING 8251 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +92 +44 +28 +92 +28 +44 +92 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR exclamdbl +ENCODING 8252 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +66 +66 +66 +66 +66 +00 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni203D +ENCODING 8253 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +C3 +DB +1B +1E +1C +18 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni203E +ENCODING 8254 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +FE +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni203F +ENCODING 8255 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +82 +7C +00 +00 +ENDCHAR +STARTCHAR uni2040 +ENCODING 8256 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +7C +82 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2041 +ENCODING 8257 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +06 +0C +18 +38 +6C +00 +ENDCHAR +STARTCHAR uni2042 +ENCODING 8258 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +38 +28 +00 +00 +44 +EE +AA +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2043 +ENCODING 8259 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +3C +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR fraction +ENCODING 8260 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +06 +0C +0C +18 +18 +30 +30 +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2045 +ENCODING 8261 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +30 +30 +30 +3C +30 +30 +30 +30 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2046 +ENCODING 8262 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +0C +0C +0C +3C +0C +0C +0C +0C +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2048 +ENCODING 8264 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7B +CF +CF +1B +33 +33 +33 +00 +33 +33 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2049 +ENCODING 8265 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DE +F3 +F3 +C6 +CC +CC +CC +00 +CC +CC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni204A +ENCODING 8266 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7E +7E +06 +06 +0C +0C +00 +00 +00 +ENDCHAR +STARTCHAR uni204B +ENCODING 8267 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +DB +DB +DB +DE +D8 +D8 +D8 +D8 +D8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni204C +ENCODING 8268 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +3E +72 +F2 +F2 +F2 +72 +3E +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni204D +ENCODING 8269 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +F8 +9C +9E +9E +9E +9C +F8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR zerosuperior +ENCODING 8304 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +D8 +D8 +D8 +D8 +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR foursuperior +ENCODING 8308 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +18 +38 +78 +D8 +FC +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR fivesuperior +ENCODING 8309 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +F8 +C0 +F0 +18 +D8 +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR sixsuperior +ENCODING 8310 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +78 +C0 +F0 +D8 +D8 +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR sevensuperior +ENCODING 8311 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +F8 +D8 +30 +30 +60 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR eightsuperior +ENCODING 8312 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +D8 +70 +D8 +D8 +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR ninesuperior +ENCODING 8313 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +D8 +D8 +78 +18 +F0 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni207A +ENCODING 8314 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +30 +FC +30 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni207B +ENCODING 8315 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni207C +ENCODING 8316 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +00 +FC +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR parenleftsuperior +ENCODING 8317 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +60 +60 +60 +60 +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR parenrightsuperior +ENCODING 8318 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +60 +30 +30 +30 +30 +60 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR nsuperior +ENCODING 8319 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +B0 +D8 +D8 +D8 +D8 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR zeroinferior +ENCODING 8320 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +70 +D8 +D8 +D8 +D8 +70 +00 +00 +00 +ENDCHAR +STARTCHAR oneinferior +ENCODING 8321 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +30 +70 +30 +30 +30 +78 +00 +00 +00 +ENDCHAR +STARTCHAR twoinferior +ENCODING 8322 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +70 +D8 +30 +60 +C8 +F8 +00 +00 +00 +ENDCHAR +STARTCHAR threeinferior +ENCODING 8323 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +70 +D8 +30 +18 +D8 +70 +00 +00 +00 +ENDCHAR +STARTCHAR fourinferior +ENCODING 8324 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +18 +38 +78 +D8 +FC +18 +00 +00 +00 +ENDCHAR +STARTCHAR fiveinferior +ENCODING 8325 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +F8 +C0 +F0 +18 +D8 +70 +00 +00 +00 +ENDCHAR +STARTCHAR sixinferior +ENCODING 8326 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +78 +C0 +F0 +D8 +D8 +70 +00 +00 +00 +ENDCHAR +STARTCHAR seveninferior +ENCODING 8327 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +F8 +D8 +30 +30 +60 +60 +00 +00 +00 +ENDCHAR +STARTCHAR eightinferior +ENCODING 8328 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +70 +D8 +70 +D8 +D8 +70 +00 +00 +00 +ENDCHAR +STARTCHAR nineinferior +ENCODING 8329 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +70 +D8 +D8 +78 +18 +F0 +00 +00 +00 +ENDCHAR +STARTCHAR uni208A +ENCODING 8330 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +30 +30 +FC +30 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni208B +ENCODING 8331 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +FC +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni208C +ENCODING 8332 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +FC +00 +FC +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR parenleftinferior +ENCODING 8333 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +30 +60 +60 +60 +60 +30 +00 +00 +00 +ENDCHAR +STARTCHAR parenrightinferior +ENCODING 8334 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +60 +30 +30 +30 +30 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uni208F +ENCODING 8335 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +B0 +D8 +D8 +D8 +D8 +00 +00 +00 +ENDCHAR +STARTCHAR uni20A0 +ENCODING 8352 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +C0 +CF +CC +CC +7F +0C +0C +0F +00 +00 +00 +00 +ENDCHAR +STARTCHAR colonmonetary +ENCODING 8353 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +04 +7C +CE +C8 +C8 +D0 +D0 +D0 +E0 +E6 +7C +40 +40 +00 +00 +ENDCHAR +STARTCHAR uni20A2 +ENCODING 8354 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C0 +C0 +D6 +D8 +D8 +D8 +DE +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR franc +ENCODING 8355 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +C0 +C0 +C0 +F0 +CD +CE +CC +CC +CC +00 +00 +00 +00 +ENDCHAR +STARTCHAR lira +ENCODING 8356 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +60 +F8 +60 +F8 +60 +60 +E6 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20A5 +ENCODING 8357 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +02 +EC +D6 +DE +D6 +D6 +F6 +D6 +40 +00 +00 +00 +ENDCHAR +STARTCHAR uni20A6 +ENCODING 8358 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +66 +76 +FF +76 +6E +FF +6E +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR peseta +ENCODING 8359 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +7C +62 +66 +6F +66 +66 +F3 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20A8 +ENCODING 8360 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +CC +CC +CC +F8 +E0 +F3 +D6 +DB +CE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20A9 +ENCODING 8361 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +81 +81 +81 +5A +FF +5A +FF +24 +24 +24 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii57636 +ENCODING 8362 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +F2 +8A +AA +AA +AA +AA +A2 +BC +00 +00 +00 +00 +ENDCHAR +STARTCHAR dong +ENCODING 8363 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +3E +0C +3C +6C +CC +CC +CC +CC +76 +00 +7C +00 +00 +ENDCHAR +STARTCHAR Euro +ENCODING 8364 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +36 +60 +FC +60 +F8 +60 +60 +36 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20AD +ENCODING 8365 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +6C +78 +FE +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20AE +ENCODING 8366 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +7E +5A +18 +1E +78 +1E +78 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni20AF +ENCODING 8367 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +7C +B6 +36 +33 +33 +33 +63 +66 +F6 +DC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2100 +ENCODING 8448 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +D0 +D2 +D6 +7C +18 +30 +6E +D8 +98 +18 +0E +00 +00 +00 +ENDCHAR +STARTCHAR uni2101 +ENCODING 8449 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +D0 +D2 +D6 +7C +18 +30 +6E +D8 +8C +06 +1C +00 +00 +00 +ENDCHAR +STARTCHAR uni2102 +ENCODING 8450 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +62 +A0 +A0 +A0 +A0 +A0 +A0 +62 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2103 +ENCODING 8451 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +4E +B9 +58 +18 +18 +18 +18 +18 +19 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2104 +ENCODING 8452 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +7C +DA +D8 +D8 +DA +7C +19 +3F +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii61248 +ENCODING 8453 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +C0 +C2 +C6 +7C +18 +30 +6E +DB +9B +1B +0E +00 +00 +00 +ENDCHAR +STARTCHAR uni2106 +ENCODING 8454 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +70 +C0 +C2 +C6 +7C +18 +30 +7B +DB +9B +1B +0D +00 +00 +00 +ENDCHAR +STARTCHAR uni2107 +ENCODING 8455 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C2 +C0 +78 +C0 +C0 +C2 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2108 +ENCODING 8456 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +86 +26 +3E +26 +06 +86 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2109 +ENCODING 8457 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7F +B9 +58 +1A +1E +1A +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni210A +ENCODING 8458 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +1A +66 +46 +87 +8C +8C +7C +98 +98 +70 +00 +ENDCHAR +STARTCHAR uni210B +ENCODING 8459 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +52 +B5 +15 +16 +2C +34 +68 +A9 +AA +4C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni210C +ENCODING 8460 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +48 +B0 +80 +48 +7C +66 +26 +26 +A6 +46 +06 +34 +48 +00 +ENDCHAR +STARTCHAR uni210D +ENCODING 8461 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E2 +A2 +A2 +A2 +BE +A2 +A2 +A2 +A2 +E2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni210E +ENCODING 8462 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +36 +3B +3B +33 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni210F +ENCODING 8463 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +1E +18 +76 +3B +3B +33 +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2110 +ENCODING 8464 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +33 +4E +06 +06 +0C +0C +1F +6C +88 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Ifraktur +ENCODING 8465 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +71 +8E +04 +0C +06 +03 +63 +C3 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2112 +ENCODING 8466 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +46 +49 +39 +1E +18 +30 +70 +B1 +BA +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii61289 +ENCODING 8467 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0E +19 +31 +32 +64 +68 +70 +E1 +66 +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2114 +ENCODING 8468 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D8 +FF +D8 +DE +DB +DB +DB +DB +DB +DE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2115 +ENCODING 8469 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E2 +A2 +B2 +B2 +AA +AA +A6 +A6 +A2 +E2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR afii61352 +ENCODING 8470 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +CC +CF +ED +FF +FC +DF +CC +CC +CC +CC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2117 +ENCODING 8471 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +B9 +A5 +A5 +B9 +A1 +A1 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR weierstrass +ENCODING 8472 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +40 +8E +93 +A3 +63 +4B +6A +A4 +B0 +B0 +60 +00 +ENDCHAR +STARTCHAR uni2119 +ENCODING 8473 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +A2 +A2 +A2 +A2 +BC +A0 +A0 +A0 +E0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni211A +ENCODING 8474 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +A2 +A2 +A2 +A2 +A2 +A2 +AA +A6 +7E +01 +00 +00 +00 +ENDCHAR +STARTCHAR uni211B +ENCODING 8475 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3E +4D +4D +19 +1E +1C +34 +34 +B5 +62 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Rfraktur +ENCODING 8476 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +58 +A6 +A3 +6C +B8 +26 +26 +26 +A7 +C2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni211D +ENCODING 8477 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +A2 +A2 +A2 +A2 +BC +B0 +A8 +A4 +E2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR prescription +ENCODING 8478 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FC +66 +66 +66 +7C +6C +6D +67 +66 +EE +08 +00 +00 +00 +ENDCHAR +STARTCHAR uni211F +ENCODING 8479 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +0C +FC +C6 +C6 +C6 +FC +D8 +DC +DC +E6 +E6 +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni2120 +ENCODING 8480 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +71 +DB +35 +D1 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2121 +ENCODING 8481 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FE +52 +5A +52 +5F +00 +00 +00 +00 +ENDCHAR +STARTCHAR trademark +ENCODING 8482 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F1 +5B +55 +51 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2123 +ENCODING 8483 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +18 +CE +D6 +D6 +D6 +D6 +D6 +E6 +6C +38 +50 +40 +00 +00 +00 +ENDCHAR +STARTCHAR uni2124 +ENCODING 8484 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +0A +14 +14 +28 +28 +50 +50 +A0 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2125 +ENCODING 8485 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +9C +30 +FE +0C +18 +38 +0C +06 +06 +C6 +C6 +7C +00 +ENDCHAR +STARTCHAR Omega +ENCODING 8486 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +6C +6C +6C +EE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2127 +ENCODING 8487 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +EE +6C +6C +6C +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2128 +ENCODING 8488 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +26 +03 +13 +0C +13 +03 +03 +66 +98 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2129 +ENCODING 8489 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +18 +18 +18 +18 +1C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni212A +ENCODING 8490 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E6 +66 +66 +6C +78 +78 +6C +66 +66 +E6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni212B +ENCODING 8491 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +6C +38 +10 +38 +38 +6C +6C +C6 +FE +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni212C +ENCODING 8492 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +2D +2D +1A +1E +1B +31 +31 +B2 +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni212D +ENCODING 8493 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +14 +6B +C8 +CC +C6 +C6 +CC +C0 +63 +1C +00 +00 +00 +00 +ENDCHAR +STARTCHAR estimated +ENCODING 8494 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +E7 +FF +E0 +67 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni212F +ENCODING 8495 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +1C +26 +44 +F8 +C0 +C8 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2130 +ENCODING 8496 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +4C +52 +3C +10 +3C +60 +C0 +C3 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2131 +ENCODING 8497 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +73 +CE +18 +3A +5C +18 +30 +30 +B0 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2132 +ENCODING 8498 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +0C +0C +0C +2C +3C +2C +8C +CC +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2133 +ENCODING 8499 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +12 +12 +12 +16 +36 +3E +3A +5A +52 +91 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2134 +ENCODING 8500 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +1C +26 +46 +C6 +C4 +C8 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR aleph +ENCODING 8501 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +42 +C6 +E7 +7A +38 +5C +CE +E7 +63 +E2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2136 +ENCODING 8502 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +80 +FC +7E +06 +06 +06 +06 +0C +7E +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2137 +ENCODING 8503 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +40 +78 +3C +0C +0C +0C +0C +1E +7E +F2 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2138 +ENCODING 8504 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +80 +FE +7E +0C +0C +0C +0C +0C +1C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2139 +ENCODING 8505 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +38 +00 +78 +38 +38 +38 +38 +38 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni213A +ENCODING 8506 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7D +FF +83 +86 +82 +FE +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR onethird +ENCODING 8531 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +C2 +C6 +CC +18 +30 +60 +DC +86 +1C +06 +1C +00 +00 +ENDCHAR +STARTCHAR twothirds +ENCODING 8532 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +E0 +30 +62 +C6 +FC +18 +30 +60 +DC +86 +1C +06 +1C +00 +00 +ENDCHAR +STARTCHAR uni2155 +ENCODING 8533 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +C2 +C6 +CC +18 +30 +60 +DE +98 +1C +06 +1C +00 +00 +ENDCHAR +STARTCHAR uni2156 +ENCODING 8534 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +E0 +30 +62 +C6 +FC +18 +30 +60 +DE +98 +1C +06 +1C +00 +00 +ENDCHAR +STARTCHAR uni2157 +ENCODING 8535 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +E0 +30 +62 +36 +EC +18 +30 +60 +DE +98 +1C +06 +1C +00 +00 +ENDCHAR +STARTCHAR uni2158 +ENCODING 8536 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +70 +B2 +F6 +3C +18 +30 +60 +DE +98 +1C +06 +1C +00 +00 +ENDCHAR +STARTCHAR uni2159 +ENCODING 8537 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +C2 +C6 +CC +18 +30 +60 +DC +B0 +3C +36 +1C +00 +00 +ENDCHAR +STARTCHAR uni215A +ENCODING 8538 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +F0 +C0 +E2 +36 +EC +18 +30 +60 +DC +B0 +3C +36 +1C +00 +00 +ENDCHAR +STARTCHAR oneeighth +ENCODING 8539 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +C2 +C6 +CC +18 +30 +60 +DC +B6 +1C +36 +1C +00 +00 +ENDCHAR +STARTCHAR threeeighths +ENCODING 8540 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +E0 +30 +62 +36 +EC +18 +30 +60 +DC +B6 +1C +36 +1C +00 +00 +ENDCHAR +STARTCHAR fiveeighths +ENCODING 8541 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +F0 +80 +E2 +36 +EC +18 +30 +60 +DC +B6 +1C +36 +1C +00 +00 +ENDCHAR +STARTCHAR seveneighths +ENCODING 8542 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +F0 +30 +62 +66 +6C +18 +30 +60 +DC +B6 +1C +36 +1C +00 +00 +ENDCHAR +STARTCHAR uni215F +ENCODING 8543 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +C2 +C6 +CC +18 +30 +60 +C0 +80 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2160 +ENCODING 8544 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2161 +ENCODING 8545 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +6C +6C +6C +6C +6C +6C +6C +6C +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2162 +ENCODING 8546 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +DB +DB +DB +DB +DB +DB +DB +DB +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2163 +ENCODING 8547 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +DB +DB +DB +DB +DB +CE +CE +C4 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2164 +ENCODING 8548 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +6C +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2165 +ENCODING 8549 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +DB +DB +DB +DB +DB +73 +73 +23 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2166 +ENCODING 8550 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +95 +95 +95 +95 +95 +95 +95 +65 +65 +65 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2167 +ENCODING 8551 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +B5 +B5 +B5 +B5 +B5 +B5 +55 +55 +55 +55 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2168 +ENCODING 8552 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +DB +CE +CE +CE +DB +DB +DB +DB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2169 +ENCODING 8553 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +6C +7C +38 +38 +7C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni216A +ENCODING 8554 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +DB +73 +73 +73 +DB +DB +DB +DB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni216B +ENCODING 8555 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +95 +95 +95 +65 +65 +65 +95 +95 +95 +95 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni216C +ENCODING 8556 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +60 +60 +60 +60 +60 +60 +62 +66 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni216D +ENCODING 8557 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +C2 +C0 +C0 +C0 +C0 +C2 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni216E +ENCODING 8558 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +6C +66 +66 +66 +66 +66 +66 +6C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni216F +ENCODING 8559 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +EE +FE +FE +D6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2170 +ENCODING 8560 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2171 +ENCODING 8561 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +00 +6C +6C +6C +6C +6C +6C +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2172 +ENCODING 8562 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +DB +DB +00 +DB +DB +DB +DB +DB +DB +DB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2173 +ENCODING 8563 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +00 +DB +DB +DB +DB +DB +CE +C4 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2174 +ENCODING 8564 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +66 +66 +66 +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2175 +ENCODING 8565 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +00 +DB +DB +DB +DB +DB +73 +23 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2176 +ENCODING 8566 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +05 +05 +00 +95 +95 +95 +95 +95 +65 +65 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2177 +ENCODING 8567 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +15 +15 +00 +B5 +B5 +B5 +B5 +55 +55 +55 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2178 +ENCODING 8568 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +00 +DB +DB +CE +CE +CE +DB +DB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2179 +ENCODING 8569 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +6C +38 +38 +38 +6C +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni217A +ENCODING 8570 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +00 +DB +DB +73 +73 +73 +DB +DB +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni217B +ENCODING 8571 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +05 +05 +00 +95 +95 +65 +65 +95 +95 +95 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni217C +ENCODING 8572 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +18 +18 +18 +18 +18 +18 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni217D +ENCODING 8573 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +7C +C6 +C0 +C0 +C0 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni217E +ENCODING 8574 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +0C +0C +3C +6C +CC +CC +CC +CC +76 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni217F +ENCODING 8575 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +EC +FE +D6 +D6 +D6 +D6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2180 +ENCODING 8576 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +5A +DB +DB +DB +DB +DB +DB +5A +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2181 +ENCODING 8577 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +CC +E6 +D6 +D6 +D6 +D6 +E6 +CC +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2182 +ENCODING 8578 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +5A +99 +BD +DB +DB +BD +99 +5A +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2183 +ENCODING 8579 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +CC +86 +06 +06 +06 +06 +86 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowleft +ENCODING 8592 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +30 +60 +FF +60 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowup +ENCODING 8593 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +7E +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowright +ENCODING 8594 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +06 +FF +06 +0C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowdown +ENCODING 8595 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +18 +18 +18 +7E +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowboth +ENCODING 8596 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +24 +66 +FF +66 +24 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowupdn +ENCODING 8597 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +7E +18 +18 +18 +7E +3C +18 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2196 +ENCODING 8598 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +F0 +E0 +B0 +18 +0C +06 +03 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2197 +ENCODING 8599 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +0F +07 +0D +18 +30 +60 +C0 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2198 +ENCODING 8600 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C0 +60 +30 +18 +0D +07 +0F +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2199 +ENCODING 8601 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +03 +06 +0C +18 +B0 +E0 +F0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni219A +ENCODING 8602 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +32 +62 +FF +64 +34 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni219B +ENCODING 8603 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +2C +26 +FF +46 +4C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni219C +ENCODING 8604 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +E0 +CE +BB +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni219D +ENCODING 8605 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +07 +73 +DD +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni219E +ENCODING 8606 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +36 +6C +FF +6C +36 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni219F +ENCODING 8607 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +7E +18 +3C +7E +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A0 +ENCODING 8608 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +6C +36 +FF +36 +6C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A1 +ENCODING 8609 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +7E +3C +18 +7E +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A2 +ENCODING 8610 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +33 +66 +FC +66 +33 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A3 +ENCODING 8611 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +66 +3F +66 +CC +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A4 +ENCODING 8612 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +33 +63 +FF +63 +33 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A5 +ENCODING 8613 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +7E +18 +18 +18 +18 +18 +18 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A6 +ENCODING 8614 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +CC +C6 +FF +C6 +CC +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A7 +ENCODING 8615 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +18 +18 +18 +18 +18 +18 +7E +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowupdnbse +ENCODING 8616 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +7E +18 +18 +18 +7E +3C +18 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21A9 +ENCODING 8617 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +33 +63 +FE +60 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21AA +ENCODING 8618 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +60 +CC +C6 +7F +06 +0C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21AB +ENCODING 8619 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +3B +6B +FE +68 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21AC +ENCODING 8620 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +60 +DC +D6 +7F +16 +0C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21AD +ENCODING 8621 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +24 +5A +FF +66 +24 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21AE +ENCODING 8622 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +2C +6E +FF +76 +34 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21AF +ENCODING 8623 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +30 +60 +63 +FF +C6 +16 +1C +1C +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B0 +ENCODING 8624 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +30 +60 +FE +66 +36 +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B1 +ENCODING 8625 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +0C +FE +CC +D8 +C0 +C0 +C0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B2 +ENCODING 8626 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +06 +06 +06 +06 +36 +66 +FE +60 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B3 +ENCODING 8627 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +C0 +C0 +C0 +D8 +CC +FE +0C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B4 +ENCODING 8628 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FC +0C +0C +3F +1E +0C +00 +00 +00 +ENDCHAR +STARTCHAR carriagereturn +ENCODING 8629 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +06 +36 +66 +FE +60 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B6 +ENCODING 8630 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +1E +33 +33 +33 +30 +FC +78 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B7 +ENCODING 8631 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +78 +CC +CC +CC +0C +3F +1E +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B8 +ENCODING 8632 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +00 +F0 +E0 +B0 +18 +0C +06 +03 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21B9 +ENCODING 8633 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +98 +B0 +FF +B0 +98 +19 +0D +FF +0D +19 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21BA +ENCODING 8634 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +1E +1C +16 +03 +C3 +C3 +C3 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21BB +ENCODING 8635 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +78 +38 +68 +C0 +C3 +C3 +C3 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21BC +ENCODING 8636 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +30 +60 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21BD +ENCODING 8637 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +60 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21BE +ENCODING 8638 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +1C +1E +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21BF +ENCODING 8639 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +38 +78 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C0 +ENCODING 8640 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +06 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C1 +ENCODING 8641 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +06 +0C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C2 +ENCODING 8642 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +18 +18 +18 +1E +1C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C3 +ENCODING 8643 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +18 +18 +18 +78 +38 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C4 +ENCODING 8644 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +06 +FF +06 +0C +30 +60 +FF +60 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C5 +ENCODING 8645 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +2E +3F +24 +24 +24 +24 +FC +74 +24 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C6 +ENCODING 8646 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +60 +FF +60 +30 +0C +06 +FF +06 +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C7 +ENCODING 8647 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +60 +FE +60 +30 +00 +30 +60 +FE +60 +30 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C8 +ENCODING 8648 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +7E +FF +24 +24 +24 +24 +24 +24 +24 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21C9 +ENCODING 8649 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +0C +FE +0C +18 +00 +18 +0C +FE +0C +18 +00 +00 +00 +ENDCHAR +STARTCHAR uni21CA +ENCODING 8650 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +24 +24 +24 +24 +24 +24 +FF +7E +24 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21CB +ENCODING 8651 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +30 +60 +FF +00 +FF +06 +0C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21CC +ENCODING 8652 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0C +06 +FF +00 +FF +60 +30 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21CD +ENCODING 8653 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +22 +7F +C4 +7F +24 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21CE +ENCODING 8654 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +2C +7E +CB +7E +34 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21CF +ENCODING 8655 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +24 +FE +23 +FE +44 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowdblleft +ENCODING 8656 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +20 +7F +C0 +7F +20 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowdblup +ENCODING 8657 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +7C +EE +6C +6C +6C +6C +6C +6C +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowdblright +ENCODING 8658 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +04 +FE +03 +FE +04 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowdbldown +ENCODING 8659 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +6C +6C +6C +6C +6C +EE +7C +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR arrowdblboth +ENCODING 8660 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +24 +7E +C3 +7E +24 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21D5 +ENCODING 8661 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +7C +EE +6C +6C +6C +6C +EE +7C +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21D6 +ENCODING 8662 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +F0 +E0 +B0 +D8 +EC +B6 +1B +0C +04 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21D7 +ENCODING 8663 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +0F +07 +0D +1B +37 +6D +D8 +30 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21D8 +ENCODING 8664 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +20 +30 +D8 +6D +37 +1B +0D +07 +0F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21D9 +ENCODING 8665 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +0C +1B +B6 +EC +D8 +B0 +E0 +F0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21DA +ENCODING 8666 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +3F +60 +FF +60 +3F +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21DB +ENCODING 8667 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +FC +06 +FF +06 +FC +08 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21DC +ENCODING 8668 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +30 +6A +FF +65 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21DD +ENCODING 8669 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +A6 +FF +56 +0C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21DE +ENCODING 8670 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +7E +18 +18 +3C +18 +3C +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21DF +ENCODING 8671 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +3C +18 +3C +18 +18 +7E +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E0 +ENCODING 8672 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +30 +60 +D5 +60 +30 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E1 +ENCODING 8673 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +66 +18 +00 +18 +00 +18 +00 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E2 +ENCODING 8674 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +06 +AB +06 +0C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E3 +ENCODING 8675 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +00 +18 +00 +18 +00 +18 +66 +3C +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E4 +ENCODING 8676 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +98 +B0 +FF +B0 +98 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E5 +ENCODING 8677 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +19 +0D +FF +0D +19 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E6 +ENCODING 8678 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +3F +41 +81 +41 +3F +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E7 +ENCODING 8679 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +44 +C6 +44 +44 +44 +44 +44 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E8 +ENCODING 8680 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +FC +82 +81 +82 +FC +08 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21E9 +ENCODING 8681 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +44 +44 +44 +44 +44 +C6 +44 +28 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21EA +ENCODING 8682 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +44 +C6 +44 +44 +7C +00 +7C +44 +7C +00 +00 +00 +ENDCHAR +STARTCHAR uni21EB +ENCODING 8683 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +44 +C6 +44 +44 +44 +C6 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21EC +ENCODING 8684 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +7C +C6 +44 +44 +44 +C6 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21ED +ENCODING 8685 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +54 +D6 +54 +54 +54 +D6 +92 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21EE +ENCODING 8686 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +28 +54 +EE +44 +C6 +44 +44 +44 +44 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21EF +ENCODING 8687 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +28 +54 +EE +44 +C6 +44 +44 +C6 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21F0 +ENCODING 8688 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +E8 +BC +82 +81 +82 +BC +E8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21F1 +ENCODING 8689 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +80 +BC +B8 +AC +86 +83 +81 +80 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21F2 +ENCODING 8690 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +01 +81 +C1 +61 +35 +1D +3D +01 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni21F3 +ENCODING 8691 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +44 +C6 +44 +44 +44 +C6 +44 +28 +10 +00 +00 +00 +ENDCHAR +STARTCHAR universal +ENCODING 8704 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +FE +C6 +6C +6C +38 +38 +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2201 +ENCODING 8705 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +60 +60 +60 +60 +60 +66 +3C +00 +00 +ENDCHAR +STARTCHAR partialdiff +ENCODING 8706 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +06 +06 +3E +66 +C6 +C6 +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR existential +ENCODING 8707 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +06 +06 +06 +7E +06 +06 +06 +06 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2204 +ENCODING 8708 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +FE +16 +16 +16 +7E +16 +26 +26 +26 +FE +40 +00 +00 +00 +ENDCHAR +STARTCHAR emptyset +ENCODING 8709 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +3E +66 +CF +DB +DB +F3 +66 +7C +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR Delta +ENCODING 8710 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +38 +38 +6C +6C +C6 +C6 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR gradient +ENCODING 8711 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +C6 +C6 +6C +6C +38 +38 +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR element +ENCODING 8712 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +3E +60 +C0 +C0 +FE +C0 +C0 +60 +3E +00 +00 +00 +00 +ENDCHAR +STARTCHAR notelement +ENCODING 8713 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +3E +64 +C8 +C8 +FE +C8 +D0 +70 +3E +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni220A +ENCODING 8714 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +3E +60 +C0 +FE +C0 +60 +3E +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR suchthat +ENCODING 8715 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +F8 +0C +06 +06 +FE +06 +06 +0C +F8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni220C +ENCODING 8716 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +F8 +1C +16 +26 +FE +26 +26 +4C +F8 +40 +00 +00 +00 +ENDCHAR +STARTCHAR uni220D +ENCODING 8717 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +F8 +0C +06 +FE +06 +0C +F8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni220E +ENCODING 8718 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +7E +7E +7E +7E +7E +7E +7E +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR product +ENCODING 8719 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +66 +66 +66 +66 +66 +66 +66 +66 +66 +66 +E7 +00 +00 +ENDCHAR +STARTCHAR uni2210 +ENCODING 8720 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E7 +66 +66 +66 +66 +66 +66 +66 +66 +66 +66 +FF +00 +00 +ENDCHAR +STARTCHAR summation +ENCODING 8721 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +C1 +60 +30 +18 +0C +0C +18 +30 +60 +C1 +FF +00 +00 +ENDCHAR +STARTCHAR minus +ENCODING 8722 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7E +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2213 +ENCODING 8723 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +7E +00 +18 +18 +7E +18 +18 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2214 +ENCODING 8724 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +18 +00 +18 +18 +7E +18 +18 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR fraction +ENCODING 8725 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +06 +06 +0C +0C +18 +18 +30 +30 +60 +60 +C0 +C0 +00 +00 +00 +ENDCHAR +STARTCHAR uni2216 +ENCODING 8726 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +C0 +60 +60 +30 +30 +18 +18 +0C +0C +06 +06 +00 +00 +00 +ENDCHAR +STARTCHAR asteriskmath +ENCODING 8727 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +24 +18 +7E +18 +24 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2218 +ENCODING 8728 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +24 +24 +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR periodcentered +ENCODING 8729 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +3C +3C +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR radical +ENCODING 8730 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +06 +06 +06 +0C +CC +6C +38 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni221B +ENCODING 8731 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E3 +33 +66 +36 +E6 +0C +CC +6C +38 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni221C +ENCODING 8732 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +33 +73 +B6 +F6 +36 +0C +CC +6C +38 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR proportional +ENCODING 8733 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +D8 +D8 +6E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR infinity +ENCODING 8734 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +DB +DB +6E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR orthogonal +ENCODING 8735 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +C0 +C0 +C0 +C0 +C0 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR angle +ENCODING 8736 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +02 +06 +0C +18 +30 +60 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2221 +ENCODING 8737 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +02 +16 +0C +1C +34 +62 +FF +02 +00 +00 +00 +ENDCHAR +STARTCHAR uni2222 +ENCODING 8738 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +0E +38 +E8 +38 +0E +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2223 +ENCODING 8739 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2224 +ENCODING 8740 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +1A +1C +38 +58 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2225 +ENCODING 8741 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +6C +6C +6C +6C +6C +6C +6C +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2226 +ENCODING 8742 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6C +6C +6C +6E +7C +EC +6C +6C +6C +6C +00 +00 +00 +00 +ENDCHAR +STARTCHAR logicaland +ENCODING 8743 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +10 +38 +38 +6C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR logicalor +ENCODING 8744 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C6 +C6 +6C +6C +38 +38 +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR intersection +ENCODING 8745 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +7C +C6 +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR union +ENCODING 8746 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR integral +ENCODING 8747 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +1A +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +58 +30 +00 +00 +ENDCHAR +STARTCHAR uni222C +ENCODING 8748 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +33 +66 +66 +66 +66 +66 +66 +66 +66 +66 +66 +66 +66 +CC +00 +00 +ENDCHAR +STARTCHAR uni222D +ENCODING 8749 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +2A +54 +54 +54 +54 +54 +54 +54 +54 +54 +54 +54 +54 +A8 +00 +00 +ENDCHAR +STARTCHAR uni222E +ENCODING 8750 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +1A +18 +18 +3C +5A +99 +99 +5A +3C +18 +18 +58 +30 +00 +00 +ENDCHAR +STARTCHAR uni222F +ENCODING 8751 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +33 +66 +66 +66 +7E +E7 +E7 +E7 +E7 +7E +66 +66 +66 +CC +00 +00 +ENDCHAR +STARTCHAR uni2230 +ENCODING 8752 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +2A +54 +54 +54 +7C +D6 +D6 +D6 +D6 +7C +54 +54 +54 +A8 +00 +00 +ENDCHAR +STARTCHAR uni2231 +ENCODING 8753 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +34 +30 +30 +38 +35 +33 +37 +30 +30 +30 +30 +B0 +60 +00 +00 +ENDCHAR +STARTCHAR uni2232 +ENCODING 8754 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +1A +18 +18 +3C +5A +FA +5A +5A +3C +18 +18 +58 +30 +00 +00 +ENDCHAR +STARTCHAR uni2233 +ENCODING 8755 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +1A +18 +18 +3C +5A +5F +5A +5A +3C +18 +18 +58 +30 +00 +00 +ENDCHAR +STARTCHAR therefore +ENCODING 8756 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2235 +ENCODING 8757 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +00 +00 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2236 +ENCODING 8758 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2237 +ENCODING 8759 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +66 +66 +00 +00 +00 +66 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2238 +ENCODING 8760 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +18 +00 +7E +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2239 +ENCODING 8761 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +03 +03 +00 +FC +00 +03 +03 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni223A +ENCODING 8762 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +66 +66 +00 +7E +00 +66 +66 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni223B +ENCODING 8763 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +18 +00 +76 +DC +00 +30 +30 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR similar +ENCODING 8764 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +76 +DC +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni223D +ENCODING 8765 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +DC +76 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni223E +ENCODING 8766 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +72 +DB +DB +4E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni223F +ENCODING 8767 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +D8 +DB +DB +1B +0E +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2240 +ENCODING 8768 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +1C +30 +30 +30 +18 +0C +0C +0C +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2241 +ENCODING 8769 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +08 +10 +76 +DC +10 +20 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2242 +ENCODING 8770 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FE +00 +76 +DC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2243 +ENCODING 8771 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +DC +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2244 +ENCODING 8772 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +08 +76 +DC +10 +FE +20 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR congruent +ENCODING 8773 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +76 +DC +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2246 +ENCODING 8774 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +76 +DC +08 +FE +10 +FE +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2247 +ENCODING 8775 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +08 +76 +DC +10 +FE +20 +FE +40 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR approxequal +ENCODING 8776 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +76 +DC +00 +76 +DC +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2249 +ENCODING 8777 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +08 +76 +DC +10 +76 +DC +20 +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni224A +ENCODING 8778 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +76 +DC +00 +76 +DC +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni224B +ENCODING 8779 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +76 +DC +00 +76 +DC +00 +76 +DC +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni224C +ENCODING 8780 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +DC +76 +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni224D +ENCODING 8781 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C6 +7C +00 +7C +C6 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni224E +ENCODING 8782 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +66 +00 +00 +66 +18 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni224F +ENCODING 8783 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +66 +00 +00 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2250 +ENCODING 8784 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +7E +00 +00 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2251 +ENCODING 8785 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +7E +00 +00 +7E +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2252 +ENCODING 8786 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +60 +00 +7E +00 +00 +7E +00 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2253 +ENCODING 8787 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +06 +00 +7E +00 +00 +7E +00 +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2254 +ENCODING 8788 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C0 +DF +00 +00 +DF +C0 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2255 +ENCODING 8789 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +03 +FB +00 +00 +FB +03 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2256 +ENCODING 8790 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FE +28 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2257 +ENCODING 8791 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +10 +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2258 +ENCODING 8792 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +38 +44 +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2259 +ENCODING 8793 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +44 +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni225A +ENCODING 8794 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +44 +28 +10 +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni225B +ENCODING 8795 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +10 +7C +28 +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni225C +ENCODING 8796 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +10 +28 +44 +7C +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni225D +ENCODING 8797 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +26 +7C +B4 +6C +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni225E +ENCODING 8798 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +68 +54 +54 +00 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni225F +ENCODING 8799 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +08 +10 +00 +10 +FE +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR notequal +ENCODING 8800 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +08 +7E +08 +10 +7E +10 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR equivalence +ENCODING 8801 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +00 +00 +FE +00 +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2262 +ENCODING 8802 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +08 +FE +08 +10 +FE +10 +20 +FE +20 +40 +00 +00 +00 +ENDCHAR +STARTCHAR uni2263 +ENCODING 8803 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +00 +00 +FE +00 +00 +FE +00 +00 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR lessequal +ENCODING 8804 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0E +38 +E0 +38 +0E +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR greaterequal +ENCODING 8805 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +E0 +38 +0E +38 +E0 +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2266 +ENCODING 8806 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +0E +38 +E0 +38 +0E +00 +FE +00 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2267 +ENCODING 8807 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +E0 +38 +0E +38 +E0 +00 +FE +00 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2268 +ENCODING 8808 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +0E +38 +E0 +38 +0E +08 +FE +10 +FE +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni2269 +ENCODING 8809 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +E0 +38 +0E +38 +E0 +08 +FE +10 +FE +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni226A +ENCODING 8810 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +1B +36 +6C +D8 +6C +36 +1B +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni226B +ENCODING 8811 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +D8 +6C +36 +1B +36 +6C +D8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni226C +ENCODING 8812 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +66 +18 +3C +66 +66 +66 +66 +3C +18 +66 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni226D +ENCODING 8813 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +CE +7C +10 +7C +E6 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni226E +ENCODING 8814 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +04 +0E +38 +E8 +38 +0E +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni226F +ENCODING 8815 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +E0 +38 +2E +38 +E0 +40 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2270 +ENCODING 8816 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +04 +0E +38 +E8 +38 +0E +10 +FE +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2271 +ENCODING 8817 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +E0 +38 +2E +38 +E0 +40 +FE +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2272 +ENCODING 8818 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0E +38 +E0 +38 +0E +00 +76 +DC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2273 +ENCODING 8819 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +E0 +38 +0E +38 +E0 +00 +76 +DC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2274 +ENCODING 8820 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +04 +0E +38 +E8 +38 +0E +10 +76 +DC +20 +20 +00 +00 +ENDCHAR +STARTCHAR uni2275 +ENCODING 8821 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +E0 +38 +2E +38 +E0 +40 +76 +DC +80 +00 +00 +00 +ENDCHAR +STARTCHAR uni2276 +ENCODING 8822 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0E +38 +E0 +38 +0E +E0 +38 +0E +38 +E0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2277 +ENCODING 8823 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +E0 +38 +0E +38 +E0 +0E +38 +E0 +38 +0E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2278 +ENCODING 8824 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +0E +38 +E8 +38 +1E +F0 +38 +2E +38 +E0 +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni2279 +ENCODING 8825 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +E8 +38 +0E +38 +F0 +1E +38 +E0 +38 +2E +20 +00 +00 +00 +ENDCHAR +STARTCHAR uni227A +ENCODING 8826 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +02 +06 +1C +F0 +1C +06 +02 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni227B +ENCODING 8827 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +80 +C0 +70 +1E +70 +C0 +80 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni227C +ENCODING 8828 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +02 +06 +1C +F0 +1C +06 +F2 +1C +06 +02 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni227D +ENCODING 8829 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +80 +C0 +70 +1E +70 +C0 +9E +70 +C0 +80 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni227E +ENCODING 8830 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +02 +06 +1C +F0 +1C +06 +02 +00 +76 +DC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni227F +ENCODING 8831 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +80 +C0 +70 +1E +70 +C0 +80 +00 +76 +DC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2280 +ENCODING 8832 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +06 +0C +38 +E8 +38 +1C +16 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2281 +ENCODING 8833 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +D0 +70 +38 +2E +38 +60 +C0 +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR propersubset +ENCODING 8834 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +7E +C0 +C0 +C0 +C0 +7E +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR propersuperset +ENCODING 8835 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FC +06 +06 +06 +06 +FC +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR notsubset +ENCODING 8836 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +7E +C8 +C8 +D0 +D0 +7E +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2285 +ENCODING 8837 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +FC +16 +16 +26 +26 +FC +40 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR reflexsubset +ENCODING 8838 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7E +C0 +C0 +C0 +C0 +7E +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR reflexsuperset +ENCODING 8839 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FC +06 +06 +06 +06 +FC +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2288 +ENCODING 8840 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +7E +C8 +C8 +D0 +D0 +7E +20 +FE +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2289 +ENCODING 8841 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +FC +16 +16 +26 +26 +FC +40 +FE +80 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni228A +ENCODING 8842 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7E +C0 +C0 +C0 +C0 +7E +08 +FE +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni228B +ENCODING 8843 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FC +06 +06 +06 +06 +FC +10 +FE +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni228C +ENCODING 8844 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +82 +92 +A2 +FA +A2 +92 +44 +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni228D +ENCODING 8845 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +82 +82 +92 +BA +BA +92 +44 +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni228E +ENCODING 8846 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +82 +82 +92 +BA +92 +82 +44 +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni228F +ENCODING 8847 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +C0 +C0 +C0 +C0 +FE +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2290 +ENCODING 8848 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +06 +06 +06 +06 +FE +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2291 +ENCODING 8849 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +C0 +C0 +C0 +C0 +FE +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2292 +ENCODING 8850 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +06 +06 +06 +06 +FE +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2293 +ENCODING 8851 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +C6 +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2294 +ENCODING 8852 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +C6 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR circleplus +ENCODING 8853 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +54 +92 +FE +92 +54 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2296 +ENCODING 8854 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +82 +FE +82 +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR circlemultiply +ENCODING 8855 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +AA +92 +AA +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2298 +ENCODING 8856 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +8A +92 +A2 +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2299 +ENCODING 8857 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +92 +BA +92 +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni229A +ENCODING 8858 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +92 +AA +92 +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni229B +ENCODING 8859 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +54 +D6 +BA +D6 +54 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni229C +ENCODING 8860 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +BA +82 +BA +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni229D +ENCODING 8861 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +82 +BA +82 +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni229E +ENCODING 8862 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +92 +92 +FE +92 +92 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni229F +ENCODING 8863 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +82 +82 +FE +82 +82 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A0 +ENCODING 8864 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +C6 +AA +92 +AA +C6 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A1 +ENCODING 8865 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +82 +92 +BA +92 +82 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A2 +ENCODING 8866 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +C0 +C0 +C0 +FF +C0 +C0 +C0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A3 +ENCODING 8867 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +03 +03 +03 +03 +FF +03 +03 +03 +03 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A4 +ENCODING 8868 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +18 +18 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR perpendicular +ENCODING 8869 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +18 +18 +18 +18 +18 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A6 +ENCODING 8870 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +60 +60 +60 +60 +7E +60 +60 +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A7 +ENCODING 8871 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +60 +60 +60 +7E +60 +7E +60 +60 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A8 +ENCODING 8872 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +C0 +C0 +FF +C0 +FF +C0 +C0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22A9 +ENCODING 8873 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +D8 +D8 +D8 +D8 +DF +D8 +D8 +D8 +D8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22AA +ENCODING 8874 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +A8 +A8 +A8 +A8 +AF +A8 +A8 +A8 +A8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22AB +ENCODING 8875 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +D8 +D8 +D8 +DF +D8 +DF +D8 +D8 +D8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22AC +ENCODING 8876 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +C2 +C4 +C4 +FF +C8 +C8 +D0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22AD +ENCODING 8877 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +C4 +C4 +FF +C8 +FF +D0 +D0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22AE +ENCODING 8878 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +D8 +D9 +DA +DA +DF +DA +DA +DC +D8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22AF +ENCODING 8879 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +D8 +D9 +DA +DF +DA +DF +DA +DC +D8 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B0 +ENCODING 8880 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +0C +06 +1C +F0 +1C +06 +0C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B1 +ENCODING 8881 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +60 +C0 +70 +1E +70 +C0 +60 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B2 +ENCODING 8882 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +06 +1E +76 +C6 +76 +1E +06 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B3 +ENCODING 8883 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C0 +F0 +DC +C6 +DC +F0 +C0 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B4 +ENCODING 8884 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +1E +76 +C6 +76 +1E +06 +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B5 +ENCODING 8885 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +F0 +DC +C6 +DC +F0 +C0 +00 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B6 +ENCODING 8886 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +42 +BF +42 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B7 +ENCODING 8887 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +42 +FD +42 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B8 +ENCODING 8888 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +02 +7D +02 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22B9 +ENCODING 8889 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +10 +00 +C6 +00 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22BA +ENCODING 8890 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +18 +18 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22BB +ENCODING 8891 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C6 +C6 +6C +6C +38 +38 +10 +10 +00 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22BC +ENCODING 8892 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +00 +10 +10 +38 +38 +6C +6C +C6 +C6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22BD +ENCODING 8893 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +00 +C6 +C6 +6C +6C +38 +38 +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22BE +ENCODING 8894 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +C0 +C0 +C0 +F0 +C8 +C4 +C4 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22BF +ENCODING 8895 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +03 +07 +0B +13 +23 +43 +83 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C0 +ENCODING 8896 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +38 +38 +6C +6C +C6 +C6 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C1 +ENCODING 8897 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C6 +C6 +6C +6C +38 +38 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C2 +ENCODING 8898 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +38 +6C +C6 +C6 +C6 +C6 +C6 +C6 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C3 +ENCODING 8899 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C6 +C6 +C6 +C6 +C6 +C6 +6C +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C4 +ENCODING 8900 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +38 +6C +38 +10 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR dotmath +ENCODING 8901 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +18 +18 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C6 +ENCODING 8902 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +10 +7C +38 +28 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C7 +ENCODING 8903 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +92 +44 +28 +92 +28 +44 +92 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C8 +ENCODING 8904 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +82 +C6 +AA +92 +AA +C6 +82 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22C9 +ENCODING 8905 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +82 +C4 +A8 +90 +A8 +C4 +82 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22CA +ENCODING 8906 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +82 +46 +2A +12 +2A +46 +82 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22CB +ENCODING 8907 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +80 +40 +20 +10 +28 +44 +82 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22CC +ENCODING 8908 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +02 +04 +08 +10 +28 +44 +82 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22CD +ENCODING 8909 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +DC +76 +00 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22CE +ENCODING 8910 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +10 +38 +38 +6C +6C +C6 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22CF +ENCODING 8911 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C6 +6C +6C +38 +38 +10 +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D0 +ENCODING 8912 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +3E +60 +CE +D8 +D8 +CE +60 +3E +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D1 +ENCODING 8913 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +F8 +0C +E6 +36 +36 +E6 +0C +F8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D2 +ENCODING 8914 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +38 +44 +92 +AA +AA +AA +AA +AA +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D3 +ENCODING 8915 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +AA +AA +AA +AA +AA +92 +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D4 +ENCODING 8916 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +10 +38 +54 +92 +92 +92 +92 +92 +92 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D5 +ENCODING 8917 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +7E +18 +18 +7E +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D6 +ENCODING 8918 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +30 +64 +CE +64 +30 +18 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D7 +ENCODING 8919 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +30 +18 +4C +E6 +4C +18 +30 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D8 +ENCODING 8920 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +15 +2A +54 +A8 +54 +2A +15 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22D9 +ENCODING 8921 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +A8 +54 +2A +15 +2A +54 +A8 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22DA +ENCODING 8922 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +0E +38 +E0 +38 +0E +00 +FE +00 +E0 +38 +0E +38 +E0 +00 +00 +ENDCHAR +STARTCHAR uni22DB +ENCODING 8923 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +E0 +38 +0E +38 +E0 +00 +FE +00 +0E +38 +E0 +38 +0E +00 +00 +ENDCHAR +STARTCHAR uni22DC +ENCODING 8924 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +00 +0E +38 +E0 +38 +0E +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22DD +ENCODING 8925 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +00 +E0 +38 +0E +38 +E0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22DE +ENCODING 8926 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +02 +06 +1C +F2 +06 +1C +F0 +1C +06 +02 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22DF +ENCODING 8927 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +80 +C0 +70 +9E +C0 +70 +1E +70 +C0 +80 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E0 +ENCODING 8928 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0A +0E +1C +F0 +1C +16 +F2 +1C +26 +22 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E1 +ENCODING 8929 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +88 +C8 +70 +1E +70 +D0 +9E +70 +E0 +A0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E2 +ENCODING 8930 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +FE +C8 +C8 +D0 +D0 +FE +20 +FE +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E3 +ENCODING 8931 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +FE +16 +16 +26 +26 +FE +40 +FE +80 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E4 +ENCODING 8932 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +C0 +C0 +C0 +C0 +FE +08 +FE +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E5 +ENCODING 8933 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +06 +06 +06 +06 +FE +10 +FE +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E6 +ENCODING 8934 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0E +38 +E0 +38 +0E +10 +76 +DC +10 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E7 +ENCODING 8935 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +E0 +38 +0E +38 +E0 +10 +76 +DC +10 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E8 +ENCODING 8936 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +02 +06 +1C +F0 +1C +06 +02 +10 +76 +DC +10 +00 +00 +00 +ENDCHAR +STARTCHAR uni22E9 +ENCODING 8937 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +80 +C0 +70 +1E +70 +C0 +80 +10 +76 +DC +10 +00 +00 +00 +ENDCHAR +STARTCHAR uni22EA +ENCODING 8938 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +0E +1E +76 +D6 +76 +1E +26 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22EB +ENCODING 8939 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +C8 +F0 +DC +D6 +DC +F0 +E0 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22EC +ENCODING 8940 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +0E +1E +76 +D6 +76 +1E +26 +20 +FE +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22ED +ENCODING 8941 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +C8 +F0 +DC +D6 +DC +F0 +E0 +20 +FE +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22EE +ENCODING 8942 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +00 +00 +18 +18 +00 +00 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22EF +ENCODING 8943 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +DB +DB +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22F0 +ENCODING 8944 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +03 +03 +00 +00 +18 +18 +00 +00 +C0 +C0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni22F1 +ENCODING 8945 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +00 +00 +18 +18 +00 +00 +03 +03 +00 +00 +00 +00 +ENDCHAR +STARTCHAR emptyset +ENCODING 8960 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +3D +66 +C7 +CB +D3 +E3 +66 +BC +00 +00 +00 +00 +ENDCHAR +STARTCHAR house +ENCODING 8962 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +38 +6C +C6 +C6 +C6 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2308 +ENCODING 8968 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2309 +ENCODING 8969 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni230A +ENCODING 8970 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni230B +ENCODING 8971 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR revlogicalnot +ENCODING 8976 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FE +C0 +C0 +C0 +C0 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2318 +ENCODING 8984 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +42 +A5 +7E +24 +24 +7E +A5 +42 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR circleplus +ENCODING 8986 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +38 +38 +54 +8A +F6 +82 +54 +38 +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR H +ENCODING 8987 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +FE +FE +44 +44 +28 +10 +28 +44 +44 +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR integraltp +ENCODING 8992 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0E +1B +1B +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR integralbt +ENCODING 8993 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +D8 +D8 +D8 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR angleleft +ENCODING 9001 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +18 +18 +30 +30 +60 +60 +30 +30 +18 +18 +0C +0C +00 +00 +ENDCHAR +STARTCHAR angleright +ENCODING 9002 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +60 +30 +30 +18 +18 +0C +0C +18 +18 +30 +30 +60 +60 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9115 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +03 +06 +0C +0C +18 +18 +18 +30 +30 +30 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9116 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9117 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +30 +30 +30 +30 +30 +18 +18 +18 +0C +0C +06 +03 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9118 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +C0 +60 +30 +30 +18 +18 +18 +0C +0C +0C +0C +0C +0C +0C +0C +ENDCHAR +STARTCHAR SF110000 +ENCODING 9119 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +ENDCHAR +STARTCHAR SF110000 +ENCODING 9120 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +0C +0C +0C +0C +0C +18 +18 +18 +30 +30 +60 +C0 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9121 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +3F +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9122 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9123 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +30 +3F +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9124 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +FC +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +ENDCHAR +STARTCHAR SF110000 +ENCODING 9125 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +ENDCHAR +STARTCHAR SF110000 +ENCODING 9126 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +0C +FC +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9127 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +07 +0C +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9128 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +30 +E0 +30 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9129 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +0C +07 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9130 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9131 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +E0 +30 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9132 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +0C +07 +0C +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9133 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +30 +E0 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9134 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF100000 +ENCODING 9135 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9136 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +07 +0C +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +30 +E0 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9137 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +E0 +30 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +0C +07 +ENDCHAR +STARTCHAR summation +ENCODING 9138 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +C1 +C0 +60 +60 +60 +60 +30 +30 +30 +30 +18 +18 +18 +ENDCHAR +STARTCHAR summation +ENCODING 9139 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +30 +30 +30 +30 +60 +60 +60 +60 +C0 +C1 +FF +00 +00 +ENDCHAR +STARTCHAR uni2423 +ENCODING 9140 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +C3 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2423 +ENCODING 9141 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +C3 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2423 +ENCODING 9142 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +C3 +FF +00 +FF +C3 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9143 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +D8 +D8 +78 +78 +38 +38 +18 +18 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9144 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9145 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +03 +ENDCHAR +STARTCHAR SF100000 +ENCODING 9146 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF100000 +ENCODING 9147 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF100000 +ENCODING 9148 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF100000 +ENCODING 9149 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR carriagereturn +ENCODING 9166 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +07 +05 +05 +05 +05 +25 +79 +C2 +7C +20 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2409 +ENCODING 9225 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D8 +D8 +F8 +D8 +D8 +0F +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni240A +ENCODING 9226 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +C0 +C0 +F0 +0F +0C +0E +0C +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni240B +ENCODING 9227 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D8 +D8 +F8 +70 +20 +0F +06 +06 +06 +06 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni240C +ENCODING 9228 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F0 +C0 +E0 +C0 +C0 +0F +0C +0E +0C +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni240D +ENCODING 9229 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +C0 +C0 +C0 +70 +1E +1B +1E +1B +1B +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2423 +ENCODING 9251 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2424 +ENCODING 9252 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +98 +D8 +F8 +D8 +D8 +0C +0C +0C +0C +0F +00 +00 +00 +00 +ENDCHAR +STARTCHAR question +ENCODING 9254 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7C +FE +C6 +C6 +60 +30 +30 +00 +30 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF100000 +ENCODING 9472 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2501 +ENCODING 9473 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF110000 +ENCODING 9474 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2503 +ENCODING 9475 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1C +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2504 +ENCODING 9476 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +6D +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2505 +ENCODING 9477 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +6D +6D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2506 +ENCODING 9478 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +00 +18 +18 +18 +18 +18 +00 +18 +18 +18 +18 +00 +ENDCHAR +STARTCHAR uni2507 +ENCODING 9479 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +00 +1C +1C +1C +1C +1C +00 +1C +1C +1C +1C +00 +ENDCHAR +STARTCHAR uni2508 +ENCODING 9480 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +AA +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2509 +ENCODING 9481 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +AA +AA +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni250A +ENCODING 9482 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +00 +18 +18 +18 +00 +18 +18 +18 +00 +18 +18 +18 +00 +ENDCHAR +STARTCHAR uni250B +ENCODING 9483 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +00 +1C +1C +1C +00 +1C +1C +1C +00 +1C +1C +1C +00 +ENDCHAR +STARTCHAR SF010000 +ENCODING 9484 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +1F +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni250D +ENCODING 9485 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +1F +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni250E +ENCODING 9486 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +1F +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni250F +ENCODING 9487 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +1F +1F +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR SF030000 +ENCODING 9488 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +F8 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2511 +ENCODING 9489 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +F8 +F8 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2512 +ENCODING 9490 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FC +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2513 +ENCODING 9491 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FC +FC +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR SF020000 +ENCODING 9492 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +1F +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2515 +ENCODING 9493 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +1F +1F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2516 +ENCODING 9494 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1F +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2517 +ENCODING 9495 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1F +1F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF040000 +ENCODING 9496 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +F8 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2519 +ENCODING 9497 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +F8 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni251A +ENCODING 9498 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FC +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni251B +ENCODING 9499 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FC +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF080000 +ENCODING 9500 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +1F +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni251D +ENCODING 9501 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +1F +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni251E +ENCODING 9502 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1F +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni251F +ENCODING 9503 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +1F +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2520 +ENCODING 9504 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1F +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2521 +ENCODING 9505 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1F +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2522 +ENCODING 9506 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +1F +1F +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2523 +ENCODING 9507 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1F +1F +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR SF090000 +ENCODING 9508 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +F8 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2525 +ENCODING 9509 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +F8 +F8 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2526 +ENCODING 9510 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FC +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2527 +ENCODING 9511 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FC +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2528 +ENCODING 9512 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FC +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2529 +ENCODING 9513 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FC +FC +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni252A +ENCODING 9514 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FC +FC +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni252B +ENCODING 9515 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FC +FC +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR SF060000 +ENCODING 9516 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni252D +ENCODING 9517 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +F8 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni252E +ENCODING 9518 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni252F +ENCODING 9519 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +FF +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2530 +ENCODING 9520 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2531 +ENCODING 9521 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +FC +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2532 +ENCODING 9522 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +1F +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2533 +ENCODING 9523 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +FF +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR SF070000 +ENCODING 9524 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2535 +ENCODING 9525 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2536 +ENCODING 9526 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +1F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2537 +ENCODING 9527 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2538 +ENCODING 9528 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2539 +ENCODING 9529 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni253A +ENCODING 9530 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +1F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni253B +ENCODING 9531 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF050000 +ENCODING 9532 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni253D +ENCODING 9533 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +F8 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni253E +ENCODING 9534 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni253F +ENCODING 9535 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +FF +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2540 +ENCODING 9536 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2541 +ENCODING 9537 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2542 +ENCODING 9538 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2543 +ENCODING 9539 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +FC +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2544 +ENCODING 9540 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2545 +ENCODING 9541 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +FC +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2546 +ENCODING 9542 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +1F +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2547 +ENCODING 9543 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +FF +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2548 +ENCODING 9544 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +FF +FF +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni2549 +ENCODING 9545 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +FC +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni254A +ENCODING 9546 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +1F +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni254B +ENCODING 9547 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +FF +FF +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni254C +ENCODING 9548 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +EE +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni254D +ENCODING 9549 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +EE +EE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni254E +ENCODING 9550 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +00 +18 +18 +18 +18 +18 +18 +18 +00 +ENDCHAR +STARTCHAR uni254F +ENCODING 9551 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +00 +1C +1C +1C +1C +1C +1C +1C +00 +ENDCHAR +STARTCHAR SF430000 +ENCODING 9552 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FF +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF240000 +ENCODING 9553 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +36 +36 +36 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF510000 +ENCODING 9554 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +1F +18 +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF520000 +ENCODING 9555 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +3F +36 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF390000 +ENCODING 9556 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +3F +30 +37 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF220000 +ENCODING 9557 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +F8 +18 +F8 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF210000 +ENCODING 9558 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FE +36 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF250000 +ENCODING 9559 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FE +06 +F6 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF500000 +ENCODING 9560 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +1F +18 +1F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF490000 +ENCODING 9561 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +36 +3F +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF380000 +ENCODING 9562 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +37 +30 +3F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF280000 +ENCODING 9563 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +F8 +18 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF270000 +ENCODING 9564 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +36 +FE +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF260000 +ENCODING 9565 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +F6 +06 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF360000 +ENCODING 9566 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +1F +18 +1F +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF370000 +ENCODING 9567 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +36 +37 +36 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF420000 +ENCODING 9568 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +37 +30 +37 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF190000 +ENCODING 9569 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +F8 +18 +F8 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF200000 +ENCODING 9570 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +36 +F6 +36 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF230000 +ENCODING 9571 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +F6 +06 +F6 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF470000 +ENCODING 9572 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FF +00 +FF +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF480000 +ENCODING 9573 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +36 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF410000 +ENCODING 9574 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FF +00 +F7 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF450000 +ENCODING 9575 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +FF +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF460000 +ENCODING 9576 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +36 +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF400000 +ENCODING 9577 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +F7 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR SF540000 +ENCODING 9578 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +FF +18 +FF +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR SF530000 +ENCODING 9579 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +36 +FF +36 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR SF440000 +ENCODING 9580 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +36 +36 +36 +36 +36 +36 +F7 +00 +F7 +36 +36 +36 +36 +36 +36 +36 +ENDCHAR +STARTCHAR uni256D +ENCODING 9581 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +03 +0E +0C +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni256E +ENCODING 9582 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +C0 +70 +30 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni256F +ENCODING 9583 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +30 +70 +C0 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2570 +ENCODING 9584 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +0C +0E +03 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2571 +ENCODING 9585 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +01 +01 +02 +02 +04 +04 +08 +08 +10 +10 +20 +20 +40 +40 +80 +80 +ENDCHAR +STARTCHAR uni2572 +ENCODING 9586 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +80 +80 +40 +40 +20 +20 +10 +10 +08 +08 +04 +04 +02 +02 +01 +01 +ENDCHAR +STARTCHAR uni2573 +ENCODING 9587 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +81 +81 +42 +42 +24 +24 +18 +18 +18 +18 +24 +24 +42 +42 +81 +81 +ENDCHAR +STARTCHAR uni2574 +ENCODING 9588 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +F8 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2575 +ENCODING 9589 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +18 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2576 +ENCODING 9590 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +1F +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2577 +ENCODING 9591 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +18 +18 +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR uni2578 +ENCODING 9592 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FC +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2579 +ENCODING 9593 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1C +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni257A +ENCODING 9594 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +1F +1F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni257B +ENCODING 9595 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +1C +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni257C +ENCODING 9596 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +1F +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni257D +ENCODING 9597 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +18 +18 +18 +18 +18 +18 +1C +1C +1C +1C +1C +1C +1C +1C +1C +ENDCHAR +STARTCHAR uni257E +ENCODING 9598 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FF +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni257F +ENCODING 9599 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +1C +1C +1C +1C +1C +1C +1C +1C +1C +18 +18 +18 +18 +18 +18 +18 +ENDCHAR +STARTCHAR upblock +ENCODING 9600 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +FF +FF +FF +FF +FF +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2581 +ENCODING 9601 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FF +FF +ENDCHAR +STARTCHAR uni2582 +ENCODING 9602 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FF +FF +FF +FF +ENDCHAR +STARTCHAR uni2583 +ENCODING 9603 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +FF +FF +FF +FF +FF +FF +ENDCHAR +STARTCHAR dnblock +ENCODING 9604 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +FF +FF +FF +FF +FF +FF +FF +FF +ENDCHAR +STARTCHAR uni2585 +ENCODING 9605 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +ENDCHAR +STARTCHAR uni2586 +ENCODING 9606 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +ENDCHAR +STARTCHAR uni2587 +ENCODING 9607 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +ENDCHAR +STARTCHAR block +ENCODING 9608 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +FF +ENDCHAR +STARTCHAR uni2589 +ENCODING 9609 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +ENDCHAR +STARTCHAR uni258A +ENCODING 9610 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FC +FC +FC +FC +FC +FC +FC +FC +FC +FC +FC +FC +FC +FC +FC +FC +ENDCHAR +STARTCHAR uni258B +ENCODING 9611 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +F8 +ENDCHAR +STARTCHAR lfblock +ENCODING 9612 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +F0 +ENDCHAR +STARTCHAR uni258D +ENCODING 9613 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +E0 +ENDCHAR +STARTCHAR uni258E +ENCODING 9614 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +C0 +ENDCHAR +STARTCHAR uni258F +ENCODING 9615 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +80 +ENDCHAR +STARTCHAR rtblock +ENCODING 9616 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0F +0F +0F +0F +0F +0F +0F +0F +0F +0F +0F +0F +0F +0F +0F +0F +ENDCHAR +STARTCHAR ltshade +ENCODING 9617 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +11 +44 +11 +44 +11 +44 +11 +44 +11 +44 +11 +44 +11 +44 +11 +44 +ENDCHAR +STARTCHAR shade +ENCODING 9618 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +55 +AA +55 +AA +55 +AA +55 +AA +55 +AA +55 +AA +55 +AA +55 +AA +ENDCHAR +STARTCHAR dkshade +ENCODING 9619 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +DD +77 +DD +77 +DD +77 +DD +77 +DD +77 +DD +77 +DD +77 +DD +77 +ENDCHAR +STARTCHAR uni2594 +ENCODING 9620 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2595 +ENCODING 9621 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +01 +ENDCHAR +STARTCHAR filledbox +ENCODING 9632 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +FE +FE +FE +FE +FE +FE +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR H22073 +ENCODING 9633 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +82 +82 +82 +82 +82 +82 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A2 +ENCODING 9634 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +7C +82 +82 +82 +82 +82 +82 +82 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A3 +ENCODING 9635 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +82 +BA +BA +BA +BA +BA +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A4 +ENCODING 9636 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +82 +FE +82 +FE +82 +FE +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A5 +ENCODING 9637 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +AA +AA +AA +AA +AA +AA +AA +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A6 +ENCODING 9638 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +AA +FE +AA +FE +AA +FE +AA +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A7 +ENCODING 9639 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +8A +C6 +A2 +92 +8A +C6 +A2 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A8 +ENCODING 9640 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +A2 +C6 +8A +92 +A2 +C6 +8A +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25A9 +ENCODING 9641 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +AA +C6 +AA +92 +AA +C6 +AA +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR H18543 +ENCODING 9642 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7C +7C +7C +7C +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR H18551 +ENCODING 9643 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7C +44 +44 +44 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR filledrect +ENCODING 9644 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FE +FE +FE +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25AD +ENCODING 9645 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +FE +82 +82 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25AE +ENCODING 9646 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +FE +00 +00 +ENDCHAR +STARTCHAR uni25AF +ENCODING 9647 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +82 +82 +82 +82 +82 +82 +82 +82 +82 +82 +FE +00 +00 +ENDCHAR +STARTCHAR uni25B0 +ENCODING 9648 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +7E +7E +7E +FC +FC +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B1 +ENCODING 9649 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +7E +42 +42 +84 +84 +FC +00 +00 +00 +00 +ENDCHAR +STARTCHAR triagup +ENCODING 9650 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +38 +38 +7C +7C +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B3 +ENCODING 9651 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +28 +28 +44 +44 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B4 +ENCODING 9652 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +10 +38 +38 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B5 +ENCODING 9653 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +10 +28 +28 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B6 +ENCODING 9654 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +80 +C0 +E0 +F0 +F8 +FC +F8 +F0 +E0 +C0 +80 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B7 +ENCODING 9655 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +80 +C0 +A0 +90 +88 +84 +88 +90 +A0 +C0 +80 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B8 +ENCODING 9656 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +40 +70 +78 +70 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25B9 +ENCODING 9657 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +40 +70 +48 +70 +40 +00 +00 +00 +00 +ENDCHAR +STARTCHAR triagrt +ENCODING 9658 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +80 +E0 +F8 +FE +F8 +E0 +80 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25BB +ENCODING 9659 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +80 +E0 +98 +86 +98 +E0 +80 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR triagdn +ENCODING 9660 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +FE +7C +7C +38 +38 +10 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25BD +ENCODING 9661 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +82 +44 +44 +28 +28 +10 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25BE +ENCODING 9662 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +7C +38 +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25BF +ENCODING 9663 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +7C +28 +28 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C0 +ENCODING 9664 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +02 +06 +0E +1E +3E +7E +3E +1E +0E +06 +02 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C1 +ENCODING 9665 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +02 +06 +0A +12 +22 +42 +22 +12 +0A +06 +02 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C2 +ENCODING 9666 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +08 +38 +78 +38 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C3 +ENCODING 9667 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +08 +38 +48 +38 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR triaglf +ENCODING 9668 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +02 +0E +3E +FE +3E +0E +02 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C5 +ENCODING 9669 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +02 +0E +32 +C2 +32 +0E +02 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C6 +ENCODING 9670 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +38 +7C +7C +FE +FE +7C +7C +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C7 +ENCODING 9671 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +44 +44 +82 +82 +44 +44 +28 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C8 +ENCODING 9672 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +44 +54 +BA +BA +54 +44 +28 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25C9 +ENCODING 9673 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +99 +BD +BD +BD +BD +99 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR lozenge +ENCODING 9674 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +28 +28 +44 +82 +82 +44 +28 +28 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR circle +ENCODING 9675 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +81 +81 +81 +81 +81 +81 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25CC +ENCODING 9676 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +14 +40 +01 +80 +01 +80 +01 +80 +02 +28 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25CD +ENCODING 9677 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +A5 +A5 +A5 +A5 +A5 +A5 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25CE +ENCODING 9678 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +99 +A5 +A5 +A5 +A5 +99 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR H18533 +ENCODING 9679 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +7E +FF +FF +FF +FF +FF +FF +7E +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D0 +ENCODING 9680 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +72 +F1 +F1 +F1 +F1 +F1 +F1 +72 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D1 +ENCODING 9681 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +4E +8F +8F +8F +8F +8F +8F +4E +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D2 +ENCODING 9682 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +81 +81 +81 +FF +FF +FF +7E +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D3 +ENCODING 9683 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +7E +FF +FF +FF +81 +81 +81 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D4 +ENCODING 9684 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +4E +8F +8F +8F +81 +81 +81 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D5 +ENCODING 9685 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +4E +8F +8F +8F +FF +FF +FF +7E +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D6 +ENCODING 9686 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +70 +F0 +F0 +F0 +F0 +F0 +F0 +70 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25D7 +ENCODING 9687 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +0E +0F +0F +0F +0F +0F +0F +0E +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR invbullet +ENCODING 9688 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +FF +FF +FF +FF +E7 +C3 +C3 +E7 +FF +FF +FF +FF +FF +FF +ENDCHAR +STARTCHAR invcircle +ENCODING 9689 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +C3 +BD +7E +7E +7E +7E +7E +7E +BD +C3 +FF +FF +FF +FF +ENDCHAR +STARTCHAR uni25DA +ENCODING 9690 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +C3 +BD +7E +7E +7E +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25DB +ENCODING 9691 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +7E +7E +7E +BD +C3 +FF +FF +FF +FF +ENDCHAR +STARTCHAR uni25DC +ENCODING 9692 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +40 +80 +80 +80 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25DD +ENCODING 9693 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0C +02 +01 +01 +01 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25DE +ENCODING 9694 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +01 +01 +01 +02 +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25DF +ENCODING 9695 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +80 +80 +80 +40 +30 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25E0 +ENCODING 9696 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +81 +81 +81 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25E1 +ENCODING 9697 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +81 +81 +81 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25E2 +ENCODING 9698 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +01 +01 +03 +03 +07 +07 +0F +0F +1F +1F +3F +3F +7F +7F +FF +FF +ENDCHAR +STARTCHAR uni25E3 +ENCODING 9699 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +80 +80 +C0 +C0 +E0 +E0 +F0 +F0 +F8 +F8 +FC +FC +FE +FE +FF +FF +ENDCHAR +STARTCHAR uni25E4 +ENCODING 9700 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +FE +FE +FC +FC +F8 +F8 +F0 +F0 +E0 +E0 +C0 +C0 +80 +80 +ENDCHAR +STARTCHAR uni25E5 +ENCODING 9701 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +FF +FF +7F +7F +3F +3F +1F +1F +0F +0F +07 +07 +03 +03 +01 +01 +ENDCHAR +STARTCHAR openbullet +ENCODING 9702 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +3C +66 +42 +42 +66 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25E7 +ENCODING 9703 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +F1 +F1 +F1 +F1 +F1 +F1 +F1 +F1 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25E8 +ENCODING 9704 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +8F +8F +8F +8F +8F +8F +8F +8F +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25E9 +ENCODING 9705 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +FF +FD +F9 +F1 +F1 +E1 +C1 +81 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25EA +ENCODING 9706 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +81 +83 +87 +8F +8F +9F +BF +FF +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25EB +ENCODING 9707 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FF +99 +99 +99 +99 +99 +99 +99 +99 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25EC +ENCODING 9708 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +28 +28 +44 +44 +92 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25ED +ENCODING 9709 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +38 +38 +74 +74 +F2 +F2 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25EE +ENCODING 9710 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +38 +38 +5C +5C +9E +9E +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25EF +ENCODING 9711 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +81 +81 +81 +81 +81 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uni25F0 +ENCODING 9712 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +92 +92 +92 +F2 +82 +82 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25F1 +ENCODING 9713 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +82 +82 +82 +F2 +92 +92 +92 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25F2 +ENCODING 9714 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +82 +82 +82 +9E +92 +92 +92 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25F3 +ENCODING 9715 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +FE +92 +92 +92 +9E +82 +82 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25F4 +ENCODING 9716 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +4A +89 +89 +89 +F9 +81 +81 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25F5 +ENCODING 9717 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +81 +81 +F9 +89 +89 +89 +4A +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25F6 +ENCODING 9718 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +81 +81 +9F +91 +91 +91 +52 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni25F7 +ENCODING 9719 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +52 +91 +91 +91 +9F +81 +81 +42 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2600 +ENCODING 9728 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +54 +38 +FE +38 +54 +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2602 +ENCODING 9729 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +30 +7C +FE +FF +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2601 +ENCODING 9730 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +38 +7C +FE +10 +10 +10 +10 +14 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2605 +ENCODING 9733 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +38 +FE +7C +38 +6C +44 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2606 +ENCODING 9734 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +28 +EE +44 +54 +6C +44 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2607 +ENCODING 9735 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +18 +30 +60 +C0 +60 +34 +1C +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2608 +ENCODING 9736 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +C6 +CC +D8 +F0 +D8 +CD +C7 +CF +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2609 +ENCODING 9737 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +38 +44 +82 +92 +82 +44 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni260A +ENCODING 9738 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +24 +42 +42 +42 +A5 +A5 +42 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni260B +ENCODING 9739 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +42 +A5 +A5 +42 +42 +42 +24 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni260C +ENCODING 9740 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +06 +0C +78 +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni260D +ENCODING 9741 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +36 +36 +1C +18 +30 +70 +D8 +D8 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2610 +ENCODING 9744 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +82 +82 +82 +82 +82 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2611 +ENCODING 9745 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +82 +86 +8A +BA +92 +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2612 +ENCODING 9746 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +FE +82 +EE +BA +BA +EE +82 +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2613 +ENCODING 9747 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +82 +C6 +6C +7C +38 +7C +6C +C6 +82 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2620 +ENCODING 9760 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +7C +82 +AA +82 +44 +7C +44 +38 +00 +44 +C6 +38 +C6 +44 +00 +ENDCHAR +STARTCHAR uni2622 +ENCODING 9762 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +38 +44 +EE +FE +92 +BA +7C +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2626 +ENCODING 9766 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +7E +18 +18 +FF +18 +1E +78 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2628 +ENCODING 9768 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +7E +18 +18 +FF +18 +18 +18 +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2629 +ENCODING 9769 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +38 +10 +10 +92 +FE +92 +10 +10 +38 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni262A +ENCODING 9770 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +72 +E0 +C4 +DF +CE +CA +E0 +72 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni262B +ENCODING 9771 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +54 +28 +54 +AA +AA +AA +AA +54 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni262E +ENCODING 9774 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +5A +99 +99 +99 +BD +FF +DB +5A +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni262F +ENCODING 9775 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +42 +81 +85 +B1 +F9 +FF +DF +7E +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2630 +ENCODING 9776 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +FE +00 +00 +FE +FE +00 +00 +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2631 +ENCODING 9777 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +EE +EE +00 +00 +FE +FE +00 +00 +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2632 +ENCODING 9778 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +FE +00 +00 +EE +EE +00 +00 +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2633 +ENCODING 9779 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +EE +EE +00 +00 +EE +EE +00 +00 +FE +FE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2634 +ENCODING 9780 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +FE +00 +00 +FE +FE +00 +00 +EE +EE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2635 +ENCODING 9781 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +EE +EE +00 +00 +FE +FE +00 +00 +EE +EE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2636 +ENCODING 9782 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +FE +FE +00 +00 +EE +EE +00 +00 +EE +EE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2637 +ENCODING 9783 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +EE +EE +00 +00 +EE +EE +00 +00 +EE +EE +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2639 +ENCODING 9785 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +81 +A5 +81 +81 +81 +99 +A5 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR smileface +ENCODING 9786 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +81 +A5 +81 +81 +A5 +99 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR invsmileface +ENCODING 9787 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +FF +DB +FF +FF +DB +E7 +FF +FF +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR sun +ENCODING 9788 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +54 +28 +C6 +28 +54 +10 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni263D +ENCODING 9789 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +78 +14 +0A +0A +0A +0A +0A +0A +14 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni263E +ENCODING 9790 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +28 +50 +50 +50 +50 +50 +50 +28 +1E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni263F +ENCODING 9791 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +66 +66 +3C +66 +66 +66 +66 +3C +18 +7E +18 +18 +00 +00 +00 +ENDCHAR +STARTCHAR female +ENCODING 9792 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +3C +18 +7E +18 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2641 +ENCODING 9793 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +7E +18 +3C +66 +66 +66 +66 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR male +ENCODING 9794 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +06 +0E +1A +78 +CC +CC +CC +CC +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2643 +ENCODING 9795 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +03 +03 +7B +CF +CF +CF +0F +1B +33 +FF +03 +03 +03 +00 +00 +ENDCHAR +STARTCHAR uni2644 +ENCODING 9796 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +60 +F0 +60 +6E +73 +63 +63 +66 +66 +63 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2645 +ENCODING 9797 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +D6 +54 +54 +7C +54 +54 +D6 +38 +44 +44 +38 +00 +00 +00 +ENDCHAR +STARTCHAR uni2646 +ENCODING 9798 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +3C +DB +DB +DB +DB +7E +3C +18 +3C +18 +18 +00 +00 +ENDCHAR +STARTCHAR uni2647 +ENCODING 9799 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +F8 +CC +CC +CC +CC +F8 +C0 +C0 +C0 +C0 +FE +00 +00 +00 +ENDCHAR +STARTCHAR uni2648 +ENCODING 9800 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +42 +A5 +A5 +3C +3C +18 +18 +18 +18 +18 +18 +00 +00 +00 +ENDCHAR +STARTCHAR uni2649 +ENCODING 9801 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +C3 +66 +66 +66 +66 +3C +66 +66 +66 +66 +3C +00 +00 +ENDCHAR +STARTCHAR uni264A +ENCODING 9802 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C3 +7E +66 +66 +66 +66 +66 +66 +7E +C3 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni264B +ENCODING 9803 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7E +DB +D8 +70 +00 +00 +0E +1B +DB +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni264C +ENCODING 9804 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1E +33 +33 +33 +33 +1B +7B +DB +DB +73 +03 +01 +00 +00 +ENDCHAR +STARTCHAR uni264D +ENCODING 9805 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +94 +7C +55 +57 +55 +55 +55 +55 +55 +55 +06 +0B +00 +00 +ENDCHAR +STARTCHAR uni264E +ENCODING 9806 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +66 +66 +66 +66 +24 +E7 +00 +FF +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni264F +ENCODING 9807 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +94 +7C +54 +54 +54 +54 +54 +54 +54 +54 +04 +03 +00 +00 +ENDCHAR +STARTCHAR uni2650 +ENCODING 9808 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1F +07 +8F +DB +73 +70 +D8 +88 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2651 +ENCODING 9809 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +90 +50 +70 +68 +48 +48 +4E +49 +09 +0E +10 +20 +00 +00 +ENDCHAR +STARTCHAR uni2652 +ENCODING 9810 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +2A +7E +AA +00 +00 +2A +7E +AA +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2653 +ENCODING 9811 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C3 +66 +66 +66 +66 +FF +66 +66 +66 +66 +C3 +00 +00 +00 +ENDCHAR +STARTCHAR spade +ENCODING 9824 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +3C +7E +FF +FF +7E +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2661 +ENCODING 9825 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +6C +92 +82 +82 +82 +44 +28 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2662 +ENCODING 9826 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +28 +44 +82 +44 +28 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR club +ENCODING 9827 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +3C +3C +E7 +E7 +E7 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2664 +ENCODING 9828 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +24 +42 +81 +81 +66 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR heart +ENCODING 9829 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +6C +FE +FE +FE +FE +7C +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR diamond +ENCODING 9830 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +38 +7C +FE +7C +38 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2667 +ENCODING 9831 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +18 +24 +3C +E7 +A5 +E7 +18 +18 +3C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni2669 +ENCODING 9833 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +18 +18 +18 +18 +18 +18 +18 +38 +78 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR musicalnote +ENCODING 9834 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +30 +3C +3E +32 +30 +30 +30 +70 +F0 +E0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR musicalnotedbl +ENCODING 9835 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +7F +6F +63 +63 +63 +63 +E3 +E7 +C7 +06 +00 +00 +00 +ENDCHAR +STARTCHAR uni266C +ENCODING 9836 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +7F +63 +7F +63 +63 +63 +63 +63 +E7 +E7 +C6 +00 +00 +00 +ENDCHAR +STARTCHAR uni266D +ENCODING 9837 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +C0 +C0 +C0 +C0 +CC +DE +E6 +C4 +D8 +E0 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uni266E +ENCODING 9838 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +40 +40 +44 +5C +74 +44 +44 +5C +74 +44 +04 +04 +00 +00 +ENDCHAR +STARTCHAR uni266F +ENCODING 9839 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +04 +46 +5C +74 +C4 +46 +5C +74 +C4 +40 +40 +00 +00 +ENDCHAR +STARTCHAR ff +ENCODING 64256 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3B +66 +66 +66 +FF +66 +66 +66 +66 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR fi +ENCODING 64257 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3C +6E +66 +60 +FE +66 +66 +66 +66 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR fl +ENCODING 64258 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +3E +6E +66 +66 +FE +66 +66 +66 +66 +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR ffi +ENCODING 64259 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6E +DB +DB +D8 +FF +DB +DB +DB +DB +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR ffl +ENCODING 64260 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +6F +DB +DB +DB +FF +DB +DB +DB +DB +FF +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB05 +ENCODING 64261 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +38 +6C +6C +6F +6C +6C +6C +6C +6D +F6 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB50 +ENCODING 64336 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +06 +29 +5E +00 +04 +04 +04 +04 +04 +04 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB51 +ENCODING 64337 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +06 +29 +5E +00 +04 +04 +04 +04 +04 +03 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB52 +ENCODING 64338 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB53 +ENCODING 64339 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +80 +81 +7E +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB54 +ENCODING 64340 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB55 +ENCODING 64341 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB56 +ENCODING 64342 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +14 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB57 +ENCODING 64343 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +80 +81 +7E +00 +14 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB58 +ENCODING 64344 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +14 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB59 +ENCODING 64345 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +14 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB5A +ENCODING 64346 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +14 +00 +14 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB5B +ENCODING 64347 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +80 +81 +7E +00 +14 +00 +14 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB5C +ENCODING 64348 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +14 +00 +14 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB5D +ENCODING 64349 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +14 +00 +14 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB5E +ENCODING 64350 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +08 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB5F +ENCODING 64351 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +08 +00 +40 +80 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB60 +ENCODING 64352 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +08 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB61 +ENCODING 64353 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +08 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB62 +ENCODING 64354 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +14 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB63 +ENCODING 64355 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +14 +00 +40 +80 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB64 +ENCODING 64356 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +14 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB65 +ENCODING 64357 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +14 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB66 +ENCODING 64358 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB67 +ENCODING 64359 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +40 +80 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB68 +ENCODING 64360 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB69 +ENCODING 64361 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB6A +ENCODING 64362 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +00 +0A +00 +06 +49 +85 +83 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB6B +ENCODING 64363 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +00 +0A +00 +06 +49 +89 +86 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB6C +ENCODING 64364 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +0C +12 +0A +06 +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB6D +ENCODING 64365 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +0C +12 +12 +0C +F3 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB6E +ENCODING 64366 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0A +00 +0A +00 +06 +49 +85 +83 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB6F +ENCODING 64367 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0A +00 +0A +00 +06 +49 +89 +86 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB70 +ENCODING 64368 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +14 +00 +14 +00 +0C +12 +0A +06 +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB71 +ENCODING 64369 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +14 +00 +14 +00 +0C +12 +12 +0C +F3 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB72 +ENCODING 64370 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +88 +80 +88 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uniFB73 +ENCODING 64371 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +41 +88 +80 +88 +40 +3E +00 +00 +ENDCHAR +STARTCHAR uniFB74 +ENCODING 64372 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +47 +18 +E0 +00 +04 +00 +04 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB75 +ENCODING 64373 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +C1 +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB76 +ENCODING 64374 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +80 +94 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uniFB77 +ENCODING 64375 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +41 +80 +94 +80 +40 +3E +00 +00 +ENDCHAR +STARTCHAR uniFB78 +ENCODING 64376 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +47 +18 +E0 +00 +00 +0A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB79 +ENCODING 64377 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +C1 +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB7A +ENCODING 64378 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +94 +80 +88 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uniFB7B +ENCODING 64379 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +41 +94 +80 +88 +40 +3E +00 +00 +ENDCHAR +STARTCHAR uniFB7C +ENCODING 64380 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +47 +18 +E0 +00 +0A +00 +04 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB7D +ENCODING 64381 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +C1 +00 +14 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB7E +ENCODING 64382 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +94 +80 +94 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uniFB7F +ENCODING 64383 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +41 +94 +80 +94 +40 +3E +00 +00 +ENDCHAR +STARTCHAR uniFB80 +ENCODING 64384 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +47 +18 +E0 +00 +0A +00 +0A +00 +00 +00 +ENDCHAR +STARTCHAR uniFB81 +ENCODING 64385 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +C1 +00 +14 +00 +14 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB82 +ENCODING 64386 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +04 +02 +42 +3C +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB83 +ENCODING 64387 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +08 +04 +46 +39 +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB84 +ENCODING 64388 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +28 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB85 +ENCODING 64389 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +28 +00 +08 +08 +04 +46 +39 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB86 +ENCODING 64390 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +00 +28 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB87 +ENCODING 64391 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +00 +28 +00 +08 +08 +04 +46 +39 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB88 +ENCODING 64392 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +20 +38 +28 +70 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB89 +ENCODING 64393 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +20 +38 +28 +70 +08 +08 +04 +46 +39 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB8A +ENCODING 64394 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +00 +14 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB8B +ENCODING 64395 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +14 +00 +00 +04 +07 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB8C +ENCODING 64396 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB8D +ENCODING 64397 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +00 +00 +04 +07 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB8E +ENCODING 64398 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +01 +02 +04 +08 +44 +82 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB8F +ENCODING 64399 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +01 +02 +04 +08 +48 +84 +82 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB90 +ENCODING 64400 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +18 +20 +10 +08 +08 +F0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB91 +ENCODING 64401 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +18 +20 +20 +10 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB92 +ENCODING 64402 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +04 +08 +44 +82 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB93 +ENCODING 64403 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +04 +08 +48 +84 +82 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB94 +ENCODING 64404 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +46 +18 +20 +10 +08 +08 +F0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB95 +ENCODING 64405 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +46 +18 +20 +20 +10 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB96 +ENCODING 64406 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +04 +08 +44 +82 +82 +7C +00 +10 +00 +10 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB97 +ENCODING 64407 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +09 +12 +04 +08 +48 +84 +82 +7D +00 +10 +00 +10 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB98 +ENCODING 64408 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +46 +18 +20 +10 +08 +08 +F0 +00 +10 +00 +10 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB99 +ENCODING 64409 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +46 +18 +20 +20 +10 +08 +F7 +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB9A +ENCODING 64410 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +A4 +09 +12 +04 +08 +44 +82 +82 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB9B +ENCODING 64411 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +A4 +09 +12 +04 +08 +48 +84 +82 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB9C +ENCODING 64412 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +A2 +0C +13 +0C +10 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB9D +ENCODING 64413 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +A2 +0C +13 +0C +10 +10 +08 +04 +FB +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB9E +ENCODING 64414 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +41 +81 +81 +81 +42 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFB9F +ENCODING 64415 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +01 +41 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA0 +ENCODING 64416 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +41 +81 +81 +81 +42 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA1 +ENCODING 64417 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +00 +00 +01 +41 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA2 +ENCODING 64418 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA3 +ENCODING 64419 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +1C +14 +38 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA4 +ENCODING 64420 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +38 +40 +38 +40 +18 +24 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA5 +ENCODING 64421 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +70 +80 +70 +80 +10 +68 +88 +74 +03 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA6 +ENCODING 64422 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +24 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA7 +ENCODING 64423 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +0C +13 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA8 +ENCODING 64424 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +10 +F0 +10 +14 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBA9 +ENCODING 64425 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +10 +F7 +08 +08 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBAA +ENCODING 64426 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +38 +4C +52 +32 +3D +40 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBAB +ENCODING 64427 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +38 +4C +52 +32 +3D +40 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBAC +ENCODING 64428 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +38 +4C +52 +32 +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBAD +ENCODING 64429 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +38 +4C +52 +32 +FD +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBAE +ENCODING 64430 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +14 +60 +80 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBAF +ENCODING 64431 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +07 +18 +20 +3F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBB0 +ENCODING 64432 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +70 +80 +70 +80 +08 +14 +60 +80 +FE +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBB1 +ENCODING 64433 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +1C +20 +1C +20 +00 +00 +07 +18 +20 +3F +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBD3 +ENCODING 64467 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +00 +29 +01 +19 +21 +19 +A1 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBD4 +ENCODING 64468 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +00 +2A +02 +32 +42 +32 +C6 +79 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBD5 +ENCODING 64469 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +40 +00 +A3 +0C +10 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBD6 +ENCODING 64470 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +40 +00 +A3 +0C +10 +10 +08 +04 +FB +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBD7 +ENCODING 64471 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +28 +18 +10 +20 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBD8 +ENCODING 64472 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +28 +18 +10 +20 +00 +0C +12 +0F +02 +04 +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBD9 +ENCODING 64473 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +08 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBDA +ENCODING 64474 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +08 +00 +00 +00 +0C +12 +0F +02 +04 +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBDB +ENCODING 64475 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +08 +08 +08 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBDC +ENCODING 64476 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +08 +08 +08 +00 +00 +0C +12 +0F +02 +04 +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBDD +ENCODING 64477 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +23 +54 +33 +24 +40 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBDE +ENCODING 64478 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBDF +ENCODING 64479 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +14 +00 +0C +12 +0F +02 +04 +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE0 +ENCODING 64480 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +12 +0E +02 +3C +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE1 +ENCODING 64481 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +08 +00 +00 +00 +0C +12 +0F +02 +3C +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE2 +ENCODING 64482 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +14 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE3 +ENCODING 64483 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +14 +00 +00 +00 +0C +12 +0F +02 +04 +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE4 +ENCODING 64484 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +81 +7E +00 +10 +00 +10 +ENDCHAR +STARTCHAR uniFBE5 +ENCODING 64485 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +07 +88 +87 +81 +7E +10 +00 +10 +ENDCHAR +STARTCHAR uniFBE6 +ENCODING 64486 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE7 +ENCODING 64487 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +08 +00 +08 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE8 +ENCODING 64488 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBE9 +ENCODING 64489 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBFC +ENCODING 64508 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +82 +7C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBFD +ENCODING 64509 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +07 +88 +87 +81 +7E +00 +00 +00 +ENDCHAR +STARTCHAR uniFBFE +ENCODING 64510 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFBFF +ENCODING 64511 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC5B +ENCODING 64603 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +20 +20 +20 +20 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC5C +ENCODING 64604 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +10 +10 +10 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC5D +ENCODING 64605 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +10 +10 +10 +00 +07 +08 +88 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC5E +ENCODING 64606 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +24 +98 +60 +C2 +12 +92 +9C +60 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC5F +ENCODING 64607 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +02 +92 +9C +60 +0E +70 +0E +70 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC60 +ENCODING 64608 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +60 +04 +54 +58 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC61 +ENCODING 64609 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +28 +10 +60 +04 +54 +58 +20 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC62 +ENCODING 64610 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +04 +54 +58 +20 +0C +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC63 +ENCODING 64611 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +10 +04 +54 +58 +20 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFC90 +ENCODING 64656 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +10 +10 +10 +00 +00 +00 +00 +07 +88 +87 +81 +7E +00 +00 +00 +ENDCHAR +STARTCHAR uniFCF2 +ENCODING 64754 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0E +F0 +02 +92 +9C +60 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFCF3 +ENCODING 64755 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +24 +18 +60 +02 +92 +9C +60 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFCF4 +ENCODING 64756 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +02 +12 +9C +60 +0E +70 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFD3C +ENCODING 64828 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +10 +28 +50 +28 +08 +08 +08 +08 +07 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFD3D +ENCODING 64829 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +14 +28 +14 +04 +04 +04 +04 +04 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFD3E +ENCODING 64830 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +08 +10 +54 +38 +54 +10 +08 +04 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFD3F +ENCODING 64831 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +10 +08 +2A +1C +2A +08 +10 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFDF2 +ENCODING 65010 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +2A +14 +00 +21 +69 +A9 +69 +16 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE50 +ENCODING 65104 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +08 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE51 +ENCODING 65105 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +08 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE52 +ENCODING 65106 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +10 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE54 +ENCODING 65108 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +00 +00 +08 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE55 +ENCODING 65109 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +10 +00 +00 +10 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE56 +ENCODING 65110 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +24 +08 +10 +00 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE57 +ENCODING 65111 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +10 +10 +10 +00 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE58 +ENCODING 65112 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE59 +ENCODING 65113 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +10 +10 +10 +10 +10 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE5A +ENCODING 65114 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +08 +08 +08 +08 +08 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE5B +ENCODING 65115 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +10 +10 +20 +10 +10 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE5C +ENCODING 65116 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +08 +08 +04 +08 +08 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE5D +ENCODING 65117 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +10 +10 +10 +10 +10 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE5E +ENCODING 65118 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +18 +08 +08 +08 +08 +08 +18 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE5F +ENCODING 65119 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +28 +7C +28 +7C +28 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE60 +ENCODING 65120 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +28 +28 +10 +2A +24 +1A +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE61 +ENCODING 65121 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +10 +10 +7C +38 +38 +44 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE62 +ENCODING 65122 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +10 +10 +7C +10 +10 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE63 +ENCODING 65123 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE64 +ENCODING 65124 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +10 +20 +10 +08 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE65 +ENCODING 65125 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +20 +10 +08 +10 +20 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE66 +ENCODING 65126 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +3C +00 +3C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE68 +ENCODING 65128 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +20 +10 +10 +08 +08 +04 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE69 +ENCODING 65129 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +10 +38 +54 +30 +18 +54 +38 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE6A +ENCODING 65130 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +24 +08 +08 +10 +10 +24 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE6B +ENCODING 65131 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +44 +54 +58 +40 +38 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE70 +ENCODING 65136 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +0C +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE71 +ENCODING 65137 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +06 +18 +60 +06 +18 +60 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE72 +ENCODING 65138 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +12 +CA +2C +70 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE74 +ENCODING 65140 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0C +30 +0C +30 +00 +00 +ENDCHAR +STARTCHAR uniFE76 +ENCODING 65142 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +30 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE77 +ENCODING 65143 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +06 +18 +60 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE78 +ENCODING 65144 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +08 +14 +0C +08 +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE79 +ENCODING 65145 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +24 +14 +18 +60 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE7A +ENCODING 65146 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +0C +30 +00 +00 +ENDCHAR +STARTCHAR uniFE7B +ENCODING 65147 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +FF +00 +00 +06 +18 +60 +00 +00 +ENDCHAR +STARTCHAR uniFE7C +ENCODING 65148 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0A +2A +2C +10 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE7D +ENCODING 65149 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +02 +12 +92 +9C +60 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE7E +ENCODING 65150 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +24 +18 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE7F +ENCODING 65151 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +24 +24 +18 +00 +00 +00 +00 +FF +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE80 +ENCODING 65152 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +24 +20 +1E +20 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE81 +ENCODING 65153 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +02 +3C +40 +10 +10 +10 +10 +10 +10 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE82 +ENCODING 65154 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +01 +3E +40 +08 +08 +08 +08 +08 +07 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE83 +ENCODING 65155 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +18 +20 +1C +20 +08 +08 +08 +08 +08 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE84 +ENCODING 65156 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +0C +10 +0E +10 +04 +04 +04 +04 +03 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE85 +ENCODING 65157 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +1C +20 +1C +20 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE86 +ENCODING 65158 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +1C +20 +1C +20 +00 +0C +12 +0F +02 +04 +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE87 +ENCODING 65159 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +04 +04 +04 +04 +04 +00 +0C +10 +0E +10 +00 +00 +ENDCHAR +STARTCHAR uniFE88 +ENCODING 65160 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +04 +04 +04 +04 +03 +00 +0C +10 +0E +10 +00 +00 +ENDCHAR +STARTCHAR uniFE89 +ENCODING 65161 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +40 +38 +40 +07 +08 +88 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE8A +ENCODING 65162 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +30 +40 +38 +40 +00 +00 +00 +07 +88 +87 +81 +7E +00 +00 +00 +ENDCHAR +STARTCHAR uniFE8B +ENCODING 65163 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +1C +20 +1C +20 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE8C +ENCODING 65164 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +1C +20 +1C +20 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE8D +ENCODING 65165 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +08 +08 +08 +08 +08 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE8E +ENCODING 65166 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +08 +08 +08 +08 +07 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE8F +ENCODING 65167 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +81 +81 +7E +00 +00 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE90 +ENCODING 65168 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +40 +80 +81 +7E +00 +00 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE91 +ENCODING 65169 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +00 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE92 +ENCODING 65170 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +00 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE93 +ENCODING 65171 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +28 +00 +00 +18 +24 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE94 +ENCODING 65172 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +50 +00 +10 +10 +68 +88 +74 +03 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE95 +ENCODING 65173 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +14 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE96 +ENCODING 65174 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +14 +00 +40 +80 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE97 +ENCODING 65175 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +14 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE98 +ENCODING 65176 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +14 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE99 +ENCODING 65177 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +40 +81 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE9A +ENCODING 65178 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +40 +80 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE9B +ENCODING 65179 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE9C +ENCODING 65180 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFE9D +ENCODING 65181 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +80 +88 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uniFE9E +ENCODING 65182 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +41 +80 +88 +80 +40 +3E +00 +00 +ENDCHAR +STARTCHAR uniFE9F +ENCODING 65183 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +47 +18 +E0 +00 +00 +10 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA0 +ENCODING 65184 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +C1 +00 +00 +08 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA1 +ENCODING 65185 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +8F +30 +40 +80 +80 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA2 +ENCODING 65186 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +41 +80 +80 +80 +40 +3E +00 +00 +ENDCHAR +STARTCHAR uniFEA3 +ENCODING 65187 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +38 +47 +18 +E0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA4 +ENCODING 65188 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +70 +8F +32 +C1 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA5 +ENCODING 65189 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +20 +00 +00 +70 +8F +30 +40 +80 +80 +80 +41 +3E +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA6 +ENCODING 65190 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +00 +00 +70 +8F +32 +41 +80 +80 +80 +40 +3E +00 +00 +ENDCHAR +STARTCHAR uniFEA7 +ENCODING 65191 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +00 +38 +47 +18 +E0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA8 +ENCODING 65192 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +00 +00 +70 +8F +32 +C1 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEA9 +ENCODING 65193 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEAA +ENCODING 65194 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +08 +04 +46 +39 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEAB +ENCODING 65195 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +00 +08 +04 +02 +42 +3C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEAC +ENCODING 65196 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +00 +08 +08 +04 +46 +39 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEAD +ENCODING 65197 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEAE +ENCODING 65198 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +04 +07 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEAF +ENCODING 65199 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +00 +04 +02 +02 +04 +18 +60 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB0 +ENCODING 65200 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +00 +00 +04 +07 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB1 +ENCODING 65201 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +01 +15 +88 +84 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB2 +ENCODING 65202 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +01 +15 +88 +84 +84 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB3 +ENCODING 65203 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +01 +15 +EA +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB4 +ENCODING 65204 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +2A +D5 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB5 +ENCODING 65205 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +01 +15 +88 +84 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB6 +ENCODING 65206 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +14 +00 +01 +15 +88 +84 +84 +78 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB7 +ENCODING 65207 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +04 +00 +0A +00 +00 +01 +15 +EA +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB8 +ENCODING 65208 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +14 +00 +00 +00 +2A +D5 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEB9 +ENCODING 65209 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +06 +09 +31 +9E +88 +88 +70 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEBA +ENCODING 65210 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +06 +09 +31 +9E +88 +88 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEBB +ENCODING 65211 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +06 +29 +31 +DE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEBC +ENCODING 65212 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +06 +29 +31 +DE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEBD +ENCODING 65213 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +09 +31 +9E +88 +88 +70 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEBE +ENCODING 65214 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +04 +00 +06 +09 +31 +9E +88 +88 +70 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEBF +ENCODING 65215 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +00 +06 +29 +31 +DE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC0 +ENCODING 65216 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +00 +06 +29 +31 +DE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC1 +ENCODING 65217 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +20 +20 +2C +32 +A2 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC2 +ENCODING 65218 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +20 +20 +2C +32 +A2 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC3 +ENCODING 65219 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +20 +20 +2C +32 +22 +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC4 +ENCODING 65220 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +20 +20 +20 +2C +32 +22 +FD +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC5 +ENCODING 65221 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +20 +20 +2C +32 +A2 +7C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC6 +ENCODING 65222 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +20 +20 +2C +32 +A2 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC7 +ENCODING 65223 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +20 +20 +2C +32 +22 +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC8 +ENCODING 65224 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +24 +20 +20 +2C +32 +22 +FD +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEC9 +ENCODING 65225 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +70 +80 +8C +70 +40 +80 +80 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR uniFECA +ENCODING 65226 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +1E +22 +1C +22 +41 +80 +80 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR uniFECB +ENCODING 65227 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0E +10 +10 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFECC +ENCODING 65228 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +1E +22 +1C +E3 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFECD +ENCODING 65229 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +40 +00 +00 +70 +80 +8C +70 +40 +80 +80 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR uniFECE +ENCODING 65230 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +08 +00 +00 +1E +22 +1C +22 +41 +80 +80 +80 +41 +3E +00 +00 +ENDCHAR +STARTCHAR uniFECF +ENCODING 65231 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +10 +00 +00 +0E +10 +10 +FE +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED0 +ENCODING 65232 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +00 +1E +22 +1C +E3 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED1 +ENCODING 65233 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +49 +85 +83 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED2 +ENCODING 65234 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +04 +00 +06 +49 +89 +86 +7D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED3 +ENCODING 65235 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +0C +12 +0A +06 +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED4 +ENCODING 65236 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +0C +12 +12 +0C +F3 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED5 +ENCODING 65237 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0A +00 +06 +09 +09 +47 +81 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uniFED6 +ENCODING 65238 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +0A +00 +00 +06 +09 +49 +87 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uniFED7 +ENCODING 65239 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +00 +0C +12 +0A +06 +FC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED8 +ENCODING 65240 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +14 +00 +00 +0C +12 +12 +0C +F3 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFED9 +ENCODING 65241 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +19 +21 +19 +21 +01 +81 +7E +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEDA +ENCODING 65242 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +32 +42 +32 +42 +02 +86 +79 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEDB +ENCODING 65243 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +18 +20 +10 +08 +08 +F0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEDC +ENCODING 65244 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +06 +18 +20 +20 +10 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEDD +ENCODING 65245 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +02 +02 +02 +02 +02 +42 +82 +82 +84 +78 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEDE +ENCODING 65246 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +02 +02 +02 +02 +02 +03 +42 +82 +82 +84 +78 +00 +00 +ENDCHAR +STARTCHAR uniFEDF +ENCODING 65247 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +08 +08 +08 +08 +08 +F0 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE0 +ENCODING 65248 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +08 +08 +08 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE1 +ENCODING 65249 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +0C +12 +12 +3C +40 +40 +40 +40 +40 +40 +00 +00 +ENDCHAR +STARTCHAR uniFEE2 +ENCODING 65250 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +3C +4B +4A +44 +40 +40 +40 +00 +00 +ENDCHAR +STARTCHAR uniFEE3 +ENCODING 65251 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +12 +32 +CC +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE4 +ENCODING 65252 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +12 +32 +CD +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE5 +ENCODING 65253 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +08 +00 +00 +41 +81 +81 +81 +42 +3C +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE6 +ENCODING 65254 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +01 +41 +81 +81 +42 +3C +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE7 +ENCODING 65255 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +00 +08 +04 +04 +F8 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE8 +ENCODING 65256 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +08 +00 +00 +08 +08 +F7 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEE9 +ENCODING 65257 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +18 +24 +22 +22 +1C +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEEA +ENCODING 65258 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +10 +10 +68 +88 +74 +03 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEEB +ENCODING 65259 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +40 +30 +4E +49 +39 +E6 +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEEC +ENCODING 65260 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +08 +14 +24 +28 +F3 +24 +18 +0C +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEED +ENCODING 65261 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +0C +12 +0E +02 +04 +18 +60 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEEE +ENCODING 65262 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +0C +12 +0F +02 +04 +18 +60 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEEF +ENCODING 65263 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +81 +7E +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF0 +ENCODING 65264 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +07 +88 +87 +81 +7E +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF1 +ENCODING 65265 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +07 +08 +88 +86 +81 +81 +7E +00 +00 +24 +00 +ENDCHAR +STARTCHAR uniFEF2 +ENCODING 65266 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +00 +00 +07 +88 +87 +81 +7E +00 +24 +00 +ENDCHAR +STARTCHAR uniFEF3 +ENCODING 65267 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +08 +04 +04 +F8 +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF4 +ENCODING 65268 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +00 +00 +00 +00 +08 +08 +F7 +00 +00 +14 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF5 +ENCODING 65269 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +68 +90 +02 +22 +12 +0A +04 +0C +12 +3C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF6 +ENCODING 65270 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +68 +90 +02 +32 +12 +0A +0A +0E +3D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF7 +ENCODING 65271 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +60 +80 +72 +A2 +12 +0A +04 +0C +12 +3C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF8 +ENCODING 65272 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +30 +40 +3A +52 +12 +0A +0A +0E +3D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEF9 +ENCODING 65273 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +42 +22 +12 +0A +04 +0C +12 +3C +00 +18 +20 +1C +20 +00 +ENDCHAR +STARTCHAR uniFEFA +ENCODING 65274 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +22 +12 +12 +0A +0A +0E +3D +00 +00 +18 +20 +1C +20 +00 +ENDCHAR +STARTCHAR uniFEFB +ENCODING 65275 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +42 +22 +12 +0A +04 +0C +12 +3C +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEFC +ENCODING 65276 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +00 +22 +12 +12 +0A +0A +0E +3D +00 +00 +00 +00 +00 +00 +00 +ENDCHAR +STARTCHAR uniFEFF +ENCODING 65279 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +F1 +35 +55 +8A +E0 +06 +95 +D6 +B5 +97 +00 +EE +8A +EE +28 +E8 +ENDCHAR +STARTCHAR uniFFFD +ENCODING 65533 +SWIDTH 480 0 +DWIDTH 8 0 +BBX 8 16 0 -4 +BITMAP +00 +38 +7C +7C +C6 +92 +F2 +E6 +FE +E6 +7C +7C +38 +00 +00 +00 +ENDCHAR +ENDFONT