comment_char %
escape_char  /
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Licensed to the Apache Software  Foundation (ASF) under one or more
% contributor  license agreements.  See  the NOTICE  file distributed
% with  this  work  for  additional information  regarding  copyright
% ownership.   The ASF  licenses this  file to  you under  the Apache
% License, Version  2.0 (the  License); you may  not use  this file  
% except in  compliance with the License.   You may obtain  a copy of
% the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the  License is distributed on an  "AS IS" BASIS,
% WITHOUT  WARRANTIES OR CONDITIONS  OF ANY  KIND, either  express or
% implied.   See  the License  for  the  specific language  governing
% permissions and limitations under the License.
%
% Copyright 1999-2007 Rogue Wave Software, Inc.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Language and locale neutral transliterations.

LC_CTYPE

translit_start

include "translit_circle";""
include "translit_cjk_compat";""
include "translit_compat";""
include "translit_font";""
include "translit_fraction";""
include "translit_narrow";""
include "translit_small";""
include "translit_wide";""

% NO-BREAK SPACE
<U00A0> <U0020>
% COPYRIGHT SIGN
<U00A9> "<U0028><U0043><U0029>"
% LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
<U00AB> "<U003C><U003C>"
% SOFT HYPHEN
<U00AD> <U002D>
% REGISTERED SIGN
<U00AE> "<U0028><U0052><U0029>"
% CEDILLA
<U00B8> <U002C>
% RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
<U00BB> "<U003E><U003E>"
% MULTIPLICATION SIGN
<U00D7> <U0078>
% LATIN CAPITAL LETTER AE
<U00C6> "<U0041><U0045>"
% LATIN SMALL LETTER SHARP S
<U00DF> "<U0073><U0073>"
% LATIN SMALL LETTER AE
<U00E6> "<U0061><U0065>"
% MODIFIER LETTER PRIME
<U02B9> <U2032>;<U00B4>
% MODIFIER LETTER DOUBLE PRIME
<U02BA> <U2033>;"<U00B4><U00B4>"
% MODIFIER LETTER TURNED COMMA
<U02BB> <U2018>
% MODIFIER LETTER APOSTROPHE
<U02BC> <U2019>;<U0027>
% MODIFIER LETTER REVERSED COMMA
<U02BD> <U201B>
% MODIFIER LETTER CIRCUMFLEX ACCENT
<U02C6> <U005E>
% MODIFIER LETTER VERTICAL LINE
<U02C8> <U0027>
% MODIFIER LETTER MACRON
<U02C9> <U00AF>
% MODIFIER LETTER ACUTE ACCENT
<U02CA> <U00B4>
% MODIFIER LETTER GRAVE ACCENT
<U02CB> <U0060>
% MODIFIER LETTER LOW MACRON
<U02CD> <U005F>
% MODIFIER LETTER TRIANGULAR COLON
<U02D0> <U003A>
% SMALL TILDE
<U02DC> <U007E>
% ZERO WIDTH SPACE
<U200B> ""
% HYPHEN
<U2010> <U002D>
% NON-BREAKING HYPHEN
<U2011> <U002D>
% FIGURE DASH
<U2012> <U002D>
% EN DASH
<U2013> <U002D>
% EM DASH
<U2014> "<U002D><U002D>"
% HORIZONTAL BAR
<U2015> <U002D>
% LEFT SINGLE QUOTATION MARK
<U2018> <U0027>         % not <U0060> because it must pair with <U2019>
% RIGHT SINGLE QUOTATION MARK
<U2019> <U0027>         % not <U00B4> because it's often used as an apostrophe
% SINGLE LOW-9 QUOTATION MARK
<U201A> <U002C>
% SINGLE HIGH-REVERSED-9 QUOTATION MARK
<U201B> <U0027>         % not <U0060> because it must pair with <U2019>
% LEFT DOUBLE QUOTATION MARK
<U201C> <U0022>
% RIGHT DOUBLE QUOTATION MARK
<U201D> <U0022>
% DOUBLE LOW-9 QUOTATION MARK
<U201E> "<U002C><U002C>"
% DOUBLE HIGH-REVERSED-9 QUOTATION MARK
<U201F> <U0022>
% DAGGER
<U2020> <U002B>
% BULLET
<U2022> <U006F>
% NARROW NO-BREAK SPACE
<U202F> <U00A0>;<U0020>
% PRIME
<U2032> <U00B4>
% DOUBLE PRIME
<U2033> "<U2032><U2032>";"<U00B4><U00B4>"
% TRIPLE PRIME
<U2034> "<U2032><U2032><U2032>";"<U00B4><U00B4><U00B4>"
% REVERSED PRIME
<U2035> <U0060>
% REVERSED DOUBLE PRIME
<U2036> "<U2035><U2035>";"<U0060><U0060>"
% REVERSED TRIPLE PRIME
<U2037> "<U2035><U2035><U2035>";"<U0060><U0060><U0060>"
% SINGLE LEFT-POINTING ANGLE QUOTATION MARK
<U2039> <U003C>
% SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
<U203A> <U003E>
% EURO SIGN
<U20AC> "<U0045><U0055><U0052>"
% TRADE MARK SIGN
<U2122> "<U0028><U0054><U004D><U0029>"
% OHM SIGN
<U2126> <U03A9>;"<U004F><U0068><U006D>"
% ESTIMATED SYMBOL
<U212E> <U0065>
% LEFTWARDS ARROW
<U2190> "<U003C><U002D>"
% RIGHTWARDS ARROW
<U2192> "<U002D><U003E>"
% LEFT RIGHT ARROW
<U2194> "<U003C><U002D><U003E>"
% LEFTWARDS DOUBLE ARROW
<U21D0> "<U003C><U003D>"
% LEFT RIGHT DOUBLE ARROW
<U21D4> "<U003C><U003D><U003E>"
% RIGHTWARDS DOUBLE ARROW
<U21D2> "<U003D><U003E>"
% MINUS SIGN
<U2212> <U2013>;<U002D>
% DIVISION SLASH
<U2215> <U002F>
% SET MINUS
<U2216> <U005C>
% ASTERISK OPERATOR
<U2217> <U002A>
% BULLET OPERATOR
<U2219> <U2022>;<U00B7>
% DIVIDES
<U2223> <U007C>
% RATIO
<U2236> <U003A>
% TILDE OPERATOR
<U223C> <U007E>
% LESS-THAN OR EQUAL TO
<U2264> "<U003C><U003D>"
% GREATER-THAN OR EQUAL TO
<U2265> "<U003E><U003D>"
% MUCH LESS-THAN
<U226A> "<U003C><U003C>"
% MUCH GREATER-THAN
<U226B> "<U003E><U003E>"
% DOT OPERATOR
<U22C5> <U00B7>
% VERY MUCH LESS-THAN
<U22D8> "<U003C><U003C><U003C>"
% VERY MUCH GREATER-THAN
<U22D9> "<U003E><U003E><U003E>"
% MIDLINE HORIZONTAL ELLIPSIS
<U22EF> "<U00B7><U00B7><U00B7>"
% SYMBOL FOR NULL
<U2400> "<U004E><U0055><U004C>"
% SYMBOL FOR START OF HEADING
<U2401> "<U0053><U004F><U0048>"
% SYMBOL FOR START OF TEXT
<U2402> "<U0053><U0054><U0058>"
% SYMBOL FOR END OF TEXT
<U2403> "<U0045><U0054><U0058>"
% SYMBOL FOR END OF TRANSMISSION
<U2404> "<U0045><U004F><U0054>"
% SYMBOL FOR ENQUIRY
<U2405> "<U0045><U004E><U0051>"
% SYMBOL FOR ACKNOWLEDGE
<U2406> "<U0041><U0043><U004B>"
% SYMBOL FOR BELL
<U2407> "<U0042><U0045><U004C>"
% SYMBOL FOR BACKSPACE
<U2408> "<U0042><U0053>"
% SYMBOL FOR HORIZONTAL TABULATION
<U2409> "<U0048><U0054>"
% SYMBOL FOR LINE FEED
<U240A> "<U004C><U0046>"
% SYMBOL FOR VERTICAL TABULATION
<U240B> "<U0056><U0054>"
% SYMBOL FOR FORM FEED
<U240C> "<U0046><U0046>"
% SYMBOL FOR CARRIAGE RETURN
<U240D> "<U0043><U0052>"
% SYMBOL FOR SHIFT OUT
<U240E> "<U0053><U004F>"
% SYMBOL FOR SHIFT IN
<U240F> "<U0053><U0049>"
% SYMBOL FOR DATA LINK ESCAPE
<U2410> "<U0044><U004C><U0045>"
% SYMBOL FOR DEVICE CONTROL ONE
<U2411> "<U0044><U0043><U0031>"
% SYMBOL FOR DEVICE CONTROL TWO
<U2412> "<U0044><U0043><U0032>"
% SYMBOL FOR DEVICE CONTROL THREE
<U2413> "<U0044><U0043><U0033>"
% SYMBOL FOR DEVICE CONTROL FOUR
<U2414> "<U0044><U0043><U0034>"
% SYMBOL FOR NEGATIVE ACKNOWLEDGE
<U2415> "<U004E><U0041><U004B>"
% SYMBOL FOR SYNCHRONOUS IDLE
<U2416> "<U0053><U0059><U004E>"
% SYMBOL FOR END OF TRANSMISSION BLOCK
<U2417> "<U0045><U0054><U0042>"
% SYMBOL FOR CANCEL
<U2418> "<U0043><U0041><U004E>"
% SYMBOL FOR END OF MEDIUM
<U2419> "<U0045><U004D>"
% SYMBOL FOR SUBSTITUTE
<U241A> "<U0053><U0055><U0042>"
% SYMBOL FOR ESCAPE
<U241B> "<U0045><U0053><U0043>"
% SYMBOL FOR FILE SEPARATOR
<U241C> "<U0046><U0053>"
% SYMBOL FOR GROUP SEPARATOR
<U241D> "<U0047><U0053>"
% SYMBOL FOR RECORD SEPARATOR
<U241E> "<U0052><U0053>"
% SYMBOL FOR UNIT SEPARATOR
<U241F> "<U0055><U0053>"
% SYMBOL FOR SPACE
<U2420> "<U0053><U0050>"
% SYMBOL FOR DELETE
<U2421> "<U0044><U0045><U004C>"
% OPEN BOX
<U2423> <U005F>
% SYMBOL FOR NEWLINE
<U2424> "<U004E><U004C>"
% BOX DRAWINGS LIGHT HORIZONTAL
<U2500> <U002D>
% BOX DRAWINGS LIGHT VERTICAL
<U2502> <U007C>
% BOX DRAWINGS LIGHT DOWN AND RIGHT
<U250C> <U002B>
% BOX DRAWINGS LIGHT DOWN AND LEFT
<U2510> <U002B>
% BOX DRAWINGS LIGHT UP AND RIGHT
<U2514> <U002B>
% BOX DRAWINGS LIGHT UP AND LEFT
<U2518> <U002B>
% BOX DRAWINGS LIGHT VERTICAL AND RIGHT
<U251C> <U002B>
% BOX DRAWINGS LIGHT VERTICAL AND LEFT
<U2524> <U002B>
% BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
<U252C> <U002B>
% BOX DRAWINGS LIGHT UP AND HORIZONTAL
<U2534> <U002B>
% BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
<U253C> <U002B>
% WHITE BULLET
<U25E6> <U006F>
% ZERO WIDTH NO-BREAK SPACE
<UFEFF> ""

translit_end

END LC_CTYPE
